Сокрытие персональных данных в последний незначимый бит растрового изображения формата BMP

Актуальность защиты информации и персональных данных. Постановка задачи на проектирование. Базовая модель угроз персональных данных, обрабатываемых в информационных системах. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.12.2015
Размер файла 449,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

МИНОБРНАУКИ РОССИИ

Государственное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный экономический университет»

Кафедра вычислительных систем и программирования

Курсовой проект

по дисциплине: Защита информационных систем обработки персональных данных

на тему: «Сокрытие персональных данных в последний незначимый бит растрового изображения формата BMP»

Выполнил:

Келесис Никита

Санкт-Петербург

Оглавление

1. Актуальность защиты персональных данных

2. Постановка задачи на проектирование

3. Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных

4. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах

Заключение

Список литературы

Приложение

1. Актуальность защиты персональных данных

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

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

Именно необходимость обеспечения безопасности персональных данных в настоящее время стала объективной реальностью. Эта необходимость вызвана быстрым развитием современных информационных технологий, средств электронной коммерции и электронного информационного обмена между партнерами по бизнесу, свободного доступа к средствам массовых коммуникаций, возможностью копирования и распространения информации.

Организации, обрабатывающие персональные данные, принимали меры по их защите, исходя из собственных представлений, закрепленных во внутренней политике информационной безопасности. Сейчас ситуация изменилась. В соответствии с Федеральным законом Российской Федерации от 27 июля 2006 г. № 152-ФЗ «О персональных данных» (в редакции № 261-ФЗ от 25.07.2011), существенно возросли требования ко всем частным и государственным компаниям и организациям, а также физическим лицам, которые хранят, собирают, передают или обрабатывают персональные данные (в том числе фамилия, имя, отчество). Такие компании, организации и физические лица относятся к операторам персональных данных. [4]

Постановлением Правительства РФ от 1 ноября 2012 г. № 1119 установлены требования к защите персональных данных при их обработке в информационных системах, определяющие классификацию информационных систем по видам обрабатываемых данных, классификацию угроз для разных видов систем, а также необходимые уровни защищенности для каждого из видов таких систем. Безопасность персональных данных при их обработке в информационной системе обеспечивает оператор этой системы или лицо, осуществляющее обработку персональных данных по поручению оператора на основании заключаемого с этим лицом договора. Выбор средств защиты информации для системы осуществляется оператором в соответствии с нормативными правовыми актами ФСБ России и ФСТЭК России. [5]

Согласно Федеральному закону №152 «О персональных данных» персональные данные являются информацией ограниченного доступа. Целью настоящего Федерального закона является обеспечение защиты прав и свобод человека и гражданина при обработке его персональных данных, в том числе защиты прав на неприкосновенность частной жизни, личную и семейную тайну.

При несоблюдении положений закона 152-Федеральному закон «О персональных данных» предусматривается гражданская, уголовная, административная, а так же дисциплинарная и другие виды ответственности. В отдельных случаях, предусмотренных законом, может быть приостановлена деятельность организации или отозвана лицензия. Это одна из причин того, что защита персональных данных является неотъемлемой частью успешного функционирования любого предприятия.[1]

2. Постановка задачи на проектирование

защита файл алгоритм программа

Заданием курсового проекта является изучение алгоритмов и механизмов защиты персональных данных. В ходе курсового проекта, были изучены методы сокрытия данных при помощи стеганографии. Мною была разработана программа на языке программирования Python, реализующая сокрытие информации в последний незначимый бит растрового изображения формата BMP и разработана блок-схема работы алгоритма.

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

3. Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных

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

Модель угроз содержит единые исходные данные по угрозам безопасности персональных данных, обрабатываемых в информационных системах персональных данных (ИСПДн), связанным: с перехватом (съемом) ПДн по техническим каналам с целью их копирования или неправомерного распространения; с несанкционированным, в том числе случайным, доступом в ИСПДн с целью изменения, копирования, неправомерного распространения ПДн или деструктивных воздействий на элементы ИСПДн и обрабатываемых в них ПДн с использованием программных и программно-аппаратных средств с целью уничтожения или блокирования ПДн.

Модель угроз является методическим документом и предназначена для государственных и муниципальных органов, юридических и (или) физических лиц (далее - операторов), организующих и (или) осуществляющих обработку ПДн, а также определяющих цели и содержание обработки ПДн, заказчиков и разработчиков ИСПДн и их подсистем. С применением Модели угроз решаются следующие задачи:

· разработка частных моделей угроз безопасности ПДн в конкретных ИСПДн с учетом их назначения, условий и особенностей функционирования;

· анализ защищенности ИСПДн от угроз безопасности ПДн в ходе организации и выполнения работ по обеспечению безопасности ПДн;

· разработка системы защиты ПДн, обеспечивающей нейтрализацию предполагаемых угроз с использованием методов и способов защиты ПДн, предусмотренных для соответствующего класса ИСПДн;

· проведение мероприятий, направленных на предотвращение несанкционированного доступа к ПДн и (или) передачи их лицам, не имеющим права доступа к такой информации;

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

· контроль обеспечения уровня защищенности персональных данных. В Модели угроз дано обобщенное описание ИСПДн как объектов защиты, возможных источников угрозы безопасности персональных данных (УБПДн), основных классов уязвимостей ИСПДн, возможных видов деструктивных воздействий на ПДн, а также основных способов их реализации.

Угрозы безопасности ПДн, обрабатываемых в ИСПДн, содержащиеся в настоящей Модели угроз, могут уточняться и дополняться по мере выявления новых источников угроз, развития способов и средств реализации УБПДн в ИСПДн. Внесение изменений в Модель угроз осуществляется ФСТЭК России в устанавливаемом порядке.

Информационные системы ПДн представляют собой совокупность информационных и программно-аппаратных элементов, а также информационных технологий, применяемых при обработке ПДн. Основными элементами ИСПДн являются:

· персональные данные, содержащиеся в базах данных, как совокупность информации и ее носителей, используемых в ИСПДн;

· информационные технологии, применяемые при обработке ПДн; технические средства, осуществляющие обработку ПДн (средства вычислительной техники, информационно-вычислительные комплексы и сети, средства и системы передачи, приема и обработки ПДн, средства и системы звукозаписи, звукоусиления, звуковоспроизведения, переговорные и телевизионные устройства, средства изготовления, тиражирования документов и другие технические средства обработки речевой, графической, видео- и буквенно-цифровой информации;

· программные средства (операционные системы, системы управления базами данных и т.п.);

· средства защиты информации; вспомогательные технические средства и системы (ВТСС) - технические средства и системы, их коммуникации, не предназначенные для обработки ПДн, но размещенные в помещениях, в которых расположены ИСПДн, их технические средства (различного рода телефонные средства и системы, средства вычислительной техники, средства и системы передачи данных в системе радиосвязи, средства и системы охранной и пожарной сигнализации, средства и системы оповещения и сигнализации, контрольно-измерительная аппаратура, средства и системы кондиционирования, средства и системы проводной радиотрансляционной сети и приема программ радиовещания и телевидения, средства электронной оргтехники, средства и системы электрочасофикации). [2]

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

В соответствии со статьей 19 Федерального закона №152-ФЗ от 27 июля 2006 г. «О персональных данных» ПДн должны быть защищены от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, распространения персональных данных, а также от иных неправомерных действий. Угрозы безопасности ПДн при их обработке в ИСПДн могут быть связаны как с непреднамеренными действиями персонала ИСПДн и(или) потребителей, пользующихся услугами, предоставляемыми ИСПДн в соответствии с ее назначением, так и со специально осуществляемыми неправомерными действиями иностранных государств, криминальных сообществ, отдельных организаций и граждан, а также иными источниками угроз. Угрозы безопасности ПДн могут быть реализованы за счет утечки ПДн по техническим каналам (технические каналы утечки информации, обрабатываемой в технических средствах ИСПДн, технические каналы перехвата информации при ее передаче по каналам связи, технические каналы утечки акустической (речевой) информации) либо за счет несанкционированного доступа с использованием соответствующего программного обеспечения. [1]

Нетрадиционный информационный канал - это канал скрытной передачи информации с использованием традиционных каналов связи и специальных преобразований передаваемой информации, не относящихся к криптографическим.

Для формирования нетрадиционных каналов могут использоваться методы:

· компьютерной стеганографии;

· основанные на манипуляции различных характеристик ИСПДн, которые можно получать санкционировано (например, времени обработки различных запросов, объемов доступной памяти или доступных для чтения идентификаторов файлов или процессов и т.п.).

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

· на использовании специальных свойств компьютерных форматов хранения и передачи данных;

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

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

Табл.1 - Сравнительная характеристика стеганографических методов преобразования информации

Стеганографический метод

Краткая характеристика метода

Недостатки

Преимущества

Методы сокрытия информации в аудиоконтейнерах

Метод сокрытия в наименьших значащих битах

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

Невысокая скрытность передачи сообщения. Низкая устойчивость к искажениям. Используется только для определенных форматов аудио-файлов

Достаточно высокая емкость контейнера (до 25 %)

Метод сокрытия на основе распределения по спектру

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

Низкий коэффициент использования контейнера. Значительные вычислительные затраты

Сравнительно высокая скрытность сообщения

Метод сокрытия на основе использования эхо-сигнала

Основан на использовании в качестве шумоподобного сигнала самого аудиосигнала, задержанного на различные периоды времени в зависимости от внедряемого сообщения («дозвоночного эха»)

Низкий коэффициент использования контейнера. Значительные вычислительные затраты

Сравнительно высокая скрытность сообщения

Метод сокрытия в фазе сигнала

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

Малый коэффициент использования контейнера

Обладает значительно более высокой скрытностью, чем методы сокрытия в НЗБ

Методы сокрытия информации в текстовых контейнерах

Метод сокрытия на основе пробелов

Основан на вставке пробелов в конце строчек, после знаков препинания, между словами при выравнивании длины строк

Методы чувствительны к переносу текста из одного формата в другой. Возможна потеря сообщения. Невысокая скрытность

Достаточно большая пропускная способность

Метод сокрытия на основе синтаксических особенностей текста

Основан на том, что правила пунктуации допускают неоднозначности при расстановке знаков препинания

Очень низкая пропускная способность. Сложность детектирования сообщения

Существует потенциальная возможность подобрать такой метод, при котором потребуются весьма сложные процедуры для раскрытия сообщения

Метод сокрытия на основе синонимов

Основан на вставке информации в текст при помощи чередования слов из какой-либо группы синонимов

Сложен применительно к

Один из наиболее

русскому языку в связи с большим разнообразием оттенков в разных синонимах

перспективных методов. Обладает сравнительно высокой скрытностью сообщения

Метод сокрытия на основе использования ошибок

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

Невысокая пропускная способность. Быстро вскрывается при статистическом анализе.

Весьма прост в применении. Высокая скрытность при анализе человеком

Метод сокрытия на основе генерации квазитекста

Основан на генерации текстового контейнера с использованием набора правил построения предложений. Используется симметричная криптография

Невысокая пропускная способность. Бессмысленность созданного текста

Скрытность определяется методами шифрования и, как правило, весьма высока

Метод сокрытия на основе использования особенностей шрифта

Основан на вставке информации за счет изменения типа шрифта и размера букв, а также на возможности встраивания информации в блоки с неизвестными для браузера идентификаторами

Легко выявляется при преобразовании масштаба документа, при статистическом стегоанализе

Высокий коэффициент использования контейнера

Метод сокрытия на основе использования кода документа и файла

Основан на размещении информации в зарезервированных и неиспользуемых полях переменной длины

Низкая скрытность при известном формате файла

Прост в применении

Метод сокрытия на основе использования жаргона

Основан на изменении значений слов

Низкая пропускная способность. Узко специализирован. Низкая скрытность

Прост в применении

Метод сокрытия на основе использования чередования длины слов

Основан на генерации текста -контейнера с формированием слов определенной длины по известному правилу кодирования

Сложность формирования контейнера и сообщения

Достаточно высокая скрытность при анализе человеком

Метод сокрытия на основе использования первых букв

Основан на внедрении сообщения в первые буквы слов текста с подбором слов

Сложность составления сообщения. Низкая скрытность сообщения

Дает большую свободу выбора оператору, придумывающему сообщение

Методы сокрытия информации в графических контейнерах

Метод сокрытия в наименьших значащих битах

Основан на записи сообщения в наименьшие значащие биты исходного изображения

Невысокая скрытность передачи сообщения. Низкая устойчивость к искажениям

Достаточно высокая емкость контейнера (до 25 %)

Метод сокрытия на основе модификации индексного формата представления

Основан на редукции (замене) цветовой палитры и упорядочивании цветов в пикселях с соседними номерами

Применяется преимущественно к сжатым изображениям. Невысокая скрытность передачи сообщения

Сравнительно высокая емкость контейнера

Метод сокрытия на основе использования автокорреляцион-ной функции

Основан на поиске с применением автокорреляционной функции областей, содержащих сходные данные

Сложность расчетов

Устойчивость к большинству нелинейных преобразований контейнера

Метод сокрытия на основе использования нелинейной модуляции встраиваемого сообщения

Основан на модуляции псевдослучайного сигнала сигналом, содержащим скрываемую информацию

Низкая точность детектирования. Искажения

Достаточно высокая скрытность сообщения

Метод сокрытия на основе использования знаковой модуляции встраиваемого сообщения

Основан на модуляции псевдослучайного сигнала биполярным сигналом, содержащим скрываемую информацию

Низкая точность детектирования. Искажения

Достаточно высокая скрытность сообщения

Метод сокрытия на основе вейвлет-преобразования

Основан на особенностях вейвлет-преобразований

Сложность расчетов

Высокая скрытность

Метод сокрытия на основе использования дискретного косинусного преобразования

Основан на особенностях дискретного косинусного преобразования

Сложность расчетов

Высокая скрытность

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

Нетрадиционные информационные каналы могут быть сформированы на различных уровнях функционирования ИСПДн: на аппаратном уровне; на уровне микрокодов и драйверов устройств; на уровне операционной системы; на уровне прикладного программного обеспечения; на уровне функционирования каналов передачи данных и линий связи. Эти каналы могут использоваться как для скрытой передачи скопированной информации, так и для скрытной передачи команд на выполнение деструктивных действий, запуска приложений и т.п. Для реализации каналов, как правило, необходимо внедрить в автоматизированную систему программную или программно-аппаратную закладку, обеспечивающую формирование нетрадиционного канала. Нетрадиционный информационный канал может существовать в системе непрерывно или активизироваться одноразово или по заданным условиям. При этом возможно существование обратной связи с субъектом НСД.[6]

3. Метод сокрытия информации в наименьших значащих битах (LSB) графических контейнеров

LSB (Least Significant Bit, наименьший значащий бит). Суть этого метода заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения.

Разница между пустым и заполненным контейнерами должна быть не ощутима для органов восприятия человека [1]. Для простоты описания можно рассмотреть принцип работы этого метода на примере 24-битного растрового RGB-изображения. Одна точка изображения в этом формате кодируется тремя байтами, каждый из которых отвечает за интенсивность одного из трех составляющих цветов (в соответствии с рисунком 1)

Рисунок 1. Представление цвета пикселя в 24-битном bmp-изображении

В результате смешения цветов из красного (R), зеленого (G) и синего (B) каналов пиксель получает нужный оттенок. Чтобы нагляднее увидеть принцип действия метода LSB, распишем каждый из трех байтов в битовом виде. Младшие разряды (на рисунке они расположены справа) в меньшей степени влияют на итоговое изображение, чем старшие. Из этого можно сделать вывод, что замена одного или двух младших, наименее значащих битов, на другие произвольные биты настолько незначительно исказит оттенок пикселя, что зритель просто не заметит изменения.

Допустим, нам нужно скрыть в данной точке изображения шесть бит: 101100. Для этого разобьем их на три пары и заместим ими по два младших бита в каждом канале (в соответствии с рисунком 2, 3).

Рисунок 2. Исходные и измененные компоненты цвета

Рисунок 3. Цвет пикселя с внедренными данными

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

Теперь можно посчитать полезный объем такого RGB-контейнера. Занимая два бита из восьми на каждый канал, мы будем иметь возможность спрятать три байта полезной информации на каждые четыре пикселя изображения, что соответствует 25% объема картинки. Таким образом, имея файл изображения размером 200 Кбайт, мы можем скрыть в нем до 50 Кбайт произвольных данных так, что невооруженному глазу эти изменения не будут заметны.

Все BMP контейнеры нужно разделить на два класса: «чистые» и зашумленные. В «чистых» картинках прослеживается связь между младшим битом, который подвергается изменениям, и остальными 7-ю битами элементов цвета, а также видна зависимость самих младших битов между собой. Внедрение сообщения в «чистую» картинку разрушает существующие зависимости, что очень легко выявляется наблюдателем. Если же картинка зашумлена (например, получена со сканера или фотокамеры), то определить вложение становиться намного сложнее. Таким образом, в качестве файлов-контейнеров для метода LSB рекомендуется использовать файлы, которые не были созданы на компьютере изначально. [3]

Преимущества метода:

1) размер файла-контейнера остается неизменным;

2) при замене одного бита в канале синего цвета внедрение невозможно заметить визуально;

3) возможность варьировать пропускную способность, изменяя количество заменяемых бит.

Недостатки метода:

1) метод неустойчив к обработке файла-контейнера.

4. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах

Блок-схема файла encode.py

Описание блок-схемы файла encode.py

1. Начало

2. Подключение библиотек

3. Инициализация переменных

4. Ввод пути хранения картинки

5. Ввод текста, который необходимо спрятать

6. Ввод пути сохранения картинки с зашифрованным текстом

7. Исходя из правильности ввода данных, выбирается тип действия

5.1 Корректно

5.1.1 Открыть картинку

5.1.2 Чтение заголовка картинки без перезаписи

5.1.3 Перебор символ за символом и запись в наименее значимый бит

5.1.4 Добавление разделителя

5.1.5 Сохранение полученного изображения

5.2 Некорректно

7.2.1 Завершение работы программы

8. Конец

Описание блок-схемы файла decode.py

1. Начало

2. Подключение библиотек

3. Инициализация переменных

4. Ввод пути хранения картинки

5. Исходя из правильности ввода данных, выбирается тип действия

5.1 Корректно

5.1.1 Открыть картинку

5.1.2 Чтение заголовка картинки без перезаписи

5.1.3 Перебор символ за символом, поиск разделителя и выбор значения, стоящего перед разделителем

5.1.4 Вывод оригинального текста на экран

5.1.5 Закрытие картинки

5.2 Некорректно

5.2.1 Завершение работы программы

6. Конец

Заключение

В ходе курсового проекта были изучены базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных, актуальность вопроса защиты персональных данных, метод цифровой стеганографии LSB (Least Significant Bit, наименьший значащий бит) и возможность его реализации на языке программирования Python. Была разработана программа реализующая сокрытие информации в наименее значимый бит растрового изображения формата BMP. Данная программа позволяет скрыть персональные данные и показала устойчивость к визуальным атакам.

Список литературы

1. Федеральный закон №152-ФЗ «О персональных данных» от 27 июля 2006 года

2. Методика определения актуальных угроз (ФСТЭК-2008)

3. Обзор современных алгоритмов стеганографии

4. Актуальность защиты персональных данных [Электронный ресурс]. - Режим доступа - http://www.ifru.ru/6701/ (дата обращения: 02.04.15)

5. ПП РФ от 1 ноября 2012 г. N 1119 “ Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных”

6. Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных (ФСТЭК России, 2008 год)

Приложение

encode.py

# -*- coding: utf-8 -*- # установка используемой кодировки

import sys # подключение библиотеки

import argparse # подключение библиотеки

from argparse import ArgumentParser # подключение библиотеки

# Константы

HEADER_SIZE = 54 # Размер заголовка в BMP

DELIMITER = "$" # объявление разделителя

# Ввод информации пользователем

TextToHide = raw_input("Input secret text: ") # переменная с шифруемым текстом

ImageFile = raw_input('Open bmp file: ') # переменная с путем для открытия картинки

StegImageFile = raw_input('Save secret bmp to: ') # переменная, в которой хранится путь, где будет сохранена зашифрованная картинка

class LSBEncrypter(object): # объявление класса

def __init__(self): # объявление конструктора

self.image_byte_counter = 0 # объявление переменной с начальным значением `0'

self.new_image_data = '' # объявление пустой переменной

self.original_image = '' # объявление пустой переменной

self.text_to_hide = '' # объявление пустой переменной

def open_image(self): # функция, открывающая картинку

with open(ImageFile, "rb") as f: # открытие файла с флагами rb

self.original_image = f.read() # чтение байтов картинки

def read_header(self): # функция, считывающая каждый байт по очереди

for x in range(0, HEADER_SIZE): # Цикл, перебирающий все байты

self.new_image_data += self.original_image[x] # присвоение пустой переменной значения текущего байта

self.image_byte_counter += 1 # инкремент

def hide_text_size(self): # функция, определяющая длину шифруемого текста

sz = len(self.text_to_hide) # переменная, содержащая длину шифруемого текста

s_sz = str(sz) # приведение переменной к типу string

s_sz += DELIMITER # s_sz равна величине текста, который скрываем c прибавлением разделителя

self.do_steg(s_sz) # вызов функции do_steg

# Сокрытие текста в картинку в самый незначимый бит

def do_steg(self, steg_text): # Функция, принимающая на вход 2 параметра

for ch in range(0, len(steg_text)): # Перебираем символ за символом в тексте, который прячем

current_char = steg_text[ch] # получаем текущий символ

current_char_binary = '{0:08b}'.format(ord(current_char)) # Получает двоичное значение текущего символа

# перебираем бит за битом в текущем бинарном символе

for bit in range(0, len(current_char_binary)):

new_byte_binary = ''

current_image_binary = '{0:08b}'.format(ord(self.original_image[self.image_byte_counter])); # # бинарное значение байтов оригинального текста

new_byte_binary = current_image_binary[:7] # #Возвращает двоичное значение исходного байта изображения

new_byte_binary += current_char_binary[bit] # Заменяет последний бит на наш бит

new_byte = chr(int(new_byte_binary, 2)) # Получаем значение в переменную new_byte

self.new_image_data += new_byte # Добавление нового байта в вывод

self.image_byte_counter += 1 # инкремент

def copy_rest(self): # функция, копирующая то, что осталось от файла

self.new_image_data += self.original_image[self.image_byte_counter:] # присвоение переменной значение остаточного текста

def close_file(self): # функция, сохраняющая полученную картинку

with open(StegImageFile, "wb") as out:

out.write(self.new_image_data) # сохранение картинки

def run(self, stega_text): # функция, выполняющая процесс сокрытия

self.text_to_hide = stega_text # присвоение переменной значения stega_text

self.open_image() # вызов функции, открывающую картинку

self.read_header() # вызов функции, считывающая байты заголовка, при этом не изменяя его

self.hide_text_size() # вызов функции, которая определяет длину шифруемого текста

self.do_steg(self.text_to_hide) # вызов функции, записывающая информацию в последний незначимый бит

self.copy_rest() # вызов функции, копирующей остаток картинки

self.close_file() # вызов функции, которая сохраняет зашифрованную картинку

def main(): # Объявление аргументов командной стоки

global TextToHide # Объявление глобальной переменной

stega_instance = LSBEncrypter() # присвоение переменной результат выполнения класса

stega_instance.run(TextToHide) # выполнении функции

print "Successfully finished hiding text" # вывод надписи при успешном выполнении функции.

if __name__ == '__main__': # конструктор, определяющий начало работы программы

main() # вызов main

decode.py

# -*- coding: utf-8 -*- # установка используемой кодировки

import argparse # подключение библиотеки

from argparse import ArgumentParser # подключение библиотеки

import binascii # подключение библиотеки

# Определение констант

HEADER_SIZE = 54 # Размер заговолка в BMP

DELIMITER = "$" # Разделитель

StegImageFile = raw_input('Path to secret image: ') # переменная, хранящая путь до картинки с зашифрованным текстом

class LSBDecrypter: # объявление класса

def __init__(self): # объявление конструктора

self.fh = open(StegImageFile, 'rb') # открытие картинки

self.number_of_chars_in_text = 0 # начальное значение длины зашифрованного текста

self.original_text = '' # переменная, хранящая скрытый текст

def read_header(self): # функция, считывающая каждый байт по # Читаем заголовок, текст в нем не закодирован

for i in range(0, HEADER_SIZE): # Цикл, перебирающий все байты

byte = self.fh.read(1) # присвоение байтов в переменную

def get_char(self): # объявление функции, получающая последний незначимых бит из текста 8 байт и ассемблирует байты из него

new_byte = '' # объявление переменной

for bit in range(0, 8): # объявление цикла

byte = self.fh.read(1) # чтение значения последнего незначимого бита

new_byte += str(ord(byte) & 0x01) # присвоение значение последнего незначимого бита

n = int(new_byte, 2) # приведение к типу integer

desteg_char = binascii.unhexlify('%x' % n) # конвертация бинарного вида в ASCII

return desteg_char # возврат зашифрованного текста

def get_text_size(self): # функция, получающая длину скрытого текста

curr_ch = self.get_char() # присвоение текущего символа

s_sz = '' # объявление переменной

while curr_ch != DELIMITER: # цикл, перебирающий значения, пока не будет найден разделитель

s_sz += curr_ch # присвоение текущего символа

curr_ch = self.get_char() # присвоение текущего символа

if (s_sz != ''): # Условие, если переменная не пустая

self.number_of_chars_in_text = int(s_sz) # тогда привести s_sz к типу integer и присвоить значение

def read_stega_text(self): # функция, читающая весь скрытый текс в изображении

decoded_chars = 0; # объявление переменной

while decoded_chars < self.number_of_chars_in_text: # объявление цикла

self.original_text += self.get_char() # присвоение переменной скрытого текста

decoded_chars += 1 # инкремент

def close_file(self): # функция, закрывающая картинку

self.fh.close(); # Закрытие картинки

def get_text(self): # функция, выполняющая извлечение скрытого текста

self.read_header() # вызов функции

self.get_text_size() # вызов функции

self.read_stega_text() # вызов функции

self.close_file() # вызов функции

return self.original_text # возвращает оригинальный текст

def main():# Объявление аргументов командной стоки

destag_insta = LSBDecrypter() # присвоение переменной результат выполнения класса

text = destag_insta.get_text() # присвоение переменной text значения оригинального текста

print "Successfully decoded, text is: {}".format(text) # при успешном выполнении вывод надписи, сообщающая корректное завершение.

if __name__ == '__main__': # конструктор, определяющий начало работы программы

main() # вызов main

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.