Das Bit-Commitment nach Blum

Man nehme den Münzwurf als Beispiel.

Alice möchte gegenüber Bob ein Commitment abgeben. Die möglichen Nachrichten Kopf oder Zahl, also oder [2] [3]:

Bob: Alice:
Setup:
Alice wählt zwei Primzahlen und
via Multiplikation beider erhält sie
sie wählt ein
Commiten:
Alice wählt ihr Nachrichtenbit
wählt eine Zufallszahl
erstellt das Commitment
sendet , und an Bob
empfängt , und
Aufdecken:
Alice sendet , , und an Bob
Bob empfängt , , und
Bob testet ob und Primzahlen sind
und ob gilt:
, und

Erklärung:

  • sind positive Ganzzahlen kleiner als und Modulo
  • aus nehme man alle Quadrate und definiere sie als Gruppe
  • Man bilde das Jakobi-Symbol:
    • durch erhält man alle Nichtquadrate aus

darf kein Quadrat sein,denn die Auflösung ist wie folgt:

: , also ein Quadrat
: , also kein Quadrat
wenn ein Quadrat wäre,könnte über keine Aussage getroffen werden

Um festzustellen, ob v tatsächlich ein Quadrat ist, benötigt Bob und . Diese können nicht aus gewonnen werden.

Da gilt:
: , also ein Quadrat
: , also kein Quadrat

ist Alice an ihr Commitment unconditional gebunden.

Bob könnte das Jacobi-Symbol nur berechnen, wenn er und kennen würde. Wenn er allerdings herausfinden könnte ob zufälliges Element in ein Quadrat ist, könnte er auf schließen. Das würde aber enorme Rechenleistung fordern, weswegen das Verfahren computational hiding ist.