Calzone, nu forholder virkeligheden sig sådan at folk glemmer deres passwords. Jævnligt.
Og det er jo ikke fordi jeg ikke kan huske passwordet, det er fordi jeg ikke kan huske hvilken et af de 2000 passwords jeg (og man) uvægerligt skal holde styr på, der er brugt på GratisDNS.
I det absolut mindste burde systemet advare mig med 200 pkt store flammende bogstaver at mit næste fejl-attempt vil låse mig af for muligheden for at styre DNS på alle mine domæner i de næste 2 timer.
DNS kontrol kan være utroligt tidskritisk og business critical, og jeg bliver mildest talt pisse hamrende rasende når I finder på at låse mig ud af systemet i flere timer, uden nogen som helst god grund til det.
Mht plaintekst, så antager dit svar at jeres servere aldrig kunne blive kompromitteret, at jeres personale er og altid vil være 100% ærlige og fejlfri. Historien vil vise at det er en meget farlig og forkert antagelse.
I kan gå ind og se hvad for nogle passwords folk bruger, og som I helt sikkert godt ved, så plejer folk at genbruge passwords til mange sites.
Og værre: Jeres server kunne blive hacket, og username/password kombinationerne dumpet på nettet - det er sker så vanvittigt mange gange før, og det er derfor man gemmer i hashes, ikke på grund af loginnets security.
Og du har ikke forstået hashes korrekt. Hele ideen med en hash er at du ikke kan finde en anden rigtig løsning med målbar sandsynlighed.
Og dine regnestykker er aldeles forkerte - du virker slet ikke til at have forstået det grundlæggende koncept af hashes, eller kombinatorik.
Hashing algoritmer designet så sandsynligheden for kollisioner er mere eller mindre statistisk umulige, da du har mange forskellige hash værdier, og du har ingen måde at regne ud hvordan du producerer et givent output ud fra et input.
For en SHA1 hash, som er 160 bit - som ovenikøbet er en gammel, dårlig hashing algoritme - er sandsynligheden for en tilfældig kollision: 1/(2^160) = 1/1461501637330902918203684832716283019655932542976. Det er 6.84*10^-49, hvilket essentielt er nul.
SHA1 er så en af de hashing funktioner der har et kendt attack.
Det bedste attack på SHA1 kræver 2^52 = 4503599627370496 forsøg.
Dvs at med denne gamle, alment udbredte og allerede kompromitterede hashing funktion, ville et 1 sekunds ban delay for hvert 3. forsøg, og INGEN andre forsinkelser (dvs vi ignorerer network delays, page reloads, jeres servers svartid osv) på jeres system kræve 47.6 millioner år at brute force. Og det er MED et velkendt attack. Hvis du vel at mærke er bekymret for hashing kollisioner, som var det du sagde som argument for at gemme i plaintekst.
Hvis du vælger f.eks. SHA2-512, så vil du skulle bruge 1x10^136 gange universets alder (stadig med 1 sekunds delay for hvert 3. forsøg) for at være sikker på at finde en streng der matcher mit hashede password.
Med andre ord: Der er intet usikkert ved at store hashede passwords og compare folks hashede login passwords med disse hashes. Det er derfor alle gør det.
Omvendt er det usikkert at gemme folks passwords i plaintekst, fordi servere altid har en risiko for at blive kompromitteret, uanset hvor afsindigt vild en sysadmin der kører den. Hvis jeres password liste leaker på nettet kan folk logge direkte ind på systemet. Hvis en liste af password hashes og usernames leaker, så kan folk bruge det hash til at prøve at regne passwordet ud, ud fra hashet, hvilket ville tage 14.2 år med en maskine der kunne prøve 10 millioner hashes i sekundet.
Arbejder du for GratisDNS?