logo search
Лекции_Информационная безопасность

6.3Скрытие текста в 24-разрядном bmp файле.

Формат 24-разрядного BMP-файла описан во многих документах: 58 байт заголовка, а затем каждые три байта идентифицируют один пиксель в RGB-нотации, то есть цвет каждой точки складывается из трех последовательных байтов, в первом из которых число характеризует интенсивность красного цвета (0-255), во втором – интенсивность зеленого, в третьем – интенсивность синего. Можно воспользоваться плохо различимым на глаз изменением в каждом последнем бите цвета, то есть заменить в исходном файле эти биты на биты из сообщения.

Сначала надо научиться выделять биты из символов скрываемого сообщения. Для этого вспомнить теорию «Системы счисления».

Итак, код символа – число от 0 до 255. Для того чтобы получить биты этого числа, требуется 8 раз произвести операцию нахождения остатка от деления пополам, уменьшая число каждый раз вдвое (моделирование операции битового сдвига, которой нет в VBA).

Например, код символа =157. Тогда

  1. 157 mod 2 = 1

  2. 78 mod 2 = 0

  3. 39 mod 2 = 1

  4. 19 mod 2 = 1

  5. 9 mod 2 = 1

  6. 4 mod 2 = 0

  7. 2 mod 2 = 0

  8. 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!

7Биометрические средства защиты

7.1Основные определения

7.2Преимущества и недостатки биометрики

7.3Обзор биометрический средств аутентификации

7.4Биометрический анализ психо-физиологических характеристик

8Файловая система EFS в Window 2000.

8.1Введение

Шифрующая файловая система - это тесно интегрированная с NTFS служба, располагающаяся в ядре Windows 2000. Ее назначение: защита данных, хранящихся на диске, от несанкционированного доступа путем их шифрования. Дело в том, что существующие на сегодняшний день файловые системы не обеспечивают необходимую защиту данных от несанкционированного доступа. NTFS обеспечивает разграничение доступа и защиту данных от несанкционированного доступа, но только тогда, когда она работает. Если же доступ к разделу NTFS осуществляется не с помощью средств операционной системы MS Windows, а напрямую, на физическом уровне, то данные оказываются беззащитны. Загрузившись с дискеты и запустив специальную программу: например, весьма распространенную ntfsdos (далеко не единственная такая программа), злоумышленник может прочитать все файлы. Можно предусмотреть такую возможность и задать пароль на запуск системы, однако практика показывает, что такая защита малоэффективна, особенно в том случае, когда за одним компьютером работают сразу несколько пользователей. А если злоумышленник может извлечь жесткий диск из компьютера, то тогда уже не помогут никакие пароли. Подключив диск к своему компьютеру, злоумышленник может легко прочитать содержимое украденного диска, обладая административными полномочиями. Таким образом, злоумышленник свободно может овладеть конфиденциальной информацией, которая хранится на жестком диске. Единственный способ защиты от физического чтения данных - это шифрование файлов.

Простейший случай такого шифрования - архивирование файла с паролем. Однако здесь есть ряд серьезных недостатков. Во-первых, пользователю требуется каждый раз вручную шифровать и дешифровать (то есть, в нашем случае архивировать и разархивировать) данные перед началом и после окончания работы, что уже само по себе уменьшает защищенность данных. Пользователь может забыть зашифровать (заархивировать) файл после окончания работы, или (еще более банально) просто оставить на диске копию файла. Во-вторых, пароли, придуманные пользователем, как правило, легко угадываются. Кроме того, пароль в том или ином виде хранится в архиве, и существует достаточное количество программ, позволяющих распаковывать архивы, защищенные паролем. Как правило, такие утилиты осуществляют подбор пароля путем перебора слов, записанных в словаре. Распаковка по умолчанию производится в общедоступный каталог TEMP. Недостаток подобного шифрования еще и в том, что это происходит не прозрачно для приложений, и потому требует полной дешифровки всего файла (или папки).

Система EFS была разработана с целью преодоления этих недостатков.