Autorización de entradas de registro cifradas

1

Tenemos una tabla de base de datos de entradas de registro cifradas, cada entrada cifrada contiene información sobre el usuario que creó la entrada. La entrada se cifra con la clave de cifrado del usuario en particular.

Los usuarios pueden iniciar sesión en la GUI web e ingresar su clave de descifrado para obtener y descifrar las entradas del registro sus del servidor, sin exponer otras entradas. El problema es que no hay manera de identificar al usuario antes de descifrarlo (esto es un requisito). Además, el usuario o un atacante que tenga acceso al servidor que posee la clave de descifrado del usuario no debe poder descifrar las entradas del registro de otros usuarios.

El segundo requisito es el rendimiento. Hay cientos de miles de filas, por lo que descifrar todas las filas por prueba y error no parece viable.

¿Hay algún esquema existente para resolver este dilema del huevo y la gallina?

    
pregunta Tuomas Toivonen 29.06.2018 - 07:11
fuente

1 respuesta

0

No.

Las correlaciones cifradas entre las entradas requieren descifrado y, por lo tanto, son lentas. Sin embargo, las correlaciones no cifradas están prohibidas por los requisitos. De ello se deduce que estás obligado a usar un esquema lento.

Solución posible aceptable: dividir los registros

Utilice una tabla cifrada diferente para cada usuario, con el nombre de la tabla seleccionado al azar y almacenado como una propiedad de perfil cifrada. En los sistemas donde las tablas cifradas se descifran sobre la marcha en la memoria de cada usuario, esto logrará el rendimiento.

La única información filtrada es la cantidad de usuarios, que probablemente se sepa de todas formas por el tamaño de la tabla de usuarios, y el hecho de que algunos usuarios pueden tener más o menos entradas de registro que otros. La observación de los tamaños de las tablas permitirá determinar qué identificador único se asigna a cada usuario, pero no más.

Solución posible aceptable: ofuscar la correlación

En lugar de una relación uno a uno, puede considerar emplear una relación uno a varios, donde el usuario N puede generar cualquier ID al azar de la forma N P + RAND (P-1). Los registros del usuario N son todos aquellos con ID en el rango [N P, (N + 1) * P-1) y se pueden recuperar con una cláusula BETWEEN. La inspección de la tabla por parte de un atacante revelará una débil correlación entre los registros, con un promedio de duplicados de TABLESIZE / P que se asignarán al mismo usuario.

    
respondido por el LSerni 29.06.2018 - 07:30
fuente