Усиленная электронная подпись реализует в едином комплексе следующие возможности:
• удостоверяет, что подписанный текст исходит от лица, поставившего подпись;
• не дает самому этому лицу возможности отказаться от обязательств, связанных с подписанным текстом;
• гарантирует целостность подписанного текста (то есть позволяет установить факт отсутствия внесений изменений в документ после того, как он был подписан ЭП).
Система усиленной ЭП включает две процедуры: 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-ФЗ «Об электронной подписи».