logo
Коды и шифры

Зацепление

Поскольку DES-алгоритм шифрует текст короткими блоками (всего по 64 бита), возникает резонный вопрос: как зашифровать сообщение большей длины? Самое простое - разбить сообщение на блоки по 8 знаков (=64 бита) и зашифровать их последовательно на одном и том же 64-разрядном ключе. Это будет означать, что все 64-разрядные шифрованные сообщения окажутся одноключевыми, однако данное свойство, которое было бы фатальным для линейных видов шифрования, ничего или почти ничего не дает криптоаналитику благодаря нелинейной природе DES-преобразования. Однако есть более надежный способ: менять ключ для каждого 8‑символьного блока, сделав его зависящим как от начального ключа, так и от части (или от всего) открытого текста предыдущих блоков. Легальный получатель расшифрует открытый текст первого блока, так как ему известен начальный ключ; далее он может вычислить ключ для второго блока, а затем расшифровать его. Теперь у него есть открытый текст второго блока, и он может вычислить ключ для расшифрования третьего блока, и так далее. Если противнику удалось прочесть часть сообщения (например, из-за повторений стандартного текста), он не сможет продвинуться далее, так как без знания всех предыдущих блоков открытого текста он не сможет вычислить другие ключи. Если бы для всех блоков использовался один и тот же ключ, он смог бы дешифровать все сообщение целиком.

Пользователям систем шифрования, в основе которых лежит применение ключей к коротким блокам текста (как в DES-алгоритме), настоятельно рекомендуется использовать зацепление.