Ci sono tre parti coinvolte in un processo di trasferimento dati ripetuto: Client C, Broker B e Provider P. Potrebbero esserci più client C.
Il broker B gestisce il database dei clienti di P. Ogni cliente ha un numero ID univoco.
Il cliente C può inviare richieste per recuperare le informazioni di un ID cliente dal database clienti di P (che B gestisce).
Il requisito è: B non deve conoscere gli ID cliente, anche se le richieste di informazioni e del database P di B gestiscono da C.
In altre parole:
-
P può condividere i dati con il broker B senza rivelare gli ID cliente (ad es., codificare l'ID cliente con una chiave pubblica).
-
C può interrogare i dati di P che B gestisce, inviando l'ID cliente crittografato a B.
-
B può abbinare l'ID criptato di C alla chiave crittografata di P per individuare un record di consumatore.
-
B non può eseguire brute-force attaccare la crittografia per conoscere i veri ID cliente.
Abbiamo in programma di assegnare a P una chiave pubblica. P utilizza questa chiave per crittografare gli ID cliente dei dati che B gestisce. C utilizza questa chiave per crittografare gli ID cliente che devono essere richiesti.
Il numero di ID cliente univoci è di circa 10 miliardi di numeri. Pertanto, è abbastanza veloce per attacco a forza bruta questo elenco di 10 miliardi di numeri.
La mia domanda è: esiste una soluzione deterministica a chiave pubblica che soddisfi (1), (2), (3) e (4).