Bitcoin мультиподпись (Whonix + Electrum)

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 683
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
В этом теме мы рассмотрим технологию Биткоин-мультиподписи на примере кошелька Electrum, в операционной системе Whonix.

***Примечание. Данный мануал одинаково будет работать как на Windows, Mac и BSD, отличаться будет только процесс установки самого кошелька Electrum.
1) Начнем с истории и скучных терминов, но может кому то будет интересно:
Мультиподпись впервые была реализована в кошельке BitGo (2013 год).​
В 2015-ом году разработчики Electrum выпустили апдейт 2.0, с возможностью создания мультисиг-адреса по схеме “2-из-3”.​
Термины
* multi-signature transaction – транзакция с несколькими подписями;​
Давайте разделим понятия seed и mnemonic phrase:​
* seed -- 256-битное число, обычно представляется в виде 64-значного 16-ричного числа;​
* mnemonic phrase -- словесная форма seed с дополнительным контрольным словом. То есть, мнемоническая фраза и seed представляют собой одно и то же, просто мнемоническая фраза является более удобочитаемой для человека;​
* master private key (xprv) – формируется из мнемонической фразы, используется для генерации бесконечной последовательности приватных ключей (private key).​
* master public key (xpub) – позволяет генерировать одинаковую последовательность адресов (address) независимо от мнемонической фразы (seed). Таким образом, вы можете импортировать master public key (xpub) в кошелек, и получить безопасный вариант только для приема средств (watch-only wallet).​
Некоторые иерархически детерминированные кошельки (HD-кошельки), куда относится Electrum, для большей безопасности позволяют разделять создание master private key (xprv) и публичного ключей (public key). Сам кошелек можно настроить указав ему только master public key (xpub). Что мы получим:​
  • кошелек который сможет создавать бесконечное количество адресов (address);
  • при скомпрометированном master public key (xpub) злоумышленник не сможет вывести ВТС из кошелька;
* watch-only wallet – безопасная модель кошелька только для приема ВТС. Для этого достаточно импортировать свой master public key (xpub). Можно видеть баланс кошелька, генерировать новые адреса, но нельзя отправить с него средства. ВТС отправленные на новые сгенерированные адреса, автоматически будут отображены в истории кошелька.​
* private key – приватный ключ, участвует при создании подписи;​
И еще один момент, не совсем правильно считать, что публичный ключ и адрес кошелька одно и тоже. Адрес кошелька (address) --- это хэш публичного ключа (public key).​
Где можно применить технологию мультиподписи?
Мультиподпись усложняет операцию траты и повышает уровень безопасности хранения ВТС, но также разделяет ответственность между совладельцами мультисиг-кошелька.​
Разделение ответственности означает, что несколько человек (владельцы xpub-ключей от мультисиг-кошелька) должны достичь консенсуса, и принять решение о трате/переводе ВТС. Ихнее решение будет зафиксировано с помощью цифровой подписи каждого подписанта.​
Пример. Есть бизнес, у которого пять совладельцев. Чтобы один человек не мог принимать решения о трате средств (а также чтобы он не смог украсть ВТС компании) – здесь пригодится мультисиг-кошелек, например 3-из-5. То есть, чтобы потратить/перевести ВТС с мультисиг кошелька нужно как минимум три подписи (в данном случае большинства) совладельцев компании. Или же можно завести кошелек 4-из-5, или даже 5-из-5.​
***Примечание. На момент написания этого мануала, кошелек Electrum поддерживает разные варианты с количеством обязательных подписей и подписантов, вплоть до 15-из-15.

Простыми словами, мультиподпись это создание ВТС-адреса который требует больше одного ключа для подтверждения операций. Создатели мультисиг-кошелька самостоятельно выбирают общее количество ключей, а также сколько их нужно для подтверждения операций.​
На данный момент самой популярной схемой мультисиг-кошелька является – 2-из-3. Таким образом решается одно из главных торговых взаимоотношений – спор за невыполнение условий сделки одной из сторон (попытка мошенничества), в котором участвуют покупатель, гарант и продавец (у каждого свой xpub-ключ от мультисиг-кошелька).​
Не забывайте, безопасность ВТС в Electrum зависит от безопасности хранения мнемонической фразы. Секретная фраза позволяет заново сформировать закрытые ключи кошелька, поэтому все адреса могут быть восстановлены. Если вы потеряете секретную фразу –- потеряете свои ВТС навсегда. Если seed-фраза достанется другому человеку –- то он с легкостью восстановит ваш кошелек и украдет ваши ВТС.​
__________________________________________________________________________________________________________

2) Установка кошелька Electrum на Whonix:
Думаю не стоит лишний раз напоминать о фишинге и загрузки софта с непроверенных источников, поэтому перейдем к установке.​
Если вы используете Windows, Mac или другой Debian-based дистрибутив, всю необходимую информацию вы найде на официальном сайте Electrum:​
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
С Whonix чуть другая ситуация, ибо чего нету в репозиториях Debian, то не является кошерным халяльным правосланым безопасным,.​
Поэтому установим Electrum как
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
Whonix-сообщество.​
1) Откройте терминал (Konsole).​
Если вы используете Qubes-Whonix, выполните следующие шаги:​
Qubes App Launcher (blue/grey "Q") --> Whonix-Workstation AppVM (commonly named anon-whonix) -> Konsole
Если вы используете Whonix-Workstation, выполните следующие шаги:​
Start Menu -> Applications -> System -> Konsole
2) В Whonix-Workstation (whonix-ws-14 Qubes-Whonix) терминале, добавьте стабильное название Debian "stretch" в Apt-conf default-release.​
Откройте в редакторе с root-правами:​
/etc/apt/apt.conf.d/70defaultrelease​
Если вы используете Qubes-Whonix, выполните следующие шаги:​
kdesudo kwrite /etc/apt/apt.conf.d/70defaultrelease​
Если вы используете Whonix-Workstation, выполните следующие шаги:​
sudo nano /etc/apt/apt.conf.d/70defaultrelease​
Добавьте следующий текст:​
APT::Default-Release "stretch";​
Сохраните и закройте редактор​
3) Добавьте текущее тестовое название Debian "buster" в sources.list
sudo su -c "echo -e 'deb
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
buster main' > /etc/apt/sources.list.d/testing.list"​
Или воспольщуйтесь .onion-зеркалом:​
sudo su -c "echo -e 'deb tor+
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
buster main' > /etc/apt/sources.list.d/testing.list"​
4) Обновите списко пакетов:​
sudo apt-get update​
5) Установите Electrum из тестовой ветки Debian "buster"
sudo apt-get install electrum/buster​
3) Запуск, настройка Electrum и создание мультисиг-кошелька

Start Menu -> Applications -> Electrum

Если не запускается, откройте терминал и введите electrum и нажмите клавишу Enter.

Кошелек спросит вас как подключиться к серверу, выберите Select server manually:
Посмотреть вложение 8073
В следующем окне перейдите на вкладку Server, там должна стоять галочка на Select server automatically:
Посмотреть вложение 8074
Теперь перейдите на вкладку Proxy и задайте настройки как на этом скриншоте:

Посмотреть вложение 8075


алее кошелек предложит вам… создать новый кошелек

***Примечание. Чтобы лучше понять как работает мультиподпись, и как она может защитить ваши ВТС при покупке чего то онлайн, давайте смоделируем ситуацию: вы Покупатель, нашли Продавца у которого есть нужный вам товар, сделка проводится через Гаранта.
Покупатель создает новый мультисиг-кошелек (так мы его и назовем “Покупатель”):
Посмотреть вложение 8076

Выбираем Multi-signature wallet:
Посмотреть вложение 8079

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

***Примечание. Все стороны данной сделки должны выбрать одинаковую схему.

Посмотреть вложение 8080
Далее, выбираем создать новую мнемоническую фразу (Create a new seed):
Посмотреть вложение 8081
Выберите тип адресов которые будут использоваться в вашем мультисиг-кошельке. Все стороны сделки должны выбрать один и тот же тип адресов. Выбираем Standard:

***Примечание. Хотя новости и хорошие, число SegWit-транзакций в сети растет, но на данный момент довольно мало сервисов поддерживают SegWit-адреса (bech32). Тот же гиганг Binance не поддерживает вывод ВТС на bech32-адреса.
Посмотреть вложение 8082

В следующем окне мы видим мнемоническую фразу, которую нужно сохранить и ни с кем ею не делиться!
Посмотреть вложение 8084
В следующем окне вы увидите свой master public key (xpub), который нужно обязательно сохранить.

***Примечание. Master public key, не содержит в себе секретных данных, которые могут нанести ущерб вашим ВТС. Им можно делиться с другими. А сохранить его как раз для этого и нужно, чтобы потом поделиться им с другими сторонами сделки (подписантами).
Посмотреть вложение 8085
В следующем окне кошелек попросит ввести xpub-ключи других подписантов: Посмотреть вложение 8086
**Примечание. Все стороны сделки должны проделать эти шаги, и в этом месте обменяться своими xpub-ключами.
Имя кошелькам можно задавать любые. Оставляю вам мнемонические фразы. Кто будет быстрее всех, того ждет маленький приз –- понимание как работает мультисиг
.

Seed_1: panther frequent nice soap can bean image trade thumb swarm fox above
Seed_2: taxi today special enter drift flip mechanic again boss shiver bunker matter
Seed_3: arrange throw purse sell divide mandate wide grain document water mango urban

Выбираем Enter cosigner key, и вводим по очереди xpub-ключи Гаранта и Продавца. Последовательность добавления других подписантов ни на что не влияет.

Xpub-ключ Гаранта:

Посмотреть вложение 8087
Xpub-ключ Продавца:
Посмотреть вложение 8088
В следующем окне задаем пароль свому кошельку:

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

“Сообразили на троих”:

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

Индикатор в правом нижнем углу должен загореться зеленым/синим (зависит от цвета ваше темы), а лучше кликните по нему:

Посмотреть вложение 8091
Мой кошелек подключен к десяти нодам, высота блокчейна 540013. Высоту блокчейна можете проверить в своем любимом эксплорере. Например лично я не люблю blockchain.com (бывший .info), он мне напонимает Роджера Вера + не работает с Tor-браузера, даже по .onion-ссылке. Так что высоту блокчейна я проверил на
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
, высота совпала, а значит кошелек готов к работе.

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



Посмотреть вложение 8092
Посмотреть вложение 8093
***Совет Продавцам и Гарантам. После того как Покупатель отправил ВТС на мультисиг-кошелек, и вы видите что транзакция попала в мемпул, не спешите отправлять товар/услугу Покупателю, дождитесь минимум три подтверждения в сети ВТС.
Продавец отправил товар Покупателю. После проверки товара, Покупатель остается недовльным качеством товара и обвиняет Продавца в несоблюдении условий сделки, открывается спор, где стороны будут предоставлять пруфы, и последнее слово за Гарантом и его xpub-ключом.

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


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

Посмотреть вложение 8095
Copy –- на данном этапе скопирует в буфер обмена скрипт неподписанной транзакции.

После каждого шага я буду постить ВТС-скрипты, чтобы вы видели как они меняются при добавлении каждой подписи. Проверить их можно например здесь:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
или здесь:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
(вкладка Transactions – > Raw Transaction)

Скрипт неподписанной транзакции:

010000000115aef7d989bd3916e33e8e842462419e19f6d49d5ddf29c9d619d368c8eafd4a01000000fd0c010001ff01ff01ff4d0201524c53ff0488b21e00000000000000000030ba3ded0764b2ac8c0fd0a1edb62908ea06a1339ef30781898a70482c2008bd039fec5737b12780a9ca81893df3d70e34b77c9aa407eab62b24b1d33b6a67fcf8000000004c53ff0488b21e0000000000000000008cb45bb0fd86b39e748d630325607cebc3519db3c931dd4c0692e5797a81a97202e7b71d6117cb56a07b6df6c97f786bca9a01327b7d2b392b8cf95ed3769f0e40000000004c53ff0488b21e0000000000000000006de36390b85288406f856e85a93c5dc66fdc5045450658b015b542d09f93744c02cdbf5c70ccf9b92247f3ac2f6b6bbd330685bc3c0dd84133b46ce4cd0cbbc16a0000000053aefeffffff02c6aa01000000000017a914757141eeed0531e19eec5aa0f0b02b37bcceeda587a0f70300000000001976a91496a6d752a7d5746945c42a1be40648932de685c388ac733d0800
Export –- экспортирует тот же скрипт сразу в текстовый файл .txn, который потом можно импортировать в другой кошелек для последующей подписи.
Если все сходится, нажмите на Sign, кошелек запросит ваш пароль, после его ввода вы подпишите данную транзакцию xbub-ключом Покупателя:

Посмотреть вложение 8096
Видите? Status signed (1/2), а кнопка Sign уже неактивна. Copy и Export выполняют теже функции что и в предыдущем шаге.

Вот скрипт подписанной транзакции xpub-ключом Покупателя:

010000000115aef7d989bd3916e33e8e842462419e19f6d49d5ddf29c9d619d368c8eafd4a01000000fd530100483045022100881c196d50416cb7233fe96a41f9f938058a6e11b3f2cfc703790389626cd519022039906f77c72cc1c89e8d4783a1c290ccf5b97ea4a432abacf2d7e246639d6cf20101ff01ff4d0201524c53ff0488b21e00000000000000000030ba3ded0764b2ac8c0fd0a1edb62908ea06a1339ef30781898a70482c2008bd039fec5737b12780a9ca81893df3d70e34b77c9aa407eab62b24b1d33b6a67fcf8000000004c53ff0488b21e0000000000000000008cb45bb0fd86b39e748d630325607cebc3519db3c931dd4c0692e5797a81a97202e7b71d6117cb56a07b6df6c97f786bca9a01327b7d2b392b8cf95ed3769f0e40000000004c53ff0488b21e0000000000000000006de36390b85288406f856e85a93c5dc66fdc5045450658b015b542d09f93744c02cdbf5c70ccf9b92247f3ac2f6b6bbd330685bc3c0dd84133b46ce4cd0cbbc16a0000000053aefeffffff02c6aa01000000000017a914757141eeed0531e19eec5aa0f0b02b37bcceeda587a0f70300000000001976a91496a6d752a7d5746945c42a1be40648932de685c388ac773d0800
Этот же скрипт нужно передать Гаранту на подпись.

Смотрим кошелек со стороны Гаранта. Выбираем ToolsLoad transaction – и выбираем нужный вариант. Самый удобный (имхо) from text, то есть – копипаст скрипта:

Посмотреть вложение 8097
После того как Гарант загрузит транзакцию (Load transaction), он увидит то же окно, что и Покупатель (после того как он подписал транзакцию):

Посмотреть вложение 8098
Гарант сначала должен подписывает транзакцию (Sign) и потом транслировать её в сеть ВТС (Broadcast):

Посмотреть вложение 8100


Скрипт подписанной двумя подписями мультисиг-транзакции:

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

Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


Посмотреть вложение 8101
TxID нашей транзакции:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


Скрин мультисиг-кошелька (Покупателя, Гаранта и Продавца):

Посмотреть вложение 8102
Пожалуй все. Не думайте о мультиподписи как о волшебной пилюле, которая все решит за вас и обезопасит ваши ВТС. Например, если вы создатите личный кошелек по схеме 2-из-3, и потеряете один из ваших приватных ключей, то ваши ВТС не украдут, и у вас будет доступ к ним, но сразу же переводите ВТС на другой адрес, не ждите когда потеряете второй приватный ключ!

По поводу бекапов ключей/seed-фраз. Никогда не сохраняйте их в черновиках почты, на Гуглово-Яндексо-Дропбоксовых-АйКлауд дисках и т.д. Пользуйтесь PGP, VeraCrypt и другими open source инструментами.

Пользуйстесь мультиподписью.
Безопасность ваших ВТС зависит только от вас.

Спасибо за внимание.
 
Последнее редактирование:

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя