Πώς βρίσκει το DKIM το κλειδί
Μια υπογραφή DKIM σε ένα μήνυμα καθορίζει ένα domain (d=) και έναν selector (s=). Ο διακομιστής παραλαβής τα συνδυάζει στη μορφή selector._domainkey.domain, διαβάζει την εγγραφή TXT σε αυτή τη διεύθυνση και χρησιμοποιεί το δημόσιο κλειδί στην ετικέτα p= για να επαληθεύσει την υπογραφή. Ένα domain μπορεί να δημοσιεύει οποιονδήποτε αριθμό selector, ώστε κάθε υπηρεσία αποστολής να έχει το δικό της κλειδί και τα κλειδιά να μπορούν να εναλλάσσονται χωρίς διακοπή λειτουργίας.
Ο έλεγχος χρειάζεται τον selector, επειδή το DNS δεν παρέχει τρόπο εμφάνισης των selector που διαθέτει ένα domain. Δεν υπάρχει κάτι για σάρωση. Ο selector προέρχεται από την υπογραφή ενός πραγματικού μηνύματος.
Πότε ένα κλειδί είναι αδύναμο ή προβληματικό
Το RFC 8301 ορίζει ότι τα κλειδιά RSA πρέπει να έχουν μήκος τουλάχιστον 1024 bit και συνιστά μήκος 2048 bit. Ένας επαληθευτής μπορεί να αγνοήσει ένα μικρότερο κλειδί, όπως κάνει και ο δικός μας, επομένως ένα κλειδί 512 bit ισοδυναμεί με πλήρη απουσία υπογραφής. Τα κλειδιά Ed25519 (RFC 8463) είναι μικρά από σχεδιασμό και ισχυρά, αλλά δεν επαληθεύονται ακόμη από όλους τους παραλήπτες. Γι' αυτό συνήθως δημοσιεύονται μαζί με ένα κλειδί RSA και όχι αντί γι' αυτό.
Ο έλεγχος αποκωδικοποιεί ολόκληρο το κλειδί, επειδή μια εγγραφή που έχει χωριστεί λανθασμένα σε συμβολοσειρές TXT ή δεδομένα base64 που δεν αποκωδικοποιούνται δημιουργούν ένα κλειδί που κανένας παραλήπτης δεν μπορεί να χρησιμοποιήσει. Ένα κενό p= σημαίνει ότι το κλειδί ανακλήθηκε σκόπιμα. Το t=y επισημαίνει ένα domain που βρίσκεται ακόμη σε δοκιμαστική λειτουργία και το RFC 6376 §3.6.1 ορίζει ότι οι επαληθευτές πρέπει να αντιμετωπίζουν τα email του ακριβώς όπως τα ανυπόγραφα email.
Ερωτήσεις
Πώς βρίσκω το DKIM selector και πώς ελέγχω αν το DKIM είναι ενεργό;
Στείλτε ένα μήνυμα στον εαυτό σας και ανοίξτε τις κεφαλίδες του αντιγράφου που παραδόθηκε. Η παρουσία κεφαλίδας DKIM-Signature σημαίνει ότι το μήνυμα υπογράφηκε: το selector είναι η τιμή s= και το domain είναι η τιμή d=. Αν δεν υπάρχει τέτοια κεφαλίδα, η υπηρεσία μέσω της οποίας στείλατε δεν υπογράφει. Κάθε υπηρεσία αποστολής υπογράφει με το δικό της selector, επομένως ένα newsletter και ένα μήνυμα από το γραμματοκιβώτιό σας μπορεί να έχουν διαφορετικά selector.
Το κλειδί είναι σωστό, αλλά το DKIM αποτυγχάνει με «body hash did not verify». Γιατί;
Συνήθως το μήνυμα άλλαξε μετά την υπογραφή του, για παράδειγμα προστέθηκε ένα υποσέλιδο από μια λίστα αλληλογραφίας ή ένας σύνδεσμος τροποποιήθηκε από μια πύλη ασφαλείας. Το κλειδί μπορεί να επιβεβαιώσει μόνο ό,τι υπογράφηκε. Η πλήρης δοκιμή εμφανίζει το πραγματικό αποτέλεσμα επαλήθευσης για το μήνυμά σας.
Πλήρης οδηγός: DKIM fail
Μήκος κλειδιού DKIM: 1024 ή 2048 bit;
Ένα κλειδί 1024 bit επαληθεύεται παντού και επιτρέπεται από το RFC 8301. Παραμένει όμως το ελάχιστο μήκος, γι' αυτό περάστε στα 2048 bit την επόμενη φορά που θα αλλάξετε κλειδιά.
Μπορεί ένα domain να έχει περισσότερες από μία εγγραφές DKIM;
Ναι, μία ανά selector, και πολλά domain έχουν αρκετές: μία για τον πάροχο γραμματοκιβωτίου και μία για κάθε υπηρεσία newsletter ή χρέωσης. Ελέγξτε τις μία κάθε φορά. Αν ένα κλειδί έχει διαγραφεί από το DNS, αποτυγχάνει κάθε μήνυμα που εξακολουθεί να είναι υπογεγραμμένο με αυτό.
Πόσο συχνά πρέπει να αλλάζω τα κλειδιά DKIM;
Το M3AAWG συνιστά αλλαγή τουλάχιστον κάθε έξι μήνες και αμέσως αν υπάρχει πιθανότητα διαρροής ενός ιδιωτικού κλειδιού. Δημοσιεύστε το νέο κλειδί με νέο selector, μεταφέρετε την υπογραφή σε αυτό και διαγράψτε την παλιά εγγραφή μόνο αφού σταματήσουν να φτάνουν μηνύματα υπογεγραμμένα με το παλιό κλειδί. Οι αποστολείς επαναλαμβάνουν την προσπάθεια για τέσσερις έως πέντε ημέρες, επομένως περιμένετε περίπου μία εβδομάδα.