Uploaded by Анастасия Слашова

Курсовая Хеш-функции

advertisement
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
ФГАОУ ВО «СЕВЕРО-КАВКАЗСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
ФАКУЛЬТЕТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК ИМ.
ПРОФЕССОРА Н.И.ЧЕРВЯКОВА
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ
КУРСОВАЯ РАБОТА
по дисциплине
«Использование алгебраических методов в области защиты информации»
на тему:
«Криптографические хеш-функции»
Выполнила:
Слашова Анастасия
Андреевна
студентка 4 курса
группы МКН-б-о-20-1
направления 02.03.01
«Математика и компьютерные
науки»
очной формы обучения
________________________
(подпись)
Руководитель работы:
Кучеров
Н.Н.,
Доцент
кафедры
математического
анализа, алгебры и геометрии
Работа допущена к защите
_______________________
______________
(подпись руководителя)
(дата)
Работа выполнена и защищена с оценкой __________________
Дата защиты ______________
Члены комиссии: ________________ __________
(должность)
_______________
(подпись)
(И.О. Фамилия)
________________ _______________
_______________
________________ _______________
_______________
Ставрополь, 2023 г.
Содержание
1. Введение
2. Глава 1. Хеш-функции
1.1.
Первое упоминание хеш-функций
1.2.
Требования к хеш-функциям
1.3.
Хеш-таблица
1.4.
Примеры «хороших» хеш-функций
1.5.
Криптографические хеш-функции
1.6.
Идеальная хеш-функция
3. Глава 2. Примеры хеш-функций
2.1. «Специальные» хеш-функции
2.2. Хэш-функции, основанные на блочных шифрах
4. Заключение
5. Список используемой литературы
2
Введение
В современном информационном обществе безопасность данных играет
ключевую роль. Криптографические хеш-функции представляют собой
важный инструмент в обеспечении целостности и конфиденциальности
информации. В данной курсовой работе представлен обзор и анализ
криптографических хеш-функций, их принципов работы и основных
алгоритмов, а также рассмотрены возможности их применения в различных
областях.
Целью курсовой работы является изучение и анализ криптографических
хеш-функций, их принципов работы, алгоритмов, а также их разновидности.
Для достижения данной цели, был поставлен ряд задач:
1.
Изучить основные понятия хеш-функций.
2.
Классифицировать различные виды криптографических
хеш-функций и провести анализ их особенностей и применения.
3.
Рассмотреть примеры хеш-функций.
Актуальность работы. В современном информационном обществе
несанкционированный доступ к данным и их подделка являются серьезными
угрозами. Криптографические хеш-функции играют важную роль в
обеспечении целостности информации и защите от несанкционированного
доступа. Поэтому изучение и анализ криптографических хеш-функций, их
применение и оценка актуальны для области информационной безопасности и
криптографии.
Работа
поможет
разобраться
в
принципах
работы
криптографических хеш-функций, выбрать подходящий алгоритм для
конкретной задачи и принять меры по защите цифровой информации.
3
Глава 1. Хеш-функции
1.1.
Первое упоминание хеш-функций
В ноябре 1958, во время шестидневной международной конференции,
посвященной
научной
информации,
изобретатель
Ханс
Петер
Лун
продемонстрировал несколько электромеханических машин. Выглядели они
весьма заурядно. Как и все прочие вычислительные устройства того времени,
они были угловатыми, практичными и предназначались для приема и
сортировки
стопок
перфокарт
в
слотах
и
корзинах.
Однако, в отличие от прочих вычислительных машин, устройства Луна
работали не с цифрами и формулами, а со словами и предложениями. Одна из
машин, привлекшая особое внимание, использовала алгоритм Луна под
названием KWIC, Key for Word in Context. Получив большой объем текста –
например, статью от 500 до 5000 слов, KWIC могла быстро и автономно
построить что-то наподобие индекса. [1, стр. 30]
В то время индексация, классификация и организация информации в
письменной форме были крайне трудоемкими процессом даже для опытных
специалистов. А объем информации в некоторых областях увеличивался
слишком быстро для того, чтобы его поддерживать. Отчаянно требовались
новые,
лучшие
средства
для
абстрагирования
и
обобщения.
Для
библиотекарей и ученых в области информации, собравшихся в Вашингтоне,
демонстрация KWIC была сродни землетрясению. Газеты по всей стране тут
же написали о выдающемся изобретении Луна.
К началу 1960-х годов KWIC стала основой для разработки сотен
компьютеризированных систем индексации, в том числе используемых
Химической реферативной службой, Biological Abstracts и Институтом
научной информации. Кто-то из экспертов назвал разработку KWIC
«величайшим событием в мире химии со времен изобретения пробирки». Лун,
старший
инженер
IBM,
при
помощи
KWIC
построил
также
«интеллектуальную систему» для бизнеса. (Примечание: именно он впервые и
4
предложил термин BI) Она могла идентифицировать и доставлять
релевантную информацию конкретным лицам крупных компаний. По сути,
KWIC была эквивалентом поисковика в то время: она позволяла
пользователям
быстро
находить
нужную
им
информацию.
Теперь мы считаем само собой разумеющимся, что компьютеры могут
работать с информацией и моментально предлагают нам обзоры ресторанов,
результаты спортивных матчей, а также цены на акции. Во времена Луна
компьютеры были простыми и примитивными. Его попытки работы с текстом
помогли сформировать более широкий взгляд на компьютеры и их
возможности. А предложенные им идеи до сих пор лежат в основе алгоритмов,
которые мы используем для онлайн-покупок, машинного перевода и
генетических исследований. Конечно, в 1950-х всё это было совершенно
немыслимо. Далее исследования привели Луна к хэш-функции, являвшуюся
решением еще даже не существовавшей проблемы.
5
1.2.
Требования к хеш-функциям
С точки зрения программиста, хеш-функция – это некий алгоритм,
который переводит строку произвольной длины в строку фиксированной
длины (вектор из бит или байт). Если есть файл размером несколько мегабайт
или в гигабайт, то с помощью хеш-функции можно получить строчку
определённого размера (например, 64 бита, 128 бит, 256 бит). Этот процесс
называется хешированием. Среди огромного количества хеш-функций для
блокчейна подходят далеко не все, а только обладающие криптографической
стойкостью. К таким хеш-функциям относятся те, которые удовлетворяют
следующим требованиям: [10, стр. 211]
 Необратимость. Это означает, что для определенного значения
функции свертки k должно быть невозможно вычислить блок данных
Y, для которого H(Y) = k.
 Устойчивость к коллизиям первого рода. Это значит, что для
заданного сообщения M нельзя путем вычислений найти другое
сообщение K, для которого H(K) = H(M).
 Устойчивость к коллизиям второго рода. Под эти понимается
невозможность путем вычислений найти пару сообщений (M, M') с
одинаковым дайджестом сообщения.
Указанные требования являются зависимыми друг от друга: [3, стр.
119]
 Функция свертки, не обладающая устойчивостью к коллизиям
первого рода, также не обладает устойчивостью к коллизиям
второго рода; противоположное неверно.
 Обратимая функция свертки не обладает устойчивостью к
коллизиям первого и второго рода.
6
Кроме того, для криптографических функций свертки большое
значение имеет сильное изменение хеша при незначительном изменении
аргумента. Значение дайджеста сообщения не должно позволять получить
информацию
даже
о
некоторых
битах
аргумента.
Как
видно
из
вышесказанного, криптографические хеш-функции представляют собой
чрезвычайно сложные вычисления, и для их полного понимания требуется
специальная математическая подготовка.
7
1.3.
Хеш-таблица
Предположим, что необходимо сохранить какое-нибудь соотношение
«ключ-строка», причём этих значений имеется несколько десятков или сотен
тысяч. Необходимо разместить их в оперативной памяти компьютера, а потом
иметь возможность быстро находить значение по ключу ту ячейку, на которую
он указывает. В этой ячейке хранится односвязный или двусвязный список,
список дублетов «ключ-значение». Если этот список пустой, то туда просто
помещается новая пара «ключ-значение». Если список непустой, тогда
проходим по всему списку и проверяем, нет ли совпадений по какому-то
ключу. Если нет, то добавляем новый элемент; если есть, тогда заменяем
элемент. По такому принципу работают хеш-таблицы. [4, стр. 300]
Теперь рассмотрим подробнее понятие коллизий. Предположим, что
объектов не 100 тысяч, а 1000 – столько же, сколько корзин выделили для
хранения в хеш-таблице. Если в результате вычисления хеш-кода для всех
ключей этот хеш-код будет одинаковый, то они все попадут в одну ячейку, а
все остальные будут пустые. И тогда операция вставки, поиска, обновления
приведёт к постоянному пролистыванию списка. Никакой пользы от введения
хеш-таблицы не получится, то есть это плохая хеш-функция, у которой очень
много коллизий.
У хорошей хеш-функции должно быть минимальное число коллизий:
все пары «ключ-значение» должны равномерно распределяться по хештаблице. В зависимости от ключа, его хеш-значения (разных ключей) должны
быть максимально различны насколько это возможно с учётом того, что хешкод принимает ограниченное число значений. В программировании по мере
разрастания хеш-таблицы в неё добавляются новые ячейки, а у хеш-кода
увеличивается область допустимых значений. Таким образом, стараются,
8
чтобы в одной ячейке содержалось максимум одно значение, т. е. ключзначение.
Для этого и используется хеш-код в программировании. Ключ может
быть произвольной структуры данных – строчка, число с десятью знаками
после запятой или какая-то более сложная структура. Если нужно
использовать её в качестве ключа для хеш-таблицы, необходимо реализовать
у этого ключа метод хеш-кода.
В языке Java есть функции hashcode () (для вычисления этого ключа) и
equals () (для сравнения). Hashcode () возвращает 32-битное значение, то есть
может принимать значения от −231 до (231 – 1). Но количество ячеек меньше,
поэтому хеш-код, после того, как его вычислили для ключа, ещё повторно
вычисляется. Самый простой способ – это поделить на 𝑛, где 𝑛 – число корзин
в хеш-таблице. [11, стр. 278]
На самом деле этот алгоритм немножко сложнее: он пытается
распространить по максимуму значения по всей хеш-таблице, делает
определённые предположения о том, какая же функция хеш-кода – плохая или
хорошая. Для поиска в таблице функция hashcode () должна быть быстро
вычислима, и для того, чтобы эта таблица была заполнена оптимальным
образом, число коллизий должно быть минимальным.
9
1.4.
Примеры «хороших» хеш-функций
Контрольная сумма или хеш-сумма – это значение, которое было
рассчитано по некоторому алгоритму на основе имеющихся файлов или
данных. Особенностью контрольной суммы является то, что ее алгоритм, при
одинаковых входных данных всегда выдает одинаковое значение. При этом
малейшее изменение входных данных кардинально меняет значение
контрольной суммы.
Эта особенность позволяет использовать контрольную сумму для
проверки целостности файлов или данных. Например, вам нужно отправить
какой-то файл, и вы хотите убедиться, что он не будет поврежден или изменен
на своем пути к получателю. Для решения этой задачи можно использовать
контрольную сумму. Высчитываете контрольную сумму и отправляете ее
вместе с файлом. После чего получатель файла повторно высчитывает
контрольную сумму файла и сравнивает ее с вашей контрольной суммой. Если
значения совпадают, значит файл оригинальный, если нет, значит он получил
какие-то изменения.
Также нужно упомянуть, что контрольную сумму нельзя использовать
для получения исходных данных. То есть нельзя «расшифровать» хеш-сумму
и получить данные которые были хешированы, хеш-сумму можно только
сравнить с другой хеш-суммой. Это особенность открывает дополнительные
возможности. Например, хеш-суммы используются для хранения паролей.
Когда вы регистрируетесь на каком-то сайте и вводите свой пароль, то он не
хранится на сервере в открытом виде. Вместо этого хранится только его
контрольная сумма. А когда вы входите в свой аккаунт с использованием
пароля, система получается ваш пароль, высчитывает его хеш-сумму и
10
сравнивает с хеш-суммой, которая хранится на сервере. Если хеш-суммы
совпали, значит пароль верный и вы можете войти в аккаунт, если хеш-суммы
не совпадают, значит пароль не верный и вас перенаправляют на страницу для
восстановления пароля.
Для
различных
высчитывания
алгоритмов
контрольной
или
так
суммы
называемых
существует
множество
хеш-функций.
Самыми
известными и популярными алгоритмы являются: CRC32, MD5, SHA-1 и
SHA-2. Но, есть и множество других алгоритмов, некоторые из которых имеют
широкое применения, а некоторые используются только для специфических
задач. При этом часть существующих алгоритмов признаны устаревшими или
уязвимыми и больше не используются. Так, алгоритм MD5 практически
полностью перестал использоваться поскольку выяснилось, что он может
выдавать одинаковые значения для разных входных значений.
11
1.5.
Криптографические хеш-функции
Если рассматривать с точки зрения криптографии, то хеш-функция – это
такая функция, которая устойчива ко криптографическим атакам двух типов:
[6, стр. 102]
1.
Атака на восстановление первого прообраза. Предположим,
что злоумышленник знает хеш-код некоторого сообщения, то есть он
знает, что ℎ – это результат вычисления хеш-функции от какого-то
сообщения. Сложность вычисления прообраза – это сложность поиска
такого сообщения 𝑀, что для него хеш-функция равна заданной.
2.
Устойчивость второго рода. Когда ничего не задано, кроме
алгоритма криптографического хеширования, злоумышленник ищет
два таких сообщения, у которых совпадает хеш-функция (задача поиска
коллизий).
Если такие коллизии легко найти алгоритмически или вычислительно,
то рассматриваемая хеш-функция считается плохой с криптографической
точки зрения. Более серьёзное определение использовалось при разработке
современного российского стандарта «Стрибог»: [10, стр. 254]
1.Сложность к вычислению прообраза: есть известно значение
функции, тогда должно быть сложно найти такое сообщение, хешфункция от которого равна известному.
2.Стойкость вычисления второго прообраза: пусть есть одно
значение, и известен хеш-код этого значения. Тогда злоумышленнику
должно быть сложно найти еще одно такое значение, чтобы его хешфункция совпадала с хеш-функцией первого значения.
3.Сложность к поиску коллизий: должно быть сложно найти два
таких сообщения, которые не равны, но у них равны хеш-коды.
12
4.Стойкость к удлинению прообраза: если злоумышленник не знает
сообщение, но знает его длину и хеш-код от него, то ему должно быть
сложно подобрать такое сообщение, которое, будучи дописанным к
оригинальному, даст какую-нибудь известную хеш-функцию. Другими
словами, не должно быть возможно злоумышленнику что-то менять путём
дополнения в сообщении, получая известный выход. Это можно
сформулировать по-другому: хеш-функция не должна быть хорошо
аддитируема.
13
1.6.
Идеальная хеш-функция
Будем говорить об идеальной хеш-функции с криптографической точки
зрения, у которой длина 𝑛 (то есть на выходе 𝑛 бит). Тогда вычисление
прообраза должно требовать как минимум 2𝑛 операций (под одной операцией
имеются в виду операции, сравнимые с вычислением хеширования). [2, стр.
201]
Злоумышленник будет искать прообраз для идеальной хеш-функции
следующим образом: у него есть число ℎ, и ему надо найти такое 𝑀, что
𝑓(𝑀 ) = ℎ. Если это идеальная хеш-функция, то злоумышленнику остается
лишь перебирать все возможные 𝑀 и проверять, чему равна хеш-функция от
этого сообщения. Результат вычисления, если 𝑀 перебирается полностью, есть
фактически случайное число. Если число ℎ лежит в диапазоне от 0 до 2𝑛 , то
тогда в среднем злоумышленник будет тратить на поиски нужного
ℎ
2𝑛
2
= 2𝑛−1 итераций. Таким образом, вычисление прообраза займёт в два
раза меньше итераций, чем в идеальном случае. [1, стр. 23]
Вычисление второго прообраза останется с числом 2𝑛 .
В поиске коллизий оценка даст √2𝑛 , причём это не совсем точный
результат. Это связано с парадоксом дней рождения, который состоит в
следующем: чтобы хотя бы у двух человек в классе вероятность совпадения
1
даты рождения превышала , нужно чуть более 20-ти человек, а не 180, как
2
кажется на первый взгляд. Это происходит из-за того, что нужно
анализировать не совпадения у одного человека с другим, а проводить анализ
всех возможных пар, которые создаются. [9, стр. 99] Добавление одного
человека увеличивает количество сочетаний не на одну пару, а на 𝑛 пар, где 𝑛
– число уже существующих. Число таких пар растёт примерно квадратично.
14
Поэтому, самая грубая оценка числа человек в классе – √365. Чем больше это
число, тем точнее эта оценка (по закону больших чисел). Таким образом, при
достаточно больших числах (2𝑛 ) оценка √2𝑛 будет достаточно точной.
Если злоумышленник хочет написать программу по поиску коллизий,
ему
будет
оптимально
вначале
завести
себе
словарь
коллизий.
Соответственно, дальше он вычисляет хеш-функцию от очередного
сообщения и проверяет, принадлежит эта хеш-функция очередному
сообщению или нет. Если принадлежит, то коллизия найдена, и тогда можно
найти по словарю исходное сообщение с данным хеш-кодом. Если нет, то он
пополняет словарь.
На деле таким алгоритмом никто не пользуется, потому что не хватит
памяти для словаря. Но если бы памяти хватило, то этот алгоритм имел бы
вычислительную
сложность
порядка
√2𝑛 .
Для
поиска
прообразов
используются так называемые радужные таблицы. [5, стр. 223]
Удлинение прообраза займёт 2𝑛 операций, потому что придётся
перебирать все возможные удлинения суффикса 𝑀.
15
Глава 2. Практическое применение хеш-функций
2.1. «Специальные» хеш-функции
Первую функцию, которую мы рассмотрим – это SHA-2.
В 1993 году национальный Институт Стандартов и Технологии (NIST –
National Institute of Standards and Technology) разработал алгоритм безопасного
хеширования SHA-0. В 1995 г. он был пересмотрен и опубликован под
названием FIP 180-1 (SHA-1). С публикацией в 2001 году FIPS PUB 180-2,
NIST добавил дополнительные хэш-функции в семейство SHA:SHA-224,
SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224. Алгоритмы
известны под общим названием SHA-2. [7, стр. 356]
Основой для SHA-2 является структура Меркла – Дамгарда. Входное
сообщение разбивается на блоки длины L. Для SHA-224 и SHA-256 𝐿 =
512 бит, для SHA-384,-512,-512/256, -512/224 𝐿 = 1024 бит. На каждом
раунде в функцию сжатия поступают входной блок сообщения и выход
предыдущего блока. Хэш блока 𝑀𝑖 равен 𝐻𝑖 = 𝑓(𝑀𝑖 , 𝐻𝑖−1 ). Хэш-значением
всего сообщения является выход последнего блока. Для SHA-224 и SHA256 0 ≤ 𝑖 ≤ 60, для SHA-384, -512, -512/256, -512/224 0 ≤ 𝑖 ≤ 80. (рис. 2.1.1)
16
Рис. 2.1.1.
Сравнение SHA-1 и SHA-2 приведено в таблице 1
Длина
Алгоритм сообщения
(в битах)
Длина
Длина
Длина
блока
дайджеста
Безопасность
слова (в
(в
сообщения (в
(в битах)
битах)
битах)
битах)
SHA-1
< 264
512
32
160
80
SHA-256
< 264
512
32
256
128
SHA-384
< 2128
1024
64
384
192
SHA-512
1024
64
512
< 2128
Таблица 1 «Сравнение SHA-1 и SHA-2»
256
В марте 2008 года индийские исследователи Сомитра Кумар Санадия и
Палаш Саркар опубликовали найденные ими коллизии для 22 итераций SHA256 и SHA-512. В сентябре 2008 года они представили метод конструирования
коллизий для 21 итерации SHA-2. Было принято решение отказаться от SHA2,и 2 октября 2012 года NIST утвердил в качестве стандарта SHA-3 алгоритм
Keccak. [7, стр. 360]
Далее рассмотрим SHA-3.
Алгоритм хеширования, разработанный группой авторов во главе с
Йоаном Дайменом. 2 октября 2012 года Keccak стал победителем конкурса
17
NIST. 5 августа 2015 года алгоритм утверждён и опубликован в качестве
стандарта
FIPS
202.
Алгоритм
SHA-3
построен
по
принципу
криптографической губки. [11, стр. 400]
На начальной стадии задаётся исходное состояние из нулевого вектора
размером до 1600 бит. Затем производится операция xor фрагмента исходного
сообщения 𝑃0 с фрагментом исходного состояния размером r, оставшаяся
часть
состояния
остаётся
незатронутой.
Результат
обрабатывается
функцией 𝑓, и так повторяется до исчерпания блоков исходного сообщения.
Функция 𝑓 выполняет перемешивание внутреннего состояния алгоритма.
Состояние представляется в виде массива элементами которого являются 64битные слова, инициализированные нулевыми битами. Функция 𝑓 выполняет
24 раунда, выход функции 𝑓 – хэш произвольной длины.
Рис. 2.1.2
Keccak – стойкая хеш-функция. Сложность атаки на все 24 раунда в 2010 году
составила 21590 и была улучшена в 2011 до 21579 .
18
2.2. Хэш-функции, основанные на блочных шифрах
В качестве функции сжатия можно использовать блочный шифр с
симметричными ключами, например трехкратный DES или AES. Рассмотрим
несколько схем для построения сжимающей функции.
Для начала рассмотри схему Рабина.
Сxема Рабина (рис. 2.2.1) базируется на схеме Меркеля-Дамгарда.
Функция сжатия заменяется любым алгоритмом шифрования. Входами
функции сжатия являются блок сообщения и выход предыдущего блока.
Выход представляет собой дайджест сообщения. Иными словами дайджест
сообщения 𝑀𝑖 равен 𝐻𝑖 = 𝐸(𝑀𝑖 , 𝐻𝑖−1 ).
Хэш-значением
всего
сообщения
является выход последнего блока. Размер дайджеста совпадает с размером
блочного шифра данных в основной криптографической системе. [4, стр. 229]
19
Рис. 2.2.1
Далее рассмотрим схему Девиса-Мейера (Davies-Mayer).
В схеме Девиса-Мейера (рис. 2.2.2), в отличии от схемы Рабина
блок 𝐻𝑖 и зашифрованный текст складываются с помощью XOR и создается
новый блок 𝐻𝑖+1 . [10, стр. 313]
Рис. 2.2.2
В завершении рассмотрим криптографическую хеш-функцию Whirlpool.
Whirlpool: криптографическая хеш-функция, разработанная Винсентом
Риджменом и Пауло Баретто. Впервые опубликована в ноябре 2000 года.
Осуществляет хэширование входного сообщения с длиной до 2256 бит.
Ообрена европейской организацией NESSIE (New European Schemes for
20
Signature, Integrity and Encryption – Новые европейские схемы подписей,
целостности и шифрования).
С момента создания в 2000 году Whirlpool дважды подвергалась
модификации. Первая версия, WHIRLPOOL-0, была представлена в качестве
кандидата в проекте NESSIE в 2000 году.
Модификация WHIRLPOOL-0, названная WHIRLPOOL-T, в 2003 году
была
добавлена
в
перечень
рекомендованных
к
использованию
криптографических функций NESSIE. Изменения касались блока подстановки
S-Box: в первой версии структура S-Box не была описана, и он генерировался
совершенно произвольно. В новой версии S-Box приобрёл чёткую структуру.
В 2004 году был обнаружен дефект в диффузных матрицах WHIRLPOOL-T [7,
стр. 83] После его исправления была принята конечная версия Whirlpool.
В 2009 году был опубликован новый способ атаки на хеш-функции - The
Rebound Attack [8, стр. 197]. Удалось сгенерировать коллизию для 4.5 раундoв
Whirlpool со сложностью 2120. Однако, данная атака не сильно повлияла на
криптостойкость Whirlpool, сложность вычислений оказалась достаточно
высока. На сегодняшний день хеш-функция Whirlpool устойчива ко всем
видам криптоанализа. Для построения Whirlpool используется структура
Меркла - Дамгарда и односторонняя функция сжатия Миагучи-Пренеля.
21
Заключение
В данной курсовой работе были рассмотрены криптографические хешфункции, их особенности. Также были приведены примеры некоторых хешфункций. Целью работы было изучение и анализ криптографических хешфункций, их принципов работы, алгоритмов, а также их разновидности.
Чтобы полностью достичь данной цели, нами было изучены основные
понятия хеш-функций. Также была приведена классификация различных
видов криптографических хеш-функций, и проведён анализ особенностей их
применения. И в завершении, рассмотрели примеры хеш-функций.
В результате исследования были получены следующие выводы.
Хеширование, которое зародилось еще в середине прошлого века,
активно используется в наши дни везде, где требуется произвести быструю
22
выборку данных. Появились новые методы хеширования, новые модификации
алгоритмов, написанных ранее. По мнению Дональда Кнута ([3], стр. 586),
наиболее важным открытием в области хеширования со времен 70 годов,
вероятно, является линейное хеширование Витольда Литвина [18]. Линейное
хеширование, которое не имеет ничего общего с классической технологией
линейной адресации, что позволяет многим хеш-адресам расти и выступать в
поле вставляемых и удаляемых элементов. Линейное хеширование может
также использоваться для огромных баз данных, распределенных между
разными узлами в сети.
Список используемых источников
1.
Л.Е. Бахаров Информационная безопасность и защита
информации: разделы криптография и стенография, 2019 — 59 с.
2.
П. Торстейнсон, Ганеш Дж. Гнана Арун Криптография и
безопасность в технологии. NET. — изд. Лаборатория знаний, 2020 —
482 с.
3.
Виктор Де Касто Просто Криптография. — изд. СТРАТА,
2014. — 204 с.
4.
Виктор Де Касто Про криптографию: символ – машина –
квант. — изд. СТРАТА, 2020. — 240 с.
5.
А.И. Музыкантский, В.В. Фурин Лекции по криптографии.
— М.: Изд-во Московский Центр Непрерывного Математического
23
Образования, 2014.— 68с.
6.
В.В. Ященко Введение в криптографию. — изд-во
Московский Центр Непрерывного Математического Образования,
2014.— 352 с
7.
А.П. Алфёров, А.Ю. Зубов, А.С. Кузьмин, А.В. Черемушкин
Основы криптографии. — Москва, 2-е изд. «Гелиос АРВ», 2002. — 480
с.
8.
Брюс Шнайер Прикладная криптография, Москва, изд-во
«Триумф» 2003. — 818 с.
9.
Айерлэнд К. Классическое введение в современную теорию
чисел / К. Айерлэнд, М. Роузен. — Пер. с англ. — М.: Мир, 1987. — 416
с.М.Г.
10.
Шнайер
Брюс,
Фергюсон
Нильс,
«Практическая
криптография» - Inc, издательство Wiley Publishing, стр. 432 , 2003.М.В.
11.
Менезес А., Оршот О., Ванстоун С. Справочник по
прикладной криптографии. — изд. «CRC Press», 1996. – 795 стр.
24
Download