Autenticación de tarjeta inteligente local

3

Tengo una tarjeta inteligente que tiene PKCS # 11 u otra interfaz similar y contiene un certificado y una clave privada.

Me gustaría realizar una autenticación local (sin red) del usuario con la tarjeta inteligente y los datos en ella protegidos por PIN.

¿Qué es un buen esquema / algoritmo para hacerlo y confiar?

Mi primera idea es hacer lo siguiente:

  1. ingresa nombre de usuario / PIN
  2. Inicie sesión como usuario en la tarjeta inteligente (si falla, devuelva falso)
  3. Verifique la validez del certificado (si no es válido, devuelva falso)
  4. Compruebe si el nombre de usuario es igual a CN en el certificado (si no es así, devuelva falso)
  5. Genere datos aleatorios y firme con una clave privada en una tarjeta inteligente
  6. Compruebe si la firma es válida (si no, devuelva falso)
  7. Devuelve true

¿Tiene sentido? ¿O hay algún estándar al respecto?

    
pregunta user1563721 17.03.2017 - 15:25
fuente

2 respuestas

0

Sugiero los siguientes cambios

  
  1. ingresa nombre de usuario / PIN
  2.   
  3. Inicie sesión como usuario en la tarjeta inteligente (si falla, devuelva falso)
  4.   

Por lo general, las tarjetas inteligentes con certificados digitales no tienen un "nombre de usuario". El pin es necesario para desbloquear la clave privada del certificado seleccionado

  
  1. Verifique la validez del certificado (si no es válido, devuelva falso)
  2.   

Correcto, esto es necesario para filtrar los certificados disponibles. Puedes tener varios (no sé si este es tu escenario)

  
  1. Compruebe si el nombre de usuario es igual a CN en el certificado (si no es así, devuelva falso)   Este paso generalmente se realiza después de la firma digital, ya que no se sabe qué certificado seleccionará el usuario.
  2.   

También está asumiendo que el usuario está registrado y que CN contiene el nombre de usuario. Cuando se usan tarjetas inteligentes para autenticar el proceso, por lo general es lo contrario: el usuario selecciona el certificado y el nombre de usuario se extrae de un atributo del certificado (CN, NÚMERO DE SERIE o uno personalizado)

  
  1. Genere datos aleatorios y firme con una clave privada en una tarjeta inteligente
  2.   
  3. Compruebe si la firma es válida (si no, devuelva falso)
  4.   
  1. Revisar la revocación del certificado usado
  2. Extraiga el nombre de usuario del certificado y verifique si está autorizado
  
  1. Devuelve true
  2.   
    
respondido por el pedrofb 18.03.2017 - 15:33
fuente
0

ya que esta es una pregunta bastante teórica y no especificó la plataforma - Windows / Linux / Mac y la infraestructura AD / standalone / workgroup. Esquema de implementación / requisitos, etc. Y ya que sin infraestructura de red, no es posible ejecutar una Autoridad de Certificación para emitir un certificado.

Mi sugerencia para simplificar su enfoque:

  1. Use la función PKCS # 11 para personalizar los datos.
  2. Formato de datos elaborado para guardar UserLogin / Password / WorkstationName en la Tarjeta
  3. Guarde el número de serie de la tarjeta inteligente en una Lista de tarjetas permitidas.

Para autenticar:

  1. El usuario inserta la tarjeta e ingresa el PIN. Verificar PIN. Iniciar sesión en la tarjeta.
  2. Datos del lector de PKCS # 11.
  3. Verifique si el nombre de usuario / nombre de la estación de trabajo / Serie de la tarjeta está bien, esta será su autenticación de Factor 2
  4. pase el nombre de usuario / contraseña (de la tarjeta) a la autenticación del sistema local (Windows / Mac / Windows)
  5. manejar el error y mostrar la interfaz de usuario

La falsificación del número de serie de la tarjeta inteligente es un ataque bastante complejo y es poco probable que ocurra.

    
respondido por el AleSil 21.04.2018 - 11:48
fuente

Lea otras preguntas en las etiquetas