Как добавить VRI dictonary в PDF

#pdf #pdfbox #signature #dss

#PDF #pdfbox #подпись #dss

Вопрос:

вот! Я использую pdfbox 1.8.11 для создания подписи pdf, я мог бы создать подпись с поддержкой LTV со встроенным словарем DSS. Теперь проблема заключается в проверке сертификата при наличии нескольких подписей.

Согласно спецификации PDF 2.0 LTV и PAdES LTV, разрешено добавлять VRI для каждой подписи, чтобы можно было проверять связанные данные отзыва для каждой конкретной подписи.

Есть идеи, как добавить словарь VRI для подписи? Поскольку ключом для VRI является хэш в кодировке a base-16, это означает, что сначала мне нужно иметь подпись. Насколько я знаю (надеюсь, я ошибался), подпись создается, когда PDF с информацией, связанной с подписью, сохраняется в выходной поток. ( PDDocument.saveIncremental(ins, outs) )

============================================================

более подробно:

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

Если я правильно понимаю:

  1. DSS содержит данные отзыва для всех подписей, которые у нас есть в подписанном PDF.

Ситуация, с которой я столкнулся: Предположим: есть два пользователя, пользователь A и Пользователь B, их сертификаты выданы одними и теми же CA: s. (Я думаю, это довольно распространенное явление. )

  1. Пользователь A подписал документ с помощью DSS (сертификаты / crls / ocp встроены).
  2. Несколько дней спустя пользователь B подписывает документ, подписанный пользователем A, с помощью DSS (сертификаты / crls / ocps). Примечание!: crls идентифицируются по идентификатору эмитента.

Этап проверки подписи:

Когда я хочу перестроить цепочку сертификатов, сверьте сертификат sign с crl и ocsp, особенно когда я хочу проверить, что срок действия crl не истек на момент подписания документа, мне нужно убедиться, что я использую правильную версию crl.

Для меня это означает, что я должен проверить, правильно ли сопоставлены сертификаты / crls / ocsp с подписью. В противном случае проверка больше не является надежной, равно как и бессмысленной.

Следовательно, даже несмотря на то, что последняя спецификация PAdES 103 не рекомендует использовать VRI. Серьезно, я думаю, что это неправильно….

Тогда другая проблема:

Как я прокомментировал ниже, я использую pdfbox для подписи pdf.

  1. Если я заранее соберу данные DSS, создайте подпись впоследствии. (Дело в том, что DSS также является частью подписанного контента.)

    • Хорошая вещь: acrobat Reader распознает мою подпись, включен LTV.
    • Плохо то, что в такой ситуации я не могу добавить туда VRI. Ключом для VRI является хэшированное значение подписи.
  2. Если я сначала подпишу документ, а затем получу подпись и DSS с помощью VRI, acrobat reader больше не распознает DSS. Моя подпись больше не поддерживает LTV в acrobat Reader. Это проблема, в которой я запутался. Является ли acrobat Reader неправильным при проверке LTV или??

Я считаю это неправильным? Если я что-то понял неправильно, пожалуйста, укажите на это. Заранее спасибо!

Комментарии:

1. Есть идеи, как добавить словарь VRI для подписи? — Вы уже что-нибудь пробовали? … Теперь проблема заключается в проверке сертификата при наличии нескольких подписей. — Почему это проблема?

2. Ну, честно говоря, я определенно пытался. Возможно, я не понимаю, как правильно его использовать. Так что, если будут какие-либо подсказки, я буду очень признателен. Ключ VRI для каждой конкретной подписи — это хэшированная подпись base16, верно? 1. Подпись создается при вызове document.saveincremental(), что означает, что она будет записана в файл на реальном диске. 2. Мне нужно добавить DSS на основе этого файла, который уже не находится в той же области содержимого. (Пока что я добавил DSS с полными необходимыми сертификатами / crl / ocsp, acrobat reader больше не распознает подпись как включенную LTV.)

3. да, вы правы. можно добавить DSS, содержащий VRI, но меня беспокоит то, что Acrobat reader не распознает его, когда я добавлю DSS позже.

4. Если вы начинаете с нуля, было бы лучше использовать версию 2.0.*, а не версии 1.8.*.

5. @ryuukei Прежде всего, Adobe Acrobat не требует, чтобы вы использовали информацию VRI. Это было бы действительно плохой идеей, в конце концов, ETSI в своих новейших нормах PAdES рекомендует не использовать VRI! Таким образом, отсутствие VRI не является проблемой, с которой вы столкнулись. Вероятно, вам лучше всего поделиться образцом PDF, который вы подписали, с тем, что вы считаете полным набором необходимых сертификатов / crl / ocsp для нашего анализа.

Ответ №1:

Прежде всего, последнему просмотренному мной черновику PDF 2.0 около двух лет. Таким образом, мой ответ лучше основывать на стандартах ETSI, а не на этом черновике. 😉

Если я правильно понимаю:

  1. DSS содержит данные отзыва для всех подписей, которые у нас есть в подписанном PDF.

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

Когда я хочу перестроить цепочку сертификатов, сверьте сертификат sign с crl и ocsp, особенно когда я хочу проверить, что срок действия crl не истек на момент подписания документа, мне нужно убедиться, что я использую правильную версию crl.

Для меня это означает, что я должен проверить, правильно ли сопоставлены сертификаты / crls / ocsp с подписью. В противном случае проверка больше не является надежной, равно как и бессмысленной.

Какова именно ваша цель? Пытаетесь ли вы повторно ввести в действие определенный предыдущий акт проверки? Или вы просто хотите проверить подпись?

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

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

Таким образом,

Поэтому, несмотря на то, что последняя спецификация PAdES 103 не рекомендует использовать VRI. Серьезно, я думаю, что это неправильно….

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

Если я заранее собираю данные DSS, создайте подпись впоследствии. (Дело в том, что DSS также является частью подписанного содержимого.)

Хорошая вещь: acrobat Reader распознает мою подпись, включен LTV.

Плохо то, что в такой ситуации я не могу добавить туда VRI. Ключом для VRI является хэшированное значение подписи.

Вы не только не можете, вам фактически не разрешено! Как указано в ETSI EN 319 142-1 V1.1.1:

Любые словари VRI должны располагаться в разделах инкрементного обновления документа. Если словарь подписи, к которому применяется словарь VRI, сам находится в разделе инкрементного обновления (см. Пункт 7.5.6 ISO 32000-1 [1]), обновление VRI должно быть выполнено позже, чем обновление подписи.

Если я сначала подпишу документ, а затем получу подпись и DSS с помощью VRI, acrobat reader больше не распознает DSS. Моя подпись больше не поддерживает LTV в acrobat Reader. Это проблема, в которой я запутался. Является ли acrobat Reader неправильным при проверке LTV или??

Вот где пример файла, показывающий это поведение, мог бы помочь

Комментарии:

1. Спасибо! 😀 К вопросу о том, какова моя цель. Я хочу следовать стандарту для проверки сертификата подписи на соответствие DSS при его представлении. Тогда подход, который я могу придумать, заключается в использовании VRI для сопоставления сертификата подписи с данными отзыва.

2. «Я хочу следовать стандарту для проверки сертификата подписи на соответствие DSS при его представлении». — Ну … не существует стандарта специально для DSS. DSS просто предоставляет предварительно выбранную информацию для проверки, которую вы можете использовать во время проверки. На самом деле используемые стандарты — это RFC, например, RFC 5280, раздел 6 , и другие нормы, которые могут быть профилированы для определенных политик в соответствии с применимым законодательством. Для проверки конкретного профиля вам, возможно, придется убедиться, что вам не нужна никакая информация, кроме той, что есть в DSS.

3. я думаю, что знаю, как проверить сертификат (полноту цепочки, проверку статуса отзыва crl / ocsp, более того, истек ли срок действия данных отзыва и т.д.). Послушайте, я хочу убедиться, что при проверке сертификата я использую правильно отображенный crl / ocsp.

4. Думаю, я уловил вашу идею. Искренне спасибо.

5. «Послушайте, я хочу убедиться, что при проверке сертификата я использую правильно отображенный crl / ocsp». — ETSI регулярно проводит мероприятия по совместимости с удаленными подключаемыми модулями , такие как PAdES Remote Plugtests 2015 . Возможно, вы захотите принять участие или, по крайней мере, попытаться получить их образцы и провести с ними свои тесты.