Вход

курсовая Разработка средств скрытой передачи сообщений

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 252678
Дата создания 28 ноября 2015
Страниц 69
Покупка готовых работ временно недоступна.
1 330руб.

Описание

Приложение А – Руководство к программе
Приложение В – Текст программы ...

Содержание

Введение 3
1 История стеганографии 5
2 Компьютерная стеганография 9
2.1 Основные понятия 9
2.2 Области применения компьютерной стеганографии 13
2.3 Виды стегоаналитических нападений 15
2.3.1 Статистические атаки на стегосистемы с аудио контейнерами 17
2.4 Классификация стеганографических методов защиты данных 20
3 Разработка средств для организации скрытой передачи информации в контейнере звукового типа 24
3.1 Требования, предъявляемые к стегосистемам при встраивании информации в аудио сигналы 24
3.2 Способы вставки информации в звуковые файлы 26
3.3 Обзор современных форматов звуковых файлов 33
3.3.1 Краткий экскурс по формату МР3 37
3.4 Выбор метода встраивания 41
3.5 Разработка метода встраивания 43
3.5.1 Структура МР3-файла 43
3.5.2 Формулировка метода вcтраивания на основе НЗБ 48
3.5.3 Реализация стеганографического метода 51
3.5.4 Результаты 53
Заключение 54
Список использованной литературы 56
Приложение А – Руководство к программе 57
Приложение В – Текст программы 60

Введение

......
Стеганография – это метод организации связи, который собственно скрывает само наличие связи. В отличие от криптографии, где неприятель точно может определить, является ли передаваемое сообщение зашифрованным текстом, методы стеганографии позволяют встраивать секретные сообщения в безобидные послания так, чтобы невозможно было заподозрить существование встроенного тайного послания.
Стеганография занимает свою нишу в обеспечении безопасности: она не заменяет, а дополняет криптографию. Сокрытие сообщения методами стеганографии значительно снижает вероятность обнаружения самого факта передачи сообщения. А если это сообщение к тому же зашифровано, то оно имеет еще один, дополнительный, уровень защиты [1].
В качестве контейнера может выступать практически любой объект: картины, письма, г азеты, аудио записи на магнитных носителях, слова, компьютерные файлы различных форматов. Методы сокрытия информации различаются в зависимости от типа используемого контейнера. В настоящее время широкое распространение получил раздел компьютерной стеганографии, которая в качестве контейнеров использует текстовые, графические, видео, аудио файлы.
Возникает вопрос: зачем нужна стеганография, если криптография справляется с основными задачами секретной передачи сообщений? Во-первых, во многих странах существует ряд ограничений на использование криптографических средств. Во-вторых, стеганография получила широкое применение в области защиты авторских прав.

Фрагмент работы для ознакомления

3.5.4 Результаты
В результате проделанной работы был разработан метод встраивания сообщений, довольно устойчивый к стегоанализу на основе анализа статистики. За основу был взят классический метод НЗБ.
В качестве контейнера использовался аудио файл формата МР3, наиболее распространенный формат звуковых файлов сегодня. В виду популярности данного формата его передача по незащищенным каналам связи, например, Интернет, вряд ли вызовет подозрения, так как сообщение можно скрыть, например, в современной известной песне, которую часто «качают» из Сети. В случае применения ряда других форматов, размер которых может в 20 и более раз превышать размер эквивалентного по разрешению МР3, это может навести на определённые подозрения.
Затем сообщение встраивается в контейнер звукового типа. Полученныйалгоритм встраивания сообщений в контейнеры звукового типа МР3 был программно реализован. Текст программы и руководство к ней находятся в приложениях Б и А соответственно.
Мне не известен метод обнаружения сообщений, встроенных данным способом, но, безусловно, рано или поздно, метод, эффективно обнаруживающий сообщения, сокрытые данным способом, будет найден. Отыскание эффективного алгоритма обнаружения скрытой информации, если он ещё не найден, является делом времени.
Алгоритм МР3 постепенно вытесняет формат МР3Pro, который был вкратце описан в данной работе, и который лишен некоторых недостатков МР3 и обеспечивает более хорошую компрессию звука.
Почему, в таком случае, этот формат ещё не получил повсеместного распространения? Вероятно, потому что алгоритм МР3 пока что обеспечивает достаточный уровень качества и компрессии звука. Так же с точки зрения встраивания сообщений в контейнеры звукового типа МР3Pro мало, что не меняется, по сравнению с обычным МР3.
Заключение
Все большее значение в настоящее время приобретает защита информации. Это относится и к государственным секретам, которые надо теперь скрывать не только от разведок многих стран мира, но и от внутренних врагов: агентов мирового терроризма и экстремизма. Это относится и к секретам фирм, и личным делам граждан. Последние изменения в законодательстве ряда стран мира, в том числе и США, показывают, как возросла популярность на правительственном уровне идеи всеобщей слежки.
Отстоять свободу личности, самостоятельность фирм, сохранить государственную тайну помогут, наряду с другими средствами, и стеганографические методы защиты информации. В развитии этих средств сделан пока лишь первый шаг, как в теоретическом, так и в практическом плане. Вот некоторые интересные задачи, решение которых поможет увеличить эффективность подобных средств:
– Необходима разработка математических моделей мультимедийных контейнеров: речи, изображений, видео. Большой поток исследований в этой области, связанный с разработкой алгоритмов сжатия информации, не привел пока к появлению конструктивных универсальных моделей;
– Важным представляется дальнейшее развитие методов теории распознавания образов. Особенно в свете появления таких новых математических инструментов, как нейронные сети, генетические алгоритмы, нечеткая логика.
– Совершенствование методов встраивания информации будет выполняться за счет применения сигналов с расширенным спектром, помехоустойчивых кодов.
Тем не менее, имеется и много нерешенных задач. В стегоанализе необходимо введение в рассмотрение новых критериев проверки статистических гипотез. Для тестирования качества последовательностей, генерируемых псевдослучайным генератором случайных чисел, в настоящее время известны десятки различных критериев. Возможно, многие из них найдут применение в стеганографии.
История показывает, что время прохождения технологии от ее зарождения до промышленного применения составляет обычно 20-25 лет. Если считать, что цифровая стеганография зародилась в середине 90-х годов прошлого века, то у нее все еще впереди.
В данном курсовом проекте были определены основные виды угроз, которыми оперирует теория компьютерной безопасности. Приводится подробная классификация угроз компьютерной безопасности, а также план анализа угроз безопасности, при выборе или реализации средств защиты.
Определены основные положения компьютерной стеганографии и рассмотрены основные области ее применения.
Также приведена классификация стеганографических методов защиты данных.
Был описан стеганографический метод «наименее значащих битов. В рамках проекта были так же описаны методы статистического стеганоанализа и написана программа, соответствующая всем пунктам задания. Программа позволяет довольно надежно скрывать информацию и может служить универсальным средством защиты информации.
Список использованной литературы
1. Материалы сайта www.stego.narod.ru
2. Материалы сайта www.torin.narod.ru/2000/november2000
3. Барсуков В. С., Романцов А. П. Компьютерная стеганография вчера, сегодня, завтра
4. Simmons G. J. The prison’s problem and the subliminal channel, Proc. Workshop on Communications Securities (Cryptos), 1984, 51-67
5. Ross J. Anderson. Stretching the limits of steganography
6. Материалы сайта www.citforum.ru/internet/securities/stegano.html
7. Грибунин В. Г., Оков. И. Н., Туринцев И. В. Цифровая стеганография. – М.: Издательство СОЛОН-Пресс, 2002
8. Материалы сайта www.aip.mk.ua/cplusp/all_96/ln96y
9. Материалы сайта www.ixbt.com
10. Материалы сайта www.symantec.com.ua/region/ru/resources/steganography
11. Материалы сайта www.bnti.ru/dbtexts/analmat/4/dvorankin
12. Материалы сайта www.kunegin.narod.ru/ref/mp3
13. Материалы сайта www.xaoslord.nm.ru/mp3.htm
14. Материалы сайта www.articles.org.ru/docum/mp3.php
Приложение А – Руководство к программе
На рисунке 8 показано основное окно программы после ее запуска.
Рисунок 8 – Основное окно программы.
При нажатии кнопки «Параметры» в меню окна можно выбрать, в каком бите мы хотим прятать наше письмо (по умолчанию выбран первый бит):
Рисунок 9 – Выбор битов, в которых будет скрываться сообщение.
При нажатии кнопки «О программе» в меню окна высвечивается следующая информация:
Рисунок 10 – Окно «О программе».
Порядок встраивания информации:
1. Выбираем контейнер кнопкой «Открыть» под надписью «Контейнер». Появится название файла, путь, где его найти, а также его размер.
2. После открытия контейнера необходимо выбрать файл-сообщение: кнопкой «Открыть» под надписью «Письмо». Опять же появится название файла, путь, и размер.
Рисунок 11 – Окно после открытия файлов.
3. Далее следует задать выходной файл (кнопкой «Спрятать в…»).
4. Будет активирована полоса загрузки внизу окна, показывающая степень выполнения заданной операции.
При завершении встраивания вся полоса загрузки будет закрашена в другой цвет (темно-синий), и мы получим звуковой файл со встроенным в него сообщением, но уже с другим именем, чтобы не «затирать» изначальный.
Замечание: В случае невозможности встраивания сообщения, например, при превышении длины файла-сообщения длины файла-контейнера, будет выведено соответствующее сообщение.
Порядок извлечения информации:
Выбираем заполненный контейнер (кнопкой «Извлечь из…») и операция извлечения происходит так же, как и операция встраивания, но только в обратном порядке.
Приложение В – Текст программы
/****************************************************************************
* файл "NastyaSteg.cpp"
*
****************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
/****************************************************************************
* файл "main.cpp"
*
****************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#include <classes.hpp>
#pragma hdrstop
#include "main.h"
#include "params.h"
#include "about.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
// информация о фрейме
typedef struct FrameHeaderInfo{
char version; // версия
char layer; // уровень
bool CRCExists;// флаг наличия КС
int BitRate; // битрейт
int sampleRate; // частота дискретизации
bool padding; // байт наличия слота расширения
char* frStart; // начало тела фрейма
int frSize; // размер тела фрейма
} FrameInfo;
// глобальные переменные программы
TFileStream* containerFile;
char* contBuf; // буфер в памяти для работы с МР3 файлом
int contFileSize; // размер контейнера в байтах
bool containerFileExists=false; // лог. переменная, свидетельствующая о факте открытия файла
TFileStream* letterFile;
char* letterBuf; // буфер в памяти для работы с письмом
int letterFileSize; // размер письма в байтах
bool letterFileExists=false; // лог. переменная, свидетельствующая о факте открытия файла
TFileStream* resultFile;
char* resultBufбкуыгдеИгаИуп; // буфер в памяти для помещения результатов работы
int resultFileSize; // размер результирующего файла в байтах
bool resultFileExists=false; // лог. переменная, свидетельствующая о факте открытия файла
int byteSteg=0; // байт письма спрятано
int bytesInFrameUsed=0; // байт фрейма использовано для скрытия
int bitSteg=0; // бит байта спрятано
// прототипы используемых функций
int mp3Steg();
int getFrameParams(char* frameHeader, FrameInfo* frInfo);
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ParamsClick(TObject *Sender)
{
ParamsForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::AboutClick(TObject *Sender)
{
aboutForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::openContainerBtnClick(TObject *Sender)
{
if (OpenContainerDialog->Execute())
{
// открытие файла
containerFile = new TFileStream(OpenContainerDialog->FileName,
fmOpenRead);
contFileSize=containerFile->Size;
// визуальное оформление
ContNameText->Caption="Имя файла: " + OpenContainerDialog->FileName;
MainForm->Hint=OpenContainerDialog->FileName;
ContSizeText->Caption = "Размер файла: "+IntToStr(contFileSize)
+ " байт";
// выделение области памяти под файл
contBuf=(char*)malloc(contFileSize);
// копирование файла в память
containerFile->Read(contBuf,contFileSize);
containerFileExists=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::openLetterBrnClick(TObject *Sender)
{
if (containerFileExists)
{
if (OpenLetterDialog->Execute())
{
// открытие файла
letterFile = new TFileStream(OpenLetterDialog->FileName,fmOpenRead);
letterFileSize=letterFile->Size;
if (letterFileSize*10 < contFileSize)
{
// визуальное оформление
LetterNameText->Caption="Имя файла:"+OpenLetterDialog->FileName;
MainForm->Hint=OpenContainerDialog->FileName;
LetterSizeText->Caption = "Размер файла: "+IntToStr(letterFileSize)
+ " байт";
// выделение области памяти под файл
letterBuf=(char*)malloc(letterFileSize);
// копирование файла в память
letterFile->Read(letterBuf,letterFileSize);
letterFileExists=true;
}
else
{
MessageBox(0,"Слишком большой файл письма","Ошибка",MB_OK | MB_ICONERROR);
letterFileExists=false;
}
}
}
else
{
MessageBox(0,"Откройте сначала файл-контейнер","Ошибка",MB_OK | MB_ICONERROR);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::stegBtnClick(TObject *Sender)
{
if (letterFileExists && containerFileExists )
{
if(SaveResultDialog->Execute())
{
resultFileSize=contFileSize; // размер полученного файла не должен превышать размера файла с пустым контейнером
// выделяем память
resultBuf=(char*)malloc(contFileSize);
// создание файла на диске
resultFile=new TFileStream(SaveResultDialog->FileName,fmCreate);
ProgressBar->StepBy(100);
resultFileExists=true;
mp3Steg();
}
}
else
{
MessageBox(0,"Не открыты файл-контейнер или файл письма","Ошибка",MB_OK | MB_ICONERROR);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::extractBtnClick(TObject *Sender)
{
if(OpenExtrFileDialog->Execute())
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
// закрытие файлов и освобождение памяти, выделенной под буферы
if (containerFileExists)
{
containerFile->Free();
free(contBuf);
}
if (letterFileExists)
{
letterFile->Free();
free(letterBuf);
}
if (resultFileExists)
{
resultFile->Free();
free(resultBuf);
}
}
//---------------------------------------------------------------------------
/***************************************************************************
* Функция mp3Steg(). Вставляет в mp3-файл скрываемую информацию
* (входных параметров нет, использует глобальные переменные)
*
****************************************************************************/
int mp3Steg()
{
char byte0,byte1,byte2,byte3; // заголовок фрейма
char* firstFr; // указатель на начало первого фрейма
bool firstFrFound=false; // найдено ли начало первого фрейма?
int frSize;
int j;
// сразу копируем контейнер в буфер результирующего файла
CopyMemory(resultBuf,contBuf,contFileSize);
// ищем начало первого фрейма
while (!firstFrFound)
{
byte0=*resultBuf;
byte1=*(resultBuf+1);
if( ((byte0 & 0xFF)==0xFF) && ((byte1 & 0xE0)==0xE0) ) // если найдены 11 единиц
{
firstFrFound=true;
firstFr=firstFr;
}
else
{
resultBuf++;
}
}
// получаем параметры фрейма
getFrameSize(resultBuf,(FrameInfo*)&frInfo);
while (byteSteg <= letterFileSize )
{
while(bitSteg<8) // цикл по битам байта письма
{
for(j=0;j< ParamsForm->bitsPerByte;j++) // цикл по указанным битам байта контейнера
{
if ((*letterBuf & (0x1 << bitSteg))!=0) // если записываем "1"
{
*frInfo.frStart|= 0x1 << ParamsForm->bits[j];
}
else
{
*frInfo.frStart&= 0xFF ^(0x1 << ParamsForm->bits[j]);
}
bitSteg++;
}
bytesInFrameUsed++;
frInfo.frStart++; // переходим к следующему байту контейнера
if (bytesInFrameUsed == frInfo.frSize) // если все байты фрейма использованы
{
getFrameParams(frInfo.frStart,&frInfo);
bytesInFrameUsed=0;
}
}
bitSteg=0;
byteSteg++; // переходим к следующему байту письма
letterBuf++;
}
resultFile->Write(resultBuf,resultFileSize);
return 0;
}
/***************************************************************************
* Функция void getFrameParams(char* frame). Возвращает указатель на структуру
* параметров фрейма
*
****************************************************************************/
int getFrameSize(char* frameHeader)
{
FrameInfo* frInf;
double MPEG1BitrLayer1[15]={0,32,64,96,128,160,192,224,256,288,320,352,384,416,448};
double MPEG1BitrLayer2[15]={0,32,48,56,64,80,96,112,128,160,192,224,256,320,384};
double MPEG1BitrLayer3[15]={0,32,40,48,56,64,80,96,112,128,160,192,224,256,320};
double MPEG225BitrLayer1[15]={0,32,48,56,64,80,96,112,128,144,160,176,192,224,256};
double MPEG225BitrLayer2[15]={0,8,16,24,32,40,48,56,64,80,96,112,128,144,160};
double MPEG225BitrLayer3[15]={0,8,16,24,32,40,48,56,64,80,96,112,128,144,160};
double MPEG1Smplr[3]={44100,48000,32000};
double MPEG2Smplr[3]={22050,24000,16000};
double MPEG25Smplr[3]={11025,12000,8000};
char byte0,byte1,byte2,byte3;
byte0=*frameHeader;
frameHeader++;
byte1=*frameHeader;
frameHeader++;
byte2=*frameHeader;
frameHeader++;
byte3=*frameHeader;
frameHeader++;
// получение основных параметров фрейма
frInf->version=(byte1 & 0x18) >> 3; // версия: 0 = mpеg 2.5
// 2 = mpеg 2
// 3 = mpеg 1
frInf->layer=(byte1 & 0x06) >> 1; // уровень : 1 = layer III
// 2 = layer II
// 3 = layer I
frInf->CRCExists=!(byte1 & 0x01); // флаг наличия контрольной суммы
// получение битовой скорости
if (frInf->version == 3) // MPEG1
{
if (frInf->layer == 1) // layer III
{
frInf->BitRate=MPEG1BitrLayer3[(byte2 & 0xF0) >> 4 ];
}
if (frInf->layer == 2) // layer II
{
frInf->BitRate=MPEG1BitrLayer2[(byte2 & 0xF0) >> 4 ];
}
if (frInf->layer == 3) // layer I
{
frInf->BitRate=MPEG1BitrLayer1[(byte2 & 0xF0) >> 4 ];
}
}
else // MPEG2 или MPEG2.5
{
if (frInf->layer == 1) // layer III
{
frInf->BitRate=MPEG225BitrLayer3[(byte2 & 0xF0) >> 4 ];
}
if (frInf->layer == 2) // layer II
{

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

14 наименований
Очень похожие работы
Найти ещё больше
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00347
© Рефератбанк, 2002 - 2024