παράμετροι αλγορίθμου κρυπτογράφησης AES

Θοδωρής Λύτρας thlytras at gmail.com
Mon Nov 7 01:39:48 EET 2011


Χαιρετώ τη λίστα,

Υπάρχει ένα προγραμματάκι για επιδημιολόγους (το EpiData - www.epidata.dk) το 
οποίο χρησιμοποιεί τον αλγόριθμο AES για να κρυπτογραφεί ορισμένα πεδία 
δεδομένων. Ο χρήστης δίνει το password, το password αυτό κρυπτογραφείται με 
κλειδί τον εαυτό του, κωδικοποιείται κατά base64 και αποθηκεύεται στο αρχείο 
δεδομένων, ώστε να μπορεί να ταυτοποιηθεί αργότερα.

Εγώ προσπαθώ να φτιάξω μια ανοιχτού κώδικα συμβατή υλοποίηση (δυστυχώς η @@ριά 
αυτή είναι κλειστού κώδικα), και έχω κολλήσει στο με ποιές ακριβώς παραμέτρους 
κάνει το EpiData την κρυπτογράφηση κατά AES (=keylength, block cipher mode, 
padding). Η τεκμηρίωση του προγράμματος μιλά μόνο για AES, και έχω ρωτήσει 
τους developers αλλά δε βλέπω να μου απαντούν.

Να το πω διαφορετικά: δίνω input στο EpiData το password (π.χ. "qwerty") και 
μου δίνει output το κρυπτογραφημένο ("0JHzxN4f" στο παράδειγμα). Δοκιμάζω το 
ίδιο input στη δική μου εφαρμογή (σε C++/Qt με το Qt Cryptography 
Architecture) με διάφορους συνδυασμούς του αλγορίθμου AES, αλλά δε μπορώ να 
φτάσω στο ίδιο αποτέλεσμα.

Η ερώτηση λοιπόν είναι: πως μπορώ να "αποκρυπτογραφήσω" τις παραμέτρους του 
αλγορίθμου που χρησιμοποιεί το EpiData? Υπάρχει μήπως για να με βοηθήσει 
κάποιο απλό εργαλείο (σε οποιαδήποτε γλώσσα) που να έχει *όλες* τις δυνατές 
"παραλλαγές" του AES ώστε να μπορώ να κάνω δοκιμές?

Κάθε ιδέα ευπρόσδεκτη,

TIA,
Θοδωρής

Υ.Γ: Το μόνο που έχω καταφέρει να διαπιστώσω με ασφάλεια μέχρι στιγμής είναι 
οτι το EpiData δε χρησιμοποιεί κάποιου είδους salt ή initialization vector, 
μιας και όταν του δίνεις το ίδιο password, σου δίνει το ίδιο κρυπτογραφημένο 
output...


-- 
"Beauty is transitory"
"Beauty survives"
        - Mr. Spock & Capt. Kirk, "That which survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>



More information about the Linux-greek-users mailing list