ANDOS ( All or Nothing Disclosure Of Secrets ) este un protocol criptografic pentru „vânzarea secretă a secretelor” . Lăsați vânzătorul de secrete S să aibă o listă de întrebări și să pună la vânzare răspunsurile la oricare dintre ele. Să presupunem că cumpărătorul B dorește să cumpere un secret, dar nu dorește să dezvăluie care dintre ele. Protocolul garantează că B va obține secretul de care are nevoie și nimic altceva, în timp ce S nu va ști exact ce secret a primit B.
Lasă secretele deținute de S , fiecare dintre ele conține câte un pic. Pentru fiecare S publică o descriere a secretului. Să presupunem că cumpărătorii B și C doresc să cumpere secrete și , respectiv. Ideea este că cumpărătorii au funcții individuale unidirecționale și fiecare dintre aceștia operează pe numerele primite de celălalt.
Pasul 1. S oferă B și C funcții unidirecționale individuale f și g , dar păstrează inversele lor pentru sine. Pasul 2. B îi spune lui C (respectiv C - B ) numere aleatorii de biți (respectiv ).Pentru , care mapează numerele -biți la numerele -biților și numărul -biților , spunem că indexul este Fixed Bit Index (FBI) corespunzător perechii dacă -al-lea bit în este egal cu --lea bit în . Este clar că există un IFB corespunzător perechii dacă este un IFB corespunzător perechii . Dacă se comportă destul de aleatoriu la schimbarea biților (cum ar fi funcțiile criptografice bune), atunci, pentru random , se poate estima aproximativ că aproximativ indicii sunt IFB-uri corespunzători lui
Pasul 3. B îi spune lui C (respectiv C - B ) setul de indici IFB corespunzători respectiv setului de indici IFB corespunzători lui Pasul 4. B (respectiv C ) spune S numere (respectiv , unde este rezultatul obținut prin înlocuirea fiecărui bit în , al cărui indice nu este IFB , cu opusul său (respectiv obținut dintr- un mod similar). Pasul 5. S spune numerelor B (respectiv C ). respectiv , . Pasul 6. B (respectiv C ) poate calcula (respectiv ) deoarece sunt cunoscute respectivB și C au învățat secretele de care aveau nevoie. S nu a aflat nimic despre alegerea lor. De asemenea, nici B , nici C nu au aflat mai mult de unul dintre secretele sau alegerile celuilalt. O coluziune între B și C îi face ca aceștia să poată învăța toate secretele. Coluziunea dintre S și unul dintre cumpărători poate dezvălui ce secret dorește celălalt cumpărător.
Deci principala problemă este coluziunea. Cu toate acestea, dacă există cel puțin trei cumpărători, atunci un cumpărător onest este suficient pentru a face imposibilă înșelarea pe restul, datorită utilizării funcțiilor criptografice, deoarece fiecare bit din secvența trimis cumpărătorilor de la S este foarte dependent de biți. furnizate de cumpărătorul cinstit.
În cazul în care există un număr de cumpărători , protocolul funcționează exact în același mod, dar fiecare cumpărător primește o funcție de la vânzător împreună cu seturi de numere de la alți cumpărători.
.
Dacă C dorește să cumpere secretul , atunci calculează adăugarea pe biți a celui de-al 2-lea număr primit de la S , și anume:.