Как получить ключ AES-128 и IV от GPG - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь зашифровать видеофайлы (файлы TS из потока HLS) для воспроизведения с помощью тега #EXT-X-KEY. Для этого мне нужно указать URL-адрес для загрузки ключа, используемого для шифрования файлов.

При использовании GPG я могу зашифровать свои файлы, используя gpg --output 1.ts.enc --symmetric 1.ts. Эта команда предложит мне ввести пароль. GPG должен внутренне преобразовать эту фразу-пароль в 16-байтовый ключ (возможно, с использованием PBKDF2)

Чтобы воспроизвести поток, мне нужно будет сделать этот ключ доступным по некоторому URL-адресу. Однако я не знаю, как получить доступ к этому 16-байтовому ключу. Есть ли команда GPG, такая как gpg --generate-key --symmetric, которая позволит мне набрать мою фразу-пароль, и она выдаст 16 байтов?

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

Приложение

Читая справочную страницу GPG, я обнаружил, что --s2k-mode 0 можно передать в GPG для используйте «простую фразу-пароль», что, как я предполагаю, означает, что введенная вами фраза-пароль используется в качестве ключа шифрования напрямую без какой-либо функции вывода ключа (возможно, добавление отступа, если ключ слишком короткий, или, возможно, усечение, если ключ слишком длинный - I не знаю)

Однако когда я использовал gpg --output 1.ts.enc --symmetric --s2k-mode 0 1.ts для шифрования моего файла, выходной файл соответствовал побайтно с файлом, созданным, когда я не установил режим s2k. Кроме того, при расшифровке файла мне не нужно было указывать параметр --s2k-mode, что говорит о том, что какая-либо стандартная функция вывода ключа обычно имела место

...