Хранение и обновление ключей

Хранение и обновление ключей Криптография

Прогресс в области вычислительной техники идет очень быстрыми темпами. Сейчас даже персональные компьютеры повсеместно работают под управлением многозадачных операционных систем. В результате пользователь часто оказывается не в состоянии определить, когда операционная система прерывает выполнение его программы шифрования, записывает ее саму, а также все ее данные на диск и переключается на работу с другим приложением. После того как операционная система возобновляет процесс шифрования, все выглядит вполне пристойно: пользователь даже не успевает осознать, что шифровальная программа вместе с используемым ею ключом побывала на диске. В итоге ключ так и останется на диске в незашифрованном виде, пока поверх него не будут записаны другие данные. Когда это случится — через полсекунды, через месяц или вообще никогда, не может сказать никто. Однако враг не дремлет, и вполне может произойти так, что ключ еще хранится на диске в открытом виде, когда злоумышленник проверит этот диск в поисках полезной для себя информации.

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

Читайте: Как заработать на инвестициях в искусственный интеллект? Краудфандинг Daisy от компании EndoTech. Обзор и отзывы о смарт-контракте

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

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

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

Проще всего хранить ключи для криптосистемы, у которой имеется единственный пользователь. Пользователь просто запоминает этот ключ и при необходимости вводит его с клавиатуры компьютера по памяти. Однако поскольку сложный случайный ключ запомнить нелегко, для его хранения можно использовать магнитную карточку, или пластиковый ключ с размещенным на нем постоянным запоминающим устройством (так называемый ПЗУ-ключ) или интеллектуальную смарт-карту. Для ввода такого ключа достаточно вставить его физический носитель в специальный считыватель, подключенный к компьютеру. При этом действительное значение вводимого ключа пользователю неизвестно, и, следовательно, он не сможет его разгласить или скомпрометировать. Способ использования ключа определяется управляющим кодом, записанным на физический носитель вместе с этим ключом.

ПЗУ-ключ очень удобен и понятен для многих. Пользователь гораздо лучше осознает, как правильно обращаться с обычным ключом от замка или системы доступа. Придание криптографическому ключу такого же вида, какой имеет ставший нам привычным ключ от замка, позволяет чисто интуитивно избегать многих ошибок, связанных с хранением криптографических ключей.

С целью дальнейшего уменьшения вероятности компрометации ключа его можно разделить на две части. Первую часть следует реализовать в виде ПЗУ-ключа, а вторую — поместить в память компьютера. Тогда потеря носимой части ключа или его половинки, хранимой в памяти компьютера, не приведет к разглашению криптографического ключа в целом. А части ключа при необходимости можно заменять отдельно друг от друга.

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

Если ключи генерируются с использованием хорошего датчика псевдослучайных двоичных последовательностей, может оказаться более удобно не хранить сгенерированные ключи, а каждый раз заново их генерировать, задавая соответствующее начальное значение датчика, которое легко запомнить.

Продолжительность использования и уничтожение ключей

Любой ключ должен использоваться в течение ограниченного периода времени по следующим причинам:

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

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

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

Ключи, применяемые для шифрования файлов, которые хранятся на дисках, слишком часто менять не надо. Регулярное повторное шифрование файлов на Новых ключах даст только больше полезной информации криптоаналитику, который будет пытаться их вскрыть. Лучше применить подход, при котором каждый файл шифруется при помощи своего ключа. А сами ключи, в свою очередь, зашифровываются на ключе шифрования ключей, который затем прячут в надежном месте (например, в стальном сейфе).

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

Криптографические ключи ни в коем случае не должны попадать в руки противника. Поэтому, как только в ключах отпала надобность, их следует уничтожить. Если ключи хранятся на бумажном носителе, его надо сжечь или пропустить через специальный аппарат для уничтожения бумаг, который должен быть достаточно высокого качества. Ведь будет очень обидно, если ваш алгоритм шифрования, способный выдержать атаку методом грубой силы в течение нескольких миллионов лет, вскроют только потому, что за несколько десятков тысяч долларов кто-то наймет сотню безработных, и за год они соберут воедино недостаточно тщательно «пережеванный» лист бумаги с записанными на нем ключами.

Если ключ хранился в перепрограммируемом ПЗУ, то необходимо несколько раз записать информацию поверх него. В случае, когда для хранения ключа использовалось ПЗУ, его надо разбить молотком на мелкие кусочки и равеять их по ветру. Если ключ лежал на компьютерном диске, на место ключа придется многократно записать ничего не значащие данные или уничтожить диск. При работе на компьютере в многозадачном режиме следует обратить особое внимание на способность операционной системы создавать временные файлы на диске для хранения рабочей копии программы шифрования и ее данных. А сверхосторожный пользователь обязательно напишет программу, которая будет отыскивать копии ключа на свободных секторах диска и удалять их.

Оцените статью
Добавить комментарий