ОКБ САПР ПСКЗИ "ШИПКА"О ключах и сертификатах
  windows 7 Review bit-info.com on alexa.com

О ключах и сертификатах


О ключах и сертификатах

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

На самом же деле все довольно просто.

Основные понятия

Криптографический ключ - это набор уникальных данных, управляющий процессом криптографического преобразования (зашифрования, расшифрования, выработки и проверки ЭЦП и т. д.). Чтобы расшифровать сообщение <фшир>, зашифрованное методом перестановки - нам нужен ключ, на котором оно было зашифровано <3124>. Имея этот ключ, расставляем в соответствующем порядке буквы и получаем исходное <шифр>. Природа данных, являющихся ключом, может быть разной. Например, в случае с шифрованием методом перестановок, ключ - это порядок перестановки элементов, а в случае с подписью по алгоритму RSA - это показатель степени.

Именно в зависимости от того, на каких ключах и как организован процесс, криптографию называют симметричной или асимметричной.

Для того чтобы зашифровать сообщение или подписать его ЭЦП, нужно выбрать ключ. А для того, чтобы зашифрованное сообщение расшифровать или проверить ЭЦП - нужно знать ключ. Преобразование симметрично, если эти ключи - одинаковые, и асимметрично, если разные.

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

В соответствии с российскими нормативными правовыми документами  шифрование может использоваться как симметричное, так и асимметричное, а ЭЦП - только асимметричная.

 

Системы с открытым ключом

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

Для решения проблемы распределения ключей были предложены системы с открытым ключом.

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

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

В случае с подписью сообщений ЭЦП - наоборот, сообщение подписывается на закрытом ключе, а проверить ЭЦП (и убедиться в подлинности сообщения) может всякий, имеющий соответствующий открытый ключ.

Открытый и закрытый ключи связаны с помощью  необратимых  или односторонних функций, которые обладают следующим свойством: при известном значении x легко вычисляется значение f(x), однако если известно значение y, то нет простого пути для вычисления значения x из y=f(x).

Конечно, для того чтобы криптография с публичным ключем получила широкое распространение, необходима легитимная и работающая система правил применения таких ключей и их обслуживания. Эта инфраструктура называется PKI - public key infrastructure, или, в российской нотации, ИОК - инфраструктура открытых ключей.

 

Инфраструктура открытых ключей. Цифровые сертификаты.

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

Можно передавать ключи из рук в руки, но это не всегда удобно и не всегда абсолютно безопасно. Более того, недобросовестный пользователь может сам отказаться от своего же ключа, если не захочет признать свое авторство, подтвержденное ЭЦП.

А еще может быть ситуация, когда открытый ключ подлинный, но скомпрометирован закрытый (например, утрачен носитель с ЭЦП (может быть, просто потерялся, но вдруг украден?)).

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

То есть кто-то должен взять на себя труд удостоверять актуальность пары <пользователь + его открытый ключ>. Это делают Удостоверяющие Центры (УЦ) путем  выдачи цифровых сертификатов. Цифровой сертификат представляет собой пару <имя пользователя + открытый ключ>, подписанную ЭЦП Удостоверяющего Центра.

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

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

Электронный документооборот

Анализируя ту или иную схему ЭЦП, обычно ставят вопрос так: <Можно ли быстро подобрать два различных (осмысленных) сообщения, которые будут иметь одинаковые ЭЦП>. Ответ здесь обычно отрицательный - трудно это сделать. Но, оказывается, что вполне возможно, имея два сообщения, подобрать закрытые ключи так, чтобы подписи совпадали. А вот последствия могут быть очень серьезными.

Вот пример действий злоумышленника:

1.  Подготовить две платежки (m1 и m2):

     на 10000000 руб. (m1);

     на 3 руб. (m2).

2.  Выбрать закрытый ключ X1 и рассчитать ключ X2, при котором ЭЦП (с1 и с2) сообщений m1 и m будут совпадать (с1 = с2)

3. Зарегистрировать открытые ключи, соответствующие закрытым.

4. Отправить в банк требование m1 с подписью на X1 (m1c1).

5. Дождаться выполнения банком поручения.

6. Предъявить банку претензию, состоящую в том, что он якобы посылал требование о переводе 3-х рублей (m2c2), а не 10000000 (m1c1), а то, что кто-то подобрал текст сообщения, не изменяющий ЭЦП - дело не его. Пусть платит банк, удостоверяющий центр, страховая компания - кто угодно, только верните мои деньги! И главное, что придется вернуть!

В чем же источник успеха такой атаки? Дело в том, что Федеральный Закон <Об электронной цифровой подписи> допускает множественность ЭЦП для одного лица (Ст. 4. П. 2). Именно поэтому злоумышленник получает реальную возможность подбирать не сообщение, что невероятно трудно, а подобрать и зарегистрировать (легально!) ключ. Более того, не исключен вариант сговора двух лиц - ЭЦП оказывается уязвимой, если закрытый ключ известен хоть кому-нибудь! А если сговорятся два центра по сертификации подписей?

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

Существует радикальный способ борьбы с атаками такого рода - для этого всего лишь необходимо иметь устройство, в котором:

1. Генерируется закрытый ключ.

2. Вычисляется открытый ключ.

3. Открытый ключ экспортируется, в том числе для сертификации в удостоверяющем центре.

4. Закрытый ключ применяется для выработки ЭЦП только внутри устройства, его экспорт невозможен!

В этом случае знать заранее, какие получатся ключи, - невозможно. А поскольку закрытые ключи из устройства не экспортируются, то рассчитать такой закрытый ключ, открытый ключ которого совпадет с имеющимся - невозможно.

Именно таким устройством является ПСКЗИ ШИПКА.

 

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

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

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

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

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

Всех этих тонких мест помогает избежать использование ПСКЗИ ШИПКА.

 

Генерация

Новое неинициализированное устройство никаких ключей или заранее записанных случайных последовательностей не содержит. Ключи генерируются непосредственно в ШИПКЕ с помощью физического датчика случайных чисел. Скачать видеоролик "Генерация ключей"

Генерация ключей в ПСКЗИ ШИПКА - простая процедура, занимающая минимум времени и сил, при этом не требуется запоминать, на каком из ключей производились какие преобразования, и какому открытому ключу соотвествует какой сертификат - устройство не перепутает ни ключи, ни сертификаты.

Для удобства дальнейшей работы - в первую очередь, для обмена ключами с теми, с кем планируется обмен информацией, в ПСКЗИ ШИПКА предусмотрена возможность присваивать ключам описания на русском языке. Например, <для Саши> или <эл. почта>.

Утилита <Управление ключами> в ПСКЗИ ШИПКА предназначена для работы с ключами без использования пространства PKI - то есть в тех случаях, когда нужно обменяться открытыми ключами напрямую, без цифровых сертификатов, или обменяться сессионными ключами шифрования для обмена зашифрованными сообщениями, опять же, без посредства сертификатов, а так же для тех случаев, когда зашифровывание и расшифровывание (и/или подпись ЭЦП и проверка этой подписи) планируется производить с помощью одной и той же ШИПКИ.

В случае же, если планируется использовать PKI (получив цифровой сертификат), ключевую пару в ПСКЗИ ШИПКАнужно генерировать иначе.

Для того чтобы на открытый ключ сгенерированной ШИПКОЙ ключевой пары можно получить сертификат УЦ, ключевую пару нужно генерировать с помощью ПО УЦ, выбрав в строке выбора криптопровайдера Shipka Base Cryptographic Provider. Скачать видеоролик "Выписывание сертификата через УЦ"

Криптопровайдер ПСКЗИ ШИПКА подписан ЭЦП Microsoft, что подтверждает его полную работоспособность в ОС этого семейства, включая WinCE.

Ключевая пара при этом будет создана непосредственно в ШИПКЕ, и в нее же будет записан сертификат открытого ключа. Сертификат можно установить в нужные каталоги ПК непосредственно в процессе получения - с помощью ПОУЦ, или позже - например, на другом компью