Мой отдел на работе требуется полномочиями, которые должны использовать библиотеку шифрования, написанную другим отделом, причем проблема заключается в том, что библиотека шифрования имеет жестко закодированную ее AES вектор инициализации счетного режима (all-zeros). (В принципе, другой отдел взял библиотеку Bouncycastle и обернул вокруг нее свой сломанный код.) Мы документировали проблемы с этим кодом для полномочий, поэтому, если руководство не решит действовать, мы застряли с использованием сломанной библиотеки шифрования ,Режим счетчика AES - библиотека шифрования имеет жестко закодированный вектор ее инициализации
Мне интересно, можем ли мы подделать правильный вектор инициализации, добавив уникальный IV в открытый текст и затем обрезая первые шестнадцать байтов открытого текста после дешифрования, например.
ciphertext = encrypt(++sixteenByteCounter + plaintext)
plaintext = decrypt(ciphertext).subArray(16, ciphertext.length)
Это, кажется, хорошо для меня, но я вряд ли эксперта криптографии
Нет, усечение ничего не принесет пользы :). IV используется для режимов цепочки и принимает участие в шифровании. –
@ EugeneMayevski'EldoSCorp. IV обычно используется как начальное значение для кодирования nonce в режиме счетчика. И я думаю, что вопрос состоял в том, чтобы повысить безопасность, добавив значение, а не сокращая расшифрованный открытый текст. –
Это не принесет вам пользы. Верхний 96 бит счетчика ДОЛЖЕН быть уникальным для каждого сообщения, иначе простой xor между сообщениями будет скомпрометировать ваши данные. Добавление нежелательной почты для шифрования не поможет здесь. Реализация должна быть изменена. –