Проверка подлинности ключей
Как Иванову убедиться в том, что полученные им ключи были действительно переданы Петровым, а не противником, который притворился Петровым? Если Петров отдает ключи Иванову с глазу на глаз, то сделать это довольно легко. Однако если Петров присылает ключи с курьером, то Иванову придется положиться на честность курьера. А если полученные Ивановым ключи зашифрованы с помощью ключа шифрования ключей, ему остается лишь надеяться, что этот ключ имеется только у Петрова. Наконец, если рассылку ключей производит ЦРК, Иванов должен убедиться в надежности процедур рассылки, которые приняты в ЦРК.
Если противник полностью контролирует все каналы связи, которыми пользуется Иванов, он может заставить поверить Иванова во что угодно. Противник может прислать ему фальшивый ключ шифрования ключей якобы от Петрова и затем передавать Иванову поддельные ключи шифрования данных, зашифрованные на этом ключе. Противник будет в состоянии обзавестись собственным ЦРК и слать Иванову ключи от имени подлинного ЦРК. И ничего не подозревающий Иванов станет шифровать свои сообщения с помощью ключей, известных противнику.
Подобные рассуждения иногда приводятся, чтобы доказать ненужность криптографических методов, применяемых при передаче ключей. Ведь получается, что у Иванова и Петрова нет иного пути удостовериться в подлинности используемых ими ключей на все 100%, кроме личной встречи.
Эти рассуждения наивны. На практике установить тотальный контроль над чьими бы то ни было линиями связи невозможно. Действительно, Иванов не в силах убедиться наверняка, что переданный ему ключ не был подменен всемогущим противником. Однако, чтобы его контроль был действительно тотальным, такому противнику придется прибегнуть к средствам, которые в реальном мире ему вряд ли будут доступны.
Зная голос Петрова, Иванов может проверить подлинность полученного ключа по телефону. Если это открытый ключ, то его можно просто продиктовать. Если это секретный ключ, то его можно подвергнуть преобразованию с помощью однонаправленной хэш-функции и передать по телефону полученное значение для сравнения с аналогичным значением, подсчитанным на другом конце провода.
Нередко бывает, что Иванов желает убедиться: переданный ему ключ не только является подлинным, но и не был искажен при передаче. Ведь в результате Иванов может оказаться не в состоянии прочесть многие мегабайты шифр-текста. Если соответствующий открытый текст был ASCII-файлом, то можно проверить ключ, попытавшись расшифровать с его помощью шифртекст, и получив абракадабру вместо осмысленного текста, сделать вывод о том, что ключ был передан с искажениями. Если открытый текст является достаточно случайным, можно прибегнуть к другим методам проверки ключа.
Один из них состоит в добавлении к передаваемому ключу так называемого верификационного блока - специального заголовка длиной несколько байт, который известен и отправителю, и получателю. Петров посылает его Иванову в шифрованном виде вместе с ключом. С помощью этого ключа Иванов расшифровывает верификационный блок и убеждается, что полученный открытый текст совпадает с известным ему эталоном. В качестве верификационного блока можно использовать контрольную сумму, вычисленную для данного ключа. В этом случае Иванову нет необходимости знать верификационный блок заранее, до прихода ключа. Имея ключ, Иванов вычислит для него контрольную сумму, а затем сравнит ее со значением, которое он получит, расшифровав верификационный блок.
К сожалению, данный метод не свободен от существенных недостатков. Во-первых, при его использовании противник может организовать криптоаналитическую атаку со знанием открытого текста. Во-вторых, он облегчает вскрытие шифров с относительно коротким ключом (подобных DES-алгоритму). Криптоаналитику достаточно вычислить контрольные суммы Для каждого возможного ключа, а затем использовать эти контрольные суммы для определения ключей, примененных при шифровании перехватываемых в дальнейшем сообщений. Чтобы избавиться от этих недостатков, к вычисленной контрольной сумме ключа каждый раз необходимо добавлять случайные или хотя бы различные биты.