17:01 Криптографическая хеш-функция | |
Криптографической хэш - функции ( CHF ) является хэш - функция , которая подходит для использования в криптографии . Это математический алгоритм, который отображает данные произвольного размера (часто называемые «сообщением») в битовую строку фиксированного размера («значение хеша», «хэш» или «дайджест сообщения») и является односторонним. функция , то есть функция, которую практически невозможно инвертировать. В идеале, единственный способ найти сообщение, которое генерирует заданный хэш, - это попытаться перебором возможных входных данных методом грубой силы, чтобы определить, соответствуют ли они совпадению, или использовать радужную таблицу.согласованных хэшей. Криптографические хеш-функции являются основным инструментом современной криптографии
Идеальная криптографическая хеш-функция обладает следующими основными свойствами: оно является детерминированным , что означает, что одно и то же сообщение всегда приводит к одному и тому же хешу быстро вычислить значение хеш-функции для любого сообщения невозможно создать сообщение, которое выдает заданное значение хеша невозможно найти два разных сообщения с одинаковым хеш-значением небольшое изменение в сообщении должно настолько сильно изменить значение хеш-функции, что новое значение хеш-функции кажется некоррелированным со старым значением хеш-функции ( лавинный эффект ) Криптографические хеш-функции имеют множество приложений для защиты информации, в частности, в цифровых подписях , кодах аутентификации сообщений (MAC) и других формах аутентификации . Их также можно использовать в качестве обычных хеш-функций , для индексации данных в хеш-таблицах , для снятия отпечатков пальцев , для обнаружения дублирующихся данных или уникальной идентификации файлов, а также в качестве контрольных сумм для обнаружения случайного повреждения данных. Действительно, в контексте информационной безопасности криптографические хеш-значения иногда называют ( цифровыми ) отпечатками пальцев , контрольными суммами или просто хеш-значениями.хотя все эти термины обозначают более общие функции с довольно разными свойствами и назначением. Важным применением безопасных хэшей является проверка целостности сообщений . Сравнение дайджестов сообщений (хеш-кодов над сообщением), рассчитанных до и после передачи, может определить, были ли внесены какие-либо изменения в сообщение или файл . Хеш-дайджесты MD5 , SHA1 или SHA2 иногда публикуются на веб-сайтах или форумах для проверки целостности загружаемых файлов , включая файлы, полученные с помощью совместного использования файлов, например зеркального отображения . Эта практика устанавливает цепочку доверия, пока хеши размещаются на сайте, аутентифицированном HTTPS . Использование криптографического хэша и цепочки доверия обнаруживает вредоносные изменения в файле. Другие коды обнаружения ошибок, такие как циклические проверки избыточности, предотвращают только несанкционированные изменения файла. Почти все схемы цифровой подписи требуют, чтобы криптографический хеш вычислялся по сообщению. Это позволяет выполнять вычисление подписи для сравнительно небольшого хэш-кода статического размера. Сообщение считается подлинным, если проверка подписи завершается успешно с учетом подписи и пересчитанного хеш-дайджеста над сообщением. Таким образом, свойство целостности сообщения криптографического хэша используется для создания безопасных и эффективных схем цифровой подписи. Проверка пароля обычно основывается на криптографических хешах. Хранение всех паролей пользователей в виде открытого текста может привести к серьезным нарушениям безопасности, если файл паролей будет взломан. Один из способов уменьшить эту опасность - хранить только хэш-дайджест каждого пароля. Для аутентификации пользователя пароль, предоставленный пользователем, хэшируется и сравнивается с сохраненным хешем. Метод сброса пароля требуется при хешировании пароля; Исходные пароли не могут быть пересчитаны из сохраненного значения хеша. Стандартные криптографические хеш-функции предназначены для быстрого вычисления, и, как следствие, можно попытаться угадать пароли с высокой скоростью. Обычные графические процессоры могут пробовать миллиарды возможных паролей каждую секунду. Функции хеширования паролей, которые выполняют растяжение ключей, такие как PBKDF2 , scrypt или Argon2, обычно используют многократные вызовы криптографического хэша, чтобы увеличить время (и в некоторых случаях компьютерную память), необходимое для выполнения атак методом перебора на сохраненные хеш-коды паролей. Хэш пароля требует использования большой случайной, не секретной солизначение, которое можно сохранить с помощью хэша пароля. Соль рандомизирует выходные данные хэша пароля, делая невозможным для злоумышленника хранить таблицы паролей и предварительно вычисленные значения хэша, с которыми можно сравнить дайджест хэша пароля. Вывод хэш-функции пароля также может использоваться в качестве криптографического ключа. Поэтому хэши паролей также называются функциями определения ключей на основе паролей (PBKDF). Система проверки работоспособности (или протокол, или функция) - это экономическая мера для предотвращения атак типа «отказ в обслуживании» и других злоупотреблений услугами, таких как спам в сети, требуя некоторой работы со стороны запрашивающей стороны службы, что обычно означает время обработки компьютер. Ключевой особенностью этих схем является их асимметрия: работа должна быть умеренно тяжелой (но выполнимой) на стороне запрашивающей стороны, но легко проверяемой для поставщика услуг. Одна популярная система - используется для майнинга биткойнов и хэшкаша- использует частичные инверсии хеша, чтобы доказать, что работа была выполнена, чтобы разблокировать награду за майнинг в биткойнах и как знак доброй воли для отправки электронного письма в Hashcash. Отправитель должен найти сообщение, значение хеша которого начинается с числа нулевых битов. Средняя работа, которую должен выполнить отправитель, чтобы найти действительное сообщение, экспоненциальна по количеству нулевых битов, требуемых в хэш-значении, в то время как получатель может проверить достоверность сообщения, выполнив одну хеш-функцию. Например, в Hashcash отправителю предлагается создать заголовок, у которого 160-битное значение SHA-1 хэша имеет первые 20 битов в виде нулей. В среднем отправителю придется попробовать 2 19 раз, чтобы найти правильный заголовок. Дайджест сообщения также может служить средством надежной идентификации файла; Несколько систем управления исходным кодом , в том числе Git , Mercurial и Monotone , используют набор различных типов контента (файловое содержимое, деревья каталогов, информацию о предках и т. д.), чтобы однозначно идентифицировать их. Хэши используются для идентификации файлов в одноранговых файлообменных сетях. Например, в ссылке ed2k хэш- вариант MD4 объединяется с размером файла, предоставляя достаточную информацию для поиска источников файла, загрузки файла и проверки его содержимого. Магнитные ссылкидругой пример. Такие файловые хеши часто являются верхним хеш- списком или хеш-деревом, что дает дополнительные преимущества. Одним из основных применений хеш-функции является возможность быстрого просмотра данных в хеш-таблице . Будучи хеш-функциями определенного вида, криптографические хеш-функции хорошо подходят и для этого приложения. Однако по сравнению со стандартными хеш-функциями криптографические хеш-функции, как правило, намного дороже в вычислительном отношении. По этой причине они, как правило, используются в тех случаях, когда пользователям необходимо защитить себя от возможности подделки (создания данных с таким же дайджестом, что и ожидаемые данные) потенциально злонамеренными участниками. Существует несколько методов использования блочного шифра для построения криптографической хеш-функции, в частности, односторонней функции сжатия . Методы напоминают режимы работы блочного шифра, обычно используемые для шифрования. Многие известные хеш-функции, включая MD4 , MD5 , SHA-1 и SHA-2 , построены из компонентов, подобных блочному шифру, разработанных для этой цели, с обратной связью, чтобы гарантировать, что получающаяся функция не является обратимой. Финалисты SHA-3 включали функции с компонентами, подобными блочному шифру (например, Skein , BLAKE ), хотя окончательно выбранная функция Keccak была построена на криптографической губке . Вместо этих пользовательских блочных шифров можно использовать стандартный блочный шифр, такой как AES ; это может быть полезно, когда встроенная система должна реализовывать как шифрование, так и хеширование с минимальным размером кода или аппаратной областью. Однако такой подход может привести к затратам на эффективность и безопасность. Шифры в хэш-функциях созданы для хеширования: они используют большие ключи и блоки, могут эффективно менять ключи в каждом блоке и были разработаны и проверены на устойчивость к атакам с использованием связанных ключей, Шифры общего назначения, как правило, имеют разные цели проектирования. В частности, AES имеет размеры ключей и блоков, что делает его нетривиальным для генерации длинных значений хеша; AES-шифрование становится менее эффективным, когда ключ меняет каждый блок; А атаки по связанному ключу делают его потенциально менее безопасным для использования в хэш-функции, чем для шифрования. Хэш-функция должна иметь возможность обрабатывать сообщение произвольной длины в вывод фиксированной длины. Это может быть достигнуто путем разбиения входа на ряд блоков одинакового размера и последовательной работы с ними с использованием функции одностороннего сжатия . Функция сжатия может быть специально разработана для хэширования или построена из блочного шифра. Хеш-функция, построенная по конструкции Меркля-Дамгарда, так же устойчива к столкновениям, как и ее функция сжатия; любое столкновение для полной хэш-функции может быть отслежено до столкновения в функции сжатия. Последний обработанный блок также должен быть однозначно дополнен по длине ; это имеет решающее значение для безопасности этой конструкции. Эта конструкция называется конструкцией Меркле-Дамгарда . Наиболее распространенные классические хеш-функции, включая SHA-1 и MD5 , принимают эту форму. Существует длинный список криптографических хеш-функций, но многие из них признаны уязвимыми и не должны использоваться. Например, NIST выбрал 51 хэш-функцию в качестве кандидатов на 1-й тур хэш-соревнования SHA-3, из которых 10 были признаны неработающими, а 16 показали значительные недостатки и поэтому не прошли в следующий раунд; Более подробную информацию можно найти в основной статье о конкурсах хеш-функций NIST . Даже если хэш - функция никогда не была нарушена, успешная атака против ослабленного варианта может подорвать доверие экспертов. Например, в августе 2004 года были обнаружены коллизии в нескольких популярных тогда хэш-функциях, включая MD5. Эти недостатки ставят под сомнение безопасность более сильных алгоритмов, основанных на слабых хеш-функциях, в частности SHA-1 (усиленная версия SHA-0), RIPEMD-128 и RIPEMD-160 (обе усиленные версии RIPEMD ). | |
|
Всього коментарів: 0 | |