Η ψευδαίσθηση της ασφάλειας AES-256
Η κρυπτογράφηση AES-256 στα PDF υποτίθεται ότι παρέχει ισχυρή προστασία, αλλά η ασφάλεια του συστήματος εξαρτάται άμεσα από την ποιότητα της παραγωγής του κλειδιού αρχείου (file key). Η έρευνα αναδεικνύει ότι πολλές υλοποιήσεις αποτυγχάνουν να παράγουν επαρκή εντροπία, μετατρέποντας έναν αλγόριθμο 256-bit σε μια άσκηση brute-force λίγων χιλιοστών του δευτερολέπτου.
Ανάλυση των ευπαθειών ανά υλοποίηση
MuPDF και η παγίδα του LCG
Το MuPDF χρησιμοποιούσε την οικογένεια συναρτήσεων drand48, έναν γραμμικό συγκρουσιακό γεννήτρια (Linear Congruential Generator - LCG). Λόγω του τρόπου με τον οποίο το MuPDF επεξεργάζεται τα bits της κατάστασης, τα ανώτερα bits δεν επηρεάζουν τα κατώτερα, με αποτέλεσμα η πραγματική εντροπία να περιορίζεται σε μόλις 9 bits. Αυτό επιτρέπει την εξαντλητική αναζήτηση (brute-force) όλων των πιθανών κλειδιών σε ελάχιστο χρόνο.
Foxit και η στατική εντροπία
Στο Foxit, το κλειδί παράγεται μέσω SHA-256 χρησιμοποιώντας το τρέχον timestamp και 32 bytes μη αρχικοποιημένης μνήμης. Επειδή η μνήμη αυτή είναι συνήθως μηδενισμένη, το κλειδί εξαρτάται αποκλειστικά από τον χρόνο. Οι ερευνητές απέδειξαν ότι η αναζήτηση σε όλο το φάσμα των timestamps από το 1970 έως σήμερα είναι υπολογιστικά ασήμαντη σε σύγχρονους επεξεργαστές.
Συμπεράσματα για την ασφάλεια λογισμικού
Το πρόβλημα υπογραμμίζει τη σημασία της χρήσης κρυπτογραφικά ασφαλών γεννητριών τυχαίων αριθμών (CSPRNG), όπως το /dev/urandom ή τα αντίστοιχα API του λειτουργικού συστήματος. Η επανάχρηση κώδικα από παλαιότερα projects, όπως το PDFium, χωρίς έλεγχο των κρυπτογραφικών πρωτοκόλλων, διαιωνίζει κενά ασφαλείας που θέτουν σε κίνδυνο ευαίσθητα δεδομένα σε εκατομμύρια έγγραφα.