Поиск по сайту:
Машины скорее обнаруживают наличие беспорядка, чем наводят порядок. (Алан.Дж.Перлис)

Криптографические хеш-функции

20.09.2021
Криптографические хеш-функции

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

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

 

Что такое хеш-функция?

Это односторонняя функция или уникальный идентификатор, который при вводе переменной длины выводит хэш-дайджест фиксированной длины. Однако длина вывода зависит от алгоритма хеширования. Как правило, наиболее известные алгоритмы имеют длину хеширования 160–512 бит.

Но для вывода данных с фиксированной длиной хэш-функции сначала принимают заранее установленный блок данных, известный как блоки данных. Размер блока данных варьируется от одного алгоритма к другому, но всегда один и тот же для одного алгоритма. Например, хеш-функция SHA-1 принимает размер блока 512 бит, и если вход имеет тот же размер, он запускается только один раз, то есть 80 раундов. Если размер входных данных равен 1024, алгоритм будет выполняться дважды.

На самом деле размер ввода редко бывает кратным 512 битам. В таких случаях мы используем метод, известный как Padding, который разделяет сообщение/данные на блоки данных одинаковой длины. Таким образом, функция выполняется на основе общего количества блоков данных и обрабатывает каждый блок данных за раз. Он принимает выход первого блока как вход второго блока и так далее. Следовательно, окончательный хеш – это совокупное значение всех выходных значений.

 

Хеширование и шифрование

Хеширование и шифрование – это уникальные и отдельные процессы со своим собственным набором функций, свойств и процедур.

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

Хеширование обеспечивает целостность данных. С другой стороны, шифрование обеспечивает конфиденциальность данных.

 

Полезность хешей

Хотя хеширование не является шифрованием, это форма криптографии, которая обеспечивает:

  • защита паролем
  • целостность данных/проверка файла
  • цифровые подписи
  • сигнатуры вирусов.

 

Защита паролем

Каждый раз, когда пользователь вводит пароль для аутентификации, хэш пароля сравнивается с файлом, содержащим системные хэши на компьютере. Система разрешает доступ только после успешной аутентификации. Например, Windows хранит хэши паролей в файле Security Account Manager (SAM), тогда как Linux хранит хэши паролей в файле /etc/shadow.

Читать  Системы контроля доступа

 

Проверка файла

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

Например, веб-сайт для загрузки ISO-образа Linux Mint 20.2 «Uma» -Cinnamon (64-разрядный) использует хеш-код SHA256 в файле sha256sum.txt. Чтобы проверить целостность образа, перейдите в каталог загруженного образа и сгенерируйте сумму SHA256 следующим образом:

ubuntu@ubuntu:~$ sha256sum -b *.iso

 

Sha256sum.txt файл содержит четыре хэш в зависимости от разных версий Desktop. Сравните сгенерированное значение хэша с хешем образа ISO рабочего стола Cinnamon в файле, чтобы проверить его целостность, если они совпадают; это означает, что образ ISO готов к использованию.

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

 

Цифровые подписи

Цифровая подпись подтверждает подлинность отправителя, добавляя к исходному сообщению зашифрованный дайджест сообщения. Отправитель выполняет шифрование с помощью закрытого ключа, чтобы гарантировать невозможность отказа, в то время как хэш защищает от подделки данных и обеспечивает целостность, т. е. digital signature=sender’s private key(hash(message)).

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

 

Сигнатуры вирусов

Антивирусные решения используют различные подходы к выявлению вредоносных программ; один из них – сопоставление хешей. Они берут часть или блок исполняемого файла, чтобы создать хэш и сравнить его с хешами вредоносного ПО, хранящимися в их базах данных.

 

Свойства хешей

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

  • Хороший алгоритм хеширования возвращает хеш-значение фиксированного размера/длины независимо от размера ввода.
  • Он предлагает устойчивость к предварительному изображению, что означает, что невозможно восстановить исходное значение, изменив хэш.
  • Сильный алгоритм хеширования обеспечивает устойчивость к коллизиям. То есть никакие два разных входа не могут иметь одинаковый результат.
  • Незначительное изменение на входе вызывает значительные изменения на выходе. Это свойство хэшей помогает обеспечить целостность файла/данных.
  • Вычислительная скорость криптографических хеш-функций – еще одно идеальное свойство. Однако это субъективно и зависит от цели и области применения.

Режимы хэшей

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

  • MD5: MD5 – пятая версия алгоритмов дайджеста сообщений с выходной длиной 128 бит. Это был наиболее широко известный алгоритм хеширования, пока он не стал подвержен атакам с коллизией (подробнее об этом позже). Например, до появления алгоритмов безопасного хеширования (SHA) алгоритм хеширования MD5 был наиболее часто используемым методом проверки целостности файлов.
  • SHA: алгоритм безопасного хеширования был введен АНБ. Это набор алгоритмов, содержащий четыре варианта функций SHA-224, SHA-256, SHA-384 и SHA-512. Имя каждого варианта представляет размер его вывода. Это более безопасный алгоритм хеширования, поскольку до сих пор не известно никаких компромиссов с алгоритмами хеширования.
  • NTLM: алгоритм хеширования NT LAN Manager используется для хеширования паролей. NTLM использует циклические проверки избыточности и дайджесты сообщений, но его единственный недостаток заключается в том, что он основан на шифре RC4, который, в отличие от новых криптографических протоколов, AES и SHA-256 были целью успешной атаки. NTLMv2 решает эти проблемы с помощью 128-разрядной системы HMAC-MD5.
Читать  Что можно сделать с вашим IP-адресом и как это предотвратить? Часть 2

 

Плохие хэши

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

 

Коллизия

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

Радужные таблицы

Как упоминалось ранее, операционные системы не хранят пароли в виде открытого текста. Следовательно, радужные таблицы – это предварительно вычисленные базы данных или таблицы поиска, которые сопоставляют хэши с паролем в виде открытого текста. Однако радужные таблицы используют время для взлома хэшей с большим объемом памяти.

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

 

John the Ripper

John – мощный и универсальный инструмент, помогающий взламывать хеш-коды. Это похоже на автоматическую атаку по словарю, которая использует список слов или словарь для вычисления хэша и сравнения. Следовательно, он допускает грубую силу для массива режимов хеширования. Примером словаря является файл rockyou.txt, содержащий пароли от взлома на сайте rockyou.com. Список слов доступен в Github SecLists в /Passwords/Leaked-Databases.

Самый простой способ взломать хэш – использовать команду john с опцией формата, чтобы указать тип хеша, путь к списку слов и файл с хеш-значением. В Kali Linux путь к файлу rouckyou.txt – /usr/share/wordlists.

ubuntu@ubuntu:~$ john --format= --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

 

Читать  Важность TLS в Linux

Pass The Hash

Pass-the-hash – это кража учетных данных, которая может привести к горизонтальному повышению привилегий. Хотя атака может происходить в системах Linux/Unix, она более распространена в Windows. Windows аутентифицирует законного пользователя, сопоставляя хэш введенного пароля, который является статическим и изменяется только при изменении пароля. Кроме того, пароли доступны в различных местах Windows, например, в памяти процессов SAM и Local Security Authority Subsystem (LSASS) и т. д.

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

Атака по случаю дня рождения

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

 

Усиление хэшей

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

 

Соленые хэши.

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

 

Хэши с ключами

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

 

Адаптивная хеш-функция

Адаптивные хеш-функции предназначены для повторения их внутренней работы, поскольку название предполагает, что пользователь может регулировать количество итераций. Растягивание ключа – это один из методов, который принимает слабый ключ в качестве входных данных, обрабатывает его и повторяет процесс для вывода мощного ключа большого размера. Процесс может увеличить размер ключа до 128 бит, что затруднительно для атаки методом перебора. PBKDF2 и bcrypt – примеры адаптивных хэш-функций.

 

Заключение

В статье представлен обширный обзор протоколов криптографического хеширования. Он демонстрирует, как проверить целостность файла, и дает обзор того, как можно взломать хэши паролей с помощью инструмента John the Ripper. Мы также обсуждаем ряд атак и мер по созданию невзламываемых хэшей с помощью соления, хэшей с ключами и адаптивных хеш-функций.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

восемнадцать − 10 =

**ссылки nofollow

Это может быть вам интересно


Рекомендуемое
Тайваньская компания SilverStone Technology представила новый корпус для ПК, предназначенный…

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: