Technik › Schlüssel & Adressen

Private Schlüssel

Der Spend Key b, der View Key a und ihre öffentlichen Hälften B und A

Kurz gesagt

Eine Monero-Wallet ist ein Paar von Skalaren: b (privater Spend Key) und a = Hs(b) (privater View Key). Ihre öffentlichen Versionen: B = b·G und A = a·G. Eine Adresse ist einfach B und A zusammen aufgeschrieben.

Der Spend Key

Der private Spend Key (Ausgabeschlüssel) b ist ein zufälliger Skalar modulo l. Im klassischen Format ist der 25-Wörter-Seed b, nur in Wörtern geschrieben. Erzeugung:

  1. nimm 32 zufällige Bytes (oder mehr, für Gleichverteilung);
  2. lies sie als Little-Endian-Zahl;
  3. reduziere modulo l (sc_reduce32).

Der Spend Key wird für zwei Dinge gebraucht: um den privaten Schlüssel eines Einmal-Outputs zu berechnen (zum Signieren einer Ausgabe) und um das Key Image zu berechnen.

Der View Key

Der private View Key (Ansichtsschlüssel) könnte eine unabhängige Zufallszahl sein, aber Standard-Wallets leiten ihn aus dem Spend Key ab:

a = Hs(b) = Keccak256(b) mod l

Deshalb reicht ein einziger Seed, um beide Schlüssel wiederherzustellen. Der View Key wird beim Durchsuchen der Blockchain verwendet: Für jede Transaktion berechnet die Wallet das gemeinsame Geheimnis 8·a·R und prüft, ob ein Output an sie adressiert ist (Details unter Einmal-Adressen).

Öffentliche Schlüssel

B = b·G      A = a·G

Zwei Kurvenpunkte, je 32 Bytes. Sie sind nicht geheim: Deine Adresse besteht aus ihnen.

bprivat, Spend aprivat, View Böffentlich, Spend Aöffentlich, View Hs ·G ·G

Wer was kann

Du hastDu kannstDu kannst nicht
A, B (Adresse)Geld an diese Wallet sendenirgendetwas sehen
a, B (View-only)eingehende Outputs und ihre Beträge findenausgeben; Ausgaben zuverlässig sehen
a, balles—
Was sich mit Carrot ändert

Mit Carrot wird die Schlüsselhierarchie tiefer: eigene Schlüssel für „Eingänge sehen“, „alles sehen“, „Key Images erzeugen“. Bei bestehenden Wallets funktionieren a und b weiter.