TechStart forside
Nyheder indenfor IT og teknologi
Annullér [x]




Log på  Bliv medlem   Om TechStart
Fredag, 19. april, 2024
Forside  |  Nyheder  |  Hardware  |  Software  |  Spil  |  Open source  |  Markedsplads  |  IT jobopslag  |  Frikvarter  |  Forslag & fejl  |  Generel information



Nyeste forumindlæg | Nyeste indlæg i mine emner


#0
stig.voss

03/08 - 2015, 15:22

Sikkerhedsspørgsmål




Lige et nysgerrig spørgsmål til Jakob.

Hvordan gemmes kodeord og hvordan er de sikret i tilfælde af et sikkerhedsbrud? Jeg går ud fra de er hashed, men hvordan?




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

Dijkstra Faglig



#1

jakobdam

03/08 - 2015, 15:43

Jeg kører 3 typer hashes på kodeord. En sætning er brugt til seed. De typer hashes er viklet ind i hinanden i en sekvens som kun jeg kender.

Et simplificeret eksempel på denne fremgang - her med to typer:

$password = md5(sha1(md5(md5(sha1($input_password)))));



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#2

jakobdam

03/08 - 2015, 15:48

En lille uddybning:

Denne fremgangsmåde er valgt, så selve kodeordets repræsentation i databasen, aldrig kan sammenlignes med selvsamme kodeord fra et andet websites database.

Hackes og stjæles hele databasen herfra, får folk ganske vist ukrypterede e-mailadresser og brugernavne, men kodeordene kan de ikke bruge til noget. Det er umuligt at brute force en dekryptering uden at kende både typerne, sekvensen og encryption strengen (der iøvrigt er en hel sætning som igen - kun jeg kender).

Af selvsamme grund kan jeg aldrig gensende jeres kodeord til jer. Jeg kan blot tilbyde at nulstille dem til noget andet.



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#3

stig.voss

03/08 - 2015, 16:05

Du har overvejet en mere standard process? F.eks. PBKDF2 i PHP, eller noget som bcrypt eller scrypt, alle med en random per user salt. For mig lyder det til at du har en sekvens af hashes som kan udlæses fra koden samt en salt som er ens for alle brugere i systemet, samt står i koden.

Dette vil give en ulempe at hvis databasen er komprimeret af udefrakommende, så lyder det for det første til at hvis flere har samme kode,  så vil hashen være den samme for alle i systemet med den samme kode.

Samtidig, så kan det diskuteres om det er en god idé med iterationer af algoritmen. Efter en samtale med kasperd, så kan han se både gode og dårlige ting ved interations. Et højt niveau af iterations vil sætte pres på serveren, men samtidig sænke bruteforce hastigheden. Hvis man laver en penelty på for mange forkerte indtastninger af kodeordet, så vil det formindske muligheden for DDoS hvis antallet af interationer er høj.




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

Dijkstra Enig



#4

jakobdam

03/08 - 2015, 18:21

Ah random salt - den havde jeg ikke tænkt over... kan være det kommer. :)

DDoS er ikke muligt, eftersom jeg lukker brugeren ud efter 5 forkerte forsøg i streg.

NB.: Jeg har flyttet emnet her ud af "Generel information" til "Forslag & fejl".

Det er ikke meningen at andre end mig skal kunne poste i Generel information ^_^ - havde glemt at kode en betingelse der... bøf.



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#5

stig.voss

03/08 - 2015, 20:42

Jeg vil dog stadig anbefale at man bruger en algoritme som PBKDF2 eller bcrypt til password hashing.




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#6

stig.voss

03/08 - 2015, 22:38

Addendum til #5: Ideen med at have sikkerhed baseret på "kun vi kender til opbygningen" er ikke specielt god. Det går vist under "security by obscurity" og kan ikke anbefales. Så hellere bruge en metode som er kendt og bevist stærk. Samtidig, så har den kloge kasperd fortalt mig at man bør holde sig til in-framework implementeringer af sådanne algoritmer grundet at der er større chance for at de er testet, valideret og reviewed.




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

Dijkstra Enig



#7

auro

03/08 - 2015, 23:14

Hej Jakob :-)

Det er security by obscurity. Det er dumt. :-) Problemet med hvordan man opbevarer passwords sikkert er blevet løst. MD5 og SHA1 er ikke sikre nok til at opbevare passwords. 

Brug standardfunktionerne i PHP.

password_hash(password, PASSWORD_DEFAULT) // tekststreng, op til 255 karakterer

password_verify(password_hash) // True / False

 

Så får du dem både saltet, hashed & du sikrer dig mod timing attacks.

Læs mere her:

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/function.password-verify.php

http://php.net/manual/en/function.password-needs-rehash.php

 

PS:

Du skal ikke tage det for mere end det er - jeg forsøger bare at hjælpe så du ikke lige pludslig står med hovedet i postkassen :-)




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#8

auro

03/08 - 2015, 23:16

Jeg kan ikke lige finde ud af at redigere mit indlæg, men en lille tilføjelse:

Husk at bruge needs_rehash når brugeren logger ind, og du kan også sætte "cost" parameteren på password_hash hvis du vil have at den skal være endnu mere sikker. Men default er ganske godt. (10)




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#9

root

04/08 - 2015, 10:28

Bemærk dog at ovenstående password_* funktioner kræver PHP 5.5 og at TechStart kører på 5.4.43 (i følge response headeren). Man kan dog opnå det samme med brug af crypt  http://php.net/manual/en/function.crypt.php man skal bare være opmærksom på at man med crypt() selv skal generere salten, og det er vigtigt at man har det rigtige prefix på salten så man ikke ender med at bruge DES, det er dog alt sammen beskrevet på http://php.net/manual/en/function.crypt.php. Ved sammenligning af hashes bør man heller ikke bruge almindelige sammenligningsoperatorer, men derimod funktioner som password_verify eller hash_equals() (http://php.net/manual/en/function.hash-equals.php), det er dog en PHP 5.6 funktion, men der er et eksempel øverst i kommentarene på hvordan det kan gøres i ældre versioner.



Linux. X230.



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#10

auro

04/08 - 2015, 10:35

Det er true.

Der er også en userland implementation som fungerer på præcis samme måde: https://github.com/ircmaxell/password_compat

Så kan Jakob spare et par arbejdsgange og der er mange øjne på det library.




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#11

root

04/08 - 2015, 10:46

Ja, det er nok en bedre ide smile.



Linux. X230.



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#12

DrHouseDK

24/08 - 2015, 13:45

DDoS er ikke muligt, eftersom jeg lukker brugeren ud efter 5 forkerte forsøg i streg.

DDoS <> Brute forcing.




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

Dijkstra Enig
Mnc Enig



#13

stig.voss

24/08 - 2015, 13:56

#12

Jeg tror det var en uheldig formulering som svar på mit indlæg. DDoS er ikke en risiko baseret på et højt antal interationer i forhold til hashing af kodeord. Altså, grundet begrænset antal forsøg på login, så vil man ikke kunne bruge login mekanismen til at udføre DDoS på siden via kraftig load på hashing algoritmen.




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#14

El_Kebabmeister

24/08 - 2015, 20:09

Hej Jakob,

Jeg har kigget lidt på sagerne, og ved at kigge på min cookie her på siden, har jeg fundet frem til din "hemmelige" hashing.

Plaintext: password
Cookie: 42f60d9092e6503bc3ebb65ed31bbe47234uudoyVqaKPNoNeV

Ved MD5 som udgangspunkt passer det med at userid er lige efter.
Hash: 42f60d9092e6503bc3ebb65ed31bbe47
UserId: El_Kebabmeister
Random: uudoyVqaKPNoNeV (dno hvad det bruges til)

Algoritme som passer: md5(md5(md5(sha1(md5(kodeord))))) = Hash

 

Du burde måske genoverveje din kode og hvorfor fanden er ens kodeord en del af cookien?

Sikkerhedsexpert bliver du vidst aldrig, eller jo, måske hos CSC. :-)




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

mrtb Faglig
jakobdam Faglig
Tingen Faglig
Mnc Faglig



#15

jakobdam

24/08 - 2015, 20:18

#14 >

Jeg har sendt dig en besked - håber du har lidt tid til at besvare mail'en. :)



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#16

El_Kebabmeister

24/08 - 2015, 20:26

  #15, besvaret.

Også vil jeg nok anbefale dig at bruge HTTPS på alle siderne, især login siden.

Du kan få gratis SSL hos StartCom eller Cloudflare :)




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

jakobdam Faglig



#17

jakobdam

24/08 - 2015, 20:30

NB - TechStart skulle gerne køre PHP 5.6 nu her. Dvs. muligheder fra 5.5 og 5.6 kan jeg bruge.

Var egentlig ved at skrive en PB til dig, men tænker at vi også bare ka ta den her i åbent forum:

 

Tak for svar.

På PHP.NET nævnes:

Caution

The PBKDF2 method can be used for hashing passwords for storage. However, it should be noted that password_hash() or crypt()with CRYPT_BLOWFISH are better suited for password storage.

Any thoughts?

Det er for mig ét fedt hvad jeg vælger - de ser ud som om de er identiske at opkode mht. kompleksitet/kodestruktur, blot forskellige.

 

Til andre - jeg begyndte for lidt tid siden at omkode loginsystemet til sessionbaseret fremfor cookie storage - og det er til hashing herfor at jeg spugte El_Kebabmeister.

Eller ville en bedre anbefaling være at bruge eks. MyOpenID - og hvis ja; hvad sker der hvis MyOpenID kompromitteres? Er risikoen for at nogen vil hacke for at ramme bredt, ikke større end specifikt?



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#18

Mnc

25/08 - 2015, 10:55

Jo større systemet er, og jo bredere folk vil ramme ved at bryde det, jo større er incitamentet så også til at skaberne holder det sikkert.

Jeg tror at login systemer som eksempelvis Facebook og Google som bruges så mange steder... De er sikret så meget, af eksperter på området, for de har ganske enkelt ikke råd til at fejle.




Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#19

jakobdam

25/08 - 2015, 11:01

#18 >

God pointe.

Der hvor jeg stejler ved netop især Facebook og Google, er at jeg helst ikke vil pådutte nogen her på portalen, at benytte "real life" navne og kontoer som er mere direkte tilknyttet hvem de er.

Ikke at det skal lyde som "dette er en portal for lyssky foretagender" - men jeg kan bare godt følge, hvis man ønsker disse ting separeret.

At skulle oprette en ny Facebook/Google konto kun for at kunne bruge den til at logge på med her, er omvendt også meget at kræve af folk.

Så er der MyOpenID; som lidt har det samme problem som Facebook og Google; der er for mange elementer jeg ikke selv kan styre. Eks. simple ting som sprog - ved fejlbeskeder, glemt kodeord osv... hvis jeg ønsker noget omformuleret, gjort på en anden måde osv...

Omvendt har jeg ikke meget hands-on erfaring med disse løsninger, så jeg tager måske fejl der?



Med venlig hilsen
Jakob Dam | Administrator



Vis karma-afgivelser
KARMA
Der er ikke afgivet karma til dette indlæg.



#20

stig.voss

25/08 - 2015, 11:36

#19

Bare fordi man bruger Facebook/Google til authentication, så behøver man vel ikke have sit navn bundet på siden. Det eneste du håndtere er vel en authentication token af en art. Hvad du viser på siden, det må du om. Jeg vil også sige at man kan tilbyde MyOpenID, Facebook og Google authentication, men jeg mener stadig folk bør have en mulighed for bare at have en konto lokalt på siden. Den lokale bruger skal bare være sikret tilstrækkeligt og på en forsvarlig måde.




Vis karma-afgivelser
KARMA
Brugernavn: Rating:

jakobdam Faglig



^ Gå til top 1 2 3   Næste »  



Kun registrerede medlemmer kan skrive indlæg.



Det er gratis at blive medlem. Klik her
 






 
Indsend nyhed »  
Seneste kommentarer i:
Hvad er dette?


Søges: Gammelt 486 bundkort til projekt.


Skærm / Skærmelement til Dell Vostro 3550 15.6"


Pas på: Dansk firma snyder Netflix-kunder


Min seneste besættelse...


VR-ready computer - er I klar? :)


AVG pinger ud af Techstart (hacked?)


Jeg er ham...


Apple Pay og Danmark?


TechStart har givet sit bud på årets bedste smartphone


10 dage siden sidste nyhed


Skype sound recorder


Gamle computere.


Engelsk pund nede med 10% - billigt elektronik :)


Standalone mikrofon.


Lexar introducerer 3 nye ultrakompa


SanDisk lancerer microSD-kort med 1


Pokémon Go spillere kan langt om læ


Alternativet, S og SF ønsker pant p


LG lancerer ny 31,5 tommer skærm me


Alienware udgiver tynd og letvægts


Nintendo udgiver nye trådløse retro


Sony lancerer PlayStation Classic


8K er på vej: 33 MPixels fjernsyn


JVC udgiver mere prisvenlig 4K DLP-


Sponsoreret artikel: Snabel a


Officiel Tor browser udkommer til A


Nintendo lancerer online service fo


Western Digital lancerer nye SSDer


ASUS Mixed Reality Headset kommer s