формирование эцп в формате xml какой пароль
Смешанный (клиент/сервер) алгоритм формирования цифровой подписи xmlDsig на основе CryptoPro Browser Plugin
На хабре уже была обзорная статья о механизмах создания ЭЦП в браузере, где было рассказано о связке Крипто-Про CSP +их же плагин к браузерам. Как там было сказано, предварительные требования для работы — это наличие CryptoPro CSP на компьютере и установка сертификата, которым собираемся подписывать. Вариант вполне рабочий, к тому же в версии 1.05.1418 плагина добавлена работа с подписью XMLDsig. Если есть возможность гонять файлы на клиент и обратно, то для того, чтобы подписать документ на клиенте, достаточно почитать КриптоПрошную справку. Все делается на JavaScript вызовом пары методов.
Однако, что если файлы лежат на сервере и хочется минимизировать трафик и подписывать их, не гоняя на клиент целиком?
Интересно?
Итак, клиент/серверный алгоритм формирования цифровой подписи XMLDSig.
Информацию об спецификации по XMLDsig можно найти по адресу тут.
Я буду рассматривать формирование enveloping signature (обворачивающей подписи) для xml-документа.
Простой пример подписанного xml:
Чтобы лучше понять, что из себя представляет enveloping signature, предлагаю краткий перевод описания тэгов из спецификации:
Итак, исходные данные:
Код на C#, который заработал в моем случае:
Шаг №3.
Берем хэш от канокализированного SignedInfo.
Тут возможны 2 варианта-серверный и клиентский.
3.1) Взятие хэша на клиенте. Именно его я использую, так что опишу его первым:
На сервере кодируем канокализированный SignedInfo в base64
C#:
и отправляем эти данные на клиент.
На клиенте берем хэш с помощь криптопрошного плагина
JavaScript:
Посмотреть хэш можно с помощью hashObject.Value
3.2)Считаем хэш на сервере и отправляем на клиент. Этот вариант у меня так и не заработал, но честно сказать я особо и не пытался.
Возможно хэш надо преобразовывать в base64.
Отправляем на клиент, там используем
Именно на методе hashObject.SetHashValue у меня падала ошибка. Разбираться я не стал, но криптопрошном форуме говорят, что можно как-то заставить ее работать.
Если соберетесь реализовывать серверный алгоритм генерации хэша, то вот пара полезных советов:
1) Посчитайте хэш на клиенте и на сервере от пустой строки. он должен совпадать, это значит ваши алгоритмы одинаковые.
Для GOST3411 это следующие значения:
base64: mB5fPKMMhBSHgw+E+0M+E6wRAVabnBNYSsSDI0zWVsA=
hex: 98 1e 5f 3c a3 0c 84 14 87 83 0f 84 fb 43 3e 13 ac 11 01 56 9b 9c 13 58 4a c4 83 23 4c d6 56 c0
2) Добейтесь, чтобы у вас совпадали хэши для произвольных данных, генерируемые на клиенте и на сервере.
После этого можно пересылать клиенту только хэш от SignedInfo вместо всего SignedInfo.
Шаг №4.(клиент)
Генерируем SignatureValue и отсылаем на сервер SignatureValue и информацию о сертификате
Возвращем на сервер binReversedSignatureString и certValue.
Код функций из utils не выкладываю. Мне его подсказали на форуме криптоПро и его можно посмотреть в этой теме
Шаг №5. (сервер)
Заменяем в сгенерированном на шаге №1 тэге Signature значения тэгов SignatureValue и X509Certificate значениями, полученными с клиента
Шаг №6. (сервер)
Верифицируем карточку.
Если верификация прошла успешно, то все хорошо. В результате мы получаем на сервере документ, подписанный клиентским ключом, не гоняя туда-обратно сам файл.
Примечание: если работа ведется с документом, уже содержащим подписи, то их надо отсоединить от документа до шага №1 и присоединить к документу обратно после шага №6
В заключение хочется сказать большое спасибо за помощь в нахождении алгоритма участникам форума КриптоПро dmishin и Fomich.
Без их советов я бы плюхался с этим в разы дольше.
Электронная цифровая подпись. Формат XML-ЭЦП
Электронная цифровая подпись. Формат XML-ЭЦП
Настоящий документ определяет требования к формату Электронной цифровой подписи, используемой в Системе. Электронная цифровая подпись в формате XMLdsig (далее XML-ЭЦП) используется для представления электронной цифровой подписи в документах формата XML. XML-ЭЦП формируется в рамках Рекомендации W3C «XML-Signature Syntax and Processing» от 01.01.2001. На формат подписи накладываются дополнительные ограничения, приводимые в настоящем документе.
Ссылки на используемые стандарты приведены в Приложении№8 к настоящим Правилам.
Здесь и далее термины «элемент» и «узел» являются синонимами.
1. Формат XML-ЭЦП для подписи одного элемента XML-документа (далее Формат)
2. Требования к подписываемому XML-Документу
2.1. Документ не должен содержать иных элементов с именем Signature в пространстве имен «http://www. w3.org/2000/09/xmldsig#», кроме элементов, соответствующих настоящему Формату.
3. Пояснения к формату и требования к документу:
3.1. Значением XML-ЭЦП является XML-элемент в формате соответствующем п.1 настоящего Приложения.
3.2. Значение XML-ЭЦП включается внутрь подписываемого элемента XML-документа, который определяется как элемент, на который ссылается первый элемент «SignedInfo/Reference» в элементе «Signature/SignedInfo». При этом Значение XML-ЭЦП должно являться дочерним узлом подписываемого элемента. При вычислении и проверке электронной цифровой подписи рассматривается подпись указанного элемента документа, исключая Значение XML-ЭЦП и всех следующих за ним «соседних» элементов.
3.3. Все компоненты значения XML-ЭЦП (элементы, атрибуты и их значения) должны в точности повторять приведенный Формат.
3.4. Значения, заключенные в фигурные скобки, являются переменными величинами и вычисляются в процессе создания XML-ЭЦП.
3.5. Для представления расширенных свойств XML-ЭЦП используется пространство имен «http://cabinet. *****/schema/xmldsigext-frsd/rel-1/».
3.6. Значения атрибутов, начинающиеся со строки вида «http://cabinet. *****/info/OID/», являются ссылками на интернет-страницы с описанием алгоритма, применяемого для получения соответствующего значения элемента XML-ЭЦП. Остальная часть строки значения является уникальным OID идентификатором алгоритма.
3.7. Значения атрибута «Id» XML-ЭЦП должны формироваться в соответствии со стандартами X.667 и RFC 4122.
3.8. Значения атрибута «Id» подписываемого XML-документа должны быть уникальными в рамках всего документа и не совпадать со значениями п.3.7 атрибута «Id» других элементов документа.
3.9. В элемент SignatureProperty не допускается включение иных элементов, кроме принадлежащих пространству имен «http://cabinet. *****/schema/xmldsigext-frsd/rel-1/».
3.10. Дата и время указываются в формате ГГГГ-ММ-ДДTчч:мм:ссZ, где ГГГГ – год, ММ – месяц (01–12), ДД – день (01–31), чч – час (00–23), мм – минута (00–59), сс – секунда (00–59). Указывается универсальное координированное время формирования подписи.
3.11. Значением элемента «X509Certificate» является Сертификат лица, подписавшего элемент документа, закодированный в кодировке Base64 (RFC 3548), полученный из файла сертификата X.509 в кодировке DER (стандарт ITU-T X.509, RFC 2459).
3.12. Значениями атрибутов «URI» и «Target», элементов XML-ЭЦП, являются ссылки на элементы подписываемого документа и на элементы значения XML-ЭЦП. Значения атрибутов «URI» могут быть представлены в следующих вариантах:
3.12.1. Форма «#xpointer(//*[@uuid=’ ‘])» обозначает ссылку на подписываемый элемент XML-документа, имеющего атрибут «uuid» со значением равным «Идентификатор подписываемого элемента». В документе должен быть только один элемент, отвечающий данному условию поиска.
3.12.2. Форма «# » обозначает ссылку на элемент значения XML-ЭЦП, содержащий атрибут «Id», значение которого равно « ».
Пароль к сертификату электронной подписи: как его узнать, если забыл, как сменить, стандартные пинкоды
Работа с ЭЦП требует установление определённой защиты. Поэтому первичной установке в систему требуется ввести первоначальный пароль к сертификату электронной подписи. Он является персональным.
Пароль к рутокену и программе необходим для получения доступа. Потом, если установить настройки, его повторно вводить не надо.
Что такое пароль к сертификату ЭП
ЭЦП хранится на USB-носителе, который разбит на части, при этом место, где храниться программа и ключ, имеют защиту. Защита устанавливается с помощью специального персонального пароля.
Таким образом, пароль к сертификату ЭЦП представляет собой набор символом, который необходимо ввести, чтобы получить доступ к самой подписи. Также он открывает путь к программе работы с ЭЦП, например, КриптоПро CSP.
Данный пароль является обязательным при первичном установлении сертификата на компьютере. В дальнейшем можно настроить так, чтобы запрос не производился. Но это только доступно в отношении одного компьютера. При установке на другой ввести пароль заново придётся.
Большинство удостоверяющих центров устанавливают стандартные пароли, которые в дальнейшем каждый владелец подписи сможет сменить на личный. Они формируются автоматически и представляют заранее известный набор цифр. Удобно тем, что его можно узнать, если вдруг забудешь.
Некоторые удостоверяющие центры предпочитают генерировать случайный набор чисел. Либо могут использовать свой пароль.
Правила использования персонального пароля
Пароль обеспечивает доступ к имеющейся электронной подписи. Если им всё-таким завладели злоумышленники, при этом имея доступ к носителю с ЭЦП, они могут получить доступ к банковским счетам фирмы, а также к личным кабинетам различных государственных ведомств, через которые они могут, к примеру, оформить продажу компании.
Поэтому, первым делом после того, как произошло получение нового сертификата, необходимо уточнить — какой пин-код установлен на ключевом носителе.
Если это стандартный заводской код, то крайне желательно его сменить на новый. Кроме пин-кода пользователя целесообразно сразу менять и пин-код администратора.
Но если новый код по какой-либо причине будет утерян либо забыт, произвести процедуру сброса уже не удастся — необходимо будет выпускать новую ЭЦП и приобретать новый ключевой носитель.
При создании нового пароля нужно учитывать следующее:
Как узнать ранее введенный пароль?
Если пользователь забыл пароль, который был введен при добавлении сертификата в систему, он может узнать его при помощи программы «csptest».
Для этого необходимо сделать по шагам следующие действия:
Программа отобразит сервисную информацию, среди которой будет и пин код для контейнера криптопро.
Что делать если забыл пароль
Если пользователь забыл пароль от носителя либо сертификата, то вариантов действия где взять пин-код у него несколько:
Если копии данного сертификата не существует, а сбросить пин-код на носитель не представляется возможным, то необходимо обращаться в удостоверяющий центр для оформления новой ЭЦП.
Как узнать пин код криптопро csp
В данном случае необходимо понять, какой именно пин-код запрашивает система. Это может быть как пароль от контейнера ключа, уже установленный на компьютер, так и пин-код непосредственно от ключевого носителя.
Если необходимо узнать пароль от ключевого контейнера, какой уже присутствует в системе, то нужно воспользоваться программой «csptest», которая входит в стандартную поставку системы «Крипто Про».
Если же необходим пин-код от носителя, то его узнать никак нельзя. В лучшем случае пароль можно сбросить до заводского при помощи панели управления «Крипто Про».
Но и этот шаг сработает только тогда, когда не менялся административный пин-код на носителе. Если он также был изменен и неизвестен, то произвести его восстановление стандартными средствами невозможно.
На саму панель управления криптопро пароль по умолчанию не устанавливается.
Стандартные пароли и пинкоды
Для каждого типа ключевых носителей существуют свои стандартные пин-коды, которые присваиваются еще на заводе. Чаще всего удостоверяющие центры не меняют их, оставляя такое решение на усмотрение конечного пользователя.
Вид пароля | Рутокен | Етокен | Jacarta | Jacarta SE (для ЕГАИС) |
Стандартный | 12345678 | |||
Пользовательский | 12345678 | 1234567890 | 11111111 | |
Администратора | 87654321 | 00000000 |
Чаще всего данные пароли вводятся при первом подключении ключевых носителей к компьютеру и установки сертификата в систему. Далее, пользователь в любое время может сменить стандартный пин-код на свой собственный, используя актуальную версию панели управления «Крипто Про».
В некоторых удостоверяющих центрах сразу устанавливают свой пароль на носитель, обычно создавая его при помощи генератора случайных чисел.
Новый пин-код передают владельцу при выдаче токена на руки. В этом случае очень важно не потерять его и не сообщать посторонним лицам.
Смена пароля по пин-коду администратора
На клюxевых носителях USB-формата присутствует возможность произвести сброс пароля доступа к токену при использовании панели управления системы «Крипто Про».
Однако после того, как пароль будет сброшен, необходимо будет произвести переустановку всех сертификатов, которые находятся на данном носителе.
Для разблокировки необходимо выполнить следующие шаги:
После этого к рутокену будет применен стандартный пин-код. Однако данная последовательность действий сработает только в том случае, если административный пин-код на нем не изменялся.
Однако некоторые удостоверяющие центры в целях защиты данных меняют этот код перед передачей носителя клиенту. Поэтому, необходимо предварительно уточнять эту информацию.
Указанная процедура не ответит на вопрос о том, какой пин-код в настоящее время установлен на носителе. Она даст возможность обнулить его до стандартного и затем сменить на свой.
Что делать, если забыл пароль к сертификату электронной подписи?
Владельцы электронной подписи часто не могут вспомнить пароль от нее. Ситуация грустная, но не безвыходная. Как восстановить доступ к подписи — читайте в статье.
Пароль или пин-код электронной подписи (ЭП или ЭЦП) схож с пин-кодом банковской карты. Он защищает подпись от мошенников, его нужно запомнить или записать на листочек и хранить подальше от самой подписи. Но, в отличие от пин-кода карточки, пароль ЭП редко используют и часто забывают.
Возьмем экономиста Василия. Он получил электронную подпись, установил ее на компьютер, задал пароль, поставил галочку «Запомнить» — и все, больше никогда эту комбинацию не вводил. Но через полгода Василий переехал в другой кабинет и сел за новый компьютер. Попытался установить на него свою подпись, но не получилось — он забыл пароль электронной подписи, а листочек, на который записывал символы, потерял.
В своей беде Василий не одинок — многие владельцы ЭП не могут вспомнить или не знают, где взять пароль электронной подписи. В этой статье расскажем, что делать в подобной ситуации и когда нужно получать новую ЭП.
Что такое пароль и пин-код электронной подписи
На электронную подпись устанавливают один из типов защиты: пароль или пин-код. Разберемся, чем они отличаются.
Пароль от контейнера электронной подписи
Пароль используют для подписи, сохраненной в память компьютера. Он защищает контейнер ЭП — папку с файлами подписи: сертификатом, закрытым и открытым ключами.
Впервые с паролем владелец ЭП встречается, когда выпускает сертификат ЭП и записывает его в реестр компьютера или на обычную флешку (не токен). Придумать пароль нужно самостоятельно — при записи программа КриптоПро CSP покажет окошко, в которое нужно ввести комбинацию чисел, символов и латинских и русских букв.
Далее этот пароль будет запрашиваться при установке подписи на компьютер, ее копировании и при каждом использовании — подписании документов, работе на электронной торговой площадке или входе в сервисы. Если, конечно, не установить галочку «Запомнить пароль».
Пин-код от токена электронной подписи
Пин-код используется для электронной подписи, которая записана на носитель в виде usb-флешки — на токен. Пин защищает токен, поэтому, если мошенники украдут носитель ЭП, то самой подписью они воспользоваться не смогут.
Впервые владелец ЭП должен ввести пин-код при выпуске подписи — когда ее записывают на токен. Если носитель новый, то нужно ввести «заводское» стандартное значение, например, 12345678 для Рутокена. «Заводское» значение лучше сразу изменить на собственное, чтобы его не смогли подобрать злоумышленники.
После этого пин-код понадобится вводить, чтобы установить сертификат подписи на компьютер, использовать и копировать ЭП, работать с ней за новым компьютером. Чтобы не вводить комбинацию каждый раз, можно нажать галочку «Запомнить пароль». Главное в таком случае самим не забыть последовательность символов.
Как восстановить пароль электронной подписи
Если пароль и пин-код подписи не удается вспомнить, то восстановить его не получится. В этом не поможет даже удостоверяющий центр, выпустивший сертификат, — он не хранит пароли ЭП. Поэтому нужно пытаться вспомнить заветную комбинацию или подобрать ее.
Забыл пароль подписи
Пароль от контейнера ЭП можно вводить неограниченное количество раз. Поэтому можно спокойно подбирать к подписи все знакомые комбинации: важные даты или код из смс, которую при выпуске сертификата присылал удостоверяющий центр. Возможно, именно этот код случайно установили на контейнер в качестве защиты.
Если подобрать пароль не удается, то доступ к сертификату можно вернуть в некоторых случаях. Если раньше пароль сохраняли на компьютере — нажимали галочку «Запомнить», то иногда такой контейнер можно скопировать без ввода пароля. Попытайтесь скопировать папку со всеми файлами подписи на другое устройство или токен. Если в процессе у вас не спросят пароль, то можно продолжать работать с ЭП.
Если не получается ни скопировать подпись, ни вспомнить пароль ЭЦП, то остается только одно — получить новый сертификат ЭП. Для этого нужно отозвать старый в удостоверяющем центре и подать документы и заявку на выпуск нового. На контейнер новой подписи стоит установить пароль, который легко запомнить, но который не угадают мошенники.
Забыл пин-код токена
Восстановить забытый пин-код токена тоже невозможно. Именно из-за этого токен — надежный носитель ЭП: если его украдут мошенники, то пин-код защитит подпись от них.
Однако для владельца ЭП есть два способа, которые помогут подобрать нужную комбинацию.
Решение №1. Заводской пароль.
По умолчанию на новом токене установлен стандартный пин-код от производителя. Можно ввести его, чтобы вернуть доступ к сертификату ЭП. Для разных носителей подойдут разные значения:
Если «заводская» комбинация к токену не подходит, значит ее сменили при записи сертификата. Тогда вернуть доступ к ЭП можно только одним способом — подобрать правильные символы.
Решение №2. Подбор пин-кода и права администратора
На то, чтобы подобрать пин-код к токену, есть десять попыток. После десятого неверного ввода символов заблокируется.
Иногда количество попыток ввода можно увеличить. Для этого нужно зайти на токен в качестве администратора и разблокировать пин-код:
Также, если пин-код администратора известен, то можно сбросить попытки ввода другим способом — через КриптоПро CSP:
После разблокировки счетчик попыток ввода сбросится. Но даже тогда, пока правильную комбинацию к токену не введут, доступ будет закрыт и использовать подпись не получится.
Если вспомнить или изменить нужную комбинацию не удалось, придется получать новый сертификат подписи в УЦ: отозвать старый сертификат и получить новый. Токен можно использовать старый — можете отформатировать носитель, тогда старый пин-код и сертификат удалятся. Отметим, что отформатировать токены марок Рутокен, eToken, JaCarta LT можно без прав администратора. Но для форматирования носителя Jacarta SE нужно знать администраторский пин.
При записи подписи на новый токен советуем поменять стандартный пин-код носителя на собственный. Это, конечно, может привести к тому, что комбинация вновь потеряется. Но лучше получить новый сертификат, чем пострадать от мошенников, которые смогли взломать «заводское» значение на токене и подписали украденной ЭП важные документы.
Решено: Как установить ЭЦП в хранилище сертификатов Windows (для браузеров Internet Explorer, Google Chrome, Opera)
[nx_heading style=»underlined» heading_tag=»h2″ size=»32″]Как установить ЭЦП вручную[/nx_heading]
Инструкция позволяющая установить ЭЦП в браузеры Internet Explorer, Google Chrome, Opera — вручную.
Данные браузеры, а так же различные «поделки» от Mail.ru (браузер «Амиго», «Интернет») и Yandex («Яндекс.Браузер») основанные на Google Chrome, не имеют своего хранилища сертификатов, поэтому в работе используют хранилище сертификатов Windows. Процедура установки сертификатов ЭЦП для всех этих браузеров будет одинакова.
[nx_row][nx_column size=»1/6″]
ВНИМАНИЕ:
[/nx_column]
Если вам нужно установить ЭЦП в браузер Mozilla Firefox, воспользуйтесь этой инструкцией.[/nx_column][/nx_row]
Пример показан на ОС Windows 8 x64, но действия одинаковы на всех версиях Windows.
Дата обновления статьи: 17.10.2016
Для начала установки нам понадобится папка с ключами Электронно-цифровой подписи полученной в ЦОН.
Если вы Физическое Лицо (ФЛ) или Индивидуальный Предприниматель (ИП) в вашей папке с ключами будут лежать два файла вида:
Если вы представляете Юридическое Лицо (ЮЛ) в вашей папке с ключами будут лежать два файла вида:
Если же вы устанавливаете налоговый ключ (полученный в Налоговом Комитете), у вас имеется всего один ключ вида РНН_БИН.p12, устанавливаете именно его.
По этому единственному ключу выполняется и вход, и отправка форм налоговой отчетности.
[nx_heading style=»underlined» heading_tag=»h3″ size=»28″]Процесс ручной установки ЭЦП[/nx_heading]
Открываем папку с ЭЦП, щелкаем по файлу AUTH_RSA_ два раза левой клавишей мыши
Изображение 1. Файлы ЭЦП полученные в ЦОН
Выбираем Текущий пользователь и нажимаем Далее
Изображение 2. Начало процедуры установки ключей
В данном окне тоже нажимаем Далее
Изображение 3. Установка ключей ЭЦП
В строке ввода Пароль, вводим пароль на ключ, по-умолчанию пароль на ЭЦП устанавливаемый ЦОН: 123456
В данном окне нажимаем кнопку Обзор, чтобы вручную указать в какое хранилище ключей поместить новый ключ.
Изображение 5. Указываем хранилище сертификатов вручную
Устанавливаем галочку Показать физические хранилища
Изображение 6. Указываем хранилище сертификатов вручную
В нашем случае выбираем Реестр и нажимаем ОК.
Изображение 7. Указываем хранилище сертификатов вручную
Видим, что хранилище сертификатов стало Личное/Реестр и нажимаем Далее
Изображение 8. Указываем хранилище сертификатов вручную
Нажимаем Готово
Изображение 9. Окно завершения установки сертификатов
Данное окно подтверждает, что сертификаты ЭЦП успешно установлены в хранилище Windows.
Изображение 9. Окно успешной установки сертификатов
Теперь браузеры будут видеть установленный сертификат аутентификации и можно осуществлять процедуру входа на гос.порталы РК.
[nx_heading style=»centerlined» heading_tag=»h3″ size=»24″ align=»center»]Видеоурок: Установка ЭЦП для: Кабинет налогоплательщика РК, Комитет Статистики РК и др.[/nx_heading]
[nx_youtube_advanced url=»https://youtu.be/1N5uCJBKU5c» playlist=»https://www.youtube.com/playlist?list=PLK8Nq6FJOC4ftoGCntMYCYRXj245nGiu6″ width=»960″ height=»560″ https=»yes»]
[nx_heading style=»coloredline» heading_tag=»h4″ size=»24″ align=»left»]От автора:[/nx_heading]
Если проблема решена, один из способов сказать «Спасибо» автору, указан — здесь.
Если же проблему разрешить не удалось или появились дополнительные вопросы, задать их можно на нашем форуме, в нашей группе Whatsapp.
Или же, воспользуйтесь нашей услугой «Удаленная помощь» доверив решение проблемы специалисту.