¿Podemos almacenar información confidencial del cliente con los administradores sin que ellos (administradores) la identifiquen?

0

Estoy intentando diseñar una aplicación de emparejamiento para mi universidad este día de San Valentín. ¿Cómo se supone que funciona, preguntas? Los clientes enviarán las preferencias específicamente los nombres al servidor y, después de algunos días, si dos clientes tienen las mismas preferencias, se les notificará: not en cualquier otro caso. Un diseño de marco infalible debe construirse para este propósito. Lo que estoy dispuesto a hacer es asegurar a mis clientes que, aunque me envíen sus respuestas favoritas a través de mi sitio web, no podré verlas como si lo hiciera, esta aplicación tendrá problemas de privacidad. Estoy tratando de hacer coincidir las preferencias del usuario, obviamente estarán cifradas y no hay forma de que pueda coincidir con ninguno de los dos a menos que los descifre en algún punto de mi servidor localmente - asumiendo el hecho de que el mecanismo de cifrado RSA tiene una probabilidad muy pequeña de colisión de valores de hash y definitivamente no puedo igualarlos :). El cuello de botella aquí entonces es > > nunca descifre las preferencias del cliente localmente en la máquina / servidor del administrador . Un enfoque que actualmente tengo en mente es introducir salt mientras se encripta, lo que se mantendrá seguro en las manos del cliente, pero aún así se debe descifrar en algún momento para que coincida con estos hashes. ¿Puede haber algún enfoque alternativo para este tipo de diseño? Creo que podría faltar algo.

    
pregunta yellow_flash 12.02.2016 - 01:54
fuente

2 respuestas

5

Supondré que los clientes responden a una serie de preguntas booleanas n . El servidor almacena sus respuestas de tal manera que el administrador no puede conocer sus respuestas. Luego, el servidor identifica pares de clientes con respuestas idénticas.

Entonces, ¿no podría el administrador (o alguien realmente) crear 2^n cuentas ficticias (todas las respuestas posibles a las preguntas booleanas)? El servidor forma pares. Ahora sabes las respuestas de todos.

Así que no creo que esto sea posible. (¿Me perdí algo?)

    
respondido por el emory 12.02.2016 - 02:29
fuente
1

No soy un experto en seguridad, pero mi razonamiento es el siguiente: Si encripta la información usando una clave compartida (conocida por usted), puede descifrar los datos en el servidor y compararlos. Si cifra datos en los clientes con claves individuales, no podrá descifrar los datos pero no podrá compararlos.

Veo dos soluciones

  • Simple: haga un hash de los datos (utilizando un secreto compartido): si obtiene un hash idéntico para dos entradas, esto significa que los datos originales fueron los mismos (con muy alta probabilidad) o hubo colisión de hash (con una probabilidad muy baja). Puede intentar adivinar la respuesta de alguien y verificarla, pero esto es en esencia la funcionalidad de su aplicación (que coincide con dos respuestas) y es imposible evitarla.
  • Complejo: encuentre el cifrado que tiene propiedades que:

    Para el cifrado dado c y dos secretos s1 y s2 e es cierto que e (e (c, s1), s2) = e (e (c, s2), s1) (Estoy seguro de que hay es un nombre propio para esta propiedad pero no lo recuerdo ahora)

    ahora todos cifran sus preferencias secretas con su propia clave secreta, luego cifran las preferencias de todos los demás con su clave secreta; si obtienes un texto cifrado idéntico para un par, las preferencias originales son las mismas. Esto aún no impide que intentes adivinar las respuestas, pero hace que sea imposible hacerlo sin conexión sin la cooperación de la "víctima" (tienen que cifrar cada una de tus suposiciones con su clave secreta).

Ahora, en ambos casos, pensaría en normalizar las respuestas para evitar la falta de coincidencia causada por una entrada ligeramente diferente, por lo que, por ejemplo, puede recortar el espacio en blanco, hacer que la caja sea uniforme y eliminar algunos caracteres especiales antes del cifrado / hashing.

Una cosa más, independientemente del método que aún tengan que confiar los usuarios (para ingresar los datos en su página web o para instalar su aplicación), para creer que no tiene intenciones maliciosas e implementó el esquema de privacidad correctamente. Por lo tanto, incluso si creas un buen esquema, la confianza puede ser un problema.

    
respondido por el AGrzes 12.02.2016 - 15:32
fuente

Lea otras preguntas en las etiquetas