5.8  Шифрование и электронно-цифровая подпись

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

Криптография – комплексная наука о защите информации. Это могут быть конфиденциальные документы (договора, соглашения, номер банковского счета и др.), деловая и личная переписка. Безопасность передаваемых данных обеспечивается за счет шифрования данных и их электронной цифровой подписи.

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

Ключевая пара – открытый и закрытый ключи, которые используются для шифрования данных.

В современной криптографии криптографические системы подразделяются на два класса в зависимости от количества используемых ключей:

· симметричные криптосистемы (одноключевые);

· асимметричные криптосистемы (двухключевые).

Ключи, используемые в одноключевых и двухключевых криптосистемах, называются, соответственно, симметричными и асимметричными.

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

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

Закрытый и открытый ключи определенным образом связаны между собой и

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

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

Основное применение ассиметричных криптосистем – создание/проверка электронной цифровой подписи и асимметричное шифрование.

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

Шифрование информации гарантирует вам:

· недоступность информации для сторонних лиц;

· подлинность информации (информации поступит в неискаженном виде);

· целостность информации (данные, которые вы хотите передать останутся целыми в процессе передачи).

В общем случае шифрование состоит из следующих этапов (рис. 5.9):

Рис. 5.9 Шифрование данных

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

2) после этого вы отправляете зашифрованные данные партнеру;

3) ваш партнер получает зашифрованные данные. С помощью своего закрытого ключа и вашего открытого он расшифровывает данные. В результате ваш партнер получает тот самый открытый текст (конфиденциальные данные) который вы зашифровали.

Одним из самых распространенных алгоритмов шифрования является алгоритм RSA, длина ключа которого обычно 1024 бита. Принцип работы этого алгоритма достаточно простой. Каждый участник криптосистемы генерирует два случайно больших простых числа  p и q, выбирает число e, меньшее pq и не имеющее общего делителя с (p-1)(q-1), и число d, такое, что (ed-1) делится на (p-1)(q-1). Затем он вычисляет n = pq, а p и q уничтожает. Пара (n,e) называется открытым ключом, а пара (n,d) – закрытым ключом.

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

Стойкость RSA есть функция сложности разложения произведения pq на простые множители p и q (эту задачу придется решать тому, кто вознамерится «вычислить» закрытый ключ из открытого). При достаточной длине этих простых чисел (несколько тысяч двоичных разрядов) такое разложение вычислительно невозможно. Для обеспечения конфиденциальности участник А «шифрует» сообщение m участнику Б с помощью открытого ключа Б:

c: = me (mod n),

а участник Б «расшифровывает» его с помощью своего закрытого ключа:

 m: = cd (mod n).

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

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

При соблюдении правовых условий использования ЭЦП в электронном документе она признается равнозначной собственноручной подписи в документе на бумажном носителе. Правовыми основами использования ЭЦП в системах электронного документооборота являются главы Гражданского кодекса Российской Федерации, федеральные законы (ФЗ) РФ «Об информации, информатизации и защите информации» № 24-ФЗ от 20 февраля 1995 г. и «Об электронной цифровой подписи» №

1-ФЗ от 10 января 2002 г.

При использовании электронно-цифровой подписи в условиях электронного документооборота применяется технология «криптография с открытым ключом». Для наложения цифровой подписи (рис. 5.10) участник А «шифрует» сообщение m участнику Б с помощью своего закрытого ключа:

 s = md (mod n),

и отправляет подпись s вместе с сообщением m. Участник Б может верифицировать подпись участника А с помощью открытого ключа А, вычислив:

 mп = se (mod n).

Если m = mп, то сообщение m признается подписанным пользователем, который предоставил ранее открытый ключ (n,e).

Рис. 5.10 Работа с электронно-цифровой подписью

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

Перед непосредственным созданием ЭЦП (см. рис. 5.10) на документе происходит процесс хэширования с помощью специальной хэш-функции. Представленная на рис. 5.10 процедура соответствует, например, стандарту ГОСТ Р 34.10-94.

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

механизма, который позволяет вычислить для сообщения m произвольный длины так называемый хэш-код h(m) фиксированного размера r (обычно r = 128 бит). Этот код является подобием «слепка» сообщения m. Важно знать, что в системах электронно-цифровой подписи вместо подписывания сообщения (например, документов большого объема)  используется подписывание соответствующих им хэш-функций, то есть ЭЦП накладывается не на сам документ, а на его хэш-код, и потом полученный результат записывается в конец файла документа. Тот факт, что сообщение m считается подписанным, если подписана его хэш-функция, определяет следующие основные требования к хэш-функциям:

· вычислительно неосуществимо нахождение сообщения m, хэш-функция которого была бы равна заданному значению h;

· вычислительно неосуществимо нахождение двух сообщений m1 и m2m1 с равными значениями хэш-функций, то есть удовлетворяющих условию  h(m1) = h(m2).

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

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

Сертификат – электронный документ, включающий открытый ключ и информацию о владельце данного ключа, заверенную с помощью ЭЦП Удостоверяющим Центром.

Сертификат предназначен для:

· подтверждения подлинности ЭЦП и идентификации ее автора;

· обеспечения возможности шифрования электронных документов, направляемых владельцу сертификата;

· аутентификации владельца при установлении защищенных соединений по TLS/SSL протоколам.

Сертификат представляет собой информационный блок данных, формат которого включает следующую информацию (в соответствии с положениями международной Рекомендации ITU-T Х.509):

· номер версии сертификата;

· серийный номер сертификата;

· идентификатор алгоритма, используемого для подписи удостоверяющего центра;

· сведения об издателе сертификата (УЦ);

· период действия сертификата: начало и конец периода;

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

· информацию об открытом ключе пользователя: идентификатор алгоритма и собственно открытый ключ;

· дополнительные атрибуты, определяемые требованиями использования сертификата в системе;

· ЭЦП Удостоверяющего Центра.