WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   sha1+salt (https://www.wn.se/forum/showthread.php?t=27900)

wizzo 2008-03-13 00:02

Brazzan hur mycket tar du i betalt för att pimpa upp ett färdigt md5 system skrivet i OOP och gör om till sha1+salt+(din-magic-touch)?
Det här tar aldeles för mycket tid från det jag egentligen vill koncentrera mig på <_<

SimonP 2008-03-13 00:02

Citat:

Originally posted by Brazzan@Mar 12 2008, 22:33
Lyckas man dumpa din databas och får tag i hash+salt så spelar saltet inte någon roll längre och man är tillbaka där man började... ett hashat lösenord.

Man kan då helt enkelt köra hashet mot rainbow tables...

Nej, det stämmer inte, saltet är i första hand till för att försvåra dictionary och stoppa rainbow attacker.
Det dynamiska saltet kan sparas i samma databas.

SimonP 2008-03-13 00:05

Citat:

Originally posted by wizzo@Mar 12 2008, 21:59
Så åter till min huvudfråga räcker det med att jag implementerar sha1+salt?

Ja, det räcker väldigt långt, se till att varje användare har en egen salt bara. Lägg gärna till en lösenordspolicy så att användarna inte kan välja för enkla lösenord.

Kristoffer G 2008-03-13 00:34

Håller inte med. Man bör spara det separat. Det är lite som att ge bort en bit av kakan tycker jag... det ska dock nämnas att man måste veta hur man fogar ihop hash+salt, men varför chansa...

Det är ju inte jätte avancerat att separera och lagra saltet på annan plats... även om det kanske bara ger en liten förbättring ur ett säkerhetsperspektiv. Det tar inte så lång tid.

Men, alla gör vi olika :) Jag väljer att lägga 10min extra på att lagra det separat.

nosnaj 2008-03-13 08:42

Brazzan: Verkar som du inte vet vad saltet har för syfte eftersom du tycker det ska lagras separat och syftet med saltet skulle försvinna när någon kommer över dessa.

Kristoffer G 2008-03-13 10:21

.... Ett salt används för att utöka säkerheten på ett lagrat lösenord. Främst är det till för att stoppa attacker där man testar lösenordet mot en lista med kända lösenord... rainbow-tables.

Om man har slumpade salt för varje lösenord krävs det att man bygger upp nya listor för varje salt, vilket tar väldigt väldigt lång tid. Det är det som stoppar en en lista med kanske 10 000 lösenord att läcka ut i klartext... alltså, man måste bygga upp listor för varje användare och salt som finns, 10 000ggr.... vilket inte är realistiskt.

Men det kanske bara krävs att man knäcker ett lösenord, administratörens och på så sätt får tillgång till en adminpanel, webhotellet eller andra ställen där han har samma lösen.

Återigen.. varför chansa när det inte är så svårt att lägga det separat.

yoggi2k5 2008-03-13 23:15

Håller med SimonP om att det är onödigt att spara saltet på annan plats, det är ju som sagt lösenordspolicyn som är avgörande!

Anledningen till att man inte ska göra det, förutom att det är onödigt, är för att det ger dålig struktur och bygger för mycket onödig komplexitet i applikationen.

grazzy 2008-03-13 23:20

Brazzan, egentligen räcker det väl med att ha en rätt simpel salt (tex användarens user-id) för att uppnå det du pratar om. Dvs att man måste generera nya rainbow-tables för varje user.

Det känns som att det är en rätt markant ökning i säkerhet som räcker för de flesta?

Daniel.st 2008-03-14 09:08

Själv har jag löst det genom att saltet är ett slumpmässigt antal bytes som läggs på och som inte behöver sparas separat. Antalet salt-bytes kan räknas fram "baklänges" vid verifieringen om lösenordet som ska testas bara är av rätt längd.

Vill inte posta min kod här men något liknande finns här (.NET).

Kristoffer G 2008-03-14 11:38

Citat:

Originally posted by yoggi2k5@Mar 14 2008, 00:15
Håller med SimonP om att det är onödigt att spara saltet på annan plats, det är ju som sagt lösenordspolicyn som är avgörande
Anledningen till att man inte ska göra det, förutom att det är onödigt, är för att det ger dålig struktur och bygger för mycket onödig komplexitet i applikationen.

Det beror på hur "galen" man är när det gäller säkerhet. Det är inte komplicerat att separera och det behöver inte bli dålig struktur.

Citat:

Brazzan, egentligen räcker det väl med att ha en rätt simpel salt (tex användarens user-id) för att uppnå det du pratar om. Dvs att man måste generera nya rainbow-tables för varje user.

Det känns som att det är en rätt markant ökning i säkerhet som räcker för de flesta?

Ja alltså för att få bort problemet med att en hackare testar alla lösenord mot r-tables löses ju med ett slumpat salt för varje användare.. oavsett hur okomplicerat saltet är.Men det jag menade var att det kanske bara behövs genereras en ny table för admin lösenordet och på så sätt lyckas ställa till saker och ting. Speciellt med tanke på folks förmåga att använda samma lösenord till flera saker.... Sen kanske man får se mail-adresser kopplade till användarnamn... då kan man ju exempelvis börja leta efter @microsoft.com, @apple.com osv osv och liksom sikta sig in på dem och bygga upp r-tables baserade på deras salt.


Att spara saltet tillsammans med lösenordet är som du säger en lösning som räcker långt, men jag förstår fortfarande inte varför man ens ska chansa när det inte är svårt att fixa en separat lösning. Det är det som jag blir lite irriterad över... även om det bara ger en 1% ökning av säkerhet, så är det ju positivt med tanke på att det tar 10min att separera saltet från lösenordet.

Angående lösenordspolicy så nämnde jag det tidigare också. Det blir ju mycket bättre om man lyckas införa en policy som sätter minimun kvar på lösenordet.

Ni får tycka jag är paranoid eller onödigt komplicerad... men jag väljer att göra vad jag kan för att minimera chansen.... vi lever ju i en tid där det finns ett ökande hot från personer vars syfte är att förstöra för andra, bara för att dem kan.


Alla tider är GMT +2. Klockan är nu 07:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson