Βασικές Έννοιες

5.8 Ασφάλεια στο DNS

5.8.1 Γενικά

Το DNS (Domain Name System) ενώ αποτελεί ουσιαστικό συστατικό στοιχείο της υποδομής του Internet στερείται μηχανισμών δυνατής ασφάλειας για την προστασία της ακεραιότητας και της ταυτότητας των δεδομένων. Για την παροχή αυτών των μηχανισμών ασφάλειας έχουν αναπτυχθεί οι λεγόμενες "DNS extensions" (επεκτάσεις του DNS), τις οποίες αντιλαμβάνονται ρυθμισμένοι για ασφάλεια servers και εφαρμογές που κάνουν χρήση κρυπτογραφημένων ψηφιακών υπογραφών. Αυτές οι ψηφιακές υπογραφές περιλαμβάνονται σε ασφαλείς ζώνες σαν RRs (Resource Records). Μπορούμε, ωστόσο, να εξασφαλίσουμε ασφάλεια και μέσω μη ρυθμισμένων, για κάτι τέτοιο, DNS servers σε πολλές περιπτώσεις.

Οι επεκτάσεις του DNS παρέχουν επιπλέον τη δυνατότητα αποθήκευσης πιστοποιημένων δημοσίων κλειδιών στο DNS. Αυτή η αποθήκευση των δημοσίων κλειδιών μπορεί να υποστηρίξει την γενικευμένη διαδικασία διανομής τους επιπρόσθετα της ασφάλειας του DNS. Τα αποθηκευμένα κλειδιά δίνουν τη δυνατότητα στους resolvers εκείνους, που έχουν ενσωματώσει χαρακτηριστικά ασφάλειας, να μαθαίνουν το κλειδί πιστοποίησης διαφόρων ζωνών εκτός εκείνων για τις οποίες έχουν ρυθμιστεί αρχικά. Κλειδιά τα οποία έχουν συσχετισθεί με DNS ονόματα μπορούν να ανακληθούν για να υποστηρίξουν άλλα πρωτόκολλα. Πρέπει να σημειωθεί ότι έχει γίνει πρόβλεψη για μια σειρά διαφορετικών τύπων κλειδιών και αλγορίθμων.

Οι επεκτάσεις του DNS δίνουν, επίσης, τη δυνατότητα της προαιρετικής πιστοποίησης των συναλλαγών του DNS πρωτοκόλλου.

5.8.2 Περιγραφή των Επεκτάσεων

Οι επεκτάσεις του DNS παρέχουν τρεις ξεχωριστές υπηρεσίες:

  1. Διανομή κλειδιών
  2. Πιστοποίηση προέλευσης δεδομένων
  3. Πιστοποίηση αιτήσεων και συναλλαγών

Υπάρχουν, ωστόσο και υπηρεσίες που δεν παρέχουν οι επεκτάσεις του DNS. Η σχεδιαστική φιλοσοφία του DNS είναι τέτοια που προβλέπει την παροχή των ίδιων απαντήσεων σε όλες τις αιτήσεις χωρίς τη διάκριση καμιάς από αυτές. Έτσι δεν έγινε καμιά προσπάθεια για να συμπεριληφθούν λίστες πρόσβασης (access lists) ή οποιαδήποτε άλλα μέσα διάκρισης των διαφόρων αιτήσεων.

Διανομή Κλειδιών

Τα RRs ορίζονται ως αυτά που συσχετίζουν τα κλειδιά με τα DNS ονόματα. Αυτό επιτρέπει στο DNS να χρησιμοποιηθεί σαν ένας μηχανισμός διανομής δημοσίων κλειδιών σε υποστήριξη των μηχανισμών πιστοποίησης της προέλευσης των δεδομένων και άλλων υπηρεσιών ασφάλειας.

Το "Key Resource Record" περιλαμβάνει μία ταυτότητα του αλγορίθμου που χρησιμοποιείται, τις παραμέτρους του δημοσίου κλειδιού και μια πλειάδα άλλων χαρακτηριστικών παραμέτρων του τύπου της οντότητας με την οποία το κλειδί σχετίζεται.

Υπό καθορισμένες συνθήκες οι διάφοροι servers που έχουν ρυθμιστεί με γνώμονα την ασφάλεια του DNS, επιχειρούν να επιστρέψουν πληροφορίες κλειδιών σαν πρόσθετη πληροφορία μαζί με τα RRs που ζητήθηκαν έτσι ώστε να ελαττώσουν τον αριθμό των απαιτούμενων αιτήσεων.

Πιστοποίηση Προέλευσης Δεδομένων και Ακεραιότητά τους

Η πιστοποίηση παρέχεται με την συσχέτιση κρυπτογραφικά δημιουργημένων ψηφιακών υπογραφών με τα RRs. Υπάρχει ένα και μόνο μυστικό κλειδί που χαρακτηρίζει—υπογράφει μια ολόκληρη ζώνη. Εάν κάποιος resolver γνωρίζει το δημόσιο κλειδί κάποιας ζώνης μπορεί να πιστοποιήσει τα υπογεγραμμένα δεδομένα από αυτή τη ζώνη όσον αφορά την εγκυρότητα της υπογραφής τους και την επικαιρότητά τους. Το μυστικό κλειδί κάθε ζώνης κρατείται φυσικά εκτός δημοσίας θέας και χρησιμοποιείται μόνο περιοδικά για να υπογράψει τα RRs της ζώνης του.

Αυτό το κλειδί προέλευσης δεδομένων ανήκει στη ζώνη και όχι στους servers που αποθηκεύουν αντίγραφα των δεδομένων. Αυτό σημαίνει ότι κάθε πιθανό τρύπημα του ή των servers μιας ζώνης δεν επηρεάζει το βαθμό διασφάλισης που παρέχει ένας server όσον αφορά την προέλευση των δεδομένων.

Ένας resolver μπορεί να "μάθει" το δημόσιο κλειδί μιας ζώνης είτε διαβάζοντας το από το DNS είτε έχοντάς το στατικά ρυθμισμένο από την αρχή. Για να μπορεί κάποιος resolver να διαβάσει αξιόπιστα το δημόσιο κλειδί μιας ζώνης από το DNS θα πρέπει αυτό να είναι υπογεγραμμένο. Για αυτό το λόγο ο resolver θα πρέπει αρχικά να είναι ρυθμισμένος ώστε να γνωρίζει τουλάχιστον το δημόσιο κλειδί μιας ζώνης το οποίο θα χρησιμοποιεί για να πιστοποιεί υπογραφές. Από αυτό το σημείο και μετά μπορεί με ασφάλεια να διαβάζει το δημόσιο κλειδί άλλων ζωνών εάν οι ενδιάμεσες ζώνες στο DNS δέντρο είναι ασφαλείς και τα υπογεγραμμένα κλειδιά τους προσβάσιμα. Σε επίπεδο αρχής είναι πιο ασφαλές να γίνεται από την αρχή γνωστό στον server ένα πλήθος δημοσίων κλειδιών από διαφορετικές ζώνες διότι έτσι η πιθανή πτώση στα χέρια τρίτων μιας ζώνης δεν θα έχει συνέπειες για τις άλλες από ενέργειες αλλοίωσης των δεδομένων.

Για την πρόσθεση του χαρακτηριστικού πιστοποίησης της προέλευσης δεν είναι αναγκαία κανενός είδους τροποποίηση του DNS πρωτοκόλλου πέρα από την προσθήκη του τύπου υπογραφής και κλειδιών RR που χρειάζονται για τη διανομή των κλειδιών. Αυτή η υπηρεσία μπορεί να υποστηριχθεί από την υπάρχουσα δομή των resolvers και των servers αρκεί αυτοί να μπορούν να υποστηρίξουν τους επιπλέον RR τύπους.

Εάν οι υπογραφές λαμβάνονται και πιστοποιούνται ξεχωριστά κάθε φορά τότε θα υπάρχουν περισσότερα "ταξίδια" προς τον server και η απόδοση θα πέφτει. Για την αποφυγή αυτής της κατάστασης οι servers στέλνουν όποτε μπορούν τις υπογραφές που ίσως να χρειαστούν αργότερα.

To SIG Resource Record

To SIG Resource Record περιέχει τον τύπο του RR που υπογράφει, το όνομα του υπογράφοντος, το χρόνο της δημιουργίας της υπογραφής, την ημερομηνία λήξης της, τον κρυπτογραφικό αλγόριθμο που χρησιμοποιήθηκε και τέλος το υλικό της υπογραφής.

Κάθε όνομα σε μια ασφαλή ζώνη σχετίζεται με ένα SIG RR για κάθε τύπο καταχώρησης εκτός από τα glue και NS RRs. Ένας server που αντιλαμβάνεται από ασφάλεια θα επιχειρήσει πάντοτε να επιστρέψει τις υπογραφές των RRs που είναι υπό ερώτηση ενώ σε αντίθετη περίπτωση ο resolver είναι αυτός που πρέπει να συλλέξει όλες τις υπογραφές (SIGs) και να πάρει, μετά από επιλογή, αυτές που αφορούν τα records για τα οποία ενδιαφέρεται ο resolver.

Τα SIG RRs στην Σύνθεση Απαντήσεων

Οι DNS servers που έχουν ενσωματώσει στη λειτουργία τους χαρακτηριστικά ασφάλειας πρέπει να επιχειρούν να στέλνουν τα διαθέσιμα SIG RRs που πιστοποιούν τα ζητηθέντα RRs. Αυτά συμβαίνουν:

  1. Όταν ένα RR δίδεται σε μια απάντηση τότε το SIG RR του έχει μεγαλύτερη προτεραιότητα για συμμετοχή στην απάντηση από κάθε άλλο RR που μπορεί να χρειάζεται να μπει. Εάν δεν υπάρχει διαθέσιμος χώρος τότε θεωρείται ότι η απάντηση έχει περικοπεί.
  2. Οι υπογραφές που πιστοποιούν δεδομένα πάνω στα οποία δεν έχει αρμοδιότητα ο συγκεκριμένος server δεν χρειάζεται να σταλούν και δεν πρέπει να σταλούν.
  3. Εάν η υπογραφή καλύπτει οποιοδήποτε RR το οποίο θα βρισκόταν στο απαντητικό μέρος της ανταπάντησης, τότε πρέπει να τοποθετείται αυτόματα στο μέρος της απάντησης. Εάν πάλι καλύπτει κάποιο RR το οποίο θα βρισκόταν στο μέρος αρμοδιότητας τότε πρέπει να τοποθετείται αυτόματα στο μέρος της αρμοδιότητας. Εάν τέλος, καλύπτει κάποιο RR το οποίο θα βρισκόταν στο μέρος επιπλέον πληροφορίας τότε πρέπει να τοποθετείται αυτόματα στο μέρος της επιπλέον πληροφορίας.
  4. Προαιρετικά οι DNS συναλλαγές μπορούν να πιστοποιούνται από ένα SIG RR στο τέλος της απάντησης και συγκεκριμένα στον μέρος της επιπλέον πληροφορίας. Τέτοια SIG RRs υπογράφονται από τους DNS servers που δημιουργούν τις απαντήσεις.

Επεξεργασία Απαντήσεων και SIG RRs

Οι παρακάτω κανόνες εφαρμόζονται κατά την επεξεργασία των SIG RRs που περιλαμβάνονται σε μια απάντηση:

  1. Ο resolver ο οποίος λαμβάνει μια απάντηση από αυτό που πιστεύει ότι είναι ένας ασφαλής server και με το AD bit (ένδειξη πιστοποιημένων δεδομένων από την πηγή τους) ενεργοποιημένο, μπορεί να επιλέξει να δεχθεί τα RRs όπως παρελήφθησαν και χωρίς τον έλεγχο των SIG RRs της ζώνης.
  2. Σε άλλη περίπτωση ο resolver πρέπει να επαληθεύσει τα SIG RRs για τα RRs που τον ενδιαφέρουν. Αυτή η διαδικασία μπορεί να περιλαμβάνει την απαρχή ενός νέου κύκλου αιτήσεων για SIG και KEY RRs, εδικά στην περίπτωση που έχει λάβει απάντηση από κάποιον server χωρίς ενεργοποιημένα χαρακτηριστικά ασφάλειας.
  3. Εάν τα SIG RRs έχουν ληφθεί σε απάντηση μιας ερώτησης από κάποιον χρήστη καθορίζοντας αποκλειστικά το SIG τύπο, δεν χρειάζεται καμιά επιπλέον επεξεργασία.

Εάν το μήνυμα δεν περάσει τους ελέγχους ή το SIG δεν επαληθεύσει τα υπογεγραμμένα RRs, τότε το SIG RR δεν είναι έγκυρο και πρέπει να αγνοείται. Εάν όλα τα SIG RRs που προσπάθησαν να πιστοποιήσουν ένα σύνολο από RRs απέτυχαν, τότε αυτό το σύνολο δεν πιστοποιείται.

Πιστοποίηση Αιτήσεων και Συναλλαγών

Η υπηρεσία πιστοποίησης της προέλευσης των δεδομένων προστατεύει μεν τα RRs που διακινούνται ανάμεσα στους DNS servers και resolvers αλλά δεν παρέχει καμία προστασία στις DNS αιτήσεις και επικεφαλίδες μηνυμάτων - δηλαδή στις συναλλαγές.

Εάν τα bits κάποιας επικεφαλίδας είναι τοποθετημένα με λανθασμένο τρόπο από τον server, δεν υπάρχουν και πολλά που μπορούν να γίνουν. Ωστόσο είναι δυνατόν να προσθέσουμε το χαρακτηριστικό πιστοποίησης των συναλλαγών. Μια τέτοια πιστοποίηση θα σήμαινε ότι ο resolver θα είναι σίγουρος ότι λαμβάνει μηνύματα από τον server τον οποίο ρώτησε, για το ότι η απάντηση είναι αποτέλεσμα της ερώτησης που υπέβαλλε και για το ότι αυτά τα μηνύματα δεν αλλοιώθηκαν κατά τη μεταφορά τους. Όλα αυτά επιτυγχάνονται με την προσθήκη ενός προαιρετικού SIG Resource Record στο τέλος της απάντησης το οποίο υπογράφει ψηφιακά τη συσχέτιση της απάντησης του server και της αίτησης - ερώτησης του resolver.

Οι αιτήσεις μπορούν επίσης να πιστοποιηθούν με τη προσθήκη ενός ειδικού SIG Resource Record στο τέλος της ερώτησης. Προς το παρόν βέβαια αυτή η δυνατότητα δεν αποτελεί αντικείμενο εκμετάλλευσης από τους υπάρχοντες DNS servers. Ωστόσο αυτό το συντακτικό της υπογραφής των αιτήσεων ορίζεται σε σχέση με την πιστοποίηση μελλοντικών δυναμικών ανανεώσεων και παρόμοιων διαδικασιών.

Τα μυστικά ιδιωτικά κλειδιά που χρησιμοποιούνται για την ασφάλιση των συναλλαγών και των αιτήσεων ανήκουν στον υπολογιστή εκείνο που συνθέτει την ερώτηση ή την απάντηση και όχι στη ζώνη του. Το αντίστοιχο δημόσιο κλειδί συνήθως αποθηκεύεται στο DNS και ανακτάται από αυτό.

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

5.8.3 Το KEY Resource Record

Το KEY Resource Record χρησιμοποιείται για την αρχειοθέτηση ενός κλειδιού που σχετίζεται με κάποιο όνομα του Domain Name System (DNS). Είναι δημόσιο κλειδί μια και μόνο αυτά αποθηκεύονται στο DNS. Μπορεί να είναι το δημόσιο κλειδί μιας ζώνης, ενός υπολογιστή του δικτύου ή ενός χρήστη. Το KEY RR είναι όπως κάθε άλλο RR αντικείμενο πιστοποίησης από το SIG RR. Οι ασφαλείς εφαρμογές του DNS πρέπει να είναι σχεδιασμένες έτσι ώστε να μπορούν να διαχειρίζονται δύο τουλάχιστον έγκυρα κλειδιά, του ίδιου τύπου που σχετίζονται με κάποιο όνομα, ταυτόχρονα. Το νούμερο του KEY RR τύπου είναι το 25.

Τα KEY RRs στην Σύνθεση Απαντήσεων

Μία αποκλειστική αίτηση για KEY RRs δεν προκαλεί καμιά επιπλέον επεξεργασία πληροφορίας εκτός, φυσικά, από το αντίστοιχο SIG RR που δίδεται από τον server που είναι υπεύθυνος να απαντήσει.

Οι servers που λειτουργούν ενσωματώνοντας κάποιο σχήμα ασφάλειας είναι υποχρεωμένοι να περιλαμβάνουν στις απαντήσεις τους τα KEY RRs σαν επιπλέον πληροφορία σε διάφορες αιτήσεις συμπεριλαμβανομένων και των παρακάτω:

  1. Κατά την ανάκτηση RRs του τύπου NS θα πρέπει να δίδονται και τα KEY RRs των ζωνών που εξυπηρετούνται από αυτούς τους Name Servers (NS) εάν υπάρχει διαθέσιμος χώρος.
  2. Κατά την ανάκτηση RRs Α τύπου θα πρέπει να περιλαμβάνεται το KEY RR της τελικής οντότητας εάν υπάρχει διαθέσιμος χώρος.

5.8.4 Λήξη Υπογραφών, TTLs και Εγκυρότητα

Οι DNS servers που αντιλαμβάνονται από ασφάλεια δεν πρέπει να θεωρούν ληγμένες υπογραφές ικανές για να υπογράψουν οτιδήποτε, όπως επίσης δεν πρέπει να δέχονται την πιστοποίηση RRs από τέτοιες υπογραφές. Στα πλαίσια αυτού του περιορισμού οι servers πρέπει να ακολουθούν το σχήμα DNS TTL (Time To Live). Έτσι οι αρμόδιοι servers θα συνεχίσουν να ακολουθούν τις παραμέτρους ανανέωσης και λήξης της ζώνης ενώ κάποιος μη αρμόδιος server θα μετράει το TTL και θα αγνοεί τα RRs όταν το TTL θα είναι μηδέν. Επιπλέον, όποτε τα RRs μεταφέρονται σε απάντηση ερώτησης, τότε το TTL θα πρέπει να ισοσταθμίζεται έτσι ώστε ο παρών χρόνος συν αυτόν του TTL να μην υπερβαίνει το χρόνο λήξης της υπογραφής. Έτσι το TTL σε ένα μεταδιδόμενο RR θα είναι :

min(sigExpTim, max(zoneMinTTL, min(originalTTL, currentTTL)))

5.8.5 Αλυσιδωτές Ζώνες

Ξεκινώντας με ένα ή περισσότερα κλειδιά τα οποία εμπιστευόμαστε για μια ζώνη, είναι δυνατό να αποκτήσουμε υπογεγραμμένα κλειδιά για όσες από τις υπο-ζώνες της αλλά και για τις υπερ-ζώνες της, εάν δεν είναι root. Κάθε αρμόδιος ασφαλής server κάποιας ζώνης θα πρέπει να περιέχει ένα KEY RR για τη υπερ-ζώνη υπογεγραμμένο από την ασφαλή ζώνη μέσω μιας οδηγίας που προέρχεται από κάποιο αρχείο-κλειδί. Με αυτό τον τρόπο γίνεται δυνατή η αναρρίχηση στις παραπάνω ζώνες στο δέντρο που αυτές έχουν σχηματίσει εάν κάποιος ξεκινά κάτω από root. Μια ασφαλής υπο-ζώνη ξεχωρίζει από ένα KEY RR με μη μηδενικές πληροφορίες κλειδιού στα NS RRs της υπο-ζώνης.

Ένας resolver πρέπει να κρατάει στοιχεία για τον αριθμό των ασφαλών ζωνών που συνάντησε από κάποιο αρχικό σημείο μέχρι οποιαδήποτε ασφαλή ζώνη που μπόρεσε να φτάσει. Γενικά, όσο μικρότερος είναι αυτός ο αριθμός τόσο μεγαλύτερη είναι η εμπιστοσύνη που έχουμε στα δεδομένα.

Ένας ασφαλής server θα πρέπει να αρνείται κατηγορηματικά να μεταβεί από μια ασφαλή ζώνη σε μια μη ασφαλή εκτός αν η μη ασφαλής ζώνη είναι πιστοποιημένη ως τέτοια ή ως πειραματική από την ύπαρξη ενός πιστοποιημένου κατάλληλου KEY RR που να καταδεικνύει αυτό το γεγονός. Εάν κάτι τέτοιο δεν συμβαίνει τότε ο resolver λαμβάνει ανακριβή δεδομένα και άρα όχι άξια εμπιστοσύνης.

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

Πρέπει να σημειωθεί ότι οι επεκτάσεις ασφάλειας του DNS δεν εγγυώνται τίποτα παραπάνω από την εγκυρότητα των RRs, συμπεριλαμβανομένων και των KEY RRs που έχουν ληφθεί από το DNS. Δεν λύνουν σε καμία περίπτωση άλλα προβλήματα ασφάλειας. Για παράδειγμα με τη χρήση των επεκτάσεων ασφάλειας στο DNS μπορεί κάποιος να είναι σίγουρος για την IP διεύθυνση που λαμβάνει για κάποιο όνομα ενός host. Ωστόσο, αυτό δεν είναι ικανό να σταματήσει κάποιον από το να αντικαταστήσει τον host αυτόν με κάποιον αναρμόδιο ή να αιχμαλωτίσει IP πακέτα που στέλνονται σε αυτήν τη διεύθυνση απαντώντας επιπλέον από κάποια άλλη. Άρα η προστασία που παρέχει το σχήμα των επεκτάσεων ασφάλειας του DNS δεν είναι καθολικό και δεν προσφέρει ολοκληρωτική λύση στο πρόβλημα ασφάλειας του Internet από μόνο του παρά μόνο αν συνδυαστεί και με άλλα συστήματα που εφαρμόζονται σε άλλα επίπεδα του Διαδικτύου.

5.8.6 Περαιτέρω Πληροφορίες

Στο RFC 2065 υπάρχουν όλες οι πληροφορίες πάνω στις οποίες στηρίχθηκε η παραπάνω μελέτη. Εκεί θα βρεθούν πιο τεχνικές και αναλυτικές πληροφορίες.

Βασικές Έννοιες