itteithe έγραψε:Αν εσύ προλάβεις να παρέμβεις πριν ξεκινήσει το handshake, μπορείς να ξεγελάσεις τον server οτι είσαι ο browser και να του δώσεις το δικό σου δημόσιο κλειδί, και τον browser οτι είσαι ο server και αντίστοιχα να του δώσεις πάλι το δικό σου.
Δεν γίνεται αυτό που λες. Η σύνδεση δεν είναι ένα απλό public key exchange μεταξύ άγνώστων. Σου ξεφεύγει ένα ακόμα βήμα και αυτό είναι ότι ο server πιστοποιεί την ταυτότητα και ότι είναι υπεύθυνος για το domain μέσω ένος certificate που έχει λάβει από ένα certificate authority και το οποίο παραδίδει στον browser/client στην αρχή της σύνδεσης. Ο browser/client μπορεί να πιστοποιήσει ότι το certificate είναι αυθεντικό χωρίς να κάνει άλλη σύνδεση στο internet γιατί έχει προ εγκατεστημένα στο μηχάνημα τα κλειδιά όλων των μεγάλων certificate authorities και σε περίπτωση ακόμα που το certificate είναι από άγνωστο authority μπορεί να ξεκινήσει από αυτά που γνωρίζει και με ασφάλεια να κατεβάσει το καινούργιο.
Ο μοναδικός τρόπος να κάνεις man in the middle attack σε ssl και να πείσεις τον client ότι επικοινωνεί με τον server που διαχειρίζεται το domain είναι ή να έχεις φυτέψει στο μηχάνημα του ψεύτικο certificate για ανύπαρκτο certificate authority ή να έχεις ξεγελάσει κάποιο authority και να σου έχει δώσει πιστοποιητικό για domain που δεν σου ανήκει (π.χ. βάζοντας στο όνομα του domain για το οποίο ζητάς πιστοποιητικό κυριλλικό γράμμα που μοιάζει με λατινικό και ελπίζοντας ότι θα περάσει αυτόματα το αίτημα σου και κανείς δεν θα το προσέξει)
Αλλά σε αυτές τι περιτπώσεις ξεφεύγουμε και δεν μιλάμε για απλό man in the middle πλέον...