Криптографический АРМ на базе токенов PKCS#11. Электронная подпись. Часть 2

    В первой части нашего повествования мы показали как, имея на руках криптографический токен с поддержкой российской криптографии, создать запрос на получение сертификата, получить и установить сертификат на токен, проверить электронную подпись сертификата и его валидность по списку отозванных сертификатов (CRL), удалить сертификат с токена, сменить метки и т.д. Создав запрос на сертификат (сгенерировав ключевую пару), получив в УЦ сертификат и установив его на токен, ничего не мешает теперь использовать личный сертификат (сертификат с ключевой парой) для электронного подписания документов. Приступим. Для начала напомним, где находится утилита cryptoarmp11.


    Далее запускаем утилиту и нажимаем кнопку « 1. Подписать документ»:



    Выбираем файл с документом, который хотим подписать, и определяемся с каталогом, где сохраним файл с подписью (окончание имени этого файла будет .p7s). Решаем, будет ли сам подписываемый документ сохранен в теле подписи или нет (присоединенная/ отсоединенная подпись). И самое значимое, определяемся с форматом подписи. На мой взгляд, можно придерживаться следующих правил. Если это внутрикорпоративный документооборот, где ведется строгий контроль за компьютерами, то достаточно использовать формат подписи CAdes-BES, которая включает в себя помимо математической подписи в соответствии с ГОСТ Р 34.10-2012 и время формирования подписи (поле «Текущее время»). Если жесткого контроля за компьютерами нет (каждый на своем компьютере может выставить любое время), и важна дата подписания документа, то необходимо использовать формат CAdes-T или CAdes-XLT1. При использовании форматов CAdes-T и CAdes-XLT1 привлекается внешняя сторона (аналогично привлечению натариуса) – сервер штампов времени. При формате CAdes-T в файл с электронной подписью добавляется ответ сервера штампов времени (смотри поле «Сервер TSP»). Этот ответ (а это тоже документ в формате PKCS#7, подписанный серевером TSP) позволяет определить, к какому моменту времени был подписан документ. Следует иметь в виду, что часто проверяется только математическая подпись, а валидность самой подписи по штампам времени опускается. Для проверки валидности подписи, естественно, требуется проверка валидности сертификатов. И вот, чтобы упростить эту работу формат подписи CAdes-XLT1 подразумевает включение в файл с подписью всех доказательств валидности подписи на момент ее создания. Это и сертификаты, включая сертификаты УЦ, серверов штампов времени, ocsp-серверов, а также списки отозванных сертификатов и ответов OCSP-серверов. Больше на этом останавливаться не будем. Кто захочет найдет соответствующую литературу.

    Итак, мы определились с форматом подписи и нажали кнопку «Подписать документ». Далее нам потребуется ввести еще PIN-код для токена, затее появится предупреждение о начале формирования подписи и необходимости проявить терпение и, наконец, подпись будет создана:



    На что уходит время при формировании подписи? Это, естественно, сами математические вычисления и сбор различных данных (сертификаты, CRL, ответы серверов OCSP, штампы времени). Все, подпись создана. При получении сертификата в УЦ обязательно узнайте адрес сервера штампов времени вашего УЦ. Если ссылки на сертификаты центров сертификации (цепочка сертификатов), на списки отозванных сертификатов, а также сервера OCSP будут взяты из сертификатов, то адрес сервера штампов времени придется ввести ручками (поле «Сервер TSP»).

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



    Но и в том и другом случае, это еще не гарантирует вам того, что ваша подпись будет принята в той организации, куда вы предъявите подписанный документ, например, на сайт Госуслуг. Это связано с тем, что могут по разному храниться и проверяться доказательства валидности подписи в формате XLT1. Так, например, на сайте Госуслуг требуется, чтобы доказательства валидности сертификата сервера штампов времени хранились в подписи, получаемой от сервера. И если их там нет, то, несмотря на то, что они могут присутствовать в подписи документа, подпись на сайте Госуслуг будет признана недействительной. У нас подписью все хорошо:



    Переходим на страницу « 2. Работа с ЭП (PKCS7)» и выберем сразу файл с созданной подписью:



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

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



    И если посмотреть кто подписывал документ, то там теперь два подписанта. И обе подписи были успешно проверы на сайте госуслуг:



    На мой взгляд утилита соответствует чаяниям иметь утилиту для подписания документов, имея на руках «сертификаты на токенах с неизвлекаемым ключём, которые сами умеют всё считать».

    Однако мы решили пойти дальше и включить в эту утилиты страничку для работы с контейнером PKCS#12, который пользуется все большей популярностью. И если сейчас для подписания документа вам требуется токен PKCS#11 и библиотека к нему, то при использовании PKCS#12 нужен будет только сам контейнер. И конечно утилита, о которой мы сегодня говорили. Но эта утилита абсолютно самодостаточная и в отличии от различных CSP не патчит никакого ядра и работает на любой платформе. Поэтому переходим к третьей части.
    • +10
    • 2,5k
    • 7
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      0
      image
      :facepalm:

      Все остальное там такого же качества?
        –1

        image

          0

          Вот именно, facepalm, на кой писать по-английски, если вы даже слово криптография не осилили правильно написать

        0
        @sapir а как к вам обратится за поддержкой? Очень заинтересовала ваша программа, как альтернатива платной КриптоАРМ, но возникли сложности сразу после запуска.
          0

          Пишите в личку со скриншотами или описанием проблемы или на почту.

          0
          С сертификатами крипто про — не работает.
            0

            Сертификаты — это не пренадлежность Криптопро. Это объективная реальность никак не зависящая от КриптоПро. Поэтому все работает с сертификатами x509v3.
            Первый момент, где хранится ваш сертификат и закрытый ключ, какое СКЗИ вы используете, какую библиотеку PKCS#11 вы подключаете и какой у вас токен PKCS#11 с поддержкой российской криптографии?

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое