Крипто / Билет №15
.docxБилет №15
Хэш-функцией называется алгоритм, конвертирующий строку произвольной длины (сообщение) в битовую строку фиксированной длины, называемой хэш-кодом, проверочной суммой или цифровым отпечатком.
CRC32 (Cyclic redundancy check - Циклический избыточный код) простая хэш функция разработанная для защиты данных от случайных изменений в компьютерных устройствах, таких как сетевые карты и жёсткие диски. CRC32 определяется международным стандартом CRC32-IEEE 802.3 Алгоритм очень быстр и, несмотря на полную криптографическую незащищённость, широко используется благодаря простоте реализации и скорости. 32-битный хэш-код обычно представляется шестнадцатеричным числом из 8 символов.
MD4 алгоритм хэширования, разработанный Рональдом Л. Ривестом из RSA Data Security, Inc. В настоящее время считается ненадёжным. Это быстрый алгоритм (на 32-битных процессорах) и его используют при вычислении хэшей в peer-to-peer сети EDonkey 2000. Алгоритм описан в RFC 1320. Хэш-код представляет шестнадцатеричное число из 32 символов.
MD5 ещё один алгоритм хэширования, разработанный Рональдом Л. Ривестом из RSA Data Security, Inc. Представляет улучшенную версию MD4. Алгоритм описан в RFC 1321. В течении многих лет MD5 был стандартом интернет, но сейчас считается сломанным. Хэш-код представляет шестнадцатеричное число из 32 символов.
SHA1 (Secure Hash Algorithm 1) алгоритм хэширования, разработанный NSA в 1993. Описан в RFC 3174. Он примерно в 2-3 раза медленнее алгоритма MD5. Хэш-код представляет шестнадцатеричное число длины 40.
Tiger современная хэш-функция изобретённая Россом Андерсом и Эли Бихамом. Была специально придумана такой, чтобы быстро вычисляться на 64-битных процессорах. См. описание. Хэш-код представляет шестнадцатеричное число длины 48.
TTH (Tiger Tree Hash) хэш, вычисляющийся в древовидной форме с использованием алгоритма Tiger. См.описание. TTH используется в нескольких peer-to-peer сетях: Direct Connect, Gnutella, Gnutella2, а также в таких программах как DC++, Phex и Shareaza. Хэш-код представляет base32-закодированную строку длины 39.
BTIH (BitTorrent InfoHash) используется в p2p сети BitTorrent. Хэш-сумма зависит не только от данных, но и от имени файла и даже от программы вычисляющей хэш. RHash использует тот же метод, что и uTorrent. Хэш является строкой из 40 шестнадцатеричных чисел.
EDonkey 2000 один из самых быстрых алгоритмов хэширования. Он основан на устаревшем MD4 и используется в p2p сети EDonkey. Описание алгоритма: EDonkey network. Хэш-код представляет шестнадцатеричное число из 32 символов.
AICH (Advanced Intelligent Corruption Handler) хэш, вычисляющийся в древовидной форме с использованием алгоритма SHA1. См. описание. Хэш используется в p2p сети EDonkey и обычно включается в EDonkey-линки. Хэш-код представляет base32-закодированную строку длиной в 32 символа.
WHIRLPOOL - хэш функция, рекоммендованная проектом NESSIE и принятая как ISO/IEC 10118-3:2004международный стандарт. Хэш представляется 128-цифровым шестнадцатеричным числом.
GOST - хэш-функция определённая в российском государственном стандарте ГОСТ Р 34.11-94. Существует две широко распространённые версии алгоритма - с «тестовым» и CryptoPro наборами параметров. Хэш функция медленнее аналогичных, но используется для цифровой подписи в российских государственных банках и предприятиях. Хэш представляет шестнадцатеричную строку длины 64.
HAS-160 - корейская хэш-сумма, разработанная для корейского алгоритма цифровой подписи (KCDSA). Хэш представляет шестнадцатеричную строку длины 40.
RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest) - 160-битная хэш-функция. Спецификация: веб-страница RIPEMD-160. Хэш представляет шестнадцатеричную строку длины 40.
EDON-R - семейство хэш-функций с произвольной длиной хэша. RHash поддерживает 256-битный и 512-битный варианты. 512-битный EDON-R является одним из самых быстрых алгоритмов на 64-битных процессорах. Хэш функция описана в статье: D. Gligoroski, S. Markovski, L. Kocarev Edon-R, An Infinite Family of Cryptographic Hash Functions (2006). 256-битный и 512-битный хэши представляют строку длиной 64 и 128 шестнадцатеричных символов соответсвенно.
Snefru - хэш функция разработанная Ральфом Меркле в 1990 и названная в честь египетского фараона Sneferu. В настоящее время она считается сломанной, к тому же она значительно медленнее современных хэш функций. Хэш 128-битного и 256-битного Snefru представляется шестнадцатеричной строкой длины 32 и 64 символа соответственно.
Хеш.
http://ru.wikipedia.org/wiki/Хеширование
Хеш (хэш, криптографический хеш) - значение, рассчитанное по входным данным с помощью криптографического алгоритма.
Преимущества:
-
малый размер
-
стандартный размер
-
нельзя подобрать исходные данные к значению за приемлемое время (например: получить пароль)
Недостатки:
-
низкая скорость вычисления (сопоставима с шифрованием)
-
можно подменить
-
для одного значения существует множество исходных данных
Рис. Основная задача хеш функций
Вычисляют хеш шифрованием данных блочным алгоритмом в режимах CBC, но со стандартным (известным) ключом. Хешем является последний шифрованный блок.
ГОСТ Р 34.11-2012 (полное название: «ГОСТ Р 34.11-2012. Информационная технология. Криптографическая защита информации. Функция хэширования») — действующий российский криптографический стандарт, определяющий алгоритм и процедуру вычисления хеш-функции.
Разработан Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества «Информационные технологии и коммуникационные системы» (ОАО «ИнфоТеКС»).
-
Дата введения: 1 января 2013 года[1]
-
Размер хеша: 256 или 512 бит
-
Размер блока входных данных: 512 бит
-
Разработчики: Центр защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества «Информационные технологии и коммуникационные системы» (ОАО «ИнфоТеКС»)
Стандарт определяет алгоритм и процедуру вычисления хеш-функции для последовательности символов. Этот стандарт разработан и введён в качестве замены устаревшему стандарту ГОСТ Р 34.11-94.
Пример вычисления:
исходный текст: Контроль целостности данных
md2 (длина 128 бит) |
7e347a5f3a3d8c6837d7accbed3e0b1e |
md4 (длина 128 бит) |
e37e491b9b4ea133df9964b25d7c7cd9 |
md5 (длина 128 бит) |
8ab8a5cf989e220ff8d39be415b903d5 |
sha1 (длина 160 бит) |
63cdc45bd8a857007d0be8c435e1e547653482d3 |
sha224 (длина 224 бит) |
670c98e5b7ce7bd2c7efb98b6ed448e0a6f3247e3fdeb678dde61bce |
sha256 (длина 256 бит) |
1a97bcc0fbcf6722a8aac7b73d12700c0022778904790ce9eee7656f12d95dc2 |
sha384 (длина 384 бит) |
b87b59cad0db141378d8ff04e46d00dd137113391d2a7009d640dd018680c459 310bfbdfef6b3258aeaa4b8146105698 |
sha512 (длина 512 бит) |
3f7b9d8b24fb1d764026fe2b0f72ad62d65fd1c5d77a18784108a69e8ad172c2 e6583989439aea658a2111525897d43af0f6c50cf299b360c21b3e02e8706f4e |
ГОСТ Р 34.11-94 (длина 256 бит) |
d38e4f1bc5d03601486f4aca83fed00c82e1a36fdac27806cce4b9464af1e9f9 |
MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом изМассачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности.
Алгоритм MD5 уязвим к некоторым атакам, например возможно создание двух сообщений с одинаковой хеш-суммой, поэтому его использование не рекомендуется.[1] Альтернативой являются алгоритмы семейства SHA-2.
Алгоритм MD5
На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям.
Ниже приведены 5 шагов алгоритма:
Шаг 1. Выравнивание потока[править | править исходный текст]
Сначала дописывают единичный бит в конец потока (байт 0x80), затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер был сравним с 448 по модулю 512 (). Выравнивание происходит, даже если длина уже сравнима с 448.
Шаг 2. Добавление длины сообщения[править | править исходный текст]
В оставшиеся 64 бита дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит , то дописывают только младшие биты(эквивалентно взятию модуля от ). После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.
Шаг 3. Инициализация буфера[править | править исходный текст]
Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами (шестнадцатеричное представление, сначала младший байт):
Шаг 4. Вычисление в цикле[править | править исходный текст]
Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).
AA = A
BB = B
CC = C
DD = D
Шаг 5. Результат вычислений[править | править исходный текст]
Результат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово, начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5-хеш. 1,0,15,34,17,18...
MD5-хеши[править | править исходный текст]
Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных цифр.
Несколько примеров хеша:
MD5("md5") = 1bc29b36f623ba82aaf6724fd3b16718
Даже небольшое изменение входного сообщения (в нашем случае на один бит: ASCII символ «5» с кодом 0x3516 = 0001101012 заменяется на символ «4» с кодом 0x3416 = 0001101002) приводит к полному изменению хеша. Такое свойство алгоритма называется лавинным эффектом.
MD5("md4") = c93d3bf7a7c4afe94b64e30c2ce39f4f
Пример MD5-хеша для «нулевой» строки:
MD5("") = d41d8cd98f00b204e9800998ecf8427e