Проверка цифровой подписи c# реализация. Федеральное агентство связи. Проверка ЭЦП на стороне получателя сообщения

Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о Bat файле, который можно будет использовать для автоматизации подписи электронных документов.

Для того что бы автоматизировать процесс подписывания электронных документов нам понадобится:
1) Крипто-ПРО CSP;
2) USB Ключ (например рутокен), вставленный в USB порт;
3) Блокнот (Notepad.exe);
4) Установленные сертификаты для Вашего ключа;

Камнем преткновения во всей этой истории является файл csptest.exe который находится в директории КриптоПро (по умолчанию C:\Program Files\Crypto Pro\CSP\csptest.exe ).

Откроем командную строку и выполним команду:

Cd C:\Program Files\Crypto Pro\CSP\ и csptest

Мы увидим все возможные параметры данного exe файла.

select from: -help print this help -noerrorwait do not wait for any key on error -notime do not show time elapsed -pause Wait for keyboard input after completion so that you may check memory and other resources usage -reboot Call DestroyCSProvider() of last used CSP at exit Services (cryptsrv*, HSM, etc) not affected -randinit Initialize system rng with srand(x) (default: time) -showrandinit Show system rng initialization value -stack Measure stack usage select from: -lowenc low level encryption/decryption test -sfenc simplified level message encryption/decryption test -cmslowsign CMS low level message signing test -cmssfsign CMS simplified level message signing/verifying test -lowsign low level message signing test -lowsignc low level message signing test with cycle Use "-lowsign -repeat NN" instead! -sfsign simplified level message signing/verifying test -ipsec ipsec tests -defprov default provider manipulations -testpack Pack of several tests -property certificate obtain/install property for secret key linking -certkey change provider name in certificate secret key link -context provider context tests -absorb absorbs all certs from containers with secret key linking -drvtst proxy-driver test -signtool SDK signtool analog -iis manage IIS -hsm manage HSM-client -rpcc RPC over SSL client -rpcs RPC over SSL server -oid oid info/set/get -passwd set/change password -keycopy copy container -keyset create (open) keyset -tlss start tls server -tlsc start tls client -tls TLS tests -prf PRF tests -hash hash test -makecert certificate issuing test -certprop show certificate properties -rc verify pkcs#10/certificate signature -cmsenclow CMS low level message encryption/decryption test -sfse simplified level message SignedAndEnveloped test -stress stress test for Acquire/ReleaseContext -ep public key export test -enum CSP parameters enumeration -cpenc CP/Crypto level (advapi32) encryption tests -setpp SetProvParam tests -perf Performance tests -speed Speed tests and optimal function mask setting -testcont Install/Uninstall test containers -install CSP installation information, clearing out CSP -version Print CSP version

Для того, что бы увидеть параметры той или иной глобальной опции, достаточно вызвать данный файл с этой опцией, например

Csptest -sfsign : -sign Sign data from input filename -verify Verify signature on data specified by input filename -help Print this help : -in Input filename to be signed or verified -out Output PKCS#7 filename -my Cert from CURRENT_USER store to process data -MY Cert from LOCAL_MACHINE store to process data -detached Deal with detached signature -add Add sender certificate to PKCS#7 -signature Detached signature file -alg Hash algorithm: SHA1, MD5, MD2, GOST - default -ask Acquire csp context using my cert (default: none) -base64 Input/output with base64DER conversion -addsigtime Add signing time attribute -cades_strict Strict signingCertificateV2 attribute generation -cades_disable Disable signingCertificateV2 attribute generation

Таким образом, чтобы подписать файл через cmd средствами csptest.exe нужно вызвать команду:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович

где:
-my — Указывает владельца ключа;
-in — Указывает какой файл нужно подписывать. Если файл находится не в папке с csptest то нужно указывать полный путь.;
-out — Указывает имя файла подписи;

Проверить подпись можно на сайте Госулсуг по данной ссылке .

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

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add

Если же нам нужна подпись в осоединенном формате, то добавим еще один параметр:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached

Примечание: Если подпись документа выполняется с ошибкой
Unable to open file
An error occurred in running the program.
.\signtsf.c:321:Cannot open input file.
Error number 0x2 (2).
Не удается найти указанный файл.

при вызове, как в последнем примере, и Вы уверены в правильности путей в параметре -in и -out, попробуйте создать подпись по первому примеру, а после выполнить команду с полным набором параметров!!!

Основную команду для подписи мы получили. Теперь немного упростим процедуру. Сделаем bat файл, при запуске которого будет подписывать файл Secret.txt, находящийся в тойже папке что и bat файл. Откроем блокнот и запишем слудующий код:

Chcp 1251 set CurPath=%cd% cd C:\Program Files\Crypto Pro\CSP call csptest -sfsign -sign -in %CurPath%\Secret.txt -out %CurPath%\Secret.txt.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached cd %CurPath%

Нажимаем «Файл» -> «Сохранить как» -> ЗадаемИмя с.bat -> «Сохранить»
Собсвенно и все. Для справки:
chcp 1251 — Задает кодировку для CMD. Необходимо для валидной обработки русских букв в коде;
set CurPath=%cd% — Сохраняет путь текущей директории CMD в переменную CurPath;
cd — Задает текущий путь CMD;
call — Запускает программу;

__________________________________________________________

Государственное образовательное Учреждение

Высшего профессионального образования

«САНКТ-ПЕТЕРБУРГСКИЙ

ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНАЦИЙ

им. проф. М.А. БОНЧ-БРУЕВИЧА»

__________________________________________________________________________________________

В.П. Грибачев

Учебное пособие к лабораторным работам по защите информации.

Санкт-Петербург

Лабораторная работа №1

Исследование криптоалгоритма шифрования RSA .

    Цель работы.

Исследование структуры алгоритма и методики практической реализации криптосистемы шифрования RSA.

Криптосистема RSA разработана Рональдом Райвестом, Ади Шамиром и Леонардом Адлеманом в 1972г. Система была названа по первым буквам их фамилий. Несмотря на сообщения последних лет об отдельных попытках успешного криптоанализа этого алгоритма, RSA по-прежнему остается одним из самых распространенных криптоалгоритмов. Поддержка RSA встроена в большинство распространенных браузеров (Firefox, IE), существует плагины RSA для Total Commandera и некоторых других ftp-клиентов. В нашей стране алгоритм не сертифицирован.

RSA относится к классу двухключевых криптосистем. Это означает, что алгоритм использует два ключа – открытый (Public) и секретный (Private).

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

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

Таким образом, криптостойкость RSA определяется используемым модулем.

Для обеспечения достаточной степени криптостойкости, в настоящее время рекомендуется выбирать длину RSA – модуля не менее 1024 бит, причем в связи с быстрым прогрессом компьютерной техники эта величина всё время растет.

    Схема алгоритма шифрования данных RSA

    Выбирают два случайных простых числа (p и q ) и вычисляют модуль:

    Вычисляется функция Эйлера: φ (n )=(p -1)(q -1);

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

    Вычисляют ключ дешифрования по формуле:

ed = 1 mod φ (n );

заметим, что d и n также должны быть взаимно простыми числами.

    Для шифрования необходимо разбить сообщение на блоки одинаковой длинны. Число двоичных разрядов в блоке должно соответствовать числу разрядов модуля n .

    Шифрование блока сообщения осуществляется по формуле:

C i =M i e mod n

    Дешифрование каждого блока c i осуществляется по формуле:

M i = C i d mod n

Выбор d в качестве открытого ключа, а e в качестве секретного совершенно условный. Оба ключа совершенно равноправны. В качестве открытого ключа можно взять е , а в качестве закрытого – d .

Пример шифрования:

    Выбираем р = 7 , q = 13 , модуль n = pq = 7·13 = 91;

    Вычисляем функцию Эйлера φ (n ) = (p -1)(q -1) = (7-1)(13-1) = 72;

    С учетом условий НОД(e , φ (n )) = 1 и 1 < e φ (n ), выбираем секретный ключ e = 5;

    Исходя из условия ed = 1 mod φ (n ), вычисляем парный секретный ключ d = 1 mod 72 , используя расширенный алгоритм Евклида, находим открытый ключ d = 29;

    Берем открытое сообшение m = 225367 и разбиваем его на блоки одинаковой длинны m 1 = 22, m 2 = 53, m 3 = 67.

    Шифруем: С 1 = 22 5 mod 91 = 29, C 2 = 53 5 mod 91 = 79, C 3 = 67 5 mod 91 = 58;

    Расшифровываем: M 1 = 29 29 mod 91 = 22, M 2 = 79 29 mod 91 = 53, M 3 = 58 29 mod 91 = 67;

    Методика выполнения работы.

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

      Цель и назначенные работы.

      Описание алгоритма работы криптосистемы RSA,

      Блок – схема алгоритма работы криптосистемы RSA,

      Выводы: преимущества и недостатки криптосистемы RSA.

Лабораторная работа №2.

Исследование электронной цифровой подписи (ЭЦП) RSA .

    Цель работы.

Исследование алгоритма электронной цифровой подписи (ЭЦП) RSA.

    Основные теоретические положения.

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

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

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

Существует достаточно большое разнообразие вариантов построения хеш – функций. Обычно они строятся на основе итеративной формулы, например, H i = h (H i -1 , M i ) , где в качестве функции h может быть взята некоторая легко вычисляемая функция шифрования.

На рисунке 1. изображена обобщенная схема ЭЦП на основе криптографического алгоритма RSA.

Алгоритм электронной цифровой подписи (ЭЦП) RSA

      Действия абонента – отправителя сообщения.

        Выбираются два больших и взаимно-простых числа p и q ;

        Вычисляем модуль RSA. n = p * q ;

        Определяем функцию Эйлера: φ (n )=(p -1)(q -1);

        Выбираем секретный ключ e с учетом условий: 1< e ≤φ(n ),

HOD(e , φ(n ))=1;

        Определяем открытый ключ d , с учетом условий: d < n , e * d ≡ 1(mod φ(n )).

      Формирование ЭЦП

        Вычисляем хеш сообщения М : m = h (M ).

        Шифруем хеш сообщения на секретном ключе абонента – отправителя и отправляем полученную ЭЦП, S = m e (mod n ), абоненту – получателю вместе с открытым текстом документа М .

      Проверка подлинности подписи на стороне абонента - получателя

        Расшифровываем ЭЦП S c помощью открытого ключа d и получаем таким образом, доступ к хеш – значению, присланному абонентом – отправителем,.

        Вычисляем хеш открытого документа m ’= h (M ).

        Сравниваем хеш – значения m и m’, и делаем вывод, что ЭЦП достоверна, если m = m’.

    Методика выполнения работы.

Задание на выполнение лабораторной работы выдается преподавателем после прохождения студентами собеседования по основам аутентификации данных и концепции формирования электронной цифровой подписи.

Порядок выполнения работы соответствует приведенному ниже практическому примеру формирования и проверки ЭЦП.

      Пример вычисления и проверки ЭЦП.

        Выбираются два больших и взаимно-простых числа 7 и 17;

        Вычисляем модуль RSA. n =7*17=119;

        Определяем функцию Эйлера: φ (n )=(7-1)(17-1)=96;

        Выбираем секретный ключ e с учетом условий: 1< e ≤φ(n ), HOD(e , φ(n ))=1; e = 11;

        Определяем открытый ключ d , с учетом условий: d < n , e * d ≡ 1(mod φ(n )); d =35;

        В качестве открытого сообщения возъмем некоторую случайную последовательность чисел. М = 139 . Разобъем его на блоки. M 1 = 1, M 2 = 3, M 3 = 9;

        Для вычисления хеш-значения применим формулу вычисления хеш – функции. Для упрощения расчетов предположим, что инициализационный вектор хеш - функции H 0 =5, а в качестве функции шифрования h будем использовать тот же RSA.

        Вычислим хеш сообщения. H 1 =(H 0 + M 1 ) e mod n =(5+1) 11 mod 119=90; H 2 =(H 1 + M 2 ) e mod n =(90+3) 11 mod 119=53; H 3 = (H 2 + M 3 ) e mod n =(53+9) 11 mod 119=97; Таким образом, хеш данного открытого сообщения m = 97;

        Создаем ЭЦП путем зашифровывания полученного хеш – значения. S = H e mod n = 97 11 mod 119 = 6;

        Передаем по каналу связи открытый ключ d , текст сообщения М , модуль n и электронную цифровую подпись S.

        Проверка ЭЦП на стороне получателя сообщения.

        На стороне абонента – получателя подписанного сообщения с помощью открытого ключа получаем хеш – значение переданного документа. m ´ = S d mod n =6 35 mod 119 =97;

        Вычисляем хеш переданного открытого сообщения, аналогично тому, как это значение вычислялось на стороне абонента – отправителя. H 1 =(H 0 + M 1 ) e mod n =(5+1) 11 mod 119=90; H 2 =(H 1 + M 2 ) e mod n =(90+3) 11 mod 119=53; H 3 = (H 2 + M 3 ) e mod n =(53+9) 11 mod 119=97; m = 97;

        Сравниваем хеш-значение, вычисленное по переданному открытому документу и хеш-значение, извлеченное из ЭЦП. m = m ´ =97. Значение вычисленного хеша совпадает со значением хеша, полученным из ЭЦП, следовательно, получатель сообщения делает вывод, что полученное сообщение является подлинным.

      Цель и назначение работы.

      Описание алгоритма формирования ЭЦП RSA.

      Блок – схема алгоритма формирования ЭЦП RSA.

      Выводы: преимущества и недостатки ЭЦП RSA.

12 августа 2010 г. 12:24

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

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

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

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

Рассмотрение начнем с S/MIME. Сделаем это, во-первых, потому, что данный формат, как я уже говорил, существенно более распространен, а главное: он поддерживается на уровне Windows (а Windows, как ни крути, самая распространенная операционная система), а также многими программами, которые под Windows работают. Ну а во-вторых – данный формат с юридической точки зрения позволяет (в рамках нашего государства, естественно) существенно больше.

Какой самый простой и распространенный способ передать информацию другому человеку? Конечно же, это – электронная почта. Берем письмо, цепляем к нему файлы и отправляем. И тут нам с цифровой подписью в формате S/MIME особенно везет: все распространенные почтовые клиенты умеют как принимать сообщения с цифровой подписью, так и отправлять их. При этом подписывается все письмо целиком, включая присоединенные к письму файлы.

Рис. 1. Страница центра управления безопасностью Outlook 2007

И все бы хорошо, вот только для того, чтобы отправить письмо с подписью надо иметь программу, которая осуществляет работу с криптографией (криптопровайдер или cryptographic service provider, CSP), и сертификат определенного назначения и связанный с ним закрытый ключ. Назначение сертификата – это та область, в которой он может быть использован. Подробнее о назначениях сертификатов мы поговорим позже, а для текущей задачи нам, собственно говоря, нужен сертификат для защиты электронной почты (e-mail protection certificate).

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

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

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

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

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

А заканчивается она самоподписанным сертификатом удостоверяющего центра. Такой сертификат подписан закрытым ключом, связанным с ним же. Приводя аналогию, это как справка о занимаемой должности и зарплате генерального директора. «Данной справкой Иванов И.И., генеральный директор ООО «Одуванчик » удостоверяет, что Иванов И.И. занимает в данной организации должность генерального директора и получает зарплату в размере ####### рублей ». Чтобы данной справке верить, вы должны верить самой фирме ООО «Одуванчик», причем вера эта не подкрепляется никакой третьей стороной.

Так же и с корневыми сертификатами (т.е. сертификатами удостоверяющих центров). Самоподписанные сертификаты тех удостоверяющих центров, которым вы доверяете, должны лежать в специальном хранилище в системе, которое называется «Доверенные корневые центры сертификации». Но перед тем, как попасть туда, их надо как-то получить. И это – самое слабое звено в системе. Сам самоподписанный сертификат подделать, так же, как и пользовательский, не получится, зато замечательно получится подменить при передаче. Значит, передача должна осуществляться по защищенному от подмены каналу.

Чтобы избежать, по возможности, подобных трудностей, Microsoft выбрала несколько удостоверяющих центров и включила их сертификаты прямо в установку Windows (это Thawte , VeriSign и другие). Они уже есть у вас на компьютере и их не надо ниоткуда получать. А значит и подменить их можно только, если у вас на компьютере живет троян (или у нехорошего человека должен быть администраторский доступ к вашему компьютеру), а говорить об использовании цифровой подписи в таком случае несколько бессмысленно. Кроме того, эти удостоверяющие центры широко известны и много кем используемы, и простая подмена их сертификатов приведет к множеству ошибок в работе, скажем, сайтов, чьи сертификаты выданы этими удостоверяющими центрами, что, в свою очередь, достаточно быстро наведет на мысль о том, что что-то здесь не чисто.

Кстати, о самоподписанных сертификатах: такой сертификат можно создать и для собственного пользования, а не только для удостоверяющего центра. Естественно, такой сертификат наследует все минусы сертификатов подобного типа, но для проверки того, стоит ли использовать цифровую подпись в переписке, или лучше так обойтись он отлично подходит. Для создания подобных сертификатов можно использовать программу, входящую в состав средств Microsoft Office (Цифровой сертификат для проектов VBA), или же, для лучшей настройки назначения и прочих полей данного сертификата, программу стороннего производителя, например КриптоАрм, который даже в бесплатной своей версии позволяет такие сертификаты создавать.

Рис. 2. Просмотр самоподписанного сертификата средствами системы Windows

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

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

Следуя уже использованной последовательности описания, начнем с программы, с которой вы и будете контактировать больше всего: почтовым клиентом. Использование чистого Outlook"а здесь уже невозможно, по причине незнания им о стандарте OpenPGP, а значит надо либо переходить на клиент, который стандарт знает, либо использовать плагины к Outlook"у, или же даже осуществлять работу с подписями и шифрованием через копирование информации во внешние программы. Как пример почтовых клиентов, работающих со стандартом OpenPGP, можно привести Mozilla Thunderbird к которому, кстати, все равно нужен плагин или же The Bat! , умеющий в версии Profissional работать со стандартом OpenPGP сам по себе.

Рис. 3. Главный экран почтового клиента Mozilla Thunderbird

Рис. 4. Главный экран почтового клиента The Bat!

Плагины, необходимые для работы со стандартом OpenPGP в почте, также можно найти как платные, так и бесплатные. Платные плагины поставляются вместе с платными же версиями программы PGP , а как пример бесплатного плагина можно привести плагин Enigmail для все того же Thunderbird .

Рис. 5. Дополнения, появляющиеся в почтовом клиенте после установки Enigmail

Криптопровайдеры же здесь все так или иначе бесплатные. Можно использовать криптопровайдер, поставляющийся в составе даже бесплатной версии программы PGP , а можно использовать GnuPG .

Рис. 6. Страница управления ключами GnuPG

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

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

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

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

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

Все, как и в случае S/MIME, вышеописанного набора действий вам уже хватит для достижения поставленной нами цели: обмена подписанной и зашифрованной почтой.

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

(4,00 - оценили 18 чел.)

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

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

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

Справочно:

Сокращенное название (согласно федеральному закону № 63) — ЭП, но чаще используют устаревшую аббревиатуру ЭЦП (электронная цифровая подпись). Это, например, облегчает взаимодействие с поисковиками в интернете, так как ЭП может также означать электрическую плиту, электровоз пассажирский и т.д.

Согласно законодательству РФ, квалифицированная электронная подпись — это эквивалент подписи, проставляемой «от руки», обладающий полной юридической силой. Помимо квалифицированной в России представлены еще два вида ЭЦП:

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

— простая — не придает подписанному документу юридическую значимость до заключения дополнительных соглашений между подписантами о правилах применения и признания ЭЦП и без соблюдении законодательно закрепленных условий по ее использованию (простая электронная подпись должна содержаться в самом документе, ее ключ применяться в соответствии с требованиями информационной системы, где она используется, и прочее согласно ФЗ-63, ст.9), не гарантирует его неизменность с момента подписания, позволяет подтвердить авторство. Ее применение не допускается в случаях, связанных с государственной тайной.

Возможности электронной подписи

Физическим лицам ЭЦП обеспечивает удаленное взаимодействие с государственными, учебными, медицинскими и прочими информационными системами через интернет.

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

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

Что означает фраза «клиенту выдана электронная подпись»? Как выглядит ЭЦП?

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

Справочно:

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

Flash-носитель — это компактный носитель данных, в состав которого входит flash-память и адаптер (usb-флешка).

Токен — это устройство, корпус которого аналогичен корпусу usb-флешки, но карта памяти защищена паролем. На токене записана информация для создания ЭЦП. Для работы с ним необходимо подключение к usb-разъему компьютера и введения пароля.

Smart-карта — это пластиковая карта, позволяющая проводить криптографические операции за счет встроенной в нее микросхемы.

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

Как же следует понимать фразу «выдана электронная подпись», которая прочно закрепилась в разговорной речи участников рынка? Из чего состоит электронная подпись?

Выданная электронная подпись состоит из 3 элементов:

1 - средство электронной подписи, то есть необходимое для реализации набора криптографических алгоритмов и функций техническое средство. Это может быть либо устанавливаемый на компьютер криптопровайдер (КриптоПро CSP, ViPNet CSP), либо самостоятельный токен со встроенным криптопровайдером (Рутокен ЭЦП, JaCarta ГОСТ), либо «электронное облако». Подробнее прочитать о технологиях ЭЦП, связанных с использованием «электронного облака», можно будет в следующей статье Единого портала Электронной подписи.

Справочно:

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

Важно: токен и средство квалифицированной ЭЦП на нем должны быть сертифицированы ФСБ РФ в соответствии с требованиями федерального закона № 63.

2 - ключевая пара, которая представляет из себя два обезличенных набора байт, сформированных средством электронной подписи. Первый из них - ключ электронной подписи, который называют «закрытым». Он используется для формирования самой подписи и должен храниться в секрете. Размещение «закрытого» ключа на компьютере и flash-носителе крайне небезопасно, на токене — отчасти небезопасно, на токене/smart-карте/sim-карте в неизвлекаемом виде — наиболее безопасно. Второй — ключ проверки электронной подписи, который называют «открытым». Он не содержится в тайне, однозначно привязан к «закрытому» ключу и необходим, чтобы любой желающий мог проверить корректность электронной подписи.

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

В соответствии с законодательством РФ различают:

— «сертификат ключа проверки электронной подписи» формируется для неквалифицированной ЭЦП и может быть выдан удостоверяющим центром;

— «квалифицированный сертификат ключа проверки электронной подписи» формируется для квалифицированной ЭЦП и может быть выдан только аккредитованным Министерством связи и массовых коммуникаций УЦ.

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

Подводя итог вышеизложенному, фраза «клиенту выдана электронная подпись» состоит из трех слагаемых:

  1. Клиент приобрел средство электронной подписи.
  2. Он получил «открытый» и «закрытый» ключ, с помощью которых формируется и проверяется ЭЦП.
  3. УЦ выдал клиенту сертификат, подтверждающий, что «открытый» ключ из ключевой пары принадлежит именно этому человеку.

Вопрос безопасности

Требуемые свойства подписываемых документов:

  • целостность;
  • достоверность;
  • аутентичность (подлинность; «неотрекаемость» от авторства информации).

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

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

Примечание: при приобретении токена важно поменять заводской пароль, таким образом, никто не сможет получить доступ к механизму ЭЦП кроме ее владельца.

Как подписать файл электронной подписью?

Для подписания файла ЭЦП нужно выполнить несколько шагов. В качестве примера рассмотрим, как поставить квалифицированную электронную подпись на свидетельство на товарный знак Единого портала Электронной подписи в формате.pdf. Нужно:

1. Кликнуть на документ правой кнопкой мышки и выбрать криптопровайдер (в данном случае КриптоАРМ) и графу «Подписать».

2. Пройти путь в диалоговых окнах криптопровайдера:

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

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

В блоке «Свойства подписи» выбираете «Подписано», при необходимости можно добавить комментарий. Остальные поля можно исключить/выбрать по желанию.

Из хранилища сертификатов выбираете нужный.

После проверки правильности поля «Владелец сертификата», нажимайте кнопку «Далее».

В данном диалоговом окне проводится финальная проверка данных, необходимых для создания электронной подписи, а затем после клика на кнопку «Готово» должно всплыть следующее сообщение:

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

Итак, как же выглядит электронная подпись на документе?

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

Фрагмент рабочего стола. Слева: файл, подписанный ЭП, справа: криптопровайдер (например, КриптоАРМ).

Визуализация электронной подписи в самом документе при его открытии не предусмотрена ввиду того, что она является реквизитом. Но есть исключения, например, электронная подпись ФНС при получении выписки из ЕГРЮЛ/ЕГРИП через онлайн сервис условно отображается на самом документе. Скриншот можно найти по

Но как же в итоге «выглядит» ЭЦП , вернее, как факт подписания обозначается в документе?

Открыв через криптопровайдер окно «Управление подписанными данными», можно увидеть информацию о файле и подписи.

При нажатии на кнопку «Посмотреть» появляется окно, содержащее информацию о подписи и сертификате.

Последний скриншот наглядно демонстрирует как выглядит ЭЦП на документе «изнутри».

Приобрести электронную подпись можно по .

Задавайте другие вопросы по теме статьи в комментариях, эксперты Единого портала Электронной подписи обязательно ответят Вам.

Статья подготовлена редакцией Единого портала Электронной подписи сайт с использованием материалов компании SafeTech.

При полном или частичном использовании материала гиперссылка на www..