Cлучайный оракул на основе цифровой подписи в блокчейне / Habr

Cлучайный оракул на основе цифровой подписи в блокчейне / Habr Электронная цифровая подпись
Содержание
  1. Что говорит закон об электронной подписи
  2. Что такое подпись сообщения? подпись кошелька – цифровые подписи
  3. Что такое криптографический ключ
  4. Что такое закрытый ключ эфириума?
  5. Bitcoin electrum wallet – подпись, подтверждение сообщения
  6. Update от 8 мая 2021
  7. Аппаратный кошелек
  8. Биржа
  9. Возможные проблемы с шифрованием данных в блокчейне
  10. Для чего нужна электронная подпись
  11. Доверительные цепочки
  12. Зачем подписывать сообщение?
  13. Как система цифровой подписи работает на практике
  14. Как создаются такие ключи?
  15. Как узнать свой открытый ключ?
  16. Какие ключи бывают у кошелька?
  17. Ключи, цифровые подписи
  18. Кошелек
  19. Криптовалюта
  20. Немного о цифровой подписи
  21. Подпись сообщений с помощью кошелька trezor
  22. Подпись сообщения с помощью qt кошелька
  23. Приватный ключ и цифровая подпись в блокчейне
  24. Распределённый реестр
  25. Реализация
  26. Симметричное и асимметричное шифрование
  27. Советы
  28. Совсем по-простому
  29. Толстый и тонкий
  30. Хеш-функция в технологии блокчейна, пример алгоритма шифрования
  31. Холодный или горячий
  32. Цепочка блоков
  33. Цепочка подписей
  34. Чем блокчейн не является
  35. Чья подпись
  36. Электронная подпись
  37. Юридическая сторона дела
  38. Заключение

Что говорит закон об электронной подписи

В 2021 году в России был принят федеральный закон об электронной подписи, который с тех пор несколько раз дорабатывался. Актуальный текст документа предусматривает возможность использования двух видов ЭЦП: простой (подтверждающей валидность сообщения) и более сложной – усиленной.

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

Для использования усиленной электронной подписи компании или частному лицу необходимо прибегнуть к услугам специализированных центров. Авторизованные центры, лицензированием которых занимается правительство России, выдают “сертификаты электронных подписей”, а также проверяют выданные ранее сертификаты и авторизацию подписей.

Что такое подпись сообщения? подпись кошелька – цифровые подписи

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

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

Что такое криптографический ключ

Для того, чтобы что-то зашифровать или расшифровать используется некий ключ.

Криптографический ключ — это последовательность битов (нулей и единиц). Если их сгруппировать в байты, получится последовательность байтов. Если байты преобразовать в коды символов, получится некая строка.

Как известно, лучше один раз увидеть, чем сто раз услышать или прочитать. Вот пример ключа, сгенерированного программой PuTTYgen.

AAAAB3NzaC1yc2EAAAABJQAAAQEAonQzUWQ9qw//kSXzZ9uxe4UN/RK6osyfbqvk
PeYdS8Ov f80yirmXZR4q0P18i9xcHGoM2qAbCRrzHD1Il2khOkzp5e2C2XyRdHR
8BxpTFMOCmhChzVGyXTRqgwWHsRW3WSmHsJnO8PBL5XVoWDkFnN3Y wHrBYgqOG3
3 eCsoy3Wbp/xKblzDxjW20QcfDFomvsJauwlzpIlHKKpbEUY6CrFV42Gtken6/I
mUy4YX5ycIT5YAm vK QOLAp0ymVRUBCmqrpb/3FZO0Hz6YZHuvrEgE26bLsD5S4
2ChlMHZDXkyK5mDuzfkpyoxrBbyx d97R4cp8Yo7dPEh1u2Y3w==

Исходные бинарные последовательности преобразованы в ASCII-коды читаемого текста.

Что такое закрытый ключ эфириума?

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

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

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

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

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

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

Это означает что вы можете экспортировать закрытый ключ из одного кошелька, например, geth или jaxx, и вставить в другой, то же myetherwallet, и без проблем получить доступ к средствам, которые хранятся на этом кошельке.

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

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

Bitcoin electrum wallet – подпись, подтверждение сообщения

В Вашем кошельке Bitcoin Electrum зайдите в «Tools >> Sign/Verify Message». Откроется всплывающее окно, состоящее из трех полей.

Введите публичный адрес вашего кошелька, для которого Вы хотите создать подпись, вместе с вашим сообщением. После этого нажмите на sign, для того что бы сгенерировать подпись.

Cлучайный оракул на основе цифровой подписи в блокчейне / Habrизображение кликабельно

Чтобы подтвердить право собственности на адресе кошелька, Вы можете поделиться вашим адресом, сообщением и подписью. Затем получатель вводит предоставленную информацию, используя свой клиент кошелька, и проверяет право собственности. Просто, не так ли?

Update от 8 мая 2021

Был не прав про VRF. Да, действительно, подпись ECVRF нельзя использовать в качестве источника псевдослучайного числа, но она и не используется по этому назначению. Подпись нужна для построения доказательства однозначности значения Gamma (раздел 5.

3, шаг 6). А вот проверенное с помощью подписи значение Gamma уже участвует в качестве источника псевдослучайного числа (раздел 5.2, шаг 5). Спасибо Олегу Тараскину Crittografo за указание на этот момент, признаю свою ошибку. ECVRF имеет полное право на жизнь.

К сожалению, возможности использовать ECVRF на уровне блокчейна Waves всё равно пока нет, по причине отсутствия необходимого математического аппарата в смарт-контрактах.

Когда этот функционал или поддержка RSA станут доступны, можно написать новые оракулы. Что касается схемы VECRO, она в любом случае занимает свою нишу и позволяет работать без какого-либо дополнительного функционала.

Аппаратный кошелек

Аппаратный кошелек — это «флешка», которая играет роль оффлайн-компьютера с вашим приватным ключом. Такие кошельки можно использовать не только для Биткоина, но и для некоторых других популярных криптовалют. По сути — это идеальный вариант хранения ключей.

Даже если вы подключите аппаратный кошелек к компьютеру, благодаря продуманной защите, никто не сможет украсть ваш приватный ключ. Кошелек защищен пин-кодом, если злоумышленник его украдет, он ничего не сможет сделать. Считается, что такие кошельки самые безопасные, но есть одно НО:

У аппаратного кошелька существует механизм восстановления на тот случай, если кошелек сломается или потеряется. Для восстановления генерируется специальный набор слов (seed), например:

constant forest adore false green weave stop guy fur freeze giggle clock sympathy interesno kto eto chitaet swing bless napishite nam vchat pleasure possess

В комплекте с кошельком даже идет специальная книжечка, чтобы записать фразу для восстановления:

Так вот, любой, кто стырит у вас этот набор слов, может получить все ваши средства. А если потерять их и сломать кошелек — прощай биточки. Такая вот фигня. Можно татуху набить, конечно, но и ее могут посмотреть…

Основные 3 конкурирующих продукта на рынке: Trezor — 90$, Ledger Nano S — 80$ и KeepKey -130$.

Биржа

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

Читайте также:  перевыпуск ключа криптопро

Настоятельно не рекомендуем хранить какие-либо средства на бирже!

Возможные проблемы с шифрованием данных в блокчейне

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

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

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

Для чего нужна электронная подпись

Электронную подпись, которую также называют электронной цифровой подписью (ЭЦП), впервые использовали еще в 1989 году. С годами ее популярность росла, а область применения расширялась.

Если раньше ЭЦП действительно была похожа на подпись, то теперь может принимать форму pin-кода или быть “вшитой” в кнопку электронного сервиса. Цифровая подпись служит альтернативой обычной и используется при заключении различных сделок и авторизации электронных документов.

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

Доверительные цепочки

Это — хороший способ взаимного удостоверения, неплохой пример самоорганизации зрелого сообщества.

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

Доверительные цепочки позволяют не только удостоверить подписи их участников, но и использовать эти подписи для заверки документов.

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

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

Вне этих сообществ такие цепочки бесполезны, потому что подписи в них для стороннего получателя документа не являются удостоверенными.

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

Зачем подписывать сообщение?

Подписанное сообщение – это своего рода система идентификации, подтверждающая право собственности на Биткойн или другие криптовалюты. Существует много сценариев, в которых подписание сообщения будет полезным.

Как система цифровой подписи работает на практике

На практике работа системы электронных подписей в России сегодня часто сталкивается с трудностями. Одна из главных проблем ЭЦП – невозможность доподлинно установить личность человека, подписавшего документ, рассказал Bloomchain источник в юридических кругах. 

“Когда в юридической практике возникает спор о подлинности рукописной подписи (например, организация утверждает, что не подписывала договор с контрагентом), проводится экспертиза. С ЭЦП этого сделать нельзя, так как сложно установить, у кого во время подписания на самом деле был доступ к подписи”, – отмечает собеседник издания.

Еще одна проблема – недоверие к электронной подписи со стороны бизнеса, хотя в госсекторе, по мнению участников рынка, ЭЦП прижилась. “Сейчас есть много аккредитованных и неаккредитованных удостоверяющих центров. Любое юрлицо может сделать ЭЦП в одном из них или в нескольких одновременно.

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

Как создаются такие ключи?

Для того, чтобы создать приватные ключи Биткоин можно использовать определенные сервисы. К примеру, это может быть такой сервис, как bitaddress.org (bitaddress.org).

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

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

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

Как надо хранить приватный ключ?

Приватный ключ Биткоина с балансом надо еще уметь правильно хранить. Хранение может быть в нескольких вариантах:

  • На бумажном носителе
  • На электронном носителе
  • В собственной памяти.

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

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

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

Как узнать свой открытый ключ?

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

Место хранения адреса зависит от используемого кошелька, но обычно есть два варианта:

  1. Перейдите по Настройки — Адреса. В некоторых кошельках по умолчанию установлена функция создания нового адреса при каждой входящей транзакции. Это сделано с целью повышения анонимности пользователя. Но если вы не нуждаетесь в этой функции, то можно поменять настройки, установив галочку напротив опции «Вечный адрес». Но ничего страшного не произойдет, если вам отправят криптовалюты на любой из уже используемых ранее адресов — они просто перенаправятся на актуальный. Чтобы увидеть все адреса, привязанные к приватному ключу, нужно перейти в раздел «Управление адресами».
  2. Перейдите в раздел «Кошелек — Баланс» и нажмите на кнопку пополнения кошелька. На экране появится строка «Адрес кошелька для пополнения вашего баланса» — это актуальный публичный ключ, который можно скопировать и передать отправителю.

Какие ключи бывают у кошелька?

Рассмотрим кошелек в криптовалюте Bitcoin, у него есть:

Приватный ключ: генерируется случайным образом. Это 256-битное число. Обычно его записывают в шестнадцатеричном формате, например:

E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262

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

0499B4B0FB28848277DCF15C5EB78B80D9E560D55770EA897CFBEC7E85B8B62C8F8685F4211DF935A5DE20664A7F596358ED25D74FB95E53B3FAE6F49F6700DB3B

Ключи, цифровые подписи

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

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

Кошелек

Что же такое сам кошелек? Кошелек — файл, в котором хранится приватный и публичный ключи. Таких пар у одного кошелька может быть много, также как и адресов.

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

Обычно кошелек защищают паролем, настоятельно рекомендуем вам это сделать.

Криптовалюта

Здесь в качестве блоков выступают записи о действиях с единицами криптовалюты. Цепочки позволяют связать эти записи в непрерывные последовательности, начиная с момента эмиссии каждой валютной единицы.

Немного о цифровой подписи

Напомним, что это такое. Но сначала придётся чуть коснуться некоторых основ криптографии.

Подпись сообщений с помощью кошелька trezor

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

Подпись сообщения с помощью qt кошелька

В QT кошельках Вы найдете функцию подписи кошелька в file, settings илт tools. Для этого примера мы использовали кошелек Trezarcoin.

Читайте также:  Отсутствует цифровая подпись установочных файлов касперский виндовс 7. Устанавливать драйвера без цифровой подписи или нет - ЭЦП Эксперт

В кошельке Trezarcoin Вы найдете эту функцию в Tools >> Sign message. Появится всплывающее окно, состоящее из трех полей:

Приватный ключ и цифровая подпись в блокчейне

С помощью приватного ключа создается электронная цифровая подпись в блокчейне. Это способ подтвердить свое право совершать транзакции в блокчейне. В жизни для этой цели мы предъявляем паспорт, ставим подпись или вводим ПИН-код. Особенность цифровой подписи в блокчейне в том, что она дает возможность подтвердить личность, но при этом не раскрывать свои данные. Рассмотрим ее использование на примере блокчейна Биткоина.

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

Цифровая подпись — это хеш, созданный на основе приватного ключа и самих подписываемых данных. То есть это набор символов, который получен с помощью шифрования. В Биткоине для создания такого хеша используют Алгоритм Цифровой Подписи Эллиптической Кривой (ECDSA).

Рассмотрим как создается и подписывается транзакция в блкочейне:

  1. Информация об отправлении шифруются с помощью SHA-256.
  2. Алгоритм ECDSA получает на вход приватный ключ и хеш подписываемых данных.
  3. В результате работы алгоритма ECDSA и создается цифровая подпись.
  4. В транзакцию записывается зашифрованная информация об отправлении и цифровая подпись.

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

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

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

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

Распределённый реестр

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

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

Также сами по себе цепочки не решают задачи распределения блоков между серверами и последующего их получения. Цепочки позволяют лишь собрать имеющиеся блоки в непрерывную последовательность.

Для реализации распределенного реестра не только должны быть приняты меры для создания цепочки блоков, но и разработан механизм распределения блоков по серверам, исключающий потерю какого-либо звена цепочки.

Реализация

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

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

Ещё раз, чтобы отложилось и было понятнее. Оракул не просто работает по предложенной схеме. Его работа полностью контролируется на уровне блокчейна установленным намертво смарт-контрактом. Шаг влево, и транзакция просто не пройдёт. Так что, если транзакция попала в блокчейн, пользователю даже проверять ничего не надо, за него всё уже проверили сотни узлов сети.

На текущий момент в основной сети Waves запущен один VECRO (вы можете запустить свой, это не сложно, просто загляните в пример конфигурации). Текущий код работает на PHP (на WavesKit, о котором я рассказывал ранее).

Для того чтобы воспользоваться сервисом оракула необходимо:

  • Зафиксировать R;
    • Отправить минимум 0.005 Waves на алиас оракула init@vecr;
    • Получить R-code в поле attachment в трансфере 1 R-vecr токена от оракула пользователю;
  • Получить подпись;
    • Отправить минимум 0.005 Waves на алиас оракула random@vecr, а также ОБЯЗАТЕЛЬНО указать в поле attachment полученный ранее R-code и дополнительные пользовательские данные;
    • Получить S-code в поле attachment в трансфере 1 S-vecr токена от оракула пользователю;
  • Использовать S-code в качестве источника псевдослучайного числа.

Нюансы текущей реализации:

  • Отправленные оракулу Waves используются в качестве комиссии для обратной транзакции пользователю, вплоть до максимальных 1 Waves;
  • R-code — это конкатенация байта символа ‘R’ и 32-байт значения R в кодировке base58;
  • R-code в attachment должен находиться первым, пользовательские данные идут после R-code;
  • S-code — это конкатенация байта символа ‘S’ и 32-байт значения S в кодировке base58;
  • S является результатом деления по модулю, поэтому нельзя использовать S как полноценное 256-битное псевдослучайное число (данное число может считаться максимум 252-битным псевдослучайным числом);
  • Наиболее простой вариант — использовать в качестве псевдослучайного числа хэш от S-code.

Пример получения S-code:

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

Буду рад ответить на вопросы и принять замечания, спасибо.

Симметричное и асимметричное шифрование

Рассказать секрет так, чтобы о нем никто не узнал, проще всего лично. Когда такой возможности нет, используют шифрование. Существует два криптографических метода: симметричный и асимметричный. Описание методов понадобится для понимания работы публичных и приватных ключей в блокчейне.

До изобретения интернета все известные методы шифрования были симметричными. Это значит, что ключ для шифрования и расшифровки информации использовался один и тот же. Все как с обычными дверными замками: один ключ открывает и закрывает дверь.

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

Симметричное шифрование
Ключ для расшифровки отправляется. Поэтому злоумышленник может им воспользоваться, чтобы расшифровать сообщение

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

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

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

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

Советы

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

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

Совсем по-простому

Блокчейн — это последовательное удостоверение какой-то информации.

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

Далее подпись вашего соседа и своё собственное дополнение заверил следующий сосед и так далее.

В конце концов, информация, содержащаяся в документе, будет подтверждена всеми жителями многоквартирного дома.

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

Читайте также:  firefox - Как сделать цифровой сертификат доступным для LibreOffice Writer для цифровых подписей?

Толстый и тонкий

По первоначальной задумке каждый пользователь криптовалюты должен иметь на своем компьютере полную копию блокчейна, это называется узлом сети или нодой (Подробнее). Во времена зарождения Биткоина так и было. Очень удачно написано в Популярной Механике:

Хеш-функция в технологии блокчейна, пример алгоритма шифрования

Хешированием называют трансформацию исходных данных любого объема с ограничением диапазона по максимуму. После вычислений заранее определенная функция преобразует их в строку нужной величины. Такие возможности стандартно предусмотрены в Java и других языках программирования. В частности, они нужны для обработки таблиц и крупных массивов данных.

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

После выполнения команды «hash_hex» слово «Бегемот» превращается в строку: fh7677e18j3a7678946g3bch00kjec9sc9s9s4e51ggc7cc5df998f72ds433dq9.

Достаточно установить другой регистр одной буквы и подать на вход «бегемот», чтобы на выходе получить совершенно другое значение: 447dw33e434f55d44cf3345d168qq6f5e492eea166d8ff54ee06h67ee65rr33f1.

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

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

Холодный или горячий

Все вышеперечисленные кошельки — горячие. Т.е. они имеют доступ к интернету, чисто теоретически, ваш приватный ключ кто-то может украсть, например, если вы будете ходить на всякие нехорошие сайты и кликать по нехорошим ссылкам.

Холодный кошелек установлен на компьютере без доступа к интернету. Можно ли так работать? Да, вполне. Вы можете на оффлайн компьютере подписать транзакцию о переводе Маше 1 BTC, скопировать текст транзакции на флешку, перенести на компьютер с доступом к интернету и отправить транзакцию в сеть.

Цепочка блоков

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

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

Но документ (пусть тот же e-mail) может быть подписан не одним человеком, а несколькими. И каждый из них может внести в документ какие-то свои дополнения. В результате образуется та самая цепочка блоков.

Например, такая.

Или такая.

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

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

Цепочка блоков — это некий документ с изменениями, каждое из которых подписано удостоверенной электронной подписью.

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

Цепочка подписей

Однако есть способ обойтись без центра сертификации…

Представьте, что вы лично знаете Сергея. Сергей лично знает Константина, Константин лично знает Виталия, а Виталий лично знает Александра.

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

Собственно, это и есть один из вариантов цепочки блоков.

Здесь в качестве подписанного блока выступает удостоверение чужой подписи. Но в содержательную часть блока можно включить какие угодно данные.

Цепочку блоков можно замкнуть или превратить в сеть.

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

Здесь следует отметить, что цепочки могут нарушиться, например, если чья-то подпись окажется скомпрометированной или по каким-то причинам она будет отозвана. Чтобы восстановить действительность цепочки, возникшие фрагменты нужно связать другим способом.

Возможность создания цепочек подписей (блоков) была реализована, например, в ранних версиях PGP в начале 90-х.

Чем блокчейн не является

Некоторые из обсуждающих блокчейны используют в качестве его синонимов слова «криптовалюта» и «распределённый реестр». — Ни тем, ни другим блокчейн не является!

Однако технология информационных блоков, связанных цифровыми подписями, используется и там, и там.

Чья подпись

Ну хорошо, документ подписан! — Но кем? Понятно, что тем, кто сгенерировал для себя соответствующую пару криптографических ключей. Но кто он? Или кто она, если речь идёт о какой-то организации?

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

Требуется каким-то способом подтвердить принадлежность электронной подписи.

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

Необходимость удостоверения электронной подписи блока очень часто упускается из виду рассуждающими о блокчейнах.

Электронная подпись

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

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

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

Это обстоятельство позволяет зафиксировать содержание исходного документа, как бы подписать его.

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

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

Юридическая сторона дела

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

Существует чёткий признак юридически значимого действия — его подтверждение должно приниматься судом.

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

Основными нормативными документами по этому вопросу являются федеральный закон «Об электронной подписи» № 63-ФЗ от 25.03.2021 и ГОСТ Р 34.10-2021 «Информационная технология (ИТ). Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».

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

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

Цепочка блоков сама по себе не является ни криптовалютой, ни распределённым реестром.

Заключение

Блокчейн обеспечивает связанность данных, удостоверенных электронно-цифровыми подписями.

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

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

Область доверия к цепочке ограничивается областью действительности электронных подписей, использованных в ней.

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

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

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

P. S. О чём ещё мы пишем в нашем блоге:

Оцените статью
ЭЦП Эксперт
Добавить комментарий