La intersección de conjuntos privados es una técnica criptográfica de computación multipartita segura [1] que permite que dos partes que poseen conjuntos comparen versiones cifradas de estos conjuntos para calcular la intersección. En este escenario, ninguna de las partes revela nada a la otra parte excepto los elementos en la intersección.
Existen otras variantes de esto, como el escenario servidor-cliente, en el que sólo el cliente aprende la intersección de su conjunto con el conjunto del servidor, sin que el servidor aprenda la intersección de su conjunto con el del cliente. [2]
Para la comparación de conjuntos de datos mediante hashes criptográficos en un dominio pequeño o predecible, se deben tomar precauciones para evitar ataques de diccionario. [3]
Apple utiliza esta técnica en la supervisión de contraseñas. [4] Ha propuesto utilizar la tecnología para sus anunciadas protecciones ampliadas para niños [5].
En general, los protocolos PSI se pueden clasificar en dos categorías amplias: (1) PSI tradicional y (2) PSI delegada. En la categoría PSI tradicional, los propietarios de los datos interactúan directamente entre sí y necesitan tener una copia de su conjunto en el momento del cálculo, por ejemplo, [6] En la PSI delegada, el cálculo de PSI y/o el almacenamiento de conjuntos se puede delegar a un servidor de terceros (que puede ser un adversario pasivo o activo). La categoría PSI delegada se puede dividir en dos clases: (a) los que admiten la delegación única y (b) los que admiten la delegación repetida. Los protocolos PSI que admiten la delegación única requieren que el propietario de los datos vuelva a codificar sus datos y envíe los datos codificados al servidor para cada cálculo, por ejemplo, [7] Los que admiten la delegación repetida permiten a los propietarios de los datos cargar sus datos (encriptados) al servidor solo una vez y luego reutilizarlos muchas veces para cada cálculo realizado, pero el servidor, por ejemplo, [8]
Recientemente, los investigadores han propuesto una variante del protocolo PSI (tanto en categorías tradicionales como delegadas) que admiten la actualización de datos, por ejemplo, [9] [10] Este tipo de protocolo PSI permite a los propietarios de datos insertar/eliminar elementos de un conjunto en/de sus datos con bajos costos generales y de una manera que preserva la privacidad.
Este ejemplo educativo demostró la idea clave de PSI, pero no proporciona seguridad criptográfica en el mundo real (por lo tanto, no debe utilizarse con datos del mundo real).
# Conjuntos de ejemploparty_a_set = { 'manzana' , 'plátano' , 'cereza' }party_b_set = { 'banana' , 'naranja' , 'manzana' }# Hashing de los elementos en ambos conjuntoshash_party_a_set = { hash ( e ) para e en party_a_set }hash_party_b_set = { hash ( e ) para e en party_b_set }# Encontrar la intersección de los conjuntos hashintersección = hash_party_a_set . intersección ( hash_party_b_set )# Impresión de intersección hash para demostraciónimprimir ( intersección )