Cum pot rezolva această problemă: am un grafic direcționat de noduri care pot fi rău intenționate și toate au o valoare privată.
- Luați în considerare un nod „B” cu valoare privată „BPrivateValue = b”
- Strămoșul lui B se numește „A”, iar valoarea privată a lui A este „APrivateValue = a”.
- Descendentul lui B se numește „C”, iar valoarea privată a lui C este „CPrivateValue = c”.
Vreau ca fiecare nod din acest grafic să poată face următoarele (aici luăm în considerare doar nodul B pentru simplitate):
- B interacționează cu A și află dacă APPrivateValue > BPrivateValue sau APPrivateValue < BPrivateValue. Dar nimic mai mult decât această comparație nu scurge către A și B despre valoarea privată a celeilalte părți.
- dacă APrivateValue < BPrivateValue B își schimbă valoarea privată în „a”, adică BPrivateValue = a (Rețineți că, de fapt, B nu cunoaște valoarea lui a, are un angajament sau criptarea lui „a”, dar știe că ar trebui să-și schimbe valoare privată)
- Acum C face același lucru cu B și acest protocol continuă până la ultimul nod din această cale din grafic. La sfârșit, un angajament sau o criptare a valorii private minime în această cale este rezultatul.
Acum, ce schemă sau instrument credeți că mă poate ajuta să implementez această funcționalitate. În primul rând, m-am gândit la criptarea asimetrică care păstrează confidențialitatea. Toate nodurile își criptează valoarea privată și trimit criptarea următorului nod. Următorul nod face comparația și trimite valoarea criptată a valorii private minime către următorul nod. Dar apoi mi-am dat seama că criptarea asimetrică care păstrează confidențialitatea nu este deloc sigură și oricine poate calcula textul simplu corespunzător unui text cifrat cu o simplă căutare binară. Deci ce sugerezi?