2011-01-09 17 views
8

Attualmente sto lavorando a un progetto che implica l'autenticazione degli utenti in modo sicuro. Ho letto molto su SRP, e ancora non sono riuscito a ottenere i miei concetti chiave. Ti sarei grato se potesse spiegare l'idea e l'implementazione di SRP in termini laici.Secure Remote Password (SRP) in termini pratici

Nota: non pubblicare collegamenti a siti Web relativi a SRP, poiché sono sicuro di aver cercato su Google e di leggerne la maggior parte; a meno che non sia un documento che spiega SRP in un linguaggio lucido.

risposta

9

Iniziare con entrambe le parti che hanno già concordato una password.

Nella prima parte del protocollo, entrambi i lati generano un numero casuale e utilizzano una matematica ordinata che coinvolge questo e la password per concordare un segreto condiviso randomizzato. Ciò è fatto in modo che ogni volta sia diverso (anche se la password è la stessa), nessuno in ascolto sul cavo può determinare il segreto condiviso, e funziona solo se entrambe le parti conoscono la password. (La matematica in questione è basata sul problema del logaritmo discreto, strettamente correlato a Diffie-Hellman.)

Le parti proseguono poi a dimostrarsi reciprocamente che entrambi hanno concordato lo stesso segreto condiviso (cioè entrambi conoscono la password), di nuovo senza rivelarlo a nessuno che ascolta. Questo richiede più (diversi) ordinamenti matematici.

A condizione che entrambe le parti siano convinte di avere lo stesso segreto condiviso, possono quindi derivarne le chiavi di sessione e iniziare a comunicare con la propria scelta di codice.

+0

quindi, memorizzano la "password" concordata da qualche parte? La password può essere compromessa? – Anup

+0

Il server memorizza solo un blocco di dati derivato dalla password. I meccanismi utilizzati significano che non è possibile determinare la password dal blocco dati, né il blocco dati può essere utilizzato come se fosse la password. – crazyscot

+0

Quindi questo è effettivamente equivalente (dal punto di vista della scatola nera) a me utilizzando un KDF per generare una coppia di chiavi pubblica-privata, dando la metà del pubblico al server, quindi utilizzando l'autenticazione della chiave pubblica standard per autenticare le connessioni future? – Ajedi32