Интересно, что безопасность и цена зависят также от конструкции системы. Например, представьте себе механизм, в котором сеансовые ключи отсылаются в центр по восстановлению, зашифрованные общедоступным открытым ключом, хранящимся в центре. Эта система относительно проста для конструирования и выполнения, но она является одной из худших с точки зрения безопасности. Все зависит от ключа системы восстановления, которым шифруются все остальные ключи. Если этот ключ взломан (или подделан), все ключи в системе могут быть взломаны. Конечно, некоторые коммерческие системы основываются на почти таком же механизме.
GAK-системы существенно менее безопасные, более дорогие и более сложные в эксплуатации, чем подобные им системы, не предусматривающие возможность восстановления ключей. Чтобы сделать их работающими, надо выдвинуть требование считать незаконными продукты, не включающие GAK. Более того, для этой схемы требуется построение безопасной инфраструктуры такого поразительного масштаба и сложности, создание которой превышает существующие сегодня возможности в этой области и может внести безусловно неприемлемый риск и дороговизну.
Безопасность баз данных
Безопасность баз данных – более сложная вещь, чем обычно думают. В простейшем случае все легко: Алиса имеет доступ к персональной базе данных, Боб не имеет. В более трудных случаях все сложнее – Алиса имеет доступ к части базы данных, относящейся к медицинскому страхованию, а Боб имеет доступ к персональной базе данных по зарплате, – но коммерческие базы данных управляются с этим достаточно успешно. Действительно сложная задача – обеспечить анонимность при работе с базой данных, позволяя людям использовать итоговую информацию, – удивительно трудна.
Первый трудный случай. База данных может быть настроена таким образом, чтобы определенные пользователи могли видеть только определенные поля. Всем пользователям должно быть разрешено видеть ряд полей общего доступа (имя служащего, номер служащего), но только некоторым пользователям разрешается видеть специальные поля (информация о медицинском страховании, зарплата). Это все обычные проблемы компьютерной безопасности, разрешаемые с помощью протоколов идентификации и списков контроля доступа.
Намного более сложно иметь дело с ситуацией, когда у Алисы есть право делать запросы и смотреть статистические данные, но нет права на просмотр информации по каждому отдельному случаю. Это одна из проблем «вывода»; Алиса может вывести информацию об отдельных случаях, но делая запросы относительно групп.
Пример: Алиса запрашивает у базы данных итоговую информацию по определенным группам. Если она сможет получить ответ на запрос такого сорта – сообщить обо всех наркоманках, в возрасте от 35 до 45 лет, у которых один из родителей диабетик, имеющих определенный почтовый адрес, – скорее всего, она получит возможность выделить отдельные случаи.
Возможное решение этой проблемы – вычищать данные, прежде чем они попадут в чьи-нибудь руки. Данные о переписи населения США 1960 года, например, засекречены подобным образом. Для статистического анализа можно получить только одну запись на тысячу, и в этих записях удалены поля, содержащие имена, адреса и другая важная информация. Бюро переписи также применяет ряд других трюков: данные, имеющие экстремальное значение, подавляются, в систему добавляется шум. Эти методы защиты сложны, и, несмотря на это, достаточно тонкие атаки все же могут быть проведены. Если вы хотите получить сведения об одной богатой семье, живущей по соседству, может оказаться возможным вывести эти данные, если вы сделаете некоторые разумные предположения.
Другое допустимое решение – наложить ограничение на типы запросов, которые пользователь может делать к базе данных. Это также трудно сделать правильно. В одной известной исследовательской работе автор, вычисляя жалованье своего босса, основывался на вполне законных запросах к базе данных переписи 1970 года, несмотря на контроль, введенный специально для того, чтобы предупреждать подобные вещи. Информационная система Национального здравоохранения Новой Зеландии пыталась разрушить подобные виды атак, не выдавая информацию по группам, состоящим менее чем из 6 человек.
Атаки все равно остаются возможными. Алиса собирается узнать виды разрешенных запросов, и лучшее, что она может сделать, – сформировать некий математический подход для вывода нужной ей информации из информации, к которой она имеет доступ. И подобные вещи усугубляются, если Алисе разрешено добавлять данные в базу и удалять их. Если она хочет получить информацию относительно отдельного человека, она могла бы вставить пару сотен записей в базу и затем сделать общий запрос по людям, включая тех, которых она добавила, плюс ее цель. Так как ей известны все данные, которые она добавила, она может «вычислить» данные того, кто ей нужен. Целый ряд атак основывается на означенной идее.
В этой области проводились активные исследования в 80-х годах, но сейчас их меньше. (Новые правила конфиденциальности медицинской информации могут привести к их возрождению.) Хотя проблемы так и не решены.
Стеганография
Стеганография[42] – это наука скрывать сообщения внутри сообщений. Геродот рассказывает о практике древних греков, когда секретное сообщение записывали с помощью татуировки, нанесенной на бритую голову посланца, а потом он снова отращивал волосы, перед тем как переправить это сообщение через вражескую территорию. (Длительность этой связи измерялась месяцами.) Использование невидимых чернил – более современная технология. Микрофотоснимки были изобретены немцами во время Первой мировой войны и оставались в моде в течение многих лет. Шпионы делали негативное изображение достаточно маленьким, чтобы можно было вырезать его и поместить между строчек книги. Шпион мог пронести такую книгу везде, не опасаясь, что кто-либо обнаружит микрофотографии, скрытые на одной из ее многочисленных страниц.
В компьютерном мире стеганография используется для скрытия секретных сообщений в графике, картинках, движущихся изображениях или в звуке. Отправитель скрывает сообщение, используя наименьшие значащие биты[43] файла одного из этих типов – качество слегка ухудшается, но если вы сделали все правильно, это с трудом можно заметить – получатель на другом конце извлекает его. Некоторые коммерческие и свободно распространяемые программы предлагают стеганографию либо отдельно, либо в составе целого пакета средств обеспечения безопасности связи.
Стеганография обеспечивает степень секретности более высокую, чем криптография. Если Алиса захочет послать Бобу секретное сообщение, она может использовать одну из популярных программ шифрования для электронной почты. Однако заинтересованное лицо может перехватить сообщение, и хотя оно не сумеет прочитать его, но будет знать о самом факте отправки сообщения. Стеганография позволяет Алисе сообщаться с Бобом секретно; она может скрыть свое письмо в GIF-файле, содержащем изображение пары жирафов. Перехватчица не поймет, что Алиса послала Бобу секретное сообщение. Для обеспечения еще более надежной защиты Алиса может зашифровать сообщение, прежде чем скрыть его.
Чем дальше, тем лучше. Но в действительности системы работают не так. Наша перехватчица не глупа; как только она увидит картинку с жирафами, у нее могут возникнуть подозрения. Почему бы это Алисе посылать Бобу картинку с двумя жирафами? Боб коллекционирует жирафов? Или он художник-график? Посылали ли Алиса и Боб одно и то же изображение жирафов друг другу в течение последних недель? Упоминали ли об этой картинке в другой корреспонденции?
Самого по себе применения стеганографии недостаточно. Алиса и Боб должны скрыть факт, что они передавали что-либо, кроме безвредных фотографий. Это будет работать только в том случае, если стеганография станет использовать существующие образцы связи (communications patterns). Я в жизни не посылал и не получал GIF-изображений. Если кто-то неожиданно пошлет мне одно, это может навести дотошного исследователя на мысль, что в нем скрыто стеганографическое сообщение. Если Алиса и Боб регулярно обмениваются подобными файлами, перехватчик не сможет узнать, какое сообщение содержит в себе – если какое-либо содержит – скрытую информацию. Если Алиса и Боб изменят свои образцы связи для скрытых сообщений, система перестанет работать. Перехватчица их «вычислит».
Это важно. Стеганографию иногда рекомендуют использовать для секретной связи при репрессивных режимах, когда простой факт посылки зашифрованного сообщения может рассматриваться как подрывная деятельность. Это плохой совет. Модель, в которой постоянно присутствует угроза, предполагает, что вы под подозрением и должны выглядеть невинным в случае проверки. Это трудно. Вы можете применить программу стеганографии, которая доступна и перехватчице ваших сообщений. Она будет иметь копию этой программы. Она будет настороже, предвидя возможность появления стеганографических сообщений. Не используйте простое изображение, которое было в программе, когда вы установили ее: перехватчица быстро распознает его. Не используйте одно и то же изображение снова и снова: перехватчица увидит различия, указывающие на то, что это скрытое сообщение. Не используйте картинки, загруженные из Сети: перехватчица легко может сравнить картинку, которую вы послали, с исходной, которую вы загрузили. (Вы можете предположить, что она следит за загрузкой или осуществит поиск в Сети, чтобы найти такое же изображение.) И лучше, если вы придумаете правдоподобную историю о том, почему вы «гоняете» жирафов туда и обратно. И эта история должна быть придумана до того, как вы начнете посылать стеганографические сообщения, или вы ничего реально не выиграете.