28. MĂ€rz 2026

SplitSig: Non-Custodial SchlĂŒsselableitung aus Lightning Wallets

Jede Web-Anwendung, die mit Bitcoin arbeitet, steht vor demselben Dilemma: Der Nutzer braucht einen SignaturschlĂŒssel — aber wo liegt dieser? Generiert der Server ihn, ist der Dienst custodial. Generiert der Browser ihn, verliert der Nutzer ihn beim Löschen des Caches. Leitet man ihn aus der Wallet ab, sieht der Server das Ableitungsmaterial.

Wir haben ein Verfahren entwickelt, das dieses Problem löst. Ich nenne es SplitSig.

Die Formel

privkey = SHA256( ecdsa_signatur + nonce )
                 ────────────────   ─────
                 Server sieht das   nur im Browser

Zwei Teile. Der Server hat eines. Der Browser hat das andere. Keines allein ergibt den privaten SchlĂŒssel.

So funktioniert es

Wenn sich ein Nutzer mit seiner Lightning Wallet ĂŒber LNURL-auth authentifiziert, signiert die Wallet eine Challenge mit ECDSA. Diese Signatur geht an den Server — so funktioniert LNURL-auth, das ist dem Protokoll inhĂ€rent.

Die meisten signaturbasierten SchlĂŒsselsysteme (zkSync, Umbra, StarkWare) wĂŒrden diese Signatur einfach hashen und als privaten SchlĂŒssel verwenden. Aber der Server hat die Signatur gesehen — er könnte denselben Hash berechnen und hĂ€tte den SchlĂŒssel. Das ist custodial.

SplitSig fĂŒgt eine zweite Zutat hinzu: einen zufĂ€lligen 256-Bit-Nonce, der im Browser ĂŒber crypto.getRandomValues() erzeugt wird. Der Nonce verlĂ€sst den Browser nie. Der Server sieht ihn nie.

Die Aufteilung:

Server hat: Signatur (aus dem LNURL-auth Callback)

Browser hat: Signatur + Nonce

Nur der Browser kann SHA256(Signatur + Nonce) = privater SchlĂŒssel berechnen

Wiederherstellung

Der Nonce wird in einem Recovery Kit gespeichert, das der Nutzer herunterlĂ€dt. Um den SchlĂŒssel auf einem neuen GerĂ€t abzuleiten:

Der LNURL-auth Linking Key wird aus dem BIP-32-Seed der Wallet am Pfad m/138'/... abgeleitet (LUD-04). Er ist stabil ĂŒber App-Updates, Betriebssystem-Upgrades und GerĂ€tewechsel hinweg. Solange der Wallet-Seed derselbe ist, kann der SchlĂŒssel reproduziert werden.

Was ist neu

SchlĂŒssel aus Signaturen abzuleiten ist nicht neu. Diese Systeme tun es bereits produktiv:

SystemSchlĂŒssel aus Signatur?Geteiltes Wissen?
zkSyncjanein
Umbra Protocoljanein
EIP-2645 / StarkWarejanein
Web3Auth / tKeynein (Shamir)ja
SplitSigjaja

Nach unserem Kenntnisstand ist SplitSig das erste Verfahren, das signaturbasierte SchlĂŒssel mit einem clientseitigen Nonce-Split kombiniert. Der Grund, warum es bisher nicht aufgetaucht ist, liegt vermutlich darin, dass LNURL-auth eine Bitcoin/Lightning-Nische ist, wĂ€hrend die meiste Arbeit an signaturbasierten SchlĂŒsseln im Ethereum-Ökosystem stattfand — wo die Wallet lokal signiert und der Server die Signatur nie sieht.

Bedrohungsmodell

Kompromittierter Server: Hat die Signatur, aber nicht den Nonce. Kann den SchlĂŒssel nicht ableiten. Selbst wenn alle Signaturen dauerhaft gespeichert werden, ist das Brute-Forcen eines 256-Bit-Nonce nicht durchfĂŒhrbar.

Kompromittierter Browser: Hat beide Teile. Kann den SchlĂŒssel ableiten. Das ist das „Trusted Code Delivery Problem" — eine inhĂ€rente EinschrĂ€nkung aller Web-Anwendungen. Blockstream hat festgestellt: „Ein Browser muss immer als kompromittiert betrachtet werden." Native Apps mit reproduzierbaren Builds sind die einzige vollstĂ€ndige Absicherung.

Gestohlenes Recovery Kit: Hat den Nonce, aber nicht die Signatur. Kann den SchlĂŒssel nicht ableiten, ohne den BIP-32-Seed der Wallet zu besitzen.

Verlorener Wallet-Seed: Anderer Seed = andere Signatur = anderer SchlĂŒssel. Dasselbe Risiko wie bei jedem Seed-basierten System.

Anwendungen

SplitSig funktioniert fĂŒr jede Web-Anwendung, die LNURL-auth nutzt und non-custodial SignaturschlĂŒssel benötigt:

Ausprobieren

Die interaktive Demo zeigt jeden Schritt des Protokolls und macht sichtbar, was der Server sieht und was im Browser bleibt.

github.com/Antisys/splitsig

Protokoll-Spezifikation · Test-Vektoren · Demo-Video · GPL-3.0