Как изменить pdf документ подписанный цифровой подписью

Подробности о том, как отредактировать подписанный PDF-файл.

Если PDF-файл подписан с помощью цифрового идентификатора или сертификата, его содержимое блокируется во избежание изменений в документе. Цифровые идентификаторы или сертификаты для подписания PDF-файлов используются в коммерческих и юридических целях и в большинстве стран регулируются законодательством.

Можно ли отредактировать подписанный мной PDF-файл?

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

Чтобы удалить свою подпись, щелкните поле подписи правой кнопкой мыши и выберите Очистить подпись.

Очистить подпись

Если вы получили подписанный PDF-файл, можно попросить подписавшего удалить подпись и отправить вам PDF-файл повторно или же запросить неподписанную копию PDF-файла.

Можно ли получить доступ к неподписанной версии PDF-файла и подписать его снова?

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

Что делать, если PDF блокируется после подписания?

Для вас или лица, подписывающего документ, доступна возможность его блокировки после подписания. В этом случае документ можно будет использовать только для чтения — его невозможно будет изменить и даже добавить подпись. Функция Блокировка документа после подписания полезна, если вы подписываете документ последним или если вы единственное подписывающее лицо. 

Блокировка документа после подписания

В каких случаях документ PDF блокируется?

При подписании PDF-файла с помощью цифрового идентификатора, для других пользователей документ становится доступен только для чтения. Если вы получили документ PDF с цифровой подписью, вы можете подписать его, но не можете редактировать.

Если лицо, подписавшее PDF-файл, решит заблокировать его содержимое после подписания, он становится доступен только для чтения для всех, в том числе и для подписавшего.

Что делать, если требуется несколько подписей и PDF-файл блокируется после первой подписи?

В этом случае можно только создать документ PDF заново или запросить его копию у владельца. Как правило, документ PDF заблокирован и его нельзя редактировать, однако его можно подписать, при условии что вы или первый владелец не установили флажок Блокировка документа после подписания при подписании. 

Как лучше справляться в такими проблемами в будущем?

Перед подписанием PDF-файла можно сохранить его копию. Кроме того, при подписании документа PDF появляется запрос на его сохранение в формате PDF. Можно выбрать для него другое имя, чтобы сохранить исходную, неподписанную копию документа.

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

Файлы формата PDF используют практически все компании и правительственные учреждения. Нередко для обеспечения аутентичности документа в них применяются цифровые подписи. Группа исследователей из нескольких немецких университетов задалась вопросом, насколько надежно применение цифровой подписи защищает PDF-файлы от изменения его содержимого. Владислав Младенов из Рурского университета в Бохуме поделился находками группы на мероприятии Chaos Communication Congress (36С3).

Если подписанный файл открыть любой программой, созданной специально для просмотра PDF, то она покажет отметку, что файл подписан, укажет, кем именно, и откроет доступ к меню валидации подписи. Исследователи поставили себе задачу: взять подписанный PDF-документ (контракт, счет или какой-нибудь рецепт) и изменить его содержимое так, чтобы подпись оставалась валидной. Теоретически злоумышленники могут использовать такой трюк для того, чтобы подложить кому-нибудь ложную информацию или же добавить в файл вредоносный контент. Ведь на ссылку в документе, присланном и подписанном банком, клиенты с большой вероятностью кликнут не задумываясь.

Для проверки исследователи выбрали 22 популярные программы для просмотра PDF, разработанные для разных платформ, и методично скармливали им результаты своих экспериментов.

Структура PDF-файла

Структура PDF-файла. Источник: https://media.ccc.de/v/36c3-10832-how_to_break_pdfs

Для начала нужно сказать несколько слов о том, как устроен формат PDF. Файл состоит из четырех основных частей: заголовка (Header), где хранится версия PDF; основной части, где размещается контент, который видит пользователь (body); раздела Xref, представляющего собой каталог, в котором перечислены объекты внутри основного раздела и их местонахождение (он служит для корректного отображения контента); и трейлера (trailer) — раздела, с которого программы для чтения PDF начинают обработку документа. В трейлере находятся два важных параметра, сообщающих программе, с какого элемента следует начинать обработку файла, а также показывающих, где в файле начинается раздел Xref.

В формате реализована функция инкрементного обновления — именно она позволяет, например, выделять часть текста маркером и оставлять комментарии. С технической же точки зрения она добавляет еще три раздела: обновления для основной части, новый каталог Xref и новый трейлер. По сути, это позволяет изменять то, как объекты будут отображаться у пользователя. В том числе — добавлять новый контент.  Фактически цифровая подпись — это тоже инкрементальное обновление, которое точно так же добавляет дополнительный элемент и соответствующие ему разделы в файл.

Атака типа «инкрементальное сохранение» (Incremental saving attack, ISA)

Добавление инкрементального сохранения. Источник: https://media.ccc.de/v/36c3-10832-how_to_break_pdfsПервое, что исследователи попробовали, это просто добавить в файл при помощи текстового редактора дополнительные разделы с еще одним инкрементальным обновлением. По большому счету это даже нельзя назвать атакой — они просто использовали предусмотренную авторами формата функцию. При открытии такого файла обычно выводится сообщение, что цифровая подпись валидна, но документ был изменен. Надо сказать, утверждение не самое однозначное — неопытного пользователя оно вполне может смутить. Что еще хуже, одна из программ для просмотра PDF (LibreOffice) не показала и этого.

Следующим экспериментом стало удаление двух последних разделов (то есть обновление в основной раздел добавляется, а новые Xref и Trailer — нет). Некоторые приложения отказались работать с таким файлом. Две программы для просмотра PDF увидели, что разделов нет, и автоматически достроили их, не оповещая об изменении контента. Еще три без каких-либо возражений проглотили такой формат.

Далее исследователи задумались, а что будет, если цифровую подпись взять и просто-напросто скопировать в свое «ручное» обновление. На этом прокололись еще две программы — Foxit и MasterPDF.

Итого — 11 из 22 приложений для работы с PDF так или иначе оказались уязвимы к несложным манипуляциям с разделом. Причем в случае шести из них у пользователя, открывшего с их помощью документ, не было никаких шансов определить, что он был изменен. В остальных пяти случаях, чтобы увидеть факт манипуляции, пользователь должен был войти в меню и попробовать проверить валидность цифровой подписи, но при открытии файла никаких признаков изменения документа заметить также невозможно.

Атака типа «заворачивание подписи» (Signature wrapping attack, SWA)

Добавление цифровой подписи. Источник: https://media.ccc.de/v/36c3-10832-how_to_break_pdfsКогда документ подписывают, в инкрементальном обновлении добавляются два важных поля: /Contents, где содержится собственно подпись, и /ByteRange, в котором описывается, что именно было подписано. В нем находятся четыре параметра, определяющих начало файла, количество байтов до кода подписи, байт, определяющий, где код подписи кончается, и количество байтов после нее. Дело в том, что цифровая подпись — это последовательность символов, получаемая криптографическими методами из кода PDF-документа. По объективным причинам она не может подписывать сама себя, поэтому область, где хранится подпись, исключается из вычислений.

Исследователи попробовали добавить еще одно поле /ByteRange сразу после подписи. Первые два значения в нем остаются неизменными, меняется только адрес конца кода подписи. В результате в файле появляется дополнительное пространство, в которое можно добавить какие-нибудь вредоносные объекты и описывающий их раздел XRef. По идее, если бы файл читался правильно, то до этого раздела программа бы просто не добралась. Однако 17 из 22 приложений оказались уязвимыми к такой атаке.

Универсальная подделка подписи (Universal signature forgery, USF)

Исследователи решили на всякий случай проверить приложения и при помощи стандартных пентестерских приемов — попробовать заменить значения разных полей на некорректные или просто удалить их. При экспериментах с разделом /contents выяснилось, что если вместо реальной подписи в нем будет значение 0x00, то две программы для просмотра все равно будут успешно валидировать ее.

А что будет, если оставить подпись на месте, но удалить информацию о том, что именно подписано (то есть раздел /ByteRange)? Или поставить в нем вместо реальных значений null? В обоих случаях нашлись приложения, которые валидировали такую подпись.

Итого, четыре программы из 22 имели ошибки в имплементации, которые можно эксплуатировать.

Если посмотреть на сводную таблицу по итогам исследования, то видно, что так или иначе удается обмануть 21 из 22 программ для просмотра PDF. То есть при необходимости почти под каждую из них можно сделать PDF-файл с вредоносным контентом или ложной информацией, но в глазах пользователя он останется подписанным автором.

Сводная таблица уязвимостей в приложениях для чтения PDF. Источник: https://media.ccc.de/v/36c3-10832-how_to_break_pdfs

Сводная таблица уязвимостей в приложениях для чтения PDF. Источник.

Забавно, что единственное приложение, не поддавшееся ни на одну из уловок исследователей, это Adobe Reader 9. Проблема в том, что он подвержен RCE-уязвимости, а потому он стоит только у пользователей Linux — просто потому, что это последняя доступная для них версия.

Практические выводы

Какой практический вывод можно сделать из этого? Во-первых, что не стоит слепо доверять цифровой подписи PDF-файла. Если где-то рисуют зеленую галочку, это не значит, что подпись действительно валидна.

Во-вторых, даже подписанный документ может представлять опасность. Так что прежде чем открывать любые файлы, полученные из Интернета, и переходить по ссылкам из них, следует убедиться, что у вас на компьютере стоит надежное защитное решение.

Время прочтения
4 мин

Просмотры 14K

Рис. 1. Процедура инкрементального сохранения, на которой основаны цифровые подписи PDF. По результатам тестирования, это самый эффективный способ подделки документов

Теоретически, цифровые подписи PDF надёжно удостоверяют автора документа. Но на практике обработку PDF обычно осуществляет проприетарный софт, который не совсем корректно выполняет проверку. Специалисты Рурского университета в Бохуме (Германия) описали несколько вариантов подделки PDF-документов с цифровой подписью, которые срабатывают в большинстве программ просмотра PDF и сервисов онлайновой проверки.

Защита от всех атак обеспечивается только в единственной программе, да и та работает под Linux.

Структура PDF

Рис. 2. Структура документа PDF

Структура документа PDF изображена на рис. 2. При инкрементальном сохранении изменений в PDF-документ добавляются новые объекты в body, а также новая таблица Xref с описанием новых объектов и новый trailer со ссылками на catalog (см. рис. 1). Каталог — это корневой объект PDF-файла, он определяет структуру документа и может дополнительно определять разрешения на доступ.

Каждый объект начинается с номера объекта и номера версии, который увеличивается при каждом обновлении объекта.

Рис. 2. Структура объекта PDF

Создание подписи

Добавление цифровой подписи в PDF-документ полагается на механизм инкрементального сохранения (см. рис. 1). При добавлении подписи во время инкрементального сохранения в документ добавляется следующий контент:

  • новый Catalog с новый параметром Perms, который определяет разрешения на изменение документа; этот параметр ссылается на объект Signature;
  • объект Signature (5 0 obj) с информацией о криптографических алгоритмах, использованных для хэширования и подписи документа, с параметром Contents, который содержит hex-кодированный блоб PKCS7 — в нём хранятся сертификаты и значение подписи, созданной с помощью приватного ключа, который соответствует открытому ключу в сертификате. Параметр ByteRange определяет, какие байты PDF-файла используются на входе функции хэширования для вычисления подписи (пары a, b и c, d), то есть какая часть файла подписывается;
  • новая таблица Xref со ссылкой на новый объект;
  • новый Trailer.

На рис. 3 приведена упрощённая схема PDF-файла с цифровой подписью.

Рис. 3. Упрощённая схема PDF-файла с цифровой подписью

Согласно текущим спецификациям, рекомендуется подписывать весь файл, за исключением блоба PKCS7.

Проверку подписи осуществляет приложение, в котором открывается PDF-документ. Оно сразу извлекает подпись из PDF и применяет криптографические операции для проверки её корректности, а затем проверят, можно ли доверять сертификату X.509, ключи которого использовались для подписи.

Что характерно, все приложения для чтения PDF не доверяют встроенному в операционную систему хранилищу ключей. Как и браузер Firefox, они распространяют собственное хранилища ключей и обычно позволяют пользователю указать хранилище с доверенными сертификатами. Эта функция позволяет доверять только определённым сертификатам, например, от собственного центра сертификации.

Подделка цифровой подписи

Исследователи описывают три способа подделки с изменением содержимого подписанных PDF-документов.

  • универсальная подделка подписи (Universal Signature Forgery, USF);
  • атака на инкрементальное сохранение (Incremental Saving Attack, ISA);
  • атака на обёртку подписи (Signature Wrapping Attack, SWA).

Универсальная подделка подписи (USF)

Атака USF предусматривает отключение проверки подписи в приложении, которое открывает PDF. При этом пользователю выводится нормальное сообщение об успешной валидации подписи. Это делается с помощью манипуляции объектом Signature в документе: или внутри этого документа создаётся некорректная запись, или из файла удаляется ссылка на сам объект. Хотя программа просмотра PDF не может проверить корректность подписи, но в некоторых случаях программа всё равно показывает её наличие, что удовлетворяет целям злоумышленника.

Исследователи сформулировали 18 векторов атаки USF, восемь из них показаны на рис. 4.

Рис. 4. Восемь вектором атаки для обхода проверки цифровой подписи

Все эти способы работают в том случае, если программа просмотра PDF неправильно осуществляет проверку цифровой подписи.

Атака на инкрементальное сохранение (ISA)

Этот класс атак заключается в переопределении структуры и контента в добавочной секции документа. Идея в том, что подпись вычисляется на основе диапазона байтов, указанного в ByteRange, а добавочная секция не попадает в этот диапазон, как показано на рис. 5.

Рис. 5. При добавлении контента в добавочную секцию не нарушается цифровая подпись

Есть несколько способов, как обойти проверку на изменение документа и блокировать показ соответствующего предупреждения в программе просмотра PDF-документов.

Атака на обёртку подписи (SWA)

Наконец, последний класс атак позволяет обойти проверку подписи без инкрементального сохранения, а путём перемещения подписанной части PDF в конец документа и повторного использования указателя xref в подписанном Trailer на изменённую таблицу Xref. При этом чтобы избежать обработки перемещённой части, она может быть обёрнута в какой-нибудь посторонний объект, например, stream или dictionary.

Рис. 6. Сравнение оригинального и изменённого документов PDF

Эффективность атак

Исследователи проверили эффективность каждого типа атаки в разных программах для просмотра PDF. Не удалось обмануть только Adobe Reader 9 под Linux. Во всех остальных программах проверка подписи обходится одним или несколькими способами.

Не лучше ситуация и с сервисами онлайновой проверки цифровой подписи PDF.

Что такое цифровой сертификат

Цифровой сертификат – это электронный документ, который удостоверяет личность пользователя и предотвращает подделку содержимого документа. Проще говоря, сертификат гарантирует, что автором документа является именно тот человек, который его создал, а содержание документа действительно написано им.

Цифровой сертификат выпускается доверенными организациями, которые называются Certificate Authority (CA). Эти организации проверяют личность заявителя и удостоверяют подлинность его открытого ключа. Сертифицирующая организация подписывает открытый ключ заявителя своей цифровой подписью, тем самым удостоверяя его подлинность и доверенность. После этого любая программа может идентифицировать данный открытый ключ как подлинный и использовать его для шифрования или подписи документов.

Для получения цифрового сертификата вы должны оставить заявку в соответствующую сертифицирующую организацию. Популярными центрами сертификации являются, например, следующие:

  • VeriSign
  • Thawte
  • DigiCert
  • GlobalSign
  • DocuSign
  • Comodo

Некоторые из них предлагают цифровые сертификаты бесплатно, другие – за деньги.

Кроме того, вы можете создать собственный самоподписанный (self-signed) сертификат с помощью OpenSSL. Эта процедура подробно описана здесь.

ВНИМАНИЕ: В состав программы Master PDF Editor не входит никаких цифровых сертификатов. Вы должны сами его получить в одном из центров сертификации, чтобы подписывать свои документы.

Как создать и проверить цифровую подпись

Цифровая подпись – это эффективный способ защитить документы от изменений и гарантировать подлинность автора.

Цифровая подпись удостоверяет, что подписанный документ не изменялся третьими лицами без согласия автора. Цифровая подпись обычно используется, чтобы убедиться в подлинности содержимого документа. Подпись PDF документа основана на цифровом сертификате, выпущенном надежным центром сертификации.

Программа Master PDF Editor позволяет выполнять валидацию цифровых подписей, а также создавать их и подписывать ими PDF документы.

Примечание: не следует путать цифровую подпись со вставкой инициалов. В то время как цифровая подпись обеспечивает подлинность документа, его целостность и исключает возможность отказа от авторства, инициалы — это просто «автограф», информирующий читателя об авторстве документа.

Создание цифровой подписи. Подписание документа PDF

Чтобы создать подпись, вы должны быть владельцем цифрового сертификата. Сертификат можно получить в различных организациях, выпускающих цифровые сертификаты (например, VeriSign), которые выступают в роли надежного посредника, гарантирующего  подлинность цифровой подписи. Центры сертификации выпускают и удостоверяют подлинность сертификатов, владельцами которых являются частные лица или организации.

P.SНа Mac и Windows сертификат необходимо предварительно скопировать в системное хранилище сертификатов. На Linux необходимо предварительно импортировать сертификат в Менеджер цифровых сертификатов

Чтобы создать цифровую подпись:

  • Выберите в меню Формы > Подпись или нажмите кнопку Подпись  на панели инструментов. В документе обозначьте прямоугольную зону, в которой будет располагаться цифровая подпись.

Теперь вы можете подписать документ, при условии, что у вас есть цифровой сертификат.

  1. Выберите прямоугольную зону подписи в документе. Это можно сделать любым из следующих способов:

Появится окно Свойства подписи.

2. Выберите сертификат, который вы хотите использовать для подписи документа, задав его в выпадающем списке Подписать как.

  1. Настройте внешний вид подписи.

При оформлении внешнего вида подписи доступны следующие параметры для изменения.

  • Блокировка документа после подписания – запретить изменение содержимого формы после подписания документа.
  • Предварительный просмотр подписи – отображение внешнего вида подписи в окне.

Настройки оформления – Граница

  • Показать границу – показать/скрыть границу подписи.
    • Скругление углов – скруглить форму углов границ подписи.
    • Цвет – выбрать цвет границ подписи.

Настройки оформления – Текст

  • Показывать текст – включить/отключить отображение текста в подписи. Также есть возможность скрыть/показать определённый текст подписи:
    • Имя
    • Электронная почта
    • Дата
    • Источник цифровой подписи
    • Время
  • Формат даты – изменить формат написания календарной даты.
  • Ввести свой текст – использовать свой текст подписи, задав его в соответствующем поле.
  • Формат по ГОСТу – автоматически оформить подпись по государственному стандарту.

Если выбрать опцию Ввести свой текст, появится возможность редактировать текст подписи во всплывающем окне Текстовый редактор. Таким образом, можно изменить и форматировать текст подписи.

Настройки оформления – Изображение

  • Показывать изображение – включить/отключить возможность добавления и отображения изображения в подписи.
  • Растянуть – растянуть изображение на всю ширину области подписи.

4. Укажите обоснование для подписи. Выберите одно из предложенных обоснований или введите свой текст.

5. Нажмите кнопку Подписать, чтобы подписать документ.

На macOS и Windows вам потребуется разрешить приложению доступ к хранилищу сертификатов. В процессе создания подписи программа спросит имя файла и папку. Укажите имя файла, под которым следует сохранить подписанный PDF документ.

ВАЖНО: Подписывать следует окончательную версию документа, когда всякое редактирование уже закончено. Если документ будет изменен после подписывания, эти изменения сделают подпись недействительной.

Проверка (валидация) цифровой подписи

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

Для проверки цифровой подписи:

  1. Откройте PDF документ в программе Master PDF Editor
  2. Выберите подпись в документе. Это можно сделать одним из следующих способов:

Появится окно Свойства подписи.

Здесь вы можете увидеть, кто подписал документ, а также обоснование подписи и подробности проверки подписи: является ли подпись действительной или недействительной, либо валидность подписи неизвестна.

  • Неизвестно – сертификат подписи не является доверенным, либо родительский сертификат организации, выдавшей сертификат подписи, не является доверенным. Это означает, что подпись действительна и в документ не вносилось изменений после подписи, однако действительность самой подписи неизвестна. Отображается следующее сообщение в окне Свойства подписи:

  • Действительна – сертификат подписи является доверенным, и его родительские сертификаты являются доверенными. Это означает, что содержимое документа не модифицировалось после подписи. Действительная подпись отображается в окне Свойства подписи так:

  • Недействительна – в документ вносились изменения после подписи.

Как сделать сертификат доверенным

Для Windows и Mac OS X: Вы должны добавить открытый ключ сертификата в системное хранилище сертификатов.

Для Linux: Вы должны добавить oткрытый ключ сертификата в Менеджер сертификатов.

Просмотр подписанной версии PDF документа

Структура PDF формата такова, что она оставляет возможность подмены оригинального подписанного содержимого измененным содержимым. Именно измененное содержимое будет отображаться при открытии файла. Однако оригинальное подписанное содержимое все еще находится в PDF файле и может быть просмотрено.

Чтобы увидеть подписанную версию содержимого документа, сделайте следующее:

  1. Откройте PDF документ
  2. Перейдите на вкладку Подписи в левой панели.
  3. Нажмите ссылку Нажмите, чтобы посмотреть эту версию.

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

ВАЖНО: Всегда просматривайте подписанную версию так, как описано выше, при открытии документов, достоверность подписи которых неизвестна.

Читайте также:

Менеджер цифровых сертификатов

Шифрование паролем

Шифрование сертификатом

Понравилась статья? Поделить с друзьями:
  • Как изменить pdf file
  • Как изменить resource cfg
  • Как изменить pbo файл
  • Как изменить remote origin url
  • Как изменить path через командную строку