Autenticación PKI basada en consola (Xubuntu Linux)

1

Normalmente, uso mi tarjeta PKCS # 11 para iniciar sesión en un sitio seguro mediante un complemento del navegador que inició un diálogo de software local para ingresar el PIN de la tarjeta PKI.

¿Es posible hacer lo siguiente?

  • Ejecutar alguna herramienta de consola
  • Lo ideal es que la herramienta solicite el PIN directamente o, al menos, active el diálogo estándar.
  • La información de autenticación se puede enviar al sitio de ubicación segura

Hasta ahora he intentado OpenSC pero dice que la tarjeta no es compatible.

Esta pregunta se centra en cómo realizar la parte de autenticación con la tarjeta PKI, no en cómo utilizar la API del sitio seguro.

ACTUALIZAR

Algunos hallazgos hasta el momento se basan en la respuesta de @phl.

Para verificar las funciones ofrecidas por el controlador de la tarjeta, hice lo siguiente.

# explore Debian package of the driver installer
dpkg -c <filename>.deb | grep .so

# list functions offered by the library and search for the target function
nm -D <library> | grep C_GetFunctionList

¡Aquí estaba!

<hexvalue> T C_GetFunctionList

Luego, he intentado llamar a esta función desde Python / ctypes .

from ctypes import *
cardfun1 = cdll.LoadLibrary("xxxxyyy.so")
print(cardfun1.C_GetFunctionList(None))

Y la salida es: 7 . ¡¿Entonces qué ?!

También, mi impresión es que debería ser posible de alguna manera combinar OpenSSL con el controlador, pero en los ejemplos que puedo encontrar hasta ahora, las personas usan la tarjeta para almacenar la clave SSH.

CONCLUSION

Si bien OpenSSL no es posible con esta tarjeta (no se utiliza la función bind_engine), con PyKCS11 es posible usar el PIN de la tarjeta y llamar a sus funciones de seguridad. Así que la sugerencia de @phl es la respuesta.

session = pkcs11.openSession(slot, CKF_SERIAL_SESSION | CKF_RW_SESSION)
session.login(<PIN>)
    
pregunta J. Doe 24.10.2018 - 11:28
fuente

2 respuestas

2

Si su tarjeta inteligente es compatible con PKCS # 11, tiene un controlador de biblioteca / tarjeta inteligente PKCS # 11 para su tarjeta. Esta biblioteca debe exportar la función PKCS # 11 C_GetFunctionList . Puede vincular la biblioteca a la herramienta de línea de comandos que desea desarrollar y utilizar la API PKCS # 11 (PKCS # 11 standard) para realizar la autenticación.

    
respondido por el phl 24.10.2018 - 20:58
fuente
0

Tu pregunta es un poco superficial, pero sí, es posible, pero probablemente tendrás que codificar eso tú mismo.

Dependiendo del sitio que estés usando, puedes tener suerte y encontrar algún representante de github de alguien que ya haya descubierto cómo autenticar ese sitio a través del CLI.

Si está en Linux / Mac, eche un vistazo a gnuPG, pinentry y cURL. Al usar el lenguaje de scripting de su elección, podrá piratear algo para crear la solicitud adecuada al servidor web para su autorización.

    
respondido por el Securist 24.10.2018 - 15:16
fuente

Lea otras preguntas en las etiquetas