L'autenticazione tramite browser simile a chiave RSA è fattibile?

2

Vedo che l'autenticazione basata su password è fuori moda oggi e Internet si sta muovendo verso l'autenticazione basata su chiavi RSA.

Venendo da questo fatto, mi chiedo se ci sarebbe un vantaggio reale per il suo uso diffuso per i normali siti web? Vedo l'utilizzo come segue, ed è esattamente la stessa che normalmente ti aspetteresti:

  1. Durante l'accesso a una risorsa Web, il browser dell'utente genera la coppia pubblico-privata, nonché l'ambito che è disposto a fornire a questa chiave (non root/admin per impostazione predefinita)
  2. Il browser crittografa la chiave privata e l'utente comunica la chiave pubblica alla risorsa Web

Per tutte le altre richieste, l'utente viene automaticamente registrato grazie alla chiave privata memorizzata nel browser. Si noti che l'utente potrebbe (dovrebbe) anche effettuare l'accesso (registrazione) con un profilo federato e solo questo metodo fornirebbe l'ambito root/admin -like. Questo root utente sarà in grado di revocare le coppie di chiavi se sono compromesse.

Non risolverebbe il problema "N password per N siti web" che tutti stanno affrontando, poiché esiste solo 1 password di amministratore (che non è conosciuta dalla risorsa Web)?

Sì, mi sento come se avessi reinventato la ruota, e se è così ovvio, perché nessuno sembra usarlo?

    
posta dgan 16.08.2018 - 15:12
fonte

2 risposte

3

La tua intuizione è corretta! Esistono due protocolli di cui sono a conoscenza e utilizzano la crittografia a chiave pubblica come metodo per accedere a siti Web. (ma non sono in realtà SSH)

Certificati client TLS

Abbiamo tutti familiarità con TLS (l'icona del lucchetto verde nella barra del browser). In genere ha due funzioni:

  1. Cripta il traffico tra te e il server.
  2. Dimostra che il server è quello che dicono di essere.

Cliccando sul lucchetto verde, puoi vedere il certificato del server per il sito al quale sei attualmente collegato.

Si scopre che TLS supporta anche una modalità chiamata "autenticazione reciproca" in cui, oltre al server che fornisce un certificato per dimostrare la propria identità, anche tu (l'utente) lo fa.

Perfareciò,deviottenereuncertificatopersonale(disolitorilasciatodalsitowebinquestione)eimportaresiailcertificatochelachiaveprivatacorrispondenteneltuobrowser(disolitotramiteunfile.p12).Quandoticonnettiaunsitolorichiede,vedraiunpopupcomequesto:

ChiaviUSBFIDOUniversal2ndFactor(U2F)(sipensiaYubikey)

QuestaèlatecnologiaincuisicollegaundispositivocrittograficoUSBalcomputereunsitoWebcomunicaconildispositivoperl'autenticazionedell'utente.Questohaproecontrorispettoaicertificaticlient,maungrandeproèchelachiaveprivataèarchiviatainhardwarecrittografico,quindianchequalcunoconaccessoamministrativoaltuolaptopnonpuòfareunacopiadellatuachiave.

Da wikipedia :

Universal 2nd Factor (U2F) is an open authentication standard that strengthens and simplifies two-factor authentication (2FA) using specialized USB or NFC devices based on similar security technology found in smart cards.

U2F Security Keys are supported by Google Chrome since version 38 and Opera since version 40. U2F security keys can be used as an additional method of two-step verification on online services that support the U2F protocol, including Google, Dropbox, GitHub, GitLab, Bitbucket, Nextcloud, Facebook and others.

    
risposta data 16.08.2018 - 15:51
fonte
1

Esiste qualcosa vicino alle chiavi pubbliche ssh per HTTP? Sì, è chiamato certificati client e viene utilizzato quando è richiesta un'autenticazione strong. Nei paesi europei, un certificato di smart card dovrebbe fornire lo stesso valore legale di un documento firmato, a condizione che si possa stabilire che la chiave privata è sempre stata sotto il controllo esclusivo del suo proprietario e che il certificato è stato consegnato alla persona giusta

Perché non è ampiamente utilizzato? Vicino a un problema di gallina e uova. Dato che pochi client hanno certificati, è inutile implementarlo nei server del sito e nelle applicazioni web. E come pochi server accettano, non è utile per un cliente acquistare un certificato. E l'implementazione non è così banale, perché l'autenticazione avviene nei primi passi del protocollo SSL, prima che qualsiasi richiesta abbia mai raggiunto il server attuale, non parlando dei possibili incubi per i sistemi proxy e CDN.

Le cose potrebbero facilmente cambiare, se il governo degli Stati Uniti o i paesi europei decidessero che ogni cittadino dovrebbe avere un certificato sulla sua carta d'identità. Quindi il mercato per l'implementazione lato server aumenterebbe notevolmente, ma fino a quel momento ...

Inoltre, l'autenticazione 2FA è molto più semplice dei certificati (dal punto di vista del server) ed è generalmente considerata sufficientemente sicura per le esigenze di sicurezza standard. Quindi ancora una ragione per non adottare ampiamente i certificati client.

    
risposta data 16.08.2018 - 15:56
fonte

Leggi altre domande sui tag