Статьи Брамы
  • 583
  • Биткойн для чайников. Часть II. Хэшинг.

    Второй ключевой концепцией Computer Science, на которой построен Биткойн является концепция хеширования или криптографического хеша.

    Хешинг, как и асимметричная криптография, является одной из ключевых идей в области безопасности программного обеспечения. Как это было сделано раньше, давайте начнем с представления проблемы. Если у меня есть компьютерная система, то как я могу безопасно хранить пароль каждого пользователя таким образом, что если система была скомпрометирована, то пароли пользователя остались бы нетронутыми? Другими словами, это очень плохая идея хранить базу данных, содержащую тысячи или миллионы паролей пользователей как раз по причинам безопасности.

    Ответ даёт криптографический хеш. Процесс хеширования включает в себя некие входные данные (пароль), которые пропускаются через определённый алгоритм, и на выходе получается некое большое число, соответственно называемое «хэш» (или «хэш-значение»).

    Существуют два отличительных признака, определяющих хэш. Во-первых, для каждых определённых входных данных процесс хэширования всегда приводит к одному и тому же результату. Например, если вы вводите пароль, который пропускается через алгоритм хэширования, который на выходе выдаёт определенное число, то каждый раз это будет одно и то же число.

    Вторая отличительная черта хэша заключается в том, что это однонаправленный процесс. Т.е. невозможно взять выходное значение хэша и посредством обратных вычислений обнаружить что было на входе. Эти две функции и определяют криптографический хэш. Если бы процесс был обратимым, то речь была бы не о хэше, а о старом добром шифровании / дешифровании, и это совсем другая тема.

    Оказывается, процесс хэширования имеет много полезных функций в компьютерной отасли. Одна из этих проблем, как мы показали выше, заключается в безопасном хрании паролей пользователей системы. Вместо того, чтобы хранить пароль пользователя, мы сначала пропускаем его через алгоритм хеширования и сохраняем значение хэша. Когда пользователь пытается войти в следующий раз с паролем нам не нужно его знать, нам лишь нужно знать, что он не изменился. Другими словами, если хэш введенного пароля соответствует хеш-памяти, хранящейся в базе данных, то мы знаем, что пользователь вводит правильный пароль. Хотя мы не знаем и знать не хотим, что это за пароль. Если наша система была позже скомпрометирована, у злоумышленника будет только список хэшей паролей, которые являются необратимыми и совершенно бессмыслены.

    Когда в новостях сообщается, что система была «взломана», а тысячи паролей были скомпрометированы, то это было связано с тем, что разработчики системы не смогли защитить пароли своих пользователей, используя технику хеширования, которая считается универсальной. Если вы забыли свой пароль в системе, которая правильно использует хэш-коды своих пользователей, правильный подход заключается в том, чтобы система сбросила ваш пароль на что-то временное и позволила вам изменить его на что-то еще при входе в систему.

    Теперь, как все это связано с Биткойн? Ну, во-первых, мы усвоили, что обратный вычислительный разворот хеша невозможен. ( Теоретически это возможно посредством перебора каждой комбинации ввода до тех пор, пока не будет создано одно и то же значение хэш-функции. На практике, однако, количество комбинаций астрономически велико, что для всех практических целей делает обратное исчисление невозможным). Следует также отметить, что несколько входных значений могут приводить к одному и тому же значению хеширования, известному как «столкновение» или «коллизия», но они крайне редки, если используется соответствующий алгоритм хеширования, и поэтому не важны для нашего обсуждения.

    Теперь предположим, что существует только миллион хеш-значений, — число от нуля до миллиона. На самом деле, конечно же, мы знаем, что существует гораздо более миллиона хэш-значений, но давайте рассмотрим только миллион для простоты иллюстрации мысли. Поскольку есть только миллион хэшь-значений, то шанс получения правильных входных данных для данного хеш-значения будет миллион к одному. С достаточным количеством проб и достаточным колличеством времени я в конечном итоге найду входные данные, которые дадут тот же результат, что и хеш-значение, с которым я пытаюсь сопоставить мой конечный результат.

    Предположим, что процесс проб и ошибок занял двадцать четыре часа, и совпадение в конце концов найдено. Имея в виду, что в нашем примере все значения хэша являются любым одним числом от нуля до миллиона, то что, если бы вместо нахождения входных данных, которые привели к единичному хеш-значению, мы упростили бы задачу и решили найти входные данные, хеширование которых привело бы не к одному числу, а к любому из десятка. Например, меньшему или равному 10. То есть мы хотели бы найти какие-либо входные данные, которые привели бы к хеш-значению, равному либо 1, либо 2,… 3, 4, 5, 6, 7, 8, 9, либо 10. Т.е. теперь в десять раз более вероятно, что данное хеш-значение приведет к совпадению, поэтому в среднем наш компьютер будет в десять раз быстрее обнаруживать совпадение, — теперь он занимает примерно 2,4 часа, а не 24 часа.

    Если бы я хотел создать задачу, которая была бы ещё быстрее решена, скажем, в течение 10 минут, то я мог бы уменьшить свой порог сложности до любого значения хэша от 1 до 150. Теперь задача в 150 раз проще, чем в первом примере, и решаема нашим компьютером вместо 24 часов примерно за 10 минут. Теперь давайте представим что произойдет, если добавить второй, одинаковой по мощности компьютер, к решению нашей задачи? Очевидно, что теперь решение будет найдено в два раза быстрее. Т.е. если бы я хотел, чтобы решение задачи продолжалось всё те же 10 минут, то мне пришлось бы сделать её вдвойне сложнее, указав, что значение хэша должно попадать в множество чисел меньших 75, а не 150. Поскольку все больше и больше компьютеров пытаются решить нашу задачу и компьютеры становятся все более эффективными при её решении, мы постоянно затрудняем задачу, указав меньший диапазон хеш-значений, которые мы принимаем.

    Как не трудно догадаться, речь о Бикойн-майнинге. Разница только в том, что существует гораздо больше, чем миллион комбинаций, настолько больших чисел, что у нас даже нет их названий. Весь глобальный биткойн-майнинг на момент написания коллективно выдаёт 7 862 320 триллионов входных комбинаций в секунду, чтобы найти входное значение, которое хешируется в заданном диапазоне значений хэша.

    Сеть Биткойн регулярно оценивает сложность проблемы, и если проблема решается быстрее или медленнее, чем заданный 10-минутный интервал, то проблема корректируется соответственно путем расширения или уменьшения диапазона возможных значений хэша, которые принимаются. Из всех компьютеров по всему миру, пытающихся решить задачу, только первый решивший её получает награду в виде Биткойна, а затем процесс начинается снова.

    Здесь естественно возникают следующие вопросы: а как остальные участники сети Биткойн могут быть уверены, что проблема решена, и как Биткойн фактически генерируются в результате этого процесса? Первый вопрос прост. Компьютер, который решает задачу, объявляет о своём решении всей сети Биткойн, и другие компьютеры в сети проверяют решение. Хотя обратное нахождение входных данных для заданного диапазона значений хеширования является медленным процессом проб и ошибок, то как только решение найдено, его легко проверить, выполнив предлагаемое решение с помощью алгоритма хеширования и гарантируя, что результирующее значение хэша в пределах целевого диапазона. Затем новые биткойны зачисляются на указанный адрес майнера, вводя новый биткойн в оборот.

    Очевидно ключевое различие между эмиссией биткойна и денежными эмиссиями во всех предыдущих монетарных системах, где колличество денег в системе является прихотью монарха, правительства, банка, или в последнее время контролируемого правительством центрального банка. Скорость генерации биткойнов является алгоритмической и не подлежит манипуляции отдельными участниками рынка, — она предсказуема. Протокол биткойнов определяет скорость генерации, и с течением времени скорость генерации уменьшается до тех пор, пока в конечном счете биткойн больше не будет генерироваться. Для любой даты в прошлом или будущем можно рассчитать приблизительное количество биткойнов в обращении.

    • нет
    • 0
    • +9

    19 комментариев

    avatar
    Как не трудно догадаться, речь о Бикойн-майнинге.
    Хотя, если взять SHA256 или 512 (редкие пока алгоритмы), посолить символов на 10, или поставить двойную соль, то весь процесс майнинга начинает представлять собой некую лотерею, а не логически завершаемый процесс.
    Хотя, я частенько пользуюсь всякими ресурсами, где выкладываются дешифрованные значения хэш-функций. Бывает помогает.
    0
    avatar
    До нюансов нам очень далеко. Да и не нужны они чайникам.
    0
    avatar

    Туточки где-то могилка биткоина. Логическая.
    0
    avatar
    Скорее майнингу.
    0
    avatar
    Скорее майнингу
    А базу распределенную кто будет содержать?
    0
    avatar
    Майнеры. Содержание базы будет оплачиваться транзакционным сбором.
    0
    avatar
    Гудящий фарм в надежде сорвать один коин и то же только за оплату транзакции?
    много-много отсыпется.
    Нужен другой механизм.
    0
    avatar
    минус майнинг, и гудящий фарм не нужен, как, собственно и PoW (Proof of Work). Для этого предусмотрена концепция PoS (proof of stake) — это когда чтобы быть нодом или супернодом нужны не колличество доступных вычислительных мощностей, а колличество биткойнов в резерве с другими, скорее политическими плюшками.
    0
    avatar
    минус майнинг, и гудящий фарм не нужен
    А новые цепочки где будем брать?
    0
    avatar
    Так цепочки не требуют большиих вычислительных мощностей. Это скорее процесс регистрации, лог транзакций. Там другая скорее проблема — увеличение длины реестра, и, соответственно, затыки в трафике.
    0
    avatar
    Нет ответа на вопрос, где биткойн приобретает свою стоимость.
    +1
    avatar
    На сегодня это чисто спекулятивная пирамида.
    +1
    avatar
    Нет ответа на вопрос, где биткойн приобретает свою стоимость.
    А где приобретает стоимость жемчуг? золото? луковицы тюльпанов?
    0
    avatar
    А где приобретает стоимость жемчуг? золото? луковицы тюльпанов?
    Если сжать между пальцев, возникает ощущение жемчуга, золота, тюльпана.
    Обладает свойством «положить в карман», «извлечь из кармана» вне зависимости от наличия электричества.
    0
    avatar
    несколько входных значений могут приводить к одному и тому же значению хеширования, известному как «столкновение» или «коллизия»

    Если мощность множества возможных хэшей равна или превышает мощность множества возможных паролей, становятся возможны алгоритмы вообще без коллизий. Это где-то применяется?
    0
    avatar
    Что касается паролей, то они не нуждаются в вариативности хэшей. 1 пароль — 1 хэш. Точка. Просто кто-то в DARPA при разработке Биткойна (наверное Сатоши Накомото) додумался до использования описанного механизма до получения показанной кривой эмиссии.
    0
    avatar
    Петр Шкуматов
    Многие из вас спрашивают с удивлением, чем обеспечены криптовалюты? Я уже объяснял, что любая криптовалюта — это банальные цифры в файлах. То есть цифры и больше ничего. Совсем ничего. Однако у криптовалют есть другие свойства, которые делают их ценными в наших с вами глазах.

    1. Криптовалюты пока не поддаются регулированию со стороны государств, налоговых органов и прочих людей, цель которых отобрать у вас часть заработанных денег, чтобы пустить их на укладку плитки или на войнушку, например. В этом основная ценность биткойна, однако сейчас, когда стало известно, что налоговые органы США с использованием различных грубых методов (вспоминаем, что случилось с биржей BTC-e) деанонимизировали более трети владельцев биткойнов, будущее этой монеты под большим вопросом.

    2. Многие криптовалюты имеют алгоритмически заданное ограничение эмиссии (привет Виталику). Т.е., не может случиться такого, что завтра, во имя спасения банка «Закрытие» кто-то напечатает из воздуха триллион рублей, после чего, через управляемую (таргетированную) инфляцию ваши кошельки похудеют на несколько процентов. С криптовалютой вы можете быть уверены всегда в том, что её количество будет оставаться прежним.

    3. Криптовалюты не имеют границ. Переводы осуществляются в прозрачном режиме, вам не надо согласовывать паспорт сделки с контролирующими органами, ходить на поклон в налоговую и так далее. Просто переводите деньги и всё.

    4. Некоторые криптовалюты почти абсолютно анонимны. Мне в этом смысле очень нравится Monero, это прекрасная валюта с прекрасным алгоритмом, который практически со 100% вероятностью не позволяет отследить отравителя платежа. Великолепный продукт отличных математиков и алгоритмистов! Говорю браво разработчикам и вангую дальнейший рост Monero в долгосрочной перспективе.

    5. Транзакции в сети невозможно подделать благодаря огромному количеству майнеров. В результате на выходе пользователь криптовалюты получает практически полную защищенность от хакеров и практически нулевую вероятность потерять свои средства (привет Виталик)
    — Тут важный дисклеймер: эфир (ethereum) им. великого Виталика НЕ ОБЛАДАЕТ этими свойствами, кроме п.3!!! Соответственно, те, кто надеется на то, что эта криптовалюта продолжит уверенный рост, должны глубоко задуматься.
    — Именно поэтому криптовалюты являются прекрасным, универсальным и современным способом обеспечения товарооборота, то есть являются деньгами в их изначальном смысле.

    И именно поэтому их начали использовать в обороте товаров и услуг, а это сразу начало придавать вот этим цифрам в файликах иную ценность. Эти цифры превратились в деньги тогда, когда мы с вами в них поверили.

    Те же, кто думает, что криптовалюты — это цифровое МММ, радикально ошибаются. МММ — это эмиссионный центр, сосредоточенный в одних руках, прежде всего. А в случае с биткойном эмиссия строго контролируется алгоритмически и никто с этим ничего сделать не может. Невозможно выпустить биткойнов больше, чем заложено алгоритмом. Вот такое небольшое отличие делает криптовалюты деньгами, а билеты МММ — фантиками. Кстати, обычные деньги, доллары, рубли, евро ГОРАЗДО ближе к билетам МММ, чем биткойны. Подумайте над этим на досуге


    Сё равно не верю. Обманут.
    +1
    avatar
    Я тоже не верил пока глубоко не вошёл в тему.
    0
    avatar
    Petr Talantov
    Ходил к маме. «Че, — говорит. — по радио и телевизору все вдруг заладили: Бетховен, Бетховен. Сколько лет был никому не нужен.» Оказалось, bitcoin.

    Из ФБ
    +1
    У нас вот как принято: только зарегистрированные и авторизованные пользователи могут делиться своим мнением, извините.