Алгоритмы с симметричным ключом [a] — это алгоритмы криптографии, которые используют одни и те же криптографические ключи как для шифрования открытого текста , так и для дешифрования зашифрованного текста . Ключи могут быть идентичными или между двумя ключами может быть простое преобразование. [1] На практике ключи представляют собой общий секрет между двумя или более сторонами, который может использоваться для поддержания частной информационной связи. [2] Требование, чтобы обе стороны имели доступ к секретному ключу, является одним из основных недостатков шифрования с симметричным ключом по сравнению с шифрованием с открытым ключом (также известным как шифрование с асимметричным ключом). [3] [4] Однако алгоритмы шифрования с симметричным ключом обычно лучше подходят для массового шифрования. За исключением одноразового блокнота, они имеют меньший размер ключа, что означает меньше места для хранения и более быструю передачу. В связи с этим шифрование с асимметричным ключом часто используется для замены секретного ключа на шифрование с симметричным ключом. [5] [6] [7]
В шифровании с симметричным ключом могут использоваться как потоковые , так и блочные шифры . [8]
Потоковые шифры шифруют цифры (обычно байты ) или буквы (в шифрах замены) сообщения по одной. Пример — ЧаЧа20 . Шифры замены — хорошо известные шифры, но их легко расшифровать с помощью таблицы частот . [9]
Блочные шифры берут несколько битов и шифруют их в одном блоке, дополняя открытый текст, чтобы получить кратный размер блока. Алгоритм Advanced Encryption Standard (AES), одобренный NIST в декабре 2001 года, использует 128-битные блоки.
Примеры популярных алгоритмов с симметричным ключом включают Twofish , Serpent , AES (Rijndael), Camellia , Salsa20 , ChaCha20 , Blowfish , CAST5 , Kuznyechik , RC4 , DES , 3DES , Skipjack , Safer и IDEA . [10]
Симметричные шифры обычно используются для достижения других криптографических примитивов , помимо простого шифрования. [ нужна цитата ]
Шифрование сообщения не гарантирует, что оно останется неизменным в зашифрованном виде. Следовательно, часто к зашифрованному тексту добавляется код аутентификации сообщения , чтобы гарантировать, что получатель заметит изменения в зашифрованном тексте. Коды аутентификации сообщений могут быть созданы на основе шифра AEAD (например, AES-GCM ).
Однако симметричные шифры не могут использоваться в целях неотказуемости, кроме как с привлечением дополнительных сторон. [11] См. стандарт ISO/IEC 13888-2.
Другое применение — создание хеш-функций на основе блочных шифров. См. функцию одностороннего сжатия для описания нескольких таких методов.
Многие современные блочные шифры основаны на конструкции, предложенной Хорстом Фейстелом . Конструкция Фейстеля позволяет строить обратимые функции из других функций, которые сами по себе не являются обратимыми. [ нужна цитата ]
Симметричные шифры исторически были восприимчивы к атакам с известным открытым текстом , атакам с выбранным открытым текстом , дифференциальному криптоанализу и линейному криптоанализу . Тщательное построение функций для каждого раунда может значительно снизить шансы на успешную атаку. [ нужна цитата ] Также возможно увеличить длину ключа или число раундов в процессе шифрования, чтобы лучше защититься от атак. Однако это приводит к увеличению вычислительной мощности и снижению скорости выполнения процесса из-за количества операций, которые должна выполнить система. [12]
Большинство современных алгоритмов с симметричным ключом, по-видимому, устойчивы к угрозе постквантовой криптографии . [13] Квантовые компьютеры экспоненциально увеличат скорость декодирования этих шифров; в частности, алгоритм Гровера потребует извлечения квадратного корня из времени, традиционно необходимого для атаки методом перебора , хотя эти уязвимости можно компенсировать за счет удвоения длины ключа. [14] Например, 128-битный шифр AES не будет защищен от такой атаки, поскольку он сократит время, необходимое для проверки всех возможных итераций, с более чем 10 квинтиллионов лет до примерно шести месяцев. Напротив, квантовому компьютеру по-прежнему потребуется столько же времени для декодирования 256-битного шифра AES, сколько обычному компьютеру потребуется для декодирования 128-битного шифра AES. [15] По этой причине AES-256 считается «квантово-устойчивым». [16] [17]
Алгоритмы с симметричным ключом требуют, чтобы и отправитель, и получатель сообщения имели один и тот же секретный ключ. Все ранние криптографические системы требовали, чтобы отправитель или получатель каким-то образом получили копию этого секретного ключа по физически безопасному каналу.
Почти все современные криптографические системы по-прежнему используют алгоритмы с симметричными ключами внутри себя для шифрования большей части сообщений, но они устраняют необходимость в физически безопасном канале за счет использования обмена ключами Диффи-Хеллмана или какого-либо другого протокола с открытым ключом для безопасного достижения соглашения. новый новый секретный ключ для каждого сеанса/разговора (прямая секретность).
При использовании асимметричных шифров для передачи ключей генераторы псевдослучайных ключей почти всегда используются для генерации сеансовых ключей симметричного шифрования. Однако отсутствие случайности в этих генераторах или в их векторах инициализации является катастрофическим и в прошлом приводило к криптоаналитическим нарушениям. Поэтому важно, чтобы реализация использовала для своей инициализации источник высокой энтропии . [18] [19] [20]
Взаимный шифр — это шифр, при котором, так же, как кто-то вводит открытый текст в криптографическую систему, чтобы получить зашифрованный текст , можно ввести зашифрованный текст в то же место в системе, чтобы получить открытый текст. Взаимный шифр иногда называют самообратным шифром . [21] [22]
Практически все механические шифровальные машины реализуют обратный шифр — математическую инволюцию каждой введенной буквы. Вместо того, чтобы проектировать два типа машин: одну для шифрования, другую для дешифрования, все машины могут быть идентичными и могут быть настроены (с ключами) одинаковым образом. [23]
Примеры взаимных шифров включают в себя:
Большинство всех современных шифров можно классифицировать либо как поточный шифр , большинство из которых использует взаимный объединитель шифров XOR , либо как блочный шифр , большинство из которых используют шифр Фейстеля или схему Лая-Месси с взаимным преобразованием в каждом раунде. [29]
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )Генераторы случайных чисел (ГСЧ) неизменно являются слабым звеном в безопасном использовании криптографии.