SRP: Secure Remote Password Protocol
Förstå hur SRP låter klient och server autentisera varandra utan att servern lagrar lösenord.
SRP: Secure Remote Password Protocol är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Översikt över SRP och dess historia
Protokollet Secure Remote Password (SRP) utvecklades av Tom Wu vid Stanford och publicerades som RFC 2945 år 2000. Senare definierades den förbättrade versionen SRP-6a. SRP möjliggör ömsesidig autentisering baserad på ett gemensamt lösenord utan att själva lösenordet någonsin överförs, inte ens i krypterad form.
Servern lagrar ett verifieringsvärde, inte ett lösenord
Under SRP-registreringen beräknar klienten ett verifieringsvärde v = g^x mod N, där x = H(salt || password) och N är ett stort säkert primtal. Servern lagrar endast saltet och verifieringsvärdet v. Även om serverns databas komprometteras avslöjar det lagrade verifieringsvärdet inte lösenordet direkt.
Generering av SRP-sessionsnyckel
Under SRP-inloggningen genomför klienten och servern ett Diffie-Hellman-liknande utbyte som genererar en gemensam sessionsnyckel. Beräkningen på varje sida använder det lösenordshärledda värdet, så den resulterande sessionsnyckeln kan endast beräknas korrekt av den som känner till lösenordet respektive verifieringsvärdet.
Ömsesidig autentisering i SRP
SRP tillhandahåller ömsesidig autentisering: klienten bevisar att den känner till lösenordet och servern bevisar att den har det legitima verifieringsvärdet. Detta förhindrar nätfiskeattacker där en falsk server försöker samla in lösenordsinformation, eftersom en falsk server inte kan slutföra SRP-utbytet korrekt utan det riktiga verifieringsvärdet.
Beräkning av verifieringsvärdet
Verifieringsvärdet beräknas som v = g^x mod N, där x = H(salt || password), g är en generator och N är ett säkert primtal på minst 2048 bitar. Det diskreta logaritmproblemet gör det beräkningsmässigt omöjligt att återvinna x från v. Lösenordet kan endast verifieras genom att hela SRP-utbytet genomförs korrekt.
Förbättringar i SRP-6a
SRP-6a åtgärdar svagheter i de ursprungliga konstruktionerna SRP-3 och SRP-6 genom att införa en multiplikatorparameter k = H(N, g) och ändra ordningen för klientens och serverns beräkningar. Dessa ändringar förhindrar vissa attacker där varje lösenordsgissning kan utnyttjas två gånger och säkerställer att serverns bidrag knyts till protokollet tidigt.
SRP i produktionssystem
SRP har fått betydande praktisk användning. Apple använder SRP i synkroniseringen av iCloud Keychain, så att enheter kan hämta nyckelringsdata utan att avslöja kontots lösenord för Apples servrar. 1Password har använt SRP i sin autentiseringsmodell för att förhindra exponering av autentiseringsuppgifter på serversidan.
SRP förhindrar nätfiske
Eftersom SRP genererar en sessionsnyckel som binder samman både lösenordet och serverns verifieringsvärde kan en nätfiskeserver inte slutföra SRP-handskakningen korrekt. En användare som ansluter till en nätfiskesida via SRP misslyckas med autentiseringen, vilket ger en inbyggd egenskap mot nätfiske som saknas vid traditionell överföring av lösenord.
Begränsningar hos SRP
SRP är beräkningskrävande och kräver modulär exponentiering med stora heltal (minst 2048 bitar). Det är komplext att implementera korrekt, med många subtila fallgropar i parameter valideringen som har lett till sårbarheter i implementationer. Protokollet kräver också en säker kanal (TLS) för att förhindra passiv avlyssning av själva utbytet.
TLS-SRP-chiffersviter
RFC 5054 definierar TLS-SRP-chiffersviter som integrerar ömsesidig SRP-autentisering direkt i TLS-handskakningen. Detta eliminerar behovet av servercertifikat och tillhandahåller samtidigt krypterad ömsesidig autentisering. TLS-SRP har dock fått begränsad användning i praktiken, eftersom FIDO2 och OPAQUE har utvecklats till modernare alternativ.
SRP jämfört med moderna alternativ
Även om SRP var banbrytande erbjuder moderna alternativ som OPAQUE starkare säkerhetsgarantier (motståndskraft mot förberäkning), och FIDO2/passkeys eliminerar lösenord helt. För nya system föredras OPAQUE eller FIDO2, men SRP är fortfarande ett giltigt val för system som kräver lösenordsbaserad ömsesidig autentisering utan sårbarhet för nätfiske.
Kontroll av SRP-verifieringsvärde
I SRP, vad lagrar servern i stället för användarens lösenord?
Lektionens sammanfattning: SRP-autentisering
SRP lagrar ett lösenordsverifieringsvärde (inte lösenordet), genererar en gemensam sessionsnyckel genom ett DH-liknande utbyte och tillhandahåller ömsesidig autentisering som står emot nätfiske. SRP-6a förbättrar den ursprungliga versionen genom motståndskraft mot gissningsattacker. Apples iCloud Keychain och 1Password använder SRP i produktion. OPAQUE och FIDO2 är moderna efterföljare för nya system.
Lär dig Cryptology Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 67
- Lektioner
- 261
Vanliga frågor
Är lektionen ”SRP: Secure Remote Password Protocol” gratis?
Ja – hela texten till ”SRP: Secure Remote Password Protocol” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”SRP: Secure Remote Password Protocol”?
Förstå hur SRP låter klient och server autentisera varandra utan att servern lagrar lösenord. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?
Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”SRP: Secure Remote Password Protocol”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?
Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Det grundläggande problemet med lösenordsautentisering
- SRP: Secure Remote Password Protocol
- PAKE-protokoll och deras egenskaper
- Lösenordsfri autentisering: WebAuthn och FIDO2