Симметричный ключ алгоритмов являются алгоритмами для шифрования, которые используют одни и те же ключи шифрования и для шифрования открытого текста и расшифровок зашифрованного текста. Ключи могут быть идентичными, или между двумя клавишами может происходить простое преобразование. Ключи на практике представляют собой общий секрет между двумя или более сторонами, который может использоваться для поддержания связи с частной информацией. Требование, чтобы обе стороны имели доступ к секретному ключу, является одним из основных недостатков шифрования с симметричным ключом по сравнению с шифрованием с открытым ключом (также известным как шифрование с асимметричным ключом).
Шифрование с симметричным ключом может использовать либо потоковые шифры, либо блочные шифры.
Примеры популярных алгоритмов с симметричным ключом включают Twofish, Serpent, AES (Rijndael), Camellia, Salsa20, ChaCha20, Blowfish, CAST5, Kuznyechik, RC4, DES, 3DES, Skipjack, Safer и IDEA.
Симметричные шифры обычно используются не только для шифрования, но и для других криптографических примитивов.
Шифрование сообщения не гарантирует, что оно останется неизменным при шифровании. Следовательно, часто код аутентификации сообщения добавляется к зашифрованному тексту, чтобы гарантировать, что изменения в зашифрованном тексте будут отмечены получателем. Коды аутентификации сообщений могут быть построены из шифра AEAD (например, AES-GCM ).
Однако симметричные шифры нельзя использовать в целях предотвращения отказа от авторства, кроме как с привлечением дополнительных сторон. См. Стандарт ISO / IEC 13888-2.
Другое приложение - создание хеш-функций из блочных шифров. См. Описание некоторых таких методов в функции одностороннего сжатия.
Многие современные блочные шифры основаны на конструкции, предложенной Хорстом Фейстелем. Конструкция Фейстеля позволяет строить обратимые функции из других функций, которые сами по себе не обратимы.
Симметричные шифры исторически были восприимчивы к открытому тексту атак, атак по выбранному тексту, дифференциального криптоанализа и линейного криптоанализа. Тщательное построение функций для каждого раунда может значительно снизить шансы на успешную атаку.
Алгоритмы с симметричным ключом требуют, чтобы и отправитель, и получатель сообщения имели один и тот же секретный ключ. Все ранние криптографические системы требовали, чтобы отправитель или получатель каким-то образом получали копию этого секретного ключа по физически безопасному каналу.
Почти все современные криптографические системы по-прежнему используют алгоритмы с симметричным ключом внутри для шифрования основной части сообщений, но они устраняют необходимость в физически безопасном канале за счет использования обмена ключами Диффи-Хеллмана или какого-либо другого протокола с открытым ключом для безопасного достижения соглашения по новый новый секретный ключ для каждого сеанса / разговора (прямая секретность).
При использовании с асимметричными шифрами для передачи ключей генераторы псевдослучайных ключей почти всегда используются для генерации сеансовых ключей симметричного шифра. Однако отсутствие случайности в этих генераторах или в их векторах инициализации является катастрофическим и приводило к криптоаналитическим взломам в прошлом. Следовательно, важно, чтобы реализация использовала источник высокой энтропии для своей инициализации.
Обратный шифр - это шифр, в котором так же, как вводят открытый текст в криптографическую систему для получения зашифрованного текста, можно ввести зашифрованный текст в то же место в системе, чтобы получить открытый текст. Взаимный шифр также иногда называют самовзаимным шифром.
Практически все механические шифровальные машины реализуют обратный шифр, математическую инволюцию для каждой введенной буквы. Вместо того, чтобы разрабатывать два типа машин, одну для шифрования, а другую для дешифрования, все машины могут быть идентичными и могут быть настроены (привязаны) одинаковым образом.
Примеры взаимных шифров включают:
Большинство всех современных шифров можно классифицировать как потоковые шифры, в большинстве из которых используется обратный сумматор шифров XOR, или как блочные шифры, в большинстве из которых используется шифр Фейстеля или схема Лая-Месси с обратным преобразованием в каждом раунде.