Как найти в Java, если Шифру нужен IV или нет? - PullRequest
1 голос
/ 21 апреля 2019

Я создаю потоковый сервер, который использует криптографию для защиты передаваемых данных. Ciphersuite загружается из файла конфигурации, который позволяет пользователю вставить желаемый алгоритм + режим шифрования (ECB, CBC, CTR,…) + заполнение. Проблема в том, что некоторые режимы, такие как ECB или алгоритмы потокового шифра, не требуют IV, что выдает ошибку, когда я пытаюсь запустить шифр. Поэтому мой код недостаточно динамичен, чтобы справляться с этими ситуациями. Я уже пытался найти в Интернете способ найти, требует ли данный алгоритм / режим IV или нет, но ничего не нашел.

Кто-нибудь знает, как это сделать?

Заранее спасибо

1 Ответ

1 голос
/ 21 апреля 2019

Почти для всех режимов работы требуется IV, кроме ECB, который некоторые могут даже не называть его режимом работы.Также см. этот вопрос в Cryptography для небольшого списка режимов шифрования.IV требуется для рандомизированного шифрования , поэтому у всех есть IV или одноразовый номер (число используется один раз).Нужно никогда не использовать ECB.

Теперь вы хотите зашифровать поток.Вам следует использовать AES-GCM , который является режимом аутентифицированного шифрования (AE), и по этой ссылке вы можете видеть, что Netflix использует его.С AE вы можете иметь аутентификацию, целостность и шифрование в целом.Вы также можете выбрать Chacha-poly1305 , который также является AE.

* TLS 1.3 имеют как AES-GCM, так и Chacha-poly1305 в качестве наборов шифров.Вы должны выбрать TLS в качестве безопасного соединения между клиентом и сервером.Уровень фрагментации слоя записи имеет ограничение в 2 ^ 14 байт 16,384 КБ.В каждой фрагментации вы можете проверить подлинность сообщения и его целостность, а если нет, повторно запросить у сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...