Vor ein paar Tagen kursierte in unserer Community ein Fall, der einem eiskalt den Rücken runterläuft. Ein Nutzer hatte angeblich nur eine einzelne Überweisung über 500U signiert, aber das, was am Ende On-Chain lief, waren 50.000U. Erst ganz am Schluss konnte man die Kette vollständig zusammensetzen: Das Frontend, mit dem er interagiert hatte, wurde manipuliert. Auf dem Bildschirm stand 500U, doch die unterschriebenen Daten entsprachen 50.000U. Den privaten Schlüssel verwaltete er selbst; die Signatur bestätigte er selbst. Aber er hatte überhaupt keine Ahnung, was genau er da unterschrieb.
Mich hat das zurück in das @NewtonProtocol Whitepaper gezogen, in dem es einen Begriff gibt, der immer wieder auftaucht, den aber kaum jemand wirklich hinterfragt: die „Transaktionsintention“. Das Diagramm zum Authorisierungsprozess in Abschnitt 5.3 erklärt es sehr klar: Der Nutzer übermittelt nicht „eine nackte Transaktionssignatur“, sondern „eine Transaktionsintention“. Die Policy Engine prüft zuerst, ob diese Intention regelkonform ist; erst danach wird sie mit einer Aggregationssignatur versehen und zur Ausführung geschickt. Auf den ersten Blick ist das doch nur, wenn man die Signatur in zwei Schritte aufteilt? Aber je länger ich darüber nachdenke, desto mehr glaube ich, dass darunter eine tiefere Änderung steckt: Es zwingt „woran du gedacht hast, als du signiert hast“ und „was du eigentlich signieren wolltest“ gewaltsam zur Deckung zu bringen.
Traditionelle Wallets haben eine blinde Stelle, an der man kaum vorbeikommt. Das Signieren mit dem privaten Schlüssel ist ein mathematisches Problem; die Transaktionsintention ist eine semantische Frage. Mathematik kann garantieren, dass die Signatur echt ist – aber sie kann nicht garantieren, ob das, was du im Kopf hattest, und das, was am Ende On-Chain tatsächlich ausgeführt wurde, dieselbe Sache sind. Newtons Ansatz besteht darin, die Intention in strukturierte Daten zu überführen, damit die Policy Engine sie unabhängig erneut prüfen kann. Die Betreiber erhalten nicht eine kryptische Abfolge hexadezimaler Zeichen, sondern etwas, das man auf einen Blick versteht: „Wer soll wie viel an wen überweisen“. Zuerst müssen sie beurteilen, ob diese Klartextbeschreibung regelkonform ist, und erst dann bekräftigen sie sie mit ihren eigenen BLS-Signaturen. #Newt
Doch damit taucht ein neues Paradoxon auf. Wenn die Intention selbst auf einem Frontend generiert wird, das bereits abgegriffen oder kompromittiert wurde – der Nutzer glaubt, er tippt 500U ein, das Frontend ändert es heimlich in 50.000U und wirft dann die Intention raus – dann bekommen die Betreiber genau eine „scheinbar“ regelkonforme Intention für 50.000U. Sie prüfen es, es ist regelkonform; sie signieren es; es wird ausgeführt. $NEWT Token-Staking kann zwar dafür sorgen, dass die Strategie nicht unbemerkt manipuliert wird, und es kann auch verhindern, dass Betreiber aus Bequemlichkeit schlampig handeln – aber es schützt nicht vor der Lücke zwischen „dem, was du im Kopf hattest“ und „dem, was auf dem Bildschirm passiert ist“.
Vielleicht ist das die tiefste blinde Stelle der gesamten Authorisierungsebene. DYOR.
Mich hat das zurück in das @NewtonProtocol Whitepaper gezogen, in dem es einen Begriff gibt, der immer wieder auftaucht, den aber kaum jemand wirklich hinterfragt: die „Transaktionsintention“. Das Diagramm zum Authorisierungsprozess in Abschnitt 5.3 erklärt es sehr klar: Der Nutzer übermittelt nicht „eine nackte Transaktionssignatur“, sondern „eine Transaktionsintention“. Die Policy Engine prüft zuerst, ob diese Intention regelkonform ist; erst danach wird sie mit einer Aggregationssignatur versehen und zur Ausführung geschickt. Auf den ersten Blick ist das doch nur, wenn man die Signatur in zwei Schritte aufteilt? Aber je länger ich darüber nachdenke, desto mehr glaube ich, dass darunter eine tiefere Änderung steckt: Es zwingt „woran du gedacht hast, als du signiert hast“ und „was du eigentlich signieren wolltest“ gewaltsam zur Deckung zu bringen.
Traditionelle Wallets haben eine blinde Stelle, an der man kaum vorbeikommt. Das Signieren mit dem privaten Schlüssel ist ein mathematisches Problem; die Transaktionsintention ist eine semantische Frage. Mathematik kann garantieren, dass die Signatur echt ist – aber sie kann nicht garantieren, ob das, was du im Kopf hattest, und das, was am Ende On-Chain tatsächlich ausgeführt wurde, dieselbe Sache sind. Newtons Ansatz besteht darin, die Intention in strukturierte Daten zu überführen, damit die Policy Engine sie unabhängig erneut prüfen kann. Die Betreiber erhalten nicht eine kryptische Abfolge hexadezimaler Zeichen, sondern etwas, das man auf einen Blick versteht: „Wer soll wie viel an wen überweisen“. Zuerst müssen sie beurteilen, ob diese Klartextbeschreibung regelkonform ist, und erst dann bekräftigen sie sie mit ihren eigenen BLS-Signaturen. #Newt
Doch damit taucht ein neues Paradoxon auf. Wenn die Intention selbst auf einem Frontend generiert wird, das bereits abgegriffen oder kompromittiert wurde – der Nutzer glaubt, er tippt 500U ein, das Frontend ändert es heimlich in 50.000U und wirft dann die Intention raus – dann bekommen die Betreiber genau eine „scheinbar“ regelkonforme Intention für 50.000U. Sie prüfen es, es ist regelkonform; sie signieren es; es wird ausgeführt. $NEWT Token-Staking kann zwar dafür sorgen, dass die Strategie nicht unbemerkt manipuliert wird, und es kann auch verhindern, dass Betreiber aus Bequemlichkeit schlampig handeln – aber es schützt nicht vor der Lücke zwischen „dem, was du im Kopf hattest“ und „dem, was auf dem Bildschirm passiert ist“.
Vielleicht ist das die tiefste blinde Stelle der gesamten Authorisierungsebene. DYOR.