Fråga:
Är det möjligt att säkert lagra lösenord med reversibel kryptering?
Steve
2011-08-10 06:26:42 UTC
view on stackexchange narkive permalink

Alla säger att du måste använda en icke-reversibel hash när du lagrar lösenord så att även om din databas läcks, är lösenorden i sig fortfarande säkra. Jag undrar om det finns någonstans att använda reversibel kryptering för att lagra lösenord.

Åtminstone skulle du behöva kräva att varje utnyttjande som läcker databasen (SQL-injektion, serverskalåtkomst, etc. ) läcker inte krypteringsnyckeln och att det inte rimligen skulle vara möjligt att räkna ut krypteringsnyckeln med ett känt lösenord om du har den läckta databasen.

Jag överväger inte på allvar att göra detta eftersom det verkar som om det är tekniskt möjligt att det skulle vara svårt att göra rätt, men det verkar som ett intressant problem.

En relaterad fråga ställdes nyligen på vår systersida om kryptografi: [Hur ska jag lagra lösenord som behöver vara tillgängliga i klartext?] (Http://crypto.stackexchange.com/q/345/58)
Fyra svar:
gowenfawr
2011-08-10 08:21:22 UTC
view on stackexchange narkive permalink

Vändbar kryptering används inte ofta för lösenord eftersom de specifika kraven och parametrarna för lösenordsverifiering är oförenliga med svagheten i reversibel kryptering.

Den primära svagheten i reversibel kryptering är enkel: om nyckeln äventyras , de krypterade uppgifterna äventyras, period.

Lösenord används hela tiden, närhelst användare loggar in. Därför måste autentiseringsprocessen kunna få tillgång till användarnas referenser hela tiden, på ett automatiserat sätt , utan hindrande kontroller. Det betyder att nyckeln för reversibel kryptering måste finnas på hårddisken eller i minnet hela tiden. Om det programmet, disken eller minnet på något sätt äventyras, komprometteras alla dessa reversibelt krypterade lösenord på ett slag.

Tänk däremot på användningen av icke-reversibla haschar. Om programmet, disken eller minnet äventyras får angriparen de "låsta" hasharna och det finns ingen nyckel. De kan sedan attackera ytterligare - känd ciphertext-attack, brute force, etc - men de har inte "vunnit" ännu.

Vi använder alltid reversibel (låt mig säga nycklad) kryptering - skivor, filer , e-postbilagor. Det som alla har gemensamt är dock att de uppmuntrar (om inte kräver) mänskligt ingripande för att ge nyckeln.

Jag är inte säker på varför du frågar om det här, men hur är det med en hybridmodell? Tänk på att det kan vara rimligt att lagra både reversibel och icke-reversibel krypteringstext för användarlösenord. När lösenord skapas, lagra två krypterade versioner: En skapad med envägs hashing-funktion och den andra skapad med en asymmetrisk krypteringsalgoritm ("public key cryptography"). Alla automatiserade autentiseringsprocesser använder icke-reversibla hashes för autentiseringsändamål. Behåll halvan "allmän nyckel" i paret för att generera de krypterade lösenorden och lagra "privat nyckel" hälften av paret offline . Om lösenordets klartext behövs, ta det krypterade lösenordet offline och dekryptera det med lämplig nyckel. Så länge dekrypteringsnyckeln inte är tillgänglig för autentiseringssystemet kan en angripare inte dra nytta av det faktum att du använde "reversibel" kryptering för att lagra lösenord i klartext.

Det hjälper bara om du behöver för att få åtkomst till klartextlösenord är naturligtvis inte ett automatiserat behov. Men det verkar som en snygg idé för mig.

this.josh
2011-08-10 13:39:21 UTC
view on stackexchange narkive permalink

Är det möjligt att lagra lösenord säkert med reversibel kryptering?

Ja, men det är mycket svårare och kräver mycket större ansträngning och kostnad. Keying är svårt att göra bra.

För att stödja den reversibla krypteringen (inte nödvändigtvis symmetrisk som @goenfawr antecknar) behöver du minst en nyckel (två för offentlig nyckelkryptering). Du måste skapa nyckeln, förvara den på ett säkert sätt, skydda den mot korruption eller förstörelse, hämta den för användning, skydda den medan den används och byta ut den regelbundet.

En viktig del av problemet är hur man skyddar nyckeln medan den inte används. Om du krypterar nyckeln behöver du en nyckel för att dekryptera den. I vilket fall är du tillbaka där du började. Andra skyddsmetoder använder speciell hårdvara eller säkra operativsystem eller till och med anpassade datorer med separat minne och processorer för säkerhetsparametrar. Alla dessa lösningar kräver ytterligare utbildning och supportkostnader.

Jämför dessa lösningar med att använda en detaljhandelsdator, detaljhandelssystem och en hash-funktion.

Rory McCune
2011-08-10 21:41:22 UTC
view on stackexchange narkive permalink

En sak att lägga till befintliga svar är att det är möjligt att använda symmetrisk (reversibel) kryptering för att lagra hemligheter (inklusive lösenord) men det är lite mer komplicerat / dyrt.

Ett bra exempel på detta är ATM / Cash Machine-nätverk, som traditionellt använde symmetrisk nyckelhantering (även om de flyttar bort det till en PKI-baserad lösning).

Nyckeln (ingen ordlek är avsedd) för detta är att krypteringsnycklarna lagras på en betrodd plats, i det här fallet måste en hårdvarusäkerhetsmodul (HSM) och strikta procedurer för nyckelladdning och hantering behövas för att säkerställa att nycklarna förblir hemliga.

Nyckelpunkten här, som du nämner, är att det måste finnas en delegation av förtroende någonstans på vägen. Oavsett om det är delegering till en databas eller till en människa måste * något * i kedjan vara implicit och till slut lita på 100%, annars är lösningen inte säker.
säker som med vilken lösning som helst krävs en nivå av förtroende, även om jag skulle säga att ingenting kan lita på 100%, det är allt relativt.
Och det är kärnan i säkerhetsarbetet. Vissa komponenter måste vara 100% betrodda, men det är omöjligt att lita på någonting 100%. Därför är säkerhetspersonalens uppgift att förstå (och kommunicera!) Hur mycket man kan lita på olika komponenter i kedjan och identifiera hur man får värdena tillräckligt nära varandra. Att definiera "tillräckligt nära" är den svåra delen.
nik3daz
2011-08-10 06:57:13 UTC
view on stackexchange narkive permalink

Ta en titt på wiki-sidan för Ciphers. Även om det finns många säkra chiffar, finns det alltid en risk att läcka nyckeln. Att använda en enkelriktad hash undviker denna risk genom att inte ha en nyckel.

En grundsats med säkerhetsteknik är att minimera den information som kan erhållas med tanke på att systemet äventyras.

Krypteringen gör ingen skillnad när nyckeln äventyras.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...