SRP

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 30. december 2021; checks kræver 2 redigeringer .

Secure Remote Password Protocol ( SRPP ) er en adgangskodegodkendelsesprotokol , der er modstandsdygtig over for aflytning og MITM- angreb og ikke kræver en betroet tredjepart. SRP indeholder nogle elementer fra andre nøgleudvekslings- og autentificeringsprotokoller, mens der foretages mindre forbedringer og justeringer. Protokollen bevarer robustheden og effektiviteten af ​​de krypterede nøgleudvekslingsklasseprotokoller , mens den fjerner nogle af deres mangler.

Oversigt

SRP-protokollen giver brugeren mulighed for at identificere sig selv på serveren uden at sende sin adgangskode, det vil sige at bekræfte det faktum, at han kender sin adgangskode, og kun dette faktum. Det har en række nyttige kvaliteter:

SRP implementerer effektivt Zero-Knowledge Proof mellem en bruger og en server, der gemmer oplysninger om deres adgangskode. Når en angriber lytter ad gangen, kan han kun kontrollere én version af adgangskoden, begyndende med version 6 af denne protokol. Denne protokol har mange revisioner, i øjeblikket er den seneste revision 6a.

Som et resultat af driften af ​​denne protokol modtager begge parter en lang hemmelig nøgle, som efter modtagelse kontrolleres for overensstemmelse mellem parterne. I tilfælde, hvor datakryptering er påkrævet ud over godkendelse, giver SRP et mere sikkert middel end SSH og hurtigere end Diffie-Hellman til at opnå dette. SRP version 3 er beskrevet i RFC 2945 . SRP version 6 bruges også til autentificering i SSL / TLS og andre standarder som EAP og SAML og er i øjeblikket ved at blive standardiseret af IEEE P1363 og ISO/IEC 11770-4.

Sådan virker det

Lad os introducere den notation, der er nødvendig for ræsonnementet:

Begreberne adgangskode og verifikator svarer til de generelt accepterede begreber hemmelige og offentlige nøgler, med to forbehold: adgangskoden er som regel mindre end den hemmelige nøgle , da brugeren husker den, og hans hukommelse er lille; til gengæld ligner verifikatoren matematisk den offentlige nøgle, da den let opnås fra adgangskoden, og den omvendte operation er beregningsmæssigt uafgørlig. Men i stedet for at være offentligt kendt, holdes verifikatoren hemmelig af serveren. En godkendelsesmetode, der kræver, at serveren gemmer en verifikator, men ikke en adgangskode, kaldes verifikatorbaseret.

A , B beregnes ud fra startparametrene (se nedenfor). Serveren gemmer adgangskoder ved hjælp af følgende formel:

Serveren gemmer derefter parret ( I , s , v ) i sin database . Godkendelse foregår på følgende måde:

  1. Klient -> Server: I , A = g a (identificeret, a  er vilkårlig)
  2. Server -> Klient: s , B = kv + g b (send lagrede s , vilkårlig b )

På begge sider: u = H ( A , B )

På klientsiden:

  1. x = H ( s , p ) (bruger indtaster adgangskode)
  2. S = ( B  - kg x ) (a + ux) (sessionsnøgle er beregnet)
  3. K = H ( S ) (K er den ønskede krypteringsnøgle)

På serversiden:

  1. S = ( Av u ) b (beregning af sessionsnøgle)
  2. K = H ( S ) ( K  er den ønskede krypteringsnøgle)

Begge parter har nu en fælles hemmelig nøgle K. For at fuldføre godkendelsen skal de bekræfte, at deres nøgler matcher. En af de mulige måder:

Klient -> Server: M = H ( H ( N ) xor H ( g ), H ( I ), s , A , B , K ) og validering på serversiden

Server -> Klient: H ( A , M , K ) og validering på klientsiden

Sammenligning med nogle typer algoritmer

Vi vil tale om simple typer af autentificeringsalgoritmer og deres sårbarheder i sammenligning med denne, som vil vise fordelene ved SRP.

Den enkleste autentificeringsmetode er at sende en ukrypteret adgangskode fra klienten til serveren, hvorefter serveren sammenligner den modtagne adgangskode eller dens hash med en databasepost. Den åbenlyse ulempe er sårbarheden over for aflytning.

Ved at ændre den første algoritme får vi godkendelse med en anmodning og bekræftelse (challenge-response), hvor udvekslingen foregår sådan:

derefter beregner klienten en hash af tre værdier: r, c, adgangskode og sender den tilbage. Denne metode er sårbar over for brute force, da en angriber, der har r, c, hash, kan gætte klientens adgangskode.

Ved at analysere de to første algoritmer kan vi komme til den tredje, som også er beskyttet mod ordbogssøgning. Familien af ​​sådanne protokoller kaldes Encrypted Key Exchange (EKE). Essensen af ​​denne algoritme er, at begge parter genererer deres offentlige nøgler til asymmetrisk kryptering og udveksler dem ved hjælp af en symmetrisk algoritme , ved at bruge brugerens adgangskode, som begge er kendt som en nøgle. Denne familie af protokoller er meget udbredt, med forskellige implementerede modifikationer, der tilføjer nogle egenskaber:

  1. Efter modtagelse af adgangskoden kan angriberen ikke dekryptere den dataudveksling, der allerede har fundet sted, eller ved modtagelse af sessionsnøglen til enhver session kan han ikke finde ud af brugerens adgangskode (selv ved brute force ), men serveren gemmer stadig en analog af kodeordets klare tekst, som kan stjæles for at få det faktiske kodeord (f.eks. DH-EKE, SPEKE).
  2. Når man henter oplysninger fra serverdatabasen, kan angriberen ikke få adgangskoden fra dem, men den tidligere egenskab går tabt (f.eks. A-EKE).
  3. Ændringen har egenskaberne 1 og 2 på grund af indførelsen af ​​en ekstra runde nøgleudveksling, men lider under en stærk præstationsstraf på grund af betydelige yderligere beregninger.

For at undgå alle disse sårbarheder og få en algoritme med en god hastighed, blev AKE ( Asymmetric key exchange ) konceptet udviklet , som adskiller sig fra de tidligere primært ved, at der ikke er nogen kryptering under dataoverførsel, hvilket sparer systemet fra unødvendigt computerkraft og mulige sårbarheder ved visse krypteringsalgoritmer. En implementering af AKE er SRP.

Se også

Links