Скрытая передача мультимодальных персональных данных путем погружения в растровое изображение произвольной разрядности
Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных. Метод сокрытия информации в наименьших битах графических контейнеров. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.12.2014 |
Размер файла | 475,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
- Сокращения и разъяснения
- Введение
- 1. Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных
- 2. Метод сокрытия информации в наименьших значащих битах (LSB) графических контейнеров
- 3. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах
- Заключение
- Список литературы
- Приложение
Сокращения и разъяснения
ПДн - персональные данные.
ИСПДн - информационная система персональных данных.
НСД - несанкционированный доступ.
LSB - least significant bit
Несанкционированный доступ (несанкционированные действия) - доступ к информации или действия с информацией, осуществляемые с нарушением установленных прав и (или) правил доступа к информации или действий с ней с применением штатных средств информационной системы или средств, аналогичных им по своим функциональному предназначению и техническим характеристикам.
Стеганография - это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи.
Введение
1. Актуальность защиты персональных данных
Информация - в настоящий момент это очень важный ресурс.
Сегодня информация ценится очень высоко, возможно выше чем когда-либо.
Персональные данные (ПДн) - это любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных), в том числе: - фамилия, имя, отчество; - год, месяц, дата и место рождения; - адрес, семейное, социальное, имущественное положение, образование, профессия, доходы; - расовая принадлежность, национальная принадлежность; - политические, религиозные и философские убеждения; - иная информация [1]
Вопрос защиты персональных данных на сегодняшний день очень актуален. Это связано в первую очередь с развитием информационных технологий. Благодаря увеличившимся производительным мощностям компьютеров и, что не менее важно уменьшившейся их стоимости, подключится к Всемирной сети стало доступным практически для любого человека. Разработанная как военная узкоспециальная коммуникация Интернет стал выполнять гораздо больше функций, без него теперь просто трудно представить жизнь. Многие вещи сегодня становятся виртуальными - магазины, банки, билетные кассы и многое другое. Также благодаря развитию вычислительной техники стал возможным перевод бумажных документов в цифровой вид. В цифровом виде на данный момент обрабатывается информация в государственных учреждениях, больницах, различных частных фирмах и вообще практически во всех сферах жизни в которых велся какой-либо документооборот он стал дублироваться цифровым документооборотом. Стоит отметить, что сейчас посредством Интернета многие люди просто общаются друг с другом. Множество услуг теперь оказывается через Интернет и вот тут возникает проблема защиты информации, в частности - защиты персональных данных. В различных ситуациях потеря персональных данных может нанести различный ущерб - от незначительного, до срыва крупной банковской сделки или даже международного соглашения. В Российской Федерации отношения, связанные с обработкой, хранением, учетом, передачей и другими действиями в отношении персональных данных, регулируются Федеральным законом №152 "О персональных данных" от 27 июля 2006 года и 14-ой главой Трудового Кодекса Российской Федерации.
Согласно Федеральному закону №152 "О персональных данных" персональные данные являются информацией ограниченного доступа, и каждая компания и организация обязана защищать персональные данные своих сотрудников, клиентов и партнеров. Защита персональных данных - совокупность технических и организационных мероприятий, направленных на защиту сведений о субъекте персональных данных. Обязанности по защите персональных данных возлагаются на государственные и частные компании, деятельность которых связана с поиском, сбором, обработкой или хранением персональных данных.
В соответствии с п. 1 ст. 23 Федерального закона от 27.07.2006 года № 152-Федеральному закон "О персональных данных" и п. 1 Положения о Федеральной службе по надзору в сфере связи и массовых коммуникаций, утвержденного постановлением Правительства Российской Федерации от 16.03.2009 года № 228, уполномоченным органом по защите прав субъектов персональных данных, на который возлагается обеспечение контроля и надзора за соответствием обработки персональных данных требованиям настоящего Федерального закона, является федеральный орган исполнительной власти, осуществляющий функции по контролю и надзору в сфере связи и массовых коммуникаций (Роскомнадзор).
При несоблюдение положений закона 152-Федеральному закон "О персональных данных" предусматривается гражданская, уголовная, административная, а так же дисциплинарная и другие виды ответственности. В отдельных случаях, предусмотренных законом, может быть приостановлена деятельность организации или отозвана лицензия. Это одна из причин того, что защита персональных данных является неотъемлемой частью успешного функционирования любого предприятия.
2. Постановка задачи на проектирование
Задачей курсового проекта является изучение и разработка методов защиты персональных данных. В рамках курсового проекта будут изучены возможности сокрытия данных с помощью методов цифровой стеганографии. Будет разработана программа реализующая такой метод цифровой стеганографии как LSB (Least Significant Bit, наименьший значащий бит) -- суть которого заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения. Для проектирования программы будет использован язык программирования С#.
Так же было предусмотрено решение следующих задач:
- рассмотрение базовой модели угроз персональных данных, обрабатываемых в информационных системах персональных данных;
- изучение метода сокрытия информации в наименьших значащих битах (LSB) графических контейнеров;
- разработка алгоритма и блок-схемы работы программы, реализующей метод LSB в BMP-файлах (изображениях)
1. Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных
"Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных" разработана Федеральной службой по техническому и экспортному контролю России (далее - Модель угроз) и содержит систематизированный перечень угроз безопасности персональных данных при их обработке в информационных системах персональных данных.
Эти угрозы обусловлены преднамеренными или непреднамеренными действиями физических лиц, действиями зарубежных спецслужб или организаций (в том числе террористических), а также криминальных группировок, создающих условия(предпосылки) для нарушения безопасности персональных данных (ПДн), которое ведет к ущербу жизненно важных интересов личности, общества и государства.
Модель угроз содержит единые исходные данные по угрозам безопасности персональных данных, обрабатываемых в информационных системах персональных данных (ИСПДн), связанным:с перехватом (съемом) ПДн по техническим каналам с целью их копирования или неправомерного распространения; с несанкционированным, в том числе случайным, доступом в ИСПДн с целью изменения, копирования, неправомерного распространения ПДн или деструктивных воздействий на элементы ИСПДн и обрабатываемых в них ПДн использованием программных и программно-аппаратных средств с целью уничтожения или блокирования ПДн.
Модель угроз является методическим документом и предназначена для государственных и муниципальных органов, юридических и (или) физических лиц (далее - операторов), организующих и (или) осуществляющих обработку ПДн, а также определяющих цели и содержание обработки ПДн, заказчиков и разработчиков ИСПДн и их подсистем.
С применением Модели угроз решаются следующие задачи:
разработка частных моделей угроз безопасности ПДн в конкретных ИСПДн с учетом их назначения, условий и особенностей функционирования;
анализ защищенности ИСПДн от угроз безопасности ПДн в ходе организации и выполнения работ по обеспечению безопасности ПДн;
разработка системы защиты ПДн, обеспечивающей нейтрализацию предполагаемых угроз с использованием методов и способов защиты ПДн, предусмотренных для соответствующего класса ИСПДн;
проведение мероприятий, направленных на предотвращение несанкционированного доступа к ПДн и (или) передачи их лицам, не имеющим права доступа к такой информации;
недопущение воздействия на технические средства ИСПДн, в результате которого может быть нарушено их функционирование; контроль обеспечения уровня защищенности персональных данных. [2]
Нетрадиционный информационный канал - это канал скрытной передачи информации с использованием традиционных каналов связи и специальных преобразований передаваемой информации, не относящихся к криптографическим.
Для формирования нетрадиционных каналов могут использоваться методы:
· компьютерной стеганографии;
· основанные на манипуляции различных характеристик ИСПДн, которые можно получать санкционировано (например, времени обработки различных запросов, объемов доступной памяти или доступных для чтения идентификаторов файлов или процессов и т.п.).
Методы компьютерной стеганографии предназначены для скрытия факта передачи сообщения путем встраивания скрываемой информации во внешне безобидные данные (текстовые, графические, аудио- или видеофайлы) и включают в себя две группы методов, основанных:
· на использовании специальных свойств компьютерных форматов хранения и передачи данных;
· на избыточности аудио-, визуальной или текстовой информации с позиции психофизиологических особенностей восприятия человека.
Классификация методов компьютерной стеганографии приведена на рис. 1. Их сравнительная характеристика приведена в табл. 1.
Наибольшее развитие и применение в настоящее время находят методы сокрытия информации в графических стегоконтейнерах. Это обусловлено сравнительно большим объемом информации, который можно разместить в таких контейнерах без заметного искажения изображения, наличием априорных сведений о размерах контейнера, существованием в большинстве реальных изображений текстурных областей, имеющих шумовую структуру и хорошо подходящих для встраивания информации, проработанностью методов цифровой обработки изображений и цифровых форматов представления изображений.
Рис. 1 - Классификация методов стеганографического преобразования информации (СПИ)
Табл. 1 - Сравнительная характеристика стеганографических методов преобразования информации
Стеганографи- ческий метод |
Краткая характеристика метода |
Недостатки |
Преимущества |
|
Методы сокрытия информации в аудиоконтейнерах |
||||
Метод сокрытия в наименьших значащих битах |
Основан на записи сообщения в наименьшие значащие биты исходного сигнала. В качестве контейнера используется, как правило, несжатый аудиосигнал |
Невысокая скрытность передачи сообщения. Низкая устойчивость к искажениям. Используется только для определенных форматов аудио-файлов |
Достаточно высокая емкость контейнера (до 25 %) |
|
Метод сокрытия на основе распределения по спектру |
Основан на генерации псевдослу-чайного шума, являющегося функцией внедряемого сообщения, и подмешивании полученного шума к основному сигналу-контейнеру в качестве аддитивной составляющей. Кодирование потоков информации путем рассеяния кодированных данных по спектру частот |
Низкий коэффициент использования контейнера. Значительные вычислительные затраты |
Сравнительно высокая скрытность сообщения |
|
Метод сокрытия на основе использования эхо-сигнала |
Основан на использовании в качестве шумоподобного сигнала самого аудиосигнала, задержан-ного на различные периоды времени в зависимости от внедряемого сообщения ("дозвоночного эха") |
Низкий коэффициент использования контейнера. Значительные вычислительные затраты |
Сравнительно высокая скрытность сообщения |
|
Метод сокрытия в фазе сигнала |
Основан на факте нечувствитель-ности уха человека к абсолют-ному значению фазы гармоник. Аудио-сигнал разбивается на последовательность сегментов, сообщение встраивается путем модификации фазы первого сегмента |
Малый коэффициент использования контейнера |
Обладает значительно более высокой скрытностью, чем методы сокрытия в НЗБ |
|
Методы сокрытия информации в текстовых контейнерах |
||||
Метод сокрытия на основе пробелов |
Основан на вставке пробелов в конце строчек, после знаков препинания, между словами при выравнивании длины строк |
Методы чувствительны к переносу текста из одного формата в другой. Возможна потеря сообщения. Невысокая скрытность |
Достаточно большая пропускная способность |
|
Метод сокрытия на основе синтаксических особенностей текста |
Основан на том, что правила пунктуации допускают неоднозначности при расстановке знаков препинания |
Очень низкая пропускная способность. Сложность детектирования сообщения |
Существует потенциальная возможность подобрать такой метод, при котором потребуются весьма сложные процедуры для раскрытия сообщения |
|
Метод сокрытия на основе синонимов |
Основан на вставке информации в текст при помощи чередования слов из какой-либо группы синонимов |
Сложен применительно к |
Один из наиболее |
|
русскому языку в связи с большим разнообразием оттенков в разных синонимах |
перспективных методов. Обладает сравнительно высокой скрытностью сообщения |
|||
Метод сокрытия на основе использования ошибок |
Основан на маскировке информационных битов под естественные ошибки, опечатки, нарушения правил написания сочетаний гласных и согласных, замене кириллицы на аналогичные по внешнему виду латинские буквы и др. |
Невысокая пропускная способность. Быстро вскрывается при статистическом анализе. |
Весьма прост в применении. Высокая скрытность при анализе человеком |
|
Метод сокрытия на основе генерации квазитекста |
Основан на генерации текстового контейнера с использованием набора правил построения предложений. Используется симметричная криптография |
Невысокая пропускная способность. Бессмысленность созданного текста |
Скрытность определяется методами шифрования и, как правило, весьма высока |
|
Метод сокрытия на основе использования особенностей шрифта |
Основан на вставке информации за счет изменения типа шрифта и размера букв, а также на возможности встраивания информации в блоки с неизвестными для браузера идентификаторами |
Легко выявляется при преобразовании масштаба документа, при статистическом стегоанализе |
Высокий коэффициент использования контейнера |
|
Метод сокрытия на основе использования кода документа и файла |
Основан на размещении информации в зарезервированных и неиспользуемых полях переменной длины |
Низкая скрытность при известном формате файла |
Прост в применении |
|
Метод сокрытия на основе использования жаргона |
Основан на изменении значений слов |
Низкая пропускная способность. Узко специализирован. Низкая скрытность |
Прост в применении |
|
Метод сокрытия на основе использования чередования длины слов |
Основан на генерации текста -контейнера с формированием слов определенной длины по известному правилу кодирования |
Сложность формирования контейнера и сообщения |
Достаточно высокая скрытность при анализе человеком |
|
Метод сокрытия на основе использования первых букв |
Основан на внедрении сообщения в первые буквы слов текста с подбором слов |
Сложность составления сообщения. Низкая скрытность сообщения |
Дает большую свободу выбора оператору, придумывающему сообщение |
|
Методы сокрытия информации в графических контейнерах |
||||
Метод сокрытия в наименьших значащих битах |
Основан на записи сообщения в наименьшие значащие биты исходного изображения |
Невысокая скрытность передачи сообщения. Низкая устойчивость к искажениям |
Достаточно высокая емкость контейнера (до 25 %) |
|
Метод сокрытия на основе модификации индексного формата представления |
Основан на редукции (замене) цветовой палитры и упорядочивании цветов в пикселях с соседними номерами |
Применяется преимущественно к сжатым изображениям. Невысокая скрытность передачи сообщения |
Сравнительно высокая емкость контейнера |
|
Метод сокрытия на основе использования автокорреляцион-ной функции |
Основан на поиске с применением автокорреляционной функции областей, содержащих сходные данные |
Сложность расчетов |
Устойчивость к большинству нелинейных преобразований контейнера |
|
Метод сокрытия на основе использования нелинейной модуляции встраиваемого сообщения |
Основан на модуляции псевдослучайного сигнала сигналом, содержащим скрываемую информацию |
Низкая точность детектирования. Искажения |
Достаточно высокая скрытность сообщения |
|
Метод сокрытия на основе использования знаковой модуляции встраиваемого сообщения |
Основан на модуляции псевдослучайного сигнала биполярным сигналом, содержащим скрываемую информацию |
Низкая точность детектирования. Искажения |
Достаточно высокая скрытность сообщения |
|
Метод сокрытия на основе вейвлет-преобразования |
Основан на особенностях вейвлет-преобразований |
Сложность расчетов |
Высокая скрытность |
|
Метод сокрытия на основе использования дискретного косинусного преобразования |
Основан на особенностях дискретного косинусного преобразования |
Сложность расчетов |
Высокая скрытность |
В настоящее время существует целый ряд как коммерческих, так и бесплатных программных продуктов, доступных обычному пользователю, реализующих известные стеганографические методы сокрытия информации. При этом преимущественно используются графические и аудио-контейнеры.
В нетрадиционных информационных каналах, основанных на манипуляции различных характеристик ресурсов ИСПДн, используются для передачи данных некоторые разделяемые ресурсы. При этом в каналах, использующих временные характеристики, осуществляется модуляция по времени занятости разделяемого ресурса (например, модулируя время занятости процессора, приложения могут обмениваться данными).
В каналах памяти ресурс используется как промежуточный буфер (например, приложения могут обмениваться данными путем помещения их в имена создаваемых файлов и директорий). В каналах баз данных и знаний используют зависимости между данными, возникающими в реляционных базах данных и знаний.
Нетрадиционные информационные каналы могут быть сформированы на различных уровнях функционирования ИСПДн:
· на аппаратном уровне;
· на уровне микрокодов и драйверов устройств;
· на уровне операционной системы;
· на уровне прикладного программного обеспечения;
· на уровне функционирования каналов передачи данных и линий связи.
Эти каналы могут использоваться как для скрытой передачи скопированной информации, так и для скрытной передачи команд на выполнение деструктивных действий, запуска приложений и т.п.
Для реализации каналов, как правило, необходимо внедрить в автоматизированную систему программную или программно-аппаратную закладку, обеспечивающую формирование нетрадиционного канала.
Нетрадиционный информационный канал может существовать в системе непрерывно или активизироваться одноразово или по заданным условиям. При этом возможно существование обратной связи с субъектом НСД.[3]
2. Метод сокрытия информации в наименьших значащих битах (LSB) графических контейнеров
Суть метода замена наименее значащего бита (Least Significant Bits - LSB) заключается в сокрытии информации путем изменения последних битов изображения, кодирующих цвет, на биты скрываемого сообщения. Разница между пустым и заполненным контейнерами, должна быть не ощутима для органов восприятия человека.
Принцип сокрытия информации
Рис. 2 - Преобразование текста в байтовую последовательность
Как уже описано ранее, в формате BMP изображение хранится как матрица значений оттенков цвета для каждой точки хранимого изображения. Если каждая из компонент пространства RGB (их еще называют каналами цвета) хранится в одном байте, она может принимать значения от 0 до 255 включительно, что соответствует 24-х битной глубине цвета. Особенность зрения человека заключается в том, что оно слабо различает незначительные колебания цвета. Для 24-х битного цвета изменение в каждом из трех каналов одного наименее значимого бита (то есть крайнего правого) приводит к изменению менее чем на 1% интенсивности данной точки, что позволяет изменять их незаметно для глаза по своему усмотрению.
Рассчитаем пропускную способность метода. Если отбросить в расчетах, обычно незначительную относительно размера изображения, служебную информацию в начале файла, то мы имеем возможность скрытно передать сообщение размером в 1/8 размера контейнера ("размазанную" по последним битам в каждом байте матрицы цветов пикселей) или же размером в 1/4 контейнера (соответственно при использовании 2 последних битов в байтах).
Рис. 3 - Сокрытие информации в изображении
Принцип работы стеганографического метода заключается в следующем:
Пусть, имеется 24-х битное изображение в градациях серого. Пиксел кодируется 3 байтами, и в них расположены значения каналов RGB. Изменяя наименее значащий бит мы меняем значение байта на единицу. Такие градации, мало того что незаметны для человека, могут вообще не отобразиться при использовании низкокачественных устройств вывода.
Приведенный ниже пример показывает, как сообщение может быть скрыто в первых восьми байтах, относящихся к трем пикселей в 24-битного изображения
Pixels: (00100111 11101001 11001000)
(00100111 11001000 11101001)
(11001000 00100111 11101001)
A: 01000001
Result: (00100110 11101001 11001000)
(00100110 11001000 11101000)
(11001000 00100111 11101001)
В примере подчеркнуты только биты только те три бита, которые были фактически изменены. Применение стеганографического метода LSB в среднем требует, что только половина бит изображения-контейнера были изменены.
Небольшая модификация этой стеганографической техники позволяет использовать для встраивания сообщения два или более младших битов на байт. Это увеличивает объем скрытой информации в объекте-контейнере, но скрытность сильно снижается, что облегчает обнаружение стеганографии. Другие вариации этого метода включают в себя нивелирование статистических изменений в изображении. Некоторые интеллектуальное программное обеспечение для выявления стеганографии проверяет области, которые состоят из одного сплошного цвета. Для повышения скрытности следует избежать записи изменений в эти пиксели.
Достоинства и недостатки метода
Методы LSB являются неустойчивыми ко всем видам атак и могут быть использованы только при отсутствии шума в канале передачи данных. Обнаружение LSB-кодированного стего осуществляется по аномальным характеристикам распределения значений диапазона младших битов отсчётов цифрового сигнала. [4]
3. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах
Блок-схема функции "Schetchik"
Блок-схема функции "Start_Click" и "Start2_Click"
Описание блок-схемы функции "Start_Click" и "Start2_Click"
1. Начало
2. Проверка выбора разрядности
3. Проверка выбора каналов
4. Пересчет активного поля исходя из отступов, интервала и метода
5. Исходя из режима программы выберается тип действия
5.1 Чтение
5.1.1 Исходя из типа данных выберается действие
5.1.1.1 Текст
5.1.1.1.1 Получит текст
5.1.1.1.2 Удалить стопер
5.1.1.1.3 Вывести текст
5.1.1.2 Файл
5.1.1.2.1 Получить имя файла
5.1.1.2.2 Получить файл
5.1.1.2.3 Удалить стоперы
5.1.1.2.4 Сохранить файл
5.2. Запись
5.1.2 Исходя из типа данных выберается действие
5.1.2.1 Текст
5.1.2.1.1 Запись текста
5.1.2.1.2 Запись стопера
5.1.2.2 Файл
5.1.2.2.1 Запись имени
5.1.2.2.2 Запис стопера
5.1.2.2.3 Запись файла
5.1.2.2.4 Запись стопера
6. Конец
Описание блок-схемы функции "Schetchik"
1. Начало
2. Инициализация переменных
3. Проверка выбранных каналов
4. Проверка выбранных разрядностей
5. Пересчет доступного поля для записи исходя из отступов и интервала
6. Пересчет места необходимого под запись
7. Исходя из доступного для записи места
7.1 Запись возможна
7.2 Запись невозможна
8. Конец
Заключение
информация программа файл графический
В ходе курсового проекта были изучены базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных, актуальность вопроса защиты персональных данных, метод цифровой стеганографии LSB (Least Significant Bit, наименьший значащий бит) и возможность его реализации на языке программирования С#. Была разработана программа реализующая передачу мультимодальных персональных данных путем погружения в растровое изображение произвольной разрядности. Данная программа позволяет скрыть персональные данные и показала устойчивость к визуальным атакам.
Список литературы
1. Федеральный закон №152-ФЗ "О персональных данных" от 27 июля 2006 года
2. http://adm-ussuriisk.ru/administration/voprosy-informatsionnoy-bezopasnosti/rukovodyaschie-dokumenty-po-zaschite-personalnyh-dannyh/bazovaya-model-ugroz-bezopasnosti-personalnyh-dannyh.htm (дата обращения: 15.06.14)
3. Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных (ФСТЭК 2008) http://fstec.ru/component/attachments/download/289 (дата обращения: 15.06.14)
4. http://www.nestego.ru/2012/07/lsb.html (дата обращения: 15.06.14)
Приложение
using System; //подключение заголовочного файла
using System.Collections.Generic; //подключение заголовочного файла
using System.ComponentModel; //подключение заголовочного файла
using System.Data; //подключение заголовочного файла
using System.Drawing; //подключение заголовочного файла
using System.Linq; //подключение заголовочного файла
using System.Text; //подключение заголовочного файла
using System.Windows.Forms; //подключение заголовочного файл
namespace Program //название программы
{
public partial class Form1 : Form
{
public Form1() //инициализация компонентов
{
InitializeComponent(); //инициализация компонентов
Bitmap CryptImage, DecryptImage, image; //объявление переменных необходимы для работы программы
int vysota = 0, shirina = 0; //высота и ширина изображения
byte Bits = 0, SendingByte = 0, InputByte = 0; // переменные для текущего байта
byte[] Colors = { 0, 0, 0 }, RGB = { 0, 0, 0 }; //масивы переменных для цветового канала
bool test = false; //переменная для демо-режима
int sleva = 0, //левый отступ
sprava = 0, //правый отступ
snizu = 0, //нижний отступ
sverhu = 0, //вверхний отступ
interval = 1; //интервал
bool CryptMode = true, WriteMode = true; //переменная для режима, типа записи и метода записи
byte[] temp = { }, MessageBytes = { }, StopBytes1 = { 0x20, 0x20, 0x20 }, StopBytes2 = { 0x21, 0x21, 0x21 }, InputBytes = { }; //переменная для стоперров
long filesize = 0; //переменная размера
int MinShift1 = 0, //объявление переменной
MinShift2 = 0, //для записи файла,
MaxShift1 = 0, //пересчёт итогового размера поля
MaxShift2 = 0; //для записи
string str = ""; //переменная для имени файла
int Index = 0, //переменная для записи текста
MessageSize = 0, //переменная размера введёного текста
SendingBit = 0, //переменная размера текущего бита
BitPosition = 0, //переменная положения текущего бита
ColorPosition = 0, //цветовая позиция
InputBit; //текущий бит
Color ColorVAR, newColorVAR; //переменная для представления цветов
private void Schetchik() //высчитывание допустимое кол-во кбайт для записи
{
if (tabControl1.SelectedTab == tabPage1) //отключение функции при запуске раскрытия
{
int BitSchetchik = 0, RGBCanal = 0, AllPixels = 0; //переменные для пересчета максимального доступного места под запись
for (int i = 0; i < 3; i++) //пересчет выбранных каналов
{
if (Colors[i] == 1) RGBCanal++; //
}
for (int j = 0; j < 8; j++) //пересчет выбранной разрядности
{
if (((Bits >> j) & 1) == 1) BitSchetchik++; //
}
AllPixels = (shirina - (sleva + sprava)) * (vysota - (sverhu + snizu)); //пересчет максимального доступного места под запись в изображении
int Size = (AllPixels * RGBCanal * BitSchetchik) / (interval * interval); //максимальное доступное место под запись
toolStripStatusLabel1.Text = "Допустимое количество Кбайт для записи: " + Size / 8192 + ", " + Size % 8192 + " Кбайт"; //запись в заметку в нижнем левом углу
}
else toolStripStatusLabel1.Text = "Активно окно раскрытия"; //выводит сообщение, если включен режим раскрытия
}
private void Form1_Load(object sender, EventArgs e) //приветственная заметка при запуске программы
{
toolStripStatusLabel1.Text = "Откройте изображение";
}
private void OpenPicture_Click(object sender, EventArgs e) //открытие изображения, для последующего сокрытия в нём информации
{
OpenFileDialog OpenImage = new OpenFileDialog(); //открывает окно для выбора изображения
OpenImage.Filter = "Image Files(*.BMP)|*.BMP"; //для выбора только bmp файлов
if (OpenImage.ShowDialog() == DialogResult.OK)
{ //если изображение открыто, то становятся доступными кнопки и поля
CryptImage = new Bitmap(Image.FromFile(OpenImage.FileName)); //присвоение переменной открытому изображению
pictureBox1.Image = CryptImage; //
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; //
vysota = CryptImage.Height; //
shirina = CryptImage.Width; //
toolStripStatusLabel1.Text = "Разрешение изображения " + shirina + "x" + vysota; //показ размера изобрадения в точках
Start.Enabled = true; //
groupBox1.Enabled = true; //
groupBox2.Enabled = true; //
groupBox3.Enabled = true; //
groupBox4.Enabled = true; //
groupBox5.Enabled = true; //
groupBox7.Enabled = true; //
TextBox.Enabled = true; //
TestMode.Enabled = true; //
Schetchik(); //запускает процедуру на проверку возможности записи
}
}
private void OpenPicture2_Click(object sender, EventArgs e) //открытие изображения, для раскрытия информации
{
OpenFileDialog OpenImage = new OpenFileDialog(); //открывает окно для выбора изображения
OpenImage.Filter = "Image Files(*.BMP)|*.BMP"; //для выбора только bmp файлов
if (OpenImage.ShowDialog() == DialogResult.OK)
{ //если изображение открыто, то становятся доступными кнопки и поля
DecryptImage = new Bitmap(Image.FromFile(OpenImage.FileName)); //присвоение переменной открытому изображению
pictureBox2.Image = DecryptImage; //
pictureBox2.SizeMode = PictureBoxSizeMode.Zoom; //
vysota = DecryptImage.Height; //
shirina = DecryptImage.Width; //
toolStripStatusLabel1.Text = "Разрешение изображения " + shirina + "x" + vysota; //показ размера изобрадения в точках
Start2.Enabled = true; //
groupBox1.Enabled = true; //
groupBox2.Enabled = true; //
groupBox3.Enabled = true; //
groupBox4.Enabled = true; //
groupBox5.Enabled = true; //
groupBox7.Enabled = true; //
TextBox.Enabled = true; //
TestMode.Enabled = true; //
}
}
private void SavePicture_Click(object sender, EventArgs e) //сохранение изображения
{
SaveFileDialog SaveImage = new SaveFileDialog(); //открывает диалоговое окно для сохранения
SaveImage.Filter = "Image Files(*.BMP)|*.BMP"; //только bmp
if (SaveImage.ShowDialog() == DialogResult.OK)
{ //если возможность сохранения подтверждена, то идёт сохранение на диск
pictureBox1.Image.Save(SaveImage.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 1; //выбор 1 бита, для записи единицы используем XOR //
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox2_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 2; //выбор 2 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox3_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 4; //выбор 3 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox4_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 8; //выбор 4 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox5_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 16; //выбор 5 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox6_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 32; //выбор 6 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox7_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 64; //выбор 7 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox8_CheckedChanged(object sender, EventArgs e) //выбор разрядности
{
Bits ^= 128; //выбор 8 бита, для записи единицы используем XOR
Schetchik(); //вызывает проверку на возможность записи
}
private void Horizontal_CheckedChanged(object sender, EventArgs e) //выбор направления скрытия
{
if (Horizontal.Checked == true) CryptMode = true; //выбран горизонтальный
else CryptMode = false; //выбран вертикальный
}
private void Reset_Click(object sender, EventArgs e) //кнопка сброса значений сдвигов в ноль
{
ShiftLeft.Text = "0"; //
ShiftTop.Text = "0"; //
ShiftRight.Text = "0"; //
ShiftBottom.Text = "0"; //
sleva = 0; //
sprava = 0; //
snizu = 0; //
sverhu = 0; //
Schetchik(); //вызывает проверку на возможность записи
}
private void SetShift_Click(object sender, EventArgs e) //назначение сдвигов
{
try //пробуем назначить
{
sleva = Convert.ToInt32(ShiftLeft.Text); //берёт числовое значение слева
sprava = Convert.ToInt32(ShiftRight.Text); //берёт числовое значение справа
snizu = Convert.ToInt32(ShiftBottom.Text); //берёт числовое значение снизу
sverhu = Convert.ToInt32(ShiftTop.Text); //берёт числовое значение сверху
if ((sleva + sprava) >= shirina) //если отступы по горизонтали больше ширины изображения, то показывает ошибку и обнуляет значения и переменные отступ справа и слева
{
MessageBox.Show("Сумма сдвигов по ширине превышает разрешение изображения", "Внимание");
ShiftLeft.Text = "0";
ShiftRight.Text = "0";
}
if ((sverhu + snizu) >= vysota) //если отступы по вертикали больше высоты изображения то показывает ошибку и обнуляет значения и переменные отступ снизу и сверху
{
MessageBox.Show("Сумма сдвигов по высоте превышает разрешение изображения", "Внимание");
ShiftTop.Text = "0";
ShiftBottom.Text = "0";
}
Schetchik(); //вызывает проверку возможности записи
}
catch //если не удалось, выдаёт ошибку
{
MessageBox.Show("Введены недопустимые значения, допустимы только цифры", "Внимание");
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) //назначение интервала
{
interval = Convert.ToInt32(comboBox1.Text); //берёт из выпадающего списка значение в интервал
Schetchik(); //вызывает проверку на возможность записи
}
private void TextWrite_CheckedChanged(object sender, EventArgs e) //активация/деактивация поля ввода символов
{
if (TextWrite.Checked == true) //если режим ввода текста
{
TextBox.Visible = true; //включает текст-бокс
groupBox6.Visible = false; //делает поле невидимым
WriteMode = true; //включает режим ввода текста
}
else //если режим записи файла
{
TextBox.Visible = false; //выключает текст-бокс
groupBox6.Visible = true; //делает поле видимым
WriteMode = false; //выключает режим ввода текста
}
}
private void TestMode_CheckedChanged(object sender, EventArgs e) //тест-мод
{
if (TestMode.Checked == true) test = true; else test = false; //если отмечен "Демонстративный режим", то тест-мод включён
}
private void OpenFile_Click(object sender, EventArgs e) //открытие файла, для сокрытия его в bmp
{
OpenFileDialog OpenFile = new OpenFileDialog(); //открывает окно для выбора файла
OpenFile.Filter = "All files(*.*)|*.*"; //выбор файла любого формата
if (OpenFile.ShowDialog() == DialogResult.OK)
{ //
filesize = new System.IO.FileInfo(OpenFile.FileName).Length; //размер файла
FileName.Text = "Имя файла: " + OpenFile.SafeFileName; //выводит имя, расширение
FileSize.Text = "Размер файла: " + filesize / 1024 + ", " + filesize % 1024 + " Кбайт"; //показывает максимальный размер файла, который можно записат в данное изображение
FilePath.Text = OpenFile.FileName; //путь к файлу
str = OpenFile.SafeFileName; //присваивает название файла
MessageBytes = Encoding.BigEndianUnicode.GetBytes(str); //кодировка в юникод
temp = System.IO.File.ReadAllBytes(OpenFile.FileName); //присваивает все байты файла
Array.Resize(ref MessageBytes, MessageBytes.Length + temp.Length + 6); //добавление названия файла
Array.Copy(StopBytes1, 0, MessageBytes, MessageBytes.Length - temp.Length - 6, 3); //добавление первого стопера
Array.Copy(temp, 0, MessageBytes, MessageBytes.Length - temp.Length - 3, temp.Length); //добавление файла
Array.Copy(StopBytes2, 0, MessageBytes, MessageBytes.Length - 3, 3); //добавление второго стопера
Schetchik(); //вызывает проверку на возможность записи
}
}
private void Start_Click(object sender, EventArgs e) //операция сокрытие
{
if (WriteMode == true) //если режим запись
{
if (TextBox.Text != "") //если текст имеет символы, то
{
str = TextBox.Text; //присвоение переменной введенного текста
MessageBytes = Encoding.BigEndianUnicode.GetBytes(str); //создание массива байт
Array.Resize(ref MessageBytes, MessageBytes.Length + 3); //добавление введенного текста
Array.Copy(StopBytes2, 0, MessageBytes, MessageBytes.Length - 3, 3); //добавление второго стопера
}
else { MessageBox.Show("Нет данных для скрытия", "Внимание"); return; } //если нет текста, то вывод ошибки
}
if (Bits == 0) { MessageBox.Show("Задайте разрядность", "Внимание"); return; } //если не выбрана разрядность выдает ошибку
if (Colors[0] == 0 && Colors[1] == 0 && Colors[2] == 0) { MessageBox.Show("Задайте цветовые каналы", "Внимание"); return; } //если не выбраны каналы, выдает ошибку
if (CryptMode == true) //если метод горизонтальный, то пересчитывает итоговое поле для записи в изображении
{
MinShift1 = sverhu; MaxShift1 = vysota - snizu; //
MinShift2 = sleva; MaxShift2 = shirina - sprava; //
}
else //если метод вертикальный, то пересчитывает итоговое поле для записи в изображении
{
MinShift1 = sleva; MaxShift1 = shirina - sprava; //
MinShift2 = sverhu; MaxShift2 = vysota - snizu; //
}
MessageSize = MessageBytes.Length; //обнуление переменных для записи
SendingByte = MessageBytes[0]; //назначаем SendingByte первый байт сообщения
Index = 0; //обнуляем индекс массива сообщения
SendingBit = 0; //обнуляем счётчик передаваемого бита
image = new Bitmap(CryptImage); //дублирование изображения для записи
for (int y = MinShift1; y < MaxShift1 && Index < MessageSize; y += interval) //цикл записи по вертикали
for (int x = MinShift2; x < MaxShift2 && Index < MessageSize; x += interval) //цикл записи по горизонтали
{
if (CryptMode == true) ColorVAR = image.GetPixel(x,y); else ColorVAR = image.GetPixel(y, x);
RGB[0] = ColorVAR.R; //присвоение красного канала
RGB[1] = ColorVAR.G; //присвоение зеленого канала
RGB[2] = ColorVAR.B; //присвоение синего канала
for (ColorPosition = 0; ColorPosition < 3 && Index < MessageSize; ColorPosition++) //перебираем цветовые каналы
{
if ((Colors[ColorPosition] & 1) == 1) //сверяем канал с маской цветов
{
for (BitPosition = 7; BitPosition >= 0; BitPosition--) //перебираем разрядность
{
if (((Bits >> BitPosition) & 1) == 1) //сверяем разряд с маской битов
{
if ((SendingByte & 1) == 1) RGB[ColorPosition] |= (byte)Math.Pow(2, BitPosition);
else RGB[ColorPosition] &= (byte)~(byte)Math.Pow(2, BitPosition); //для записи единицы используем ИЛИ, для записи нуля ~И
SendingBit++; //увеличиваем счётчик переданных
if (SendingBit == 8) //передали байт
{
if (Index + 1 < MessageSize) //проверяем выход за границы массива
{
Index++; //увеличиваем индекс в массиве
SendingBit = 0; //обнуляем счётчик битов
SendingByte = MessageBytes[Index]; //записываем новый байт в массив
}
else { Index++; break; } //если вышли за пределы массива - выходим из цикла
}
else SendingByte >>= 1; //сдвигаем передаваемый байт на один вправо
}
}
}
}
newColorVAR = Color.FromArgb(RGB[0], RGB[1], RGB[2]); //создаём новый цвет
if (CryptMode == true) image.SetPixel(x, y, newColorVAR); else image.SetPixel(y, x, newColorVAR); //в зависимости от метода записи, устанавливаем новое значения компонент пикселя
}
pictureBox1.Image = image; //устанавливаем изображение
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; //масштабируем изображение
SavePicture.Enabled = true; //включаем кнопку "Сохранить изображение"
if (test == true) //если режим программы Чтение ИЛИ выбран демонстративный режим
{
MessageBox.Show("Считан текст", "Внимание"); //вывод текста
DecryptImage = new Bitmap(image); //создаём копию изображения
Start2_Click(sender, e); //
}
}
private void checkBox9_CheckedChanged(object sender, EventArgs e) //выбор красного цветового канала
{
Colors[0] ^= 1; //если стоит красный, то в массиве, в 1 переменную отмечается 1
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox10_CheckedChanged(object sender, EventArgs e) //выбор зелёного цветового канала
{
Colors[1] ^= 1; //если стоит красный, то в массиве, во 2 переменную отмечается 1
Schetchik(); //вызывает проверку на возможность записи
}
private void checkBox11_CheckedChanged(object sender, EventArgs e) //выбор синего цветового канала
{
Colors[2] ^= 1; //если стоит красный, то в массиве, в 3 переменную отмечается 1
Schetchik(); //вызывает проверку на возможность записи
}
private void Start2_Click(object sender, EventArgs e) //раскрытие скрытой информации
{
if (Bits == 0) { MessageBox.Show("Задайте разрядность", "Внимание"); return; } //если не выбрана разрядность выдает ошибку
if (Colors[0] == 0 && Colors[1] == 0 && Colors[2] == 0) { MessageBox.Show("Задайте цветовые каналы", "Внимание"); return; } //если не выбраны каналы, выдает ошибку
if (CryptMode == true) //если метод горизонтальный, то пересчитывает итоговое поле для записи в изображении
{
MinShift1 = sverhu; MaxShift1 = vysota - snizu; //
MinShift2 = sleva; MaxShift2 = shirina - sprava; //
}
else //если метод вертикальный, то пересчитывает итоговое поле для записи в изображении
{
MinShift1 = sleva; MaxShift1 = shirina - sprava; //
MinShift2 = sverhu; MaxShift1 = vysota - snizu; //
}
TextBox.Text = ""; //обнуляем поле текста
Array.Resize(ref InputBytes, 1000); //увеличиваем размер массива
Index = 0; //обнуляем индекс массива сообщения
SendingBit = 0; //обнуляем счётчик передаваемого бита
image = DecryptImage; //показывает зашифрованное изображение
bool stop = true; //флаг остановки
str = ""; //для чтения
for (int y = MinShift1; y < MaxShift1 && stop; y += interval) //цикл записи по вертикали
for (int x = MinShift2; x < MaxShift2 && stop; x += interval) //цикл записи по горизонтали
{
if (CryptMode == true) ColorVAR = DecryptImage.GetPixel(x, y); else ColorVAR = DecryptImage.GetPixel(y, x);
RGB[0] = ColorVAR.R; //присвоение красного канала
RGB[1] = ColorVAR.G; //присвоение зеленого канала
RGB[2] = ColorVAR.B; //присвоение синего канала
for (ColorPosition = 0; ColorPosition < 3 && stop; ColorPosition++)
{ //перебираем цветовые каналы
if ((Colors[ColorPosition] & 1) == 1)
{ //сверяем канал с маской цветов
for (BitPosition = 7; BitPosition >= 0; BitPosition--)
{ //перебираем разрядность
if (((Bits >> BitPosition) & 1) == 1)
{ //сверяем разряд с маской битов
if (((RGB[ColorPosition] >> BitPosition) & 1) == 1) InputByte ^= 128;
InputBit++; //если необходимо установить единицу, делаем XOR 128
if (InputBit == 8) //считали байт
{
InputBytes[Index] = InputByte; //записываем полученный байт
if (Index + 1 >= InputBytes.Length) Array.Resize(ref InputBytes, InputBytes.Length + 10000); //если вышли за пределы массива - увеличиваем его
Index++; //увеличиваем индекс в массиве
InputBit = 0; //обнуляем счётчик битов
InputByte = 0; //обнуляем счётчик байтов
if (InputBytes[Index - 1] == 0x21 && InputBytes[Index - 2] == 0x21 && InputBytes[Index - 3] == 0x21) //если получили стоппер
{
Array.Resize(ref InputBytes, Index - 3); //удаляем стоппер из полученного сообщения
stop = false; //устанавливаем флаг остановки
break; //выходим из цикла
}
if (WriteMode == false && InputBytes[Index - 1] == 0x20 && InputBytes[Index - 2] == 0x20 && InputBytes[Index - 3] == 0x20 && str == "") //если получили стоппер имени файла
{
Array.Resize(ref InputBytes, Index - 3); //удаляем стоппер
str = Encoding.BigEndianUnicode.GetString(InputBytes); //извлекаем имя и расширения файла (декодируем его в unicode)
Array.Clear(InputBytes, 0, InputBytes.Length); //очищаем массив
Index = 0;
}
}
else InputByte >>= 1; //смещаем полученный байт на один вправо
}
}
}
}
}
if (WriteMode == true) //если не получили имя файла, значит принятое сообщение - текст
{
str = Encoding.BigEndianUnicode.GetString(InputBytes); //декодирует сообщение в
TextBox.Text = str; //unicode и вставляет в текст-бокс
}
else //получили файл
{
SaveFileDialog SafeFile = new SaveFileDialog(); //вызываем диалог сохранения файла
SafeFile.Filter = "All Files(*.*)|*.*"; //устанавливаем фильтр диалогового окна
SafeFile.FileName = str; //передаём имя и расширение файла
if (SafeFile.ShowDialog() == DialogResult.OK) //если пользователь нажал ОК
{
try
{
System.IO.File.WriteAllBytes(SafeFile.FileName, InputBytes); //пробуем записать файл на компьютер
}
catch (Exception ex)
{
MessageBox.Show("Не удалось сохранить файл: " + ex.Message, "Внимание"); //если не получилось, выводим ошибку
}
}
}
}
Размещено на Allbest.ru
Подобные документы
Актуальность защиты информации и персональных данных. Постановка задачи на проектирование. Базовая модель угроз персональных данных, обрабатываемых в информационных системах. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах.
курсовая работа [449,5 K], добавлен 17.12.2015Основы безопасности персональных данных. Классификация угроз информационной безопасности персональных данных, характеристика их источников. Базы персональных данных. Контроль и управление доступом. Разработка мер защиты персональных данных в банке.
дипломная работа [3,2 M], добавлен 23.03.2018Анализ структуры распределенной информационной системы и обрабатываемых в ней персональных данных. Выбор основных мер и средств для обеспечения безопасности персональных данных от актуальных угроз. Определение затрат на создание и поддержку проекта.
дипломная работа [5,3 M], добавлен 01.07.2011Законодательные основы защиты персональных данных. Классификация угроз информационной безопасности. База персональных данных. Устройство и угрозы ЛВС предприятия. Основные программные и аппаратные средства защиты ПЭВМ. Базовая политика безопасности.
дипломная работа [2,5 M], добавлен 10.06.2011Правовое регулирование защиты персональных данных. Общий принцип построения соответствующей системы. Разработка основных положений по охране личных документов. Подбор требований по обеспечению безопасности персональных данных в информационных системах.
дипломная работа [1,3 M], добавлен 01.07.2011Определение степени исходной защищенности персональных данных в информационной системе. Факторы, создающие опасность несанкционированного доступа к персональным данным. Составление перечня угроз персональным данным, оценка возможности их реализации.
контрольная работа [21,5 K], добавлен 07.11.2013Система контроля и управления доступом на предприятии. Анализ обрабатываемой информации и классификация ИСПДн. Разработка модели угроз безопасности персональных данных при их обработке в информационной системе персональных данных СКУД ОАО "ММЗ".
дипломная работа [84,7 K], добавлен 11.04.2012Технологии защиты персональных данных и их применение. Юридический аспект защиты персональных данных в России. Описание результатов опроса среди рядовых российских пользователей. Прогноз развития технологий в связи с аспектом защиты персональных данных.
дипломная работа [149,6 K], добавлен 03.07.2017Анализ сетевой инфраструктуры, специфика среды исполнения и принципов хранения данных. Обзор частных моделей угроз персональных данных при их обработке с использованием внутрикорпоративных облачных сервисов. Разработка способов защиты их от повреждения.
курсовая работа [41,7 K], добавлен 24.10.2013Исследование возможностей ускорения процессов заполнения базы персональных данных за счет сокращения ручного ввода данных путем применения технологий оптического распознавания символов. Проектирование, реализация и тестирование автоматизированной системы.
дипломная работа [2,6 M], добавлен 10.07.2017