Усиленная электронная подпись

Усиленная электронная подпись реализует в едином комплексе следующие возможности:

• удостоверяет, что подписанный текст исходит от лица, поставившего подпись;

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

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

Система усиленной ЭП включает две процедуры: 1) процедуру постановки подписи; 2) процедуру проверки подписи.

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

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

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

Теперь попытаемся разобраться, из чего состоит усиленная электронная подпись (ЭП), например, если она формируется на основе алгоритма RSA. Система RSA стала первой и наиболее известной во всем мире конкретной системой усиленной ЭП, математическая схема которой была разработана в 1977 г. в Массачусетском технологическом институте США. Алгоритм RSA мы уже изучали в подразделе 2.5.9 применительно к шифрованию/расшифровыванию документов с использованием открытого ключа.

Процесс применения усиленной электронной подписи начинается с изготовления двух ключей – открытого и закрытого, осуществляемого при посредничестве удостоверяющего центра[11] с применение программно-аппаратных средств электронной подписи. Для этого датчиком случайных чисел выбираются два больших случайных простых числа: p и q. Для максимальной безопасности нужно выбирать p и q равной длины. Далее рассчитывается произведение:

n = p*q

Затем случайным образом выбирается открытый ключ шифрования е, такой что е и (p - 1)*(q - 1) являются взаимно простыми числами (то есть числами, не имеющими общих делителей). Наконец расширенный алгоритм Евклида используется для вычисления закрытого ключа d, такого, что:

e*d = 1(mod(p - 1)(q - 1))

Другими словами, d = e-1mod((p - 1)(q - 1))[12].

При этом d и n – также взаимно простые числа. Числа е и n  образуют открытый ключ и хранятся в общедоступном реестре сертификатов ключей проверки электронных подписей удостоверяющего центра, а число d – закрытый, передаваемый в распоряжение пользователя – отправителя электронных документов. Два простых числа p и q хранятся в секрете. Их значения никому не сообщаются.

Допустим теперь, что отправитель хочет подписать сообщение М перед его отправкой. Для этого он инициирует вычисления, осуществляемые с помощью средств электронной подписи. Сначала сообщение М (блок информации, файл, таблица) сжимают с помощью хеш-функции h(·) в целое число m:

m = h(M)

 

Вычисленное значение хеш-функции h(М) представляет собой один короткий блок информации m, характеризующий весь текст М в целом. Другими словами, значение хеш-функции (хеш-код) m=h(M) – это сжатое двоичное представление (дайджест) основного сообщения М произвольной длины. Основное сообщение называют прообразом. Функция хеширования позволяет сжать подписываемый документ до нескольких десятков или сотен бит, тогда как М может быть размером в мегабайт и более. Следует отметить, что значение хеш-функции h(М) зависит от документа М сложным образом и не позволяет восстановить сам документ М. Разрядность хеш-кода не зависит от размера документа.

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

Затем вычисляют электронную подпись S под электронным документом М, используя хеш-значение m и секретный ключ d:

S = md(mod n)

Пара (M, S) передается партнеру-получателю как электронный документ М, подписанный электронной подписью S, причем подпись S сформирована обладателем секретного ключа d.

После приема пары (M, S) получатель с помощью средств электронной подписи вычисляет хеш-значение сообщения М двумя разными способами. Прежде всего, он восстанавливает хеш-значение m', применяя криптографическое преобразование подписи S с использованием открытого ключа е:

m' = Se(mod n)

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

m = h(M)

Если соблюдается равенство вычисленных значений, т.е.

Se(mod n) = h(M),

 

то получатель признает пару (M, S) подлинной. В противном случае либо изменено содержание сообщения, либо подпись подделана.

Доказано, что только обладатель секретного ключа d может сформировать электронную подпись S по документу М, а определить секретное число d по открытому числу е практически невозможно. Кроме того, можно строго математически доказать, что результат проверки электронной подписи S будет положительным только в том случае, если при вычислении S был использован секретный ключ d, соответствующий открытому ключу е. Поэтому открытый ключ е иногда называют «идентификатором» подписавшего.

Интерпретируя усиленную электронную подпись как S = md(mod n), то есть как функцию, определяемую хеш-кодом, закрытым ключом и открытым ключом, укажем также, что в ее состав можно включать дополнительную информацию, например:

- дату подписи;

- информацию о лице, подписавшем электронный документ (Ф.И.О., должность, краткое наименование фирмы и т.п.).

Обобщенная схема формирования и проверки электронной подписи представлена на рис. 2.28.

В Российской федерации применяется отечественный стандарт электронной подписи – ГОСТ Р 34.10-2012, который несколько отличается от алгоритма RSA. В данном стандарте используются следующие параметры:

р – большое простое число длиной от 509 до 512 бит либо от 1020 до 1024 бит;

q – простой сомножитель числа (р - 1), имеющий длину 254...256 бит;

а – любое число, меньшее (р - 1), причем такое, что aqmod p = 1;

х – некоторое число, меньшее q;

у = axmod р.

Кроме того, реализуемый ГОСТ Р 34.10-2012 алгоритм использует однонаправленную хеш-функцию Н(х), описание которой дается в стандарте ГОСТ Р 34.11-2012. Стандарт ГОСТ Р 34.11-2012 определяет хеш-функцию, основанную на использовании стандартного симметричного алгоритма шифрования ГОСТ 28147-89, частичная модификация которого опубликована в стандарте ГОСТ Р 34.12-2015.

 

m
m
m
m

 


                                         ЭЦП подделана                ЭЦП подлинная

 

Рис. 2.28. Обобщенная схема формирования и проверки электронной подписи (DA – секретный ключ, СА – открытый ключ)

 

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

1. Пользователь А генерирует случайное число k, причем k < q.

2. Пользователь А вычисляет значения r = (akmod p)mod p, s = (x·r + k(H(m)))mod p.

Если H(m)mod q = 0, то значение H(m)mod q принимают равным единице. Если r = 0, то выбирают другое значение k и начинают снова. Электронная подпись представляет собой два числа:

r mod 2256 и s mod 2256.

3. Пользователь А отправляет эти числа пользователю В.

4. Пользователь В проверяет полученную подпись, вычисляя:

v = H(m)q-2mod q,

z1 = (s·v)mod q,

z2 = ((q - r)v)mod q,

u = ((az1 · yz2)mod p)mod p.

Если u = r, то подпись считается верной, то есть соблюдаются два условия: подпись не подделана и в передаваемый документ после его подписания изменения не внесены.

В приложении 1 к рабочему конспекту лекций по разделу 1, часть 2, представлено краткое содержание Федерального закона от 6 апреля 2011 года № 63-ФЗ «Об электронной подписи».

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: