auth PKI basata su console (Xubuntu Linux)

1

Normalmente, utilizzo la mia scheda PKCS # 11 per accedere a un sito protetto utilizzando un plug-in del browser che ha avviato una finestra di dialogo del software locale per l'inserimento del PIN della scheda PKI.

È comunque possibile fare quanto segue?

  • Esegui alcuni strumenti della console
  • Lo strumento richiede idealmente il PIN direttamente o almeno attiva la finestra di dialogo standard
  • Le informazioni di autenticazione possono essere inviate al sito di localizzazione sicura

Ho provato finora OpenSC ma dice che la scheda non è supportata.

Questa domanda si concentra su come eseguire la parte di autenticazione con la scheda PKI, non su come utilizzare l'API del sito protetto.

Aggiorna

Alcuni risultati finora basati sulla risposta di @ phl.

Per verificare le funzioni offerte dal driver della scheda, ho fatto quanto segue.

# 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

Eccolo!

<hexvalue> T C_GetFunctionList

Quindi, ho provato a chiamare questa funzione da Python / ctypes .

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

E l'output è: 7 . Che cosa allora?!

Inoltre, la mia impressione è che dovrebbe essere in qualche modo possibile combinare OpenSSL con il driver, ma negli esempi che posso trovare finora le persone usano la scheda per memorizzare la chiave SSH.

Conclusione

Sebbene OpenSSL non sia possibile con questa carta (nessuna funzione esportata bind_engine), con PyKCS11 è comunque possibile utilizzare il PIN della carta e chiamare le sue funzioni di sicurezza. Quindi il suggerimento di @phl è la risposta.

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

2 risposte

2

Se la tua smart card supporta PKCS # 11, hai un driver di libreria / smartcard PKCS # 11 per la tua scheda. Questa libreria deve esportare la funzione PKCS # 11 C_GetFunctionList . Puoi collegare la libreria allo strumento da riga di comando che desideri sviluppare e utilizzare l'API PKCS # 11 (standard PKCS # 11) per eseguire l'autenticazione.

    
risposta data 24.10.2018 - 20:58
fonte
0

La tua domanda è un po 'superficiale, ma sì, è possibile, ma probabilmente dovrai codificarla tu stesso.

A seconda del sito che stai utilizzando, potresti essere fortunato e trovare qualche repo github di qualcuno che ha già capito come autenticare quel sito attraverso la CLI.

Se sei su Linux / Mac, dai un'occhiata a gnuPG, pinentry e cURL. Usando il tuo linguaggio di scelta dello script sarai in grado di hackerare qualcosa insieme per creare la richiesta appropriata al server web per l'autorizzazione.

    
risposta data 24.10.2018 - 15:16
fonte

Leggi altre domande sui tag