Перевод Служба временных меток

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 2 окт 2019.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    505
    Симпатии:
    190
    Верифицируемое доказательство знания на определённый момент времени

    Bitcoin является крайне важной инновацией, но не в том смысле, в котором полагает большинство людей. Реальная инновация,в случае с Bitcoin,состоит в возможности верифицируемого доказательства публикации в определённый момент времени. Вся система построена на этой концепции, и на её основе можно построить множество других систем. Блокчейн фиксирует историю, опровергая афоризм Оруэлла «Кто контролирует настоящее — контролирует прошлое, кто контролирует прошлое — контролирует будущее».
    Джулиан Ассанж,
    16 сентября 2014

    В главе «Как работают криптовалюты?» мы увидели, что криптовалюты не допускают двойной траты монет, а система выбирает одну из двух потенциально действительных транзакций. В процессе упорядочиваются блоки и транзакции, и этот порядок может использоваться основой для работы децентрализованной службы временных меток.

    Что такое служба временных меток?

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

    Современным примером может служить Wayback Machine, служба, позволяющая увидеть, как выглядел определённый сайт в определённое время. Это немного напоминает путешествие во времени, но посредством вашего браузера, а не на DeLorean.
    Давайте перенесёмся в прошлое и заглянем на сайт Hacker News, технически ориентированный сайт, где можно обсудить новости. Я провёл множество времени на этом сайте, читая глубокие комментарии, или же расстраиваясь, читая другие комментарии, которые были более поверхностны.
    1.png
    Три топовых новости на Hacker News на 1 марта 2011, согласно данным Wayback Machine. Я пытался воспроизвести стиль сайта, но получилось не идеально.

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

    Примеры использования

    Чем полезна служба временных меток? Вот вам некоторые примеры.

    1. Доказательство изобретения

    Удивительно, но на протяжении всей истории довольно часто открытия делались независимо и примерно в одно и то же время. А что делать в том случае, если у вас идея или изобретение, но вам пока не хочется раскрывать его, но при этом вы хотите заявить свой приоритет?

    Вы используете временную метку. Например, Роберт Гук (Robert Hook) воспользовался ею в 1660, когда открыл закон Гука. Им была опубликована анаграмма ceiiinosssttuv, которая позднее была расшифрована какut tensio sic vis(лат. «деформация пропорциональна приложенной силе»).
    2. Завещания

    Если вам нравится писать завещания, то, возможно, вы захотите обновить то, которое у вас уже имеется. Но как после вашей смерти люди поймут, какое из них является самым последним? Безусловно, можно указать дату, но она может быть изменена кем-либо в своих интересах.

    Решением является служба временных меток. Если вы будете использовать службу на базе криптовалют, то возможность изменения даты будет отсутствовать как таковая. Даже ваш адвокат не сможет сделать этого.
    3. Доказательство обнаружения ошибок в программном обеспечении

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

    Децентрализованное присвоение временных меток

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

    1. Подготовка данных

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

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

    2. Извлечение временных меток
    Транзакции в старом блоке будут старше, транзакции в новом блоке — моложе, а транзакции в одном и том же блоке совершаются одновременно. Вы можете видеть, как децентрализовано это происходит во время создания блока с вашей транзакцией, как эта информация используется в качестве временной метки вашего сообщения.
    Сами по себе блоки не содержат достойных доверия временных меток, но для оценки мы можем воспользоваться множеством узлов, наблюдающих за сетью. Например, это могут быть временные метки, записанные двумя узлами:
    2.png
    Пара блоков и их временные метки, наблюдаемые двумя различными узлами. Блоки с 1003 по 1006 пропущены.

    В данном случае мы видим, что временные метки отличаютсясамое большее на 12 минут. Несмотря на то, что этого не видно в таблице, узлы говорят нам, что блоки 1003-1006 были созданы где-то между 10:15 и 11:08. Мы не можем быть уверены вплоть до секунды даже, возможно, до минут, но мы имеем возможность хорошей оценки, если нас интересуют временные метки в пределах часов или дней.
    Таким образом, у нас появляется основа для реализации децентрализованной службы временных меток. Необходимо вставить скрытое сообщение в транзакцию, а после вы сможете раскрыть это сообщение и использовать время создания блока, в который вошла ваша транзакция в качестве временной метки. Вместе с тем сравнение двух сообщений с целью определения, какое из них старше, происходит довольно просто: необходимо просто проверить, какой из блоков был получен первым. Нет никакой необходимости в рассмотрении временной метки.

    Это гораздо проще (я разберу пример шаг за шагом в конце главы), чем, как Гук, получать своё сообщение в публикации. Также тут отсутствует необходимость в доверии службе временных меток — решение совершенно непрозрачно и вы можете всё верифицировать самостоятельно.

    Реальный пример

    Один из самых катастрофических багов, CVE-2018–17144, останься он неисправленным, позволил бы злоумышленнику создать неограниченное количество Bitcoin. Баг был обнаружен и раскрыт кем-то, кто по крайней мере в начале хотел сохранить анонимность, но также этому человеку хотелось иметь возможность доказать, что это именно он обнаружил баг.

    Поэтому он решил создать такое сообщение:

    BitcoinABC не проверяет двойные выходы при обработке блока только тогда, когда вносит транзакцию в пул памяти.
    Это опасно, так как блоки могут генерироваться с двойными транзакциями, а затем проводиться, например, как компактные блоки с отсутствующими транзакциями, и не попадать в пул памяти, что позволит создавать деньги буквально из воздуха.
    /u/awemany
    Сделал соответствующий хеш SHA-256 :

    5c45a1ba957362a2ba97c9f8c48d4d59d4fa990945b7094a8d2a98c3a91ed9b6

    Хеш был вставлен в блокчейн BTC при помощи службы временных меток. Хеш можно найти в разделе Advanced Verification.

    Это доказывает, что пользователь Reddit с ником awemany знал о баге до того, как он был раскрыт, и что именно им этот баг и был найден.
    Мы можем сделать это сами

    В предыдущем примере служба временных меток работала в нашу пользу, но фактически мы сами можем всё сделать с лёгкостью.

    Допустим,мы хотим скрыть и присвоить временную метку сообщению, которое использовал Гук:

    деформация пропорциональна приложенной силе:

    1. Кодируем сообщение, используя SHA-256

    При использовании Linux мы можем использовать команду:
    HTML:
    echo -n “as is the extension, so is the force” | sha256sum
    Это даёт нам хеш SHA-256:
    dab965bb19823669b8481846b9672c694a9af1b808314956b43154a0472942d8

    2. Вставляем его в транзакцию, используя OP_RETURN

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

    Мы можем произвести двойную проверку транзакции, используя блок-эксплорер, такой как этот, чтобы убедиться в соответствии значения OP_RETURN нашему хешу SHA-256 (см. раскодированное поле OP_RETURN).
    Таким образом, наша временная метка готова, и никто не сможет увидеть оригинальное сообщение. Виден только хеш SHA-256. Когда мы будем готовы явить наше сообщение миру, нам просто нужно будет показать всем это сообщение и способ верификации временной метки:

    1. Найти хеш в блокчейне

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

    2. Проверить хеш SHA-256

    Сообщение должно кодироваться в тот же хеш, что содержится в блокчейне.​

    3. Найти временную метку

    Согласно данным blockchair, транзакция была добавлена в блок, созданный в 20:17 15 сентября 2019 (UTC). Проверка временной метки другими блок-эксплорерами или полными узлами остаётся на усмотрение читателя. Но будьте внимательны относительно временных зон.​

    Теперь у нас есть доверенная временная метка для нашего сообщения, и за ней стоит математическое решение, а не доверие.

    Источник: Timestamping service

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #1 Mr. Pickles, 2 окт 2019
    Последнее редактирование: 2 окт 2019
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.