Контроль за использованием ключей
Прогресс в области вычислительной техники идет семимильными шагами. Ныне даже
персональные компьютеры повсеместно работают под управлением многозадачных
операционных систем. В результате пользователь часто оказывается не в состоянии
определить, когда операционная система прерывает выполнение его программы
шифрования, записывает ее саму, а также все ее данные на диск и переключается на
работу с другим приложением. После того как операционная система наконец
возобновляет процесс шифрования, все выглядит вполне пристойно: пользователь
даже не успевает осознать, что шифровальная программа вместе с используемым ею
ключом побывала на диске. В итоге ключ так и останется на диске в
незашифрованном виде, пока поверх него не будут записаны другие данные. Когда
это случится — через полсекунды, через месяц или вообще никогда, не может
сказать никто. Однако враг не дремлет, и вполне может произойти так, что ключ
все еще будет храниться на диске в открытую, когда вражеский агент проверит этот
диск в поисках полезной информации.
В некоторых случаях для организации обмена шифрованными сообщениями применяются сеансовые ключи. Они называются так потому, что используются лишь в одном сеансе связи, а затем уничтожаются. В результате вероятность их компрометации уменьшается. Еще больше понизить эту вероятность можно с помощью следующего метода.
К сгенерированному ключу (назовем его основным) добавляется битовый управляющий вектор (УВ), который содержит информацию об ограничениях, накладываемых на использование этого ключа. УВ подвергается хэшированию и затем складывается с основным ключом по модулю 2. Полученный результат служит в качестве ключа для зашифрования сеансового ключа. Зашифрованный сеансовый ключ хранится вместе с УВ. Чтобы получить сеансовый ключ в исходном виде, надо применить хэширование к УВ, сложить его с основным ключом по модулю 2 и использовать результат для расшифрования сеансового ключа. Достоинством этого метода является возможность задействовать УВ произвольной длины и открыто хранить его вместе с зашифрованным основным ключом.
|