Всеобъемлющая методология начинается с разделения конвейера подписания и конвейера валидации, чтобы изолировать области дефектов. Тестировщики должны выполнять криптографическую проверку с помощью командных инструментов OpenSSL, чтобы подтвердить целостность структуры CMS (Cryptographic Message Syntax), независимо от PDF-программы просмотра. Визуальное регрессионное тестирование должно захватить виджеты внешнего вида подписи в Adobe Acrobat, Firefox PDF.js, Chrome PDFium и мобильных рендерах iOS PDFKit, чтобы обнаружить ошибки в интерпретации системы координат. Темпоральная валидация требует манипуляции системными часами для проверки дат, превышающих срок действия сертификатов, чтобы удостовериться, что цепочки PAdES-LTV сохраняют действительность через встроенные OCSP ответы и токены TSA.
В юридической технологической компании мы внедрили платформу для исполнения контрактов, использующую сертификаты ECDSA P-256 от аккредитованного провайдера доверенных услуг в рамках eIDAS. Критический дефект возник, когда документы, подписанные на macOS, отображали действительные подписи в Preview и Adobe Acrobat, но нативный просмотрщик PDF.js в Chrome сообщал "действительность подписи неизвестна", несмотря на наличие встроенных OCSP ответов в структуре файла.
Мы оценили три различных подхода к устранению проблемы. Первый подход включал миграцию на криптографические ключи RSA 2048, которые предложили более широкую совместимость с более старыми парсерами PDF, но это увеличивало размеры подписи примерно на сорок процентов и значительно ухудшало производительность на мобильных устройствах с ограниченными вычислительными ресурсами. Второй подход рассматривал отключение встраивания LTV для упрощения структуры документа и уменьшения сложности парсинга, но это привело бы к недействительности подписей после истечения срока действия сертификата, что нарушало бы регуляторные требования к десятигодичному хранению документов в юридическом контексте. Третий подход сосредоточился на переструктурировании словаря DSS (Document Security Store), чтобы поместить массивы OCSP ответов перед ссылкой на ByteRange в линейной структуре файла, что соответствовало требованиям линейного парсинга PDF.js без увеличения размеров файлов или компрометации долговечности, хотя и требовало сложной низкоуровневой манипуляции объектами PDF.
Мы выбрали третье решение, так как PDF.js строго соблюдает требования порядка линейного парсинга, в то время как Adobe Acrobat использует более свободную модель парсинга с произвольным доступом. Реализация решения устранила несоответствие в действительности между платформами, обеспечив一致ные индикаторы "подпись действительна" на всех целевых платформах и соблюдение строгих стандартов PDF/A-3 и долговечности PAdES-LTV для соответствия требованиям долгосрочной архивации.
Как уровень соответствия PDF/A влияет на видимость цифровой подписи и механизмы проверки?
Многие тестировщики ошибочно рассматривают соответствие PDF/A как бинарное состояние, а не как многоуровневую спецификацию. PDF/A-1b гарантирует только визуальную воспроизводимость, тогда как PDF/A-2a требует пометок структуры и таблиц символов Unicode. При создании подписи потоки внешнего вида должны использовать шрифты, встроенные в строку DA (Default Appearance) документа. Если служба подписания вводит системные шрифты, отсутствующие в исходном наборе шрифтов документа, проверка PDF/A не пройдет после подписи, даже если сама криптографическая подпись остается математически верной. Тестировщики должны удостовериться, что подмножество шрифтов происходит во время генерации виджетов подписи и что словарь /DR (Default Resources) ссылается только на ранее встроенные потоки шрифтов, а не на имена системных шрифтов.
Почему встроенные ответы OCSP иногда не устанавливают статус LTV (долгосрочная проверка), несмотря на криптографическую корректность?
Кандидаты часто проверяют только наличие байтов ответа OCSP в словаре DSS без проверки полноты цепочки проверки. Установление LTV требует полной цепочки доверительных корней, включая сертификат ответчика OCSP, токен временной метки и сам сертификат временной авторизации. Если ответ OCSP подписан сертификатом, который требует проверки собственных аннулирований, но не имеет встроенного ответа OCSP для ответчика в массиве Certs, Adobe Acrobat откажется включить режим LTV. Тестировщики должны подтвердить, что массив Certs в DSS включает все промежуточные сертификаты вплоть до корневого CA и что каждая временная метка охватывает как подпись, так и ответ OCSP, чтобы достичь минимального соответствия уровню PAdES-T.
Что вызывает неправильное выравнивание внешнего вида подписи между Adobe Acrobat и мобильными PDF-просмотрщиками?
Массив Rect (прямоугольник), определяющий позиционирование виджета подписи, использует системы координат страницы, которые разные программы просмотра интерпретируют по-разному. Adobe Acrobat вычисляет координаты от нижнего левого угла (стандартное пространство координат PDF), в то время как некоторые мобильные программы просмотра, такие как iOS PDFKit, применяют вычисления CropBox от верхнего левого угла, когда присутствуют записи Rotate. Если виджет подписи использует отрицательные координаты или выходит за пределы границ MediaBox, настольные просмотрщики могут различно обрезать отображение по сравнению с мобильными реализациями. Тестировщики должны валидировать координаты относительно границ как CropBox, так и ArtBox, и проверять, что записи Rotation в словарях страниц учитываются, применяя матрицы преобразования к объекту внешнего вида XObject, а не просто корректируя координаты виджета.