0Pricing
Cryptology Academy · Lezione

SRP: Secure Remote Password Protocol

Comprenda come SRP consenta l’autenticazione reciproca tra client e server senza che il server memorizzi le password.

SRP: Secure Remote Password Protocol è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Panoramica e storia di SRP

Il protocollo Secure Remote Password (SRP) è stato sviluppato da Tom Wu a Stanford e pubblicato come RFC 2945 nel 2000; in seguito è stata definita una versione migliorata, SRP-6a. SRP consente l'autenticazione reciproca basata su una password condivisa senza trasmettere mai la password stessa, neppure in forma cifrata.

Il server memorizza un verificatore, non una password

Durante la registrazione SRP, il client calcola un verificatore della password v = g^x mod N, dove x = H(salt || password) e N è un primo sicuro di grandi dimensioni. Il server memorizza solo il salt e il verificatore v. Anche se il database del server viene compromesso, il verificatore memorizzato non rivela direttamente la password.

Generazione della chiave di sessione SRP

Durante l'accesso SRP, client e server eseguono entrambi uno scambio simile a Diffie-Hellman che genera una chiave di sessione condivisa. Il calcolo eseguito da ciascuna parte incorpora il valore derivato dalla password, quindi la chiave di sessione risultante può essere calcolata correttamente solo da chi conosce rispettivamente la password e il verificatore.

Autenticazione reciproca in SRP

SRP fornisce autenticazione reciproca: il client dimostra di conoscere la password e il server dimostra di possedere il verificatore legittimo. Ciò impedisce gli attacchi di phishing in cui un server contraffatto tenta di raccogliere informazioni sulla password, perché un server contraffatto non può completare correttamente lo scambio SRP senza il verificatore reale.

Calcolo del verificatore

Il verificatore viene calcolato come v = g^x mod N, dove x = H(salt || password), g è un generatore e N è un primo sicuro di almeno 2048 bit. Il problema del logaritmo discreto rende computazionalmente impraticabile recuperare x da v. La password può essere verificata solo completando correttamente l'intero scambio SRP.

Miglioramenti di SRP-6a

SRP-6a risolve alcune debolezze dei progetti originali SRP-3 e SRP-6 introducendo un parametro moltiplicatore k = H(N, g) e modificando l'ordine dei calcoli eseguiti dal client e dal server. Queste modifiche impediscono determinati attacchi di guessing two-for-one e fanno sì che il contributo del server venga vincolato nelle prime fasi del protocollo.

SRP nei sistemi di produzione

SRP è stato adottato in modo significativo nel mondo reale. Apple utilizza SRP nella sincronizzazione di iCloud Keychain per consentire ai dispositivi di recuperare i dati del portachiavi senza rivelare la password dell'account ai server di Apple. 1Password ha utilizzato SRP nel proprio modello di autenticazione per impedire l'esposizione delle credenziali lato server.

SRP impedisce il phishing

Poiché SRP genera una chiave di sessione che vincola sia la password sia il verificatore del server, un server di phishing non può completare correttamente l'handshake SRP. Un utente che si connette a un sito di phishing tramite SRP non riuscirà ad autenticarsi, ottenendo una proprietà anti-phishing integrata che non è presente nel tradizionale invio della password.

Limitazioni di SRP

SRP è costoso dal punto di vista computazionale e richiede l'esponenziazione modulare con interi grandi (di almeno 2048 bit). È complesso da implementare correttamente, con numerose insidie nella convalida dei parametri che hanno portato a vulnerabilità nelle implementazioni. Il protocollo richiede inoltre un canale sicuro (TLS) per impedire l'intercettazione passiva dello scambio stesso.

Suite di cifratura TLS-SRP

RFC 5054 definisce le suite di cifratura TLS-SRP, che integrano l'autenticazione reciproca SRP direttamente nell'handshake TLS. Ciò elimina la necessità dei certificati del server, fornendo comunque un'autenticazione reciproca cifrata. Tuttavia, TLS-SRP ha avuto un'adozione limitata nella pratica, poiché FIDO2 e OPAQUE si sono affermati come alternative più moderne.

SRP e le alternative moderne

Sebbene SRP sia stato rivoluzionario, alternative moderne come OPAQUE forniscono garanzie di sicurezza più forti (resistenza alla precomputazione) e FIDO2/passkeys eliminano completamente le password. Per i nuovi sistemi si preferiscono OPAQUE o FIDO2, ma SRP rimane una scelta valida per i sistemi che richiedono un'autenticazione reciproca basata su password senza vulnerabilità al phishing.

Verifica del verificatore SRP

In SRP, che cosa memorizza il server al posto della password dell'utente?

Riepilogo della lezione: autenticazione SRP

SRP memorizza un verificatore della password (non la password), genera una chiave di sessione condivisa tramite uno scambio simile a DH e fornisce un'autenticazione reciproca resistente al phishing. SRP-6a migliora il protocollo originale offrendo resistenza agli attacchi di guessing. iCloud Keychain di Apple e 1Password utilizzano SRP in produzione. OPAQUE e FIDO2 sono i successori moderni per i nuovi sistemi.

Domande Frequenti

La lezione «SRP: Secure Remote Password Protocol» è gratuita?

Sì — il testo completo di «SRP: Secure Remote Password Protocol» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «SRP: Secure Remote Password Protocol»?

Comprenda come SRP consenta l’autenticazione reciproca tra client e server senza che il server memorizzi le password. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «SRP: Secure Remote Password Protocol»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Il problema fondamentale dell’autenticazione tramite password
  2. SRP: Secure Remote Password Protocol
  3. Protocolli PAKE e loro proprietà
  4. Autenticazione senza password: WebAuthn e FIDO2
← Torna a Cryptology Academy