Jede API, die Geld bewegt, muss zu jeder Anfrage zwei Dinge beweisen: sie kam von dir, und sie wurde nicht verändert oder wiederholt. HMAC-Signierung leistet beides. So funktioniert es und so nutzt 0trace es.
Was HMAC-Signierung ist
HMAC (hash-basierter Nachrichtenauthentifizierungscode) verbindet deinen geheimen Schlüssel mit der Nachricht zu einer Signatur. Der Server, der dasselbe Secret kennt, berechnet die Signatur neu und vergleicht. Stimmen sie überein, ist die Anfrage echt und unverändert. 0trace nutzt HMAC-SHA256.
Signiere die exakten Bytes
Signiere den Request-Body genau so, wie er gesendet wird, Byte für Byte. Serialisierst du das JSON anders als das, was du signierst (umsortierte Schlüssel, zusätzliche Leerzeichen), passen die Signaturen nicht. Baue den Body einmal, signiere diesen String und sende exakt diesen String.
Ergänze eine Nonce
Eine Signatur allein verhindert keine Replays: wer eine gültige Anfrage abfängt, könnte sie erneut senden. Eine Nonce (ein eindeutiger Wert pro Anfrage) plus ein begrenztes Zeitfenster heißt, jede Anfrage wird genau einmal akzeptiert. 0trace erzwingt ein Nonce-basiertes Replay-Fenster.
Halte das Secret auf dem Server
Das Secret ist es, was die Signatur vertrauenswürdig macht, es darf also nie in den Browser oder einen mobilen Client gelangen. Signiere auf deinem Server. Wird ein Secret geleakt, rotiere es.
Der Vertrag von 0trace
- X-API-KEY: dein Key.
- X-API-SIGN: HMAC-SHA256 des exakten Request-Bodys, hex.
- X-API-NONCE: ein eindeutiger Wert pro Anfrage, innerhalb des Replay-Fensters.
- Preise und Auszahlungen werden serverseitig berechnet, ein gefälschter Betrag kann also nicht ändern, was wirklich abgewickelt wird.