Хэширование (Hashing) относится к понятию взятия произвольного количества входных данных, применения к ним некоторого алгоритма и генерации выходных данных фиксированного размера, называемых хэшем (hash). Входными данными могут быть любое количество битов, которые могут представлять один персонаж, MP3 файл, целый роман, электронная таблица истории вашего банковского дела, или даже весь Интернет. Дело в том, что вход может быть бесконечно большим. Хэш-алгоритм может быть выбран в зависимости от ваших потребностей, и существует множество общедоступных хэш-алгоритмов. Дело в том, что алгоритм берет на себя бесконечный ввод битов, применяет к ним некоторые вычисления и выдает конечное число битов. Например, 256 бит.
Для чего можно использовать этот гашиш?
Сегодня хэши обычно используются в файлах с отпечатками пальцев, также известных как зоны проверки. Это означает, что хэш используется для проверки того, что файлом не манипулировали и не изменяли его каким-либо образом, не по замыслу автора. Если WikiLeaks, например, публикует набор файлов вместе с их MD5-хэшами, то кто бы ни загрузил эти файлы, он может проверить, что они действительно из WikiLeaks, вычислив MD5-хэш загруженных файлов, и если этот хэш не совпадает с тем, что было опубликовано WikiLeaks, то вы знаете, что этот файл был каким-то образом изменён.
Как цепной замок использует гашиш?
Топоры используются в блочных цепях для представления текущего состояния мира. Входом является полное состояние цепочки блоков, т.е. все транзакции, которые произошли до сих пор, а результирующий выходной хэш представляет собой текущее состояние цепочки блоков. Гэш используется для того, чтобы договориться между всеми сторонами о том, что мировое государство — это одно и то же, но как эти гашиши рассчитываются на самом деле?
Первый хэш вычисляется для первого блока или блока Genesis с использованием транзакций внутри этого блока. Последовательность начальных транзакций используется для вычисления хэша блока Genesis. Для каждого нового блока, который генерируется позже, также используется хэш из предыдущего блока, а также ваши собственные транзакции, в качестве входных данных для определения хэша блока. Так формируется цепочка блоков, каждый новый хэш блока указывает на хэш блока, который пришел раньше. Эта хэш-система гарантирует, что ни одной транзакцией в истории нельзя манипулировать, так как при изменении любой части транзакции меняется и хэш блока, которому она принадлежит, и любые хэши последующих блоков в результате этого. В результате, было бы довольно легко поймать любую манипуляцию, так как можно сравнить только хэши. Это здорово, потому что каждому участнику блочной цепочки нужно всего лишь согласовать 256 бит, чтобы представить потенциально бесконечное состояние блочной цепочки. Блок-цепочка Ethereum в настоящее время составляет десятки гигабайт, но текущее состояние блок-цепочки, на момент этой записи, это шестнадцатеричный хэш, представляющий 256 бит.
А как же цифровые подписи?
Цифровые подписи, как и настоящие подписи, являются способом доказать, что кто-то является тем, за кого себя выдаёт, за исключением того, что мы используем криптографию или математику, которые более безопасны, чем собственноручные подписи, которые легко подделывать. Цифровая подпись — это способ доказать, что сообщение пришло от конкретного человека и ни от кого другого, например, от хакера.
Цифровые подписи сегодня используются во всем Интернете. Каждый раз, когда вы посещаете веб-сайт через ACTPS, вы используете SSL, который использует цифровые подписи для установления доверия между вами и сервером. Это означает, что когда вы посещаете Facebook.com, ваш браузер может проверить цифровую подпись, которая поставляется с веб-сайтом, чтобы убедиться, что он на самом деле происходил от Facebook, а не от какого-то хакера.
В асимметричных системах шифрования пользователи генерируют нечто, называемое парой ключей, которая представляет собой открытый и закрытый ключ, используя известный алгоритм. Открытый и закрытый ключи ассоциируются друг с другом через некую математическую связь. Открытый ключ предназначен для публичного распространения в качестве адреса для получения сообщений от других пользователей, например, IP-адреса или личного адреса. Закрытый ключ должен храниться в секрете и использоваться для цифровой подписи сообщений, отправляемых другим пользователям. Подпись включена в сообщение, чтобы получатель мог проверить его с помощью открытого ключа отправителя. Таким образом, получатель может быть уверен, что только отправитель мог отправить это сообщение. Генерация пары ключей аналогична созданию учетной записи в блочной цепочке, но без необходимости где-либо регистрироваться. Довольно круто. Кроме того, каждая транзакция, выполняемая в блочной цепочке, имеет цифровую подпись отправителя.
Если сложить все вместе, то без хэша и цифровых подписей не может быть блок-цепочки. Хэшинг» предоставляет возможность каждому участнику блочной цепочки договориться о текущем состоянии мира, в то время как цифровые подписи предоставляют возможность убедиться в том, что все сделки совершаются только законными владельцами. Мы полагаемся на эти два свойства, чтобы гарантировать, что цепочка блокировки не была повреждена или скомпрометирована.