Отрицаемое шифрование

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Отрицаемое шифрование (англ. deniable encryption, также двусмы́сленное шифрова́ние) — способ криптографического преобразования, в котором зашифровываются совместно два или более различных сообщения на двух или более различных ключах[1]. Этот метод обеспечивает возможность правдоподобного отрицания наличия одного или группы сообщений как таковых. Сам термин «двусмысленное шифрование» придуман Джулианом Ассанджем и Ральфом Вайманном в ходе работы над Rubberhose[2] в 1997-2000 годах.

Цель[править | править вики-текст]

В концепции отрицаемого шифрования рассматривается цель обеспечения достаточно высокой стойкости к принуждающим атакам. В модели таких атак предполагается, что атакующий имеет некоторые рычаги воздействия на отправителя, получателя или хранителя зашифрованной информации и принуждает выдать ключ для её расшифрования. Стойкость к атакам с принуждением обеспечивается тем, что, по крайней мере, одно из передаваемых сообщений не является секретным и атакующему предоставляется ключ, по которому расшифрование криптограммы ведёт к раскрытию этого сообщения. При этом процедура расшифрования выполняется таким образом, что у атакующего нет обоснованных доводов полагать, что с криптограммой были связаны ещё какие-то другие сообщения. Двусмысленное шифрование разрешает прочитать зашифрованное сообщение несколькими осмысленными способами в зависимости от использованного ключа. Иными словами, оно дает пользователю шанс скрыть секретное сообщение, даже если его вынудили раскрыть один из ключей.[3]

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

Сценарий[править | править вики-текст]

Возможный сценарий выглядит так:

  1. Алиса — жена Боба, подозревающего её в измене. Она хочет передать сообщение своему тайному возлюбленному Карлу. Она конструирует 2 ключа: один для того, чтобы хранить в секрете, и второй, которым можно пожертвовать в критической ситуации. Затем она передаёт настоящий ключ (а может быть и оба) Карлу.
  2. Вслед за этим она пишет Карлу безвредное сообщение M1 про особенности жизнедеятельности улиток — это сообщение можно показать Бобу в случае, если он обнаружит их переписку, а также письмо M2 Карлу, полное горячих чувств. После этого она комбинирует эти два сообщения и посылает получившийся шифротекст С Карлу.
  3. Карл, используя данные ему ключи, расшифровывает исходное сообщение M2 и, при желании, M1.
  4. Боб обнаруживает сообщение, посланное Алисой Карлу. В порыве ревности он заставляет Алису расшифровать письмо.
  5. Алиса восстанавливает открытый текст M1, используя жертвенный ключ. Таким образом в руки Боба попадает скучный текст об улитках, и, так как наличие ещё одного ключа держится в тайне, он полагает, что никакого подозрительного смысла сообщение не несло.

Также Алиса может послать одну криптограмму и Бобу, и Карлу. При этом Боб, расшифровав сообщение при помощи своего ключа, узнает, что Карл хочет написать на него донос. Карлу же письмо поведает, что Боб пытается украсть его деньги. Попытки Алисы поссорить их не будут раскрыты, пока Боб и Карл не узнают о том, что у них разные ключи.[1]

Реализация[править | править вики-текст]

Алгоритмы реализации[править | править вики-текст]

Пример 1.

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


которую мы запишем в виде


в соответствии с китайской теоремой об остатках решение вычисляется по следующей формуле:

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

.

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

Пример 2

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

.

Эту систему можно записать в виде


В соответствии с китайской теоремой об остатках решение этой системы сравнений вычисляется по формуле:

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

.

Обнаружение[править | править вики-текст]

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

В пользу наличия дополнительных сообщений в криптограмме атакующим могут быть предъявлены следующие доводы:

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

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

Современные способы двусмысленного шифрования[править | править вики-текст]

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

В качестве примера можно привести криптографические файловые системы, использующие схему абстрактных «уровней», при которой каждый следующий уровень требует свой ключ для расшифровки. Помимо этого существуют так называемые chaff-уровни, заполненные случайными данными для противодействия обнаружению существования настоящих уровней, равно как и их ключей. Пользователь может хранить обманные данные на нескольких уровнях, утверждая, что остальное пространство используется в качестве chaff-уровней. Физически, данные чаще всего располагаются в одном каталоге, разбитые на файлы одинаковой длины с именами либо выбранными случайным образом (в случае chaff-уровня), либо представляющими результат работы криптографической хеш-функции над идентификаторами блоков. Временные параметры у этих файлов выбираются случайным образом. Примерами таких систем являются Rubberhose и PhoneBookFS.

Другой подход, применяемый традиционными пакетами по защите носителей информации, состоит в создании нового защищённого тома внутри основного. Процесс начитается с того, что при форматировании основной контейнер заполняется беспорядочным набором данных с последующей инициализацией файловой системы. После этого часть файловой системы заполняется безопасными данными, похожими на секретные. Затем где-то в оставшемся пространстве создаётся новый скрытый том, используемый для тех данных, которые пользователь действительно хочет скрыть. Поскольку противник не может отличить зашифрованные данные от случайных данных заполнителя, он не сможет обнаружить этот скрытый том на диске. Однако то, что содержимое несекретных данных не менялось со времён создания, в частности, время модификации файлов — это сделано, чтобы предотвратить повреждение пользовательских данных, — может возбудить подозрения. Решение данной проблемы состоит в указании системе менять содержимое заглушек. Впрочем, стоит отметить, что данная операция сопряжена с риском повредить хранимые на диске данные. Такие программы, как FreeOTFE и BestCrypt позволяют создавать несколько скрытых разделов на одном диске, в то время как TrueCrypt ограничивается одним.

Существование скрытого тома может быть обнаружено по причине ошибочных реализаций, зависящих от предсказуемых криптографических величин[4][5], либо с помощью некоторых инструментов, использующихся в юридических целях, способных обнаруживать неслучайные зашифрованные данные.[6][7] Также было предположено, что существует уязвимость к тестированию псевдослучайных последовательностей с помощью критерия Хи-квадрат (критерия Пирсона): после каждого изменения зашифрованные данные должны быть видоизменены таким образом, чтобы их распределение правдоподобно соответствовало случайному распределению.[8]

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

Безусловно, недостаточная криптографическая стойкость блочных шифров или числового генератора может подвергнуть риску защищённость такой файловой системы. Для того, чтобы избежать сомнений по поводу достаточной криптографической стойкости генератора, можно зашифровать псевдослучайные данные при помощи другого ключа, нежели основные данные, что приведёт к неразличимости хранимой информации и пустого пространства, ведь невозможно отличить зашифрованные данные от других зашифрованных данных. И напоследок стоит отметить, что неправильное использование режимов шифрования может сделать систему уязвимой, например, к атакам по водяным знакам.[10]

Контейнеры без сигнатур[править | править вики-текст]

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

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

Скрытые контейнеры[править | править вики-текст]

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

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

  • В случае утечки информации о содержимом скрытого контейнера на незашифрованные файловые системы:
    • Утечки в файл подкачки, файл гибернации и дампы памяти (crash dump);
    • Другие утечки (например, в списки MRU);
  • В случае утечки криптографических ключей или паролей в файл подкачки, файл гибернации и дампы памяти;
  • В случае наличия полной или частичной копии (нескольких копий) внешнего контейнера с ключом / паролем;
  • В случае использования слабых ключей / паролей для скрытого контейнера.

Гибкое шифрование[1][править | править вики-текст]

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

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

Программное обеспечение[править | править вики-текст]

  • OpenPuff (англ. статья), свободное ПО для шифрования для ОС Windows.
  • BestCrypt, коммерческое приложение по шифрованию дисков «на лету» для Windows.
  • FreeOTFE, свободное ПО для шифрования дисков «на лету» для Windows и Pocket PC, предоставляющая функциональность двусмыленного шифрования наряду с возможностью отказа[11]. Обладает большой функциональностью и не требует установки.
  • Off-the-Record Messaging, криптографический протокол для сетей обмена мгновенными сообщениями с возможностью отказа
  • StegFS - криптографическая файловая система для Linux с возможностью отказа, преемник ныне не поддерживаемых проектов PhoneBookFS и rubberhose
  • TrueCrypt, приложение для Windows, MAC OS и Linux, с возможностью шифрования дисков «на лету», ограничено способная к двусмысленному шифрованию[12] и с возможностью отрицания[13] (с учётом ограниченности количества скрытых разделов на одном томе). Тоже не требует установки.
  • Vanish (англ. статья) - прототип самоуничтожающихся носителей информации.
  • ScramDisk 4 Linux - свободный пакет программ для GNU/Linux, способный работать с контейнерами truecrypt и scramdisk.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. 1 2 3 4 Cannetti R., Dwork C., Naor M. Deniable Encryption. — Advances in Cryptology. — CRYPTO, 1997. — С. 90-104.
  2. Rubberhose cryptographically deniable transparent disk encryption system
  3. 1 2 3 А.Р.Биричевский., Н.А.Молдавян Способ отрицаемого шифрования (рус.) : журнал. — 2013. — № 101(2). — С. 18-21. — ISSN 2703-2600.
  4. Adal Chiriliuc (2003-10-23). «BestCrypt IV generation flaw». Проверено 2006-08-23.
  5. Encrypted hard drives may not be safe: Researchers find that encryption is not all it claims to be.
  6. TrueCrypt is now Detectable
  7. TCHunt, Search For TrueCrypt Volumes
  8. MultiObfuscator — Manual: Architecture and chi-squared self-defense
  9. Julian Assange: Physical Coercion
  10. Adal Chiriliuc (2003-10-23). «BestCrypt IV generation flaw». Проверено 2010-11-10.
  11. Plausible Deniability
  12. TrueCrypt - Free Open-Source On-The-Fly Disk Encryption Software for Windows Vista/XP, Mac OS X, and Linux - Hidden Volume
  13. TrueCrypt - Free Open-Source Disk Encryption Software - Documentation - Plausible Deniability

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]