6.2 Описание руководства пользователя
Данный программный продукт создан для сокрытия конфиденциальной информации в графических файлах.
Перед началом работы программа должна быть установлена на компьютере пользователей, участвующих в файловом обмене. После того как программа установлена, можно начинать работу. Для того чтобы запустить программу вам необходимо два раза кликнуть левой клавишей по значку программы(PStenografia.exe). Откроется форма, на которой располагаются кнопки управления программой. При нажатии пункта контекстного меню «Текст->Загрузить текст» открывается диалоговое окно с возможностью открытия текстового файла. При нажатии пункта контекстного меню «Текст->Сохранить текст» открывается диалоговое окно с возможностью сохранения текстового файла.
Также на форме расположены пункта контекстного меню « Изображение->Загрузить изображение» происходит открытие диалогового окна с возможностью выбора графического файла в формате BMP. После того как выбрана информация для сокрытия и соответствующее количеству данных изображение, а также заполнено поле «Ключ» необходимо нажать в пункте контекстного меню «Изображение->Вшить информацию» происходит сокрытие текстовой информации в графическое изображение. Далее сохраняем его при помощи нажатия кнопки «Изображение->Сохранить изображение» происходит открытие диалогового окна с возможностью сохранения изображения в одном из доступных форматов.
В нижнем меню формы отображается информация о количестве набранных символов, максимальном количестве символов для открытого изображения и полный путь до файла изображения.
Также в контекстном меню можно получить информацию «Об авторе» и «О программе», нажав команду «Справка» Для выхода из программы вы можете нажать на крестик, в верхнем правом углу, либо выбрать команду «Выход» в контекстном меню «Файл».
ЗАКЛЮЧЕНИЕ
Все большее значение в нашем быстро изменяющемся мире приобретает защита информации. Это относится и к государственным секретам, которые надо теперь скрывать не только от разведок известно каких стран мира, но и от внутренних врагов – агентов мирового терроризма и экстремизма. Это относится и к секретам фирм, и личным делам граждан. Последние изменения в законодательстве ряда стран, в том числе и США, показывают популярность на правительственном уровне идеи всеобщей слежки и непротивление ей граждан.
Отстоять свободу личности, самостоятельность фирмы, сохранить государственную тайну помогут, наряду с другими средствами, и стеганографические методы защиты информации. В развитии этих средств сделан пока лишь первый шаг, как в теоретическом, так и в практическом плане. Перечислим некоторые интересные задачи, решение которых поможет увеличить эффективность подобных средств.
Прежде всего, необходима разработка математических моделей мультимедийных контейнеров: речи, изображений, видео. Большой поток исследований в этой области, связанный с разработкой алгоритмов сжатия информации, не привел пока к появлению конструктивных универсальных моделей.
Важным представляется дальнейшее развитие методов теории распознавания образов. Особенно в свете появления таких новых математических инструментов, как нейронные сети, генетические алгоритмы, нечеткая логика.
Совершенствование методов встраивания информации будет выполняться за счет применения сигналов с расширенным спектром, помехоустойчивых кодов.
В стегоанализе необходимо введение в рассмотрение иных, чем всеми любимый хи-квадрат, критериев проверки статистических гипотез. Для тестирования качества последовательностей, генерируемых псевдослучайным генератором случайных чисел, в настоящее время известны десятки различных критериев. Возможно, многие из них найдут применение в стеганографии.
История показывает, что время прохождения технологии от ее зарождения до промышленного применения составляет обычно 20-25 лет. Если считать, что цифровая стеганография зародилась в середине 90-х годов прошлого века, то у нее все еще впереди.
Список литературы
1)В. Г. Грибунин, И. Н. Оков, И. В. Туринцев "Цифровая стеганография". Издательство СОЛОН-пресс 2002 год.
2) Жельников В. Криптография от папируса до компьютера.- М., 1996.
2) Карасев Андрей. Компьютерная тайнопись – графика и звук приобретают подтекст. – Мир ПК. - № 1/97. – С.132-134.
3) Шеннон К. Работы по теории информации и кибернетики / Пер. с англ. –М.: Иностранная литература, 1963. – 829с.
4) Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии.–М.: Гелиус АРВ, 2001.– 480 с.
5) http://www.cl.cam.ac.uk/~fapp2/steganography/
6) http://www.demcom.com/english/steganos/
7) http://eprint.iacr.org/2005/305
8) http://www.topreferats.ru/comp/6636.html
9) http://www.signumtech.com
ПРИЛОЖЕНИЕ А
unit UStenograf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ExtDlgs, Menus, ComCtrls, XPMan;
type
TfrmStenograf = class(TForm)
Memo1: TMemo;
Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
Edit1: TEdit;
Label2: TLabel;
SavePictureDialog1: TSavePictureDialog;
MainMenu1: TMainMenu;
PopupMenu1: TPopupMenu;
PopupMenu2: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
XPManifest1: TXPManifest;
procedure N18Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure N26Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N30Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N38Click(Sender: TObject);
procedure N39Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmStenograf: TfrmStenograf;
X, Y: Word;
implementation
{$R *.dfm}
function GetStart(Str: String): Word; //задать начальное значение генератора
Var i: byte;
Res: Word;
begin
Res:= 0;
for i:= 1 to length(Str) do begin
Res:= Res xor (Ord(Str[i]) shl 1); //Вычисляет значение простой хеш-функции (xor + циклический сдвиг) для блока данных.
end;
Result:= (Res mod frmStenograf.Image1.Width)+1;
end;
procedure TfrmStenograf.N18Click(Sender: TObject);
begin
frmStenograf.Close;
end;
procedure TfrmStenograf.N20Click(Sender: TObject);
begin
If OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TfrmStenograf.N21Click(Sender: TObject);
begin
If SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
end;
procedure TfrmStenograf.N25Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
procedure TfrmStenograf.N26Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
procedure TfrmStenograf.N27Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
procedure TfrmStenograf.N30Click(Sender: TObject);
begin
Memo1.SelectAll;
end;
procedure TfrmStenograf.N32Click(Sender: TObject); //загрузка картинки
Var i, j: Word;
a: TColor;
r, g, b: byte;
begin
if OpenPictureDialog1.Execute then
with Image1 do begin
Visible:= False;
Picture.LoadFromFile(OpenPictureDialog1.FileName);
if Picture.Bitmap.PixelFormat < pf16bit then
ShowMessage('Требуется большая глубина цвета')
else
for i:= 0 to Width-1 do
for j:= 0 to Height-1 do begin
a:= Canvas.Pixels[i, j];
r:= GetRValue(a);
if r = 255 then r:= 254;
g:= GetGValue(a);
if g = 255 then g:= 254;
b:= GetBValue(a);
if b = 255 then b:= 254;
Canvas.Pixels[i, j]:= RGB(r, g, b);
end;
Visible:= True;
Memo1.MaxLength:= Image1.Height-5;
end;
end;
procedure TfrmStenograf.N33Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TfrmStenograf.N38Click(Sender: TObject); //вшить информацию в рисунок
Type TColoreArr= array[1..9] of byte;
Var i: Word;
r, g, b: Integer;
j: byte;
Str: String;
RedArr, GreenArr, BlueArr: TColoreArr;
a: TColor;
begin
X:= GetStart(Edit1.Text);
Y:= 2;
Str:= Memo1.Text;
if length(Str) > Image1.Height-5 then ShowMessage('Маленькая картинка') else begin
i:= 1;
with Image1.Canvas do begin
while length(Str) mod 3 <> 0 do Str:= Str + ' ';
Pixels[x, y]:= RGB(length(Str) div 65536, (length(Str) mod 65536) div 255, (length(Str) mod 65536) mod 255); //записали кол-во символов
repeat
X:= 2 + (106*X+1230) mod (Image1.Width-3); //генератор псевдослучайной последовательности
Y:= Y + 3; //через три пикселя, для обеспечения размытия
//размоем точки методотом луча
a:= Pixels[X-1, Y];
RedArr[1]:= GetRValue(a);
GreenArr[1]:= GetGValue(a);
BlueArr[1]:= GetBValue(a);
a:= Pixels[X-1, Y+1];
RedArr[2]:= GetRValue(a);
GreenArr[2]:= GetGValue(a);
BlueArr[2]:= GetBValue(a);
a:= Pixels[X, Y+1];
RedArr[3]:= GetRValue(a);
GreenArr[3]:= GetGValue(a);
BlueArr[3]:= GetBValue(a);
a:= Pixels[X+1, Y+1];
RedArr[4]:= GetRValue(a);
GreenArr[4]:= GetGValue(a);
BlueArr[4]:= GetBValue(a);
a:= Pixels[X+1, Y];
RedArr[5]:= GetRValue(a);
GreenArr[5]:= GetGValue(a);
BlueArr[5]:= GetBValue(a);
a:= Pixels[X+1, Y-1];
RedArr[6]:= GetRValue(a);
GreenArr[6]:= GetGValue(a);
BlueArr[6]:= GetBValue(a);
a:= Pixels[X, Y-1];
RedArr[7]:= GetRValue(a);
GreenArr[7]:= GetGValue(a);