Визуализация электронной подписи на исходящих документах в соответствии с ГОСТ Р 7.0.97-2024. Новый взгляд



Свершилось! 1С выпустили новую версию 1C:Документооборот 2.1.13.28. В новой версии много чего интересного, но меня больше всего интересует визуализация электронной подписи документа по ГОСТу Р 7.0.97-2024. Под капот этому механизму я предлагаю вместе заглянуть. В конце статьи предлагается немного размышлений.

Мне, как автору одного из методов визуализации ЭЦП на документах в 1С, было очень интересно узнать, как сами разработчики смотрят на данную проблематику. После ознакомления с механизмами, я был в некотором смятении, но об этом позже.

Первое и главное — механизм визуализации ЭЦП наконец-то появился (всего-то год прошёл). Второе и забавное — дизайн, а главное размер, нового штампа пугает. Третье и тоже главное — теперь при просмотре подписанного документа пользователь всегда видит визуализацию, т.к. при просмотре файла после подписания ЭЦП, создаётся новая версия.

Алгоритм визуализации следующий. В общем макете «ШаблонОтметкиЭП»содержится картинка, в которую с помощью ImageMagick впечатываются данные о серийном номере сертификата, субъекте и сроке действия сертификата. Тут сразу 2 нюанса хочу отметить:

  1. ImageMagick нужен свежий, который запускается не командой «convert.exe», а «magick.exe convert», причём ошибку о несоответствии версий вы получить только если в персональных настройках работы с файлами вы не меняли имя программы по умолчанию, оставив «convert.exe»;
  2. у сертификатов, выданных на организацию, в качестве имени субъекта (CN, Соммon Name) указывается организация, а вот в полях фамилия (SN), имя и отчество (GN) , как раз то, что нам надо для выполнения п. 5.23 ГОСТа.

Если в тексте файла есть метка «ВставитьЭП», то вместо неё вставляется полученная картинка, а если этой метки нет, то картинка вставляется в документ в угол, который указан в настройках. За вставку отвечает соответственное содержимое двух общих макетов «ВставкаИзображенияВместоТегаВDocx» и «ВставкаИзображенияЭПСУказаниемПоложенияDocx».

Вернёмся ещё к ImageMagick. Координаты текстовых элементов для вставки в шаблон указываются в функции «СоздатьОтметкуЭП()» общего модуля «РаботаСЭП» относительно левого верхнего угла изображения. Там же указывается размер шрифта надписей (последний параметр функции «НаложитьСтроки()» общего модуля «РаботаСКартинками»). Цвет текста можно поменять в параметре -fill функции «НаложитьСтроки()». Также хочу отметить, что геометрические размеры изображения после вставки в MS Word определяются элементами cx и cy, которые выражены в каких-то странных единицах, которые в коде 1С называются EMU (English Metrick Units). Я уже всё посчитал и подогнал, так что если размер шаблона не будет изменён, то всё будет красиво.

Мой вариант визуализации не меняет алгоритм, предложенный 1С. В расширении изменён шаблон и, соответственно, координаты текста и размер изображения. Также хочу предупредить, что расширение написано и тестировалось в 1С:Документооборот версии 2.1.13.28, в новых версиях могут что-то изменить.

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

Некоторые серьёзные министерства (Минкомсвязь и Минпромторг например) печатают в штампе надпись не «Документ подписан электронной подписью» (как указано в ГОСТе), а «Подлинник электронного документа подписанного ЭП хранится в …». Наверное догадываются о чём-то.

9 Comments

  1. sikvel2012

    Если честно реализация так себе, начинает храниться целая куча дубликатов файлов и картинок с визуализацией ЭП. Более того я так и не смог заставить вставляться отметку в документы PDF, в ODT без проблем

    Reply
  2. soulner

    (1) Реализация, как реализация. Разработчики так видят. В PDF действительно не вставляется, что наверно и к лучшему, т.к. позицию штампа в документе никак не определить. А в базе появляются только новые версии, но можно настроить автоочистку и старые версии будут удаляться по прошествии времени.

    Reply
  3. sikvel2012

    (2) даже не версии а дубликаты документов

    Reply
  4. Katty_K

    (1) Добрый день!

    Подскажите, пожалуйста, а Вы не столкнулись с такой проблемой:

    у нас при подписании документа с шаблоном файла в формате odt после автоматической установки в файл штампа ЭП (насколько я поняла, это происходит при первом открытии файла после подписи или сохранении на диск, и происходит на сервере — то есть сам подписанный файл изменяется) — так вот, после автоматической установки штампа ЭП, запись об электронной подписи этого файла пропадает из карточки документа, и при выполнении команды для этого файла «Сохранить вместе с файлом подписи» программа выдает пустое окно — как будто файл не подписан.

    При этом отметка (картинка «печать») напротив файла по прежнему стоит, и изменять его программа не дает, т.к. он «подписан».

    При этом в регистре сведений «Электронные подписи» ЕСТЬ запись подписи для этого файла. Проверку подлинности она не проходит, потому что «Хеш-сумма отличается» (за дословность не ручаюсь, сейчас нет возможности посмотреть).

    Непонятно, в чем тогда суть вставки штампа, если он портит электронную подпись файла??

    И да, кстати, сам документ после этого проверку подписи тоже не проходит, т.к. был изменен один из файлов…

    С шаблонами docx еще не пробовала, но я так понимаю, таких проблем нет? Хотя вроде алгоритм должен быть тот же.

    Reply
  5. soulner

    (4) Добрый вечер!

    Не очень понял вопрос. Сразу скажу, что у меня везде MS Office и по этому с форматом odt не работал.

    Если мне память не изменяет, то запрет на сохранение файла при подписи делается через проверку реквизита «ПодписанЭП» справочника Файлы и не зависит от фактического наличия ЭЦП в регистре.

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

    У Вас в карточке файла в закладке «ЭП» информация есть?

    Reply
  6. Katty_K

    (5) Извините, что не ответила сразу — замоталась совсем, только зашла на сайт.

    Моя проблема скрывалась в доп. обработчике, написанном так давно, что я про него уже успела забыть))))

    он при старте и завершении процессов перезаполняет шаблоны приложенных файлов данными (типа визы согласования, резолюции, регистр. данные и т.д.)

    при его написании про ЭП вообще не думала, поэтому условие не поставила.

    Вот это перезаполнение шаблонов файлов и ломало ЭП )

    Reply
  7. user1080968

    Добрый день!

    Подскажите, пожалуйста, как именно Вы изменили масштаб электронной подписи в doc/docx? Хочется сделать её меньше и зафиксировать размер.

    Reply
  8. soulner

    Добрый вечер!

    Размеры картинки определяются в аргументах «cx» и «cy» в двух местах макетов КЭП_ВставкаИзображенияЭПСУказаниемПоложенияDocx и КЭП_ВставкаИзображенияВместоТегаВDocx. А вот как я их считал… Уже и не помню. Не смог найти нигде описание этих загадочных EMU и подбирал вручную. Попробую вспомнить.

    Штамп размером 1078 на 416, в документе MS Word он выводится в масштабе 18% с размерами 7 на 2,7 см. со следующими значениями в атрибурах:

    cx=»2519680″

    cy=(30*ЧислоПодписей) / 25.4 * 822579 = 971550, если подпись одна.

    Вот и пропорция:

    7 см = 2519680 EMU,

    2,7 см = 971550 EMU, теперь можно вычислить любой размер штампа.

    Если у вас он всегда будет один, то можно эти значения сразу загнать в атрибуты cx и cy

    Reply
  9. user1080968

    (8) Большое спасибо, что помогли разобраться! Всё получилось.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *