Autenticación de usuario con tarjetas inteligentes o RFID en Mac (OS X) para acceder a una base de datos cifrada

3

Estoy desarrollando un software que maneja datos confidenciales de privacidad en un entorno de red local, usando computadoras Mac , a las que solo puede acceder un grupo selecto de personas.

Necesito entender cómo puedo proporcionar acceso seguro y personalizado a los (mismos) datos de cada persona autorizada.

Los datos se almacenan en una base de datos SQL (actualmente en Sqlite, pero posiblemente en Postgresql) y se cifrarán en el archivo de la base de datos. El motor de base de datos podrá descifrar los datos para que pueda buscarlos sin esfuerzo, es decir, no quiero ya cifrar los datos en el extremo del cliente.

Con eso, creo que al abrir la base de datos, se debe proporcionar una clave de descifrado , ya que la base de datos no puede gestionarla por sí sola. Lo que significa que las computadoras que acceden al servidor deben conocer la clave. Por lo que he aprendido hasta ahora, esto se hace así:

Cada usuario autorizado tiene una contraseña; esa contraseña se utiliza para crear un código hash. El código hash se usa para cifrar y descifrar los datos secretos, en este caso la clave de la base de datos. Esto significa que para cada cuenta de usuario que cree, tengo que cifrar la misma clave de DB con la contraseña del usuario.

Además, para evitar que las personas revelen sus contraseñas con demasiada facilidad, se utilizará una clave física para autenticar a cada usuario . Algún sistema de tarjetas de acceso, probablemente.

No conozco ningún sistema de tarjeta de acceso ni he investigado ningún sistema de autenticación (p. ej., sospecho que Kerberos tiene algo que ver con eso, pero nunca lo he utilizado, por lo que mi nivel de "experiencia" es en esta área) .

Mis preguntas son:

  • ¿Cómo funciona la autenticación con una tarjeta de acceso ? ¿Cuál es el resultado que obtengo del lector de tarjetas para poder autenticar a un usuario con él? Después de todo, tengo que terminar con un código hash para descifrar los datos cifrados de ese usuario.

  • ¿Qué tipo de tarjetas para Mac hay que puedo usar para la autenticación de usuario personalizada en mi escenario? ¿Supongo que necesito algo que viene con un conjunto de tarjetas programables? En el peor de los casos, me imagino que puedo usar cualquier sistema de tarjeta basado en USB siempre que su API de nivel de USB esté documentada públicamente (en el pasado logré escribir controladores USB para Mac). Pero ni siquiera sé qué buscar. ¿Cómo se llaman los sistemas que debo buscar? Me he topado con RSA, por ejemplo, pero ni siquiera puedo decir si es adecuado para mi propósito desde su sitio web centrado en el marketing.

  • Acabo de enterarme de las etiquetas RFID: prácticamente son tarjetas con un UUID fijo. Eso no va a funcionar ya que pueden ser escaneados y replicados fácilmente, creo. Así que prefiero algo que realmente esté ejecutando una pequeña CPU en el interior, para realizar algún proceso secreto de respuesta-desafío. Como alguien señaló, eso sería "tarjetas inteligentes", supongo ahora.

Actualización 1

Tuve algunas ideas adicionales sobre el uso de tarjetas RFID. Si bien se pueden copiar fácilmente, puedo combinarlos con hacer que el usuario ingrese una contraseña personal, luego use la ID única de RFID con la contraseña para crear un código hash que luego uso para descifrar la clave de cifrado de la base de datos. Por lo tanto, un atacante necesitaría dos cosas: la tarjeta y la contraseña del usuario, lo cual es una protección suficiente en mi caso. ¿Tiene sentido esa técnica?

    
pregunta Thomas Tempelmann 04.03.2016 - 01:08
fuente

1 respuesta

2

No estoy seguro de si su idea sobre el cifrado de la base de datos funcionará mejor. Pero solo para darle una idea acerca de su necesidad de utilizar un segundo factor para el cifrado.

Los dispositivos o aplicaciones como el autenticador de Google utilizan un algoritmo de contraseña de un solo uso. Esto se basa en una clave simétrica. Tal algoritmo y dispositivo no pueden utilizarse para el cifrado.

Desea utilizar claves asimétricas (> = RSA2048) para hacer lo siguiente. Cree un par de claves de una clave privada y una pública en la tarjeta inteligente. La clave privada no abandona la tarjeta inteligente. La clave pública lo hace. Como es público. La clave privada será única en hardware, ya que no deja el hardware.

Cifre su base de datos con una clave AES simétrica.

Ahora puede cifrar la clave AES simétrica con la clave pública. Cada vez que el usuario desea acceder a la base de datos, puede descifrar la clave AES cifrada en la tarjeta inteligente (con la clave privada) y la clave de cifrado AES se puede usar para descifrar la base de datos. Por supuesto, debe tener cuidado de que la clave de cifrado AES simétrica no se filtre.

Pero ahora puede agregar nuevos usuarios con sus propios pares de claves asimétricas. Para cada usuario puede cifrar la clave de cifrado AES con la clave pública del usuario. Por lo tanto, solo este usuario puede descifrar la clave de cifrado AES con su clave privada. Y puede administrar, qué usuario podrá descifrar la base de datos.

... si quieres hacer esto, ¡tienes un largo camino por recorrer! Diviértete ;-)

    
respondido por el cornelinux 05.03.2016 - 00:34
fuente

Lea otras preguntas en las etiquetas