Чем дальше, тем лучше. Но в действительности системы работают не так. Наша перехватчица не глупа; как только она увидит картинку с жирафами, у нее могут возникнуть подозрения. Почему бы это Алисе посылать Бобу картинку с двумя жирафами? Боб коллекционирует жирафов? Или он художник-график? Посылали ли Алиса и Боб одно и то же изображение жирафов друг другу в течение последних недель? Упоминали ли об этой картинке в другой корреспонденции?
Самого по себе применения стеганографии недостаточно. Алиса и Боб должны скрыть факт, что они передавали что-либо, кроме безвредных фотографий. Это будет работать только в том случае, если стеганография станет использовать существующие образцы связи (communications patterns). Я в жизни не посылал и не получал GIF-изображений. Если кто-то неожиданно пошлет мне одно, это может навести дотошного исследователя на мысль, что в нем скрыто стеганографическое сообщение. Если Алиса и Боб регулярно обмениваются подобными файлами, перехватчик не сможет узнать, какое сообщение содержит в себе – если какое-либо содержит – скрытую информацию. Если Алиса и Боб изменят свои образцы связи для скрытых сообщений, система перестанет работать. Перехватчица их «вычислит».
Это важно. Стеганографию иногда рекомендуют использовать для секретной связи при репрессивных режимах, когда простой факт посылки зашифрованного сообщения может рассматриваться как подрывная деятельность. Это плохой совет. Модель, в которой постоянно присутствует угроза, предполагает, что вы под подозрением и должны выглядеть невинным в случае проверки. Это трудно. Вы можете применить программу стеганографии, которая доступна и перехватчице ваших сообщений. Она будет иметь копию этой программы. Она будет настороже, предвидя возможность появления стеганографических сообщений. Не используйте простое изображение, которое было в программе, когда вы установили ее: перехватчица быстро распознает его. Не используйте одно и то же изображение снова и снова: перехватчица увидит различия, указывающие на то, что это скрытое сообщение. Не используйте картинки, загруженные из Сети: перехватчица легко может сравнить картинку, которую вы послали, с исходной, которую вы загрузили. (Вы можете предположить, что она следит за загрузкой или осуществит поиск в Сети, чтобы найти такое же изображение.) И лучше, если вы придумаете правдоподобную историю о том, почему вы «гоняете» жирафов туда и обратно. И эта история должна быть придумана до того, как вы начнете посылать стеганографические сообщения, или вы ничего реально не выиграете.
Программы стеганографии существуют, чтобы скрывать файлы на вашем жестком диске. Это может работать, но вам по-прежнему нужна жизнеспособная история. Таким образом, есть определенные достижения по сравнению с простым шифрованием – по крайней мере, в свободных странах вы сможете доказать, что полиция не имеет реальных оснований для обвинения, – но вы должны тщательно все обдумать.
Одна из проблем, связанных с применением стеганографии, – ширина полосы пропускания. Легко скрыть несколько битов информации; спрятать целое сообщение электронной почты намного труднее. Рассмотрим пример совершенно разумного использования стеганографического канала передачи данных: Алиса и Боб должны обсудить, является ли некое отдельное действие «безопасным» или «угрожающим». Это один бит информации. Они регулярно обмениваются рецептами по электронной почте и договорились, что ключевая фраза «продублируй рецепт» будет индикатором сообщения. Если в послании сказано, что рецепт может быть продублирован, действие безопасно. Если же в нем говорится, что рецепт не может быть продублирован, соответствующее действие опасно. Любой рецепт без ключевой фразы не содержит скрытого сообщения.
Этот вид систем работает, поскольку секретное послание много-много меньше, чем скрывающее его сообщение, и в общем случае называется скрытым каналом (subliminalchannel) (похоже на тайный канал, описанный в главе 8). Скрытые каналы так же стары, как компьютеры, и всегда использовались недобросовестными программистами для «скачивания» информации без согласия пользователей. Представьте, что вы программист и делаете отчет по клиентам банка, и вы хотите запустить свои руки в картотеку индивидуальных номеров (PINs). Вас не уполномочили проверять реальные данные, но доверили вам написать код для получения отчета по базе, содержащей PINs. И вы можете посмотреть отчеты, которые были сделаны раньше. Программа создания отчета добавляет пробелы после данных каждого клиента, от 0 до 9, в соответствии с одной цифрой его PIN. Пусть теперь построитель отчета использует первую цифру в первый день, вторую цифру во второй день, и так далее, пока цикл не будет завершен и мы не возвратимся к первой цифре. Вот именно. Если программист сможет приложить руку к созданию электронного отчета в течение четырех дней, он справится с восстановлением всех индивидуальных номеров. (Действительно, он имеет четыре возможных варианта для каждого номера, в зависимости от того, какая цифра использовалась построителем отчета. Легко понять, что к чему.) Ни один из тех, кто будет смотреть отчеты, не увидит в них ничего злонамеренного, и пока они не проверят код, используемый для создания отчета (а как часто это случается?), никто не узнает, что индивидуальные номера раскрыты.
Есть история о солдате, которому не разрешали говорить, где он служит. У него не было среднего инициала, и он послал серию писем своей подруге, используя в подписи различные средние инициалы; таким образом он дал знать, где находится.
Теперь, когда вы имеете представление об общей идее, вы можете подумать обо всех возможных способах внедрения скрытых каналов в документы: выборе шрифтов и размерах шрифтов, размещении данных и графики на странице, использовании различных синонимов в тексте и т. д. Многие протоколы шифрования позволяют воспользоваться выбором параметров в целях создания скрытого канала: выбором случайных битов для дополнения или неиспользованных битов полей. До тех пор пока вы не слишком жадничаете и согласны черпать информацию чайной ложечкой, несложно организовать скрытый канал в системе.
Вы можете организовать утечку всего что угодно. Индивидуальные номера – хороший пример. Другой пример – ключи шифрования. Создание устройства для шифрования, в котором информация о ключах утекает по скрытому каналу, – замечательный способ атаковать кого-нибудь.
Скрытые каналы, внедренные недобросовестными программистами, обнаруживались во всех видах программного обеспечения спустя какое-то время. Разведывательные организации, подобные NSA, долгое время подозревались во внедрении скрытых каналов, по которым идет утечка информации о ключах криптографического оборудования, проданного иностранным правительствам. Недавний скандал, в котором фигурировала шведская компания Crypto AG, подтверждает это. Побочные каналы, обсуждавшиеся в контексте главы 14, где речь шла об аппаратных средствах сопротивления вторжению, могут рассматриваться как действующие скрытые каналы.
Заметим, что для скрытых каналов существует та же проблема, что и для стеганографии – каждый, кто удосужится проверить программное обеспечение, может обнаружить скрытый канал. Но внедренные в сложное программное обеспечение, а еще лучше в аппаратное обеспечение, они могут оставаться незамеченными в течение долгого времени.
Мы говорили об интеллектуальной собственности в главе 3. К слову сказать, компании, подобные компании Диснея, собираются торговать «в розницу» своей интеллектуальной собственностью – музыкой, видеоклипами, фотоснимками, чем угодно – в цифровой форме. Они не хотели бы, чтобы люди копировали Русалочку (The Little Mermaid) и свободно распространяли ее через Интернет. Они не хотели бы, чтобы люди крали части различных изображений – даже простейшего изображения Микки-Мауса – и использовали их без уплаты определенного вознаграждения автору. Они хотят осуществлять контроль над своей собственностью.