Пояснительная записка (ПЗ) (1210512), страница 8
Текст из файла (страница 8)
2.6.Рисунок 2.6 – Оригинальное изображениеТесты будут проводиться для сжатия с качествами 100, 88, 66 и 33, накаждом подходе будет использоваться три различных варианта ключа блокадля всех трех компонент, представленных на рис. 2.7.Рисунок 2.7 – Стеганоключи для тестов, слева-направо – 1, 2 и 343Максимальная длина сообщения равна 16 символам, так как используетсядля скрытия для каждого теста все три компоненты, минимальное количествоиспользуемых элементов в блоке равно трем, в каждый элемент записываетсяпо два бита информации, 32 бита заняты под служебную информацию – флагналичия сообщения и его длина.Кодируемое сообщение: «Nulla quis sem a».Таблица 2.2 – Оценка качества внедрения информацииП/п РазмерКоэффициентсжатияРезультатХарактеристикаКачество – 100Изображение неотличимо оторигинала.11.6 Кб13,56Изображение неотличимо оторигинала.21.59 Кб13,65Изображение неотличимо оторигинала.31.56 Кб13,944Продолжение таблицы 2.2П/п РазмерКоэффициентсжатияРезультатХарактеристикаКачество – 88Наблюдаются видовые искажения(шумы) в блоках, содержащихсокрытую информацию.1231,04 Кб1 Кб930 б20,87Наблюдаются видовые искаженияв блоках, содержащих видовуюинформацию по всем тремкомпонентам, что говорит оналичии шумов, вызванныхвнедрением информации.21,7Практически неотличим оторигинала при просмотре воригинальном размере.Наблюдаются приемлемыеискажения.23,3Качество – 6612968 б895 б22,4224,25Видны блоки восемь на восемь изза сжатия и сильные шумы,вызванные внедрениемскрываемой информацией.Видны блоки восемь на восемь изза сжатия и сильные шумы,вызванные внедрениемскрываемой информацией.45Окончание таблицы 2.2П/п РазмерКоэффициентсжатияРезультатХарактеристикаВидны блоки восемь на восемь изза сжатия.
Шумы практическиотсутствуют.3821 б26,43Качество – 3312911 б840 б23,8225,83Видны блоки восемь на восемь изза сильного сжатия и сильныешумы, вызванные внедрениемскрываемой информацией.Видны блоки восемь на восемь изза сильного сжатия и сильныешумы, вызванные внедрениемскрываемой информацией.Видны блоки восемь на восемь изза сжатия и искажения цвета.3771 б28,15Проанализировав экспериментальные данные можно сделать вывод о том,что при качестве изображения больше 50 и правильном подборе стеганоключаметод позволяет очень качественно спрятать информацию, не вызывая большихвизуальных искажений. Доработав метод, чтобы информация не записывалась внулевые или единичные элементы (что вызывает шум), можно добиться ещеболее высоких результатов скрытности, пожертвовав емкостью контейнера.463 Разработка программного решения «S.jpeg»3.1 Выбор архитектуры, языка программирования и среды разработкиВ последнее время все большую популярность набирают одностраничныевеб-приложения (англ.
single page application, SPA, ОП)11. ОП напоминают родные приложения операционных систем, с той лишь разницей, что исполняются врамках браузера, а не в собственном процессе операционной системы.Одностраничные приложения обычно состоят из следующих компонентов:а) клиентское приложение – веб-приложение, представленное одной страницей, которая содержит все компоненты, которые необходимы для работыприложения: навигация, шаблонизатор, модели и контроллеры для обработки клиентских запросов:1) html-страница, подгружаемая со всеми скриптами и стилями;2) фреймворк12 для клиента, в частности MVC или MVVP-фреймворк, передаваемый клиенту вместе с html-страницей;б) сервер – приложение, которое обрабатывает запросы клиентского приложения и работает с базой данных:1) интерфейс для получения html-страницы с клиентским приложением;2) API для взаимодействия клиента с сервером, например, в стиле REST.К плюсам ОП можно отнести работу на большом количестве устройств, упрощение построения сложного пользовательского интерфейса и уменьшениенагрузки на сеть за счет единоразовой загрузки клиентского приложения.Для разработки серверной части приложения был выбран язык Java – кроссплатформенный объектно-ориентированный язык программирования высокогоОдностраничное приложение – это веб-приложение или веб-сайт, использующий единственный HTML-документ как оболочку для всех веб-страниц и организующий взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX.11Фреймворк (англ.
framework – каркас, структура) – программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку иобъединение разных компонентов большого программного проекта.1247уровня – и фреймворк для построения приложений на Java Enterprise платформе– Spring Framework. А для реализации клиентского приложения мультипарадигменный язык программирования JavaScript и фреймворк AngularJS – платформадля разработки одностраничных приложений, целью которого является расширение браузерных приложений на основе MVC-шаблона.Архитектура приложения представлена на рис.
3.1.МодельПредставлениеCSSHTMLКонтроллерJavaScriptПользовательAPIСервлет-диспетчерКлиентское приложениеСерверное приложениеКонтроллерПредставлениеAPIМодельCSSHTMLРисунок 3.1 – Архитектура приложенияПри первом обращении к серверному приложению пользователь получаетHTML-страницу с клиентским приложением, которое запускается в браузере,48обрабатывает действия пользователя и обращается к API сервера, передаваяданные в заранее определенном виде, для сериализации был выбран форматJSON из-за его удобочитаемости, простоты и широкой распространенности вобласти построения API ОП.3.2 Руководство разработчика3.2.1 Серверное приложениеСерверная часть приложения представляет из себя веб-приложение,написанное на языке Java с использованием фреймворка Spring, в частности,модуля Spring Web MVC Framework.
Приложение выполняет следующие задачи: отдача по запросу пользователя html-страницы с клиентским приложением; предоставление программного интерфейса (API) для работы клиентскойчасти приложения; кодирование передаваемого сообщения в графическом файле (стеганоконтейнере) с использованием заданного стеганографического ключа и качества сжатия алгоритма JPEG; чтение информации из закодированного файла, определение отсутствия закодированной информации, и отправка уведомления об ошибках пользователю.Описание APIОснову приложения составляют десять классов, которые позволяютзапустить его на исполнение и обеспечивают выполнение заложенных задач. Нарис. 3.2 показана диаграмма классов, отображающая основные классыприложения, их свойства и предоставляемые методы.
Рассмотрим назначение иособенности реализации каждого класса приложения.4950Рисунок 3.2 – Диаграмма классов серверного приложенияКласс «SjpegApplication»Главный класс серверного приложения, который используется модулемSpring Boot для запуска веб-приложений на основе Spring без необходимостиразвертывания в контейнерах сервлетов.Содержит метод main для запуска программы на исполнение и для конфигурации Spring.Класс «JpegComponentSteganoKey»Хранит информацию о том, какие элементы матрицы (блока) после квантования будут использованы для сокрытия информации и в какие биты этих элементов будет происходить запись данных. Класс позволяет выполнятьследующие действия: проверять доступность элементов блока для записи (метод isMarkElementOfBlock); проверять доступность бита для записи по позиции (метод isMarkBitOfByte).Класс «JpegSteganoKey»Хранит массив объектов класса «JpegComponentSteganoKey», которые задаются отдельно для каждой цветовой компоненты кодировки цвета.
В JPEGобычно используется кодировка YCbCr вместо привычного RGB, она содержиттри компоненты, каждая из которых кодируется отдельно.Класс «Jpeg»Хранит основную информацию о графическом изображении и параметрахкодирования JPEG (количество компонент, параметры поддискретизации, ширина и высота изображения и др.) и «сырые» (до обработки) данные.Класс «DCT»Класс реализует масштабирование качества сжатия алгоритмом JPEG: хранит заданное качество сжатия изображения, методы ДКП блока данных и кван-51тования. Предоставляет методы для обработки блока данных compute с параметром data типа массив байтов.Класс «Huffman»Класс «Huffman» позволяет проводить кодирование по алгоритму Хаффмана с фиксированной таблицей.Класс «Component»Хранит информацию о параметрах кодирования и декодирования компоненты цветовой кодировки JPEG, используется кодером и декодером при выполнении операций внедрения и чтения данных из контейнера.Класс «JpegEncoder»Реализует алгоритм сжатия JPEG с возможностью внедрять информацию позаданному ключу в блоки данных контейнера после этапа квантования ДКП-коэффициентов.Класс «JpegDecoder»Предоставляет возможность декодировать файлы с расширением jpeg, получив значения параметров алгоритма JPEG и получить матрицы ДКП-коэффициентов в том виде, в котором они были после этапов квантования и записи скрываемого сообщения в них, а также прочитать сокрытые данные по заданномустеганографическому ключу.Класс «ApiResponse»Объекты этого класса возвращаются в ответ на запросы клиентского обращения, когда возникает необходимость вернуть данные, за исключением файлов.
Этот объект передается в сериализованном в JSON виде.Поле code содержит внутренний (утвержденный соглашениями в рамкахпрограммы) код ответа на запрос.Поле _embedded хранит или возвращаемый объект, или описание вызваннойошибки.52Класс «SteganoApiController»Последний, но не по значимости, класс «SteganoApiController» предоставляет два метода, которые доступны клиентскому приложению: закодировать идекодировать.Метод encode (закодировать) получает во входных данных стеганографический ключ, по которому определяются биты элементов матрицы ВКП-коэффициентов, сами коэффициенты и компоненты, в которые будет осуществлятьсявнедрение сокрытого сообщения, качество сжатия изображения, внедряемое сообщение и графический файл (немодифицированный стеганоконтейнер).
В ответ отправляется преобразованный графический файл с закодированными данными (модифицированный стеганоконтейнер).Метод decode (декодировать) получает стеганографический ключ и контейнер, содержащий модифицированное сообщение, извлекает информацию и отправляет в ответ объект класса ApiResponse, содержащий скрываемое сообщение.3.2.2 Клиентское приложениеКлиентское приложение представляет из себя html-страницу, которуюполучает пользователь при первом обращении к приложению (переход вбраузере по хосту, принадлежащему приложению), вместе со страницейзагружаются файлы, написанные на языке программирования JavaScript, и стили,которую будут применяться к элементам страницы.
Скрипты содержатбиблиотеку AngularJS, которая запускается в рамках браузера. Для построенияпользовательского интерфейса используется модуль для AngularJS Material.Пользовательский интерфейс позволяет производить следующие действия: выбирать графический файл путем выбора из проводника или переноса наполе файла; задавать стеганографический ключ; задавать качество изображения после сжатия;53 вводить скрываемое сообщение; внедрять скрываемое сообщение в выбранный контейнер по заданномуключу; читать скрытые данные из выбранного контейнера по заданному ключу.Концептуальная модельДля отображения структурной схемы одностраничного веб-приложенияподходит диаграмма классов анализа, на которой представлены граничные,управляющие классы и классы-сущности, которыми можно представитьприложение, реализованное с использованием шаблона MVC (Model-ViewController).
Основные элементы приложения показаны на рис. 3.3.Рисунок 3.3 – Диаграмма классов анализа клиентского приложенияНа данной диаграмме можно увидеть страницу входа «index.html», котораяполучается при загрузке приложения, она включает скрипт управляющегокласса, содержащегося в файле «app.js», а также еще три представления:navBar.html, encode.html и decode.html с их управляющими классами.Представление navBar.html является составной часть страницы index.html и54представляетсобойшапкупользовательскогоинтерфейса,вкоторойрасположена навигация.Представленияencode.htmlиdecode.html–этостраницы нашегоодностраничного приложения, переходами между ними и их отображениемзанимается модуль «angular-route».На странице encode.html можно задать все необходимые параметрыкодирования и отправить запрос внедрения информации на сервер, которыйвыполнит скрипт encode.js, обработав действия пользователя.