133 / 736MuSig2

MuSig2

Společné schválení platby bez sdílení soukromých klíčů

Dva lidé mohou společně schválit bitcoinovou platbu, aniž by jeden druhému předali soukromý klíč. MuSig2 jejich spolupráci převede do jediného podpisu. Na blockchainu tak může vypadat stejně jako běžná platba z Taprootu, i když rozhodnutí udělalo více účastníků.

MuSig2 umožňuje více lidem společně vytvořit jediný Schnorrův podpis, který dokládá souhlas s konkrétní zprávou, aniž by odhalil jejich soukromé klíče. Postup popsaný v BIP327 má dvě kola komunikace. Veřejné klíče spojí do společného klíče a podpisové příspěvky do podpisu kompatibilního s BIP340. Základní model je n-of-n: přispět musí všichni zapojení podepisující.

Představte si společnou pokladnu, ze které mají platbu schválit Alice i Bob. Digitální podpis dokládá oprávnění k platbě pomocí soukromého klíče, tajného číselného údaje, aniž by jej odhalil. U běžného skriptového Multisigu může transakce zveřejnit více klíčů a podpisů. S MuSig2 si každý ponechá svůj soukromý klíč a přispěje ke společnému podpisu. Síť pak ověří jediný výsledek. Úspora vzniká při zápisu a ověřování na blockchainu; domluva mezi účastníky tím nezmizí. Protokol představili Jonas Nick, Tim Ruffing a Yannick Seurin v práci zveřejněné v říjnu 2020. [3] [2] [10]

MuSig2 samo o sobě není nastavení 2-of-3, v němž může libovolná dvojice nahradit chybějícího třetího. U jeho n-of-n podpisu musí přispět každý člen dané skupiny. Nedostupný nebo odmítající účastník může spolupráci zastavit. Peněženka je aplikace nebo zařízení pro přijímání a odesílání bitcoinů. Pokud má peněženka fungovat i tehdy, musí mít předem navrženou jinou cestu utracení nebo jiný podpisový mechanismus; název MuSig2 ji automaticky nezajišťuje. [1] [8]

Před podepisováním účastníci sestaví společný veřejný klíč. Veřejný klíč slouží k ověřování podpisů a nemusí se držet v tajnosti. V prvním kole si vymění veřejné nonce, tedy jednorázové příspěvky pro přípravu podpisu. Ve druhém vytvoří a předají částečné podpisy nad stejnou zprávou a stejným kontextem. Ty se složí do výsledného podpisu. První kolo lze za podmínek protokolu připravit předem, ještě než je platba známá. Než ale účastník vytvoří svůj částečný podpis, musí zkontrolovat konkrétní transakci, zejména příjemce, částku a poplatek. Příprava není souhlas s neznámou platbou a kontrola až po podpisu nestačí. [1] [3]

Při naivním součtu by útočník mohl zvolit vlastní veřejný klíč tak, aby zneužil klíče ostatních. MuSig2 proto používá číselné váhy, nazývané koeficienty, odvozené ze seznamu klíčů. Algoritmus KeyAgg zohledňuje i jejich pořadí; pokud aplikace chce pořadí sjednotit, může použít KeySort. Všichni musí vycházet ze stejného seznamu a stejných pravidel, jinak nepočítají stejný společný klíč. [1] [5]

Nonce zde není těžební počítadlo. Je to jednorázový podpisový materiál: veřejná část pubnonce se předává ostatním, tajná část secnonce zůstává u podepisujícího. Tajná nonce se nesmí nikdy znovu použít pro další volání Sign. Dva částečné podpisy vytvořené opakovaným použitím mohou prozradit soukromý klíč. Změna zprávy ani opakování zdánlivě stejné platby není bezpečná výjimka. [1] [7]

Kryptograficky správný výpočet nestačí, pokud aplikace po restartu načte ze zálohy už použitou secnonce nebo ji pošle dvěma souběžným úlohám. Knihovna libsecp256k1 při podpisu tajnou nonce zneplatňuje přepsáním; kopie mimo její kontrolu však takovou ochranu obejde. Správa stavu musí zabránit opakovanému použití i při chybě, obnově a souběhu. Soukromý podpisový klíč lze používat opakovaně; jednorázovost se týká nonce. [7]

Výměnu může zprostředkovat koordinátor, který sbírá veřejné nonce a částečné podpisy. Při správném použití protokolu mu to samo nedává schopnost podepsat místo poctivého účastníka, může ale proces zmařit. Každý podepisující musí ověřit, co podepisuje. Kontrola částečných podpisů může pomoci odhalit problém, potřebuje však původní veřejné příspěvky a správný kontext; z agregované nonce samotné viníka určit nelze. [1] [7]

Výsledkem je 64bajtový podpis BIP340. Taproot key path je způsob utracení, při kterém síť ověří podpis pro klíč zapsaný ve výstupu, aniž se odhalí záložní skript. Pokud se nepoužije výchozí režim, následuje za podpisem ještě bajt typu sighash. Ten určuje, které části transakce podpis zavazuje, tedy chrání před změnou bez zneplatnění podpisu. Z podpisu samotného pozorovatel nepozná počet účastníků ani jejich jednotlivé klíče. MuSig2 ale neskrývá částky, všechny souvislosti platby ani komunikaci mezi stranami. Neslučuje automaticky ani podpisy různých vstupů, které odkazují na dříve přijaté výstupy utrácené touto transakcí. [5] [6]

Taproot může vedle společné key-path cesty obsahovat skriptové podmínky, například jinou kombinaci klíčů nebo časový zámek. Časový zámek znamená, že určitá cesta je dostupná až po stanovené době či výšce bloku; podpisy tím nejsou nahrazeny. Blok sdružuje transakce do dávky, která se připojuje ke společné historii. Výška bloku je jeho pořadové číslo v řetězci. Podmínky se musí kryptograficky zakotvit už při vytvoření výstupu, konkrétní částky s pravidly utracení. Když se některý podepisující stane nedostupným, nelze už chybějící záložní podmínky dodatečně přidat. Script path je právě utracení přes takový skript: zveřejní příslušné podmínky a může být nákladnější. Obnova peněženky proto potřebuje i údaje o zvoleném uspořádání, nejen jednotlivé tajné klíče. [6] [1] [9]

BIP327 popisuje protokol, zatímco použitá knihovna a peněženka určují skutečné rozhraní, zálohy a podporované postupy. Kontrolujte verzi, testovací vektory, práci s nonce a kontrolu podepisované transakce. Podpora Schnorrových podpisů sama neznamená hotovou podporu MuSig2 v každé peněžence. Kooperativní podpis využívá existující pravidla BIP340 a Taprootu; k samotnému použití MuSig2 není potřeba nový konsenzuální opcode. [4] [7] [2]

Pro nejúplnější obraz čtěte toto heslo společně s Schnorr Signature, Taproot, Multisig, PSBT. Opačným směrem na něj odkazují také Schnorr Signature, Submarine Swap, FROST, PTLC.

DOC · 001BIP 327 — MuSig2 for BIP340-compatible Multi-SignaturesSpecifikace DOC · 002Bitcoin Optech — MuSigDokumentace DOC · 003MuSig2 paperPrimární zdroj DOC · 004Bitcoin Core — secp256k1 libraryDokumentace DOC · 005BIP 340 — Schnorr SignaturesSpecifikace DOC · 006BIP 341 — TaprootSpecifikace DOC · 007libsecp256k1 — MuSig2 API and nonce safetyDokumentace DOC · 008Bitcoin Developer Guide — WalletsDokumentace DOC · 009Bitcoin Developer Guide — Block ChainDokumentace DOC · 010Bitcoin Developer Reference — TransactionsDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení