Что делает блокчейн Universa безопасным? HashID

В этой статье мы раскроем тему безопасности Universa. Что делает его безопасным в использовании? Как происходит шифрование данных в блокчейне?

В прошлых статьях мы сравнили скорость и стоимость Universa с Bitcoin и Ethereum. Если Вы их не читали, вы можете ознакомиться с ними здесь.

Мы благодарны нашему сообществу за оказываемую поддержку. Если вы хотите принять участие в написании статей, не стесняйтесь обращаться к @starnold в Telegram. Как вы могли заметить, статьи переведены на многие языки – этим занимаются люди из нашего сообщества.

Безопасность блокчейна Universa

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

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

  • Сеть содержит распределенный реестр данных, где каждая нода хранит копию.
  • Криптография.

Ноды проверяют все данные в сети, и когда решается вопрос консенсуса, каждый узел принимает участие в голосовании.

В случае поступления денежных средств, ноды проверяют данные всех участников сети. Баланс в блокчейне Universa – это всего лишь номер (сумма) в смарт-контракте. Поскольку сеть является распределенной и децентрализованной системой, ноды достигают консенсуса при (90+%) согласования. Это предотвращает мошенничество со стороны третьих лиц. Например: атака 51, когда мошенники используют превосходящую мощность сети в своих корыстных целях.

Блокчейн протокол Universa имеет несколько аспектов, которые обеспечивают безопасное использование сети. Конфиденциальная информация не хранится в общем доступе, чтобы ей могли воспользоваться из любой точки мира. Информация зашифрована и регулируется определенными методами. Это позволяет людям и компаниям не бояться использовать блокчейн в своей работе. Именно здесь возникает второй пункт безопасности – криптография.

Криптография

Криптография является одной из самых важных вех в безопасности блокчейна. Существует несколько способов шифрования данных. Сеть Bitcoin, например, использует хэш-функцию SHA-256, а алгоритм шифрования в Ethereum – это Keccak. Оба они принадлежат к разным семьям хеширования. SHA-256 является одним из семейства SHA-2, а Keccak – из SHA-3.

Интересно, то что реализация Ethereum в основном представляет собой алгоритм SHA-3 с небольшими отличиями. Но, поскольку он появился не так давно, до того, как SHA-3 был официально принят, он всё же отличается от него (в незначительных деталях).

Алгоритм Keccak в Ethereum в основном такой же, как стандарт SHA-3, хоть и не является двоично-совместимым. В свою очередь это может вызвать проблемы, например, при использовании аппаратных кошельков или других решений – стандарты могут различаться.

На данный момент они (возможно) безопасны в использовании, хотя не раз встречались проблемы при использовании данного блокчейна.

Хэш-функция изменяет входные данные в реестре. Это односторонняя функция, которую практически невозможно преобразовать. Вы можете понять, что «хэшированная» часть информации может быть передана через интернет вполне безопасным способом.

Если мы возьмем слово «Universa» и хэшируем его с помощью функции SHA-256, результатом будет строка, подобная этой:

E7A3A82B5C33F35CAEFF7EB092B3A8A963DC83C7CB8E2EF8B1A2916A4ED6D1DE

Но если мы немного изменим входные данные на ‘Un1versa’, выходные данные (или хэш) будут совершенно другими. Невозможно получить входные данные, сравнивая эти два выхода. Новый хэш будет таким:

2D21258B9EF1CD7EA29F65AE161B7E453A628BD6033929D1F608ECE81F1D71C3

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

Но… Если в будущем алгоритме будет обнаружено слабое место, то невозможно гарантировать безопасное хранение данных. Universa решает эту потенциальную уязвимость с помощью так называемого HashID.

Bitcoin, Ethereum и Universa

Bitcoin и Ethereum – оба используют одну хэш-функцию. Universa использует три различных криптографических хэш-функции из трех различных семейств алгоритмов, и объединяет их результаты в сложную хэш-функцию, принимая все лучшие качества от трех независимых алгоритмов.

Используются хэш-функции:

  • SHA-512/256
  • SHA3-256 (256 бит)
  • Streebog (256 бит)

Каждый из них стандартизирован во всем мире. SHA-512, например, стандартизирован федеральным правительством США в 2002 году. Японское правительство и Европейский Союз также принимают этот криптографический метод. Кроме того, Streebog стандартизирован Российской Федерацией в 2012 году.

Это один из так называемых ”ГОСТовых» алгоритмов. ГОСТ означает государственный стандарт. В России нет более «стандартизированных» стандартов, чем ГОСТы, и эти стандарты охватывают всё – от технологий/отраслей промышленности до производства и обработки пищевых продуктов.

Так что давайте проясним:

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

HashID на практике

В прошлых статьях мы упоминали, что протокол Universa основан на проверке состояния контракта. Вы можете прочитать состояние контракта

как длинный код. Как уже показывали выше – хэш из «Universa» и «Un1versa». Такие строки могут быть легко проверены нодами Universa. Но если вы попытаетесь изменить какую-либо информацию из входных данных (например, если вы хотите получить право собственности), идентификатор контракта изменится. Ноды не распознают его как «одобренный». Вы можете прочитать больше об этом в нашей базе знаний universa.

Давайте рассмотрим пример с HashID. Возьмем в качестве примера оригинальный смарт-контракт токена UTN.

Если вы проверите его в universaexplorer, Вы увидите идентификатор корневого контракта:

NPo4dIkNdgYfGiNrdExoX003+lFT/d45OA6GifmcRoTzxSRSm5c5jDHBSTaAS+QleuN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE

Это строка из 128 символов. Но прежде чем мы перейдем от смарт-контракта к этому маленькому фрагменту текста, многое произошло «под капотом». Эта строка содержит много информации. Она представляет собой состояние смарт-контракта. Но она не отражает все содержание смарт-контракта (или его версии). Единственное, что должны сделать ноды, – это проверить, действителен ли контракт (следовательно, статус контракта должен быть «одобрен»). Если это не так, система укажет, что контракт “отклонен”, “отозван” или “не определен”.

Единственное, что хранят ноды — это состояние контракта:

«наш исходный контракт с hashid: NPo4dIkNdgYfGiNrdExoX003+lFT/d45OA6GifmcRoTzxSRSm5c5jDHBSTaAS+QleuN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE теперь недействительный, так произошла новая ревизия контракта”

Итак, давайте вернемся к смарт-контракту UTN с идентификатором в 128 символов.

Смарт-контракты

Итак, когда Вы создаете новый смарт-контракт и регистрируете его в сети Universa, каждая нода получает тело этого контракта (или его новой версии). После проверки, если ноды решили, что смарт-контракт действителен и должен быть зарегистрирован, ноды начинают обработку тела этого контракта с использованием алгоритма хеширования. Каждая из трех различных хэш-функций в HashID проверяет весь контракт и генерирует строку 256 бит (32 байта). Таким образом, если вы сделаете это три раза с тремя различными хэш-функциями, вы получите результат 3⋅256 = 768 бит (96 байт). Этот вывод кодируется с помощью Base64, который содержит A-Z, a-z, 0-9, символ + и символ/.

Свойство кодирования Base64 заключается в том, что каждые 3 байта любых двоичных данных кодируются как 4 символа представления Base64. Поэтому каждый HashID обычно отображается как 96⋅4/3 = 128 символов. И это число, с которого мы начали: HashID смарт-контракта-это строка из 128 символов. И даже просто один бит или буква, измененная (случайно или намеренно) в смарт-контракте, вызывает значительные изменения в структуре каждого из трех компонентов. Каждый из трех компонентов будет меняться по-разному, используя различные алгоритмы, что приводит к непредсказуемому изменению результата хеширования.

HashID в Universa

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

Пользователь может использовать смарт-контракт (например, передать его другому). Для этого пользователь загружает исходный смарт-контракт. До тех пор, пока информация в смарт-контракте не была изменена, вычисленный HashID приведет к тому же значению, которое хранится как «утвержденное» нодами Universa. Таким образом, ноды будут считать его утвержденным, и клиент может его использовать. Это дает данным высокий уровень безопасности, сохраняя при этом только крошечный объем данных, а не весь блок c информацией о контракте.

Заключение

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

Протокол Universa использует хэширование трех алгоритмов для безопасного и конфиденциального хранения транзакции (смарт-контрактов) в блокчейне. Если строка из 128 символов действительна, ноды будут обрабатывать платеж / транзакцию / ревизию. Поскольку HashID состоит из функций хэширования трех разных семейств, это дает дополнительную безопасность для данных на случай, если в будущем в любом из них будут обнаружены уязвимости. Кроме того, поскольку эти алгоритмы стандартизированы в разных странах, это позволяет Universa быть совместимой со стандартами во всех из них.

Строка из 128 символов проверяется всеми нодами в публичной сети Universa. Если они признают его действительным (а все остальные изменения – валидными), транзакция будет добавлена в реестр. Теперь контракт хранится неизменно, надежно, конфиденциально без привлечения третьей стороны в качестве безопасности.

Help translating this post to Английский Немецкий Французский Голландский Итальянский Испанский Хорватский. Contact @starnold to participate!

Related posts

Встреча сообщества Universa в Амстердаме 2020

Arnold

Внутри смарт-контракта Universa

Arnold

Суть смарт-контрактов Universa

Arnold

Leave a Comment