2016-04-07 2 views
0

Я работаю над PDF Signer/Validator и не знаю, как я должен обрабатывать pdf-файлы с несколькими сигнатурами и словарями dss.Pades Подпись с несколькими словарями DSS

Вот сценарий: Файл PDF дважды подписан, а после второй подписи, словарь DSS добавляется с СОС, CERTs и OCSPs обеих подписей:

[ Signature 1 ] 
[ Signature 2 ] 
DSS << 
    VRI << 
     /HashSignature1 10 0 R 
     /HashSignature2 11 0 R 
    >> 
    ... 
>> 

До сих пор, так хорошо , Обе подписи охватываются только в словаре DSS документа. Но кто-то решил подписать этот же документ, а также добавить свои CRL и все остальное. Затем, я должен создать новый словарь DSS, и мой вопрос: Должны ли старые подписи, уже охваченные в другом словаре DSS, быть в этом? Я так думаю, поскольку DSS находится внутри обновленного каталога документов (и вы удалили ссылку на последний словарь), но в компании мало согласия.

[ Signature 1 ] 
[ Signature 2 ] 
DSS << 
    VRI << 
     /HashSignature1 10 0 R 
     /HashSignature2 11 0 R 
    >> 
    ... 
>> 
[ Signature 3 ] 
DSS << 
    VRI << 
     /HashSignature1 10 0 R 
     /HashSignature2 11 0 R 
     /HashSignature3 16 0 R 
    >> 
    ... 
>> 

ИЛИ

[ Signature 1 ] 
[ Signature 2 ] 
DSS << 
    VRI << 
     /HashSignature1 10 0 R 
     /HashSignature2 11 0 R 
    >> 
    ... 
>> 
[ Signature 3 ] 
DSS << 
    VRI << 
     /HashSignature3 16 0 R 
    >> 
    ... 
>> 

ли оба правильно? Только один из них? С одним?

ответ

2

Андреа Валле, от Adobe, уточнить это для меня по электронной почте:

Это обсуждалось в ESI в течение некоторого времени, и, наконец, команда решила уточнить это в EN 319 142-1.

См раздел 5.4.1 на странице 11 версии 1.1.0:

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

ПРИМЕЧАНИЕ: В общем, словарь DSS будет содержать данные проверки предыдущих версий плюс данные проверки, добавленные для текущей версии. Если записи удаляются из словаря DSS во время инкрементного обновления, набор данных проверки может быть неполным для проверки подписей, но замена данных валидации - например, более актуальная информация о статусе сертификата - может быть выполнена по соображениям оптимизации.

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

Чтение немного дальше на том же документе:

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

СПР предназначен для обеспечения одного места, где всех информации должна быть размещена.

Итак, если вы не размещаете там всю информацию, вы ничего не сломаете, но вы не используете DSS по назначению.

Тогда ответ: подписчик pdf должен использовать первый подход, но валидатор PDF должен быть подготовлен ко второму.


EDIT:

На самом деле, любой Падес валидатор должен проверить либо записи DSS существовали ранее в любом случае. Если вы проверите только последний, можно повторно проверить недопустимую подпись, если сертификат CA, используемый для подписи CRL или OCSP, был скомпрометирован последним, и эта поддельная информация была добавлена ​​в последнюю DSS.

Пример:

  1. Sig 1 была сделана с отозванным сертификатом добавляют
  2. Все DSS записей, а подпись обязательно будет недействителен
  3. DocumentTimeStamp добавляется, защищая этот DSS.

  4. Sig 1 сертификат СА compromissed

  5. Sig 2 выполнен с действительным сертификатом добавляют

  6. Sig 2 записей DSS, LTV включение подписи
  7. Sig 1 CRL/OCSP заменяется на поддельный, сделанный с помощью сертификата CAC

В этой ситуации валидатор, который опирается на самый последний DSS w плохо проверить Sig 1, если это не так. Вот почему вы добавляете DocumentTimeStamp для защиты информации об этой сигнатуре.


TL; DR:

Оба варианта правы. DSS должен иметь информацию обо всех подписях, но это не обязательно. И валидатор должен проверить DSS, который был сделан сразу после подписи, а не только последний.

+0

* Так что это действительно обязательный ... * - нет, а не ** обязательный **, просто ** рекомендуется ** ('should', not 'should'). – mkl

+0

@mkl Вы правы. На самом деле рекомендуется, я уточню ответ еще несколькими пунктами. –

+0

Имейте в виду, что как именно вы должны и не должны обрабатывать информацию PAdES LTV, зависит от вашего самого варианта использования. Вы даже можете явно выбросить некоторую информацию, не необходимую в контексте. Независимо от того, используются ли временные метки, зависит также от варианта использования и профиля PAdES. – mkl

0

Поскольку в словаре каталога есть только одна запись DSS, вам необходимо обновить существующий DSS-файл (соответственно словарь VRI и другие значения).

+0

Я понимаю и согласен с вами, что это лучший подход. Но обязательно ли это? старый DSS по-прежнему встроен, и старый каталог все еще ссылается на него. Если это не является обязательным, часть валидации программного обеспечения будет иметь дело с несколькими записями DSS. –

+0

Но запись DSS может указывать только на один объект. И вам необходимо обновить хотя бы эту запись или ее содержимое. Невозможно получить доступ к объекту предыдущей версии (по умолчанию). Просто потому, что у вас есть несколько словарей Catalog в вашем источнике PDF, только один из них является правильным/последним. –

+0

Я полностью согласен с тобой, это должно быть, но на самом деле это не обязательно = (. См. Мой ответ для получения дополнительной информации. –

Смежные вопросы