Java-шифрование IV

Java задняя часть алгоритм Безопасность

Исходная ссылка: https://www.dubby.cn/detail.html?id=9097

AES это **блочный шифр**.

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

Детали реализации различных режимов работы также различаются.В Java строка, определяющая алгоритм шифрования, имеет видAES/ECB/PKCS5Padding, то есть "алгоритм/режим/заполнение". IV относится к рабочему режиму. Общие рабочие режимы включают ECB, CBC, PCBC, CFB, OFB, CTR и т. д.

ECB

шифрование:

image

Расшифровать:

image

CBC

шифрование:

image

Расшифровать:

image

PCBC

шифрование:

image

Расшифровать:

image

Как видно из приведенных выше рисунков, IV не требуется в режиме ECB, тогда как IV требуется для CBC и PCBC.

Так на что следует обратить внимание в значении IV?

В области криптографии,вектор инициализации(английский: вектор инициализации, сокращенно IV) или вектор перевода, также известный как начальная переменная (начальная переменная, сокращенно SV), представляет собой входное значение фиксированной длины. Обычное использование потребует, чтобы это было случайное число или псевдослучайное (псевдослучайное). Вектор инициализации, сгенерированный случайными числами, может обеспечить семантическую безопасность (хеш-функция и код проверки сообщения также имеют одинаковые требования) и затруднить взлом шифротекста того же ключа злоумышленниками. В блочном шифровании режим шифрования с использованием вектора инициализации называется режимом блочного шифрования.

Значение вектора инициализации варьируется в зависимости от криптографического алгоритма. Самым основным требованием является «уникальность», то есть один и тот же вектор инициализации не используется повторно для одного и того же ключа. Эта функция очень важна как для блочного, так и для потокового шифрования.

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

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