Esiste un concetto collaudato per l'autenticazione del certificato inverso del sito web?

5

Stiamo cercando di esporre esternamente alcuni dei nostri dati delle applicazioni interne tramite un sito web. I dettagli reali del sito Web non sono così interessanti, verranno creati utilizzando ASP.NET/IIS ecc. Che potrebbe essere rilevante. Con questo, sono essenzialmente alla ricerca di un meccanismo per autenticare gli utenti che visualizzano il mio sito web.

Questo suona banale, un nome utente / password va bene, ma io voglio di più. Ora ho letto molto su SSL / x.509 per capire che la CA determina che stiamo bene e che l'utente può fidarsi di noi. Ma voglio fidarmi dell'utente, voglio che l'utente venga rifiutato se loro non hanno le credenziali corrette.

Ho visto un sistema per il banking online in base al quale la banca emette un certificato che viene installato sul computer degli utenti (in realtà era basato su smart card). Se il sito Web non riesce a scoprire / utilizzare la coppia di chiavi, viene immediatamente respinto!

Questo è brutale, ma necessario. C'è un meccanismo in cui posso fare quanto segue:

  1. Genera un certificato per un utente
  2. Invia il certificato per l'installazione, può essere installato su > 1 macchina
  3. Se il loro certificato non è accessibile, gli è negato l'accesso
  4. Successivamente viene utilizzato uno schema nome utente / password standard
  5. SSL utilizzato utilizzando il proprio certificato una volta "in"

Questo deve già esistere, per favore indicami la giusta direzione! Grazie per il tuo aiuto:)

    
posta Tom 14.11.2011 - 16:59
fonte

1 risposta

3

Esiste assolutamente un meccanismo che esiste per fare questo: HTTPS.

(So cosa stai pensando - leggi fino alla fine del post prima di decidere che non è quello che vuoi!)

Innanzitutto, HTTPS è semplicemente HTTP costruito su SSL, quindi avere una conoscenza approfondita di SSL sarà vantaggioso.

Normalmente, le connessioni SSL utilizzate sul web riguardano solo l'autenticazione del server. Tuttavia, esiste un modo in cui server può autenticare il client anche essendo la propria CA ed emettendo un certificato per il client. Questa funzione è stata integrata nel protocollo SSL come passaggio facoltativo nel caso in cui si desideri un'autenticazione a due vie (in modo molto simile a ciò che si richiede).

Ecco una panoramica di come funziona:

  1. Il client avvia una connessione con il server, richiedendo il suo certificato.
  2. Il server risponde inviando il certificato al client. Una parte facoltativa di questo passaggio è che il server può anche sfidare il client richiedendo un certificato. La maggior parte dei siti web non lo fa. Questo è ciò che desideri abilitare sul tuo sito.
  3. Il client autentica il certificato del server è valido utilizzando la chiave pubblica della CA per decodificare il certificato (se i dati corrispondono, allora è noto che il certificato ha proveniente dalla CA, come solo la CA ha la chiave privata per generare certificati).
  4. Il client invia una chiave simmetrica al server (crittografata usando una chiave pubblica nel certificato del server). Se il server ha richiesto un certificato, il client invia anche il suo certificato al server.
  5. Il server autentica il client. Di solito ciò accade dal server stesso che assume il ruolo della CA e determina che il certificato ha effettivamente origine da questo server. Questo passaggio si verifica solo se il server ha contestato il client.
  6. Utilizzando la chiave simmetrica crittografata inviata dal client, il server determina quale sarà la chiave simmetrica e restituirà una conferma al client.
  7. A questo punto la stretta di mano è terminata. Tutta l'ulteriore corrispondenza si verifica utilizzando un semplice algoritmo di crittografia a chiave simmetrica.

Ora arriva la domanda: come fa il cliente a ottenere il certificato in primo luogo? Prima di tutto, hai bisogno di un modo sicuro per emettere un certificato. Hai citato le smart card (che possono essere buone. Un semplice jump drive è buono anche se sei certo che non cadrà nelle mani sbagliate). Se stiamo parlando di sicurezza a livello di CIA, allora non c'è una risposta facile (o economica) su come distribuire il certificato: dovrai usare il tuo stesso giudizio e fare i compiti su questo.

Una volta che l'utente ha il certificato, tutti i principali sistemi operativi hanno meccanismi per installare il certificato in modo che il computer sia abbastanza intelligente da rispondere automaticamente con il certificato corretto. Trovare informazioni su come farlo non dovrebbe essere difficile (l'ho fatto prima e non ricordo troppi problemi nel trovare informazioni sull'argomento).

Sfortunatamente, ho sempre avuto a che fare con un client quando lavoro con questo, ma questi link (e qualsiasi altra cosa che appare sotto una ricerca di Google per "Autenticazione client SSL") dovrebbero aiutarti:

Suppongo che tu sappia già che questo porterà mal di testa ai tuoi clienti, quindi fallo solo se sei sicuro al 100% che un semplice accesso web con la crittografia HTTPS più basilare non è quello che vuoi.

Buona fortuna, e spero che questo aiuti.

    
risposta data 15.11.2011 - 00:25
fonte

Leggi altre domande sui tag