Хэш-функция: различия между версиями
[непроверенная версия] | [досмотренная версия] |
Нет описания правки |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{#seo: | {{#seo: | ||
|title= Хеш- | |title= Хеш-функция — материал из Decimal Wiki | ||
|titlemode= append | |titlemode= append | ||
|keywords= Хеш-функция | |keywords= Хеш-функция | ||
|description= Хеш-функция | |description= Хеш-функция: как работают криптографические хеш-функции | ||
}} | }} | ||
[[File:Wiki-images.jpg|700px|thumb|right]] | [[File:Wiki-images.jpg|700px|thumb|right]] | ||
'''Хеш-функция''' | '''Хеш-фу́нкция''' или '''хэш-функция''' (англ. ''hash function'' от ''to hash'' — «превращать в фарш, мешанину») — математическое преобразование информации в короткую строку определённой длины. | ||
Логика этого процесса такова: '''вы вводите что-то длинное, а на выходе получается что-то короткое, олицетворяющее то длинное.''' | Логика этого процесса такова: '''вы вводите что-то длинное, а на выходе получается что-то короткое, олицетворяющее то длинное.''' | ||
Строка 12: | Строка 12: | ||
В случае криптографических хеш-функций '''ввод''' не обязательно является длинным. Это может быть что-то очень короткое, например, слово «бит», или очень длинное, например, весь текст [[Yellow Paper]] [[DecimalChain]], и на выходе вы получите уникальную строку установленной длины. | В случае криптографических хеш-функций '''ввод''' не обязательно является длинным. Это может быть что-то очень короткое, например, слово «бит», или очень длинное, например, весь текст [[Yellow Paper]] [[DecimalChain]], и на выходе вы получите уникальную строку установленной длины. | ||
Кроме того, '''в отличие от простых «сокращателей»''' | Кроме того, '''в отличие от простых «сокращателей» ссылок''', хеш-функции в [[криптовалюта]]х действуют только в одном направлении. Несмотря на то что одни и те же данные всегда дадут один и тот же хеш, воспроизвести изначальную информацию по полученному из них хешу невозможно. | ||
'''Понятие | '''Понятие «хеширование»''' означает однозначное и точно известное вычисление набора символов фиксированной длины на основе входных данных произвольной длины. При этом изменение хотя бы одного символа в исходных данных гарантирует, что и полученная фиксированная строка будет иной. Можно сказать, что хеширование — это «снятие отпечатка» с большого набора данных. | ||
Анализ при помощи хеш-функций часто используют для контроля целостности важных файлов операционной системы, программ и данных. Контроль может производиться как по необходимости, так и на регулярной основе. | Анализ при помощи хеш-функций часто используют для контроля целостности важных файлов операционной системы, программ и данных. Контроль может производиться как по необходимости, так и на регулярной основе. | ||
Строка 20: | Строка 20: | ||
Вначале определяют, целостность каких файлов нужно контролировать. Для каждого файла производятся вычисления значения его хеша по специальному алгоритму с сохранением результата. Через необходимое время делают аналогичный расчёт и сравнивают результаты. Если значения отличаются, значит, информация содержащаяся в файле была изменена. | Вначале определяют, целостность каких файлов нужно контролировать. Для каждого файла производятся вычисления значения его хеша по специальному алгоритму с сохранением результата. Через необходимое время делают аналогичный расчёт и сравнивают результаты. Если значения отличаются, значит, информация содержащаяся в файле была изменена. | ||
'''Давайте рассмотрим пример''': вы скачали большой файл (положим, zip-архив) и желаете убедиться, что в нём нет ошибок. Вы можете узнать | {{комментарий|'''Давайте рассмотрим пример''': вы скачали большой файл (положим, zip-архив) и желаете убедиться, что в нём нет ошибок. Вы можете узнать хеш-сумму (тот самый отпечаток) этого файла и сверить его с опубликованным на сайте. Если строки хеш-сумм различаются, то файл однозначно «битый».}} | ||
== Как работают криптографические хеш-функции == | == Как работают криптографические хеш-функции == | ||
Существуют разные виды криптографических хеш-функций, и каждая из них работает по-разному. | Существуют разные виды криптографических хеш-функций, и каждая из них работает по-разному. | ||
Строка 39: | Строка 38: | ||
Представим, что хакер атакует блок 9 и пытается внести коррективы в данные. Из-за свойств хеш-функций даже небольшое изменение сильно трансформирует хеш. Это означает, что любые незначительные исправления, произведённые в блоке 9, изменят хеш, хранящийся в блоке 8, что, в свою очередь, изменит данные и хеш блока 2, а это приведёт к изменениям в блоке 1 и так далее. Цепочка будет полностью изменена, а это невозможно. | Представим, что хакер атакует блок 9 и пытается внести коррективы в данные. Из-за свойств хеш-функций даже небольшое изменение сильно трансформирует хеш. Это означает, что любые незначительные исправления, произведённые в блоке 9, изменят хеш, хранящийся в блоке 8, что, в свою очередь, изменит данные и хеш блока 2, а это приведёт к изменениям в блоке 1 и так далее. Цепочка будет полностью изменена, а это невозможно. | ||
[[Категория: | [[Категория:Терминология]] | ||
[[Категория:Криптобезопасность]] |
Версия от 12:51, 26 декабря 2023
Хеш-фу́нкция или хэш-функция (англ. hash function от to hash — «превращать в фарш, мешанину») — математическое преобразование информации в короткую строку определённой длины.
Логика этого процесса такова: вы вводите что-то длинное, а на выходе получается что-то короткое, олицетворяющее то длинное.
В случае криптографических хеш-функций ввод не обязательно является длинным. Это может быть что-то очень короткое, например, слово «бит», или очень длинное, например, весь текст Yellow Paper DecimalChain, и на выходе вы получите уникальную строку установленной длины.
Кроме того, в отличие от простых «сокращателей» ссылок, хеш-функции в криптовалютах действуют только в одном направлении. Несмотря на то что одни и те же данные всегда дадут один и тот же хеш, воспроизвести изначальную информацию по полученному из них хешу невозможно.
Понятие «хеширование» означает однозначное и точно известное вычисление набора символов фиксированной длины на основе входных данных произвольной длины. При этом изменение хотя бы одного символа в исходных данных гарантирует, что и полученная фиксированная строка будет иной. Можно сказать, что хеширование — это «снятие отпечатка» с большого набора данных.
Анализ при помощи хеш-функций часто используют для контроля целостности важных файлов операционной системы, программ и данных. Контроль может производиться как по необходимости, так и на регулярной основе.
Вначале определяют, целостность каких файлов нужно контролировать. Для каждого файла производятся вычисления значения его хеша по специальному алгоритму с сохранением результата. Через необходимое время делают аналогичный расчёт и сравнивают результаты. Если значения отличаются, значит, информация содержащаяся в файле была изменена.
Как работают криптографические хеш-функции
Существуют разные виды криптографических хеш-функций, и каждая из них работает по-разному.
Хеш-функция SHA-256, применяемая в DecimalChain (биткоин и многих других блокчейнах), работает на основе формулы, связанной с отражением света от эллипсов. Вам не стоит слишком переживать, если вы что-то не поняли. Суть в том, что криптографические хеш-функции — это практически магия, и если вы не математик, то никогда их до конца не поймёте.
Как хеш-функции применяются в DecimalChain
Чтобы блокчейн работал, он должен обновляться и вести актуальные записи всех транзакций и монет, имеющихся у каждого участника сети. Именно при обновлении транзакционной информации любая аутентифицирующая система уязвима для атаки. Банк сглаживает этот риск благодаря наличию строгой централизованной иерархии, гарантирующей подлинность на свой собственный риск. Блокчейну DecimalChain удаётся обновляться, оставаясь децентрализованным, так как он использует криптографическую вероятностную хеш-«игру», называемую «делегированным доказательством доли» (Delegated Proof-of-Stake).
Так обеспечивается консенсус, а также предотвращаются атаки, нацеленные на манипулирование системой. Таким образом, криптография делает блокчейны более безопасными, чем любой банк с человеческой верификацией.
Хэш-указатель
Блокчейн представляет собой связанный список, содержащий данные и указатель хеширования на предыдущий блок, создавая связную цепочку.
Хэш-указатель похож на обычный, но, вместо того чтобы просто содержать адрес предыдущего блока, он включает в себя хеш данных, находящихся внутри предыдущего блока. Именно эта небольшая настройка делает блокчейн настолько надёжным.
Представим, что хакер атакует блок 9 и пытается внести коррективы в данные. Из-за свойств хеш-функций даже небольшое изменение сильно трансформирует хеш. Это означает, что любые незначительные исправления, произведённые в блоке 9, изменят хеш, хранящийся в блоке 8, что, в свою очередь, изменит данные и хеш блока 2, а это приведёт к изменениям в блоке 1 и так далее. Цепочка будет полностью изменена, а это невозможно.