Расширяет ли AES (128 или 256) шифрование данных? Если да, то сколько? - PullRequest
35 голосов
/ 18 сентября 2008

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

Ответы [ 7 ]

45 голосов
/ 18 сентября 2008

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

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

23 голосов
/ 18 сентября 2008

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

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

7 голосов
/ 18 сентября 2008

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

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

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

4 голосов
/ 18 сентября 2008

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

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

0 голосов
/ 18 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

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

0 голосов
/ 18 сентября 2008

Если необходимо сжатие, сделайте это перед шифрованием.

...