Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

После 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. получив шифрованный текст, получатель сначала на своем секретном ключе расшифровывает сеансовый ключ, стоящий в начале текста;

  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 получается сообщение большей длины (например, M1), которое выглядит приблизительно так:

M1: "Меня зовут X, сегодня 13.06.2001, время 18:27. M",

где M - текст исходного сообщения.

  1. X расшифровывает M1 на своем секретном ключе DX и получает шифрованное сообщение DX(M1), которое он посылает пользователю Y.

  2. Y применяет к шифрованному сообщению открытый ключ зашифрования EX пользователя X и, таким образом, восстанавливает расширенное сообщение M1, поскольку

EX(DX(M1))= M1.

Теперь

  1. Y может быть уверен, что именно X послал сообщение M1, поскольку только X может получить текст DX(M1).

  2. Если Y будет утверждать, что получил другое сообщение, M', то пользователь X предложит пользователю Y предъявить шифрованный текст DX(M'). Y не сможет это сделать, так как ему неизвестен секретный ключ DX пользователя X.

  3. Если X будет утверждать, что посылал пользователю Y другое сообщение, M'', то последний может предъявить шифрованный текст DX(M1) судье, который затем затребует у X его секретный ключ, чтобы удостовериться, действительно ли было послано именно сообщение M1. Так как Y не знает секретного ключа пользователя X, то он не мог сфабриковать шифрованный текст DX(M1). Если X откажется предоставить судье свой секретный ключ, то проиграет дело.

Важно, чтобы расширенное сообщение M1 включало дату и время, иначе оно может быть подменено более ранним сообщением, и проверка пункта (2) в этом случае будет несостоятельной.