Κρυπτογράφηση κωδικών πρόσβασης

ψήφοι
27

Ποιος είναι ο πιο γρήγορος, αλλά ασφαλής τρόπος για την κρυπτογράφηση των κωδικών πρόσβασης στο (PHP προτιμώμενη), και για το οποίο ποτέ μέθοδο που θα επιλέξετε είναι φορητό;

Με άλλα λόγια, αν εγώ αργότερα μεταναστεύουν ιστοσελίδα μου σε ένα διαφορετικό διακομιστή, θα συνεχίσει να εργάζεται κωδικούς μου;

Η μέθοδος που χρησιμοποιώ τώρα όπως μου είπαν εξαρτάται από τις ακριβείς εκδόσεις των βιβλιοθηκών εγκατασταθεί στο διακομιστή.

Δημοσιεύθηκε 03/08/2008 στις 12:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
29

Εάν επιλέγετε μια μέθοδο κρυπτογράφησης για το σύστημα σύνδεσης σας, τότε η ταχύτητα δεν είναι ο φίλος σας, ο Jeff είχε να-and-frow με τον Θωμά Ptacek σχετικά με τους κωδικούς πρόσβασης και το συμπέρασμα ήταν ότι θα πρέπει να χρησιμοποιήσετε την πιο αργή, πιο ασφαλή μέθοδο κρυπτογράφησης μπορείτε να αντέξετε οικονομικά να .

Από το blog Thomas Ptacek είναι:
Η ταχύτητα είναι ακριβώς αυτό που δεν θέλετε σε λειτουργία κωδικού πρόσβασης hash.

Τα σύγχρονα συστήματα κωδικό επιτέθηκε με σταδιακή κροτίδες κωδικό πρόσβασης.

Στοιχειώδες κροτίδες δεν precalculate όλες τις πιθανές ραγίσει τους κωδικούς πρόσβασης. Θεωρούν κάθε hash κωδικό ξεχωριστά, και τρέφονται λεξικό τους μέσω της λειτουργίας κωδικού πρόσβασης hash με τον ίδιο τρόπο σελίδα σύνδεσης PHP σας θα. Rainbow πίνακα κροτίδες όπως Ophcrack χρησιμοποιήσει χώρο για να επιτεθεί κωδικούς πρόσβασης? αυξητική κράκερ, όπως ο Ιωάννης ο Αντεροβγάλτης, Crack, και το έργο LC5 με το χρόνο: στατιστικά στοιχεία και υπολογίζουν.

Το παιχνίδι επίθεση κωδικός πρόσβασης σημειωθούν στο χρόνο που απαιτείται για να σπάσει τον κωδικό πρόσβασης X. Με πίνακες ουράνιο τόξο, ότι ο χρόνος εξαρτάται από το πόσο μεγάλο τραπέζι σας πρέπει να είναι και πόσο γρήγορα μπορείτε να το αναζητήσετε. Με οριακό κροτίδες, ο χρόνος εξαρτάται από το πόσο γρήγορα μπορείτε να κάνετε τη λειτουργία τρέχει κωδικό κατακερματισμού.

Το καλύτερο που μπορείτε να βελτιστοποιήσετε την λειτουργία hash κωδικό σας, τόσο πιο γρήγορα λειτουργία σας κωδικό hash παίρνει, το πιο αδύναμο σύστημα σας. MD5 και SHA1, ακόμα και συμβατικά κρυπταλγόριθμων όπως DES, έχουν σχεδιαστεί για να είναι γρήγορη. MD5, SHA1, και DES είναι αδύναμες hashes κωδικό πρόσβασης. Στη σύγχρονη CPUs, των πρώτων κρυπτο δομικά στοιχεία όπως το DES και το MD5 μπορεί να bitsliced, ψηφιοποιηθούν και παραλληλισθέντες να κάνουν αναζητήσεις κωδικό αστραπιαία. Παιχνίδι-over εφαρμογές FPGA κοστίσει μόνο εκατοντάδες δολάρια.

Απαντήθηκε 03/08/2008 στις 13:48
πηγή χρήστη

ψήφοι
14

Είμαι με τον Peter. Προγραμματιστής δεν φαίνεται να καταλαβαίνουν τους κωδικούς πρόσβασης. Όλοι πάρει (και είμαι ένοχος αυτού του πάρα πολύ) MD5 SHA1 ή επειδή είναι γρήγορο. Σκέφτομαι ( «cuz κάποιος επεσήμανε πρόσφατα για μένα) που δεν έχει κανένα νόημα. Θα πρέπει να πάρει έναν αλγόριθμο κατακερματισμού που είναι ηλίθιο αργή. Θέλω να πω, στην κλίμακα των πραγμάτων, μια πολυσύχναστη περιοχή, θα hash τους κωδικούς πρόσβασης, τι; κάθε 1/2 λεπτό; Ποιος νοιάζεται αν λάβει 0,8 δευτερόλεπτα vs 0,03 σέρβερ δευτερόλεπτα σοφός; Αλλά ότι επιπλέον βραδύτητα είναι τεράστια για την πρόληψη όλων των τύπων των κοινών brute-forcish επιθέσεις.

Από τη δική μου ερμηνεία, bcrypt έχει σχεδιαστεί ειδικά για την ασφαλή κατακερματισμού κωδικού πρόσβασης. Είναι βασισμένο σε blowfish, και υπάρχουν πολλές εφαρμογή.

Για PHP, ελέγξτε PHPPass http://www.openwall.com/phpass/

Για όποιον κάνει ΝΕΤ, ελέγξτε BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Απαντήθηκε 03/08/2008 στις 14:48
πηγή χρήστη

ψήφοι
8

Θα πρέπει να επισημανθεί ότι δεν θέλετε να κρυπτογραφήσετε τον κωδικό πρόσβασης, θέλετε να hash αυτό.

Κρυπτογραφημένους κωδικούς πρόσβασης μπορεί να αποκρυπτογραφηθεί, αφήνοντας κάποιος δει τον κωδικό πρόσβασης. Κατακερματισμός είναι μια πράξη μονόδρομο έτσι τον αρχικό κωδικό πρόσβασης του χρήστη είναι (κρυπτογραφικά) πάει.


Όσο για την οποία ο αλγόριθμος θα πρέπει να επιλέξετε - χρησιμοποιήστε το παρόν αποδεκτό πρότυπο ένα:

  • SHA-256

Και όταν hash τον κωδικό πρόσβασης του χρήστη, να είναι σίγουρος για τον κατακερματισμό και σε κάποια άλλα σκουπίδια με αυτό. π.χ:

  • Κωδικός πρόσβασης: password1
  • άλας: PasswordSaltDesignedForThisQuestion

Προσάρτηση το αλάτι για τον κωδικό πρόσβασης του χρήστη:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Απαντήθηκε 17/09/2008 στις 19:06
πηγή χρήστη

ψήφοι
7

Ό, τι κι αν κάνετε, μην γράψετε τη δική αλγόριθμο κρυπτογράφησης. Με αυτόν τον τρόπο θα εγγυηθεί σχεδόν (εκτός αν είστε ένα κρυπτογράφος) ότι θα υπάρξει ένα ελάττωμα στον αλγόριθμο που θα καταστήσει ασήμαντο για να σπάσει.

Απαντήθηκε 17/09/2008 στις 19:16
πηγή χρήστη

ψήφοι
2

Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε bcryptχρησιμοποιείται σε πολλά σύγχρονα πλαίσια, όπως laravel.

Απαντήθηκε 16/07/2016 στις 07:47
πηγή χρήστη

ψήφοι
2

Δεν είμαι αναγκαστικά ψάχνει για την ταχύτερη, αλλά μια ωραία ισορροπία, μερικά από τα διακομιστή που αυτός ο κώδικας έχει αναπτυχθεί για είναι αρκετά αργή, το σενάριο που hashes και αποθηκεύει τον κωδικό πρόσβασης παίρνει 5-6 δευτερόλεπτα για να τρέξει, και έχω μειώθηκε κάτω στο κατακερματισμού (αν σχολιάσει την κατακερματισμού έξω τρέχει, σε 1-2 δευτερόλεπτα).

Δεν χρειάζεται να είναι η πιο ασφαλής, δεν είμαι codding για μια τράπεζα (αυτή τη στιγμή), αλλά σίγουρα ΔΕΝ ΘΑ αποθηκεύει τους κωδικούς πρόσβασης σε μορφή απλού κειμένου.

Απαντήθηκε 05/08/2008 στις 00:07
πηγή χρήστη

ψήφοι
0

password_hash ( string $password , int $algo [, array $options ] ). (PHP 5> = 5.5.0, PHP 7)

password_hash () δημιουργεί ένα νέο hash κωδικό πρόσβασης, χρησιμοποιώντας ένα ισχυρό αλγόριθμο κατακερματισμού μίας κατεύθυνσης. password_hash () είναι συμβατό με κρύπτη (). Ως εκ τούτου, hashes κωδικό πρόσβασης που δημιουργούνται από κρύπτη () μπορεί να χρησιμοποιηθεί με password_hash ().

Απαντήθηκε 18/05/2018 στις 18:27
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more