Один из известных методов стегоанализа - метод визуального анализа битовых срезов. Основная идея метода заключается в сравнении исходного звукового файла в целом с его битовыми срезами.
Для метода визуального анализа битовых срезов большое значение имеет то, как именно осуществляется запись скрываемой информации. Если она записывается в подряд идущие биты, то факт скрытия сообщения может быть установлен с большой вероятностью. Но если распределить скрываемую информацию по всему контейнеру, то факт скрытия может быть установлен с малой вероятностью.
Одним из оригинальных методов статистического стегоанализа является метод RS, впервые опубликованным в 2001 г. коллективом ученых под руководством Дж. Фридрих. Сокращение в названии расшифровывается как Regular-Singular, то есть «регулярно-сингулярный».
Суть метода состоит в следующем. Весь звуковой файл разбивается на группы по n семплов G(x1,x2,…,xn), где n четно, например по 2 семплов, находящихся рядом. Для группы семплов определяется функция регулярности или «гладкости» f(G), в качестве такой функции можно выбрать, например, дисперсию значений внутри группы, либо просто сумму перепадов значений смежных семплов. Под значением семпла понимаем целое число от 0 до 255.

Функция F(x) называется флиппингом и имеет свойство F(F(x)) = x. Определим две функции флиппинга – F1, соответствует инверсии младшего бита семпла, и F2, представляющая собой инверсию с переносом в старший бит (прибавление единицы).
F1: 0 ↔ 1, 2 ↔ 3, …, 254 ↔ 255
F-1: 255 ↔ 0, 1 ↔ 2, 3 ↔ 4, …,253 ↔ 254, 255 ↔ 0
При применении флиппинга к группе получаем преобразованную группу пикселов. Далее, поделим все группы семплов на классы следующим образом:
- Регулярные группы: G ∈ R ⇔ f(F(G)) > f(G)
- Сингулярные группы: G ∈ S ⇔ f(F(G)) < f(G)
- Неиспользуемые группы: G ∈ U ⇔ f(F(G)) = f(G)
В дальнейшем нас будет интересовать соотношение между группами в Wav-файле. Определим количество групп попавших в тот или иной класс как RM, SM, UM и R-M, S-M, U-M, где индексы M и - М означают соответственно применение F1 и F-1 для получения распределения. Наша цель – определить каким образом внедрение сообщения методом LSB будет влиять на вышеописанную статистику групп семплов.
Метод основывается на статистическом предположении, что для естественного аудиосигнала, другими словами, незаполненного контейнера, характерно следующее:
RM ≅ R−M и SM ≅ S−M (2)
Предположение основано на том, что применение F-1 даст то же распределение, что и F1 на аудио-файле, значения семплов которого сдвинуты на единицу. Для обыкновенного аудио-файла соотношение между группами не должно существенно меняться. Значительное расхождение между значениями свидетельствует о применении LSB-стеганографии для младших бит аудио-файла.
Рассмотрим изменения младших бит аудио-файла при 100% перезаписи их битами сообщения. Внедрение случайного сообщения длиной, равной размеру изображения, приведет к тому, что 50% младших бит, будут инвертированы. Это, в свою очередь сведет к нулю разность между значениями RM и SM. Однако на R-M и S-M внедрение сообщения будет влиять прямо противоположно, и разность этих величин будет пропорциональна степени заполненности контейнера, иными словами длине сообщения.
ЗАКЛЮЧЕНИЕ
В рамках настоящей курсовой работы предложен алгоритм, реализующий метод замены наименее значащих битов для файлов с расширением WAV. Была изучена предметная область, сформулирована постановка задачи, рассмотрен формат WAV файла, проанализирован метод наименее значимого бита для звуковых файлов. На основе анализа закономерностей изменения младших битов разработан алгоритм преобразования секретной информации, сохраняемой в младших битах.
С помощью программной среды Microsoft Visual Studio 2010 C++ был реализован рассмотренный алгоритм. Получены звуковые файлы, отображающие полученные преобразования.
Метод замены наименее значащих бит небольшой сложности, тем не менее, способен сохранить в тайне факт передачи информации, позволяет передавать достаточно большие сообщения.
Сама стеганография сейчас занимает свою нишу в обеспечении безопасности: она не заменяет, а дополняет криптографию. Сокрытие сообщения методами стеганографии значительно снижает вероятность обнаружения самого факта передачи сообщения. А если это сообщение к тому же зашифровано, то оно имеет еще один, дополнительный, уровень защиты. Также очень перспективно использование стеганографии в тех странах, где существуют законы, ограничивающие применение криптографии, как еще одного способа ограничить доступ к файлам.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
, , Туринцев стеганография. – М.: Солон-Пресс, 2002. – 272 с. , Пузыренко стеганография. Теория и практика. — К.: МК-Пресс, 2006. — 288 с, ил. , Фролов для Windows. – М.: Издательство Диалог-МИФИ, 1995 г.- 336 с.: ил. , , и др. Электроакустика и звуковое вещание: Учебное пособие для вузов. М.: Горячая линия – Телеком, Радио и связь, 2007. – 872 с.ПРИЛОЖЕНИЕ А. ПРОГРАММНЫЙ КОД
#include <iostream>
#include <fstream>
#include <stdio. h>
#include <tbyte. h>
#include <Windows. h>
#include <conio. h>
#include <string. h>
#include <ctime>
#include <cstdlib>
using namespace std;
struct WAVHEADER// Структура, описывающая заголовок WAV файла.
{
byte chunkId[4];//Содержит символы "RIFF" в ASCII кодировке
unsigned long chunkSize; //это размер файла
byte format[4];// Содержит символы "WAVE"
byte subchunk1Id[4]; // Содержит символы "fmt "
unsigned long subchunk1Size;// Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned short audioFormat;// Формат сжатия. Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short numChannels;// Количество каналов. Моно = 1, Стерео = 2 и т. д.
unsigned long sampleRate; // Частота дискретизации. 8000 Гц, 44100 Гц и т. д.
unsigned long byteRate;// sampleRate * numChannels * bitsPerSample/8
unsigned short blockAlign;// Количество байт для одного семпла, включая все каналы.
unsigned short bitsPerSample;// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т. д.
byte subchunk2Id[4];// Содержит символы "data"
unsigned long subchunk2Size;// Количество байт в области данных.
// Далее следуют непосредственно Wav данные.
};
int power(int pow, int val)//функция вычисляет число val в степени pow
{
int value=1;
for(int i=0;i<pow;i++)
value*=val;
return value;
}
bool CheckWavFile(WAVHEADER header)//функция проверяет является ли файл wav-файлом и подходит ли он нам для работы
{
bool flag=true;
if ((header. chunkId[0] != 'R')&&(header. chunkId[1] != 'I')&&(header. chunkId[2] != 'F')&&(header. chunkId[3] != 'F')) //Если RIFF не получили, то значит какую то залепу открыли
{
cout<<"File has no RIFF - formated"<<endl;
flag=false;
}
if ((header. format[0] != 'W')&&(header. format[1] != 'A')&&(header. format[2] != 'V')&&(header. format[3] != 'E')) //Проверим
{
cout<<"File has no section WAVE"<<endl;
flag=false;
}
if ((bchunk1Id[0] != 'f')&&(bchunk1Id[1] != 'm')&&(bchunk1Id[2] != 't')&&(bchunk1Id[3] != ' ')) //Если секция fmt - не найдена
{
cout<<"File has no section Format(fmt) "<<endl;
flag=false;
}
if (header. audioFormat!= 1) //Если таг <>1 то значит есть компрессия файла, ее разбирать мы не будем, работаем не с жатыми данными
{
cout<<"File has a compression"<<endl;
flag=false;
}
if ((bchunk2Id[0] != 'd')&&(bchunk2Id[1] != 'a')&&(bchunk2Id[2] != 't')&&(bchunk2Id[3] != 'a')) //Ну а теперь сама data - это то, над чем мы будем работать
{
cout<<"File has no section data"<<endl;
flag=false;
}
return flag;
}
int *ByteToBinary (byte val)// Разбивает исходный Байт на биты. Возвращает массив из восьми элементов. Каждый Nй элемент соответствует Nму биту.
{
int *mass = new int[8];
int t, i;
for (t = 128, i = 0; t > 0; t /= 2, i++)
{
if ((val & t) != 0) mass[i] = 1;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


