На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

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

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


же стойкостью, что и старый. Если противник знает старый ключ, он сможет вычис­лить для этого ключа соответствующее значение однонаправленной функции и полу­чить в свое распоряжение новый ключ.
Проще всего хранить ключи для криптосистемы, у которой имеется единственный пользователь. Пользователь просто запоминает этот ключ и при необходимости вво­дит его с клавиатуры компьютера по памяти. Однако поскольку сложный случайный ключ запомнить нелегко, для его хранения можно использовать магнитную карточку, или пластиковый ключ с размещенным на нем постоянным запоминающим устрой­ством (так называемый ПЗУ-ключ) или интеллектуальную смарт-карту. Для ввода та­кого ключа достаточно вставить его физический носитель в специальный считыватель,
подключенный к компьютеру. При этом действительное значение вводимого ключа
пользователю неизвестно, и, следовательно, он не сможет его разгласить или скомп­рометировать. Способ использования ключа определяется управляющим кодом, запи­санным на физический носитель вместе с этим ключом.
ПЗУ-ключ очень удобен и понятен для многих. Пользователь гораздо лучше осоз­нает, как правильно обращаться с обычным ключом от замка или системы доступа. Придание криптографическому ключу такого же вида, какой имеет ставший нам при­вычным ключ от замка, позволяет чисто интуитивно избегать многих ошибок, связан­ных с хранением криптографических ключей.
С целью дальнейшего уменьшения вероятности компрометации ключа его можно разделить на две части. Первую часть следует реализовать в виде ПЗУ-ключа, а вто­рую — поместить в память компьютера. Тогда потеря носимой части ключа или его половинки, хранимой в памяти компьютера, не приведет к разглашению криптографи­ческого ключа в целом. А части ключа при необходимости можно заменять отдельно друг от друга.
Труднозапоминаемые ключи можно хранить на компьютерном диске в зашифро­ванном виде. Например, открытый ключ, состоящий из многих цифр, лучше зашифро­вать с помощью DES-алгоритма и запомнить на диске. Более короткий ключ к DES-алгоритму легче вспомнить, когда понадобится расшифровать открытый ключ.
Если ключи генерируются с использованием хорошего датчика псевдослучайных
двоичных последовательностей, может оказаться более удобно не хранить сгенериро­ванные ключи, а каждый раз заново их генерировать, задавая соответствующее на­чальное значение датчика, которое легко запомнить.
Продолжительность использования и уничтожение ключей
Любой ключ должен использоваться в течение ограниченного периода времени по следующим причинам:
чем дольше ключ находится в действии, тем больше вероятность что он будет скомпрометирован;
при длительном пользовании одним и тем же ключом увеличивается потенци­альный ущерб, который может быть нанесен в случае его компрометации; О ключ, очень долго применявшийся для шифрования информации, становится ла­комым кусочком для противника, у которого появляется стимул потратить на


его вскрытие значительные ресурсы, поскольку полученная выгода позволит оправдать понесенные расходы;
атаку на шифр вести тем легче, чем больше перехвачен­ного шифротекста для него накоплено.
Продолжительность использования ключа во многом зависит от криптосистемы.
В различных криптосистемах эта продолжительность должна быть разной. Для шиф­рования речевых сообщений, передаваемых по телефону, имеет смысл менять ключ после каждого разговора. В выделенных каналах связи продолжительность использо­вания ключа определяется ценностью шифруемой информации и скоростью ее переда­чи. При скорости в 9600 бит/с смену ключа следует производить реже, чем при скоро­сти в несколько гигабит в секунду. Если условия позволяют, такие ключи необходимо менять, по крайней мере, ежедневно.
Не требуют частой смены ключи шифрования ключей. Они используются от слу­чая к случаю, поэтому объем перехваченного противником шифротекста для них не­велик. Кроме того, о свойствах соответствующего ему открытого текста противнику заранее ничего не известно, поскольку хороший ключ представляет собой достаточно случайный набор битов. Однако компрометация ключа шифрования ключей влечет за собой гораздо более серьезные потери, чем это происходит при потере сеансового ключа или ключа шифрования данных. Необходим разумный компромисс между веро­ятностью вскрытия ключа шифрования ключей из-за его слишком длительного исполь­зования и возможностью компрометации этого ключа при его передаче абонентам сети. В большинстве случаев разумно ежемесячно, а иногда даже ежегодно, менять ключ
шифрования ключей.
Ключи, применяемые для шифрования файлов, которые хранятся на дисках, слиш­ком часто менять не надо. Регулярное повторное шифрование файлов на Новых клю­чах даст только больше полезной информации криптоаналитику, который будет пы­таться их вскрыть. Лучше применить подход, при котором каждый файл шифруется при помощи своего ключа. А сами ключи, в свою очередь, зашифровываются на ключе шифрования ключей, который затем прячут в надежном месте (например, в стальном
сейфе).
Что касается открытых ключей, то продолжительность их использования в значи­тельной степени варьируется в зависимости от области применения. Если открытый ключ применяется для целей аутентификации или для цифровой подписи, он продол­жает оставаться актуальным годами, иногда даже десятилетиями. Но даже в этом слу­чае не следует пренебрегать сменой ключа каждые 2-3 года, чтобы в распоряжении криптоаналитика накапливалось меньше шифротекста, необходимого для организа­ции атаки. А старый ключ все равно надо продолжать хранить в секрете — он может
понадобиться, чтобы, например, подтвердить подлинность подписи, поставленной в
течение периода, пока этот ключ был действующим.
Криптографические ключи ни в коем случае не должны попадать в руки противни­ка. Поэтому, как только в ключах отпала надобность, их следует уничтожить. Если ключи хранятся на бумажном носителе, его надо сжечь или пропустить через специ­альный аппарат для уничтожения бумаг, который должен быть достаточно высокого
качества. Ведь будет очень обидно, если ваш алгоритм шифрования, способный вы­держать атаку методом грубой силы в течение нескольких миллионов лет, вскроют


только потому, что за несколько десятков тысяч долларов кто-то наймет сотню безра­ботных, и за год они соберут воедино недостаточно тщательно «пережеванный» лист бумаги с записанными на нем ключами.
Если ключ хранился в перепрограммируемом ПЗУ, то необходимо несколько раз записать информацию поверх него. В случае, когда для хранения ключа использовалось ПЗУ, его надо разбить молотком на мелкие кусочки и их по ветру. Если ключ
лежал на компьютерном диске, на место ключа придется многократно записать ничего не значащие данные или уничтожить диск. При работе на компьютере в многозадачном
режиме следует обратить особое внимание на способность операционной системы со­здавать временные файлы на диске для хранения рабочей копии программы шифрова­ния и ее данных. А сверхосторожный пользователь обязательно напишет программу, которая будет отыскивать копии ключа на свободных секторах диска и удалять их.
Протоколы распределения ключей
Отправитель и получатель сообщений при их взаимодействии в компьютерной сети подчиняются определенным правилам по соблюдению последовательности действий между ними. Такие правила, называемые протоколом, гарантируют не только безо­пасность сообщений, но и аутентификацию корреспондентов. Поэтому выбор прото­колов распределения ключей в сети представляет собой важную проблему.
В настоящее время распределение ключей между пользователями реализуется двумя способами:
прямым обменом сеансовыми ключами;
созданием одного или нескольких центров распределения ключей. В связи с этим возможны следующие ситуации организации обмена ключами:
□ прямой обмен ключами; обмен через посредника;
□ обмен через нескольких посредников.
Как правило, процедура распределения ключей применяется совместно с процеду­рой проверки подлинности участниковобмена информацией. При этом возможны ва­рианты протоколов распределения ключей с секретным и открытым ключом, то есть на основе и методов.
Протоколы распределения ключей с использованием одноключевых методов (с сек­ретным ключом) существуют для двух ситуаций:
□ прямого обмена; обмена через посредника.
При использовании протокола взаимного обмена с секретным ключом каждое пе­редаваемое сообщение начинается с установления подлинности отправителя. Данный протокол предполагает, что отправитель А и получатель В для подтверждения под­линности сообщения используют секретный ключ КАВ. Осуществление протокола взаимного обмена сеансовыми ключами К между абонентами происходит в последова­тельности, отображенной сообщения — корреспондент В — посылает запрос отправителю А на получение сообщения. При этом запрос ql совершенно открыт и может быть по­слан любым абонентом сети.
ния подлинности и не должно иметь информации о сеансовых ключах, которыми об­мениваются корреспонденты А и В. Такая ситуация соответствует обмену ключами по незащищенному каналу связи (протокол передачи ключа по незащищенному каналу использует­ся, как правило, для разделения процедур подтверждения подлинности и распределе­ния ключей. С этой целью посредник С выбирает несекретные числа аир, снабжает ими корреспондентов А и В (число р — простое число).
Функционирование протокола происходит в следующей последовательности. Пользователь А выбирает секретное число ХА и вычисляет уА. Пользователь В выби­рает секретное число ХВ и вычисляет уВ. После этого пользователи А и В обменива­ются вычисленными числами уА и уВ. Далее пользователи А и В самостоятельно вы­числяют ключи КА и KB, которые в дальнейшем используются ими в качестве сеансового ключа, и в силу того, выполняется условие — КА = КВ.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика