24 / 736HASH

Hash

криптографический отпечаток

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

Хеш — результат вычисления над данными, например файлом или транзакцией Bitcoin. Одинаковые данные и метод дают одинаковый отпечаток. Криптографическая функция должна затруднять поиск других данных с тем же результатом или входа для заданного результата. Хеш не является зашифрованной копией данных.

Вы скачиваете установочный файл. Издатель опубликовал контрольный отпечаток, а вы тем же алгоритмом вычисляете отпечаток своей копии. Если они различаются, данные не одинаковы: файл мог быть повреждён, подменён или изменён. Совпадение с надёжным отпечатком, напротив, даёт веское основание считать копию правильной. Не нужно вручную сравнивать весь файл. Например, SHA-256 создаёт результат длиной 256 бит, обычно записанный 64 шестнадцатеричными символами, как для короткого сообщения, так и для большого файла. [1] [3]

Важно происхождение контрольного отпечатка. Если злоумышленник заменит на сайте и файл, и опубликованный хеш, они будут совпадать. Для хеширования не нужен секретный ключ: отпечаток открытых данных может вычислить любой. Поэтому хеш отличается от цифровой подписи, которой владелец ключа удостоверяет данные. При проверке Bitcoin Core, помимо хеша файла, проверяют подписи списка отпечатков и надёжность ключей подписантов. Сам хеш не доказывает авторство, безопасность программы или правдивость документа. [3]

У хеширования нет обратного шага «расшифровать». Результат фиксированной длины не содержит всего файла, поэтому не является резервной копией. Но это не означает, что хеш надёжно скрывает любые данные. Для короткого распространённого пароля злоумышленник может перебирать вероятные пароли и сравнивать отпечатки. Обращать функцию не требуется: достаточно угадать вход. Один быстрый хеш не заменяет ни сильный пароль, ни метод, предназначенный для безопасного хранения паролей. [1] [5]

При поиске preimage дан конкретный отпечаток, и нужно найти данные, которые его создадут. Для коллизии достаточно любых двух разных входов с одинаковым хешем. Коллизии математически существуют, поскольку возможных входов больше, чем результатов фиксированной длины. Безопасность криптографической функции состоит в практической трудности их поиска, а не в невозможности. Кроме того, «хеш» не название единственного алгоритма: не всякая хеш-функция предназначена для криптографической безопасности. [1]

Bitcoin использует хеши для идентификации транзакций, связывания блоков и проверки работы майнеров. Однако точный рецепт различается. Хеш заголовка блока вычисляют двойным применением SHA-256; HASH160 сочетает SHA-256 с RIPEMD-160. Tagged hash дополнительно разделяет назначения вычислений при помощи метки. Для самостоятельной проверки нужны правильный алгоритм и точные входные байты — базовые единицы данных. Текст «61» состоит из других байтов, чем один байт с шестнадцатеричным значением 61, соответствующий букве a в ASCII. Хешировать отображаемую запись вместо самих данных — значит выполнить другое вычисление. [2] [4]

Для полной картины прочитайте эту статью вместе с SHA-256, Proof of Work, Block Header, Транзакция, Merkle Tree, Bitcoin. На эту статью также ссылаются SHA-256, Nonce, HTLC, Hashcash.

DOC · 001NIST FIPS 180-4: Secure Hash StandardПервичный источник DOC · 002Bitcoin Core v29.0: hash constructionsПервичный источник DOC · 003Bitcoin Core: Verify your downloadПервичный источник DOC · 004BIP340: tagged hashesПервичный источник DOC · 005NIST SP800-63B: Password verifiersПервичный источник
Обновлено: Сначала источники · Не является инвестиционной рекомендацией