Навигация
Обмен ссылками

 

Точное следование протоколам

автор: Art
При реализации криптографических протоколов некоторые моменты могут показаться программисту излишними, и он с легкой душой избавится от ненужного на его взгляд кода, тем самым еще и увеличивая быстродействие программы. Например, при реализации шифрования по RSA кажется достаточным просто реализовать операцию модульного возведения в степень. Однако спецификация PKCS#1 (Public-Key Cryptography Standards) требует добавления к каждой порции шифруемых данных как минимум 8-ми случайных байт. Дело в том, что при использовании алгоритмов с открытым ключом в распоряжении злоумышленника оказывается возможность расшифровывать все сообщения, зашифрованные на секретном ключе (что не дает ему значительного преимущества), а также самостоятельно зашифровывать любые сообщения на открытом ключе.

Допустим, злоумышленнику удалось перехватить зашифрованное на открытом ключе сообщение, в котором содержится только одно 32-битовое значение.
Расшифровать это сообщение без знания секретного ключа злоумышленник не в силах, но он может перебирать все 232 возможных значений, зашифровы-
вая их на открытом ключе, пока не получит шифртекст, совпадающий с перехваченным. Если же при зашифровании были добавлены случайные байты,
перебор 232 вариантов уже не принесет желаемого результата. На практике неполная реализация протокола — довольно распространенное явление. Разработчик может утешать себя тем, что все работает и так и никто не станет копаться в двоичном коде в поисках уязвимостей. Однако подобный подход может иметь тяжкие последствия при защите информации.

Цифровая подпись EIGamal в библиотеке FGInt FGInt представляет собой библиотеку для работы с большими целыми числами и включает в числе прочих поддержку алгоритма цифровой подписи EIGamal. Но вычисление и проверка этой подписи в FGInt были реализованы с некоторыми отступлениями от спецификации. Во-первых, при проверке целостности подписи должна выполняться проверка того, что значения двух составляющих подписи г и s не превышают значения использованного модуля р. На случай если эта проверка не выполняется, в книге "Handbook of Applied Cryptography" приводится алгоритм атаки, позволяющий при наличии одного подписанного сообщения вычислить цифровую
подпись для любого другого сообщения. Во-вторых, в подписи должно использоваться не само сообщение, а его хэш. Причина этого заключается в том, что без использования хэш-функции оказывается возможным подобрать сообщение, соответствующее заданному значению подписи, вычисленному определенным образом. Данная атака также описана в книге "Handbook of Applied Cryptography".

А если подписывается значение хэша, то для отыскания подходящего сообщения придется обратить еще и хэш, что при использовании стойкой криптографической хэш-функции сделать почти невозможно. Описанные выше недостатки в FGInt были обнаружены и успешно использовать представителями группы CORE, что позволило им выпустить генераторы регистрационных кодов к нескольким версиям программы SmartWhois, защищенной с использованием цифровой подписи EIGamal с ключом длиной 960 бит, реализованной через библиотеку FGInt. Подытоживая все написанное про алгоритмы и протоколы, можно сказать, что хотя криптографическая часть любой защиты, возможно, поддается формализации легче многих других элементов, это не делает ее гарантированно стойкой. Существует множество способов из надежных составляющих построить слабую систему. И только глубокие знания в криптографии, подкрепленные постоянной практикой, помогают снизить вероятность неудачи.


 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
 
Авторизация
Топ новостей