Scopul este ca Alice să-i trimită un mesaj criptat lui Bob. Nici Bob, nici nimeni altcineva nu ar trebui să poată decoda mesajul. Alice ar trebui să poată să-l decodeze, atunci când i se arată toate datele. Cu toate acestea, Alice nu poate stoca nimic legat de mesaj.
Chei private:
- X1 - biți aleatori
- X2 - biți aleatori
- M - număr prim mare
Cheie transmisă:
- A - număr prim mare aleatoriu
Pentru a trimite un mesaj:
- Generați prim aleatoriu A
- msg = msg XOR X1
- msg = msg * A (mod M)
- msg = msg XOR X2
- trimite (mesaj, A)
Pentru a decoda:
- B = inversul multiplicativ al lui A (mod M)
- msg = msg XOR x2
- msg = msg * B (mod M)
- msg = msg XOR x1
Ideea este că înmulțirea este intercalată între două XOR-uri care elimină orice tip de model identificabil.
Este acesta un algoritm rezonabil sau am greșit undeva?
(Notă: înțeleg că cifrurile precum RSA sunt standardul industriei pentru acest tip de problemă. Cu toate acestea, mă întreb dacă o soluție mai simplă este fezabilă atunci când mizele sunt mai mici. Cazul de utilizare aici nu este incredibil de sigur, ci este pentru ceva de genul unui serviciu CAPTCHA, putem lăsa serverul să emită o întrebare CAPTCHA și să trimită răspunsul clientului, cerându-i să-și returneze răspunsul alături de răspunsul criptat, eliminând astfel necesitatea unui depozit de date pe server.)