Как внести изменения в pdf документе подписанный электронной подписью
Наш менеджер уже увидел Ваше обращение и спешит помочь Вам как можно скорее!
В рабочее время (пн – пт с 9:00 до 18:00) наши менеджеры очень активны и общительны и с радостью ответят Вам в течение дня.
В остальное время – дожидайтесь ответа на следующий рабочий день.
А пока предлагаем вам:
- Почитать отзывы наших клиентов;
- Узнать о новинках для бизнеса в блоге;
- Пообщаться с нашими клиентами в группе ВКонтакте и на Facebook.
Заказ обратного звонка
Заполните форму, специалист свяжется с вами в течение дня. Он ответит на все вопросы и оформит тестовый доступ, если это необходимо.Для подписания PDF-документа на вашем компьютере должен быть:
установлен криптопровайдер (КриптоПро CSP или ViPNet CSP);
вставлен носитель с электронной подписью;
Шаг 1. Редактирование документа PDF
Для начала подписания нажмите правой кнопкой мыши на PDF-файл, который вы желаете подписать электронной подписью. Затем выберите пункт контекстного меню «Редактировать в ABBYY FineReader PDF 15» (см. рис. 1).
Рис. 1. Контекстное меню, выбор редактирования ABBYY FineReader 15
Шаг 2. Установка подписи
На верхней горизонтальной панели выберите пункт «Инструменты». Затем в контекстном меню выберите пункт «Подпись», далее в подменю — пункт «Добавить цифровую подпись» (см. рис. 2).
Рис. 2. Инструмент «Добавить цифровую подпись»
Выберите область, в которую будет установлен визуальный штамп. Весь документ будет подписан электронной подписью, однако для большинства пользователей удобно визуальное оформление штампа подписи, поэтому производители программных продуктов реализовали отображение визуального штампа.
Электронные подписи для любых целей
Выделите область для установки штампа. Она будет отображена пунктирной линией (см. рис. 4).
Рис. 4. Выделенная область для установки штампа подписи
После выделения области установки штампа подписи откроется окно добавления электронной подписи к документу (см. рис. 5). В пункте «Подписать как» выберите действующий сертификат вашего учреждения. При необходимости выберите причину подписания документа (например, как показано на рисунке 5: «Я утвердил этот документ»). Также при необходимости вы можете дополнить штамп подписи данными о владельце, изображением (логотипом учреждения) и другими дополнительными сведениями.
После выбора всех параметров нажмите на кнопку «Сохранить и подписать».
Рис. 5. Выбор подписи и настройка штампа подписи
Далее программа предложит выбрать путь сохранения документа с электронной подписью. Выберите место для сохранения файла и нажмите «Сохранить».
Шаг 3. Проверка подписания документа
После сохранения документа откройте его. Программа сообщит от том, что документ подписан электронной подписью и закрыт от редактирования (см. рис. 6). При внесении изменений в документ подпись на документе будет потеряна. Дважды кликните на штамп электронной подписи.
Рис. 6. Результат подписания документа
Откроется информация о действительности электронной подписи (см. рис. 7). На этом можно считать документ подписанным.
Защита документа сертификатом подтверждает подлинность документа. Когда файл PDF подписан цифровым идентификатором или сертификатом, его содержимое блокируется, чтобы предотвратить внесение изменений в документ. Цифровые идентификаторы или сертификаты для подписи PDF-файлов используются в коммерческих и юридических целях и регулируются законодательством большинства стран.
Небольшое отступление в PDF
PDF или Portable Document Format — это, как следует из названия, портативный электронный документ. Этот формат используется во многих сферах, в основном в бизнесе. PDF был разработан Adobe в 2005 году. До 2020 года формат претерпел четыре изменения: в него были добавлены встроенные файлы, ссылки, сценарии и всевозможные функции. Формат, с которым мы знакомы на момент написания этой статьи (PDF 2.0), был выпущен не так давно — в конце 2020 года со спецификацией ISO 32000-2.
PDF включает в себя часть функций языка PostScript. Можно транслировать PDF в PostScript. Есть принтеры, которые умеют самостоятельно интерпретировать PDF в PostScript.
На первый взгляд структура PDF не так уж и сложна.Файл состоит:
- заголовок (header);
- тело файла (body);
- таблица перекрестных ссылок (cross-reference table);
- блок поиска таблиц объектов и ссылок (trailer).
Самая первая строка файла-это заголовок.Он же определяет номер спецификации.
В таблице хранится информация об объектах в файле: эта таблица состоит из разделов, количество которых зависит от количества объектов, добавленных в файл. Trailer помогает программе открывающей файл найти таблицу перекрестных ссылок и специальные объекты. Кстати, приложениям нужно читать PDF с конца.
Содержимое включает ссылки на объекты. К ним относятся страницы, изображения, шрифты. Комментарии могут появляться в PDF-файле. Их синтаксис такой же, как и у комментариев PostScript, начиная с символа % и заканчивая символом конца строки.За структурой формата находится структура публикации.
Текст в документе сжат и не отображается в файле. Например, так выглядит глава книги в формате PDF, если вы попытаетесь просмотреть ее как простой текстовый файл.
Так выглядит PDF для машины
Нападение
Во-первых, давайте разберемся с уязвимостью. Скажем, у нас есть Эмили(подписывает документ) и Эрик(получает документ, подписанный Эмили) и, конечно же, сам документ. Эмили подписала документ своим сертификатом и отправила его Эрику. Эрик убежден, что документ подлинный, потому что он подписан. Но что, если документ был подготовлен не Эмили (она только подписала), и не она тоже его отправила? Атака, направленная на подделку содержимого подписанного документа, обычно проходит в три этапа.
1.Хакер готовит документ, содержащий так называемое теневое содержимое. Это можно сравнить с пустым листом в сшитом контракте, куда вы можете добавить фрагмент после подписания.
2.Хакер отправляет этот документ Эмили. Эмили подписывает его и отправляет обратно хакеру. Хакер изменяет содержание документа, чтобы не нарушить подпись.
3.Хакер отправляет измененный документ Эрику. Эрик уверен, что документ настоящий, и обрабатывает его.
По поводу существования этой уязвимости упоминалось в 2012 году, когда PDF-файл соответствовал спецификации ISO 19005-3. Однако после выхода новой версии формата хакеры провели еще одно исследование и привлекли внимание компаний, разрабатывающих программное обеспечение для работы с PDF.
Есть три способа редактировать содержимое уже подписанного документа: скрытие, замена а так же скрытие и замена вместе.
Замена
Данная атака нацелена на интерактивные формы. Формы поддерживают множество масок ввода (таких как текстовые поля, текстовые области, переключатели и кнопки выбора), где пользователи динамически вводят новое содержимое и сохраняют его в документе. Формы также могут иметь значения по умолчанию, которые вы можете изменять по мере необходимости.
Хакер подготавливает файл, определяющий шрифт, и его описание содержится в документе. После подписания документа злоумышленники добавляют новое описание шрифта и перезаписывают предыдущее. Поскольку обнаружение новых шрифтов считается безвредным, приложения проверки подписи не отображают никаких предупреждений о внесенных изменениях.
Основная идея опции «Заменить» — добавить в подписанный документ новые объекты, которые считаются безвредными, но напрямую влияют на представление содержимого. Например, определение символа напрямую не изменяет содержимое. Однако это влияет на тип отображаемого контента и позволяет заменять числа или символы.
Скрытие
Результатом этой атаки будет скрытие некоторого содержимого за видимым содержимым файла. Как только хакер получает документ, подписанный Эмили, он манипулирует им, чтобы видимый слой больше не отображался в средстве просмотра. Кроме того, в файле PDF теперь отображаются невидимые ранее объекты.
Скрытие и замена
Эта атака является наиболее мощной, так как позволяет изменять все содержимое документа. Хакер может создать теневой документ, который влияет на отображение каждой страницы или даже на общее количество страниц, а также на каждый объект в файле.
При атаке «Скрытие и замена» PDF-файл содержит второй скрытый документ с другим содержимым. Поскольку мили не может видеть скрытое содержимое, она подписывает документ. После подписания хакер получает файл и просто добавляет новую таблицу внешних ссылок и трейлер. В таблице внешних ссылок есть только одно изменение: ссылка на описание.
В то же время этот вариант является наиболее «зыбким», поскольку неиспользуемые объекты, в том числе теневые, можно удалить при подписке. Кроме того, анализатор безопасности может обнаруживать большое количество ненужных неактивных объектов и выдавать предупреждение.
Другими словами, хакер создает файл PDF, содержащий два объекта с одинаковым идентификатором, но разным содержимым. Поскольку включение таблицы внешних ссылок, указывающей на объект, уже определенный в подписанной области, считается безвредным, никаких хакерских изменений не будет, и подпись будет успешно проверена. Однако Эрик и Эмили видят разное содержимое в одном файле.
Реализация
Число 0 на изображении ниже обозначает первый номер объекта в таблице, 334 — количество объектов. Первый элемент таблицы всегда XXXXXXXXXX 65535 f. 65535 — это номер по умолчанию для первого элемента в таблице. F (бесплатно) — объект не используется. Напротив используемых объектов стоит n. Затем идет XXXXXXXXXX — это смещение от начала файла до объекта. В документе будет столько таблиц, сколько объектов добавлено в файл.
Здесь мы рассмотрим первый тип атаки «Скрытие» с элементами атаки «Скрытие и замена», поскольку они по сути схожи. При реализации атаки имейте в виду, что таблица перекрестных ссылок (cross-reference table) представляет собой просто текстовую таблицу. Она начинается со слова xref и содержит ссылки на все объекты.
После таблицы идет trailer, затем значение startxref, которое указывает смещение от начала файла до таблицы. Программа начинает чтение документа в конце. Для проведения атаки нам потребуются следующие инструменты:
- КриптоПро PDF;
- сертификат, ключ;
- Notepad++ (им я редактирую внутренности PDF);
- КриптоПро CSP для Windows;
- КриптоПро CSP для Linux; .
- Adobe Acrobat DC;
Перед началом обработки PDF-файла, нам нужно получить ключ с сертификатом, который подойдет для КриптоПро. Сгенерировать ключ в OpenSSL не получится. Поэтому запускаем машину Linux, заходим на сайт КриптоПро и скачиваем дистрибутив для нашей ОС (у меня он в виде файла .deb). Вы должны сначала зарегистрироваться.
Дистрибутив с файлами
Теперь переходим в папку / opt/ cprocsp/ bin/ amd64 . Там должны появиться следующие бинарники: certmgr , cpverify , cryptcp , csptest , csptestf , curl , der2xer , genkpim , inittst , wipefile .
В этой команде используются следующие ключи:
- СА — центр сертификации, который подпишет нам пару ключа с сертификатом. Данная пара будет валидной, но действовать будет только три месяца;
- сont — имя контейнера, в которое сохранится ключ с сертификатом.
- certusage — идентификатор назначения. Различают проверку сервера и клиента. Для нашего случая он неважен;
- hashAlg — алгоритм шифрования для сертификата. Чтобы посмотреть, какие они есть, можно выполнить команду cpconfig -defprov –view_type ;
Проверяем созданный контейнер:
Должен появиться контейнер как на скриншоте ниже.
Контейнер в Linux-системе
КриптоПро со своим CSP считает, что криптоконтейнер не должен храниться на жестком диске. Для этого были изобретены токены. Но поскольку у нас под рукой нет токена, а только жесткий диск, мы пойдем другим путем. Для этого нам понадобится ImDisk. Скачаем и установим его.
Данная программа способна создавать своего рода замкнутое дисковое пространство. Да, нам придется создать дополнительный виртуальный жесткий диск на нашем компьютере. Я создал раздел размером 60 МБ с папкой и закинул в него файлы контейнера. Теперь КриптоПро видит и ключ, и сертификат.
Перейдите в корневую папку / var / opt / cprocsp / keys /, где должен появиться каталог с именем, указанным в команде, для создания этого контейнера. В этом каталоге вы найдете шесть файлов с расширением .key — это контейнер. Загрузите и перенесите на свой компьютер с Windows.
Переходим к подготовке самого файла. Необходимо иметь на машине редактор PDF — я выбрал пробную версию Adobe Acrobat DC, а также КриптоПро PDF для возможности подписать файл.
Открываем Acrobat и создаем пустой файл. Пишем посередине ][aker. Сохраняем и закрываем его. Примерно так выглядят внутренности пустого файла с одним словом, которое мы ввели:
Ключ сертификата ЭП создаётся методом криптографических преобразований, с помощью специального программного обеспечения — СКЗИ. Это позволяет надёжно защитить внесённые в подпись данные о владельце. Доступ к ключу имеют только владелец и доверенные лица, указанные в документах.
Тщательная проверка данных и сохранение ключевой информации о пользователе становятся гарантами надёжности ЭЦП. Нанесённая на текст, графический материал или договор, подпись закрепляет авторство подписанта. Механизм проверки подлинности цифрового аналога подписи подтверждает правомерность действия. ЭЦП используется в следующих случаях:
- подача налоговой декларации в ФНС;
- подтверждение авторства текстового документа;
- заключение сделок по торгам, соглашениям и финансовым операциям;
- подписание права передачи полномочий или аналогичных процедур;
- ведение внутренней документации;
- согласование включённых в документ данных группой лиц.
Электронная подпись — самый надёжный метод защитить информацию о сделках и создании документов от третьих лиц. Принцип криптографии создаёт сложный код, расшифровать который можно лишь с помощью сертификата или пароля доступа. Взлом шифра невозможен, что обеспечивает доверие к ЭЦП.
Принцип работы: что необходимо для использования ЭП
Принцип работы подписи заключается в кодировании документа. Как только нанесена ЭЦП, добавить новую информацию в файл невозможно. Вся процедура проходит через специальное ПО. Чтобы внести изменения, необходимо открыть документ, внести в него правки и затем подписать документ электронной подписью с Рутокена снова. При этом на документе будет проставлена новая подпись с актуальным временем и датой подписания. Именно это качество придаёт документу надёжность. Чтобы правильно работать с документом, необходимо запомнить последовательность действий при работе с ЭП.
Порядок работы с документом под ЭЦП:
- Документ редактируется и вычитывается до подписи. Внести правки после подписания файла не получится — электронная подпись под документом станет невалидной.
- В торговле, документообороте с ФНС и ведении финансовых операций по законодательству признаётся только квалифицированная электронная подпись. С её помощью подписывают соглашения между разными сторонами.
- На официальной странице производителя СКЗИ можно скачать пробную версию продукта, которая действует 3 месяца. По истечении этого срока потребуется приобрести лицензию.
- Для работы с разными версиями документа требуются плагины, веб-сервисы и отдельные программы.
Подпись наносится не только на документ, созданный в специализированной программе. ЭЦП ставится на продукты AdobeLiveCycle ES, Microsoft Office, AdobeAcrobat и AdobeReader. Это существенно расширяет её функционал, при этом требует установки дополнительных патчей. У каждого типа документа свои правила работы и внесения ЭП в документ.
Процесс: как подписать электронной подписью документ PDF
Электронный документ в программах AdobeLiveCycle ES, AdobeAcrobat и AdobeReader поможет подписать приложение «КриптоПро PDF». Это электронный цифровой модуль, позволяющий перенести ЭЦП в ПДФ формат. Для электронного ПДФ файла плагин формирует переходную ПДФ форму с расширением sig.
Чтобы подписание ЭЦП было возможно, необходима программа для чтения ПДФ-файлов версии AdobeAcrobatPro или AcrobatReader DC. С подписанием документ распознаётся в «КриптоПро».
Инструкция, как поставить подпись:
- Заходите на онлайн портал «КриптоПро», нужно найти плагин и установить на ПК.
- Настроив программу, входите в меню, подпункт «Работа с сертификатами».
- Выбираете меню «Подписание».
- В появившемся окне выбираете искомую подпись.
- Чтобы подписать PDF, необходимо выбрать место и положение электронной подписи в документе.
Цифровая подпись PDF аналогична подписям в «КриптоПро». Подпись распознаётся системой при подаче документов в налоговую службу или аналогичные организации.
PDF и XML — очень гибкие форматы. Гибкость дает удобство, ради которого приходится жертвовать безопасностью. В обоих форматах каждый год находят множество уязвимостей, связанных как с криптографией, так и со структурой самого файла. И вот в очередной раз доказано: даже электронная подпись не дает абсолютной уверенности, что в недрах электронного документа кто‑то не покопался шаловливыми руками.
warning
Эта публикация представлена в информационно‑ознакомительных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Экскурс в PDF
PDF, или Portable Document Format, — это, как видно из названия, переносимый электронный документ. Этим форматом пользуются во многих областях, прежде всего в бизнесе. PDF был разработан компанией Adobe еще в далеком 2005 году. Вплоть до 2020 года формат претерпевал изменения четыре раза: в него добавлялись встроенные файлы, ссылки, скрипты и разного рода функции. Тот формат, который мы знаем на момент написания этой статьи (PDF 2.0), вышел не так давно — в конце 2020 года вместе с его спецификацией ISO 32000-2.
PDF включает в себя часть функций языка PostScript. Можно транслировать PDF в PostScript. Есть принтеры, которые умеют самостоятельно интерпретировать PDF в PostScript.
В первом приближении структура самого документа PDF не очень сложная. Файл состоит из следующих элементов:
- заголовок (header);
- тело файла (body);
- таблица перекрестных ссылок (cross-reference table);
- блок поиска таблиц объектов и ссылок (trailer).
Заголовок — это всегда самая первая строка файла, которая определяет номер спецификации.
Заголовок PDF
Тело содержит ссылки на объекты. К ним относятся страницы, изображения, шрифты. Комментарии могут располагаться во всем PDF-файле. Их синтаксис совпадает с синтаксисом комментариев в PostScript, начинаются они с символа % и заканчиваются символом конца строки.
В таблице хранится информация об объектах в файле: эта таблица состоит из разделов, количество которых зависит от числа объектов, добавленных в файл. Trailer помогает программе, открывающей файл, находить таблицу перекрестных ссылок и специальные объекты. К слову, приложения должны читать PDF-файл с конца.
Чем дальше в лес, тем больше дров: за структурой формата «прячется» так называемая структура публикации.
Структура публикации
Углубляться в эти дебри мы не будем, достаточно знать, что текст внутри документа сжат и во внутренностях файла его увидеть не получится. Вот как, например, выглядит глава из книги в формате PDF, если попытаться просмотреть ее как простой текстовый файл.
Содержание PDF с точки зрения компьютера
Атака
Сначала давай разберемся с уязвимостью. Представим, что у нас есть Алиса (подписывает документ) и Боб (получает подписанный Алисой документ) и, естественно, сам документ. Алиса своим сертификатом подписала документ и отправила его Бобу. Боб уверен в том, что документ подлинный, так как он с подписью. Но вот что будет, если документ готовила не Алиса (она только подписала) и отправляла тоже не она? Атака с подменой содержимого подписанного документа обычно происходит в три этапа.
- Хакер готовит документ, в котором присутствует так называемое теневое содержимое. Это можно сравнить с пустым листом в сшитом договоре, куда можно добавить фрагмент после подписания.
- Хакер отправляет этот документ Алисе. Алиса подписывает его и отправляет обратно хакеру. Хакер меняет содержимое документа так, чтобы не сломать подпись.
- Хакер отправляет измененный документ Бобу. Боб уверен в том, что документ настоящий, и обрабатывает его.
О существовании этой уязвимости упоминалось еще в 2012 году, когда PDF соответствовал спецификации ISO 19005-3. Однако после выхода новой версии формата хакеры провели очередное исследование и привлекли внимание компаний, разрабатывающих программное обеспечение для работы с PDF.
Есть три способа изменить содержимое уже подписанного документа: скрытие, замена, а также скрытие и замена.
Скрытие
Результатом этой атаки будет сокрытие какого‑либо контента за видимым содержимым файла. Как только хакер получает подписанный Алисой документ, он манипулирует документом таким образом, что видимый слой больше не отображается в приложении просмотра. Причем теперь уже ранее невидимые объекты становятся видны в PDF-файле.
Замена
Основная идея варианта «Замена» — добавить в подписанный документ новые объекты, которые считаются безвредными, но напрямую влияют на представление содержимого. Например, определение шрифтов напрямую не меняет содержимое. Однако это влияет на вид отображаемого контента и делает возможной замену цифр или символов.
Эта атака нацелена на интерактивные формы. Формы поддерживают различные маски ввода (например, текстовые поля, текстовые области, переключатели и кнопки выбора), где пользователи динамически вводят новое содержимое и сохраняют его в документе. Формы также могут иметь значения по умолчанию, которые при необходимости можно изменить.
Хакер готовит файл, в котором определяется шрифт, и его описание включается в документ. После подписания документа злоумышленники добавляют новое описание шрифта и перезаписывают предыдущее. Поскольку определение новых шрифтов считается безобидным, приложения, проверяющие подпись, не показывают никаких предупреждений о внесенных изменениях.
Скрытие и замена
В варианте атаки «Скрытие и замена» PDF-файл содержит второй скрытый документ с другим содержимым. Так как Алиса не может увидеть скрытое содержимое, она подписывает документ. После подписания хакер получает файл и добавляет только новую таблицу внешних ссылок и трейлер. В таблице внешних ссылок происходит лишь одно изменение: ссылка на описание.
Другими словами, хакер создает файл PDF, содержащий два объекта с одним и тем же идентификатором, но разным содержанием. Поскольку включение таблицы xref , указывающей на уже определенный объект в подписанной области, считается безвредным, никаких предупреждений о внесенных хакером изменениях не поступает, и проверка подписи проходит успешно. Тем не менее Боб и Алиса видят разный контент в одном и том же файле.
Этот вариант атаки наиболее мощный, так как позволяет изменить все содержимое документа. Хакер может создать теневой документ, влияющий на отображение каждой страницы или даже на общее количество страниц, а также на каждый содержащийся в файле объект.
В то же время этот вариант самый «шаткий», так как при подписании могут быть удалены неиспользуемые объекты, в том числе — теневые. Кроме того, сканер безопасности может обнаружить большое количество лишних незадействованных объектов и выдать предупреждение.
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Читайте также: