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

StackOverflow https://stackoverflow.com/questions/93451

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top