Я хочу защитить связь программы на основе TCP, используя общую парольную фразу/ключ. Самый простой способ сделать это, не имея дело с размером блока, заполнением и т. д., — напрямую использовать потоковый шифр. Таким образом, количество данных не изменяется между открытыми и зашифрованными данными, и модификация является тривиальной.
Использование только потокового шифра означает отсутствие аутентификации, и я всегда считал/слышал, что шифрование без аутентификации недостаточно безопасно и не должно использоваться.
Если добавление аутентификации к потоковому шифру является обязательным, мы теряем простоту, которую добавило потоковое шифрование, потому что мы должны добавить HMAC или использовать метод шифрования с аутентификацией (например, crypto_secretbox из NaCl), есть минимальная длина сообщения, мы должны обрабатывать заполнение, ...
Что бы вы порекомендовали? Безопасно ли использовать только потоковое шифрование без аутентификации в некоторых конкретных случаях?