Криптографические алгоритмы защиты информации Blowfish

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

Краткое описание

Стремительное развитие средств вычислительной техники и открытых сетей передачи данных обусловило их широкое распространение в повседневной жизни и предпринимательской деятельности. Мощные вычислительные возможности и оперативность передачи информации не только оказали большое влияние на принципы ведения бизнеса, сложившиеся в большинстве традиционных отраслей, но и открыли новые направления развития предпринимательской деятельности. В современных условиях автоматизация банковской деятельности и управления предприятиями является «modus vivendi», а такие слова, как «Internet-banking», «e-commerce» и «smart-cards», уже не вызывают всеобщего удивления и жарких дебатов.
Однако последние достижения человеческой мысли в области компьютерных технологий связаны с появлением не только персональных компьютеров, сетей передачи данных и электронных денег, но и таких понятий, как хакер, информационное оружие, компьютерные вирусы и т.п. Оказывается, что под информационной безопасностью подразумевается одно из ведущих направлений развития информационных технологий - круг задач, решаемых в этой области, постоянно расширяется как в количественном, так и в качественном отношении.

Оглавление

Введение 4
1 Алгоритм Blowfish 29
1.1 Сеть Фейстеля 30
1.2 Описание алгоритма 33
1.3 Стойкость алгоритма 36
2 Криптографические системы 6
2.1 Основные понятия 6
2.2 Требования к криптографическим системам 7
2.3 Симметричные криптосистемы 9
2.4 Ассиметричные криптосистемы 11
2.5 Математические основы 15
3 Выбор оптимального блочного алгоритма шифрования 19
3.1 Сравнительная характеристика алгоритмов 19
3.2 Криптостойкость рассмотренных алгоритмов 25
4 Описание работы программы 38
Заключение 41
Список используемых источников 42
Приложение А Исходный код алгоритма Blowfish 43

Файлы: 1 файл

курсовая blowfish.docx

— 446.14 Кб (Скачать)

Рисунок 9 - Диалог открытия файла для шифрования

Рисунок 10 - Диалог открытия файла для дешифрования

 

ЗАКЛЮЧЕНИЕ

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

     Их  сравнение производилось по следующим  критериям:

  • общие параметры (размер ключа, длина блока, используемые операции, количество раундов);
  • скоростные характеристики;
  • юридические аспекты применения;
  • целесообразность применения для создания собственного программного продукта.

    Под эти требования наилучшим образом подошел алгоритм  Blowfish.

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

 

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

  1. Петров  А.А. Компьютерная безопасность. Криптографические  методы защиты. – М.: ДМК, 2000. - 448 c.
  2. Мао, Венбо Современная криптография: теория и практика.: Пер. с англ. – М.: Издательск дом «Вильямс», 2005. – 768 с.
  3. Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. - М.: Горячая линия - Телеком, 2001. - 122 с.
  4. Брюс Шнайер Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. –М.: Триумф, 2002. - 816 с.
  5. Панасенко С.П.  Алгоритмы шифрования. Специальный справочник. – СПб.: БХВ-Петербург, 2009. -576 с.
  6. Симметричные криптосистемы - Электрон. данные.- Режим доступа:

    http://ru.wikipedia.org/wiki/Симметричные_криптосистемы. - Загл. с экрана.

  1. Криптосистема с открытым ключом - Электрон. данные.- Режим доступа:http://ru.wikipedia.org/wiki/Криптографическая_система_с_открытым_ключом. - Загл. с экрана.
  2. Выбор оптимального блочного алгоритма шифрования трафика в информационных сетях ВУЗа- Электрон. данные.- Режим доступа:

     http://systech.miem.edu.ru/2004/n2/Kulikov2.htm. - Загл. с экрана.

  1. IDEA Режим доступа: http://ru.wikipedia.org/wiki/IDEA . - Загл. с экрана.
  2. Малюк А.А. “Информационная безопасность: концептуальные и методологические основы защиты информации”, 2004

Приложение А

Исходный  код алгоритма Blowfish

unit Blowunit;

interface

{Declare the compiler defines}

{$I CRYPTDEF.INC}

{------Changeable compiler switches-----------------------------------}

{$A+   Word align variables }

{$F+   Force Far calls }

{$K+   Use smart callbacks

{$N+   Allow coprocessor instructions }

{$P+   Open parameters enabled }

{$S+   Stack checking }

{$T-   @ operator is NOT typed }

{$IFDEF DELPHI}

{$U-   Non Pentium safe FDIV }

{$Z-   No automatic word-sized enumerations}

{$ENDIF}

{---------------------------------------------------------------------}

uses SysUtils, Cryptcon, Classes, Controls;

type

 twoAword = record

  Xl: aword;

  Xr: aword;

 end;

 PtwoAword = ^twoAword;

 Const

  bf_N = 16;

 type

 Pbf_P = ^Tbf_PArray;

 Tbf_PArray = array[0..(bf_N + 1)] of UWORD_32bits;

 Pbf_S = ^Tbf_SArray;

 Tbf_SArray = array[0..3, 0..255] of UWORD_32bits;

TBlowFish = class(TCrypto)

Private

 { Private declarations }

Private

  Fpbf_P: Pbf_P;    {Pointer to bf_P array}

  Fpbf_S: Pbf_S;    {Pointer to bf_S array}

  FpXl: Paword;     {Lower 32 bits of Active Encipher Data}

  FpXr: Paword;     {Upper 32 bits of Active Encipher Data}

  Function bf_F(x: Paword): aword;

  Procedure InitArray;

  Procedure ROUND(a, b: Paword; n: BYTE);

  Procedure BF_Initialize;           {Computation of the SubKeys}

  Procedure BF_Encipher;             {Enciphers 64bit block}

  Procedure BF_Decipher;             {Deciphers 64bit block}

  Procedure EncipherBLOCK;override; {Enciphers Block, calls BF_Encipher}

  Procedure DecipherBLOCK;override; {Deciphers Block, calls BF_Decipher}

  Procedure SetKeys;override;       {Used to set SubKeys}

 protected

    { Protected declarations }

 public

    { Public declarations }

  constructor Create(Owner: TComponent);override;

  destructor  Destroy;override;

end;{TBlowFish} 

 procedure Register;{register the component to the Delphi toolbar}

 Const

{bf_N = 16;}

KEYBYTES = 8;

MAXKEYBYTES = 56;

BF_MAXKEYLENGTH = 65;

BF_MINKEYLENGTH = 8; 

 bf_P: array[0..(bf_N + 1)] of UWORD_32bits = (

  $243f6a88, $85a308d3, $13198a2e, $03707344,

  $a4093822, $299f31d0, $082efa98, $ec4e6c89,

  $452821e6, $38d01377, $be5466cf, $34e90c6c,

  $c0ac29b7, $c97c50dd, $3f84d5b5, $b5470917,

  $9216d5d9, $8979fb1b);

{Initial Random SubKey boxes, set to Pi}

 bf_S: array[0..3, 0..255] of UWORD_32bits =

(

( $d1310ba6, $98dfb5ac, $2ffd72db, $d01adfb7,

  $b8e1afed, $6a267e96, $ba7c9045, $f12c7f99,

  $24a19947, $b3916cf7, $0801f2e2, $858efc16,

  $636920d8, $71574e69, $a458fea3, $f4933d7e, 

  $0d95748f, $728eb658, $718bcd58, $82154aee,

  $7b54a41d, $c25a59b5, $9c30d539, $2af26013,

  $c5d1b023, $286085f0, $ca417918, $b8db38ef,

  $8e79dcb0, $603a180e, $6c9e0e8b, $b01e8a3e, 

  $d71577c1, $bd314b27, $78af2fda, $55605c60,

  $e65525f3, $aa55ab94, $57489862, $63e81440,

  $55ca396a, $2aab10b6, $b4cc5c34, $1141e8ce,

  $a15486af, $7c72e993, $b3ee1411, $636fbc2a, 

  $2ba9c55d, $741831f6, $ce5c3e16, $9b87931e,

  $afd6ba33, $6c24cf5c, $7a325381, $28958677,

  $3b8f4898, $6b4bb9af, $c4bfe81b, $66282193,

  $61d809cc, $fb21a991, $487cac60, $5dec8032, 

  $ef845d5d, $e98575b1, $dc262302, $eb651b88,

  $23893e81, $d396acc5, $0f6d6ff3, $83f44239,

  $2e0b4482, $a4842004, $69c8f04a, $9e1f9b5e,

  $21c66842, $f6e96c9a, $670c9c61, $abd388f0, 

  $6a51a0d2, $d8542f68, $960fa728, $ab5133a3,

  $6eef0b6c, $137a3be4, $ba3bf050, $7efb2a98,

  $a1f1651d, $39af0176, $66ca593e, $82430e88,

  $8cee8619, $456f9fb4, $7d84a5c3, $3b8b5ebe, 

  $e06f75d8, $85c12073, $401a449f, $56c16aa6,

  $4ed3aa62, $363f7706, $1bfedf72, $429b023d,

  $37d0d724, $d00a1248, $db0fead3, $49f1c09b,

  $075372c9, $80991b7b, $25d479d8, $f6e8def7, 

  $e3fe501a, $b6794c3b, $976ce0bd, $04c006ba,

  $c1a94fb6, $409f60c4, $5e5c9ec2, $196a2463,

  $68fb6faf, $3e6c53b5, $1339b2eb, $3b52ec6f,

  $6dfc511f, $9b30952c, $cc814544, $af5ebd09, 

  $bee3d004, $de334afd, $660f2807, $192e4bb3,

  $c0cba857, $45c8740f, $d20b5f39, $b9d3fbdb,

  $5579c0bd, $1a60320a, $d6a100c6, $402c7279,

  $679f25fe, $fb1fa3cc, $8ea5e9f8, $db3222f8, 

  $3c7516df, $fd616b15, $2f501ec8, $ad0552ab,

  $323db5fa, $fd238760, $53317b48, $3e00df82,

  $9e5c57bb, $ca6f8ca0, $1a87562e, $df1769db,

  $d542a8f6, $287effc3, $ac6732c6, $8c4f5573, 

  $695b27b0, $bbca58c8, $e1ffa35d, $b8f011a0,

  $10fa3d98, $fd2183b8, $4afcb56c, $2dd1d35b,

  $9a53e479, $b6f84565, $d28e49bc, $4bfb9790,

  $e1ddf2da, $a4cb7e33, $62fb1341, $cee4c6e8, 

  $ef20cada, $36774c01, $d07e9efe, $2bf11fb4,

  $95dbda4d, $ae909198, $eaad8e71, $6b93d5a0,

  $d08ed1d0, $afc725e0, $8e3c5b2f, $8e7594b7,

  $8ff6e2fb, $f2122b64, $8888b812, $900df01c, 

  $4fad5ea0, $688fc31c, $d1cff191, $b3a8c1ad,

  $2f2f2218, $be0e1777, $ea752dfe, $8b021fa1,

  $e5a0cc0f, $b56f74e8, $18acf3d6, $ce89e299,

  $b4a84fe0, $fd13e0b7, $7cc43b81, $d2ada8d9, 

  $165fa266, $80957705, $93cc7314, $211a1477,

  $e6ad2065, $77b5fa86, $c75442f5, $fb9d35cf,

  $ebcdaf0c, $7b3e89a0, $d6411bd3, $ae1e7e49,

  $00250e2d, $2071b35e, $226800bb, $57b8e0af, 

  $2464369b, $f009b91e, $5563911d, $59dfa6aa,

  $78c14389, $d95a537f, $207d5ba2, $02e5b9c5,

  $83260376, $6295cfa9, $11c81968, $4e734a41,

  $b3472dca, $7b14a94a, $1b510052, $9a532915, 

  $d60f573f, $bc9bc6e4, $2b60a476, $81e67400,

  $08ba6fb5, $571be91f, $f296ec6b, $2a0dd915,

  $b6636521, $e7b9f9b6, $ff34052e, $c5855664,

  $53b02d5d, $a99f8fa1, $08ba4799, $6e85076a),

  {second 256}

($4b7a70e9, $b5b32944, $db75092e, $c4192623,

  $ad6ea6b0, $49a7df7d, $9cee60b8, $8fedb266,

  $ecaa8c71, $699a17ff, $5664526c, $c2b19ee1,

  $193602a5, $75094c29, $a0591340, $e4183a3e, 

  $3f54989a, $5b429d65, $6b8fe4d6, $99f73fd6,

  $a1d29c07, $efe830f5, $4d2d38e6, $f0255dc1,

  $4cdd2086, $8470eb26, $6382e9c6, $021ecc5e,

  $09686b3f, $3ebaefc9, $3c971814, $6b6a70a1, 

  $687f3584, $52a0e286, $b79c5305, $aa500737,

  $3e07841c, $7fdeae5c, $8e7d44ec, $5716f2b8,

  $b03ada37, $f0500c0d, $f01c1f04, $0200b3ff,

  $ae0cf51a, $3cb574b2, $25837a58, $dc0921bd, 

  $d19113f9, $7ca92ff6, $94324773, $22f54701,

  $3ae5e581, $37c2dadc, $c8b57634, $9af3dda7,

  $a9446146, $0fd0030e, $ecc8c73e, $a4751e41,

  $e238cd99, $3bea0e2f, $3280bba1, $183eb331, 

  $4e548b38, $4f6db908, $6f420d03, $f60a04bf,

  $2cb81290, $24977c79, $5679b072, $bcaf89af,

  $de9a771f, $d9930810, $b38bae12, $dccf3f2e,

  $5512721f, $2e6b7124, $501adde6, $9f84cd87, 

  $7a584718, $7408da17, $bc9f9abc, $e94b7d8c,

  $ec7aec3a, $db851dfa, $63094366, $c464c3d2,

  $ef1c1847, $3215d908, $dd433b37, $24c2ba16,

  $12a14d43, $2a65c451, $50940002, $133ae4dd, 

  $71dff89e, $10314e55, $81ac77d6, $5f11199b,

  $043556f1, $d7a3c76b, $3c11183b, $5924a509,

  $f28fe6ed, $97f1fbfa, $9ebabf2c, $1e153c6e,

  $86e34570, $eae96fb1, $860e5e0a, $5a3e2ab3, 

  $771fe71c, $4e3d06fa, $2965dcb9, $99e71d0f,

  $803e89d6, $5266c825, $2e4cc978, $9c10b36a,

  $c6150eba, $94e2ea78, $a5fc3c53, $1e0a2df4,

Информация о работе Криптографические алгоритмы защиты информации Blowfish