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