Come funzionano gli OTP hardware?

2

Di recente mi sono imbattuto in una serie di smart card one-time-password (OTP) in alcuni internet negozi specializzati in attrezzature crittografiche.

Ora so / penso di sapere come funziona OTP con i token YubiKeys e RSA:

  1. Ottieni il token, un segreto condiviso con il server di produzione è hardcoded
  2. Fai qualcosa con il token e ti dà l'OTP (tramite display o tastiera simulata)
  3. Invia l'OTP alla tua app che a sua volta chiede al server del produttore se il codice è corretto
  4. Hai autenticato correttamente se il server ha risposto "sì"

Ora le carte attuali (come Gemalto MD 830 ) funzionano allo stesso modo, ad es. hard-coding del server condiviso e dei server online richiesti dal provider o in che modo il segreto entra nella carta?

Inoltre, come viene trasferito l'OTP generato dalla scheda al computer? Verrà visualizzato in modo che l'utente possa copiarlo e incollarlo? Richiede hardware aggiuntivo (ad eccezione del lettore collegato al PC)? Deve essere recuperato dal software?

Nota: per il paragrafo immediatamente precedente, sto parlando esplicitamente di schede che non dispongono di un display integrato.

    
posta SEJPM 04.05.2016 - 13:29
fonte

3 risposte

3

I sistemi basati su smart card come il prodotto nel collegamento fornito sono basati su PKI (infrastruttura a chiave pubblica) che è un mezzo per autenticare un utente in base alla sua capacità di firmare qualcosa con una chiave privata (mantenuta sulla smart card) che può essere provato con l'applicazione della chiave pubblica. Dal momento che la chiave privata non lascia mai la carta (almeno, in implementazioni completamente sicure) è un modo per garantire che l'utente abbia la carta poiché non esiste un modo pratico per duplicarla ed è sfidata a dimostrare se stessa durante ogni segno- on.

Quindi RSA SecureID ha uno scopo simile (dimostrando che l'utente ha l'oggetto in suo possesso ed è impossibile duplicarlo) ma non è così robusto perché la smartcard può interagire con il sistema operativo, per fare cose come forzare l'utente per disconnettersi se la scheda viene rimossa dal computer e fornire altre funzioni crittografiche come la firma delle e-mail.

Nel caso del keyfob, la sezione "privata" è ancora nota a RSA (o chiunque abbia emesso il fob) perché è necessario per convalidare il codice. Nel caso della smartcard, la chiave privata potrebbe (dovrebbe) esistere solo sulla carta e la chiave pubblica viene utilizzata per convalidare la carta.

    
risposta data 04.05.2016 - 15:04
fonte
3

@JeffMeden ha fornito una buona panoramica di come funziona la smartcard PKI, non ha rilevato che utilizzano protocolli e modelli di sicurezza completamente diversi rispetto ai token OTP.

Un token OTP utilizza una sorta di segreto pre-concordato * per generare una password. Il protocollo può dimostrare solo che qualcuno al momento detiene il token. Non può verificare l'identità del server né proteggere contro man-in-the-middle, replay (mentre la password è ancora valida) o duplicazione del segreto. Questi devono essere migitati esternamente (ad esempio utilizzando TLS).

Una smartcard PKI, d'altra parte, è come un piccolo computer in grado di gestire qualsiasi tipo di funzioni crittografiche come la generazione di chiavi, la firma e l'ecryption. La carta può difendersi da tutti gli attacchi menzionati sopra se implementati correttamente. Cioè la carta da sola può stabilire comunicazioni sicure con il server usando pipe insicure.

Detto questo, le schede PKI sono probabilmente eccessive per le applicazioni di autenticazione pure.

* o dall'utente che registra un ID sul token o che l'utente sta emettendo un codice segreto che viene caricato sul dispositivo

    
risposta data 04.05.2016 - 16:24
fonte
1

@JeffMeden e @ billc.cn hanno già fornito un'ottima spiegazione. Nella tua domanda iniziale hai menzionato qualcosa, vorrei commentare:

Hai detto "Invia l'OTP alla tua app che a sua volta chiede al server del produttore se il codice è corretto" .

Questo può essere vero in alcuni casi come il servizio di validazione yubico o servizi come duo o onelogin. Questi sono servizi che facilitano il processo di avvio.

Ma puoi anche eseguire il tuo servizio di autenticazione. Quindi l'applicazione chiederà il tuo server di autenticazione, se l'OTP è corretto. Ancora - come entrambi hanno sottolineato - il token OTP (fob) di solito ha il segreto condiviso impiantato dal produttore. Cioè il produttore potrebbe ancora conoscere questo segreto condiviso.

Comunque, ci sono alcuni dispositivi OTP in cui puoi creare il tuo segreto condiviso, come yubikey, che puoi inizializzare e autenticare contro il tuo server di autenticazione. In tale scenario, le chiavi segrete e la decisione di autenticazione sono sotto il tuo controllo. Ci sono diverse implementazioni di diversi livelli complessivi là fuori. privacyIDEA è un server di autenticazione molto sofisticato, che è open source e supporta un'ampia gamma di diversi tipi di token - per darti il controllo, tornare al posto di guida .

    
risposta data 04.05.2016 - 23:01
fonte

Leggi altre domande sui tag