Perché il certificato client con l'handshake TLS?

1

TLS consente di utilizzare il certificato client per inizializzare una connessione TLS a un server. Tuttavia, lo stesso può essere ottenuto da:

  1. Inizializza la connessione TLS come client anonimo con una chiave privata generata casualmente.
  2. Il server fornisce un numero casuale come una sfida su un modulo Web o intestazione HTTP.
  3. Il cliente, ad es. un browser, utilizza la chiave privata (tramite window.crypto javascript API) per generare una chiamata API RESTful per identificarsi al server firmando la richiesta e fornendo il certificato.

I due metodi sono: certificato client e chiamata javascript-API, lo stesso in termini di sicurezza?

Lo scenario dietro questa domanda è che stiamo usando la chiave pubblica blockchain per stabilire una connessione TLS. Poiché non vi è alcun certificato client firmato dall'autorità, il client fornisce invece un percorso dell'albero Merkle come prova.

Apparentemente, il formato di tale prova non è compreso dal server HTTPS quando viene usato come sostituto del certificato client, quindi stiamo modificando il server.

Quindi qualcuno fa sorgere la domanda: c'è qualche vantaggio di sicurezza che possiamo ottenere per implementare Merkle tree proof come certificato client? Sembra perfettamente sicuro se lo implementiamo sul livello della logica aziendale iniziando con la connessione TLS anonima e quindi richiede l'autenticazione.

Ho iniziato a capire che ci sono altri vantaggi nell'autenticazione dopo aver stabilito la connessione TLS, ad es. offre l'opportunità di una maggiore interfaccia utente, ad esempio, visualizzando messaggi come questo "La tua prova di Merkle sembra puntare alla rete di test - accettiamo solo la prova Merkle della rete principale."

Quindi mi chiedo, quale è stata la ragione per utilizzare il certificato client per inizializzare TLS in primo luogo? Perché TLS include il concetto di inizializzare TLS con il certificato del cliente? Sembra solo rendere i sistemi più difficili da usare senza vantaggi di sicurezza.

    
posta Peer Gynt 19.06.2018 - 09:46
fonte

1 risposta

2

Is the two method: client certificate and javascript-API call, the same in terms of security?

Entrambi i metodi si basano sul fatto che il client abbia una chiave privata firmata da un'autorità che il server considera attendibile. Quindi, in teoria, possono essere equivalenti: in pratica, il codice della libreria TLS del client è probabilmente molto più controllato rispetto a qualsiasi API che intendi elaborare. Questo non vuol dire che non puoi renderlo sicuro; fai solo attenzione e fallo leggere da persone che capiscono cripto.

Then I ask myself, what was the reason to use the client certificate to initialise TLS in the first place? Why TLS includes the concept of initialising TLS with client certificate at all? It looks only to make systems harder to use without security advantages.

I certificati client TLS sono un opzionale, metodo inline di fornitura dell'autenticazione. Stai vedendo la parte in linea come negativa, perché ti piacerebbe essere elegante e fare qualcosa di diverso. Tuttavia, per molti usi, l'aspetto inline è un vantaggio.

Il tipo di contorsione che stai proponendo, dove stai aggiungendo un passaggio a livello di applicazione, è utile solo quando hai il controllo del client, del server e del protocollo. Ma ricorda che TLS è stato un livello di sicurezza imbullonato che è stato spesso utilizzato per applicazioni e protocolli che non hanno idea di essere utilizzato, dove non è possibile eseguire codice personalizzato sul client. Per quelle situazioni, avere un metodo uniforme e affidabile di autenticazione del client inserito nelle librerie è una grande vittoria.

    
risposta data 19.06.2018 - 17:13
fonte

Leggi altre domande sui tag