stringtranslate.com

Многократное шифрование

Многократное шифрование — это процесс шифрования уже зашифрованного сообщения один или несколько раз с использованием того же или другого алгоритма. Он также известен как каскадное шифрование , каскадное шифрование , многократное шифрование и супершифрование . Супершифрование относится к внешнему уровню шифрования многократного шифрования.

Некоторые криптографы, такие как Мэтью Грин из Университета Джонса Хопкинса, утверждают, что многократное шифрование решает проблему, которой по большей части не существует:

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

—  Множественное шифрование, https://blog.cryptographyengineering.com/2012/02/02/multiple-encryption/ (2 февраля 2012 г.)

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

Независимые ключи

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

Чтобы предотвратить этот риск, можно использовать ключи, которые статистически независимы для каждого слоя (например, независимые ГСЧ ).

В идеале каждый ключ должен иметь отдельные и различные процессы генерации, распространения и управления.

Независимые векторы инициализации

Для процессов en/decryption, требующих совместного использования вектора инициализации (IV) / nonce, они обычно открыто предоставляются или становятся известны получателю (и всем остальным). Хорошей политикой безопасности является никогда не предоставлять одни и те же данные в открытом тексте и зашифрованном тексте при использовании одного и того же ключа и IV. Поэтому рекомендуется (хотя на данный момент без конкретных доказательств) использовать отдельные IV для каждого уровня шифрования.

Важность первого слоя

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

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

Чтобы предотвратить подобные атаки, можно воспользоваться методом, предложенным Брюсом Шнайером : [1]

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

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

Правило двух

Правило двух — это принцип безопасности данных из Коммерческих решений для секретных программ (CSfC) Агентства национальной безопасности . [2] Он определяет два полностью независимых уровня криптографии для защиты данных. Например, данные могут быть защищены как аппаратным шифрованием на самом низком уровне, так и программным шифрованием на прикладном уровне. Это может означать использование двух программных криптомодулей, проверенных FIPS, от разных поставщиков для шифрования/дешифрования данных.

Важность разнообразия поставщиков и/или моделей между уровнями компонентов заключается в устранении возможности того, что производители или модели будут совместно использовать уязвимость. Таким образом, если один компонент скомпрометирован, все еще остается целый слой шифрования, защищающий информацию в состоянии покоя или при передаче. Программа CSfC предлагает решения для достижения разнообразия двумя способами. «Первый — реализовать каждый уровень с использованием компонентов, произведенных разными производителями. Второй — использовать компоненты одного и того же производителя, если этот производитель предоставил АНБ достаточные доказательства того, что реализации двух компонентов независимы друг от друга». [3]

Этот принцип реализован в защищенном мобильном телефоне АНБ под названием Fishbowl. [4] Телефоны используют два уровня протоколов шифрования, IPsec и Secure Real-time Transport Protocol (SRTP), для защиты голосовой связи. Samsung Galaxy S9 Tactical Edition также является одобренным компонентом CSfC.

Примеры

На рисунке показан процесс формирования зашифрованной капсулы изнутри наружу в контексте протокола Echo, используемого программным приложением GoldBug Messenger. [5] GoldBug реализовал гибридную систему для обеспечения подлинности и конфиденциальности. [4]

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

Второй уровень шифрования: опционально это все еще возможно, поэтому дополнительно зашифровать капсулу первого уровня с помощью AES-256 , - ​​сопоставимо с обычно используемым симметричным паролем длиной 32 символа. Гибридное шифрование затем добавляется к множественному шифрованию. [ необходима цитата ]

Третий уровень шифрования: затем эта капсула передается через защищенное соединение SSL/TLS партнеру по коммуникации.

Ссылки

  1. ^ Шнайер, Брюс (30 марта 2015 г.). Прикладная криптография, второе издание: протоколы, алгоритмы и исходный код в C. Wiley Computer Publishing. стр. 368. ISBN 9781119096726.
  2. ^ "Коммерческие решения для секретных программ". Агентство национальной безопасности США. Архивировано из оригинала 25 декабря 2015 года . Получено 24 декабря 2015 года .
  3. ^ "Пакет возможностей мобильного доступа". Агентство национальной безопасности США . Получено 28 февраля 2020 г.
  4. ^ ab Adams, David / Maier, Ann-Kathrin (2016): Исследование BIG SEVEN, криптомессенджеры с открытым исходным кодом для сравнения - или: комплексный обзор конфиденциальности и аудит GoldBug, шифрование почтового клиента и безопасный мгновенный мессенджер, описания, тесты и аналитические обзоры 20 функций приложения GoldBug на основе основных полей и методов оценки 8 основных международных руководств по аудиту для расследований в области ИТ-безопасности, включая 38 рисунков и 87 таблиц., URL: https://sf.net/projects/goldbug/files/bigseven-crypto-audit.pdf - английский / немецкий язык, версия 1.1, 305 страниц, июнь 2016 г. (ISBN: DNB 110368003X - 2016B14779)
  5. ^ «GoldBug — безопасный почтовый клиент и программа мгновенного обмена сообщениями».

Дальнейшее чтение