Αννα Νταγιου ΑΕΜ: 432 Εξαμηνο 8 Ερώτηση 1. Πληκτρολογήστε την εντολή: openssl help Παρατηρήστε τις πληροφορίες που λαµβάνετε.
Παρόµοια, πληκτρολογήστε την εντολή: openssl ciphers v Ποιοι συµµετρικοί αλγόριθµοι κρυπτογράφησης υποστηρίζονται; Οι συµµετρικοί αλγόριθµοι κρυπτογράφησης που υποστηρίζονται είναι ο AES, ο DES, ο Triple-DES, ο RC2 και ο RC4.
Για την εµφάνιση πληροφοριών απόδοσης (ποσότητα δεδοµένων/δευτερόλεπτο) πληκτρολογήστε: openssl speed Με πόσα KB/sec µπορεί ο υπολογιστής σας να κρυπτογραφήσει µε τον DES 8192B; Ο υπολογιστης μπορει να κρυπτογραφησει με τον DES 8192B 24.428 ΚΒ σε 2.94 sec ------------------------------------------------------------------------------------------------------------ 2 Ερώτηση. ηµιουργήστε ένα (κενό) αρχείο lab2, ανοίξτε το και πληκτρολογήστε το ονοµατεπώνυµό σας ή πληκτρολογήστε τις εντολές: touch lab2 echo X Y > lab2 όπου X: το όνοµά σας και Y: το επίθετό σας. Ανοίξτε ένα τερµατικό και πληκτρολογήστε: openssl des -e -in lab2 -out lab2.des Θα σας ζητηθεί ένα συνθηµατικό, πληκτρολογήστε lab2. Το κρυπτογραφηµένο αρχείο lab2.des έχει δηµιουργηθεί στον ίδιο κατάλογο. Αντιστρόφως, αφού διαγράψετε το αρχείο lab2 αποκρυπτογραφήστε το αρχείο lab2.des πληκτρολογώντας: openssl des -d -in lab2.des -out lab2
Ποιος ο ρόλος του συνθηµατικού; Το συνθηματικο λειτουργει σαν κλειδι για την κρυπτογραφηση και την αποκρυπτογραφηση του μηνυματος. 3 Ερώτηση. Πληκτρολογήστε την εντολή: man openssl. Παρατηρήστε τις επιλογές κρυπτογράφησης. Με ποιες εντολές (καταγράψτε τις) θα κρυπτογραφούσατε και θα αποκρυπτογραφούσατε το αρχείο lab2 µε τον αλγόριθµο κρυπτογράφησης TripleDES, Blowfish και IDEA;
Blowfish : Encrypt: openssl bf -e -in lab2 -out lab2.des Decrypt: openssl bf -d -in lab2.des -out lab2 Triple-DES : Encrypt: openssl des3 -e -in lab2 -out lab2.des Decrypt: openssl des3 -d -in lab2.des -out lab2 IDEA : Encrypt: openssl idea -e -in lab2 -out lab2.des Decrypt: openssl idea -d -in lab2.des -out lab2 ------------------------------------------------------------------------------------------------------------ 4 Ερώτηση. Πληκτρολογήστε την εντολή: openssl aes-128-cbc -e -in lab2 -out lab2.aes
Με ποιον αλγόριθµο κρυπτογραφήσατε το αρχείο lab2; Κρυπτογραφησαμε το αρχείο lab2 με τον αλγοριθμο AES με κλειδι στα 128 bit. Ποιες άλλες επιλογές έχετε για την κρυπτογράφηση µε τον AES; Εχουμε την επιλογη να αλλαξουμε το μεγεθος του κλειδιου στα 192 και στα 256 bit. ------------------------------------------------------------------------------------------------------------ 5 Ερώτηση. Πληκτρολογήστε τις ακόλουθες εντολές και παρατηρήστε τις επιλογές διαχείρισης για τον RSA: openssl rsautl -h openssl genrsa h openssl rsa -h
ηµιουργήστε ένα κλειδί 1024 bit για τον RSA: openssl genrsa -out pri_key.pem 1024 Πληκτρολογήστε: cat pri_key.pem
Παρατηρήστε ότι το αρχείο pri_key.pem είναι το ιδιωτικό κλειδί RSA. Τώρα, δηµιουργήστε ένα δηµόσιο κλειδί 1024 bit έχοντας σας είσοδο το κλειδί του προηγούµενου βήµατος: openssl rsa -in pri_key.pem -pubout -out pub_key.pem Κατασκευάστε ένα δηµόσιο κλειδί ακόµη µε όνοµα pub_key2.pem από το ίδιο (ιδιωτικό) κλειδί. Είναι το ίδιο µε το pub_key.pem; Αναµένατε να είναι το ίδιο; Το δημοσιο και το ιδιωτικο κλειδι είναι πολλαπλασιαστικα αντίστροφα στο φ(n) και επειδη παραχθηκαν από το ιδιο ιδιωτικό κλειδί τα δυο δημοσια κλειδια είναι ιδια.
Κρυπτογραφήστε µε το δηµόσιο κλειδί που δηµιουργήσατε το αρχείο lab2 µε την εντολή: openssl rsautl -encrypt -inkey pub_key.pem -pubin -in lab2 -out lab2.rsa Αποκρυπτογραφήστε µε το ιδιωτικό κλειδί που δηµιουργήσατε το αρχείο lab2.rsa: openssl rsautl -decrypt -inkey pri_key.pem -in lab2.rsa -out lab2
------------------------------------------------------------------------------------------------------------ 6 Ερώτηση. Μπορείτε να εµφανίσετε τα µέρη κατασκευής των κλειδιών πληκτρολογώντας: openssl rsa -in pri_key.pem -text -noout Υπενθυµίζεται ότι το modulus είναι το n = pq, το public exponent είναι το e (δηµόσιο κλειδί) και private exponent είναι το d (ιδιωτικό κλειδί). Κατασκευάστε ένα ακόµη ιδιωτικό κλειδί test_pri_key.pem µήκους 40-bit. Ελέγξετε εάν οι δύο πρώτοι αριθµοί που έχουν εµπλακεί στην κατασκευή του κλειδιού είναι πράγµατι πρώτοι: openssl prime -hex prime_number όπου prime_number ο πρώτος αριθµός. Ποιος ο λόγος ύπαρξης του διακόπτη -checks στον έλεγχο πρώτων αριθµών; Οριζει τον αριθμο των ελέγχων του προγραμματος για το αν ο αριθμος είναι πρώτος.
------------------------------------------------------------------------------------------------------------ 7 Ερώτηση. Προσδίδοντας περισσότερη ασφάλεια µπορείτε να κρυπτογραφήστε ένα ιδιωτικό κλειδί του RSA µε έναν συµµετρικό αλγόριθµο κρυπτογράφησης: openssl rsa -in pri_key.pem -bf -out pri_key_bf.pem Για την προστασία των κωδικών του χρήστη χρησιµοποιείται η τεχνική salting. Αφού µελετήσετε αντίστοιχα άρθρα (όπως π.χ. το http://cryptodox.com/salt_(cryptography)) εξηγήστε την σηµασία και το ρόλο της τεχνικής. Με ποια εντολή χρησιµοποιείται η τεχνική στην κρυπτογράφηση µέσω openssl, π.χ. στον RSA; Στην κρυπτογραφηση το salt είναι τυχαια δεδομενα που χρησιμοποιουνται ως επιπροσθετη εισοδος σε μια συναρτηση που κανει hash ένα password ή ένα passphrase. Η συναρτηση που χρησιμοποιει τεχνική salting χρησιμοποιειται ως αμυνα ενάντια σε dictionary και rainbow table επιθεσεις. Ένα νέο salt δημιουργειται τυχαια για κάθε κάθε password. Το salt και το password ενωνονται
και εισαγονται σε μια hash συναρτηση, οπου το αποτελεσμα αποθηκευεται σε μια βαση δεδομενων με το salt. Με τον διακοπτη salt χρησιµοποιείται η τεχνική salting στην κρυπτογράφηση µέσω openssl. Σχηµατίστε ζεύγη κρυπτογράφησης και αποκρυπτογράφησης. Να παράγετε ζεύγη κλειδιών µε τον RSA και να ανταλλάξετε τα δηµόσια κλειδιά σας. Στη συνέχεια ανταλλάξτε µέσω email κρυπτογραφηµένο κείµενο. Να καταγράψετε τα βήµατα και τις εντολές που χρησιµοποιήσατε. Δημιουργησαμε αρχικά ένα ιδιωτικο κλειδι 1024-bit. Επειτα παραγαμε από αυτό ένα δημοσιο το οποιο το στειλαμε στην άλλη πλευρα. Στην συνέχεια δημιουργουμε ένα κειμενο, το κρυπτογραφουμε με το δημοσιο κλειδι που λαβαμε και στελνουμε το κρυπτογραφημενο κειμενο στον απεναντι. Από την άλλη λαμβανουμε και το κρυπτογραφημενο κειμενο που εχει κρυπτογραφηθει με το δικο μας δημοσιο κλειδι και το αποκρυπτογραφουμε με το ιδιωτικο κλειδι που δημιουργησαμε στην αρχη. ------------------------------------------------------------------------------------------------------------ 8 Ερώτηση. Καταγράψτε το hash του αρχείου lab2 εφαρµόζοντας τον αλγόριθµο MD5: openssl dgst -md5 lab2 Καταγράψτε το hash του αρχείου lab2 εφαρµόζοντας τον αλγόριθµο SHA1: openssl dgst sha1 lab2
Ποιες άλλες επιλογές hash συναρτήσεων διαθέτει η βιβλιοθήκη openssl; ------------------------------------------------------------------------------------------------------------ 9 Ερώτηση. ηµιουργήστε ένα ζεύγος κλειδιών 1024 bit για τον RSA: openssl genrsa -out keys.pem 1024 Με τον αλγόριθµο RSA υπογράψτε το αρχείο lab2: openssl rsautl sign in lab2 inkey keys.pem out lab2.sign Επιβεβαιώστε µε τον ίδιο αλγόριθµο την υπογραφή του αρχείου lab2: openssl rsautl verify in lab2.sign inkey keys.pem Ανταλλάξτε ανά δύο άτοµα τις ψηφιακές υπογραφές και επιβεβαιώστε τις.
------------------------------------------------------------------------------------------------------------ 10 Ερώτηση. Η βιβλιοθήκη openssl υποστηρίζει και παραγωγή ετικετών MAC (Message Authentication Code). Αναζητήστε και καταγράψτε τους αλγόριθµους που υποστηρίζει η βιβλιοθήκη και αναφέρετε 3 παραδείγµατα χρήσης µε βάση το αρχείο lab2. Παραπανω δημιουργησαμε ετικετα hashed MAC χρησιμοποιωντας ένα κλειδι. Υπαρχουν και αλλοι αλγοριθμοι MAC που δεν βασιζονται σε hash όπως ο gost-mac αλγοριθμος.