Jump to content



προστασία με μέθοδο salting


Recommended Posts

Στο video εδώ , για cyber security, ο David Malan, στο 22:00 περίπου, εξηγεί τη μέθοδο salting.

 

Μεταξύ άλλων, όπως φαίνεται καί στην εικόνα, τα δύο outputs έχουν για αρχή τα salting values.

 

Γιατί πρέπει να έχει το hashing output καί το salting value; Εφοσον, βάζοντας σε δύο ίδια passwords διαφορετικά salting values, ο αλγόριθμος hashing θα έχει ως outputs διαφορετικές τιμές, δεν είναι περιττό να συμπεριληφθεί καί τό salting value σε κάθε output;;; 

 

Δεν το καταλαβαίνω. Τελικά πρέπει ή δεν πρέπει (περιττό) να συμπεριληφθεί στο output το salting value;

Έγινε επεξεργασία από serpico75
Link to comment
Share on other sites

Το κάνω παράδειγμα, επειδή και πάλι δεν κατάλαβα. Πάμε...

 

Πριν το hashing:

 

Χρηστης1

username : john

password : test

 

Χρηστης2

username : lisa

password : test

 

Με το hash algorithm + salt:

 

Ας πούμε ότι:

salting χρήστη 1 : 45

salting χρήστη 1 : 46

 

Οπως το περιγράφει ο καθηγητής στο video, λέει πως τα δύο outputs μετά το hashing+salting , πρέπει ως αρχή να έχουν καί τό salting value.

Το password test που έχουν επιλέξει καί οι δύο χρήστες, δεν θα είναι το ίδιο όταν γίνει το hash+salt (έτσι όπως το καταλαβαίνω εγώ, τουλάχιστον).

Δηλαδή, άλλη τιμη-output θα δώσει για το test το hashing+45 , και άλλη τιμή για το hashing+46

 

Ας πούμε για παράδειγμα για το test:

hashing function + 45 = 88##

hashing function+ 46 = 77@@

 

Αρα, σαν καταχώρηση στη βάση authentication, για τον χρήστη john είναι αρκετό το 88## , και για τον χρήστη lisa αρκεί το 77@@.

 

Στο video λέει πως πρέπει να καταχωρηθεί στη βάση:

4588## (για john)

4677@@ (για lisa)

 

Αυτό που λες στην απάντησή σου, είναι το ίδιο με αυτό του καθηγητή στο video; Δεν καταλαβαίνω πως το λέτε. Σύμφωνα με το παράδειγμα και τις τιμές που δίνω, μπορείς να μου πεις τι δεν έχω βρει;

Έγινε επεξεργασία από serpico75
Link to comment
Share on other sites

Έστω ότι είσαι ο john

Έκανες το λογαριασμό σου, με username john, και password test

Στη βάση θα έχει

|Username|Password|

|     john     |    88##    |

Το 88## έχει δημιουργηθεί από μία function που έχει ως ορίσματα τα ("test", "45")

 

Πας να ξανασυνδεθείς. Πως θα γίνει η αυθεντικοποίηση; θα δώσεις το "test" εσύ, μια χαρά. Το salt που θα το βρει το σύστημα για να κάνει σωστό hashing?

 

Επομένως -και με διορθώνω εδώ μιας και με "έβαλες" να διαβάσω τα κατάστιχά μου- έχεις δύο επιλογές:

α. Το περνάς ως έξτρα πεδίο στη βάση

β. Το κάνεις concatenate στο hash σου.

 

Εφόσον είναι μοναδικό το salt (προφανώς δεν είναι δύο χαρακτήρες μόνο), δε σε νοιάζει αν ο άλλος το βλέπει.

Γιατί απλούστατα για 1000 χρήστες που θα έχουν 1000 διαφορετικά salts, θα έπρεπε να δημιουργηθούν 1000 διαφορετικά rainbow tables. Και ήδη το 1 είναι pita

 

TL;DR: Το κάνουμε για εύκολο retrieval του salt του κάθε χρήστη

Link to comment
Share on other sites

Με έπιασες πάνω στη στιγμή που πληκτρολογουσα, για να σου πω αυτό ακριβώς που αναλύεις.

Διαβάζοντας καλύτερα την πρώτη σου απάντηση, και βλέποντας καλύτερα το βίντεο.

 

Δύο τρόποι για να έχεις παρέα το salting value, που είναι απαραίτητο για τις συγκρίσεις:

 

α. Το βάζεις μαζί με το hashing output (στο βίντεο και το παράδειγμά μου, το έχουμε στην αρχή - θα μπορούσε ο αλγόριθμος να το έχει προσθήκη στο τέλος, και να το πάρει για σύγκριση ο server απ'το τέλος)

 

β. το έχεις το salting value ως extra πεδίο στην βάση

 

Κατανοητά τα α. και β.

 

Απλά, στην πρώτη σου απάντηση δεν κατάλαβα αυτό που λες ότι, σε περίπτωση που το έχουμε σαν extra πεδίο, ότι χάνει το νοήμά του. Το μόνο που μπορώ να σκεφτώ έτσι όπως το λες είναι ότι, εάν ο hacker βρει/πάρει τη βάση, του δίνεις έτοιμο φαγακι το salting value για να κάνει salting method. Είναι αυτό?

 

ΥΓ Στάσου γιατί βάζοντας καί τό table μέσα, πάμε λίγο παραπάνω, που είχα δει βίντεο πριν λίγο καιρό, και για να συνθέσω το παζλ βάζοντας καί τον πίνακα για να έχω ολοκληρη/πλήρη και σωστή απάντηση, θέλω λίγο χρόνο. Πάντως νομίζω πως κατάλαβα πανω-κατω πως παίζει.

Έγινε επεξεργασία από serpico75
Link to comment
Share on other sites

11 λεπτά πριν, το μέλος serpico75 έγραψε:

Απλά, στην πρώτη σου απάντηση δεν κατάλαβα αυτό που λες ότι, σε περίπτωση που το έχουμε σαν extra πεδίο, ότι χάνει το νοήμά του. Το μόνο που μπορώ να σκεφτώ έτσι όπως το λες είναι ότι, εάν ο hacker βρει/πάρει τη βάση, του δίνεις έτοιμο φαγακι το salting value για να κάνει salting method. Είναι αυτό?

 

 

ήταν λάθος αυτό που σου απάντησα εκεί και προσπάθησα να το αναφέρω και να εξηγήσω ποιο είναι το σωστό, στη δεύτερη απάντηση.

Εν ολίγοις, είτε αποθηκεύεις το salt σε ξεχωριστό πεδίο στη βάση σου, είτε το κάνεις concatenate στο hash που έφτιαξες. Δε σε νοιάζει αν το ξέρει ο άλλος γιατί είναι μοναδικό, οπότε δεν τον διευκολύνει σε κάτι

  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.