Как безопаснее всего сделать шифрование кусков данных размером от 1 до 2¹⁶ байт? Нужно иметь возможность расшифровать любой без обработки соседних, так что шифровать все подряд CBC не получится. ECB ненадежный.
Ах да, потенциальный злоумышленник имеет шансы отправить на вход заранее известную порцию данных и получить соответствующий шифрованный блоб, что может сильно упростить нахождение ключа.
Я думал над тем, чтобы взять AES-256-CBC для каждого отдельного пакета и добавлять рандомный шум по 16 байт вначале и в конце перед шифрованием, но это будет давать оверхед по 32 байта на пакет (не считая padding)
+---------------------+
| random data 16 byte |
+---------------------+
| user data |
+---------------------+
| random data 16 byte |
+---------------------+
Есть ещё идеи? Данные предназначены для длительного хранения.
Я понимаю, что велосипеды - это плохо. Как делают серьёзные ребята?
Читал ещё про CTR, но я не уверен, смогу ли сделать уникальный счётчик, т.е., впишется ли это в мою модель данных.