Подтвердить что ты не робот

Шифрование AES (128 или 256) расширяет данные? Если да, то на сколько?

Я хотел бы добавить шифрование AES к программному продукту, но меня беспокоит увеличение размера данных. Я предполагаю, что данные увеличиваются в размере, и тогда мне придется добавить алгоритм сжатия для компенсации.

4b9b3361

Ответ 1

AES не расширяет данные. Кроме того, выход, как правило, не будет сжимаемым; если вы намерены сжать свои данные, сделайте это, прежде чем шифровать его.

Однако обратите внимание, что шифрование AES обычно сочетается с padding, что увеличит размер данных (хотя только несколькими байт).

Ответ 2

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

Получаемые данные, во всяком случае, не сжимаются, потому что они в основном случайны - ни один из алгоритмов на основе словарей не способен эффективно сжимать их. Лучшей практикой является сжать данные сначала, а затем зашифровать их.

Ответ 3

Обычно шифрование данных происходит до шифрования. Сжатие после этого не работает, поскольку зашифрованные данные AES кажутся случайными (как и для любого хорошего шифрования, кроме любых заголовков и много чего).

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

AES включает 16 байтовых входных блоков в 16-байтовые выходные блоки. Единственным расширением является округление данных до целого числа блоков.

Ответ 4

Я уверен, что шифрование AES ничего не добавляет к зашифрованным данным, поскольку это выдаст информацию о переменных состояния, а это плохое дело, когда дело доходит до криптографии.

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

Ответ 5

Если сжатие необходимо сделать это перед тем, как вы зашифруете.

Ответ 6

Нет. Единственное изменение будет небольшим количеством отступов, чтобы выровнять данные с размером блока

Однако, если вы сжимаете заметку о содержании, вы должны сделать это до шифрования. Зашифрованные данные обычно должны быть неотличимы от случайных данных, а это означает, что он не будет сжиматься.

Ответ 7

@freespace и другие: одна из вещей, которые я помню из своих криптографических классов, заключается в том, что вы не должны сжимать свои данные до шифрования, поскольку некоторые повторяющиеся фрагменты сжатого потока (например, заголовки разделов, например) могут упростить взломать ваши шифрование.