Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
studentka
8 лет назад

ДНЕВНИК СТУДЕНТКИ: Что за чудо дивное эта функция SHA-256?

Попытаюсь изложить свое понимание на уровне новичка простыми словами.

SHA-256 принадлежит к семейству алгоритмов SHA-2 (Secure Hash Algorithm Version 2). Я вот до этого дня не знала, что у алгоритмов есть семейства. По-моему это прикольно :)

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

Используется алгоритм SHA-256 Биткоином и другими криптовалютами для:

  • верификации транзакций
  • вычислении "доказательства выполнения работы" (proof-of-work)
  • "подтверждения доли»" (proof-of-stake)

С этими proof-of-work и proof-of-stake мне еще только предстоит разобраться, но звучит солидно :)

Информации не так много как хотелось бы, иллюстраций тоже, поэтому я зарисовала схему из лекции курса курс Bitcoin and Cryptocurrency Technologies :)

Как работает SHA-256 (смотри рисунок):
  • У вас есть сообщение с любой информацией в виде строки (input)
  • SHA-256 разбивает это сообщение на блоки по 512 бит
  • Чтобы все блоки были по 512 бит, в последний, который выходит частично незаполненным, потому что прямо четко и ровно на 512 бит обычно не делится, - алгоритм добавляет в блок недостающее до 512 количество нулевых бит (zero bits). Этот процесс называется - padding.
  • Начиная работу с алгоритмом тебе необходимо в стандартной документации еще взять некое значение IV (initialization vector), который в данном алгоритме должен быть 256 бит
  • Итак, алгоритм берет этот IV (256 бит) добавляет к нему первый блок (512 бит) и получившиеся 768 бит передает в функцию с
  • Функция c делает свое магическое дело - шифрует и сжимает (молодец какая!), а потом выдает на выходе 256-битный кусочек, к которому добавляется следующий блок из твоего сообщения 512 бит и снова шифруется
  • Этот процесс происходит столько раз, сколько у тебя блоков по 512 бит
  • На выходе получаешь свой надежный Hash 256 бит

Теорема: если функция с collision-free, то и SHA-256 тоже collision-free

Все четенько получается, кроме этого паддинга, который есть местом потенциальной уязвимости, насколько я поняла. Когда узнаю больше про эту угрозу - напишу :)

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

Интересность встретилась - кто-то в попытке объяснить надежность этого алгоритма прибегает к метафоре - что процесс шифрования похож на процесс смешивания красок, когда не видно и непонятно какие краски были в "сообщении" и какие добавились в процессе шифрования.

Еще абзац не по теме

Как-то мне довелось закончить курсы Фен-Шуй, кстати, очень понравилось мне это философское осмысление пространства. Так вот, негативная энергия в фен-шуй называется “ша” (прямо как наша функция). А места скопления негативной энергии, например накопившаяся грязная посуда в раковине, называются “блоки ша” (прямо как в нашей функции). Это все :)

Подписывайтесь на мой дневник!

@studentka

153
1159.756 GOLOS
На Golos с December 2016
Комментарии (4)
Сортировать по:
Сначала старые