Как выбрать между RC4 и AES при расшифровке зашифрованного документа PDF - PullRequest
0 голосов
/ 24 декабря 2018

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

1 = "Алгоритм 1: Шифрование данных с использованием алгоритмов RC4 или AES" в 7.6.2 «Общий алгоритм шифрования» с длиной ключа шифрования 40 битов;увидеть ниже.

2 = (PDF 1.4) «Алгоритм 1: Шифрование данных с использованием алгоритмов RC4 или AES» в 7.6.2, «Общий алгоритм шифрования», но допускающий длину ключа шифрования более 40 бит.

Поле Length определяется как:

(Необязательно; PDF 1.4; только если V равно 2 или 3) Длина ключа шифрования, в битах.Значение должно быть кратным 8, в диапазоне от 40 до 128. Значение по умолчанию: 40.

И часть 7.6.2 Общий алгоритм шифрования перечисляет 2 возможности:

При шифровании данных в файле PDF следует использовать один из следующих алгоритмов:

• Собственный алгоритм шифрования, известный как RC4.[...]

• Алгоритм AES (Advanced Encryption Standard) (начиная с PDF 1.6).... и длина данных в зашифрованном виде округляется до кратного размера блока, который всегда равен 16 байтам ...

У меня есть образец документа с V =2, длина = 128, и это PDF 1.6.Я предполагал, что AES использовался для документов в PDF 1.6 и более поздних версиях, однако расшифровать его с помощью AES не удалось (не в последнюю очередь, так как потоки не кратны 128 битам).Дешифрование с помощью RC4 выполнено успешно.

Мой вопрос: как мой код может знать, как инициализировать дешифрование RC4 в начале обработки документа?Я не вижу ничего в словаре шифрования, в котором указано, какой метод использовался.

1 Ответ

0 голосов
/ 26 декабря 2018

Я думаю, что здесь спецификация несколько сбивает с толку

2 = (PDF 1.4) «Алгоритм 1: шифрование данных с использованием алгоритмов RC4 или AES» в 7.6.2, «Общий алгоритм шифрования», "

является ссылкой на раздел документа, который описывает шифрование как RC4, так и AES, но для фактического включения шифрования AES требуется /V 4.

4 = (PDF 1.5) Обработчик безопасности определяет использование шифрования и дешифрования в документе, используя правила, указанные в записях CF, StmF и StrF.

Таким образом, /V 4 или выше, является обязательным условием, оттуда вам нужно дополнительно просмотреть записи /CF /StmF и /StrF.

Словарь шифрования с базовым AES шифрование может выглядеть так:

/Encrypt <<
  /V 4
  /R 4
  /StmF /StdCF
  /StrF /StdCF
  /CF <<
    /StdCF <<
      /CFM /AESV2
    >>
  >>
  % + other entries /O /U Length etc
>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...