Шифрование данных симметричным алгоритмом
Характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа. Общепринятые требования к криптографическим алгоритмам. Наложение на текст псевдослучайной последовательности, генерируемой на основе ключа. Меры по защите ключей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 10.03.2014 |
Размер файла | 15,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа
Шифрование данных симметричным алгоритмом
Цель работы: получить навыки по использованию симметричных криптографических алгоритмов для шифрования данных.
1. Основные положения.
Существует два основных типа криптографических алгоритмов:
- симметричные, для которых ключ расшифрования совпадает с ключом зашифрования.
- асимметричные (алгоритмы с открытым ключом), использующие для зашифрования и расшифрования два разных ключа.
Симметричные алгоритмы делятся на две категории:
- потоковые шифры, в которых данные обрабатываются побитово (посимвольно),
- блочные шифры, в которых операции производятся над группами битов.
Криптостойкость - характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (основные характеристики: 1. количество всех возможных ключей 2. среднее время, необходимое для криптоанализа).
Общепринятые требования к криптографическим алгоритмам:
1. зашифрованный текст читается только при наличии ключа,
2. число операций для нахождения ключа по фрагменту шифрованного текста и соответствующего ему открытого текста - не менее общего числа возможных ключей.
3. число операций для дешифровки путем перебора всевозможных ключей, должно иметь строгую нижнюю оценку и выходить за пределы возможностей компьютеров,
4. знание алгоритма шифрования не должно влиять на надежность защиты,
5. незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при использовании одного и того же ключа,
6. структурные элементы алгоритма шифрования должны быть неизменными,
7. дополнительные биты, вводимые в сообщение при шифровании должны быть полностью и надежно скрыты в шифрованном тексте,
8. длина шифрованного текста должна быть равной длине исходного текста,
9. не должно быть простых и легко устанавливаемых зависимостей между ключами, последовательно используемых при шифровании,
10. любой ключ из множества возможных должен обеспечивать надежную защиту информации,
11. алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.
Среди методов криптографического закрытия можно выделить следующие:
- Замена (подстановка)
- Перестановка
- Аналитическое преобразование
- Гаммирование
- Комбинированные методы.
Гаммирование - наложение на текст псевдослучайной последовательности, генерируемой на основе ключа. Возможны следующие разновидности гамм:
- конечная короткая гамма,
- конечная длинная гамма,
- бесконечная гамма.
Шифрование методом гаммирования заключается в замене символов шифруемого текста и гаммы цифровыми эквивалентами (или в виде двоичного кода). Стойкость шифрования определяется длительностью периода и равномерностью статистических характеристик гаммы.
2. Выполнение работы
2.2 Лабораторное задание
Задача лабораторной работы - разработать приложение, в котором вводимый текст шифруется симметричным алгоритмом с помощью задаваемого ключа.
3. Рекомендации при разработке приложения
3.3 Возможный вариант процедур шифрования/дешифрования с оформлением каждого из действий в отдельную процедуру:
interface
const
StartKey = 981; {Start default key}
MultKey = 12674; {Mult default key}
AddKey = 35891; {Add default key}
function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
implementation
{$R-}
{$Q-}
{*******************************************************
* Standard Encryption algorithm - Copied from Borland *
*******************************************************}
function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Byte;
begin
Result := '';
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
end;
end;
{*******************************************************
* Standard Decryption algorithm - Copied from Borland *
*******************************************************}
function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string;
var
I : Byte;
begin
Result := '';
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;
end;
end;
{$R+}
{$Q+}
end.
3.4 Рекомендуется разработать процедуры шифрования/дешифрования с использованием наложения на шифруемый текст конечной короткой гаммы (ключа):
- символы текста и ключа переводятся в цифровой (тип Byte) аналог таблицы ASCII,
- организуется цикл перебора элементов массива текста с наложением на них (сложение или вычитание с контролем выхода за границы типа данных) соответствующих элементов массива ключа.
3.5 Ключ шифрования перед записью в файл преобразуйте с помощью алгоритма шифрования XOR. Пример модуля консольного приложения с реализацией подобного алгоритма приведен ниже.
program Crypt;
{$APPTYPE CONSOLE}
uses Windows;
var
key, text, longkey, result : string;
i : integer;
toto, c : char;
F : TextFile;
begin
writeln('Enter the key:');
readln(key);
writeln('Enter the text:');
readln(text);
for i := 0 to (length(text) div length(key)) do
longkey := longkey + key;
for i := 1 to length(text) do
begin
// XOR алгоритм
toto := chr((ord(text[i]) xor ord(longkey[i])));
result := result + toto;
end;
writeln('The crypted text is:');
writeln(result);
write('Should i save it to result.txt ?');
read(c);
if in ['Y','y'] then
c begin
AssignFile(F,'result.txt');
Rewrite(F);
Writeln(F,result);
CloseFile(F);
end;
end.
4. Содержание отчета
Отчет должен содержать:
1. Тему работы, цель работы.
2. Распечатку программы.
3. Скрин-шоты выполнения программы с указанием авторства.
4. Описание хода выполнения.
5. Ответы на контрольные вопросы.
5. Контрольные вопросы
ключ шифр дешифрование криптографический
1. Почему криптографические алгоритмы, требующие сохранения в тайне последовательности преобразования данных, не находят в настоящее время широкого применения?
2. Каким должен быть объем ключевого пространства для обеспечения криптографической стойкости алгоритма?
3. Зависит ли криптографическая стойкость алгоритма от набора возможных символов ключа?
4. Что такое ключ?
5. Можно ли использовать последовательности цифр фундаментальных констант при формировании гаммы?
6. Назовите основные показатели криптостойкости.
7. Охарактеризуйте меры по защите ключей.
8. Исходя из чего определяется необходимость смены ключей шифрования?
Размещено на Allbest.ru
Подобные документы
Назначение алгоритма "Blowfish", особенности длины ключа и степени криптостойкости. Обоснование программной реализации расширения ключа и сцепления блоков шифра "Blowfish". Проверка использования инициализирующего вектора и распространения ошибок шифра.
курсовая работа [1,3 M], добавлен 30.01.2014Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.
курсовая работа [45,0 K], добавлен 13.11.2009История возникновения криптографии. Открытый ключ криптосистемы. Шифрование секреторного ключа. Математические методы обеспечения конфиденциальности и аутентичности информации. Преобразование текста на основе секретного алгоритма в шифрованный текст.
презентация [260,8 K], добавлен 11.10.2015Реализация алгоритма DES и режимов шифрования для любой длины сообщения и любой длины ключа. Шифрование сообщений различной длины и ключа с замериванием времени и скорости шифрования. Реализация алгоритма RSA. Сохранение зашифрованного файла на диск.
курсовая работа [398,4 K], добавлен 26.01.2010Генератор псевдослучайной последовательности в системах защиты информации. Шифрование мультимедийных данных. Вероятностное шифрование и алгоритм Эль-Гамаля. Основные понятия теории конечных полей. Алгоритм нахождения циклического избыточного кода.
дипломная работа [1,7 M], добавлен 19.07.2013Методы шифрования данных. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования. Визуальное представление, схема приемника и передатчика. Расшифровывание зашифрованных данных в режиме гаммирования. Стойкость и возможности обхождения шифра.
реферат [823,8 K], добавлен 26.12.2011Инфраструктура открытых ключей PKI. Преимущество сетевой архитектуры. Программные средства поддержки PKI. Описание логики работы программы. Форма генерации и экспорта ключа для подписи, создания нового пользователя, добавления нового сертификата.
курсовая работа [450,8 K], добавлен 22.07.2012Программа на языке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса. Входные, выходные данные. Схема алгоритма и текст программы. Порядок ввода исходных данных и описание получаемых результатов. Тестовых задания и анализ их функционирования.
курсовая работа [4,0 M], добавлен 06.01.2011Симметричная криптосистема, шифрование открытых данных в режиме гаммирования. Уравнение расшифрования и его значение. Формирование ключа в режиме "электронная кодовая книга" и перевод его в двоичный вид. Удаление контрольных бит и определение матрицы.
контрольная работа [418,6 K], добавлен 21.10.2011Модифицированный шифр Цезаря. Особенности алгоритмов Энигма и Виженера. Алгоритм рекурсивного вычисления наибольшего общего делителя. Генератор псевдослучайной последовательности. Шифрование мультипликативным ключом. Вычисление первообразного корня.
лабораторная работа [1,0 M], добавлен 04.11.2014