Автор работы: Пользователь скрыл имя, 17 Апреля 2012 в 07:23, курсовая работа
Шифрова́ние — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи. Шифрование подразделяется на процесс зашифровывания и расшифровывания.
История шифрования
Введение 2
Математическая модель XOR-шифрования 4
Актуальность и Проблематика программы 6
Описание интерфейса программы 7
Проверка работоспособности 8
Блок схема программы 10
Список литературы 11
Содержание
Введение
Шифрова́ние — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи. Шифрование подразделяется на процесс зашифровывания и расшифровывания.
История шифрования
Шифрование как процесс
своей историей уходит глубоко в
века. Так, подстановочные шифры существуют
уже около 2500 лет. Самым ранним примером
является шифр Атбаш. Он возник примерно
в 600 году до н.э. и заключался в использовании
еврейского алфавита в обратном порядке.
Юлий Цезарь использовал подстановочный
шифр, который так и назывался — шифр Цезаря.
Этот шифр заключался в замещении каждой
буквы другой буквой, расположенной в
алфавите на три буквы дальше от шифруемой.
Таким образом, буква A преобразовывалась
в D, B в E, а Z — в C. Несомненно, шифрование
является важнейшим средством обеспечения
безопасности, однако не следует забывать
и том, что само по себе шифрование не является
решением всех проблем. Механизмы шифрования
могут и должны являться составной частью
комплексной программы по обеспечению
безопасности (ИБ). Согласно классическим
канонам ИБ, с помощью шифрования обеспечиваются
три состояния безопасности информации:
Конфиденциальность.
- Шифрование используется для сокрытия
информации от неавторизованных пользователей
при передаче или при хранении.
Целостность. - Шифрование используется для
предотвращения изменения информации
при передаче или хранении.
Идентифицируемость.
- Шифрование используется для аутентификации
источника информации и предотвращения
отказа отправителя информации от того
факта, что данные были отправлены именно
им.
Известно, что любая система шифрования
может быть взломана. Речь идет лишь о
том, что для получения доступа к защищенной
шифрованием информации может потребоваться
неприемлемо большое количество времени
и ресурсов. Что это значит, и как это выглядит
в реальной жизни? Представьте себе такую
ситуацию, что злоумышленнику каким-то
образом удалось перехватить зашифрованную
информацию. Дальнейшие действия взломщика
могут быть сведены к двум (возможен и
третий вариант взлома, который сводится
к эксплуатации уязвимостей рабочей среды)
вариантам взлома. Это: Атака грубой силой,
или Brute Force (подразумевает подбор всех
возможных вариантов ключей).
Или же взломщик попытается найти уязвимые
места в алгоритме.
Учитывая тот факт, что применяемые в настоящее
время алгоритмы шифрования уже проверены
"огнем и временем", совершенно очевидно,
что взломщик будет использовать Brute Force.
Взлом конфиденциальной информации, зашифрованной
стойким алгоритмом и достаточно длинным
ключом (хотя бы 512 бит), потребует со стороны
взломщика использования нескольких суперкомпьютеров
или распределительной сети из одной-двух
сотен машин, а это уйма времени и денег…
Но если деньги есть, то почему бы и нет!
Так, в 1997 г. организация Electronic Frontier Foundation
(EFF) анонсировала компьютерную систему,
которая сможет найти ключ DES за четыре
дня. Создание такой системы обошлось
компании в 250.000 долларов. С помощью современного
оборудования можно определить ключ DES
посредством атаки "грубой силы"
за 35 минут…
Алгоритмы и стандарты
В зависимости от структуры
используемых ключей все методы шифрования
подразделяются на:
Симметричное шифрование:
посторонним лицам может быть известен
алгоритм шифрования, но неизвестна небольшая
порция секретной информации — ключа,
одинакового для отправителя и получателя
сообщения;
Асимметричное шифрование:
посторонним лицам может быть известен
алгоритм шифрования и, возможно открытого
ключа, но неизвестен алгоритм закрытого
ключа, известного только получателю.
Известны и другие виды шифрования — например,
такие, как тайнопись. Алгоритмы тайнописи
по известным причинам не являются публичными:
посторонним лицам неизвестен сам алгоритм
шифрования; закон преобразования знают
только отправитель и получатель сообщения.
Одним из ярких примеров таких систем
можно считать одноразовые блокноты. Именно
одноразовые блокноты (One-time Pad — OTP) являются
единственной теоретически невзламываемой
системой шифрования. Одноразовый блокнот
представляет собой список чисел в случайном
порядке, используемый для кодирования
сообщения (см. табл. 1). Как видно из названия
системы, OTP может использоваться только
один раз. Если числа в OTP являются действительно
случайными, OTP имеет большую длину, чем
сообщение, и используется только один
раз, то шифрованый текст не предоставляет
какого-либо механизма для восстановления
исходного ключа (т.е. самого OTP) и, следовательно,
сообщений.
Математическая модель XOR-шифрования
Как ни странно, но самым
простым и одним из самых эффективных
(при правильном использовании) алгоритмов
шифрования является так называемое
XOR-шифрование. Попробуем рассмотреть
идею этого наипростейшего метода.
Как известно из булевой алгебры, операция
логического сложения «?» по модулю 2 (или
логического исключаещего ИЛИ — XOR, eXclusive
OR) имеет следующую семантику:
То есть, операция z = x ? y по сути поразрядная (побитовая — результат не зависит от соседних битов). Если только один из соответствующих битов равен 1, то результат 1. А если оба 0 или оба 1, то результат 0. Если внимательно посмотреть на результат применения XOR к двум двоичным числам, то можно заметить, что мы можем восстановить одно из слагаемых при помощи второго: x = z ? y или y = z ? x.
Отсюда можно сделать следующие выводы: зная число y и применяя XOR к x, мы получим z. Затем, мы, опять же используя y, получим из z обратно число x. Таким образом мы можем преобразовать последовательность чисел (x)i в последовательность (z)i. Теперь мы можем назвать число y кодирующим (или шифрующим) ключом. Если человек не знает ключа, то он не сможет восстановить исходную последовательность чисел (x)i. Но если (x)i являются байтовым представлением букв текста, то опытный пользователь сможет вскрыть зашифрованный текст. Поскольку каждая буква будет представлена в шифротексте одним и тем же кодом z, то воспользуясь частотным словарем взломщик сможет вычислить шифрующий ключ y, если у него будет в распряжениии достаточно длинный шифротекст.
Допустим, у нас есть открытый текст
- "denik.od"
Придумаем для него гамму: "12345678"
(гамма должна быть равной длине текста,
т.к. мы весь текст хотим зашифровать)
Конкретный пример рассмотрим на первых 2-х байтах "de" (представим их в двоичной системе):
Имеем |
d |
e |
Это же, только в двоичной системе |
1100100 |
1100101 |
Результат XOR |
1010101 |
1010111 |
Результат XOR (символы) |
U |
W |
Для расшифровки, просто применим XOR еще раз:
Имеем |
U |
W |
Это же, только в двоичной системе |
1010101 |
1010111 |
Результат XOR |
1100100 |
1100101 |
Результат XOR (символы) |
d |
e |
В результате мы получили наши первые 2 байта (de). Точно так же делается со всем текстом.
Актуальность и Проблематика программы
Шифрование методом XOR решает такую проблему как, преобразование конфиденциальной информации в не пригодную для чтения другим лицам. В настоящее время существует множество способов передачи информации начиная с простых писем, которые передаются по почте и до электронных посланий которые могут передаваться по Всемирной Глобальной Паутине(Интернет). Простое письмо которое можно написать на бумаге, можно зашифровать вручную, а электронное письмо можно и проще зашифровать с помощью специальной программы, которую можно создать на основе Метода XOR.
Актуальность программы заключается в том, что она:
Описание интерфейса программы
Проверка работоспособности
После запуска программы вы увидите главное окно программы.
Рисунок 1 (Окно программы при запуске)
Вводим данные которые вы хотите зашифровать в строку под названием «Исходный текст»
Рисунок 2 (Ввод данных)
Вводим ключ с помощью которого программа зашифрует исходный текст в строку под названием «Ключ», чем длиннее ключ тем сложнее будет расшифровать зашифрованный текст.
Рисунок 3 (Ввод ключа)
Нажимаем кнопочку «Преобразовать» для шифрования исходных данных с помощью введенного ключа.
Рисунок 4 (Зашифрованный текст)
Для расшифрования зашифрованных данных наживаем кнопочку «Переместить зашифрованный текст». Вводим ключ если его нет в строке «Ключ». ВНИМАНИЕ: Ключ введенный при шифровании должен совпадать с ключом при дешифровании, иначе мы не получим исходных данных!.
Рисунок 5 (перемещение зашифрованного текста)
После перемещения зашифрованного текста в строку «Исходный текст» с помощью кнопочки «Переместить зашифрованный текст», нажимаем кнопочку «Преобразовать» и получаем исходные данные.
Рисунок 6 (Расшифровка)
Блок схема программы
Список литературы
Листинг программы
unit Unit_XOR;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Text_Key: TEdit;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
key, text, longkey, result : string;
i : integer;
L_key: integer;
L_text:integer;
N :integer;
N_end :integer;
T_char:char;
begin
//Выводим в текстовое поле значение длины строки
//key1
//Вводим исходные тексты и определяем их параметры
text := Edit1.Text;
key := Text_Key.Text;
L_text := length(text);
L_key := length(key);
N := L_text div L_key;
N_end := L_text mod L_key;
// Строим ключевое слово для исходного текста
for i := 0 to N do
longkey := longkey + key;
//XOR алгоритм
for i := 1 to L_text do
begin
T_char := chr((ord(text[i]) xor ord(longkey[i])));
result := result + T_char;
end;
Edit2.Text := result;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := Edit2.Text;
Edit2.Text := '';
end;
end.