Задача [EDS1]: Проверка ЭЦП на документах

Формулировка проблемы: В итерации 40 была поставлена задача реализовать проверку ЭЦП на документе, однако в ходе разработки выяснилось, что детали реализации подписи на тот момент не могли обеспечить полноценную проверку ЭЦП.

Связанные задачи: 2.40.ЭЦП2.

Сопутствующие документы:

Решение: так как правильная проверка ЭЦП на документах требует серьёзных доработок в механизме подписания, то мы вводим следующие требования к электронной подписи документа Synergy:

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

Полное описание полей см. в RFC 5280. Также при подписании на стороне сервера Synergy сертификат, которым будет подписан документ, подвергается следующим проверкам:

Если сертификат не проходит хотя бы одну из указанных проверок, то подпись документа таким сертификатом невозможна.

Проверка электронно-цифровой подписи документа может быть инициирована любым пользователем из карточки документа путём нажатия в листе подписей кнопки «Проверить ЭЦП» (см. иллюстрацию 5 к задаче 2.40.ЭЦП2). Проверка осуществляется для каждой подписи на документе и по её окончании отображается окно, содержащее следующую таблицу (пример):

ФИО подписавшего Дата подписи Имя, организация на сертификате Срок действия сертификата Результат проверки

Иванов И. И.

23.03.12 14:06

Иванов Илья Игоревич, MDM Inc

01.01.12 — 01.12.12

Подпись верна

Проверка каждой подписи состоит из следующих шагов:

Рисунок 156. Диалог проверки подписей документа

Диалог проверки подписей документа

Доверенные корневые сертификаты, которые используются при проверке ЭЦП, задаются в конфигурационном файле 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>