Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kody_i_shifry_yuliy_Cezar_Enigma_i_Internet_2007.pdf
Скачиваний:
260
Добавлен:
29.03.2016
Размер:
2.04 Mб
Скачать

207

обнаружены два одинаковых текста, то это значит, что у нас есть возможные значения для пары неизвестных нам ключей. Будет найдено много ложных пар ключей (их окажется около 248, см. M27), их придется проверять на других известных парах открытого/шифрованного текстов. Такой метод "встречного поиска" в настоящее время невозможно реализовать практически, до и в обозримом будущем это вряд ли удастся.

Однако, стойкость DES-алгоритма чрезвычайно возрастает, если применить тройное шифрование. Потребуется всего два ключа, которые применяются следующим образом:

(1)зашифровать сообщение на 1-м ключе;

(2)расшифровать сообщение на 2-м ключе;

(3)зашифровать сообщение на 1-м ключе.

Теперь противнику необходимо опробовать 2112 возможных пар ключей, а это считается невозможным ни за какое реальное время. Такое тройное DES-преобразование считается стойким и используется в настоящее время. Такая форма тройного шифрования имеет дополнительное преимущество, состоящее в том, что для двух одинаковых ключей оно становится идентично одинарному DES-преобразованию. Это позволяет пользователю, применяющему тройное шифрование, связываться с пользователем, применяющим одинарное, и наоборот. В другой форме тройного шифрования на всех трех стадиях используются различные ключи. И снова совместимости с другими вариантами можно добиться, положив два или более ключа одинаковыми.

Зацепление

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

208

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

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

Реализации DES-алгоритма

Хотя написать программу зашифрования/расшифрования по DES-алгоритму совсем не трудно, никакая его реализация в программном виде не может быть официально одобрена, в частности, потому что программу легко изменить. К тому же, программные версии работают гораздо медленнее аппаратных, выполненных на специально разработанных микросхемах. Вскоре после официального одобрения DES-алгоритма различными производителями были разработаны и предложены к использованию устройства, в состав которых входили микросхемы, осуществлявшие преобразование согласно DES-алгоритму. Такие устройства могут зашифровывать и расшифровывать со скоростью сто тысяч знаков в секунду и даже больше.

Совместное использование алгоритмов RSA и DES

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

(1)зашифрует ключ DES-алгоритма по методу RSA и пошлет его получателю, а затем

(2)зашифрует сообщение на ключе DES-алгоритма,

то он сможет значительно уменьшить объем вычислений, не снижая стойкости системы в целом. Если применяется "зацепление", то RSA нужно будет применить только один раз, для зашифрования начального ключа DESалгоритма.

209

Полезное замечание

С позиции метода "грубой силы" шифры простой замены, имеющие более 1026 возможных вариантов, вскрыть гораздо труднее, чем сообщения, зашифрованные с помощью DES-алгоритма, так как в нем число вариантов меньше 1017. Этот факт вновь показывает, сколь обманчивы могут быть рассуждения с позиции метода "грубой силы".

После DES-алгоритма

Правительство США официально одобрило использование стандартного DES-алгоритма примерно на 10 лет. После этого такое одобрение сохранилось у описанного выше тройного DES-алгоритма, но, кроме того, проводились поиски новых алгоритмов шифрования. В 1993 году был одобрен алгоритм под названием SKIPJACK, который был реализован на микросхеме CLIPPER. Сначала детали алгоритма шифрования SKIPJACK хранились втайне, но были рассекречены 24 июня 1998 года (см. [13.7]).

Одной из "неофициальных" систем шифрования (т.е. разработанных частными лицами), получившей распространение среди пользователей, является PGP (аббревиатура слов "Pretty Good Privacy" - "довольно хорошая конфиденциальность"). Алгоритм PGP разработан Филиппом Циммерманном

идоступен любому желающему. Он состоит из следующих шагов:

(1)на основе движений "мышью" и нажатия клавиш клавиатуры, выполняемых пользователем, вырабатывается "случайный" ключ - он называется сеансовым ключом;

(2)открытый текст сообщения подвергается сжатию; степень сжатия зависит от природы и длины текста; обычный английский текст можно сжать до 50% без внесения неоднозначностей, но для коротких текстов экономия во времени передачи сообщения может не стоить затраченных усилий;

(3)ключ, полученный на шаге (1), используется для зашифрования сжатого текста, построенного на шаге (2), с помощью алгоритма

IDEA ("International Data Encryption Algorithm" - "Международный алгоритм шифрования данных"), предложенного Лаи и Мэсcи (Lai, Massey) из Федерального Технологического Института в Цюрихе

(Швейцария) - см. [13.8].

(4)сеансовый ключ шифруется на открытом ключе получателя;

(5)шифрованный сеансовый ключ записывается впереди шифрованного текста; все вместе посылается получателю;

(6)получив шифрованный текст, получатель сначала на своем секретном ключе расшифровывает сеансовый ключ, стоящий в начале текста;

210

(7)имея расшифрованный ключ, он теперь может расшифровать текст сообщения и "разжать" его, если потребуется.

Как и в упомянутом выше случае применения DES-алгоритма после RSA, в случае PGP использование двух систем шифрования увеличивает не только стойкость системы: значительно возрастает скорость, поскольку в системе, где ключи зашифрования и расшифрования по существу одинаковы, на зашифрование и расшифрование будет затрачено гораздо меньше времени, чем в системе с открытым ключом (такой как RSA), в которой эти ключи абсолютно разные. В алгоритме PGP с помощью системы с открытым ключом шифруется только относительно короткий сеансовый ключ, а сам текст шифруется с помощью IDEA - системы без открытого ключа.

По поводу PGP и связанных с этим алгоритмом вопросов появились тысячи статей, которые можно найти в Интернете. Тех, кто интересуется деталями, отсылаем к [13.10],[13.11].

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

Проверка подлинности сообщения и удостоверение подлинности подписи

Как уже говорилось ранее, эти задачи можно решить с помощью систем с открытым ключом. DES-алгоритм к ним не относится, но алгоритм RSA именно таков. Вспомним, что в системе с открытым ключом у каждого пользователя есть открытый ключ E (для зашифрования), и секретный ключ D (для расшифрования). Допустим, пользователь X хочет послать сообщение M пользователю Y, а EX,DX,EY и DY - это ключи зашифрования и расшифрования пользователей X и Y соответственно.

Как может

(1)Y удостовериться в том, что сообщение действительно прислано пользователем X?

(2)X быть уверен в том, что Y не сможет утверждать, что получил от него другое сообщение (например, M')?

(3)Y быть уверен в том, что X не сможет утверждать, что посылал ему другое сообщение (например, M'')?

Есть несколько путей решения этих проблем, каждый из которых подразумевает использование некоторых (или всех) ключей зашифрования и расшифрования. Один из возможных способов следующий:

(1)X записывает перед сообщением M данные, содержащие дату и время, а также информацию о самом себе. При этом из M получается

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]