Введение в криптографию - страница 20

стр.

О дайджестах сообщений

Дайджест сообщения — это компактная 160- или 128-битовая свёртка вашего сообщения-прообраза, или контрольная сумма файла. Вы можете представить его как отпечаток (fingerprint) сообщения или файла. Дайджест сообщения — это "отражение" прообраза: если исходные данные будут как-либо изменены, из них будет вычислен совершенно иной дайджест. Это позволяет обнаружить даже самые незначительные изменения, внесённые злоумышленником в сообщение. Дайджест генерируется посредством криптографически стойкой односторонней хэш-функции. В вычислительном плане невозможно создать такое подставное сообщение, которое бы производило дайджест, идентичный дайджесту оригинального сообщения[12]. В этом отношении дайджест сообщения гораздо лучше контрольной суммы (CRC32 или CRC64), поскольку довольно просто создать два различных сообщения, производящих одинаковую контрольную сумму. Но, как и в случае с контрольной суммой, не существует никакого способа восстановить из дайджеста исходные данные прообраза.

Алгоритм стойкой односторонней хэш-функции, используемый в PGP 5.0 и выше, называется SHA-1, что означает Secure Hash Algorithm; он был разработан в АНБ для Национального Института Стандартов и Технологий (NIST) США. SHA-1 — это 160-битовый хэш-алгоритм. Некоторые люди ко всем разработкам АНБ относятся с подозрением, поскольку именно АНБ "заведует" электронной и радиотехнической разведкой и взломом кодов. Но имейте в виду, что АНБ не заинтересовано в подделке подписей; правительство и его силовые структуры получат гораздо больше выгоды от хорошего стандарта неподделываемых ЭЦП, не позволяющих никому от них отрекаться. Кроме того, SHA-1 был опубликован в открытой литературе и, после тщательнейшего исследования лучшими криптографами мира, специализирующимися на хэш-функциях, получил единодушную высочайшую оценку своего крайне удачного дизайна. Он имеет некоторые архитектурные инновации, благодаря которым преодолевает все наблюдавшиеся прежде проблемы односторонних хэш-функций, когда-либо созданных гражданским криптографическим сообществом. Все последние версии PGP используют SHA-1 в качестве хэш-алгоритма для генерации подписей новыми ключами DSA, соответствующими Стандарту Цифровых Подписей (DSS) NIST[13]. Для нужд обратной совместимости новые версии PGP всё ещё используют MD5 для подписания ключами RSA [Legacy v3], т. к. старые версии PGP используют для работы с ЭЦП только алгоритм MD5.

В ранних версиях PGP в качестве алгоритма хэш-функции применялся MD5, Message Digest Algorithm, опубликованный для свободного применения компанией RSA Data Security. MD5 представляет собой хэш-алгоритм со 128-битовым выходом. В 1996 году MD5 был практически взломан немецким криптографом Гансом Доббертином. Хотя алгоритм не поддался окончательно, в нём выявились столь серьёзные недостатки (тенденция сжимающей функции алгоритма к коллизиям), что теперь никому более не рекомендуется использовать его для генерации ЭЦП. Дальнейшая работа в этой области наверняка позволит полностью его взломать, что сделает возможной свободную подделку электронных подписей. Если вы не желаете в один прекрасный день обнаружить свою электронную подпись на подставных признательных показаниях, переходите к применению новых ключей DSA и RSA v4 как предпочтительного метода генерации цифровых подписей, поскольку они в качестве криптографически стойкой односторонней хэш-функции используют SHA-1.

Как защитить открытый ключ от подмены

В среде криптосистем с открытым ключом вам нет нужды предохранять открытые ключи от компрометации. Напротив, гораздо лучше, когда они широко распространены. Но очень важно защищать их от подделки, дабы всегда сохранялась уверенность, что конкретный открытый ключ действительно принадлежит человеку, чьё имя указано в сведениях сертификата. В этом состоит самое слабое место криптосистем с открытым ключом и это их главная уязвимость. Давайте для начала представим потенциально возможный инцидент, а затем разберёмся, как его не допустить.

Предположим, вам нужно отправить секретное послание Алисе. Вы скачиваете её сертификат и открытый ключ с сервера-депозитария, затем этим ключом зашифровываете письмо и отправляете его по электронной почте.