17. november 2005 - 13:36Der er
16 kommentarer og 1 løsning
Login kryptering
Hej!
Jeg går med tankerne omkring at lave noget login på en windows form, som skal tjekke op mod en database, om brugeren har rettigheder til at komme ind, og om han har indtastet det korrekte password.
Hvordan ville I anbefalde det skulle laves? Hvis nu tager en ting af gangen.
Hash: Man kunne hash'e brugernes password, så når de indtaster deres password, bliver hash'en hentet ud fra databasen, og sammenlignet med den de lige har indtastet(som jeg hasher inden sammenligningen). Problem ved dette: Hashen bliver sendt over netværket. Kan opsnappes, men er "ubrugelig". Kan ikke dekrypteres til brugerens password, og hvis den indtastes i formen, vil den blive hash'et igen, og så giver det en forkert hash.
Symmetrisk: 1. Brugerens password bliver krypteret med et nøgle-par, og lagt ind på databasen. Når brugeren logger ind, bliver hans password hentet fra databasen, det de-krypteres, og sammenlignes med det indtastet. Problem ved dette: Det brugte nøgle-par, skal hardcodes ind i formen, ikke særlig effektivt, hvis man skal ændre nøglerne.
2. Brugerens password bruges som den ene nøgle til at kryptere f.eks hans login navn, eller en anden standard tekst, den anden nøgle(IV) ligger fast i formen. Så når han logger ind, bliver det krypteret udlæst fra databasen, og decrypteret med hans indtastet password. Hvis der kommer noget ud, må det jo være den rigtige kode han har indtastet. Problem ved dette: Den ene nøgle(IV) ligger stadigvæk hardcodet i formen.
3. Nøgle-parret bliver lagt i en XML fil, som bliver krypteret asymmetrisk, hvor brugerens password bliver brugt som nøgle til dette. I databasen vil der så igen ligge noget standard tekst, som er krypteret med de nøgler der står i XML filen. Når bruger logger ind, vil hans password åbne XML filen, og det krypteret vil blive hentet fra databasen. Det decrypteres så med nøgle parret, og hvis der kommer tekst ud, vil det betyde at han er logget korrekt ind. Problem ved dette: XML filen kan hapses af andre, og de kan sidde og prøve på at komme ind i den, ved hjælp af bruteforce. Når de engang er færdig, må man så håbe at brugeren har skiftet nøgle par i den symmetriske kryptering.
Asymmetrisk: Her har jeg faktisk ikke rigtig nogen opstilling til hvordan det kunne gøres, da alle de muligheder jeg lige kan komme på, virker alt for kringlet.
Det jeg ønsker, er at finde den god måde, som kan beskytte folks login oplysninger til systemet, så de ikke skal være bange for noget. Der må gerne tænkes kreativt. I starten skal dette kun bruges internt i en virksomhed, men løsning skulle gerne komme til at fungere over internettet. Så ingen løsning er for sikker.
Kunne du kort, på dansk, forklare hvordan det ville virke? Og hvordan man skulle få det inplementeret i sin løsning? Bare overordnet, så må jeg selv få styr på detaljerne :)
serveren genererer noget random data det sendes til client client krypterer det med hash af password det sendes til server server sammenligner med data krypteret med det hash af password som den har
Jeg vil se om jeg kort kan beskrive min "kontekst" :)
Jeg skal lave et system hvor folk logger ind, og ud fra deres login bestemmes deres rettigheder i applikationen. Hvis det er master(admin) brugere, skal de kunne tilføje andre brugere, og lave om forskellige indstillinger. Alle indstillinger, og registeringer skal ske til en database.
Ville det bedste så være at lave en webservice som mit "datalag", som behandler alle forespørgelser, og tester om brugeren er korrekt logget ind. Hvis jeg ønsker at udvide min sikkerhed, så alt data mellem klienten, og servicen er krypteret, er det vel klart den bedste løsning, at have en webservice til at håndtere kommunikationen? Så man kunne indbygge noget handshake mellem klienten og servicen, så de f.eks kunne oprette et sæt symmetriske nøgler, til at køre kommunikationen mellem dem?
Jeg vil undersøge tingene nærmere. Du har klart fået mig til at tænke lidt over tingene. Kunne du måske finde noget som gør brug af WSS, som man kunne se? Det er altid lidt nemmere at forstå hele konceptet når man har noget at kigge efter.
Har været lidt inde på msdn, men synes det er meget "flyvest" det de skriver, så kan ikke rigtig se det som en helhed...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.