64 / 736PRIV

Приватность в Bitcoin

Bitcoin Privacy

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

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

Анна получила за работу 100 000 sat — самых маленьких единиц биткоина. Позже она платит из этих средств Павлу 20 000 sat; 79 000 sat возвращаются в её кошелёк, а 1 000 sat составляют комиссию. Выход содержит сумму и условия, при которых её можно потратить. Сеть видит всю операцию. Павел знает свою сумму и Анну, поэтому может попытаться определить, какой из других выходов является её сдачей. Это не раскрывает автоматически все её сбережения, но даёт подсказку. В отличие от банковской выписки, запись доступна не только банку и владельцу счёта. Любой человек может вернуться к ней даже спустя годы. [1]

Незнакомец видит публичную запись, Павел ещё и знает Анну, а у биржи могут быть её документы. Поставщик кошелька может знать, какие адреса запрашивает приложение. Определение того, от кого и какие сведения вы хотите защитить, называется моделью угроз. Это не означает, что всех считают злоумышленниками. Такой подход помогает выбрать подходящую защиту: скрыть доходы от клиентов — не то же самое, что защитить сетевое соединение. Приватный ключ — это секретные данные, с помощью которых кошелёк создаёт цифровую подпись, одобряющую платёж. Сохранение ключа в тайне само по себе не скрывает историю платежей. [1] [3]

Анна может давать каждому клиенту новый адрес для получения средств. Тогда нельзя просто сложить все платежи на один многократно использованный адрес. Кошелёк обычно создаёт новые адреса и для остатка, возвращаемого отправителю, — сдачи, или change. Это хорошая основа, но не гарантия отсутствия связей. Если позже Анна объединит средства с разных адресов в одном платеже, она сама создаст новую подсказку. Публичный адрес для пожертвований — отдельный случай: прозрачность может быть намеренной, но поступления на него тогда не являются частными. [1]

Кошелёк не распоряжается одним неделимым остатком. Он управляет неизрасходованными выходами прежних транзакций — UTXO — и выбирает некоторые из них как входы платежа. Если несколько входов используются вместе, аналитик часто предполагает общего владельца. Это эвристика, то есть приём для предположений, а не доказательство: совместные транзакции нескольких людей опровергают это предположение. Coin Control позволяет влиять на выбор. Метки происхождения средств помогают сохранять разделение, но остаются заметками кошелька и ничего не предписывают сети. Ручной выбор без понимания сдачи может ухудшить приватность и увеличить комиссию. [2] [7]

Расширенный открытый ключ XPUB позволяет получать другие открытые ключи, а вместе с правилами кошелька — и адреса соответствующей ветви. Эти данные позволяют отслеживать её платежи, но одного XPUB недостаточно, чтобы подписать платёж. Объём доступа зависит от переданного ключа: он необязательно раскрывает весь кошелёк, но всё равно чувствителен. Сервис также может связать вывод денег с именем, проверенным через KYC — установление личности клиента. Веб-обозреватель транзакций может записывать ваши запросы и их источник. Никогда не передавайте слова восстановления или приватный ключ для проверки баланса. Даже открытые данные стоит раскрывать только в необходимом и понятном объёме. [1] [6]

Приложению нужно определить, какие платежи принадлежат ему. Передавая список адресов чужому серверу, оно может раскрыть их связь. Full Node — это компьютер с программой, которая самостоятельно проверяет транзакции и блоки Bitcoin по правилам сети. Собственный Full Node помогает, если кошелёк действительно получает данные через него, при необходимости через собственную службу индексирования. Просто установить узел рядом с кошельком недостаточно. Лёгкие кошельки могут использовать компактные фильтры BIP 157 и искать совпадения у себя, не отправляя список адресов. Но другие сетевые следы сохраняются. Tor может ограничить раскрытие IP-адреса — адреса интернет-соединения, однако не меняет публичные суммы или связи между транзакциями. [1] [3]

Наблюдателю необязательно узнать имя непосредственно из адреса. Может хватить публичного счёта с точной суммой, времени объявленной покупки и следующего платежа. Структура транзакции и вероятная сдача дают дополнительные подсказки. Ни один признак сам по себе надёжно не доказывает владение, но несколько усиливают предположение. Разделение денег между кошельками тоже не поможет, если затем снова их объединить. Расширенная функция avoid partial spends в Bitcoin Core может выбрать выходы одного адреса для совместной траты. Это ограничивает постепенное связывание новых платежей с этого адреса, но может добавить входы и увеличить комиссию. Результат зависит и от заданного лимита комиссии; универсальной анонимизации это не даёт. [1] [5]

CoinJoin объединяет средства нескольких людей в одну транзакцию. Наблюдателю может стать труднее понять, какой первоначальный владелец контролирует каждый новый выход. PayJoin устроен иначе: получатель добавляет собственный вход к платежу отправителя, поэтому простое предположение об одном владельце всех входов не работает. Ни один метод не стирает историю и не гарантирует анонимность. Результат зависит от протокола, участников, знаний других наблюдателей и последующих платежей. До использования нужно понять также координацию, комиссии и последствия прерывания процесса. Само название функции ничего не гарантирует. [2] [7]

Silent Payments по BIP 352 позволяет публиковать постоянные платёжные реквизиты, из которых отправители получают разные выходы назначения. Получателю не приходится заранее выдавать каждому новый обычный адрес. Однако его кошелёк должен поддерживать протокол и просматривать данные, чтобы находить поступления. Спецификация отделяет ключ поиска платежей от ключа расходования. Резервное копирование и восстановление должны соответствовать кошельку; использованные метки тоже могут иметь значение. Метки Silent Payments не создают отдельных личностей: их публичные реквизиты содержат общий открытый ключ сканирования. Этот метод также не скрывает все дальнейшие перемещения средств. [4]

Для каждого обычного поступления используйте новый адрес, не публикуйте без необходимости платёжные документы и выясните, откуда кошелёк берёт данные. Сохраняйте сведения о происхождении средств и разделяйте цели, которые не хотите связывать. До ручного выбора входов или применения сложной техники разберитесь в последствиях: ошибки не являются неизбежной ценой приватности. Проверка адресов, резервных копий и комиссий остаётся столь же важной. Цель — раскрывать меньше лишней информации, а не обрести ложную уверенность, будто никто никогда не сможет связать вас ни с одним платежом. [1] [3] [4]

Для полной картины прочитайте эту статью вместе с Псевдонимность, CoinJoin, Coin Control, KYC, Bitcoin, Биткоин-адрес. На эту статью также ссылаются Watch-only Wallet, Coin Control, Change Address, Extended Public Key (xpub).

DOC · 001Bitcoin.org — Protect Your PrivacyДокументация DOC · 002BIP 78 — A Simple Payjoin ProposalСпецификация DOC · 003BIP 157 — Client Side Block FilteringСпецификация DOC · 004BIP 352 — Silent PaymentsСпецификация DOC · 005Bitcoin Core 0.21 — Avoid Partial SpendsДокументация DOC · 006BIP 32 — Hierarchical Deterministic WalletsСпецификация DOC · 007Gregory Maxwell — CoinJoin: Bitcoin privacy for the real worldПервичный источник
Обновлено: Сначала источники · Не является инвестиционной рекомендацией