Ασφάλεια

    Σύνδεσμοι με λήξη: το μυστικό καταστρέφεται, δεν ανακατευθύνεται απλώς

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

    W. Miller · Ενημερώθηκε · Σχετικά με το LinkPilot

    Ένας μυστικός σύνδεσμος με λήξη καταστρέφει το μυστικό μόλις λήξει η προθεσμία: στο LinkPilot το αποθηκευμένο κρυπτογράφημα αντικαθίσταται, οπότε δεν μένει τίποτα να ανοίξει κανείς. Ένας συντομευτής συνδέσμων που αρχίζει να επιστρέφει 410 Gone έχει μόνο σταματήσει την ανακατεύθυνση. Κάθε σύνδεσμος που μεταφέρει ένα μυστικό πρέπει να έχει λήξη, γιατί χωρίς αυτήν η εγγύηση της «μίας χρήσης» εξασθενεί αθόρυβα με κάθε ημέρα που ο σύνδεσμος μένει αδιάβαστος. Το άρθρο εξηγεί τι προστατεύει στην πράξη η λήξη, πώς επιλέγετε ένα χρονικό περιθώριο που μπορείτε να τεκμηριώσετε, τις οριακές περιπτώσεις που δημιουργούν πραγματικά προβλήματα και τις περιπτώσεις όπου οι σύνδεσμοι με λήξη είναι εντελώς λάθος εργαλείο. Αν θέλετε να δείτε πρώτα πώς λειτουργεί, η δωρεάν γεννήτρια μυστικών συνδέσμων μίας χρήσης βάζει λήξη σε κάθε μυστικό που δημιουργεί.

    Τι προστατεύει στην πράξη η λήξη;

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

    Σκεφτείτε πού καταλήγει ένα URL που μεταφέρει μυστικό μόλις πατήσετε αποστολή: στα εισερχόμενα του παραλήπτη, στον αποθηκευτικό χώρο του παρόχου email του, ίσως σε ένα προωθημένο αντίγραφο, σε ιστορικό συνομιλίας συγχρονισμένο σε κινητό, σε μια εγγραφή στο ιστορικό περιήγησης. Κανένα από αυτά τα αντίγραφα δεν το ελέγχετε. Αυτό που μπορείτε να ελέγξετε είναι για πόσο καιρό μπορεί να χρησιμοποιηθεί οποιοδήποτε από αυτά. Με λήξη μίας ώρας, κάθε αδέσποτο αντίγραφο του URL γίνεται άχρηστο εξήντα λεπτά μετά τη δημιουργία, όπου κι αν βρέθηκε.

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

    Η λήξη και η διαγραφή μετά την ανάγνωση καλύπτουν διαφορετικές αποτυχίες

    Αυτοί οι δύο μηχανισμοί συγχέονται συνεχώς. Είναι ανεξάρτητοι μεταξύ τους, και η ισχυρότερη ρύθμιση χρησιμοποιεί και τους δύο:

    ΑποτυχίαΤην πιάνει η διαγραφή μετά την ανάγνωση;Την πιάνει η λήξη;
    Ο παραλήπτης το διαβάζει και ο σύνδεσμος μένει μετά στα εισερχόμεναΝαι, είναι ήδη νεκρόςΝαι, τελικά
    Ο παραλήπτης δεν το ανοίγει ποτέΌχι, μένει ενεργός για πάνταΝαι
    Το ανοίγει πρώτο λάθος άτομοΕν μέρει: διαγράφεται οριστικά και το ιστορικό ενεργειών το δείχνειΌχι
    Το URL διαρρέει εβδομάδες αργότερα από μια εξαγωγή emailΜόνο αν είχε διαβαστείΝαι, έχει λήξει από καιρό

    Προσέξτε τη γραμμή με το «λάθος άτομο»: κανένας από τους δύο μηχανισμούς δεν αποτρέπει αυτή την ανάγνωση. Για αυτό υπάρχει η φράση πρόσβασης που στέλνεται από άλλο κανάλι. Η λήξη περιορίζει τον χρόνο, η διαγραφή περιορίζει τις αναγνώσεις, η φράση πρόσβασης περιορίζει το ποιος. Τρεις ξεχωριστοί διακόπτες.

    Όσο η αναμενόμενη παράδοση συν μία λογική καθυστέρηση, και όχι περισσότερο. Ένας πρακτικός κανόνας, ανά περίπτωση:

    ΠερίπτωσηΔιάρκειαΓιατί
    Παράδοση σε πραγματικό χρόνο (chat, κλήση, κοινή χρήση οθόνης)1 ώρα (η συντομότερη προεπιλογή)Ο παραλήπτης είναι παρών. Η διαγραφή μετά την ανάγνωση κλείνει τον σύνδεσμο τη στιγμή που τον διαβάζει
    Email σε γνωστό, ενεργό παραλήπτη1 ώραΚαλύπτει την καθυστέρηση των εισερχομένων χωρίς να μένει ανοιχτό περιθώριο όλη τη νύχτα
    Προγραμματισμένη παράδοση (ένταξη νέου συναδέλφου αύριο στις 10 π.μ.)24 ώρεςΑντέχει τις αλλαγές στο πρόγραμμα και έχει πάντως λήξει ως την επόμενη ημέρα
    Παραλήπτης σε μακρινή ζώνη ώρας24–48 ώρεςΗ εργάσιμη ημέρα του μπορεί να μην επικαλύπτεται καθόλου με τη δική σας
    Οτιδήποτε χρειάζεται > 7 ημέρεςΣταματήστεΟ σύνδεσμος είναι λάθος εργαλείο. Χρησιμοποιήστε κρύπτη

    Η λογική πίσω από τον πίνακα: ορίστε τη διάρκεια στον αναμενόμενο χρόνο παράδοσης συν μία λογική καθυστέρηση, όχι «τόσο μεγάλη που δεν θα χρειαστεί να το ξανασκεφτώ ποτέ». Όταν η διάρκεια λήξης ορίζεται με κριτήριο την ευκολία, τείνει προς το άπειρο.

    Μια παράδοση με χρονοδιάγραμμα, βήμα προς βήμα

    Ένας νέος μηχανικός ξεκινά αύριο στις 10:00. Πρέπει να του δώσετε τον κωδικό πρόσβασης μόνο ανάγνωσης για τη βάση δεδομένων παραγωγής.

    1. 09:55: δημιουργήστε τον μυστικό σύνδεσμο από τον λογαριασμό σας στο LinkPilot με ενεργή τη διαγραφή μετά την ανάγνωση, φράση πρόσβασης και προσαρμοσμένη λήξη στις 11:00. Η λήξη σε συγκεκριμένη ώρα και η φράση πρόσβασης είναι λειτουργίες του πακέτου Pro. Όταν έχετε συνδεθεί στον λογαριασμό, οι προεπιλογές είναι 1 ώρα, 24 ώρες ή 7 ημέρες, ενώ η γεννήτρια χωρίς λογαριασμό ορίζει 7 ημέρες.
    2. 09:56: στείλτε τον σύνδεσμο με email.
    3. 09:58: στείλτε τη φράση πρόσβασης με SMS ή με προσωπικό μήνυμα στο Slack, δηλαδή από άλλο κανάλι από αυτό του συνδέσμου, ώστε η διαρροή ενός καναλιού να μην αρκεί.
    4. 10:05: ο παραλήπτης ανοίγει τον σύνδεσμο, εισάγει τη φράση πρόσβασης και διαβάζει τον κωδικό μία φορά. Ο σύνδεσμος διαγράφεται οριστικά.
    5. 10:30: ελέγξτε το ιστορικό ενεργειών (audit log). Μία προβολή, σωστή ώρα, εύλογη τοποθεσία. Τέλος.
    6. Αν δεν έχει διαβαστεί έως τις 10:30: ανακαλέστε τον, στείλτε του μήνυμα και μοιραστείτε τον ξανά σε πραγματικό χρόνο. Μην περιμένετε απλώς τη λήξη. Ένας αδιάβαστος ενεργός σύνδεσμος είναι ένα ανοιχτό παράθυρο.

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

    Οριακές περιπτώσεις που αξίζει να ξέρετε

    Τα εργαλεία σάρωσης email δεν καταναλώνουν τον χρόνο, ούτε το μυστικό

    Τα εταιρικά εργαλεία ασφάλειας email ανοίγουν τα URL τη στιγμή που φτάνει ένα μήνυμα. Ένας σωστά φτιαγμένος μυστικός σύνδεσμος αντιμετωπίζει αυτές τις κλήσεις ως αιτήματα μεταδεδομένων: το endpoint εμφάνισης του LinkPilot επιστρέφει μόνο την κατάσταση σε ένα GET, και μια προβολή καταγράφεται μόνο με ρητή εμφάνιση μέσω POST. Έτσι, ένα εργαλείο σάρωσης που ανοίγει τον σύνδεσμό σας στις 09:56 ούτε τον διαγράφει ούτε μαθαίνει κάτι χρήσιμο. Αυτό που δεν μπορείτε να εμποδίσετε είναι να δει το εργαλείο σάρωσης ότι στάλθηκε ένα URL. Ακόμη ένας λόγος να στέλνεται η φράση πρόσβασης από άλλο κανάλι.

    Ο παραλήπτης στο 59ο λεπτό

    Η λήξη επιβάλλεται τη στιγμή της εμφάνισης, όχι από μια διαδικασία καθαρισμού στο παρασκήνιο που ελπίζετε ότι έτρεξε. Στο LinkPilot, ένα μυστικό που έχει λήξει περνά σε κατάσταση expired στην επόμενη πρόσβαση, και το περιεχόμενο σβήνεται με την ίδια λειτουργία εγγραφής. Μια εμφάνιση που ξεκινά πριν από την προθεσμία και ολοκληρώνεται μετά από αυτήν έχει ξεκάθαρη έκβαση, είτε τη μία είτε την άλλη. Δεν υπάρχει κατάσταση «μισής λήξης».

    Υπολογισμοί ζωνών ώρας

    Το «λήγει σε 24 ώρες» δεν αφήνει περιθώριο παρερμηνείας. Το «λήγει αύριο το βράδυ» αφήνει. Ορίστε τη διάρκεια ως χρόνο από τώρα, και όταν ενημερώνετε τον παραλήπτη, δώστε του την προθεσμία στη δική του ζώνη ώρας. Ένας εκπληκτικά μεγάλος αριθμός παραπόνων του τύπου «ο σύνδεσμος ήταν νεκρός όταν τον άνοιξα» οφείλεται σε λάθος υπολογισμό ζώνης ώρας.

    Η πλευρά της συμμόρφωσης

    Η λήξη είναι επίσης η πρακτική εφαρμογή δύο αρχών που εμφανίζονται στα περισσότερα σύγχρονα πλαίσια προστασίας δεδομένων: της ελαχιστοποίησης των δεδομένων και του περιορισμού της περιόδου αποθήκευσης (στον ΓΚΠΔ, άρθρα 5(1)(c) και 5(1)(e)). Αν πρέπει να διαβιβάσετε προσωπικά δεδομένα, όπως ένα έγγραφο ταυτότητας, μια εγγραφή πελάτη ή διαπιστευτήρια πρόσβασης που αντιστοιχούν σε ένα πρόσωπο, ένας σύνδεσμος που αποδεδειγμένα παύει να υπάρχει μετά από ένα περιορισμένο διάστημα είναι πολύ πιο εύκολο να εξηγηθεί σε έναν ελεγκτή από το «κάπου στο σύστημα email βρίσκεται». Ένα ιστορικό ενεργειών που δείχνει τα συμβάντα δημιουργίας, προβολής και λήξης για κάθε κοινή χρήση μετατρέπει τον ισχυρισμό σας για τη διατήρηση δεδομένων σε αποδεικτικό στοιχείο. Τίποτα από αυτά δεν κάνει από μόνο του ένα εργαλείο «συμμορφωμένο με τον ΓΚΠΔ», γιατί η συμμόρφωση είναι ιδιότητα όλης της διαδικασίας σας. Η περιορισμένη διάρκεια ζωής και τα αρχεία συμβάντων είναι όμως η πρώτη ύλη.

    Σε τι δεν βοηθά η λήξη

    Η λήξη δεν αντικαθιστά:

    • Την αλλαγή του κωδικού. Αν το ίδιο το μυστικό έχει διαρρεύσει, η λήξη του συνδέσμου δεν ακυρώνει τα διαπιστευτήρια. Αλλάξτε τα στο σύστημα προέλευσης. Η λήξη περιορίζει πόσο καιρό είναι ενεργό το μέσο παράδοσης. Για το περιεχόμενο μετά την παράδοση δεν λέει τίποτα.
    • Την προστασία με φράση πρόσβασης. Η λήξη περιορίζει τον χρόνο, η φράση πρόσβασης περιορίζει την πρόσβαση. Είναι ανεξάρτητες και συνδυάζονται εύκολα.
    • Την καταγραφή ενεργειών. Η λήξη δεν σας λέει τίποτα για το ποιος είδε το μυστικό ή πότε. Για αυτό χρησιμοποιήστε τα συμβάντα ιστορικού ανά σύνδεσμο. Το LinkPilot καταγράφει συμβάντα δημιουργίας, προβολής, λάθος φράσης πρόσβασης, οριστικής διαγραφής, λήξης και ανάκλησης, με χρονοσήμανση και hash της διεύθυνσης IP.

    Η κακή πρακτική «θα το παρατείνω»

    Δελεαστική και σχεδόν πάντα λάθος. Ο παραλήπτης συμφώνησε σε ένα χρονικό περιθώριο. Μια σιωπηλή παράταση σπάει το μοντέλο εμπιστοσύνης: ο παραλήπτης υπέθεσε ότι ο σύνδεσμος είχε πεθάνει και ίσως χειρίστηκε το μυστικό ανάλογα, ή σταμάτησε να προσέχει τα εισερχόμενα όπου βρίσκεται.

    Ο σωστός τρόπος: ανακαλέστε τον παλιό σύνδεσμο, δημιουργήστε νέο με νέα λήξη και ενημερώστε τον παραλήπτη. Το ιστορικό ενεργειών μένει αληθινό: ένας σύνδεσμος, ένα περιθώριο, ένα αποτέλεσμα για κάθε κοινή χρήση. Για αυτό το LinkPilot σάς επιτρέπει να μικρύνετε ένα ενεργό περιθώριο ή να ανακαλέσετε αμέσως, αλλά σκόπιμα δεν έχει κουμπί «παράταση».

    Μια ειλικρινής λίστα ορίων:

    • Επαναλαμβανόμενη πρόσβαση. Αν κάποιος θα χρειαστεί την τιμή και την επόμενη εβδομάδα, βάλτε την σε έναν διαχειριστή κωδικών πρόσβασης και μοιραστείτε την καταχώριση της κρύπτης. Η επανάληψη αποστολής συνδέσμων με πρόγραμμα είναι μια κρύπτη με περισσότερα βήματα και χειρότερες εγγυήσεις.
    • Μηχανές ως καταναλωτές. Τα pipeline CI και οι υπηρεσίες πρέπει να παίρνουν τα μυστικά από έναν διαχειριστή μυστικών (ή από τον εγγενή χώρο αποθήκευσης μυστικών της πλατφόρμας), όχι να ανοίγουν URL μίας χρήσης.
    • Ευρεία διανομή. Ένας σύνδεσμος που χρειάζονται δεκαπέντε άτομα δεν είναι παράδοση μυστικού. Είναι έλεγχος πρόσβασης, και ανήκει σε ένα σύστημα που τον διαθέτει.

    Οι σύνδεσμοι με λήξη είναι ιδανικοί για μία ακριβώς δουλειά: να μεταφέρουν μια ευαίσθητη τιμή από ένα άτομο σε ένα άλλο, μία φορά, με περιορισμένη ζημιά αν κάτι πάει στραβά.

    Πηγές

    Εργαλεία για αυτό το άρθρο

    Συχνές ερωτήσεις

    Το LinkPilot στέλνει έναν μυστικό σύνδεσμο που διαγράφεται μόλις ανοιχτεί.

    Κρυπτογραφείται στο πρόγραμμα περιήγησής σας, εμφανίζεται μία φορά και μετά καταστρέφεται. Χωρίς λογαριασμό.

    Δημιουργία μυστικού συνδέσμου

    Διαβάστε επίσης

    Ασφάλεια

    Κρυπτογράφηση client-side για μυστικά: τι προστατεύει και τι όχι

    Η κρυπτογράφηση client-side προστατεύει μόνο από τον πάροχο και διαρροή της βάσης. Την παρακάμπτουν κακόβουλη JavaScript, επεκτάσεις και διαρροή συνδέσμου.

    Ασφάλεια

    Διαπιστευτήρια μίας χρήσης για την υποδοχή πελατών

    Για agency και MSP: στείλτε την πρώτη σύνδεση ως σύνδεσμο μίας χρήσης, μοιραστείτε έτσι και τις εμπιστευτικές οδηγίες, και καταγράψτε την παράδοση.

    Ασφάλεια

    Ευαίσθητο μήνυμα με σύνδεσμο που μπορεί να ανακληθεί

    Η ανάκληση κόβει την πρόσβαση πριν από τη λήξη. Πώς διαφέρει από τη λήξη, πώς στέλνετε τέτοιο σύνδεσμο, πότε τον ανακαλείτε και τι δεν αναιρεί η ανάκληση.