Das große Spiel – aber Bob und Alice vertrauen sich einfach nicht oder tatsächlich niemandem: Das mentale Pokerproblem

Wir haben einen großen Wettbewerb… es ist Bob, der Alice im größten Pokerspiel spielt, das jemals geschaffen wurde. Aber weder Bob noch Alice vertrauen sich gegenseitig, da sie glauben, dass der andere betrügen wird, und sie vertrauen keinem anderen, da jeder der ausgewählten Händler eine gewisse Vorliebe für Bob oder Alice hat.

Wie geben wir jedem von ihnen fünf Karten, damit sie keine Doppelkarten in der Hand haben und Bob und Alice nicht feststellen können, was sich in der Hand des anderen befindet?

Dazu benötigen wir den SRA-Algorithmus (Shamir, Rivest und Aldeman) für die kommutative Verschlüsselung , mit dem wir in beliebiger Reihenfolge verschlüsseln und in beliebiger Reihenfolge entschlüsseln können:

Enc (K2, Enc (K1, Nachricht) = Enc (K1, Enc (K2, Nachricht)

Also lasst uns handeln

Zuerst teilen Alice und Bob die 52 Karten (M1, M2,…, M52) und einen Modulwert von N = pq, p und q (wobei p und q die beiden ausgewählten Primzahlen sind). Alice verwendet ihr Schlüsselpaar [e1, d1] und Bob hat einen Schlüssel von [e2, d2].

Nun führen wir Folgendes aus:

Cj = Mj ^ {e1} (mod N) für 1 ≤ j ≤ 52.

Alice sendet dann die Chiffretexte zufällig an Bob zurück.

Nun, damit Bob seine Karten bekommt:

Cb = Cj ^ {e2} (mod N)

Also lass das Pokerspiel beginnen!

Aber wie bekommen wir e1, d1 und e2, d2?

In der Mathematik sind Operatoren wie die Multiplikation kommutativ , z. B.:

3 x 5 x 4 = 4 x 5 x 3

Bei der Verschlüsselung sind die meisten Operationen nicht kommutativ, daher müssen wir die Methoden ändern. Eine Möglichkeit besteht darin, RSA zu verwenden, aber zwei Schlüssel zu generieren, die gemeinsame p-, q- und N-Werte haben. Wir generieren also die Schlüssel von Bob und Alice mit denselben zwei Primzahlen (p und q), sodass sie denselben N-Wert (Modul) haben.

Beginnen wir also mit Bob:

Die Berechnung von n und PHI lautet:

Wir müssen sicherstellen, dass unser Verschlüsselungsschlüssel (e) keine Faktoren mit PHI teilt (gcd (PHI, e) = 1). Wir können e auswählen als:

Als nächstes können wir d berechnen aus:

Eine Antwort ist 29 [Lösen]

Nun zu Alice. Wir haben

Wir können e als auswählen (und sollten keine Faktoren mit PHI teilen):

Jetzt müssen wir lösen:

Dafür bekommen wir 31 [hier]

Alices Schlüssel sind dann:

Also beweise es?

Lassen Sie uns also beweisen, dass wir kommutative Verschlüsselung implementieren können. Der Code, den ich verwenden werde, lautet:

Wenn ich das ausführe, erhalten wir:

und es funktioniert!

Ein Taschenrechner, der dies beweist, ist hier.

Hier sind fünf Beispiele:

Schlussfolgerungen

Wir haben ein Internet erstellt, in dem Vertrauen erforderlich ist, das jedoch derzeit fehlschlägt, da im Internet niemandem wirklich vertraut werden kann. Mit PKI haben wir vertrauenswürdige Zertifizierungsstellen, aber können wir wirklich darauf vertrauen, dass Verisign jemals eine einzelne Entität beweist, für die es unterschrieben hat? Was wäre, wenn Verisign seinen privaten Schlüssel stehlen lassen würde? Wem vertrauen wir dann? Bei der von mir beschriebenen Methode wird davon ausgegangen, dass Sie niemandem vertrauen können.