Стеганография – способ скрыть сам факт наличия секретного сообщения.
Традиционные стеганографические способы:
· письмо молоком
· использование специальных слов, обозначающих секретные объекты
· чтение текста через трафарет (физический или логический)
· описание секретного объекта, вложенное в некоторую инструкцию (кроссворд, вязание и т.п.).
Преимущества и недостатки стеганографии: трудно доказуем факт наличия секретного сообщения, но также трудно обосновать криптостойкость способа. В результате имеем совет: сочетать криптографические способы со стеганографией.
Электронные способы стеганографии дополняются скрытием сообщения в звуковых и графических файлах. При этом следует использовать ту часть информации, которая наименее значимая, например в 24-разрядном формате BMP можно использовать младший бит в каждом байте – интенсивности цвета. В формате JPEG последние коэффициенты Фурье тоже можно изменять незаметно для глаза человека. В любом другом формате обязательно отыщется место, не слишком важное, либо вообще зарезервированное для будущих времен, а потому не используемое.
Стеганография в электронных каналах связи – способы скрытия факта передачи секретной информации при передаче электронных документов. Такое скрытие возможно, если открыто передаваемая информация (контейнер) обладает достаточно большой избыточностью, позволяющей заменить некоторые биты без потери смысла и качества. Наибольшей избыточностью обладают мультимедиа файлы. Но и в обычный текст тоже можно «вложить» дополнительное сообщение. Например, при помощи дополнительных пробелов после слов (есть дополнительный пробел – 1, нет дополнительного пробела – 0) можно включить в текст двоичный код. Последний может интерпретироваться и как ASCII код символов и как код (номера символов) в собственном алфавите. Второй способ передачи стегосообщения – заранее договориться о секретном языке: новом обозначении слов или целых фраз.
Способы обнаружения стегоканала чаще всего базируются на расчете уровня ошибок в полученных данных и сравнении рассчитанного уровня со средним (статистическим) уровнем ошибок исследуемой линии связи. При повышенном уровне ошибок система защиты может решить, что в полученные данные, возможно, вложено стегосообщение, и не пропустить такие данные. Как видите, способ весьма неточный. Более того, различить физические ошибки и стегосообщение невозможно. Если же вы воспользовались новым языком, то автоматически определить стегоканал не представляется возможным.
В связи с этим, применение стегоканалов без соответствующего разрешения органов безопасности запрещено! А так как нет эффективных методов доказательства применения стеганографии, то в военное время или в случае необходимости соблюдения режима строгой секретности передача различных чертежей, кроссвордов, описаний технологии вязания, файлов развлекательного содержания и т.п. запрещается.
Очевидно, что стегосообщение может представлять собой и текст, и картинку, и звук. Главное – выделить стегобиты и интерпретировать их нужным образом.
Очень интересны стегоканалы, использующие особенности человеческого восприятия. Например, известно, что после очень громкого звука человек в течение 20 микросекунд не способен воспринимать тихие звуки. Поэтому в звуковой файл после каждого громкого звука можно поместить тихий секретный фрагмент. Получателю следует выбрать такие фрагменты, объединить и прослушать переданное сообщение. Аналогично можно использовать и файлы изображения.
В свое время сильно нашумело «дело о 25 кадре». Вы, конечно, знаете, что фильмы представляют собой последовательный показ неподвижных картинок-кадров с такой скоростью, чтобы человек воспринимал это как непрерывно изменяющееся изображение. Опытным путем было установлено, что интересующая нас скорость больше или равна 24 кадрам в секунду. Было высказано мнение, что если каждый 25-й кадр использовать под некоторое стегоизображение, то человеческий мозг распознает эти данные на подсознательном уровне. Психологи и политики опасались распространения таким образом рекламы, различного рода внушений и т.п. Дело закончилось ничем, так как не были получены ни подтверждения высказанной гипотезы, ни опровержения.
Так же как и на важных бумажных документах, на электронных документах могут потребоваться «водные знаки». С их помощью производитель может подтвердить свое авторство, то есть в судебном порядке доказать факт несанкционированного копирования документа. Стеганография позволяет создать такие «водяные знаки».
Автор сначала решает, что именно он хочет тайно вложить в электронный документ. Затем он выбирает способ, алгоритм. Алгоритм и вложение должны быть оговорены в специальном соглашении с органами по борьбе с экономическими преступлениями, подтвержденном юридически. В дальнейшем при подозрении на копирование электронного документа с нарушением авторских прав дело может быть передано в суд.
Формат 24-разрядного BMP-файла описан во многих документах: 58 байт заголовка, а затем каждые три байта идентифицируют один пиксель в RGB-нотации, то есть цвет каждой точки складывается из трех последовательных байтов, в первом из которых число характеризует интенсивность красного цвета (0-255), во втором – интенсивность зеленого, в третьем – интенсивность синего. Можно воспользоваться плохо различимым на глаз изменением в каждом последнем бите цвета, то есть заменить в исходном файле эти биты на биты из сообщения.
Сначала надо научиться выделять биты из символов скрываемого сообщения. Для этого вспомнить теорию «Системы счисления».
Итак, код символа – число от 0 до 255. Для того чтобы получить биты этого числа, требуется 8 раз произвести операцию нахождения остатка от деления пополам, уменьшая число каждый раз вдвое (моделирование операции битового сдвига, которой нет в VBA).
Например, код символа =157. Тогда
0. 157 mod 2 = 1
1. 78 mod 2 = 0
2. 39 mod 2 = 1
3. 19 mod 2 = 1
4. 9 mod 2 = 1
5. 4 mod 2 = 0
6. 2 mod 2 = 0
7. 1 mod 2 = 1
Итак, мы получили 00011101 =
1*2^7+0*2^6+0*2^5+1*2^4+1*2^3+1*2^2+0*2^1+1*2^0 = 157
Обратите внимание, что в алгоритме биты получаются в обратном порядке! На самом деле это неважно, так как в любом случае по получаемым битам можно восстановить весь байт. Об этом будет чуть позже.
Теперь рекомендуется внести биты скрываемого текста в текст контейнера. Это, конечно же, довольно бессмысленный способ стеганографирования, т.к. буквы текста – контейнера изменятся (заметно!), но зато Вы можете проконтролировать правильность Вашей программы.
Итак, как внести очередной бит скрываемого текста (СТ) в очередной символ текста – контейнера (ТК)? Для этого Вам последний бит ТК надо заменить на бит СТ. Для этого сначала надо сделать так, чтобы младший бит ТК был равен 0, а затем добавить к нему бит СТ. Поместить в младший бит 0 можно, разделив байт на 2 нацело и умножив на 2. «Добавить бит» означает просто сложить. Для простоты отладки программы рекомендуется исходный текст скопировать и изменять копию.
Пример:
Пусть дан контейнер, содержащий 10 пробелов. На картинке изображены 5-ый (синий), 6-ой (зеленый) и 7 (коричневый) пробелы.
ТК (текст – контейнер):
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Пусть прячем мы тоже пробел, тогда его битовое представление:
СК (скрываемый текст):
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Таким образом, первый 0 из СТ, второй, третий, четвертый и пятый ничего не изменят в тексте контейнере, так как в младших битах каждого пробела текста – контейнера стоит тоже 0. А единица, вставленная в 6-ой пробел ТК, изменит его на «!».
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Вообще, вставленный бит из скрываемого текста ничего не изменит в том случае, если он совпадает со значением младшего бита текста – контейнера (0 и 0 или 1 и 1). Вставляемая 1, если младший бит был равен 0, увеличит код символа, следовательно, изменит символ на тот, что в таблице ASCII стоит справа. Вставляемый 0, если младший бит ТК был равен 1, уменьшит код, следовательно, заменит символ на символ, стоящий в таблице ASCII слева.
Если со скрытием все получилось, то следует приступить к извлечению скрытого текста. Если Вы получали (и прятали) биты в прямом порядке, то есть от старшего к младшему, то следует применить схему Горнера. Если же Вы получаете биты от младшего к старшему, то в соответствии с разложением по степеням основания системы счисления на каждом шаге Вам легко пересчитать «значимость» очередной полученной двоичной цифры, умножив на 2 предыдущий порядок (очередная степень основания системы счисления).
Рекомендуется скрываемое сообщение дополнить символом с кодом, равным 0 с целью определения конца сообщения.
Для извлечения скрытого текста Вам следует просмотреть все байты текста – контейнера, из каждого извлечь младший бит (MOD 2). Восемь извлеченных бит составят код символа. А по коду (CHR) получается, наконец, сам символ.
Если вы сразу прятали получаемые биты стеготекста в контейнер, то извлекать будете от младшего бита к старшему. Рекомендация: воспользуйтесь на каждом шаге цикла расчетом «значимости» очередного бита так, что «значимость» в начале равна 20=1, затем «значимость»= «значимость»*2 и т.д. В общем виде это выглядит следующим образом. Пусть дано двоичное число B7B6B5B4B3B2B1B0, тогда если Вы последовательно узнаете цифры этого числа справа налево, то Вам следует к вычисляемому значению (десятичному) добавлять очередную полученную двоичную цифру, умноженную на ее «значимость», а «значимость» умножать на основание системы счисления, то есть на 2.
То есть число
B7B6B5B4B3B2B1B0,= B0*20+ B1*21+ B2*22+ B3*23+ B4*24+ B5*25+ B6*26+ B7*27
Не забудьте после окончания формирования одного байта сбросить «значимость» в 1!
Шифрующая файловая система - это тесно интегрированная с NTFS служба, располагающаяся в ядре Windows 2000. Ее назначение: защита данных, хранящихся на диске, от несанкционированного доступа путем их шифрования. Дело в том, что существующие на сегодняшний день файловые системы не обеспечивают необходимую защиту данных от несанкционированного доступа. NTFS обеспечивает разграничение доступа и защиту данных от несанкционированного доступа, но только тогда, когда она работает. Если же доступ к разделу NTFS осуществляется не с помощью средств операционной системы MS Windows, а напрямую, на физическом уровне, то данные оказываются беззащитны. Загрузившись с дискеты и запустив специальную программу: например, весьма распространенную ntfsdos (далеко не единственная такая программа), злоумышленник может прочитать все файлы. Можно предусмотреть такую возможность и задать пароль на запуск системы, однако практика показывает, что такая защита малоэффективна, особенно в том случае, когда за одним компьютером работают сразу несколько пользователей. А если злоумышленник может извлечь жесткий диск из компьютера, то тогда уже не помогут никакие пароли. Подключив диск к своему компьютеру, злоумышленник может легко прочитать содержимое украденного диска, обладая административными полномочиями. Таким образом, злоумышленник свободно может овладеть конфиденциальной информацией, которая хранится на жестком диске. Единственный способ защиты от физического чтения данных - это шифрование файлов.
Простейший случай такого шифрования - архивирование файла с паролем. Однако здесь есть ряд серьезных недостатков. Во-первых, пользователю требуется каждый раз вручную шифровать и дешифровать (то есть, в нашем случае архивировать и разархивировать) данные перед началом и после окончания работы, что уже само по себе уменьшает защищенность данных. Пользователь может забыть зашифровать (заархивировать) файл после окончания работы, или (еще более банально) просто оставить на диске копию файла. Во-вторых, пароли, придуманные пользователем, как правило, легко угадываются. Кроме того, пароль в том или ином виде хранится в архиве, и существует достаточное количество программ, позволяющих распаковывать архивы, защищенные паролем. Как правило, такие утилиты осуществляют подбор пароля путем перебора слов, записанных в словаре. Распаковка по умолчанию производится в общедоступный каталог TEMP. Недостаток подобного шифрования еще и в том, что это происходит не прозрачно для приложений, и потому требует полной дешифровки всего файла (или папки).
Система EFS была разработана с целью преодоления этих недостатков.
EFS использует архитектуру Windows CryptoAPI. Для шифрования каждого файла случайным образом генерируется ключ шифрования файла. При этом для шифрования файла может применяться любой симметричный алгоритм шифрования. В настоящее же время в EFS используется один алгоритм, это DESX, являющийся специальной модификацией широко распространенного стандарта DES. Затем ключ шифрования шифруется открытым ключом пользователя при помощи алгоритма RSA.
Ключи шифрования EFS хранятся в резидентном пуле памяти (сама EFS расположена в ядре Windows 2000), что исключает несанкционированный доступ к ним через файл подкачки. Резидентный пул (или резидентная часть) – это та часть памяти, которая не выгружается в файл для выгрузки в течение всего времени работы операционной системы. Остается еще вопрос о том, где хранятся ключи на выключенном компьютере. Рекомендуется их записывать на смарт-карту. Если такой возможности нет, то ключевые данные хранятся на диске, защищенные паролем администратора.
По умолчанию EFS сконфигурирована таким образом, что пользователь может сразу начать использовать шифрование файлов, поставив в свойствах папки «галочку» напротив слова «шифровать». Операция шифрования и обратная поддерживаются для файлов и каталогов. В том случае, если шифруется каталог, автоматически шифруются все файлы и подкаталоги этого каталога. Необходимо отметить, что если зашифрованный файл перемещается или переименовывается из зашифрованного каталога в не зашифрованный, то он все равно остается зашифрованным. Операции шифрования/дешифрования можно выполнить двумя различными способами - используя Windows Explorer или консольную утилиту Cipher. Консольные утилиты вызываются в командном режиме.
Для того чтобы зашифровать каталог из Windows Explorer, пользователю нужно просто выбрать один или несколько каталогов и установить флажок шифрования в окне расширенных свойств каталога. Все создаваемые позже файлы и подкаталоги в этом каталоге будут также зашифрованы. Таким образом, зашифровать файл можно, просто скопировав (или перенеся) его в "зашифрованный" каталог.
Файлы хранятся на диске в зашифрованном виде. При чтении файла данные автоматически расшифровываются, а при записи - автоматически шифруются. Пользователь может работать с зашифрованными файлами так же, как и с обычными файлами, то есть открывать и редактировать в текстовом редакторе Microsoft Word документы, редактировать рисунки в Adobe Photoshop или графическом редакторе Paint, и так далее. То есть шифрование и дешифрование устроены прозрачно для пользователя.
Необходимо отметить, что ни в коем случае нельзя шифровать файлы, которые используются при запуске системы - в это время личный ключ пользователя, при помощи которого производится дешифровка, еще недоступен. Это может привести к невозможности запуска системы! В EFS предусмотрена простая защита от таких ситуаций: файлы с атрибутом "системный" не шифруются. Однако будьте внимательны: это может создать "дыру" в системе безопасности! Проверяйте, не установлен ли злоумышленником на вашем файле атрибут "системный".
Важно также помнить о том, что зашифрованные файлы не могут быть сжаты средствами Windows 2000 и наоборот. Иными словами, если каталог сжат, его содержимое не может быть зашифровано, а если содержимое каталога зашифровано, то он не может быть сжат. Это – тоже уязвимость EFS, т.к. большие файлы или при недостатке места и не очень большие пользователь вынужден сжимать, а тогда такой файл не может быть зашифрован. Внимание, это все относится только к сжатию на уровне файловой системы. Пользователь может применять упаковщики сторонних производителей.
В том случае, если потребуется дешифровка данных, необходимо просто снять флажки шифрования у выбранных каталогов в Windows Explorer, и файлы и подкаталоги автоматически будут дешифрованы. Следует отметить, что эта операция обычно не требуется, но это необходимо обязательно производить перед переустановкой системы. В противном случае, при переустановке и переписывании реестра потеряются ключи и, следовательно, файлы невозможно будет дешифровать. Последнее очень важно, так как это — фактически потеря данных.
EFS обеспечивает встроенную поддержку восстановления данных на тот случай, если потребуется их расшифровать, но, по каким-либо причинам, это не может быть выполнено обычным образом. По умолчанию, EFS автоматически генерирует ключ восстановления, устанавливает сертификат доступа в учетной записи администратора и сохраняет его при первом входе в систему. Таким образом, администратор становится так называемым агентом восстановления, и сможет расшифровать любой файл в системе. Разумеется, политику восстановления данных можно изменить, и назначить в качестве агента восстановления специального человека, ответственного за безопасность данных, или даже несколько таких лиц.
Данные (содержимое файла) шифруются быстрым симметричным алгоритмом при помощи ключа шифрования файла FEK (file encryption key). FEK - это случайным образом сгенерированный ключ определенной длины. Длина ключа в североамериканской версии EFS 128 бит, в международной версии используется уменьшенная длина ключа 40 или 56 бит.
FЕК шифруется открытыми ключами шифрования одного или нескольких пользователей, в результате чего получается список зашифрованных ключей. Список зашифрованных ключей хранится в специальном атрибуте файла, который называется DDF (data decryption field - поле дешифрования данных). Открытые ключи выделяются из пар пользовательских ключей (стандарт Х509 с дополнительной возможностью использования). Закрытые ключи из этих пар используются при дешифровке FЕК. Закрытые ключи хранятся либо на смарт-картах, либо в другом надежном месте (например, в памяти, безопасность которой обеспечивается при помощи CryptoAPI). Открытые ключи хранятся в реестре.
Ключ шифрования файла, FEK, шифруется не только ключами пользователей, он также шифруется при помощи одного или нескольких открытых ключей восстановления. Список зашифрованных таким образом ключей также хранится вместе с файлом в специальной области EFS, которая называется DRF (data recovery field - поле восстановления данных). Для нормального осуществления файловых операций необходимы только открытые ключи восстановления. Агенты восстановления могут хранить свои закрытые ключи в безопасном месте вне системы (например, на смарт-картах). На рисунке приведены схемы процессов шифрования, дешифрования и восстановления данных.
Процесс шифрования
Не зашифрованный файл пользователя шифруется при помощи случайно сгенерированного ключа FЕК. Этот ключ шифруется при помощи общего (открытого) ключа пользователя, а также при помощи общего ключа агента восстановления , результат записывается вместе с файлом.
Для дешифрации сначала используется личный (закрытый) ключ пользователя, им дешифруется FЕК. Расшифрованный FЕК используется для поблочного дешифрования файла.
Если в большом файле блоки считываются не все и не последовательно, то дешифруются только считываемые блоки. Файл при этом остается зашифрованным. Это очень важно, так как в расшифрованном виде файл нигде на диске не появляется (он не попадает в файл для выгрузки) и даже, скорее всего, не содержится в оперативной памяти.
Процесс восстановления
Этот процесс аналогичен дешифрованию с той разницей, что для дешифрования FЕК используется личный ключ агента восстановления, а зашифрованная версия FЕК берется из DRF.
На рисунке показана архитектура EFS:
Драйвер EFS расположен логически на вершине NTFS. Он взаимодействует с сервисом EFS, получает ключи шифрования файлов, поля DDF, DRF и другие данные управления ключами. Драйвер передает эту информацию в FSRTL (file system runtime library, библиотека времени выполнения файловой системы) для прозрачного выполнения различных файловых системных операций (например, открытие файла, чтение, запись, добавление данных в конец файла).
FSRTL - это модуль внутри драйвера EFS, который осуществляет внешние вызовы NTFS для выполнения различных операций файловой системы, таких как чтение, запись, открытие зашифрованных файлов и каталогов, а также операций шифрования, дешифрования, восстановления данных при записи на диск и чтении с диска. Несмотря на то, что драйвер EFS и FSRTL реализованы в виде одного компонента, они никогда не взаимодействуют напрямую. Для обмена сообщениями между собой они используют механизм вызовов NTFS. Это гарантирует участие NTFS во всех файловых операциях. Операции, реализованные с использованием механизмов управления файлами, включают запись данных в файловые атрибуты EFS (DDF и DRF) и передачу вычисленных в EFS ключей FEK в библиотеку FSRTL, так как эти ключи должны устанавливаться в контексте открытия файла. Такой контекст открытия файла позволяет затем осуществлять незаметное шифрование и дешифрование файлов при записи и считывании файлов с диска, пользуясь предоставляемой NTFS защитой.
Служба EFS является частью подсистемы безопасности. Она использует существующий порт связи LPC между LSA (Local security authority, локальные средства защиты) и работающим в kernel-mode монитором безопасности для связи с драйвером EFS. В режиме пользователя служба EFS взаимодействует с программным интерфейсом CryptoAPI, предоставляя ключи шифрования файлов и обеспечивая генерацию DDF и DRF. Кроме этого, служба EFS осуществляет поддержку интерфейса Win32 API.
Он обеспечивает интерфейс программирования для шифрования открытых файлов, дешифрования и восстановления закрытых файлов, приема и передачи закрытых файлов без их предварительной расшифровки. Реализован в виде стандартной системной библиотеки advapi32.dll.
- Система EFS в Windows 2000 предоставляет пользователям возможность зашифровывать каталоги NTFS, используя устойчивую, криптографическую схему, при этом все файлы в закрытых каталогах будут зашифрованы. Шифрование отдельных файлов поддерживается, но не рекомендуется из-за непредсказуемого поведения приложений.
- Система EFS также поддерживает шифрование удаленных файлов, доступ к которым осуществляется как к совместно используемым ресурсам. Если имеют место пользовательские профили для подключения, используются ключи и сертификаты удаленных профилей. В других случаях генерируются локальные профили и используются локальные ключи.
- Система EFS позволяет установить политику восстановления данных таким образом, что зашифрованные данные могут быть восстановлены при помощи EFS, если это потребуется.
- Политика восстановления данных встроена в общую политику безопасности Windows 2000. Контроль за соблюдением политики восстановления может быть делегирован уполномоченным на это лицам. Для каждого подразделения организации может быть сконфигурирована своя политика восстановления данных.
- В процессе восстановления расшифровываются данные, но не ключ пользователя, при помощи которого эти данные были зашифрованы.
- Работа с зашифрованными файлами в EFS не требует от пользователя каких-либо специальных действий по шифрованию и дешифрованию данных. Дешифрование и шифрование происходят незаметно для пользователя в процессе считывания и записи данных на диск.
- Система EFS поддерживает резервное копирование и восстановление зашифрованных файлов без их расшифровки.
- Система EFS встроена в операционную систему таким образом, что утечка информации через файлы подкачки невозможна, при этом гарантируется, что все создаваемые копии будут зашифрованы.
Необходимость в обеспечении безопасности сетей на основе протокола IP постоянно возрастает. В современном, сильно связанном мире бизнеса при наличии Интернета, интрасетей, дочерних отделений и удаленного доступа критически важная информация постоянно перемещается через границы сетей. Задача сетевых администраторов и других специалистов информационных служб состоит в том, чтобы этот трафик не допускал:
· модификацию данных во время их передачи по каналам,
· перехват, просмотр или копирование,
· доступ к данным со стороны не авторизованных пользователей.
Указанные проблемы известны как обеспечение целостности данных, конфиденциальности и аутентификации. Кроме того, необходима защита от воспроизведения информации.
Протокол IPSec, разработанный группой IETF, поддерживает аутентификацию, целостность данных и их шифрование на сетевом уровне.
Для обеспечения безопасности всех передач по протоколу TCP/IP в протоколе IP Security использованы принятые в качестве отраслевых стандартов алгоритмы шифрования и комплексный подход к управлению безопасностью. Используя Windows 2000 Server, администраторы сетей обеспечивают сильную защиту для всей сети в целом, а приложения автоматически наследуют средства защиты от системы безопасности Windows 2000 Server. Основные черты IPSec:
· Открытый промышленный стандарт – IPSec представляет собой открытый промышленный стандарт, в отличие от «доморощенных» способов шифрования IP. Менеджеры сетей при этом получают выигрыш от хорошей функциональной совместимости.
· Прозрачность – IPSec работает под транспортным уровнем, что делает его прозрачным для приложений и пользователей; а это означает, что при реализации IPSec в брандмауэре или маршрутизаторе (сетевой уровень) нет необходимости вносить изменения в сетевые приложения настольного ПК.
· Проверка прав доступа – Служба аутентификации предотвращает возможность перехвата данных при использовании неправильно объявленных данных идентификации.
· Конфиденциальность – Шифрование данных исключает несанкционированный доступ к данным при передаче их между взаимодействующими сторонами.
· Целостность данных – Протокол Authentication Header (AH) обеспечивают целостность каждого пакета.
· Безопасные сквозные связи – IP Security обеспечивает наличие надежных, обозначаемых только конечными точками, связей для пользователей частной сети внутри одного домена или между любыми доменами, с которыми установлены доверительные отношения на предприятии.
· Централизованное управление — Администраторы сетей централизованно формируют и назначают политики безопасности и фильтры IPSec. Централизованное управление уменьшает административные накладные расходы.
· Гибкость – Протокол IP Security можно применить к отдельной рабочей станции, подразделению или всей организации.
Хотя классическая концепция безопасности состоит в защите данных от посторонних пользователей, IP Security обеспечивает также защиту от более вероятного источника вторжений, т.е. от несанкционированного доступа собственных внутренних пользователей.
В большинстве стратегий безопасности сетей основное внимание уделяется предотвращению внешних атак на сеть предприятия. Примерами таких попыток предотвращения внешних угроз может служить создание брандмауэров, маршрутизаторов, обеспечивающих безопасность, и телефонного доступа с маркерной аутентификацией. Но «ужесточение» защиты на периметре сети не предохраняет от попыток вторжений изнутри. Одно из самых больших преимуществ включения протокола IP Security в Windows 2000 состоит в способности противостоять как внутренним, так и внешним угрозам за счет установления между любыми двумя компьютерами защищенного канала. Кроме того, это выполняется совершенно «прозрачно», не требуя никаких усилий или дополнительных расходов от пользователей.
IP Security представляет собой два протокола: Authentication Header (AH) и Encapsulated Security Payload (ESP). Протокол AH обеспечивает взаимную аутентификацию хостов и обеспечивает целостность передаваемых пакетов. Протокол ESP выполняет шифрование содержимого пакетов, и также гарантирует взаимную аутентификацию и целостность. Когда защищенные данные аутентифицированы, получатель знает, что сообщение поступило именно от того отправителя, с которым установлено защищенное соединение, и во время передачи не подвергалось изменениям.
Исторически организации должны были постоянно «балансировать» между желанием защитить канал передачи данных и высокой стоимостью реализации и поддержания такой защиты. Затраты на защиту могут превосходить затраты на оборудование целиком всей сети. Эти затраты распределяются по следующим категориям:
· обновление программ;
· обучение персонала;
· управление криптографическими ключами.
Поскольку безопасность Windows IP Security реализуется на сетевом (OSI) уровне, она «прозрачна» для приложений. Безопасность на уровне сети обеспечивает большую экономию, так как не требует модификации пользовательских программ.
Поскольку безопасность Windows 2000 IP Security «прозрачна» для пользователей, то она не требует их обучения и, соответственно, этот источник затрат устраняется.
Для сохранения безопасности нужно регулярно менять криптографические ключи. Если эта работа выполняется администратором сети вручную, то управление ключами может занимать много времени. Из-за этого ключи в организации меняются не так часто, как этого требует обстановка, или они меняются только на нескольких жизненно важных компьютерах. Windows IP Security управляет ключами автоматически, при этом устраняются затраты на замену ключей вручную, обеспечивается и поддерживается максимальная защита информации на всем предприятии.
Windows 2000 дает возможность использовать стандартные криптографические алгоритмы и методы аутентификации. Они включают следующие:
· метод Диффи-Хеллмана (Diffie-Hellman) для соглашения о совместно используемом ключе;
· код аутентификации хеш-сообщения (HMAC) и его разновидности для обеспечения целостности и защиты от несанкционированного воспроизведения;
· алгоритмы шифрования DES и TripleDES для обеспечения конфиденциальности.
Метод Диффи-Хеллмана, названный так по именам его разработчиков - Whitfield Diffie и Martin Hellman - считается основополагающим в технологии шифрования с открытым ключом. Два участника обмениваются открытыми блоками информации, на основе которых каждый участник самостоятельно вычисляет секретный ключ.
HMAC представляет собой алгоритм хеширования с секретным ключом (т.е. MAC код или имитовставка), обеспечивающий целостность и аутентификацию. Секретный ключ, участвующий в создании хеш-значения HMAC известен только отправителю и получателю. Следовательно, получатель пакета может, проверив его хеш, убедиться в том, что пакет был отправлен именно тем, кем нужно, и не модифицировался на пути следования. Если при передаче сообщение было изменено, то значение хеш-функции изменится, и IP-пакет будет отвергнут. Злоумышленник не может изменив сообщение, пересчитать хэш, т.к. ему не известен секретный ключ.
IP Security использует, по договоренности участников, один из следующих алгоритмов аутентифицированных хешей: HMAC-MD5 и HMAC-SHA.
Для шифрования данных можно использовать алгоритм DES-CBC или Triple DES. Какой алгоритм, и с каким ключом будет использоваться, определяется на этапе переговоров при установлении IPSec-соединения. Процесс переговоров при установлении соединения формализован в рамках протокола Internet Key Exchange (IKE).
Итогом переговоров хостов, устанавливающих IPSec-соединение, является комбинация следующих параметров:
1. протокол шифрования и/или хеширования,
2. ключ,
3. уникальный индекс данного соединения.
Эта комбинация обозначается термином Security Association (SA).
Переговоры хостов организуются в виде двух фаз, соответственно, в каждой фазе формируется свой набор SA. Разбиение на фазы значительно оптимизирует процесс переговоров, а так же повышает защищенность обменов.
Назначение Фазы 1 заключается в первоначальном обмене информацией, необходимой для взаимной аутентификации хостов. Только при условии успешной взаимной аутентификации продолжаются переговоры. SA, выработанная в Фазе 1, используется для защиты обмена информацией в Фазе 2, во время которой и формируются окончательные SA для работы IPSec.
В Фазе 2 создаются две SA: одна для исходящих пакетов, вторая – для входящих. На этом переговоры заканчиваются и хосты могут обмениваться защищенными пакетами IP. В соответствии с политикой IPSec, срок жизни Phase 1 SA, как правило, значительно больше, чем у Phase 2 SA. Более того, Phase 1 SA хранятся в кэше хостов и могут быть использованы неоднократно при обновлении Phase 2 SA.
Протокол AH обеспечивает аутентификацию и целостность пакета IP, но не производит шифрования данных. Таким образом, использование AH позволяет защититься от попыток модификации или подмены пакетов. Содержимое же пакета остается открытым.
Протокол ESP обеспечивает аутентификацию и целостность пакета IP, а также конфиденциальность данных. ESP зашифровывает данные и добавляет аутентифицирующую контрольную сумму (имитовставку). Для шифрования используется алгоритм DES или TripleDES; какой алгоритм будет использоваться в рамках соединения, определяется во время переговоров IKE.
Операционная система Windows 2000 Server проектировалась так, чтобы обеспечить высокую степень безопасности данных, а также простоту реализации и администрирования.
Формирование стратегии и политик безопасности можно представить в виде четырехэтапной последовательности действий:
· Оценка объемов и важности информации, передаваемой по локальной сети и в Интернет.
· Формирование сценариев обмена информацией.
· Определение уровней секретности для каждого сценария.
· Создание политик безопасности.
Вся информация, передаваемая по сетям или по Интернету, может быть перехвачена, изучена или модифицирована. Администратор сети должен определить, какие виды информации наиболее ценны и какие схемы организации связи наиболее уязвимы.
В организациях существует определенный порядок передачи информационных потоков. Администратор системы должен определить такие «предсказуемые» потоки. Например, удаленные пункты продаж могут пересылать в центральный офис данные о предполагаемых продажах, заказы на покупку оборудования и другую финансовую информацию. Каждому такому сценарию передачи информации может назначаться собственная политика IP Security.
Необходимые уровни секретности меняются в зависимости от «чувствительности» информации и от относительной уязвимости канала передачи. Инструментарий Windows 2000 Security Configuration And Analysis позволяет администратору сети быстро установить нужный уровень безопасности.
Примером создания политики безопасности может стать организация с центральным юридическим отделом. Допустим, администраторы сети приняли решение, что связь внутри отдела должна быть безопасной, но не конфиденциальной. Однако связь между юридическим отделом предприятия и другими отделами организации должна быть как безопасной, так и конфиденциальной. Средства обеспечения безопасности Windows IP Security позволяют фильтровать пакеты, созданные внутри юридического отдела. Если пункт назначения информации находится вне этого отдела, то Windows IP Security использует политику, включающую и протокол AH и ESP. Но если пакет просто передается другому адресату внутри юридического отдела, то применяются только AH.
Приведенный ниже пример иллюстрирует передачу данных от пользователя хост-компьютера A к пользователю компьютера B. В обоих компьютерах реализована безопасность Windows IP Security.
На пользовательском уровне процесс «засекречивания» IP-пакетов совершенно прозрачен. Пользователь 1 запускает приложение, использующее протокол TCP/IP, например, FTP, и пересылает данные пользователю 2.
Политика безопасности, назначенная администратором для компьютеров А и В, определяет уровень безопасности передачи информации между ними. Эти уровни воспринимаются агентом политики и передаются службе ISAKMP/Oakley (она же Internet Key Exchange, IKE) и драйверу IPSEC. Для установления ключа и Security Associations служба ISAKMP/Oakley каждого компьютера использует политику переговоров, связанную с приписанной политикой безопасности. Результаты политики переговоров ISAKMP между двумя компьютерами передаются драйверу IPSEC. Наконец, драйвер IPSEC посылает зашифрованные данные в компьютер B. Драйвер IPSEC компьютера B расшифровывает переданные данные и направляет их принимающей программе.
Рис. 2. Пример размещения средств обеспечения безопасности Windows IP Security.
На рисунке:
Directory Service – Служба каталогов
· IP Security Policy – Политика безопасности IP
· Policy Agent – Агент политики безопасности
· ISAKMP/Oakley Service – Служба ISAKMP/Oakley
· SA Negotiation Key Exchange – Переговоры и обмен ключами
· Application – Приложение
· Transport Layer – Транспортный уровень
· Internet Layer – Уровень Интернета
· Encrypted IP packets – Зашифрованные IP-пакеты
Для обеспечения полной совместимости с Windows 9x и ранними версиями Windows NT, работающий под управлением Windows 2000 и сконфигурированный средствами безопасности IP Security компьютер посылает данные на компьютер, в котором не используется Windows 2000, без шифрования.
Любые маршрутизаторы или коммутаторы, через которые осуществляется обмены между компьютерами (будь то два пользователя или пользователь и файл-сервер), должны просто направлять зашифрованные IP-пакеты к месту их назначения. Если между машинами, обменивающимися сообщениями, расположен брандмауэр или какой-либо иной шлюз безопасности, то нужно разрешить продвижение данных IP или специальную фильтрацию, которая обеспечит правильную передачу пакетов IP Security к месту назначения.
Защищенный канал связи – это такой канал, при установлении которого обеспечивается защита от следующих атак: нарушение конфиденциальности, нарушение целостности, подмена доверенного лица. То есть, не реализована защита только от «отказ в обслуживании». Для этого при установлении связи проводится аутентификация. А для подтверждения целостности обычно используются средства шифрования и электронная подпись.
Аутентификация – процесс, при котором некто опознается, подтверждает свою подлинность. Взаимная аутентификация – двусторонний процесс подтверждений, при котором собеседники уверяются в подлинности друг друга.
Аутентификация может быть произведена на основании: 1) того, что пользователь знает; 2) того, что он имеет в наличии; 3) того, каков он сам.
Первое – обычно это – знание ключа, пароля, некоторых дополнительных характеристик некоторого известного клиенту и серверу объекта и т.п.
Второй способ предполагает, что клиент имеет некий физический объект в собственности: пропуск, смарт-карта, газета в левой руке и т.п.
Третий способ – это так называемая биометрическая аутентификация.
К защищенному каналу предъявляется требование выполнения обязательно двух свойств: аутентификация и целостность. Так как бессмысленно видеть сообщение, которое создал некто, кому мы доверяем, но которое могло быть видоизменено в пути. Очевидно, что неизменность сообщения ценна только в том случае, когда мы доверяем его автору (то есть достоверно знаем, кто он).
Таким образом, общая схема взаимодействия по защищенному каналу состоит из четырех этапов: 1) сначала устанавливается подлинность абонентов (одного или обоих), 2) определяются параметры связи (сеансовые ключи, различного вида ограничители и т.п.), 3) передача данных, 4) закрытие канала (возможно, подготовка новых аутентифицирующих данных для следующего сеанса).
Следующее важное замечание: ключи аутентификации и ключи шифрования требуют различной степени безопасности. Ключи аутентификации обычно не изменяются достаточно длительное время, а, следовательно, требуют надежного хранения и нечастого использования. Алгоритмы, применяемые при аутентификации, могут быть медленными, так как при аутентификации обрабатывается небольшое количество информации. Ключи для шифрования данных желательно менять как можно чаще, требования к их хранению и криптостойкости меньше, но алгоритмы должны работать быстро. Ключи для шифрования данных называют сеансовыми, так как они обычно действительны на протяжении одного сеанса связи.
Схема 1.
При входе в систему пользователь может передавать серверу пароль, чтобы последний смог убедиться в подлинности клиента. При этом пароль легко перехватить. Можно, конечно, передаваемый пароль преобразовать и передавать результат. Но стойкость протокола при этом не увеличивается, так как взломать пароль можно атакой по словарю. А иногда взлом и не нужен.
Предпочтительнее схема, в которой преобразовывается некоторое случайное число известным клиенту и серверу алгоритмом с ключом, рассчитанным по паролю. В качестве преобразовывающей функции обычно используют хеширование.
База клиентов – самое уязвимое место таких схем. Ее можно украсть, а затем взломать тем или иным способом.
Схема 2.
Алгоритм SKEY предлагает другую схему, тоже использующую хеширование. Здесь клиент (А) генерирует некоторое достаточно большое случайное число R. Затем генерирует последовательность xi, где i изменяется от 1 до, например, 101. Причем xi= H(xi-1), а x1=R. Клиент (А) запоминает последовательность из 100 чисел в надежном месте, а 101-ое число направляет серверу (В). Сервер хранит 101-ое число в базе клиентов. Настройка протокола завершена.
Схема взаимодействия в дальнейшем выглядит следующим образом. Клиент направляет серверу последнее число из хранимой последовательности, сразу удаляя его из этой последовательности. Сервер хеширует полученное число, сравнивает его с числом, хранимым в базе клиентов, убеждаясь в подлинности клиента. Если все благополучно, то новое число (не преобразованное) заменяет то, которое хранилось до сих пор.
Красивый протокол, не правда ли? Взлом базы не дает взломщику никакой информации, так как по известному хеш очень трудно восстановить исходное значение или, по крайней мере, найти значение с таким же хеш. Сразу решается несколько задач: аутентификация, генерация сеансовых ключей, защита базы клиентов.
Уязвимые места – инициализирующий этап и хранилище клиента. Если взломщик сможет подглядеть число R, то он построит все 100 ключей. Если взломщик вскроет «надежное хранилище» клиента, то он получит все оставшиеся сеансовые ключи. Здесь утешает только то, что пострадает только один клиент, а не все клиенты некоторого сервера. Кроме того, это протокол односторонней аутентификации, то есть сервер не аутентифицируется у клиента.
Рассмотрим протокол аутентификации на основе общего секретного ключа, то есть применяющего симметричное шифрование. Здесь предполагается, что заранее А и В договорились о некотором общем секретном ключе.
Обозначим через «->» слово «передает», что передается, указано после знака «:», Kab — ключ для А и В, Rb — случайное число. Покажем по шагам работу протокола.
1 A -> B : A
2 A <- B : Rb
3 A -> B : Kab(Rb)
4 A -> B : Ra
5 A <- B : Kab(Ra)
После третьего сообщения В убеждается в подлинности А, так как иначе А не смог бы зашифровать случайное число, посланное В. После пятого сообщения в подлинности В убеждается А.
Здесь, кажется, возможна оптимизация, за счет объединения двух передаваемых данных.
1 A -> B : A, Ra
2 A <- B : Rb, Kab(Ra)
3 A -> B : Kab(Rb)
Но такой протокол не работает. Он легко взламывается при помощи атаки «на отражение». Цель атаки – проникнуть на сервер В от имени А. Основная идея этой атаки заключается в том, чтобы заставить В самого зашифровать свое случайное число. Механизм – использование организации второго защищенного канала. В приведенной ниже схеме С действует от имени А.
1 C -> B : A, Rc
2 C <- B : Rb, Kab(Rc)
3 C -> B : A, Rb
4 C <- B : Kab(Rb)
5 C -> B : Kab(Rb)
Интересно, что как раз неверная схема предлагается в протоколе SKID. В нем в качестве функции использовались MAC коды.
Преимущества рассмотренной (правильной!) схемы состоят в высокой скорости вычислений.
Основной недостаток алгоритмов аутентификации с общим ключом состоит в том, что собеседникам требуется знание большого количества ключей. Хранение этих ключей должно быть надежным. Проблемой является распределение ключей, в связи с этим невозможно достаточно часто их изменять.
1 A -> B : Kbo(A,Ra)
2 A <- B : Kao (Ra, Rb,Kab)
3 A -> B : Kab(Rb)
Здесь важно то, что открытые ключи обеих сторон должны быть не скомпрометированы. Более того, требуется некоторое третье лицо, подтверждающее, что эти ключи действительно принадлежат тем лицам, которые их используют. Последний аспект мы уже разбирали в теме «Электронная подпись». То есть требуется наличие некоторого центра сертификации, которому участники связи абсолютно доверяют, и который может подтвердить подлинность открытых ключей.
Передача некоторого случайного числа R, разного с обеих сторон, привязывают сообщения к одному сеансу. Уникальность передаваемых случайных чисел делает невозможной атаку «повторное использование прошлых пакетов».
Основной недостаток предложенной схемы состоит в том, что ото всех участников связи требуется хранение огромного количества открытых ключей возможных собеседников. В достаточно большой системе это может оказаться неприемлемым.
Алгоритмы с центром распределения ключей призваны улучшить ситуацию за счет устранения указанных выше недостатков алгоритмов с общими ключами.
1 А -> KDC : A, B
2 А <- KDC : Ka,kdc (Kab)
3 KDC -> B : Kb,kdc (Kab)
Центр распределения ключей некоторым образом заранее договаривается с А и с В об общих ключах. Сеансовый ключ для общения А с В центр распределения ключей отправляет обоим клиентам, но зашифровывает сообщения разными ключами.
В этой схеме есть недостатки. Первый состоит в том, что сообщение с данными, зашифрованными сеансовым ключом, от А к В может придти раньше, чем сообщение В от KDC. В таком случае для В есть два возможных поведения: 1) В хранит сообщение от А, дожидаясь ключа от KDC, 2) В отбрасывает пакет от А. Первый способ совершенно неприемлем в случае большого количества клиентов и пакетов. Второй способ лучше, хотя он, также как и первый, обладает еще одним недостатком: В необходимо хранить большое количество ключей клиентов. Это неожиданно, ведь мы пытались придумать алгоритм, не требующий хранения большого количества ключей.
Рассмотрим схему, в которой KDC передает А сообщение, содержащее сеансовый ключ дважды: один раз – зашифрованный ключом А с KDC, а второй – ключом В с KDC. Эта вторая часть называтся билетом ( в некоторой литературе – талоном). А хранит билет у себя и применяет при обращении к В: вкладывает его в передаваемое сообщение. Снова ключ хранится где-то помимо KDC. Но посмотрите внимательно: во-первых, хранится ключ в зашифрованном виде, а во-вторых, обычно А работает с небольшим количеством серверов, следовательно, хранение ключей для них не требует больших затрат.
1 А -> KDC : A, B
2 А <- KDC : Ka,kdc (Kab), Kb,kdc (Kab)
3 А -> B : А,Kb,kdc (Kab)
Приведенный протокол является вариантом протокола аутентификации Нидхэма-Шредера (Needham – Schroeder). Более точное описание протокола Нидхэма-Шредера предполагает защиту от повторного использования ранее перехваченных пакетов.
1 А -> KDC : A, B, Ra
2 А <- KDC : Ka,kdc (В, Ra, Kab, Kb,kdc (Kab))
3 А -> B : Kab( Ra2),Kb,kdc (А,Kab)
4 А <- B : Kab (Ra2-1, Rb)
5 А -> B : Kab (Rb-1)
Обратите внимание на то, что А привязывает сообщение KDC к своему, передавая случайное число, которое KDC должен вернуть. Таким образом делается невозможной атака злоумышленника, который передает А когда-то ранее перехваченный пакет от KDC. Такая атака имеет смысл для злоумышленника в том случае, если он узнал ключ Kb,kdc, а В, догадываясь о компрометации этого ключа, создал новый ключ. Злоумышленник в результате атаки обманывает А и может общаться с А от имени В. Здесь фактически дважды проведена «подмена доверенного лица». Случайное число, генерируемое А, делает рассмотренную атаку невозможной.
Важно и то, что в возвращаемый KDC пакет вкладывается имя В. Это – защита от следующей атаки. Рассмотрим, что получится, если имя В не вкладывается в пакет. Если Злоумышленник может активно вмешаться в сетевой трафик, то он может подменить в открытом 1-ом сообщении имя В на свое, например, С. Центр распределения ключей выдаст ключ для сеанса А с С. Так что далее А будет передавать сообщения В, но С будет их перехватывать и расшифровывать. Снова атака «подмена доверенного лица».
Второе случайное число А вкладывает в сообщение для В, для того, чтобы провести взаимную аутентификацию В и снова привязать сообщения к одному сеансу. Компонент В также связывает свои сообщения случайным числом.