Лучше зашифровать сообщение, а затем сжать его или наоборот? Что обеспечивает большую безопасность?

У меня есть предположение, что никакой дополнительной защиты нет вообще.


person john    schedule 09.12.2010    source источник


Ответы (9)


Нет никакой разницы в обеспечиваемой безопасности, но из-за того, как работают алгоритмы сжатия, вы, вероятно, получите лучшее сжатие, если сначала сожмете, а затем зашифруете.

Алгоритмы сжатия используют статистическую избыточность (например, существующую в естественном языке или во многих форматах файлов) в данных, которая должна устраняться при шифровании, поэтому зашифрованное сообщение не должно< /em> можно так хорошо сжимать.

Из статьи в Википедии:

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

person Reese Moore    schedule 09.12.2010
comment
Хм, так что, если это сжатие без потерь, то не стоит сначала сжимать? - person john; 09.12.2010
comment
@john: нет, если это сжатие без потерь, то не стоит сжимать after. - person Reese Moore; 09.12.2010
comment
Ах, шаблоны, вставленные сжатием без потерь, должны быть скрыты шифрованием, поэтому лучше сначала выполнить сжатие. - person john; 09.12.2010
comment
Между прочим, сжатие также уменьшит размер открытого текста — это может быть бесконечно малым повышением безопасности. - person Piskvor left the building; 09.12.2010
comment
@john: И если вы используете сжатие с потерями после, вы не сможете расшифровать. - person President James K. Polk; 10.12.2010
comment
Сжатие перед шифрованием может помочь против некоторых атак. В частности, атака по известному открытому тексту, когда известный открытый текст находится внутри другого неизвестного открытого текста, так что неизвестный открытый текст влияет на сжатую версию известного текста. - person Slartibartfast; 10.12.2010
comment
@Slartibartfast: В своем ответе я предположил, что схема шифрования устойчива к определенным криптоаналитическим атакам (известный открытый текст, частотный анализ и т. д.). Если схема шифрования слаба для них, то да, вы можете получить некоторую безопасность от сжатия, но если система слаба для этих атак, то это проблема в схеме шифрования. - person Reese Moore; 10.12.2010
comment
Сжатие в первую очередь повышает безопасность. Чем ниже энтропия открытого текста, тем потенциально легче взломать шифрование. Можно использовать шпаргалки и другие атаки с известным открытым текстом. Все хорошо, если предположить, что схема шифрования устойчива к [этим] атакам, но это поможет вам только теоретически, а не практически. В любом случае, сжатие на самом деле не работает с зашифрованными файлами, поскольку из них в любом случае удалена большая часть избыточной структуры. Всегда сначала сжимайте. (Некоторые материалы из: Applied Cryptography, 2-е изд., Брюс Шнайер, 1996 г.) - person Eadwacer; 21.12.2010
comment
@GregS: не существует такого понятия, как сжатие с потерями для произвольных данных, поскольку невозможно знать, какие данные можно и нельзя удалить. - person BlueRaja - Danny Pflughoeft; 15.03.2011
comment
Есть разница в предоставляемой безопасности. Первое сжатие показывает сжимаемость исходного сообщения. Например, можно определить местоположение пользователя на карте, изучив размер фрагментов карты, отправляемых на его или ее устройство. - person vroomfondel; 05.02.2018
comment
Этот ответ устарел и должен быть удален. См. ответ Джона Меллора - person jvdh; 06.08.2020

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

Например, см. https://en.wikipedia.org/wiki/CRIME.

person John Mellor    schedule 04.06.2015
comment
Существуют ли алгоритмы сжатия, которые избегают этого вектора атаки? Или вы должны просто дополнить зашифрованные данные? - person Lupilum; 16.05.2018
comment
Нет, сжатие и шифрование обычно считается плохой практикой. Вот почему TLS 1.3 больше не использует сжатие. - person jvdh; 06.08.2020

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

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

Конечно, если вы используете что-то вроде AES256, и АНБ не преследует вас, это все теория.

person MSalters    schedule 09.12.2010
comment
Почему математически безопаснее сжимать перед шифрованием? Не могли бы вы указать свой источник, пожалуйста? Я всегда понимал, что для хорошего алгоритма шифрования, такого как AES, вы не можете отличить зашифрованный текст от случайных данных. - person Steve; 22.01.2013
comment
@Steve: Современные атаки на шифры предполагают, что у вас есть хотя бы некоторое представление о возможных открытых текстах. Поскольку хорошо сжатые данные также неотличимы от случайных данных, трудно или даже невозможно проверить, добились ли вы какого-либо прогресса в взломе ключа. И если вы не знаете, добились ли вы какого-либо прогресса, вам придется вернуться к грубой силе расшифровки. В крайнем случае, когда вы шифруете действительно случайные данные с помощью идеального алгоритма шифрования, невозможно определить, является ли какой-либо ключ правильным. Это, например, тривиально верно для одноразового блокнота. - person MSalters; 22.01.2013
comment
Но сжатые данные не неотличимы от случайных. Если вы предполагаете, что злоумышленник знает открытый текст или может отправить открытый текст для сжатия и шифрования, злоумышленник также обработает сжатую версию открытого текста. Предварительное сжатие данных не добавляет дополнительной случайности (или безопасности). На самом деле, сжатие действительно случайных данных даст злоумышленнику некоторое представление о данных, потому что он может начать искать заголовки сжатия. - person Steve; 22.01.2013

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

Поэтому сжимайте, а затем шифруйте.

person Piskvor left the building    schedule 09.12.2010

Посмотрите здесь: ветка суперпользователя о сжатии и& шифровании или наоборот

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

person user430051    schedule 27.01.2012

Вы должны сжать перед шифрованием.

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

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

person Swatantra Kumar    schedule 18.10.2015

Согласно книге Уильяма Столлинга "Основы сетевой безопасности: приложения и стандарты, 4-е издание », опубликовано Пирсон, в главе 7, стр. 227:

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

  1. Подпись создается перед сжатием по двум причинам:

    • It is preferable to sign an uncompressed message so that one can store only the uncompressed message together with the signature for future verification. If one signed a compressed document, then it would be necessary either to store a compressed version of the message for later verification or to recompress the message when verification is required.
    • Даже если кто-то хочет динамически генерировать повторно сжатое сообщение для проверки, алгоритм сжатия PGP представляет собой трудность. Алгоритм не является детерминированным; различные реализации алгоритма обеспечивают разные компромиссы между скоростью работы и степенью сжатия и, как следствие, создают разные сжатые формы. Однако эти разные алгоритмы сжатия совместимы, поскольку любая версия алгоритма может корректно распаковывать выходные данные любой другой версии. Применение функции hash228 и подписи после сжатия будет ограничивать все реализации PGP одной и той же версией алгоритма сжатия.

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

Хотя эти причины объясняются для алгоритма PGP, их просто можно расширить до других подходов. Так что лучше сжать перед шифрованием.

person AmirMohammad Dadkhah    schedule 30.12.2019

Нет никакой разницы в обеспечении безопасности.

person Femaref    schedule 09.12.2010
comment
Спасибо, я могу придумать несколько причин, по которым сжатие в первую очередь было бы более разумным выбором. Я просто хотел убедиться, что не влияю на безопасность. Еще раз спасибо!! - person john; 09.12.2010

Да, не должно быть никакой разницы в предоставляемой безопасности.

person Kunya    schedule 09.12.2010