Защита информации и надежность информационных систем

Характеристика хеширования как преобразования по определенному алгоритму входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Анализ основных свойств хеш-функции. Изучение методов применения идеального хеширования.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 19.04.2016
Размер файла 95,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

УО «Белорусский государственный технологический университет»

Кафедра Информационных систем и технологий

Курс «Защита информации и надежность информационных систем»

Отчёт по лабораторной работе №1:

MD5

Выполнила: Панченко О.Л.

3 курс 2 группа

Проверил: Шиман Д. В

Минск 2016

Теоретическая часть

хеширование данные массив алгоритм

Хеширование (иной вариант написания - хэширование; англ. hashing) - преобразование по определённому алгоритму входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хэш-функциями или «функциями свёртки», а их результаты называют хэшем, хэш-кодом, хэш-суммой или «сводкой сообщения».

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

Хорошая хэш-функция должна удовлетворять двум свойствам:

· быстро вычисляться;

· минимизировать количество коллизий

Идеальной хэш-функцией (англ. Perfect hash function) называется такая функция, которая отображает каждый ключ из набора в множество целых чисел без коллизий. В математических терминах это инъективное отображение.

1. Функция называется идеальной хэш-функцией для , если она инъективна на ;

2. Функция называется минимальной идеальной хэш-функцией для , если она является ИХФ и ;

3. Для целого , функция называется -идеальной хэш-функцией (k-PHF) для если для каждого имеем .

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

MD5 (англ. Message Digest 5) - 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности. Широко применялся для проверки целостности информации и хранения паролей в закрытом виде.

Алгоритм MD5

На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям.

Шаг 1. Выравнивание потока. Сначала дописывают единичный бит в конец потока (байт 80h), затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер был сравним с 448 по модулю 512 (). Выравнивание происходит, даже если длина уже сравнима с 448.

Шаг 2. Добавление длины сообщения. В конец сообщения дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Сначала записывают младшие 4 байта, затем старшие. Если длина превосходит , то дописывают только младшие биты (эквивалентно взятию по модулю ). После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.

Шаг 3. Инициализация буфера. Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами (порядок байтов little-endian, сначала младший байт):

А = 01 23 45 67; // 67452301h

В = 89 AB CD EF; // EFCDAB89h

С = FE DC BA 98; // 98BADCFEh

D = 76 54 32 10. // 10325476h

В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.

Определим ещё функции и константы, которые нам понадобятся для вычислений.

· Потребуются 4 функции для четырёх раундов. Введём функции от трёх параметров - слов, результатом также будет слово:

1-й раунд: ,

2-й раунд: ,

3-й раунд: ,

4-й раунд: ,

где побитовые логические операции XOR, AND, OR и NOT соответственно.

· Определим таблицу констант  - 64-элементная таблица данных, построенная следующим образом: .[11]

· Каждый 512-битный блок проходит 4 этапа вычислений по 16 раундов. Для этого блок представляется в виде массива X из 16 слов по 32 бита. Все раунды однотипны и имеют вид: [abcd k s i], определяемый как , где k - номер 32-битного слова из текущего 512-битного блока сообщения, и  - циклический сдвиг влево на s бит полученного 32-битного аргумента. Число s задается отдельно для каждого раунда.

Шаг 4. Вычисление в цикле. Заносим в блок данных элемент n из массива 512-битных блоков. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).

AA = A

BB = B

CC = C

DD = D

Этап 1

/* [abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4]

[ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8]

[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]

[ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]

Этап 2

/* [abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20]

[ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24]

[ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28]

[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]

Этап 3

/* [abcd k s i] a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36]

[ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40]

[ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44]

[ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48]

Этап 4

/* [abcd k s i] a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52]

[ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56]

[ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60]

[ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64]

Суммируем с результатом предыдущего цикла:

A = AA + A

B = BB + B

C = CC + C

D = DD + D

После окончания цикла необходимо проверить, есть ли ещё блоки для вычислений. Если да, то переходим к следующему элементу массива (n + 1) и повторяем цикл.

Шаг 5. Результат вычислений. Результат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово, начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5-хеш. 1, 0, 15, 34, 17, 18…

Реализация

Входные данные выравниваются так, чтобы их новый размер был сравним с 448 по модулю 512 (). В конец сообщения дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания.

StringBuilder PaddedMessage=new StringBuilder(GetBinary(msg));

//выравнивание данных к 448 по модулю 512

PaddedMessage.Append("1");

uint BeginMessageLength = (uint)PaddedMessage.Length;

while(PaddedMessage.Length % 512!=448)

{

PaddedMessage.Append("0");

}

//дописывание 64 бит длинны сообщения

word MessageLength=new word(BeginMessageLength-1,-1);

short [] LengthBit = new short[64];

int iter = 0;

for (int i = 7; i >= 0; i--)

{

for (int j = 0; j < 8; j++)

{

LengthBit[iter] = MessageLength[i * 8 + j];

iter++;

}

}

for (int i = 0; i < LengthBit.Length; i++)

{

if (LengthBit[i] == 1) PaddedMessage.Append("1");

else PaddedMessage.Append("0");

}

таблицу констант  

T = new uint[64];

for (int i = 0; i < 64; i++)

{

T[i] = (uint)(Math.Pow(2, 32) * Math.Abs(Math.Sin(i + 1)));

}

Массив из 16 слов

string[] Registers = new string[]{"ABCD","DABC","CDAB","BCDA",

"ABCD","DABC","CDAB","BCDA",

"ABCD","DABC","CDAB","BCDA",

"ABCD","DABC","CDAB","BCDA"};

//этап 1

int[] S = new int[] { 7, 12, 17, 22,

7, 12, 17, 22,

7, 12, 17, 22,

7, 12, 17, 22 };

for(int step=0;step<16;step++)

{

Step(Registers[step][0], Registers[step][1], Registers[step][2], Registers[step][3], F, step, S[step], step);

}

//этап 2

S = new int[] { 5, 9, 14, 20,

5, 9, 14, 20,

5, 9, 14, 20,

5, 9, 14, 20 };

int[] K = new int[] { 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12 };

for (int step = 0; step < 16; step++)

{

Step(Registers[step][0], Registers[step][1], Registers[step][2], Registers[step][3], G, K[step], S[step], step + 16);

}

//этап 3

K = new int[] { 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2 };

S = new int[] { 4, 11, 16, 23,

4, 11, 16, 23,

4, 11, 16, 23,

4, 11, 16, 23 };

for (int step = 0; step < 16; step++)

{

Step(Registers[step][0], Registers[step][1], Registers[step][2], Registers[step][3], H, K[step], S[step], step + 32);

}

K = new int[] { 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9 };

S = new int[] { 6, 10, 15, 21,

6, 10, 15, 21,

6, 10, 15, 21,

6, 10, 15, 21 };

for (int step = 0; step < 16; step++)

{

Step(Registers[step][0], Registers[step][1], Registers[step][2], Registers[step][3], I, K[step], S[step], step + 48);

}

Суммируем с результатом предыдущего цикла:

A = AA + A;

B = BB + B;

C = CC + C;

D = DD + D;

Данные берем из текстового файла

using (StreamReader rfile = new StreamReader("text.txt"))

{

v_txt = new string(rfile.ReadToEnd().ToCharArray());

}

Результат выполнения программы

Размещено на Allbest.ru

...

Подобные документы

  • Хеширование — преобразование входного массива данных произвольной длины в фиксированную выходную битовую строку. Функции свёртки, хеш-код; предъявляемые требования; принцип построения, применение. Разработка программного продукта, исключающего коллизию.

    курсовая работа [343,7 K], добавлен 12.08.2012

  • Использование хеширования для поиска данных. Хеширование и хеш-таблицы. Способы разрешения конфликтов. Использование средств языка программирования в работе с хеш-таблицами. Описание разработанного приложения. Структура программы. Инструкция пользователя.

    курсовая работа [1,1 M], добавлен 19.08.2016

  • Аппаратный узел, выполняющий задачу преобразования цифровой информации с ее шифрованием по определенному алгоритму. Структура шифрующе-вычисляющего устройства с использованием языка высокоуровневого описания аппаратуры VHDL. Диаграмма потока данных.

    реферат [18,7 K], добавлен 24.09.2010

  • Факторы угроз сохранности информации в информационных системах. Требования к защите информационных систем. Классификация схем защиты информационных систем. Анализ сохранности информационных систем. Комплексная защита информации в ЭВМ.

    курсовая работа [30,8 K], добавлен 04.12.2003

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

    курсовая работа [420,4 K], добавлен 22.06.2011

  • Методы хеширования данных и реализация хеш-таблиц. Разработка на языке программирования высокого уровня программы с функциями создания хеш-таблицы, добавления в нее элементов, их просмотра, поиска и удаления. Экспериментальный анализ хеш-функции.

    лабораторная работа [231,9 K], добавлен 18.06.2011

  • Формы представляемой информации. Основные типы используемой модели данных. Уровни информационных процессов. Поиск информации и поиск данных. Сетевое хранилище данных. Проблемы разработки и сопровождения хранилищ данных. Технологии обработки данных.

    лекция [15,5 K], добавлен 19.08.2013

  • Методы и средства защиты информационных данных. Защита от несанкционированного доступа к информации. Особенности защиты компьютерных систем методами криптографии. Критерии оценки безопасности информационных компьютерных технологий в европейских странах.

    контрольная работа [40,2 K], добавлен 06.08.2010

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

    курсовая работа [307,6 K], добавлен 16.06.2012

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

    курсовая работа [72,9 K], добавлен 22.02.2012

  • Виды информационных ресурсов. Обзор систем управления контентом. Модуль аутентификации, хеширования паролей, авторизации. Клиент серверная модель. Выбор инструментария для создания сайта, сессии и cookies. Массив элементов меню, установки доступа.

    дипломная работа [1009,7 K], добавлен 14.10.2012

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

    реферат [83,2 K], добавлен 13.10.2014

  • Объектно-ориентированное программирование как новый подход к созданию приложений. Разработка Windows-приложения для поиска информации в хэш-таблице. Анализ использования хеширования для поиска данных и линейного зондирования для разрешения конфликтов.

    курсовая работа [915,5 K], добавлен 06.03.2016

  • Методы организации процесса обработки информации; основные направления реализации внутримашинного информационного обеспечения. Принципы построения и эффективного применения технологий баз и банков данных как основных компонентов автоматизированных систем.

    дипломная работа [186,8 K], добавлен 30.05.2013

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

    контрольная работа [25,8 K], добавлен 10.02.2011

  • Возможности защиты информации с помощью информационных систем "Парус" и "Лагуна". Модульный принцип организации системы "Парус". Использование единой базы данных. Назначение системы "Лагуна" и ее структура. Требования и рекомендации к защите информации.

    реферат [192,1 K], добавлен 27.09.2012

  • Индексирование в базах данных. Создание индекса, его типы, виды и структура. Индексы для последовательных файлов. Неупорядоченные и упорядоченные файлы. Типы хеширования, древовидные структуры для многомерных данных. Деревья квадрантов и их вершины.

    реферат [2,6 M], добавлен 19.06.2015

  • Общая характеристика информационных систем, предназначенных для передачи, преобразования и хранения информации. Изучение форм представления детерминированных сигналов. Энтропия сложных сообщений. Рассмотрение основных элементов вычислительных машин.

    лекция [1,5 M], добавлен 13.04.2014

  • Перевод исходного текста и первого подключа в двоичную последовательность. Логическое сложение с исключением. Открытый и закрытый ключи в алгоритме шифрования RSA. Шифрование и расшифрование. Электронная цифровая подпись. Применение функции хеширования.

    контрольная работа [21,9 K], добавлен 28.03.2012

  • Анализ показателей оценки эффективности информационных систем и технологий. Расчет трудовых и стоимостных показателей и показателей достоверности информации, разработка программы для ускорения методов обработки данных. Интерфейс и листинг приложения.

    дипломная работа [1,2 M], добавлен 14.01.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.