Алгоритмы симметричного шифрования

Carding 4 Carders

Professional
Messages
2,730
Reaction score
1,467
Points
113

Симметричное шифрование присутствует везде.​

Мы исследуем алгоритмы с симметричным ключом и перенесем вас в места, где раньше не бывал ни один человек, не являющийся ИТ-специалистом.
Алгоритмы симметричного шифрования - это базовые процессы, которые делают возможной безопасную связь. Если вы выразитесь в терминах, связанных со Star Trek, симметричные алгоритмы - это движущая сила вашего звездолета. Они являются неотъемлемой частью информационной безопасности и помогают вашему бизнесу продвигаться вперед благодаря безопасному шифрованию данных с невероятной скоростью.
(Да, я знаю, сегодня я действительно высоко поднимаю свой ботанический флаг. Хотя увлекательные алгоритмы с симметричными ключами не совсем «легкие» или легкие для чтения, поэтому мне нужно немного повеселиться, когда я пишу. Черт возьми, Джим , Я писатель по кибербезопасности, а не криптограф.)
Не забудьте освежить свой кофе (или чай Эрл Грей, если это больше для вас). Мы собираемся глубоко погрузиться в изучение того, что такое алгоритмы симметричного шифрования, почему они важны и каковы наиболее распространенные типы алгоритмов симметричного шифрования.
Давайте решим.

Что такое симметричный алгоритм и как он работает?​

Симметричные алгоритмы - это криптографические функции, которые являются центральными для шифрования с симметричным ключом. Это набор инструкций или шагов, которым следуют компьютеры для выполнения конкретных задач, связанных с шифрованием и дешифрованием данных.
Чувствуете, что вам нужен универсальный переводчик? Хорошо, давайте разберемся еще немного.
Алгоритмы симметричного шифрования (в сочетании с ключом шифрования) используются для двух основных задач:
  1. Зашифровать. Преобразуйте читаемый текст (открытый текст) в нечитаемый зашифрованный текст (зашифрованный текст).
  2. Расшифровать. Преобразуйте зашифрованный текст обратно в открытый текст.
Алгоритмы симметричного шифрования используют один и тот же ключ шифрования как для шифрования, так и для дешифрования. (В отличие от алгоритмов асимметричного шифрования, которые используют два разных ключа.)
Алгоритмы шифрования, как правило, основаны на математике и могут варьироваться от очень простых до очень сложных процессов в зависимости от их конструкции. В случае алгоритмов симметричного шифрования они объединены с одним ключом для преобразования читаемых (открытого текста) данных в неразборчивую тарабарщину (зашифрованный текст). Затем они используют тот же ключ, чтобы затем снова расшифровать зашифрованный текст в открытый текст. И все это делается таким образом, чтобы гарантировать конфиденциальность данных. Довольно круто, да?
Алгоритмы симметричного шифрования на самом деле известны под несколькими разными именами:
  • Симметричные ключевые алгоритмы,
  • Симметричные шифры,
  • Алгоритмы секретного ключа и
  • Массовые шифры . (О массовых шифрах мы поговорим немного позже.)
В общем, цель или цель шифрования - сделать так, чтобы только тот, у кого есть ключ, мог расшифровать и прочитать секретное сообщение. Если вам нужно быстрое напоминание о том, как работает симметричное шифрование, вот краткий обзор:
На этом рисунке выше, двигаясь слева направо, вы увидите, что начинаете с открытого текста, читаемых данных. После применения к этим данным симметричного алгоритма шифрования и ключа они становятся нечитаемым зашифрованным текстом. Способ дешифрования этого сообщения для расшифровки его значения - использование ключа дешифрования. В случае симметричного шифрования ключ дешифрования идентичен ключу, который использовался для шифрования данных. Обычно вы используете один и тот же ключ дважды.

Что на самом деле делают алгоритмы симметричного шифрования?​

В двух словах, симметричный алгоритм - это набор инструкций в криптографии, которые используют один ключ для шифрования и дешифрования данных. Эти алгоритмы и ключи шифрования легковесны в том смысле, что они предназначены для быстрой обработки больших блоков или потоков данных. (Вот почему алгоритмы симметричного шифрования известны как объемные шифры).
Алгоритмы и ключи с асимметричным ключом, с другой стороны, пожирают ресурсы. Клавиши массивные и дороги в масштабном использовании. Я имею в виду, что они забирают много ресурсов процессора и времени, заряда батареи и полосы пропускания для выполнения.
Помните, как мы описывали симметричные алгоритмы как ключевой компонент вашего двигателя деформации? Продолжим эту аналогию. Итак, если бы вы задумались о том, что такое алгоритмы асимметричного шифрования, они были бы похожи на двигатели в двигательной установке. Конечно, они в конечном итоге доставят вас туда, но они не подходят для быстрого масштабирования.
Однако они отлично подходят для шифрования небольших пакетов данных в публичных каналах. А асимметричный обмен ключами (о котором мы поговорим позже) - отличный способ распространять ключи по этим незащищенным общедоступным каналам.
Вот почему люди часто обращаются к симметричному шифрованию для кодирования больших объемов данных.

Что определяет надежность алгоритма симметричного шифрования?​

Как вы скоро обнаружите, не все симметричные алгоритмы созданы одинаково. Они различаются по силе, но что именно означает сила в криптографии? Короткий ответ заключается в том, что криптографическая стойкость зависит от того, насколько сложно хакеру взломать шифрование, чтобы получить доступ к данным. Более длинный ответ, конечно, может варьироваться в зависимости от типа алгоритма, который вы оцениваете. Но в целом криптографическая стойкость обычно сводится к нескольким ключевым характеристикам:
  • Длина, случайность и непредсказуемость симметричного ключа,
  • Способность алгоритма противостоять известным атакам или быть устойчивыми к ним;
  • Отсутствие задних дверей или других умышленных уязвимостей.
Симметричное шифрование может быть своего рода балансирующим действием, потому что вам нужны алгоритмы и ключи, которые являются сложными с вычислительной точки зрения, но достаточно практичными для использования с приемлемой производительностью.

Алгоритмы симметричного шифрования не могут работать сами по себе в публичных каналах​

Хотя алгоритмы симметричного шифрования могут показаться наиболее логичными инструментами для всех типов онлайн-шифрования данных, все не так просто. Подобно вечно логичному Споку и харизматичному капитану Кирку, симметричное шифрование также имеет слабые места, особенно когда оно используется само по себе в публичных каналах. Эти недостатки проявляются в проблемах распределения и управления ключами:
  • Вам необходимо безопасное соединение для распространения симметричных ключей и
  • Пытаться не отставать от всех, у кого есть копия ключа, может быть проблемой, если вы раздадите его большому количеству людей.
При использовании симметричного шифрования, в идеале, вы и человек, с которым вы общаетесь, заранее сортируете свой секретный ключ (перед тем, как использовать его для любых обменов данными). Это означает, что для того, чтобы безопасно поделиться симметричным ключом с кем-то, вам нужно встретиться с ним лично, чтобы передать его им. Но что, если вы находитесь на другом конце страны от другой стороны? Или, что еще хуже, что, если вы находитесь на другом конце света от них?
Хотя это не было бы проблемой в Star Trek вселенной, где вы могли бы просто перевозить с одного места на другое в течение нескольких секунд, это не представляется возможным в нашем 21 - м transporterless века мира. Здесь люди ежедневно и ежедневно обмениваются информацией с веб-серверами по всему миру. Это означает, что люди не могут собраться заранее, чтобы раздать или получить ключи. Итак, мы должны полагаться на другие средства для безопасного обмена ключами с другими сторонами.
Здесь в игру вступают асимметричные алгоритмы - или, точнее, протоколы обмена ключами. Обмен асимметричными ключами позволяет обмениваться симметричными ключами по незащищенным в противном случае общедоступным каналам. Вы можете осознавать или не осознавать, что прямо сейчас вы действительно используете эту комбинацию методов симметричного и асимметричного шифрования.

Асимметричные методы делают возможным безопасное симметричное шифрование через Интернет​

В качестве примера рассмотрим ваше подключение к нашему сайту. Видите значок замка в браузере? Это означает, что вы подключены к безопасному веб-сайту.
Итак, когда вы впервые подключились к TheSSLstore.com, ваш браузер должен был выполнить процесс с нашим сервером, известный как рукопожатие TLS. Это рукопожатие позволяет серверу доказать вашему браузеру, что он законный и не является самозванцем. (Вы знаете, потому что киберпреступники любят притворяться другими людьми, чтобы обмануть людей, пытаясь установить с ними связь. В этом смысле они похожи на ромуланцев - всегда прибегают к уловкам.) В процессе рукопожатия используются процессы асимметричного шифрования и асимметричного обмена ключами. сделать это.
  • Процесс асимметричного шифрования проверяет цифровые подписи.
  • Процесс обмена асимметричным ключом шифрует предварительный секрет, который ваш браузер и веб-сервер будут использовать для создания симметричного сеансового ключа.
Конечно, существует несколько версий рукопожатия - TLS 1.0, TLS 1.2, TLS 1.3 - и есть определенные различия в том, как они работают. (Например, Инженерная рабочая группа Интернета [IETF] настаивает на строгом использовании шифров только с прямой секретностью в TLS 1.3 - но это тема для другого времени.) Просто знайте, что только рукопожатие TLS 1.2 должно использоваться как минимум . По состоянию на октябрь 2020 года Qualys SSL Labs сообщает, что 99% сайтов поддерживают протокол TLS 1.2, а 39,8% поддерживают протокол TLS 1.3.
Мы не будем вдаваться в подробности того, как работает рукопожатие TLS, но знаем, что оно включает использование наборов шифров. Эти группы шифров помогают установить безопасное соединение HTTPS, определяя, какой из каждого из следующих вариантов использовать:
  • Протокол (TLS)
  • Асимметричный алгоритм обмена ключами (например, Диффи-Хеллмана)
  • Шифр массового шифрования
  • Цифровая подпись
  • Хеш-функция (например, SHA2-2)
  • Функция кода аутентификации сообщения (MAC)
Вы можете узнать больше о процессе в этом блоге, объясняющем, как работает рукопожатие TLS. Но пока давайте остановимся на теме симметричных алгоритмов шифрования.

Два типа симметричных алгоритмов (шифров)​

Во время симметричного шифрования, которое происходит при безопасном подключении к веб-сайту, вы используете массовый шифр, чтобы это произошло. Есть две подкатегории массовых шифров: блочные шифры и потоковые шифры.

Блочные шифры​

В этом типе шифра данные открытого текста разбиваются на группы битов фиксированной длины, известные как блоки (которые обычно соединяются посредством процесса, известного как цепочка). Затем каждый блок шифруется как единое целое, что немного замедляет этот процесс. И если данных недостаточно для полного заполнения блока, затем используется «заполнение» (обычно согласованное количество нулей), чтобы гарантировать, что блоки соответствуют требованиям фиксированной длины.
Идеальный блочный шифр имеет огромную длину ключа, что непрактично, поэтому многим современным шифрам приходится уменьшать размеры ключей, чтобы их можно было использовать. Но просто небольшое примечание: в отличие от асимметричного шифрования, размеры ключей симметричного шифрования не определяют размер блоков данных.
Большинство современных алгоритмов симметричного шифрования относятся к лагерю блочных шифров, и эти типы шифров имеют более широкие возможности использования и применения. Итак, здесь мы в основном сосредоточимся на них. Но если вам интересно, какие из потоковых шифров являются наиболее популярными или распространенными, не волнуйтесь, мы вам поможем.

Потоковые шифры​

С помощью этого типа шифра он шифрует данные открытого текста по одному биту за раз. Таким образом, данные обрабатываются в потоке, а не по частям, как в блочных шифрах. Это делает процесс менее ресурсоемким и более быстрым.
Сейчас мы не собираемся вдаваться в подробности блочных и потоковых шифров - это совсем другая тема. Но хорошая новость в том, что мы уже написали статью, в которой рассматриваются блочные шифры и потоковые шифры . Так что не забудьте проверить это, чтобы более подробно изучить, что это такое и как они работают.
Хорошо, теперь именно здесь все становится захватывающим (или более сложным, в зависимости от вашей точки зрения). При шифровании с общим ключом необходимо знать несколько хорошо известных алгоритмов симметричного ключа. Давайте разберем их все, чтобы понять, что они из себя представляют и как работают.

Список симметричных алгоритмов: 3 наиболее распространенных типа симметричных алгоритмов​

В этом разделе мы составили список симметричных алгоритмов, который поможет нам ориентироваться в наиболее распространенных симметричных шифрах. Мы начнем с одного из старейших и перейдем к «последнему и лучшему», то есть к алгоритму, который мы обычно используем сегодня для современного симметричного шифрования.

1. Стандарт шифрования данных (DES)​

Первым в нашем списке стоит стандарт шифрования данных. DES, также известный как DEA (сокращение от алгоритма шифрования данных), является одним из самых ранних алгоритмов симметричного шифрования, который с тех пор считается устаревшим. Он основан на шифре Фейстеля (как и многие другие разновидности блочных шифров) и фактически считается одним из первых симметричных алгоритмов, принятых в качестве Федерального стандарта обработки информации (FIPS) в 1976 году.
DES восходит к началу 1970-х годов, когда его первоначальная форма («Люцифер») была разработана криптографом IBM Хорстом Фейстелем. IBM сообщает, что метод шифрования был первоначально создан по заказу Lloyds Bank из Великобритании. Национальное бюро стандартов (теперь известное как Национальный институт стандартов или сокращенно NIST) в конечном итоге занялось поиском коммерческого приложения для шифрования, и IBM представила его вариант. Его даже хотели использовать Агентство национальной безопасности (АНБ) для защиты своих данных.
Этот тип симметричного шифрования сопоставляет входные данные определенной длины с выходными данными определенной длины. Таким образом, он работает с 64-битными блоками, что означает, что он может шифровать данные группами до 64 блоков одновременно, и имеет размер ключа 56 бит. К ключу также добавлено 8 дополнительных битов четности, которые служат способом проверки ошибок передачи данных. Однако важно отметить, что биты четности - это не то, что вы когда-либо использовали бы для шифрования.
Этот ключ размера на самом деле очень мал по сегодняшним стандартам, что делает его очень уязвимым для атак методом грубой силы. Кроме того, длина ключа и блока отличается от оригинального ключа Люцифера и длины блока, которые были уменьшены с 128 бит.
Чтобы узнать больше о том, как работает шифрование DES и сети Feistel Networks, посмотрите это замечательное видео от Coursera и Стэнфордского университета.
Документ стандарта шифрования данных (DES) (FIPS PUB 46-3) был официально отозван 19 мая 2005 г. вместе с документами FIPS 74 и FIPS 81. Министр торговли Национального института стандартов и технологий опубликовал следующее на FaderalRegister:
«Эти FIPS отозваны, потому что FIPS 46-3, DES, больше не обеспечивает безопасность, необходимую для защиты информации федерального правительства. FIPS 74 и 81 являются связанными стандартами, которые обеспечивают реализацию и работу DES ».
На смену шифрованию DES пришел алгоритм тройного шифрования данных (TDEA) для некоторых приложений, но не для всех. Однако в 2000 году DES в первую очередь был заменен как рекомендация передовым стандартом шифрования, или так называемым шифрованием AES. Это то, что мы сегодня чаще всего используем для симметричного шифрования.
Теперь давайте исследуем эти два других типа алгоритмов симметричного шифрования.

2. Алгоритм тройного шифрования данных (TDEA)​

Тройной алгоритм шифрования данных , который был создан в конце 1990 - х годов, это немного сложно , как это на самом деле идет несколькими сокращениями: TDEA, TDES и 3DES. Но, как вы, наверное, догадались по названию, 3DES основана на концепции DES, но с некоторыми особенностями.
В отличие от своего предшественника, TDEA использует несколько отдельных ключей для шифрования данных - один вариант TDEA использует два ключа, а другой вариант использует три ключа (отсюда и «тройка» в его названии). Более сильный из двух - тот, который использует три ключа.
Это упрощенная визуализация процесса, показывающая, как TDEA работает для шифрования данных обычного текста в неразборчивый зашифрованный текст.
Использование нескольких ключей замедляет обработку данных и увеличивает вычислительные затраты, поэтому организации часто пропускают 3DES и сразу переходят к использованию AES.
TDEA работает с приличным размером ключа 168 бит. Однако, как и DES, 3DES также работает с небольшими 64-битными блоками. Небольшой размер блока сделал его уязвимым для уязвимости sweet32 (CVE-2016-2183 и CVE-2016-6329), или так называемой атаки дня рождения sweet32. Этот эксплойт использует уязвимость, которая позволяет непреднамеренным сторонам получать доступ к частям данных, зашифрованных DES / TDEA.
Алгоритм шифрования с симметричным ключом TDEA устарел с точки зрения его полезности для криптографической защиты в 2023 году. Тем не менее, NIST SP 800-76 Rev.2 указывает, что 3DES может использоваться федеральными правительственными организациями для защиты конфиденциальных несекретных данных. при условии, что он используется «в контексте программы тотальной безопасности». Такая программа будет включать:
  • Хорошие практики информационной безопасности,
  • Строгие процедуры физической безопасности и
  • Компьютерная сеть или контроль доступа к системе.

3. Расширенный стандарт шифрования (AES)​

AES - это наиболее распространенный тип алгоритма симметричного шифрования, который мы используем сегодня. Фактически, даже АНБ использует шифрование AES для защиты своих конфиденциальных данных.
AES - это вариант семейства алгоритмов симметричного шифрования Rijndael. В отличие от своих аналогов DES или TDEA, он основан на сети замещения-перестановки. Таким образом, он использует это в качестве основы вместо шифра Фейстеля. Вы обнаружите, что передовой стандарт шифрования используется для всего, от шифрования SSL / TLS до безопасности беспроводной сети и процессора. Это быстро, безопасно и существенно не увеличивает накладные расходы на обработку (по крайней мере, при использовании правильной клавиши).
AES работает с блоками размером 128 бит, независимо от размера используемого ключа, и выполняет операции шифрования в несколько раундов.
Всего существует четыре подпроцесса шифрования AES:
  1. AddRoundKey
  2. SubBytes
  3. ShiftRows
  4. MixColumns
AES, который стал новым стандартом шифрования, одобренным FIPS после замены DES и замены 3DES, имеет максимальный размер ключа до 256 бит. Это примерно в 4,5 раза больше, чем ключ DES. Немного больше, и это было бы непрактично для крупномасштабных приложений. Теперь размер ключа определяет, сколько раундов операций будет выполнено - например, 128-битный ключ будет иметь 10 раундов, а 256-битный ключ - 14.
Конечно, шифрование AES невероятно надежное. Итак, любые попытки взломать AES с помощью грубой силы с использованием современных компьютерных технологий «бесполезны», как любит говорить определенный коллектив кибернетиков. Даже лейтенант-коммандер Дейта, вероятно, столкнется с трудностями при таких вычислениях. Я говорю это потому, что даже квантовые компьютеры не должны иметь такого большого влияния на алгоритм симметричного шифрования, как, скажем, на современные методы асимметричного шифрования. (Методы симметричного шифрования потребуют, чтобы ключи большего размера были квантово-устойчивыми, тогда как методы с открытым ключом больше не будут безопасными - точка.)
Чтобы получить более подробное представление о расширенном стандарте шифрования, обязательно ознакомьтесь с другой нашей статьей по этой теме. Там вы получите технический взгляд на то, как работает AES.

Конечно, это не единственные используемые три симметричных алгоритма.​

Существует множество других типов алгоритмов симметричного шифрования, которые полезны для различных целей и криптографических функций. Чтобы вы могли быстро почувствовать вкус, список некоторых из этих алгоритмов включает:
  • Международный алгоритм шифрования данных (IDEA, 64-битный шифр со 128-битным ключом),
  • Blowfish (64-битный шифр с ключами до 448 бит),
  • Twofish (128-битный шифр с ключами до 256 бит),
  • Несколько шифров Rivest (включая RC2, RC4, RC5, RC6),
  • КАСУМИ (шифр, использующий 128-битный ключ,
  • SALSA20 и
  • ЧАЧА20.
Конечно, есть и другие шифры, но мы не собираемся здесь включать их все. Но это, по крайней мере, дает вам несколько примеров того, что существует в отношении алгоритмов AES.

Где вы найдете симметричные алгоритмы в действии​

Алгоритмы симметричного шифрования, когда используются сами по себе, лучше всего подходят для шифрования данных в состоянии покоя или в закрытых каналах. Я говорю это потому, что их часто находят для защиты данных в состоянии покоя в различных ситуациях, включая базы данных, онлайн-сервисы и банковские транзакции. (Последнее связано с тем, что этого требуют стандарты безопасности данных индустрии платежных карт, или сокращенно PCI DSS.)
Однако они полезны не только здесь. О, нет - вы также найдете симметричные алгоритмы, используемые в Интернете. Когда вы используете их в сочетании с асимметричным шифрованием для обмена ключами - например, когда вы подключаетесь к защищенному веб-сайту - тогда симметричное шифрование вступает в игру с такими службами, как:
  • Обмен данными на веб-сайтах
  • G Suite онлайн-сервисов Google
  • Инструмент резервного копирования веб-сайтов CodeGuard
  • Платформа SalesForce

Что мы рассказали о алгоритмах симметричного шифрования (TL; DR)​

Не хотелось погрузиться во всю техническую чушь? (Или мне не хотелось читать мои ботанические сравнения алгоритмов симметричного шифрования из «Звездного пути»?) Не беспокойтесь. Вот несколько основных выводов из этой статьи об алгоритмах с симметричным ключом:
  • Алгоритмы шифрования в основном представляют собой пошаговые инструкции для выполнения криптографических функций (таких как шифрование, дешифрование, хеширование и т.д.). Алгоритмы бывают асимметричными и симметричными. В первом случае один ключ шифрует данные, а другой дешифрует данные. В последнем случае один ключ выполняет функции шифрования и дешифрования.
  • Симметричные алгоритмы - это эффективные процессы, предназначенные для шифрования данных в безопасных, закрытых для общего доступа каналах.
  • Процесс, известный как рукопожатие TLS, позволяет использовать форму симметричного шифрования в общедоступных каналах.
  • В последние годы использовалось много различных типов алгоритмов с симметричным ключом. Три наиболее распространенных - DES, TDEA / 3DES и AES.
Следите за обновлениями в следующей главе этой серии блогов о симметричном шифровании в ближайшие недели. И до следующего раза… живи долго и правильно.
 
Top