Формулировка проблемы: В итерации 40 была поставлена задача реализовать проверку ЭЦП на документе, однако в ходе разработки выяснилось, что детали реализации подписи на тот момент не могли обеспечить полноценную проверку ЭЦП.
Связанные задачи: 2.40.ЭЦП2.
Сопутствующие документы:
Решение: так как правильная проверка ЭЦП на документах требует серьёзных доработок в механизме подписания, то мы вводим следующие требования к электронной подписи документа Synergy:
Подпись хранится отдельно от подписываемых данных
(detached signature
).
Подпись документа является краткосрочной
(short term signature
) —-- верификация
подписи имеет смысл только в период действия сертификата
подписывающего.
Подпись является независимой (параллельной), т. е. несколько подписей от разных людей на одном документе никак не влияют друг на друга ни при формировании, ни при проверке.
Дата и время создания подписи (берется с сервера Synergy) должны входить в подписываемые данные.
При реализации процесса подписи документа с помощью ЭЦП для удобства пользователя, а также для того, чтобы иметь возможность предотвратить ошибки (например, подписывание чужим ключом), до непосредственного создания подписи необходимо отобразить пользователю следующие данные о сертификате:
Данные о получателе сертификата: имя
(Common Name
) и организация
(Organisation
).
Данные об учреждении, выдавшем сертификат: название
(Common Name
), организация
(Organization
), местонахождение
(Location
) и страна
(Country
).
Данные о действительности сертификата: дата создания
(Creation Date
) и дата окончания срока
действия (Expiration Date
), а также статус по
действительности
(действителен или просрочен
).
Полное описание полей см. в RFC 5280. Также при подписании на стороне сервера Synergy сертификат, которым будет подписан документ, подвергается следующим проверкам:
Проверка действительности сертификационного пути --- подтверждает действительность всех сертификатов, задействованных при подписании сертификата (см. пункт 6.2. в методике)
Проверка срока действия сертификата (см. пункт 6.3. в методике)
Проверка статуса сертификата (действителен или отозван) —-- по методу проверки с помощью CRL, а также с помощью OSCP (см. пункт 6.4. в методике).
Если сертификат не проходит хотя бы одну из указанных проверок, то подпись документа таким сертификатом невозможна.
Проверка электронно-цифровой подписи документа может быть инициирована любым пользователем из карточки документа путём нажатия в листе подписей кнопки «Проверить ЭЦП» (см. иллюстрацию 5 к задаче 2.40.ЭЦП2). Проверка осуществляется для каждой подписи на документе и по её окончании отображается окно, содержащее следующую таблицу (пример):
ФИО подписавшего | Дата подписи | Имя, организация на сертификате | Срок действия сертификата | Результат проверки |
---|---|---|---|---|
Иванов И. И. |
23.03.12 14:06 |
Иванов Илья Игоревич, MDM Inc |
01.01.12 — 01.12.12 |
Подпись верна |
ФИО подписавшего — фамилия, имя и отчество пользователя Synergy, осуществившего подпись (в полном либо сокращённом виде, см. настройку 1.3.8. в спецификации.
Дата подписи — дата и время, когда была осуществлена подпись.
Имя, организация на сертификате — значение полей
Common Name
и Organization
сертификата, использованного для подписи, через запятую.
Срок действия сертификата — значения полей
NotBefore
и NotAfter
сертификата, через тире.
Результат проверки — строка, выделенная цветом:
Подпись верна (зелёным цветом, код цвета #0cd570) — если подпись прошла все проверки (см. ниже) и не просрочена
Подпись просрочена (жёлтым цветом, код цвета #dee108) — если подпись прошла все проверки, но срок действия сертификата, который использован для подписи, вышел
Подпись неверна: [причина1, причина2, …] (красным цветом, код цвета #e10808) — если подпись не прошла какую-либо из проверок (либо несколько из них). Формулировки причин ошибок см. ниже.
Проверка каждой подписи состоит из следующих шагов:
Проверка цифровой подписи — показывает, что документ идентичен тому документу, который был подписан (см. пункт 6.1 в методике).
Формулировка при ошибке — документ изменён
.
Проверка действительности сертификационного пути — подтверждает действительность всех сертификатов, задействованных при подписании сертификата (см. пункт 6.2. в методике).
Формулировка при ошибке —
к сертификату нет доверия
.
Проверка попадания даты и времени подписания в срок действия сертификата.
Причина ошибки —
сертификат был недействителен в момент подписания
.
Проверка статуса сертификата (действителен или отозван) — по методу проверки с помощью CRL, а также с помощью OSCP (см. пункт 6.4. в методике).
Формулировка при ошибке — сертификат отозван
.
Доверенные корневые сертификаты, которые используются при проверке
ЭЦП, задаются в конфигурационном файле
configuration/arta/security/digital-signature.xml
,
имеющим следующий формат:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration xmlns="http://www.arta.kz/xml/ns/as/digital-signature" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.arta.kz/xml/ns/as/digital-signature digital-signature.xsd"> <!-- Включить использование цифровой подписи --> <enable> false </enable> <!-- Блок, описывающий доверенный сертификационный центр --> <!-- Таких блоков может быть несколько --> <ca> <!-- Описание CA --> <description>Корневой сертификат НУЦ РК</description> <!-- Поддерживаемые схемы URI: file и http --> <!-- Путь до файла с корневым сертификатом --> <certificate-uri> file:///etc/ssl/certs/synergy/pki.gov.kz.crt </certificate-uri> <!-- Алгоритм цифровой подписи, который использует этот сертификационный центр. Название алгоритма чувствительно к регистру. --> <!-- Поддерживаемые ARTA Synergy алгоритмы: SHA1withRSA MD5WithRSA SHA256withRSA SHA512withRSA ECGOST3410 --> <algorithm> SHA512withRSA </algorithm> <!-- Основной список CRL --> <base-crl> <!-- Включить использование основного CRL --> <enable> true </enable> <!-- Путь до основного CRL --> <uri> file:///etc/ssl/certs/synergy/pki.gov.kz.crl </uri> <!-- Период обновления основного CRL, в минутах Значение по умолчанию - 1 неделя --> <period> 10080 </period> </base-crl> <!-- Список Delta CRL --> <delta-crl> <!-- Включить использование Delta CRL --> <enable> true </enable> <!-- Путь до Delta CRL --> <uri> file:///etc/ssl/certs/synergy/pki.gov.kz-delta.crl </uri> <!-- Период обновления основного CRL, в минутах --> <period> 60 </period> </delta-crl> </ca> </configuration>