Защита информации от несанкционированного доступа

Автор работы: Пользователь скрыл имя, 08 Ноября 2011 в 19:02, курсовая работа

Описание

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

Содержание

АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А

Работа состоит из  1 файл

Защита информации от несанкционированного доступа.doc

— 766.50 Кб (Скачать документ)

     Программа работает под управлением ОС Windows 95/98/ME и требует правильной инсталляции. После инсталляции программу можно запустить из меню «Пуск» либо из командной строки эмуляции MS-DOS.

     Командная строка имеет следующий вид:

     Hazard.exe [/D] [путь к файлу [путь к файлу […]]]

     /D – дешифрование

     Чтобы запустить программу в режиме шифрования или дешифрования из графической  оболочки Windows нужно воспользоваться соответствующими ярлыками из меню «Программы».

     Чтобы добавить файлы в список шифрования/дешифрования можно воспользоваться соответствующей кнопкой на главной панели программы, либо «перетащить» их из окна проводника Windows.

     Чтобы выбрать алгоритм шифрования нужно  нажать кнопку «Настройки». Появится окно со списками поддерживаемых и применяющихся методов и полем ввода ключа.

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

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

     При дешифровании следует учитывать, что программа расшифровывает файлы только с расширением .crf.

 

      Заключение 

     В результате курсовой работы была разработана  первая версия программы, осуществляющей шифрование информации. В дальнейшем предполагается разработка и усовершенствование комплекса программ, обеспечивающих защиту информации от несанкционированного доступа. В процессе разработки были закреплены навыки шифрования информации по ГОСТ 28147-89 и программирования на ассемблере.

 

      Библиографический список 

  1. Конспект  лекций по курсу «Кодирование и защита информации»
  2. Андрей Винокуров. «Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86»
  3. Михаил Гук. «Процессоры Pentium II, Pentium Pro и просто Pentium», Санкт-Петербург «Питер», 1999 г.

 

       Приложение А 
 

     program Hazard; 

     uses

     Windows,

     Messages,

     SysUtils,

     Forms,

     TestUnit in 'TestUnit.pas' {MainForm},

     CodingUnit in 'CodingUnit.pas',

     OptionsUnit in 'OptionsUnit.pas' {OptionsForm},

     K1 in 'K1.pas',

     K2 in 'K2.pas',

     K3 in 'K3.pas',

     ProgressUnit in 'ProgressUnit.pas' {ProgressForm},

     GOST in 'GOST.pas'; 

     {$R *.RES} 

     {$R Laynik.res} 

     function AlreadyRunning: boolean;

     begin

     Result:=False;

     if FindWindow('TMainForm','Кодирование')<>0 then

     Result:=True;

     end; 

     begin

     Decode:=false;

     If not AlreadyRunning then

     begin

     Application.Initialize;

     Application.Title := '[LG] Hazard';

     Application.CreateForm(TMainForm, MainForm);

     Application.CreateForm(TOptionsForm, OptionsForm);

     Application.CreateForm(TProgressForm, ProgressForm);

     MainForm.DoCommandLine(String(system.CmdLine));

     Application.Run;

     end else

     begin

     MessageBox(0,'Приложение уже запущено','Ошибка',MB_ICONSTOP+MB_OK);

     end

     end. 

     unit K1; 

     interface

     uses CodingTools; 

     function Coding_K1(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     function DeCoding_K1(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer; 

     implementation 

     const

     FShTable: TConvertTable64 =

     (57,49,41,33,25,17, 9, 1,59,51,

     43,35,27,19,11, 3,61,53,45,37,

     29,21,13, 5,63,55,47,39,31,23,

     15, 7,56,48,40,32,24,16, 8, 0,

     58,50,42,34,26,18,10, 2,60,52,

     44,36,28,20,12, 4,62,54,46,38,

     30,22,14, 6); 

     LShTable: TConvertTable64 =

     (39, 7,47,15,55,23,63,31,38,6,

     46,14,54,22,62,30,37, 5,45,13,

     53,21,61,29,36, 4,44,12,52,20,

     60,28,35, 3,43,11,51,19,59,27,

     34, 2,42,10,50,18,58,26,33, 1,

     41, 9,49,17,57,25,32, 0,40, 8,

     48,16,56,24); 

     procedure K1Coding64bits(A: word64; var R: word64; K1:word64);

     begin

     convert(A,FShTable,R);

     asm

     push esi

     mov esi,DWORD[R]

     mov eax,DWORD[K1]

     xor [esi],eax

     add esi,4

     mov eax,DWORD[K1+4]

     xor [esi],eax

     pop esi

     end;

     end; 

     procedure K1DeCoding64bits(A: word64; var R: word64; K1:word64);

     begin

     asm

     mov eax,DWORD[K1]

     xor DWORD[A],eax

     mov eax,DWORD[K1+4]

     xor DWORD[A+4],eax

     end;

     convert(A,LShTable,R);

     end; 

     function Coding_K1(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j,l:integer;

     a,r: ^word64;

     k: word64;

     begin

     for i:=0 to 7 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     l:=Size div 8;

     for i:=1 to Param.WayCount do

     begin

     for j:=0 to l-1 do

     begin

     a:=Pointer(LongWord(Buf)+j*8);

     r:=a;

     K1Coding64bits(A^,R^,K);

     end;

     end;

     result:=0;

     end;

     function DeCoding_K1(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j,l:integer;

     a,r:^word64;

     k: word64;

     begin

     for i:=0 to 7 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     l:=Size div 8;

     for i:=1 to Param.WayCount do

     begin

     for j:=0 to l-1 do

     begin

     a:=Pointer(LongWord(Buf)+j*8);

     r:=a;

     K1DeCoding64bits(A^,R^,K);

     end;

     end;

     result:=0;

     end; 

     end. 

     unit K2; 

     interface

     uses CodingTools; 

     function Coding_K2(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     function DeCoding_K2(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer; 

     implementation 

     const

     FShTable: TConvertTable64 =

     (57,49,41,33,25,17, 9, 1,59,51,

     43,35,27,19,11, 3,61,53,45,37,

     29,21,13, 5,63,55,47,39,31,23,

     15, 7,56,48,40,32,24,16, 8, 0,

     58,50,42,34,26,18,10, 2,60,52,

     44,36,28,20,12, 4,62,54,46,38,

     30,22,14, 6); 

     LShTable: TConvertTable64 =

     (39, 7,47,15,55,23,63,31,38,6,

     46,14,54,22,62,30,37, 5,45,13,

     53,21,61,29,36, 4,44,12,52,20,

     60,28,35, 3,43,11,51,19,59,27,

     34, 2,42,10,50,18,58,26,33, 1,

     41, 9,49,17,57,25,32, 0,40, 8,

     48,16,56,24);

     procedure K2Coding64bits(A: word64; var R: word64; B: byte);

     begin

     convert(A,FShTable,R);

     asm

     push esi

     mov esi,DWORD[R]

     mov cl,[b]

     ror dword[esi],cl

     add esi,4

     mov cl,[b]

     ror dword[esi],cl

     pop esi

     end;

     end; 

     procedure K2DeCoding64bits(A: word64; var R: word64; B: Byte);

     begin

     asm

     mov cl,[b]

     rol DWORD[A],cl

     mov cl,[b]

     rol DWORD[A+4],cl

     end;

     convert(A,LShTable,R);

     end;

     function Coding_K2(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j,l:integer;

     a,r: ^word64;

     k: word64;

     b: byte;

     begin

     b:=0;

     for i:=0 to 7 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     for i:=0 to 7 do b:=b xor K.v8[i];

     l:=Size div 8;

     for i:=1 to Param.WayCount do

     begin

     for j:=0 to l-1 do

Информация о работе Защита информации от несанкционированного доступа