В канун дня защиты информации мы решили подготовить материал по защите документов PDF. PDF-документы сегодня стали одним из мировых стандартов, будет не лишним понимать, как его защитить.
От чего защищать документ PDF?
Сразу отмечу, что изменения могут быть санкционированными и даже желательными - достаточно часто PDF пересылают на подпись (и стандартные средства работы, такие, как Adobe Acrobat Reader позволяют подписать такой документ), или же это документ-анкета, со встроенными редактируемыми полями, интерактивными формами.
По работе с PDF в FastReport есть множество статей, в том числе как создавать PDF c интерактивными формами:
Но есть отдельный тип PDF-документов - те, которые нельзя редактировать, а если какой-нибудь негодяй человек попытался бы что-то изменить, то мы бы об этом узнали.
Прежде всего, это документы с электронной подписью - подпись удостоверяет валидность именно этого документа.
С версией 2019.3.2 в FastReport.Net стали доступны 2 вида подписи:
1) Поле для подписи. Чтобы его добавить на ваш документ, нужно добавить Digital Signature, она же «Цифровая подпись». При размещении этого контрола на странице отчета он выглядит так:
В режиме просмотра отчета он не отображается. Его функциональность ограничивается исключительно PDF экспортом, а это значит, что вы увидите это поле при просмотре PDF файла в Acrobat Reader.
При экспорте в PDF включаем опцию подписывания:
2) Невидимая подпись. Для невидимой подписи PDF экспорта не нужно добавлять контрол Digital Signature на страницу отчета. Стоит лишь включить опцию подписывания в настройках экспорта:
Вы можете заполнить информационные поля Location, Reason и Contact Info. Далее нужно выбрать файл сертификата подписи в формате pfx и задать пароль от сертификата. Вы можете не выбирать файл сертификата на данном этапе. А после экспорта отчета, в PDF документе уже можно найти скрытую подпись. Важно подчеркнуть тот факт, что эту подпись не видно непосредственно в документе.
Подробнее об электронной подписи можно почитать в нашей статье.
Кроме того, существуют и так называемые "архивные" форматы - PDF/A - этот документ самоценен, он содержит внутри себя всю информацию (не "подтягивает" из внешних источников изображения, шрифты и любые другие данные, которые могут быть скомпрометированы или просто убраны), кроме того, в свойствах документа явно указано, что он нередактируемого формата. Можно ли его открыть для редактирования? Можно всё, но в таком случае он потеряет этот самый признак архивности, то есть мы явно увидим, что документ был изменён.
В статье “Как сделать экспорт отчёта в формате PDF/A” подробно описаны особенности и возможности этого формата.
Данная статья не имеет целью обзор методов взлома защищенных PDF-файлов (это отдельная большая тема, не наша, в частности, вот профессионалы из Elcomsoft описывают свой подход.
PDF как формат содержит встроенные механизмы парольной защиты.
Пароль позволяет защитить документ от одного или сразу нескольких действий:
Современные PDF используют в парольной защите шифрование AES (расширенный стандарт шифрования) с использованием 128-битных ключей, что усложняет задачу нахождения пароля (но не делает невозможным!) при 128-битном шифровании количество ключей составляет 2128.
FR .NET:
FR VCL:
Во вкладке “Security” можно настроить такие поля как:
Есть также защита документа с помощью сертификатов (с открытым и закрытым ключами для цифровой подписи и открытия документа). Открытый (public) включается в сертификат и используется для шифрования информации, а закрытый (private) - для расшифровывания и цифровой подписи документа. Говорить о 100% защите ещё рано. Тем не менее, на сегодняшний день это пожалуй самый защищенный формат электронных документов.
Надеюсь, эта статья поможет вам давать вашим пользователям инструменты защиты PDF, а вашим пользователям более осознанно относиться к безопасности документов. В любом случае нет 100% защиты и безопасности, защита документов это всего лишь небольшая часть комплексной системы безопасности, в которой должны быть не только технические, но и организационные меры.
Также рекомендуем почитать: