Friday, May 17, 2013

Разработка системы скрытой передачи данных по беспроводному интерфейсу NFC

Введение


Сколько существует человечество, столько существует и проблема обмена информацией. С одной стороны люди стремятся общаться и обмениваться друг с другом информацией, а с другой стороны стремятся скрыть от посторонних не только суть информации, но и факт ее передачи. Особенно остро проблема передачи данных обстоит с информацией, имеющей определенную ценность. Поэтому во всем мире назрел вопрос разработки методов (мер) по скрытой передаче информации организационного, методологического и технического характера, среди них методы криптографии и стеганографии.

Криптографическая система защиты информации (система изменения информации с целью сделать ее непонятной для злоумышленника, сокрытие содержания сообщения за счет его шифрования) не снимает упомянутую выше проблему полностью, поскольку наличие шифрованного сообщения само по себе привлекает внимание, и злоумышленник, завладев криптографически защищенным файлом, сразу понимает о размещении в нем секретной информации и переводит всю суммарную мощь своей компьютерной сети на дешифровку данных.

Скрытие же самого факта существования секретных данных при их передаче является задачей стеганографии. Задача извлечения информации при этом отступает на второй план и решается в большинстве случаев стандартными криптографическими методами. Передо мной стояла задача на исследование возможностей использования беспроводных каналов связи для скрытой передачи данных. Данная работа посвящена, в большой степени, безопасной/скрытой передачи данных между мобильными устройствами на базе операционной системы Android.



Постановка задачи


Перед автором была поставлена задача разработки системы скрытой передачи данных по беспроводному интерфейсу. В качестве беспроводного интерфейса была выбрана технология Near Field Communication (NFC). Данный беспроводной интерфейс является стегоканалом в понятиях стеганографии. В качестве контейнера для сообщения будет выступать графический контейнер. Взаимодействие устройств будет происходить по средствам технологии Android Beam, позволяющей производить P2P обмен данными между двумя Android устройствами по технологии NFC.

Разработка системы скрытой передачи данных будет вестись для мобильной платформы Android. Разработка под данную операционную систему накладывает ряд ограничений, которые были учтены при выборе среды разработки.

В качестве языка программирования был выбран язык Java версии 1.6. Данный язык программирования является основным для написания нативных Android приложений. В качестве интегрированной среды разработки было принято решение использовать Eclipse IDE версии 3.7.2. Данная среда разработки является дефакто основной при разработке приложений для Android устройств. Разработка будет вестись для Android устройств начиная с версии 2.3.3. Данное ограничение накладывает использование NFC API. Общее количество таких устройств равно 72,1% (рис. 2.1).

При создании стегосистемы, необходимо разработать программное обеспечение, которое будет формировать и обрабатывать стегосообщения. В качестве контейнера для сообщений выбран – графический контейнер.

Выбор графического контейнера


Так как разработка ведется под мобильные устройства на базе операционной системы Android, то для начала необходимо изучить ограничения накладываемые мобильной операционной системой на медиа форматы.

Android поддерживает четыре формата для изображений:
1) JPEG
2) GIF
3) PNG
4) BMP

В качестве графического контейнера для стегосообщений нам необходимо использовать только те форматы, которые имеют большую распространённость относительно других, чтобы не вызывать подозрение у злоумышленника. Поэтому нет смысла рассматривать формат BMP, так как он практически не используется в мобильных устройств на базе Android. В качестве контейнера для сообщений автором был выбран графический файл формата GIF.

Файлы формата GIF имеют блочную структуру. Данные блоки всегда имеют фиксированную длину (либо она зависит от некоторых флагов), так что ошибиться в том, где какой блок находится, практически невозможно. Структура простейшего неанимированного GIF-изображения формата GIF89a представлена на рис. 2.2.




Из всех блоков структуры в данном случае нас будут интересовать блок глобальной палитры и параметры, отвечающие за палитру:

1) CT — наличие глобальной палитры. Если этот флаг установлен, то сразу после дескриптора логического экрана должна начинаться глобальная палитра.

2) Size — размер палитры и число цветов картинки. Значения данного параметра представлены в табл. 2.1.


Таблица 2.1.

Значения параметра Size для GIF-изображения.

Size
Число цветов
Размер палитры, байт
7
256
768
6
128
384
5
64
192
4
32
96
3
16
48
2
8
24
1
4
12
0
2
6



Выбор метода шифрования


В качестве метода шифрования сообщений в файлах изображений принято использовать следующие два метода:

1) Метод LSB (Least Significant Bit, наименьший значащий бит). Метод LSB — распространенный метод стеганографии. Он заключается в замене последних значащих бит в контейнере на биты скрываемого сообщения. В системе будут использоваться в рамках этого метода два последних бита в байтах глобальной палитры. Это означает, что для 24-битного изображения, где цвет палитры представляет собой три байта для красного, синего, и зеленого цветов, после внедрения сообщения в него, каждая составляющая цвета изменится максимум на 3/255 градации. Такое изменение, во-первых, будет незаметно или труднозаметно для человеческого глаза, а во-вторых, не будет различимо на низкокачественных устройствах вывода информации.

Количество информации будет напрямую зависеть от размера палитры изображения. Поскольку максимальный размер палитры 256 цветов и, если записывать по два бита сообщения в составляющую каждого цвета, то максимальная длина сообщения (при максимальной палитре в изображении) составляет 192 байта. После внедрения сообщения в изображение, размер файла не изменяется.

2) Метод расширения (дополнения) палитры. Он будет наиболее эффективен в изображениях с палитрой небольших размеров. Суть его состоит в том, что он увеличивает размер палитры, тем самым дав дополнительное пространство для записи необходимых байт на месте байт цветов. Если учесть что минимальный размер палитры составляет 2 цвета (6 байт), то максимальный размер внедряемого сообщения может быть 256×3–6=762 байт. Недостаток — низкая криптозащищенность, прочесть внедренное сообщение можно при помощи любого текстового редактора, если сообщение не подвергалось дополнительному шифрованию.

Проектирование программного обеспечения


Все необходимые инструменты для реализации алгоритмов шифрования и дешифрования будут находиться в пакете com.shishkin.steganography. Этот пакет включает в себя интерфейс Encryptor с методами encrypt и decrypt, класс Binary, предоставляющий возможность работы с массивами битов, а также классы исключений UnableToEncryptException и UnableToDecryptException, которые должны быть использованы в методах интерфейса Encryptor в случае ошибок кодирования и декодирования соответственно.

Основной пакет программы com.shishkin.app.gifedt будет включать в себя:

− запускаемый класс программы со статическим методом main, позволяющий запускать программу;

− класс, хранящий в себе параметры программы;

− пакеты с другими классами.

Реализация непосредственно самих алгоритмов будет представлена в пакете com.shishkin.app.gifedt.gif классами GIFEncryptorByLSBMethod и GIFEncryptorByPaletteExtensionMethod. Оба этих класса будут реализовать интерфейс Encryptor.

Для определения присутствия сообщения в изображении необходимо в начало сообщения добавлять некую последовательность бит, которую дешифратор считывает в первую очередь и проверяет на корректность. Если она не совпадает, то считается, что в изображении нет сокрытого сообщения. Далее надо указывать длину сообщения. Затем сам текст сообщения.

Реализация программного обеспечения


Исходный код проекта находиться по ссылке: https://github.com/johnkil/Steganography