Алгоритмы с симметричным ключом [a] — это алгоритмы для криптографии , которые используют одни и те же криптографические ключи как для шифрования открытого текста , так и для расшифровки зашифрованного текста . Ключи могут быть идентичными, или может быть простое преобразование между двумя ключами. [1] Ключи, на практике, представляют собой общий секрет между двумя или более сторонами, который может использоваться для поддержания конфиденциальной информационной связи. [2] Требование, чтобы обе стороны имели доступ к секретному ключу, является одним из главных недостатков симметричного шифрования по сравнению с шифрованием с открытым ключом (также известным как шифрование с асимметричным ключом). [3] [4] Однако алгоритмы шифрования с симметричным ключом обычно лучше подходят для массового шифрования. За исключением одноразового блокнота, они имеют меньший размер ключа, что означает меньше места для хранения и более быструю передачу. В связи с этим шифрование с асимметричным ключом часто используется для обмена секретным ключом на шифрование с симметричным ключом. [5] [6] [7]
Симметричное шифрование может использовать как потоковые шифры , так и блочные шифры . [8]
Поточные шифры шифруют цифры (обычно байты ) или буквы (в шифрах подстановки) сообщения по одной за раз. Примером является ChaCha20 . Шифры подстановки — это хорошо известные шифры, но их можно легко расшифровать с помощью таблицы частот . [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-шифровальный объединитель, или блочные шифры , большинство из которых используют шифр Фейстеля или схему Лая-Месси с обратным преобразованием в каждом раунде. [ необходима ссылка ]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )случайных чисел (ГСЧ) неизменно являются слабым звеном в безопасном использовании криптографии.