Криптология. Шифрование методом Виженера

Автор: Пользователь скрыл имя, 27 Декабря 2011 в 09:03, реферат

Описание работы

Историческим примером шифра замены является шифр Цезаря (1 век до н.э.), описанный историком Древнего Рима Светонием. Гай Юлий Цезарь использовал в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Выписывался алфавит: А, Б, В, Г, Д,Е,...,; затем под ним выписывался тот же алфавит, но со сдвигом на 3 буквы влево.

Содержание

Введение 2
Исторические основы криптологии 2
Криптология в современном мире 3
Криптология 3
Основные понятия криптологии 3
Требования к криптосистемам 5
Симметрические криптосистемы 6
Системы шифрования Виженера 7
Постановка задачи 10
Реализация задачи 10
Листинг программы с комментариями: 10
Пример 12
Заключение 13
Список литературы: 14

Работа содержит 1 файл

Криптология. Шифрование методом Виженера.doc

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

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

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

    Все многообразие существующих криптографических  методов можно свести к следующим  классам преобразований:

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

    Перестановки - несложный метод криптографического преобразования. Используется как правило в сочетании с другими методами.

    Гаммирование - этот метод заключается в наложении на исходный текст некоторой псевдослучайной последовательности, генерируемой на основе ключа.

    Блочные шифры  представляют собой последовательность (с возможным повторением и чередованием) основных методов преобразования, применяемую к блоку (части) шифруемого текста. Блочные шифры на практике встречаются чаще, чем “чистые” преобразования того или иного класса в силу их более высокой криптостойкости, а также потому, что этот метод позволяет шифровать тексты практически любой длины, разбивая их на блоки. Российский и американский стандарты шифрования основаны именно на этом классе шифров.

Системы шифрования Виженера

 

    Шифр  Виженера (фр. Chiffre de Vigenиre) — метод  полиалфавитного шифрования буквенного текста с использованием ключевого  слова.

    Шифр  Виженера достаточно прост для использования  в полевых условиях, особенно если применяются шифровальные диски. Например, «конфедераты» использовали медный шифровальный диск для шифра Виженера в ходе Гражданской войны.

    

     Рис.1 Репродукция шифровального диска Конфедерации 

    Метод Вижинера является следствием подстановки  Цезаря. В системе Виженера задается некая конечная последовательность ключа

      k = (k0 ,k1 ,...,kn),

    которая называется ключом пользователя, она продолжается до бесконечной последовательности, повторяя цепочку. Таким образом, получается  рабочий ключ.

При длине пользовательского ключа R:

1) исходный текст x делится на R фрагментов 

xi = (xi , xi+r , ..., xi+r(n-1)), 0 ≤ i < r;

2) i-й фрагмент  исходного текста xi шифруется при помощи подстановки Цезаря в зависимости от пользовательского ключа :

(xi , xi+r , ..., xi+r(n-1)) → (yi , yi+r , ..., yi+r(n-1)),

    Очень распространена плохая с точки зрения секретности практика использовать слово или фразу в качестве ключа для того, чтобы k=(k0 ,k1 ,...,kк-1) было легко запомнить. В информационных системах для обеспечения безопасности информации это недопустимо. Для получения ключей должны использоваться программные или аппаратные средства случайной генерации ключей.

    Если  буквы A-Z соответствуют числам 0-25, то шифрование Виженера можно записать в виде формулы:

    

Расшифровка:

    

Рис.2 таблица Виженера

Пример. Преобразование текста с помощью подстановки Вижинера

Исходный  текст :

   НЕ_СЛЕДУЕТ_ВЫБИРАТЬ_НЕСЛУЧАЙНЫЙ_КЛЮЧ

Ключ: КЛЮЧ

Разобьем исходный текст на блоки по 4 символа:

НЕ_С   ЛЕДУ   ЕТ_В   ЫБИР   АТЬ_    НЕСЛ УЧАЙ   НЫЙ_    КЛЮЧ

и наложим на них ключ (используя таблицу Вижинера):  

H+К=Ч, Е+Л=Р  и т.д. 

Получаем зашифрованный текст:

ЧРЭЗ  ХРБЙ   ПЭЭЩ   ДМЕЖ   КЭЩЦ   ЧРОБ   ЭБЮ_   ЧЕЖЦ   ФЦЫН

    Криптостойкость метода резко убывает с уменьшением  длины ключа. Тем не менее такая система как шифр Виженера допускает несложную аппаратную или программную реализацию и при достаточно большой длине ключа может быть использован в современных ИС.

Постановка  задачи

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

Реализация  задачи

    Для реализации поставленной задачи мной был выбран язык программирования Turbo Pascal. Программа представляет собой шифровщик и дешифровщик одновременно. Используется метод симметрического кодирования, то есть кодирование и декодирование осуществляется с помощью одного ключа.

Листинг программы с комментариями:

{Программа шифрования  по методу Виженера} 

program Vigener;

var

  inf, outf, keyf:string;  //имена файлов

{ loz:string;   }     //лозунг

  loz,cd,ch:char;           //символ 

procedure Code (inf, outf,key:string; loz:char);   //процедура кодирования

var

  infile, outfile,keyfile: file of char;

  loz,ch: char;

  t1,t2,t3: integer;

begin

  assign (infile, inf);

  assign (outfile, outf);

  assign (keyfile, keyf);

  reset (infile);              //открыт для чтения

  reset (keyfile);             //открыт для чтения

  rewrite (outfile);           //открыт для перезаписи

  while not eof (infile) do

  begin

    read (infile, ch);

    read (keyfile, loz);

    t1:=ord(ch) mod 256;

    t2:=ord(loz) mod 256;

    t3:=t1+t2;

    ch:=chr(t3);

    write (outfile, ch);

  end;

  writeLn('Файл закодирован');

  close(infile);

  close(outfile);

  close(keyfile);

end; 

procedure DeCode (inf, outf,key:string; loz:char);   //процедура декодирования

var

  infile, outfile,keyfile: file of char;

  ch,loz: char;

  t1,t2,t3: integer;

begin

  assign (infile, inf);

  assign (outfile, outf);

  assign (keyfile, keyf);

  reset (infile);              //открыт для чтения

  reset (keyfile);             //открыт для чтения

  rewrite (outfile);           //открыт для перезаписи

  while not eof (infile) do

  begin

    read (infile, ch);

    read (keyfile, loz);

    t1:=ord(ch) mod 256;

    t2:=ord(loz) mod 256;

    t3:=t1-t2;

    ch:=chr(t3);

    write (outfile, ch);

  end;

  writeLn('Файл декодирован');

  close(infile);

  close(outfile);

  close(keyfile);

end; 

begin //реализация интерфейса

  write('Введите  имя входного файла:');

  readLn(inf);

  write('Введите  имя выходного файла:');

  ReadLn(outf);

   write('Введите  имя файла с ключем:');

  ReadLn(keyf);

{ Write('Введите лозунг:');

  ReadLn(loz);   }

  write('Кодировать  или декодировать?(С or D):');

  ReadLn(cd);

  if upcase(cd)='C' then code(inf, outf,keyf, loz)

  else if upcase(cd)='D' then decode(inf, outf, keyf, loz);

end.

Пример

Исходный  текст: good morning;

Ключ: key;

Результат кодирования: ТФиП…жЪЧзФУа;

Результат обратного декодирования: good morning.

Заключение

Итак, итогом работы является симметрическая криптосистема, работающая на методе шифрования Виженера.

 Обоснованный  выбор той или иной системы  защиты должен опираться на какие-то критерии эффективности:

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

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

 

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

 

1. Петров А.А «Компьютерная безопасность. Криптографические методы защиты» ДМК Москва, 2000 г. 

2.  "Методы  и средства защиты информации" (курс лекций) Авторские права: Беляев А.В.

(http://www.citforum.ru/internet/infsecure/index.shtml) 

3. Криптография  (http://www.citforum.ru/internet/securities/crypto.shtml) 

4.  Бобровский  С. Delphi 7. Учебный курс. Из-во Питер, 2004г. 

5. Шифр Виженера (http://ru.wikipedia.org/wiki/Шифр_Виженера) 

6. Соловьева Ю.А. «Элементы криптографии. Часть I Симметричные криптосистемы» Уч.пособие,

Новокузнецк, 2003г. 
 
 
 
 
 

Информация о работе Криптология. Шифрование методом Виженера