Logo
Поділитися цією статтею

Уникнення злиття: методи підвищення Політика конфіденційності в протоколі Bitcoin

Розробник Bitcoin CORE Майк Хірн обговорює витоки Політика конфіденційності та нову техніку, яку він назвав «уникнення злиття».

Майк Хірн є розробником програмного забезпечення, який працює в команді розробників Bitcoin CORE , а також у Google. У цій статті Майк обговорює деякі витоки Політика конфіденційності Bitcoin і нову техніку, яка наразі не має назви, але яку він називає уникнення злиття.

Вступ до Політика конфіденційності Bitcoin

Прикро, що, незважаючи на репутацію біткойна в пресі, його користувачі наразі розкривають велику кількість особистої інформації.

Продовження Нижче
Не пропустіть жодної історії.Підпишіться на розсилку Crypto for Advisors вже сьогодні. Переглянути Всі Розсилки

Надзвичайно легко комусь Навчання про ваш баланс, історію торгів тощо. Захист цієї інформації є основною функцією будь-якої корисної фінансової системи.

Ось кілька витоків, які виникають під час щоденного використання.

Повторне використання адреси

Багато проблем Політика конфіденційності в Bitcoin виникають через те, що зловмисник дізнається, які виходи належать тому самому гаманцю. Якщо ви можете обчислити це, ви зможете дізнатися баланс гаманців і, можливо, з ким він торгував.

Найчастіше це відбувається, коли адреси використовуються повторно. Це легко зрозуміти, оскільки такі популярні сайти, як blockchain.info, індексують виходи та транзакції за адресою, що дозволяє швидко шукати всі транзакції, які посилаються на будь-яку задану адресу.

Повторне використання адреси має багато різних причин. Ось вибірка:

1. Проблеми гаманця кінцевого користувача

Бібліотека bitcoinj завжди повторно використовує адреси відповідно до Політика, таким чином витікаючи багато приватної інформації. На це є дві причини. ONE полягає в тому, що до розробки HD-гаманців постійне використання ключів призводило до анулювання старих резервних копій гаманців.

Bitcoin-Qt має «пул ключів», щоб спробувати вирішити цю проблему, але він лише усуває проблему: пул ключів може бути мовчки вичерпаний, що призводить до тієї ж проблеми. Недійсність резервних копій може призвести до втрати грошей.

Після впровадження HD-гаманців (що триває) ця проблема зникне, залишиться лише друга проблема, пов’язана з тиском пам’яті на телефонах нижчого класу. На таких пристроях все ще може знадобитися повторне використання адреси, але на телефонах і настільних комп’ютерах/ноутбуках вищого класу T повинно виникати проблем.

2. Проблеми гаманця сервера

Немає публічних реалізацій гаманців з відкритим кодом, які масштабуються до гаманців із дуже великою кількістю ключів. Наскільки я знаю, біржам і основним платіжним процесорам довелося впроваджувати багато спеціального коду, щоб обійти відсутність масштабованості Bitcoin-Qt (і bitcoinj).

Це змушує одержувачів повторно використовувати адреси.

3. Соціальні умовності

Люди, які додають статичні адреси в підписи на форумах, QR-коди ETC.

З часом нам потрібно буде досягти прогресу в усіх цих проблемах, щоб зменшити повторне використання адрес. Гаманці HD і платіжний протокол є важливими інструментами, які допоможуть нам досягти цього.

Змінити виходи

злиття-уникнення
злиття-уникнення

ONE із найбільш дратівливих витоків Політика конфіденційності в Bitcoin полягає в тому, що люди вивчають нижню межу вашого балансу.

Як це працює, можна інтуїтивно зрозуміти через аналогію з готівкою. З паперовими грошима, якщо ви передаєте купюру в 500 швейцарських франків, щоб заплатити за напій вартістю всього 5 швейцарських франків, торговець бару дізнається, що ваш баланс становить принаймні 495 швейцарських франків. Він, звичайно, може бути вищим, але принаймні не нижчим. Bitcoin має ту саму проблему.

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

Якщо невідповідність відбувається в ONE напрямку, у вас буде багато невеликих результатів, і здійснення платежів на будь-які немалі суми починає коштувати значних комісій, оскільки транзакції, які ви генеруєте, величезні.

Якщо невідповідність у протилежному напрямку, тоді для оплати дрібниці потрібно використовувати велику монету, а вихідні дані про витік цінних даних про те, наскільки ви багаті.

Мережевий трафік

P2P-з’єднання Bitcoin незашифровані. ONE з причин є те, що більшість даних, що передаються через мережу P2P, є загальнодоступними, тому їх шифрування здається безглуздим.

Інша причина полягає в тому, що за самою природою, коли ви підключаєтеся до мережі P2P, вашими однолітками може бути абсолютно будь-хто і робити абсолютно все, наприклад, вони можуть бути вузлами, керованими NSA.

І це навіть не погано! Чому NSA T має запускати вузли? Якби хтось сказав їм цього не робити, це означало б якийсь центральний орган влади, який диктував би, хто має керувати Bitcoin , а хто T. Ми цього T хочемо.

Тож шифрування даних корисне, коли ви чітко розумієте, хто має їх бачити, а хто T. Шифрування загальнодоступних даних для випадкових людей, про яких ви нічого не знаєте, не дуже корисно.

Незважаючи на все це, є ще чотири причини, чому це допоможе шифрувати з’єднання.

The перша причина для Фільтри Блума.

Це компактне представлення того, що стосується вашого гаманця: як правило, які адреси/ключі в ньому знаходяться. Фільтр є ONE із способів і може бути шумним, тобто ви T можете зчитувати адреси безпосередньо з фільтра, ви можете лише застосувати його до ланцюга блоків і подивитися, що він збігається.

Фільтри можуть мати помилкові спрацьовування, тому вузол ніколи не може бути впевнений, чи адреса справді ваша чи ні. Це досить добре, але навіть з високим рівнем помилкових позитивних результатів це все одно звужує коло монет, якими ви можете володіти досить масово.

Фільтри Bloom не є публічною інформацією, вони просто надаються клієнту та вузлу, до якого він підключається. Тож було б добре приховати їх від пасивних підслуховувачів, як-от людей, які спільно використовують вашу точку доступу Wi-Fi.

The друга причина полягає в тому, що навіть незважаючи на те, що транзакції є публічними, їхня IP-адреса джерела не є (або не має бути).

Але зловмисник, який може спостерігати за багатьма інтернет-посиланнями, може досить надійно визначити, де почалася транзакція, точно записавши час, коли транзакцію було вперше побачено, і вивчивши перший момент, коли вона пройшла через LINK.

Здається, деякі спецслужби могли б провести такий аналіз. Шифрування посилань T гарантує вирішення цієї проблеми, оскільки аналіз часу може бути можливим, але це, безперечно, ускладнює його.

The третя причина полягає в тому, що якби шифрування було об’єднано з автентифікацією «довіра при першому використанні» (TOFU), навіть активним MITM було б складніше виконувати атаки Sybil на гаманці та передавати їм погані дані.

Це важливіше для клієнтів SPV, ніж повні вузли, але обидва можуть виграти.

The остаточна причина полягає в тому, що за належної реалізації використання SSL для з’єднань P2P ускладнить їх ідентифікацію та блокування за допомогою пристроїв глибокої перевірки пакетів.

CoinJoin

З усіх перерахованих вище проблем вирішення витоку даних через вихідні дані змін є ONE із найбільш обговорюваних (хоча багато людей T усвідомлюють, що обговорюють це питання).

The Пропозиція CoinJoin отримав багато уваги та деякі початкові реалізації. Деякі люди сприймають це насамперед як інструмент Політика конфіденційності , а інші як спосіб спробувати зламати відстеження монет.

Якщо використовується для Політика конфіденційності, це найкраще можна описати як спосіб спробувати видалити інформацію, яка вже витік.

Однак CoinJoin має низку серйозних проблем, які роблять альтернативу бажаною.

Його дуже складно реалізувати, він вразливий до атак sybil/DoS (у цьому контексті це те саме), юридично сумнівний, і незрозуміло, чи працює обфускація.

The Крадіжка на овечому ринку бачив, як хтось стверджував, що відстежує монети через стакани та міксери, і, очевидно, з деяким успіхом. ONE із інструментів відстеження були атаки sybil/DoS на служби змішування, тому це не є теоретичною проблемою.

У той час як іграшкові реалізації не надто складно зібрати разом, надійні реальні реалізації з належною обробкою тайм-ауту, перевірками безпеки, хорошою інтеграцією інтерфейсу гаманця ETC потребують набагато більше зусиль.

Наразі лише blockchain.info вдалося створити ONE (на sharedcoin.com), і ви просто повинні вірити, що він T KEEP журнали. Інакше будь-хто, хто має журнали, може розмішати.

Можливо, найменш обговорюване питання – це досвід користувача.

Транзакція CoinJoin вимагає участі інших людей. Чим більше людей візьме участь, тим краще. Однак Bitcoin на даний момент досягає свого піку лише на рівні ONE транзакції в секунду.

Навіть якби всі транзакції були CoinJoined і всі зустрічалися в одній точці (аку, централізація!), вам все одно доведеться чекати 10-15 секунд, щоб отримати хороший набір учасників для змішування.

Це лише початок протоколу. Тоді всі учасники мали б отримати кандидатську транзакцію та підписати. Якщо будь-який тайм-аут, все потрібно починати спочатку.

У поганих умовах для завершення цього процесу може знадобитися хвилина або більше, особливо якщо деякі учасники мають нестабільні мережі (тобто телефони) і використовують Tor. З огляду на те, що ми намагаємося покращити продуктивність, а не зменшити її, це само по собі здається великою проблемою.

Хоча збільшення трафіку та використання допоможе зменшити цю проблему, навіть якщо трафік подвоїться, розділення єдиної центральної точки зустрічі негайно поверне час очікування на круги ONE.

Ви можете вирішити цю проблему, виконавши CoinJoins у фоновому режимі, не пов’язаному з фактичними витратами, які відбуваються.

Це вирішує проблему очікування в черзі в кав’ярні, але тоді за ці транзакції потрібно сплачувати комісію, і може бути важко пояснити людям, чому їхній баланс раптово впав за одну ніч через несподіваний податок на Політика конфіденційності .

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

Уникнення злиття

Оскільки поширеною основною причиною витоку Політика конфіденційності є невідповідність розмірів доступних монет і того, що потрібно, здається, ми могли б підійти до проблеми з іншого боку: уникаючи будь-яких витоків інформації, які потрібно стерти в першу чергу.

Shutterstock
Shutterstock

Розглянемо випадок ALICE, працівниці кав’ярні, якій платять зарплату.

ALICE чудово виконує свою роботу, і її бос це визнає, маючи платню, вищу за звичайну.

Її колега Боб підозрює, що йому T платять так багато, як ALICE , і хоче знати, тому переконує ALICE зробити йому невеликий платіж одразу після отримання зарплати (можливо, вони роблять парі, і Боб виграє).

Зі звичайними Bitcoin гаманець Аліси, ймовірно, використовуватиме вихід її зарплати, а зміна покаже, скільки вона отримує. Навіть якщо вона вже зробила кілька платежів, Боб може Соціальні мережі ланцюжком транзакцій у зворотному напрямку, доки не знайде досить кругле число на потрібну дату та не зробить висновок, що це, швидше за все, її зарплата.

Звичайний CoinJoin також їй T допомагає. Вона вводила б ONE великий вхід до міксу, а повертала б ONE великий вихід.

Вона може Request багато менших результатів, але вхідні дані все одно будуть розміром зарплати та в правильну дату. Якщо багато людей, які отримують зарплату розміром з кав’ярню, випадково не використовують ту саму транзакцію CoinJoin, витік T було виправлено.

Що їй справді потрібно, так це уникати такого великого одиночного результату. Назвемо це униканням злиття.

Коли вона подає її Платіжна Request BIP 70 своєму роботодавцю вона просить гарне поєднання номіналів, так само, як якщо б вона купувала готівку в касі обміну іноземної валюти.

У Request також вказується унікальна адреса для кожного виходу. Платіжний протокол не вказує, як гаманець повинен задовольнити цей Request, але допускає можливість того, що гаманець відправника надсилає кілька незалежних транзакцій, щоб задовольнити бажані результати.

[пост-цитата]

Якщо її роботодавець використовує старий гаманець, який T розуміє уникнення злиття, він згенерує та надішле їй одну гігантську транзакцію, яка містить багато вхідних даних (з усіх сортів кави) і всі запитувані виходи.

Це виглядатиме дуже схоже на транзакцію CoinJoin, але в ній є лише один учасник. Однак неможливо дізнатися це, просто подивившись на ланцюг блоків.

Якщо її роботодавець використовує новіший гаманець, який розуміє уникнення злиття, тоді станеться щось краще — вона отримає кілька різних, менших транзакцій, ONE з яких створює ONE або два результати, які вона запитувала.

Немає нічого, що LINK їх разом. Оскільки вона вірить, що її роботодавець не подвоїть витрати, вона може розподілити трансляцію так, щоб навіть час не визнав їх.

Якщо відбір результатів вибраний розумно, вона ніколи не опиниться в ситуації, коли вона матиме незграбно великі або малі результати для конкретної оплати. Боб просто побачить невелику транзакцію, яка дає невелику зміну результату, і незалежно від того, наскільки далеко він простежить назад, він ніколи не знайде жодного результату розміру зарплати. ALICE виграє!

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

Якщо згодом цю зміну об’єднати з багатьма іншими, щоб створити величезний платіж, він раптом дізнається, що ALICE мала володіти принаймні стільки грошей.

Тут CoinJoin, здається, має працювати – якщо зміни переходять у мікс, хто може сказати, хто володіє виходами? Але він крихкий. Навіть якщо вихідні дані мають випадковий розмір, за відсутності уникнення злиття вони будуть знову об’єднані, щоб зробити великий платіж.

Якщо ALICE випадково згадає мимохідь, що вона їде у відпустку зі своїм хлопцем, Боб може подивитися на результати міксу, до якого ввійшла її зміна, і почекати, поки деякі з результатів будуть повторно об’єднані.

Якщо 1/3 результатів залишається невитраченим, 1/3 витрачається, не об’єднуючись жодним суттєвим чином, а ще 1/3 об’єднується у платіж у розмірі 5000 доларів США ввечері перед тим, як ALICE згадує про свою відпустку, це цілком вірогідно, що поїздка обійдеться їй у 5000 доларів.

Властивості реалізації

У цій схемі є кілька речей, які роблять її приємною для реалізації:

  • Його можна писати поступово – простий і не дуже розумний алгоритм все одно може покращити чиюсь Політика конфіденційності. Пізніше можна розробити та розгорнути кращий алгоритм, але він T вимагає жодних складних глобальних оновлень. Це добре підходить для моделі розробки конкуруючих гаманців, яка використовується Bitcoin .
  • Він дуже простий і не має рухомих частин або великих державних машин. Вам T потрібно турбуватися про випадковий мобільний телефон на іншому кінці світу, який заїде в тунель у невідповідний момент або запустить програмне забезпечення з помилками.
  • Немає жодної централізації, навіть жодних тимчасових серверів рандеву.
  • Немає жодних юридичних ризиків, оскільки ви не покладаєтеся на жодні послуги, які можна вважати інструментами відмивання грошей.
  • Він міцний. Вище я навів приклади того, як CoinJoin може здаватися працюючим, але все одно витікати за наявності дуже мало додаткової інформації. Уникнення злиття T має такої проблеми.

Також є деякі мінуси:

  • Наскільки якісна ваша Політика конфіденційності , значною мірою залежить від того, наскільки спритно люди, які надсилають вам гроші, здійснюють операції. Таким чином, ваша Політика конфіденційності покладається на людей, які можуть не мати особливого стимулу щось з цим робити. Сподіваюся, звичайне програмне забезпечення гаманця за замовчуванням зробить правильні речі.
  • Це збільшує кількість транзакцій, хоча накладні витрати не такі великі, як ви могли б подумати – транзакція – це лише список вхідних даних, вихідних даних і заголовок із двома полями (версія та час блокування). Вхідні та вихідні дані фактично не змінюються через хорошу реалізацію CoinJoin, а версію/час блокування можна легко стиснути/закодувати за допомогою varint для економії місця. Різниця буде порядку байтів, а не кілобайтів.
  • Це залежить від платіжного протоколу. Але багато речей залежить від цього, і платіжний протокол має вирішальне значення для боротьби з повторним використанням адреси, що необхідно для того, щоб усі запропоновані схеми Політика конфіденційності працювали. Важливо, щоб ми зробили BIP70 максимально простим і поширеним.

Уникнення злиття T заважає відстеженню монет. Деякі люди можуть забажати впровадити системи CoinJoin лише з цієї причини.

Однак я T можу уявити, що це стане масовим. Якщо Політика конфіденційності людей захищається за допомогою інших засобів, тоді CoinJoin стає системою «допомоги злодіям приховати вкрадені гроші», яка зменшує стимули брати участь, ще більше збільшує юридичний ризик і змусить людей задуматися, чому їхні програми-гаманці вимагають від них платити лише для того, щоб захистити людей, яких вони, швидше за все, вважають поганими.

Крім того, Інцидент на Овечому ринку показує, що децентралізована боротьба зі злочинністю як метод інколи є єдиним виходом: ніхто не збирається просити поліцію допомогти повернути їхні вкрадені гроші від наркотиків, і жоден уряд не потрудився б допомогти, якби вони це зробили.

Ця стаття була спочатку опублікована на Середній

Зображення Політика конфіденційності клавіатури через Shutterstock

Mike Hearn

Майк Хірн — розробник програмного забезпечення, який спеціалізується на системному програмному забезпеченні низького рівня. Раніше він працював у Google, а зараз зосереджується на системі віртуальної валюти Bitcoin .

Picture of CoinDesk author Mike Hearn