Блокчейн

Пороговая криптография и MPC

В 2022 году хакеры украли 625 миллионов из Ronin Bridge, скомпрометировав 5 из 9 приватных ключей валидаторов. Ключи хранились на отдельных серверах, но каждый был полноценным ключом - взломай сервер, получи ключ. А что если бы ни на одном сервере не было полного ключа? Что если бы сам ключ никогда не существовал в одном месте - даже в момент создания? Пороговая криптография делает именно это: позволяет группе подписывать транзакции, распределяя доверие так, что компрометация отдельных участников не ломает систему.

  • **Fireblocks** - обработал 6T+ транзакций, используя MPC-CMP для институциональных кошельков. Ни одного взлома за 5+ лет
  • **Ethereum DVT** (Obol, SSV) - распределяет validator key между операторами, убирая single point of failure для стейкинга на 50B+
  • **ZenGo** - криптокошелёк без seed phrase: 2-of-2 TSS между телефоном и сервером. Потерял телефон? Восстановление через биометрию + cloud backup share'а
  • **drand** (League of Entropy) - Cloudflare, Protocol Labs и другие совместно генерируют непредсказуемую случайность через threshold BLS, без единой точки контроля

Предварительные знания

  • Elliptic Curves (ECC)

Shamir's Secret Sharing

Представь: ты CEO криптобиржи. Приватный ключ от холодного кошелька с 2B стоит записать на бумажку и положить в сейф. Но что если сейф вскроют? Или бумажка сгорит? А если разделить ключ на 5 частей и раздать 5 директорам - достаточно любых 3 из 5 для восстановления?

Именно эту задачу решил **Ади Шамир** (буква S в RSA) в 1979 году. Его идея гениально проста: секрет - это **свободный член полинома**, а share каждого участника - это **точка на кривой** этого полинома.

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

**Information-Theoretic Security:** в отличие от большинства криптосистем, Shamir's Secret Sharing безопасен **безусловно** - даже атакующий с бесконечной вычислительной мощностью не может угадать секрет, имея менее t share'ов. Это не вопрос сложности вычислений, а математическая гарантия.

В схеме 3-of-5 Shamir's Secret Sharing, какой степени полином используется?

Threshold Signatures (TSS)

Shamir's Secret Sharing позволяет *восстановить* секрет. Но что если нам **не нужно его восстанавливать вообще**? Threshold Signature Scheme (TSS) позволяет t-of-n участникам **создать подпись** без того, чтобы кто-либо когда-либо видел полный приватный ключ.

**Главное отличие от multisig:** в multisig (например, Bitcoin P2SH) на блокчейне видно сколько подписей и от кого. В TSS на блокчейне видна **одна обычная подпись** - наблюдатель не знает, что за ней стоит пороговая схема. Это даёт privacy и экономию gas.

**Как работает TSS на базе ECDSA?** Каждый участник имеет *долю* приватного ключа (key share). При подписании они выполняют **интерактивный протокол** - обмениваются промежуточными значениями, не раскрывая свои доли. Результат - валидная ECDSA-подпись, неотличимая от обычной.

ХарактеристикаMultisigTSS
Подписи на блокчейнеНесколькоОдна
PrivacyВидно кол-во подписантовНеотличимо от обычного
Gas (Ethereum)~3x дорожеСтандартная цена
Поддержка блокчейновНужна поддержка в протоколеРаботает на ЛЮБОМ блокчейне
Key rotationНужна новая on-chain транзакцияOff-chain, бесплатно
Сложность реализацииПростаяКриптографически сложная

**Кто использует TSS в продакшене:**

  • **Fireblocks** - институциональный custodian, 6T+ в транзакциях, TSS-based MPC кошельки
  • **ZenGo** - consumer wallet без seed phrase, 2-of-2 TSS между устройством и сервером
  • **Coinbase** - WaaS (Wallet as a Service) использует TSS для enterprise клиентов
  • **Binance** - tss-lib, open-source реализация TSS для ECDSA и EdDSA

Почему TSS предпочтительнее multisig для кросс-чейн кошельков?

Multi-Party Computation (MPC)

TSS - это частный случай гораздо более мощной концепции: **Multi-Party Computation (MPC)**. MPC позволяет нескольким сторонам **совместно вычислить функцию** над их приватными входами, **не раскрывая эти входы друг другу**.

**Yao's Garbled Circuits** - первый практический протокол MPC (1986). Идея: представить функцию как булеву схему (AND, OR, NOT гейты), а затем "зашифровать" (garble) эту схему так, что вычислитель может получить результат, но не узнает промежуточные значения.

Garbled Circuits работают для **любой** вычислимой функции, но неэффективны для сложных операций. Современные MPC протоколы используют комбинацию техник:

  • **Secret Sharing MPC** (SPDZ, ABY) - для арифметических вычислений, несколько участников
  • **Garbled Circuits** - для булевых функций, 2 участника
  • **Homomorphic Encryption** - один вычислитель, зашифрованные данные
  • **Oblivious Transfer (OT)** - базовый примитив, Алиса не знает что выбрал Боб, Боб не знает остальных вариантов

**MPC в блокчейне сегодня:** Fireblocks MPC-CMP протокол (2020) - подпись ECDSA за 1 секунду с 8 участниками. Для сравнения: ранние MPC-протоколы для ECDSA требовали минуты. Практичность MPC выросла на порядки за последние 5 лет.

Что гарантирует MPC протокол?

Distributed Key Generation (DKG)

В Shamir's Secret Sharing есть слабое место: **dealer** - тот, кто генерирует секрет и раздаёт share'ы. Dealer знает полный секрет, а значит, является единой точкой отказа. **Distributed Key Generation (DKG)** решает эту проблему: ключ генерируется коллективно, и **ни один участник никогда не знает полный приватный ключ**.

**Зачем DKG?** Если в TSS кто-то изначально создал ключ и раздал share'ы - этот кто-то мог сохранить копию. DKG гарантирует, что полный ключ **никогда не существовал** ни в одном месте, даже в момент создания.

**Pedersen DKG (1991)** - классический протокол. Каждый участник одновременно является dealer'ом для своего случайного секрета:

**Verifiable Secret Sharing (VSS):** Pedersen DKG использует commitments, чтобы каждый мог проверить, что dealer не жульничает. Если Alice отправила Bob'у неправильный share, Bob обнаружит несоответствие с published commitment'ом и подаст жалобу.

**Применение DKG в Ethereum:**

  • **Ethereum PoS validators** - DKG используется в DVT (Distributed Validator Technology): Obol Network, SSV Network. Один validator key распределяется между несколькими операторами - если 1 из 4 offline, validator продолжает работать
  • **Random Beacon** - DKG + threshold BLS подписи для генерации непредсказуемой случайности (drand, League of Entropy)
  • **Cross-chain bridges** - пороговые подписи для подтверждения транзакций между блокчейнами (Thorchain, Wormhole)

**Key Resharing (Proactive Security):** со временем атакующий может скомпрометировать участников одного за другим. Resharing позволяет **обновить share'ы без изменения общего ключа** - старые share'ы становятся бесполезными, даже если были украдены.

**Практическая сложность DKG:** протокол требует нескольких раундов коммуникации между всеми участниками и устойчивости к byzantine faults. Если более t-1 участников злонамеренны, протокол ломается. Поэтому выбор порога t - это баланс между безопасностью (t побольше) и доступностью (t поменьше).

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

MPC устраняет single point of failure при хранении ключа, но вводит новые attack surface: коммуникационный канал между участниками, реализация MPC-протокола, side-channel атаки на отдельные share'ы. Безопасность MPC-кошелька зависит от качества реализации протокола, безопасности каждого устройства с share'ом и безопасности коммуникации

Распределение ключа не делает систему автоматически безопасной - оно меняет модель угроз. Вместо одной точки атаки (seed phrase на бумажке) появляется несколько (устройства, сервера, протоколы). В 2023 году была обнаружена уязвимость в GG18/GG20 протоколах TSS, позволявшая одному злонамеренному подписанту извлечь полный ключ за 16 подписей. Безопасность - это не только криптография, но и реализация, аудит и операционная безопасность.

Ключевые идеи

  • **Shamir's Secret Sharing** - разделяет секрет на n share'ов, любые t из которых восстанавливают оригинал. Полином степени (t-1) + интерполяция Лагранжа. Безопасность information-theoretic, а не computational
  • **Threshold Signatures (TSS)** - t-of-n подпись без восстановления ключа. На блокчейне выглядит как обычная подпись, работает на любом блокчейне с ECDSA/EdDSA. Экономит gas и обеспечивает privacy по сравнению с multisig
  • **MPC** - обобщение: совместное вычисление любой функции без раскрытия входов. Garbled Circuits (2 стороны), Secret Sharing MPC (N сторон), Oblivious Transfer - базовые протоколы
  • **DKG** - генерация ключа без trusted dealer. Pedersen DKG + VSS. Key resharing для proactive security. Применяется в DVT (Ethereum validators), random beacons, cross-chain bridges
  • Помнишь взлом Ronin Bridge на 625M? С пороговой криптографией и DKG компрометация 5 серверов из 9 была бы бесполезной - атакующий получил бы share'ы, а не ключи, и не смог бы подписать ни одну транзакцию без порогового количества честных участников

Связанные темы

Пороговая криптография стоит на фундаменте эллиптических кривых и связана с более продвинутыми схемами подписей и консенсуса:

  • Эллиптические кривые (ECC) — TSS и DKG работают поверх ECC: точки кривой secp256k1/ed25519 используются для commitment'ов и верификации share'ов
  • BLS подписи — BLS нативно поддерживает threshold-подписи благодаря свойству линейности - агрегация проще, чем в ECDSA TSS
  • Proof of Stake — Ethereum PoS использует threshold BLS для attestation aggregation, а DVT (Obol/SSV) применяет DKG для распределения validator keys

Вопросы для размышления

  • Компания хранит казну в MPC-кошельке 3-of-5, и один из пяти членов совета увольняется. Почему недостаточно просто забрать его устройство с share'ом - и что нужно сделать вместо этого?
  • Почему threshold BLS подписи значительно проще в реализации, чем threshold ECDSA? Подумай о математических свойствах: что делает BLS "линейным", и почему ECDSA таким не является?
  • Представь random beacon на базе threshold BLS (как drand). Почему для честной случайности достаточно, чтобы хотя бы один участник из группы был честным, а не большинство?

Связанные уроки

  • bc-06-digital-signatures — Threshold signatures are the multi-party generalization of single-party signatures
  • bc-07-ecc — Threshold schemes like Shamir's secret sharing and DKG operate over elliptic curve groups
  • bc-10-bls — BLS signature aggregation is a threshold-like construction; threshold crypto is the prerequisite
  • bc-08-commitment — Pedersen commitments appear in Feldman's VSS (verifiable secret sharing); commitment knowledge helps
  • crypto-29-secret-sharing
  • crypto-36-mpc
Пороговая криптография и MPC

0

1

Войти

Какое главное преимущество DKG перед обычным Shamir's Secret Sharing с trusted dealer?