Ich habe etwas Zeit damit verbracht, Babylons Abwehr gegen selektives Abschlachten zu betrachten, und es ist nicht das, was ich von einem „Straf“-Mechanismus erwartet hätte.
Selektives Abschlachten ist der Albtraumfall — ein Finality-Provider bestraft heimlich den Anteil eines ganz bestimmten Opfers, statt einen ehrlichen Fehler zu verarbeiten. Die meisten Systeme bräuchten ein Komitee, um das im Nachhinein zu erkennen. Babylon wartet nicht darauf, dass das jemand bemerkt.
Der Angriff erfordert, dass der Provider Covenant-Adaptor-Signaturen mit seinem eigenen Geheimschlüssel in Schnorr-Signaturen entschlüsselt und anschließend diese Slashing-Transaktion an Bitcoin übermittelt. Adaptor-Signaturen haben eine Eigenschaft, die diese Entschlüsselung nachvollziehbar macht: Sobald jemand das Paar beobachtet — die Adaptor-Signatur und die daraus resultierende Schnorr-Signatur — kann er den Geheimschlüssel extrahieren, der sie erzeugt hat. Jeder. Kein Komitee, keine Validator-Abstimmung. Jeder, der die Kette beobachtet.
Also sind der Angriff und das Geständnis dieselbe Handlung.
Dafür ist sogar eine Nachricht speziell gebaut: MsgSelectiveSlashingEvidence, mit genau zwei Feldern — staking_tx_hash und recovered_fp_btc_sk, dem extrahierten Geheimschlüssel des Providers, der den Angriff gestartet hat. Der Beweis ist nicht nur indirekt. Es ist der eigene Schlüssel des Angreifers, zurückgewonnen aus der Mathematik, die er erst durchführen musste, um den Angriff überhaupt auszuführen.
Das ist eine seltsame Art von Sicherheit, mit der man leben muss. Die meisten kryptografischen Schutzmechanismen verhindern, dass ein Angriff überhaupt funktioniert. Dieser hier lässt den Angriff genau einmal funktionieren und sorgt dann dafür, dass diese eine Ausführung die eigenen Zugangsdaten des Angreifers dabei selbst zerstört.
Wenn man die Bestrafung in dasselbe Signatur-Schema einbaut, das den Angriff ermöglicht, macht das selektives Abschlachten für jeden vernünftigen Akteur effektiv unmöglich — oder bedeutet es nur, dass die erste Person, die bereit ist, ihren eigenen Schlüssel zu opfern, es noch genau einmal ausführen kann, bevor das System reagiert?
@BabylonLabs_io #baby $BABY
Selektives Abschlachten ist der Albtraumfall — ein Finality-Provider bestraft heimlich den Anteil eines ganz bestimmten Opfers, statt einen ehrlichen Fehler zu verarbeiten. Die meisten Systeme bräuchten ein Komitee, um das im Nachhinein zu erkennen. Babylon wartet nicht darauf, dass das jemand bemerkt.
Der Angriff erfordert, dass der Provider Covenant-Adaptor-Signaturen mit seinem eigenen Geheimschlüssel in Schnorr-Signaturen entschlüsselt und anschließend diese Slashing-Transaktion an Bitcoin übermittelt. Adaptor-Signaturen haben eine Eigenschaft, die diese Entschlüsselung nachvollziehbar macht: Sobald jemand das Paar beobachtet — die Adaptor-Signatur und die daraus resultierende Schnorr-Signatur — kann er den Geheimschlüssel extrahieren, der sie erzeugt hat. Jeder. Kein Komitee, keine Validator-Abstimmung. Jeder, der die Kette beobachtet.
Also sind der Angriff und das Geständnis dieselbe Handlung.
Dafür ist sogar eine Nachricht speziell gebaut: MsgSelectiveSlashingEvidence, mit genau zwei Feldern — staking_tx_hash und recovered_fp_btc_sk, dem extrahierten Geheimschlüssel des Providers, der den Angriff gestartet hat. Der Beweis ist nicht nur indirekt. Es ist der eigene Schlüssel des Angreifers, zurückgewonnen aus der Mathematik, die er erst durchführen musste, um den Angriff überhaupt auszuführen.
Das ist eine seltsame Art von Sicherheit, mit der man leben muss. Die meisten kryptografischen Schutzmechanismen verhindern, dass ein Angriff überhaupt funktioniert. Dieser hier lässt den Angriff genau einmal funktionieren und sorgt dann dafür, dass diese eine Ausführung die eigenen Zugangsdaten des Angreifers dabei selbst zerstört.
Wenn man die Bestrafung in dasselbe Signatur-Schema einbaut, das den Angriff ermöglicht, macht das selektives Abschlachten für jeden vernünftigen Akteur effektiv unmöglich — oder bedeutet es nur, dass die erste Person, die bereit ist, ihren eigenen Schlüssel zu opfern, es noch genau einmal ausführen kann, bevor das System reagiert?
@BabylonLabs_io #baby $BABY
