Криптографические алгоритмы.
Криптографические алгоритмы
Безопасность цепи зависит от самого слабого звена: чем оно надежнее, тем цепь прочнее. В хорошей криптосистеме должны быть досконально проверены и алгоритм, и протокол, и ключи, и все остальное. Если криптографический алгоритм достаточно стоек, а генератор случайных чисел, используемый для создания ключей, никуда не годится, любой достаточно опытный криптоаналитик в первую очередь обратит свое внимание именно на него. Предположим, удастся улучшить генератор, но если не будет очищаться память компьютера, после того как в ней побывал сгенерированный ключ, то грош цена такой безопасности. Если используются стойкий криптографический алгоритм и действительно случайные ключи, которые аккуратно стираются из памяти компьютера после того, как они были использованы, но перед шифрованием файл, в котором вместе с вашим адресом и фамилией указаны все ваши доходы за текущий год, был по ошибке отправлен электронной почтой в налоговую службу, то зачем, спрашивается, вам понадобились и стойкий алгоритм, и случайные ключи, и зачистка компьютерной памяти в придачу?!
Криптографу не позавидуешь: в проектируемой им криптосистеме он должен предусмотреть защиту абсолютно от всех видов атак, какие только сможет придумать воспаленное воображение криптоаналитика. Криптоаналитику же, наоборот, достаточно отыскать единственное слабое звено в цепи криптографической защиты и организовать атаку только против этого звена.
Кроме этого, следует учитывать, что на практике угроза информационной безопасности любого объекта исходит не только от криптоаналитика. В конце концов, каким бы длинным не был криптографический ключ, который используется вами для шифрования файлов, если правоохранительным органам понадобится узнать, что хранится в вашем компьютере, они просто установят камеру и скрупулезно запишут всю информацию, появляющуюся на экране. Недаром, по признанию официальных лиц из АНБ, большинство сбоев в обеспечении информационной безопасности происходит не из-за найденных слабостей в криптографических алгоритмах и протоколах, а из-за вопиющих оплошностей в их реализации. Какой бы стойкостью не обладал криптографический алгоритм, при успешной атаке против него эту стойкость не приходится преодолевать в лоб, ее просто удается обойти каким-либо окольным путем. Однако и пренебрегать хорошими криптографическими алгоритмами тоже не следует, чтобы криптография не стала самым слабым звеном в цепи, которое не выдержит напора атакующего.
Как выбрать хороший криптографический алгоритм?
Когда заходит речь о выборе хорошего криптографического алгоритма, у выбирающего, как правило, имеется несколько возможностей:
• Можно воспользоваться известным алгоритмом, сравнительно давно опубликованным в специальном издании по проблемам криптографии. Если никто пока не сообщил о том, что сумел вскрыть этот алгоритм, значит, он стоит того, чтобы обратить на него внимание.
• Можно довериться известной фирме, специализирующейся на продаже средств шифрования. Вряд ли эта фирма будет рисковать своим добрым именем, торгуя нестойкими криптографическими алгоритмами.
• Можно обратиться к независимому эксперту. Скорее всего, он сможет объективно оценить достоинства и недостатки различных криптографических алгоритмов.
• Можно обратиться за поддержкой в соответствующее правительственное ведомство. Вряд ли правительство будет вводить своих граждан в заблуждение, давая им ложные советы относительно стойкости того или иного криптографического алгоритма.
• Можно попытаться создать собственный криптографический алгоритм. Мало кто заинтересован сам себя обманывать. Чем черт не шутит: а вдруг вы обладаете выдающимися способностями в области криптографии?
Во всех перечисленных возможностях имеются свои существенные изъяны. Полагаться только на одну фирму, на одного эксперта или на одно ведомство не совсем разумно. Многие люди, называющие себя независимыми экспертами, мало понимают в криптографии. Большинство фирм, производящих средства шифрования, ничуть не лучше. В АНБ и ФАПСИ работают лучшие криптографы в мире, однако, по понятным соображениям, они не спешат поделиться своими секретами с первым встречным. Впрочем, и со вторым тоже. И даже если вы гений в криптографии, глупо использовать криптографический алгоритм собственного изобретения без того, чтобы его всесторонне проанализировали и протестировали опытные криптологи.
Поэтому наиболее предпочтительной представляется первая из перечисленных возможностей. Данный подход к оценке стойкости криптографических алгоритмов можно было бы признать идеальным, если бы не один его недостаток.
К сожалению, ничего неизвестно о результатах криптоаналитических исследований этих алгоритмов, которые, несомненно, активно велись в прошлом и продолжают также активно проводиться во всем мире многочисленными сотрудниками различных правительственных ведомств, в компетенцию которых входят криптологические изыскания. Эти ведомства, скорее всего, гораздо лучше финансируются, чем академические институты, ведущие аналогичные исследования. Да и начали они заниматься криптологией значительно раньше, чем ученые, не имеющие воинских званий, и специалисты из частных фирм. Поэтому можно предположить, что военные нашли гораздо более простые способы вскрытия известных шифров, нежели те, которые изобретены за пределами строго охраняемых зданий сверхсекретных правительственных ведомств.
Ну и пусть. Даже если вас арестуют и в качестве улики конфискуют у вас жесткий диск с файлами, зашифрованными по DES-алгоритму, то вряд ли криптоаналитики, состоящие на государственной службе, придут на судебное заседание, чтобы клятвенно подтвердить, что данные для вашего обвинительного заключения получены путем дешифрования конфискованных файлов. Тот факт, что можно вскрывать какой-то конкретный криптографический алгоритм, часто является значительно большим секретом, чем информация, полученная путем вскрытия этого алгоритма,
Лучше всего исходить из предположения, заключающегося в том, что АНБ, ФАПСИ и иже с ними могут прочесть любое сообщение, которое они пожелают прочесть. Однако эти ведомства не в состоянии читать все сообщения, с содержанием которых хотят ознакомиться. Главной причиной является ограниченность в средствах, выделяемых правительством на криптоанализ. Другое разумное предположение состоит в том, что компетентным органам гораздо легче получить доступ к зашифрованной информации с помощью грубой физической силы, чем путем изящных, но очень трудоемких математических выкладок, приводящих к вскрытию шифра.
В любом случае гораздо надежнее пользоваться известным криптографическим алгоритмом, который придуман уже довольно давно и который сумел выстоять против многочисленных попыток вскрыть его, предпринятых авторитетными криптологами.
Криптографические алгоритмы, предназначенные для экспорта
В настоящее время у пользователей персональных компьютеров имеется возможность применять шифровальные алгоритмы, встроенные в различные программные продукты. Достаточно приобрести, например, текстовый редактор Word, или операционные системы Windows NT и Netware, или редактор электронных таблиц Excel. У всех этих программных продуктов есть еще одно общее свойство, кроме наличия в них встроенных алгоритмов шифрования. Они изготовлены в Соединенных Штатах, и прежде чем начать торговать ими за рубежом, американские производители в обязательном порядке должны получить разрешение у своего правительства на их экспорт за пределы США.
Повсеместно распространено мнение, что ни один криптографический алгоритм, который разрешен к экспорту из США, не является достаточно стойким, чтобы его не могли вскрыть криптоаналитики из АНБ. Считается, что компании, которые желают продавать за рубежом свою продукцию, позволяющую осуществлять шифрование данных, по настоянию АНБ переделывают используемые криптографические алгоритмы так, что
• время от времени отдельные биты ключа подмешиваются в шифртекст;
• ключ имеет длину всего 30 бит вместо официально заявляемых 100 бит, поскольку большинство ключей оказываются эквивалентны;
• в начало каждого шифруемого сообщения вставляется фиксированный заголовок, чтобы облегчить криптоаналитическую атаку со знанием открытого текста;
• любое шифрованное сообщение содержит отрезок случайного-открытого текста вместе с соответствующим ему шифртекстом.
Исходные тексты шифровальных программ передаются на хранение в АНБ, однако за пределами этого сверхсекретного агентства доступ к ним закрыт наглухо. Вполне естественно, что ни АНБ, ни американские компании, получившие от АНБ разрешение на экспорт своих шифровальных средств, не заинтересованы в рекламе слабостей криптографических алгоритмов, положенных в основу функционирования этих средств.
Поэтому желательно проявлять очень большую осторожность, если вы собираетесь защищать свои данные при помощи американских программ шифрования, которые одобрены правительством США для экспорта за пределы страны.
Симметричный или асимметричный криптографический алгоритм?
Какой алгоритм лучше — симметричный или асимметричный? Вопрос не совсем корректен, поскольку предусматривает использование одинаковых критериев при сравнении криптосистем с секретным и открытым ключом. А таких критериев не существует.
Тем не менее дебаты относительно достоинств и недостатков двух основных разновидностей криптосистем ведутся начиная с момента изобретения первого алгоритма с открытым ключом. Отмечено, что симметричные криптографические алгоритмы имеют меньшую длину ключа и работают быстрее, чем асимметричные.
Однако, по мнению одного из изобретателей криптосистем с открытым ключом — американского криптолога У. Диффи, их следует рассматривать не как некую совершенно новую разновидность универсальных криптосистем.
Криптография с открытым ключом и криптография с секретным ключом — это «две большие разницы», они предназначены для решения абсолютно разных проблем, связанных с засекречиванием информации. Симметричные криптографические алгоритмы служат для шифрования данных, они работают на несколько порядков быстрее, чем асимметричные алгоритмы. Однако и у криптографии с открытым ключом есть области применения, в которых криптографии с секретным ключом делать нечего. К ним относятся работа с ключами и многочисленные криптографические протоколы.
Шифрование в каналах связи компьютерной сети
Одной из отличительных характеристик любой компьютерной сети является ее деление на так называемые уровни, каждый из которых отвечает за соблюдение определенных условий и выполнение функций, которые необходимы для общения между собой компьютеров, связанных в сеть. Это деление на уровни имеет фундаментальное значение для создания стандартных компьютерных сетей. Поэтому в 1984 году несколько международных организаций и комитетов объединили свои усилия и выработали примерную модель компьютерной сети, известную под названием OSI (Open Systems Interconnection).
OSI разносит коммуникационные функции по уровням. Каждый из этих уровней функционирует независимо от ниже- и вышележащих. Он может непосредственно общаться только с двумя соседними уровнями, но полностью изолирован от прямого обращения к следующим уровням. Модель OSI выделяет семь уровней: верхние три служат для связи с конечным пользователем, а нижние четыре ориентированы на выполнение коммуникационных функций в реальном масштабе времени.
В теории шифрование данных для передачи по каналам связи компьютерной сети может осуществляться на любом уровне модели OSI. На практике это обычно делается либо на самых нижних, либо на самых верхних уровнях. Если данные шифруются на нижних уровнях, шифрование называется канальным. Если шифрование данных выполняется на верхних уровнях, то оно зовется сквозным. Оба этих подхода к шифрованию данных имеют свои преимущества и недостатки.
Канальное шифрование
При канальном шифровании шифруются абсолютно все данные, проходящие через каждый канал связи, включая открытый текст сообщение а также информацию о его маршрут тизации и об используемом коммуникационном протоколе (рис. 1). Однако в этом случае любой интеллектуальный сетевой узел (например, коммутатор) будет вынужден расшифровывать входящий поток данных, чтобы соответствующим образом его обработать, и снова зашифровывать, чтобы передать на другой узел сети.
Рис.1. Канальное шифрование
Тем не менее канальное шифрование представляет собой очень эффективное средство защиты информации в компьютерных сетях. Поскольку шифрованию подлежат все данные, движущиеся от одного узла сети к другому, у криптоаналитика нет никакой дополнительной информации о том, кто служит источником передаваемых данных, кому они предназначены, какова их структура и так далее. А если еще позаботиться и о том, чтобы, пока канал простаивает, передавать по нему случайную битовую последовательность, сторонний наблюдатель не сможет даже сказать, где начинается и где заканчивается текст передаваемого сообщения.
Не слишком сложной является и работа с ключами. Одинаковыми ключами следует снабдить только два соседних узла сети связи, которые затем могут менять используемые ключи независимо от других пар узлов.
Самый большой недостаток канального шифрования связан с тем, что данные приходится шифровать при передаче по каждому физическому каналу компьютерной сети. Отправка информации в незашифрованном виде по какому-то из каналов ставит под угрозу обеспечение безопасности всей сети в целом. В результате стоимость реализации канального шифрования в больших сетях может оказаться чрезмерно велика.
Кроме того, при использовании канального шифрования дополнительно потребуется защищать каждый узел компьютерной сети, через который проходят передаваемые по сети данные. Если абоненты сети полностью доверяют друг другу и каждый ее узел размещен в защищенном от проникновения злоумышленников месте, на этот недостаток канального шифрования можно не обращать внимание. Однако на практике такое положение встречается чрезвычайно редко. Ведь в каждой фирме есть конфиденциальные данные, знакомиться с которыми могут только сотрудники одного определенного отдела, а за его пределами доступ к этим данным необходимо ограничивать до минимума.
Сквозное шифрование
При сквозном шифровании криптографический алгоритм реализуется на одном из верхних уровней модели OSI. Шифрованию подлежит только содержательная часть сообщения, которое требуется передать по сети. После зашифрования к ней добавляется служебная информация, необходимая для маршрутизации сообщения, и результат переправляется на более низкие уровни с целью отправки адресату.
Теперь сообщение не требуется постоянно расшифровывать и зашифровывать при прохождении через каждый промежуточный узел сети связи. Сообщение остается зашифрованным на всем пути от отправителя к получателю (рис. 2).
Рис.2. Сквозное шифрование
Основная проблема, с которой сталкиваются пользователи компьютерных сетей, где применяется сквозное шифрование, связана с тем, что служебная информация, используемая для маршрутизации сообщений, передается по сети в незашифрованном виде. Опытный криптоаналитик может извлечь для себя массу полезной информации, зная кто, с кем, как долго и в какие часы общается через компьютерную сеть. Для этого ему даже не потребуется быть в курсе предмета общения.
По сравнению с канальным сквозное шифрование характеризуется более сложной работой с ключами, поскольку каждая пара пользователей компьютерной сети должна быть снабжена одинаковыми ключами, прежде чем они смогут связаться друг с другом. Вдобавок, поскольку криптографический алгоритм реализуется на верхних уровнях модели OSI, приходится также сталкиваться со многими существенными различиями в коммуникационных протоколах и интерфейсах в зависимости от типов компьютерных сетей и объединяемых в сеть компьютеров. Все это затрудняет практическое применение сквозного шифрования.
Комбинированное шифрование
Комбинация канального и сквозного шифрования данных в компьютерной сети обходится значительно дороже, чем канальное или сквозное шифрование по отдельности. Однако именно такой подход позволяет наилучшим образом защитить данные, передаваемые по сети. Шифрование в каждом канале связи не позволяет противнику анализировать служебную информацию, используемую для маршрутизации. А сквозное шифрование уменьшает вероятность доступа к незашифрованным данным в узлах сети.
При комбинированном шифровании работа с ключами ведется раздельно: сетевые администраторы отвечают за ключи, используемые при канальном шифровании, а о ключах, применяемых при сквозном шифровании, заботятся сами пользователи.
Шифрование файлов
На первый взгляд, шифрование файлов можно полностью уподобить шифрованию сообщений, отправителем и получателем которых является одно лицо, а средой передачи служит одно из компьютерных устройств хранения данных (магнитный или оптический диск, магнитная лента, оперативная память). Однако все не так просто, как кажется на первый взгляд.
При передаче по коммуникационным каналам сообщение не имеет большой ценности. Если оно затеряется по пути от отправителя к получателю, его можно попытаться передать снова. При шифровании данных, предназначенных для хранения в виде компьютерных файлов, дела обстоят совершенно иначе. Если вы не в состоянии расшифровать свой файл, вам вряд ли удастся сделать это и со второй, и с третьей, и даже с сотой попытки. Ваши данные будут потеряны раз и навсегда. Это означает, что при шифровании файлов необходимо предусмотреть специальные механизмы для предотвращения возникновения ошибок в шифртексте.
Криптография помогает превратить большие секреты в маленькие. Вместо того чтобы безуспешно пытаться запомнить содержимое огромного файла, человеку достаточно его зашифровать и сохранить в памяти использованный для этой цели ключ. Если ключ применяется для шифрования сообщения, то его требуется иметь под рукой лишь до тех пор, пока сообщение не дойдет до своего адресата и не будет им успешно расшифровано. В отличие от сообщений шифрованные файлы могут храниться годами, и в течение всего этого времени необходимо помнить и держать в секрете соответствующий ключ.
Есть и другие особенности шифрования файлов, о которых необходимо помнить вне зависимости от криптографического алгоритма, применяемого для этой цели:
• нередко после шифрования файла его незашифрованная копия благополучно забывается на другом магнитном диске, на другом компьютере или в виде распечатки, сделанной на принтере;
• размер блока в блочном алгоритме шифрования может значительно превышать размер отдельной порции данных в структурированном файле, в результате чего итоговая длина зашифрованного файла окажется намного больше, чем длина исходного файла;
• скорость шифрования файлов при помощи выбранного для этой цели криптографического алгоритма должна соответствовать скоростям, на которых работают устройства ввода/вывода современных компьютеров;
• работа с ключами является довольно непростым делом, поскольку разные пользователи обычно должны иметь доступ не только к различным файлам, но и к отдельным частям одного и того же файла.
Если файл представляет собой единое целое (например, содержит отрезок текста), восстановление этого файла в исходном виде не потребует больших усилий: перед использованием достаточно будет расшифроватъ весь файл. Однако если файл структурирован (например, разделен на записи и поля, как это делается в базах данных), то расшифровывание всего файла целиком всякий раз, когда необходимо осуществить доступ к отдельной порции данных, сделает работу с таким файлом чрезвычайно неэффективной. А при индивидуальном шифровании порций данных в структурированном файле сделает его уязвимым по отношению к атаке, при которой злоумышленник отыскивает в этом файле нужную порцию данных и заменяет ее на другую по своему усмотрению.
У пользователя, который хочет зашифровать каждый файл, размещенный на жестком диске компьютера, имеются две возможности. Если он использует один ключ для шифрования всех файлов, то впоследствии окажется не в состоянии разграничить доступ к отдельным файлам со стороны других пользователей. Кроме того, в результате у криптоаналитика будет значительное количество шифртекста, полученного на одном ключе, что существенно облегчит ему вскрытие этого ключа.
Лучше шифровать каждый файл на отдельном ключе, а затем зашифровать все ключи при помощи мастер-ключа. Тем самым пользователи будут избавлены от суеты, связанной с организацией надежного хранения большого числа ключей. Разграничение доступа групп пользователей к различным файлам будет осуществляться путем деления множества всех ключей на подмножества и шифрования этих подмножеств на различных мастер-ключах. Стойкость такой криптосистемы будет значительно выше, чем в случае использования единого ключа для шифрования всех файлов на жестком диске, поскольку ключи, применяемые для шифрования файлов, можно сделать более случайными и, следовательно, более стойкими против словарной атаки.
Аппаратное и программное шифрование
Аппаратное шифрование
Большинство средств криптографической защиты данных реализовано в виде специализированных аппаратных устройств. Эти устройства встраиваются в линию связи и осуществляют шифрование всей передаваемой по ней информации. Преобладание аппаратного шифрования над программным обусловлено несколькими причинами.
Во-первых, аппаратное шифрование обладает большей скоростью. Криптографические алгоритмы состоят из огромного числа сложных операций, выполняемых над битами открытого текста. Современные уни версальные компьютеры плохо при способлены для эффективного вы полнения этих операций. Специа лизированное оборудование умеет делать их гораздо быстрее.
Во-вторых, аппаратуру легче физически защитить от проникновения извне. Программа, выполняемая на персональном компьютере, практически беззащитна. Вооружившись отладчиком, злоумышленник может скрытно внести в нее изменения, чтобы понизить стойкость используемого криптографического алгоритма, и никто ничего не заметит. Что же касается аппаратуры, то она обычно помещается в особые контейнеры, которые делают невозможным изменение схемы ее функционирования. Чип покрывается сверху специальным химическим составом, и в результате любая попытка преодолеть защитный слой этого чипа приводит к самоуничтожению его внутренней логической структуры. И хотя иногда электромагнитное излучение может служить хорошим источником информации о том, что происходит внутри микросхемы, от этого излучения легко избавиться, заэкранировав микросхему. Аналогичным образом можно заэкранировать и компьютер, однако сделать это гораздо сложнее, чем в случае миниатюрной микросхемы.
И в-третьих, аппаратура шифрования более проста в установке. Очень часто шифрование требуется там, где дополнительное компьютерное оборудование является совершенно излишним. Телефоны, факсимильные аппараты и модемы значительно дешевле оборудовать устройствами аппаратного шифрования, чем встраивать в них микрокомпьютеры с соответствующим программным обеспечением.
Даже в компьютерах установка специализированного шифровального оборудования создает меньше проблем, чем модернизация системного программного обеспечения с целью добавления в него функций шифрования данных. В идеале шифрование должно осуществляться незаметно для пользователя. Чтобы добиться этого при помощи программных средств, шифрование должно быть упрятано глубоко в недра операционной системы. С готовой и отлаженной операционной системой безболезненно проделать это не так-то просто. Но даже любой непрофессионал сможет подсоединить шифровальный блок с одной стороны к персональному компьютеру и к внешнему модему с другой.
Современный рынок аппаратных средств шифрования информации предлагает потенциальным покупателям три разновидности таких средств — самодостаточные шифровальные модули (они самостоятельно выполняют всю работу с ключами), блоки шифрования в каналах связи и шифровальные платы расширения для установки в персональные компьютеры. Большинство устройств первого и второго типа являются узко специализированными, и поэтому, прежде чем принимать окончательное и бесповоротное решение об их приобретении, необходимо досконально изучить ограничения, которые при установке накладывают эти устройства на соответствующее «железо», операционные системы и прикладное программное обеспечение. А иначе можно выбросить деньги на ветер, ни на йоту не приблизившись к желанной цели. Правда, иногда выбор облегчается тем, что некоторые компании торгуют коммуникационным оборудованием, которое уже имеет в своем составе предустановленную аппаратуру шифрования данных.
Платы расширения для персональных компьютеров являются более универсальным средством аппаратного шифрования и обычно могут быть легко сконфигурированы таким образом, чтобы шифровать всю информацию, которая записывается на жесткий диск компьютера, а также все данные, пересылаемые на его гибкий диск и в последовательные порты. Как правило, защита от электромагнитного излучения в шифровальных платах расширения отсутствует, поскольку нет смысла защищать эти платы, если аналогичные меры не предпринимаются в отношении всего компьютера в целом.
Программное шифрование
Любой криптографический алгоритм может быть реализован в виде соответствующей программы. Преимущества такой реализации очевидны: программные средства шифрования легко копируются, они просты в использовании, их нетрудно модифицировать в соответствии с конкретными потребностями.
Во всех распространенных операционных системах имеются встроенные средства шифрования файлов. Обычно они предназначены для шифрования отдельных файлов, и работа с ключами целиком возлагается на пользователя. Поэтому применение этих средств требует особого внимания: во-первых, ни в коем случае нельзя хранить ключи на диске вместе с зашифрованными с их помощью файлами, а во-вторых, незашифрованные копии файлов необходимо стереть сразу же после шифрования.
Конечно, злоумышленник может добраться до компьютера и незаметно внести нежелательные изменения в программу шифрования. Однако основная проблема состоит отнюдь не в этом. Если злоумышленник в состоянии проникнуть в помещение, где установлен компьютер, он вряд ли будет возиться с программой, а просто установит скрытую камеру в стене, подслушивающее устройство в телефон или датчик для ретрансляции электромагнитного излучения в компьютер. В конце концов, если злоумышленник может беспрепятственно все это сделать, сражение с ним уже проиграно, даже не начавшись.
Сжатие и шифрование
Алгоритмы сжатия данных очень хорошо подходят для совместного использования с криптографическими алгоритмами. На это есть две причины:
• При вскрытии шифра криптоаналитик более всего полагается на избыточность, свойственную любому открытому тексту. Сжатие помогает избавиться от этой избыточности.
• Шифрование данных является весьма трудоемкой операцией. При сжатии уменьшается длина открытого текста, и тем самым сокращается время, которое будет потрачено на его шифрование.
Надо только не забыть сжать файл до того, как он будет зашифрован, а не после. После шифрования файла при помощи качественного криптографического алгоритма полученный шифртекст сжать не удастся, поскольку его характеристики будут близки к характеристикам совершенно случайного набора букв. Кстати, сжатие может служить своеобразным тестом для проверки качества криптографического алгоритма: если шифртекст поддается сжатию, значит, этот алгоритм лучше заменить на более совершенный.
Как спрятать один шифртекст в другом
Предположим, что две гипотетические личности по имени Антон и Борис несколько месяцев обменивались шифрованными сообщениями. Контрразведка перехватила все эти сообщения, но так и не смогла прочесть ни единого слова. Контрразведчикам надоело коллекционировать переписку Антона и Бориса, не зная ее содержания, и они решили арестовать подозрительную парочку. Первый же допрос начался словами:
— Где ключи к шифру?
— К какому такому шифру?! —
в один голос воскликнули Антон и Борис, но тут же осеклись и побледнели, заметив на столе у следователя зловещего вида клещи, покрытые пятнами то ли ржавчины, то ли крови.
Антон и Борис смогли бы выкрутиться из создавшегося положения, если бы шифровали каждое свое сообщение так, чтобы оно допускало два различных расшифрования в зависимости от используемого ключа. Свое настоящее секретное сообщение Борису Антон мог бы зашифровать на одном ключе, а вполне невинный открытый текст — на другом. Теперь, если от Антона потребуют ключ к шифру, он отдаст подставной ключ, который позволит прочесть совершенно невинное сообщение, а ключ от настоящего сообщения сохранит в тайне.
Самый простой способ сделать это потребует использования одноразового блокнота. Пусть Р — настоящий открытый текст, D — невинный открытый текст, С — шифрованный текст, К—настоящий ключ, а К’—подставной ключ. Антон шифрует Р:
РAК=С.
Поскольку у Бориса имеется копия ключа К, он может без проблем расшифровать сообщение Антона:
СAК=Р.
Если контрразведчики попытаются заставить Антона и Бориса выдать используемый ими ключ, вместо К они могут сообщить в контрразведку:
К’=СAD.
В результате контрразведчики смогут прочитать невинный открытый текст:
СAК’=D.
Так как Антон и Борис пользуются одноразовым блокнотом, то К является полностью случайным, и доказать, что К’ является подставным ключом, практически невозможно (не прибегая к пыткам).
Антон мог бы зашифровать Р не с помощью одноразового блокнота, а пользуясь любым из своих самых любимых криптографических алгоритмов и ключом К. Сложив С с отрезком какого-либо общеизвестного произведения (например, с отрывком из второй главы «Идиота» Достоевского) по модулю 2, Антон получит К’. Теперь если к Антону пристанут «дяденьки» из контрразведки, он предъявит им С вместе с К’ и скажет, что К’ — это одноразовый блокнот для С и что он просто захотел попрактиковаться в криптографии, зашифровав для этой цели отрывок из первой попавшейся кни ги. И пока контрразведчики нe получат в свое распоряжение ключ К, доказать, что Антон занимался чем-то противозаконным, они не смогут.