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

__________________________________________________________

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

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

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

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

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

__________________________________________________________________________________________

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

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

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

Лабораторная работа №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.

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

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

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

Справочно:

Сокращенное название (согласно федеральному закону № 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..

Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о 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 — Запускает программу;