Encryption – Decryption

Κρυπτογραφηση – Αποκρυπτογραφηση

Θεματολογία
Κρυπτογράφηση – Αποκρυπτογράφηση, Αλγοριθμος του Ευκλείδη, Stream Cipher, Block Cipher

Γλώσσες Προγραμματισμού
HTML, CSS, JS, jQuery, PHP

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

Στα πλαίσια του μαθήματος “Κρυπτογραφία” καλεστήκαμε να κατασκευάσουμε σύμφωνα με τα σημερινά δεδομένα 3 αλγορίθμους κρυπτογράφησης – αποκρυπτογράφησης.

Αυτοί είναι:

  • Αλγόριθμος του Ευκλείδη
  • Stream Cipher (Vigenere)
  • Block Cipher (AES 128)

Οι παραπάνω αλγόριθμοι υλοποιήθηκαν σε JavaScript από την αρχή μέχρι το τέλος χωρίς είσοδο έτοιμων βιβλιοθηκών. Παρουσιάζονται σε μορφή ιστοσελίδας με PHP και σχεδιασμό γραφικών από την βιβλιοθήκη jQuery.

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

Ο αλγόριθμος κρυπτογράφησης Vigenere είναι μία μέθοδος κρυπτογράφησης σε αλφαβητικό κείμενο στο οποίο εφαρμόζονται διαφορετικοί αλγόριθμοι κρυπτογράφησης Καίσαρα με βάση τη θέση των γραμμάτων μιας λέξης ή φράσης κλειδί. Είναι μια απλή μορφή της πολυαλφαβητικής υποκατάστασης. Η κρυπτογράφηση Vigenere έχει εφευρεθεί εκ νέου πολλές φορές.

Ο αλγόριθμος κρυπτογράφησης AES (Advanced Encryption Standard) βασίζεται σε μια αρχή σχεδίασης γνωστή ως δίκτυο αντικατάστασης-μετάθεσης και είναι αποτελεσματικό τόσο σε λογισμικό όσο και σε υλικό. Σε αντίθεση με τον προκάτοχό του DES, η AES δεν χρησιμοποιεί δίκτυο Feistel . Το AES είναι μια παραλλαγή του Rijndael, με σταθερό μέγεθος μπλοκ 128 bit και μέγεθος κλειδιού 128, 192 ή 256 bit. Το AES λειτουργεί σε έναν πίνακα byte 4 × 4 στηλών , που ονομάζεται κατάσταση . Οι περισσότεροι υπολογισμοί AES γίνονται σε ένα συγκεκριμένο πεπερασμένο πεδίο .

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

  • 10 γύροι για κλειδιά 128-bit.
  • 12 γύροι για κλειδιά 192 bit.
  • 14 γύροι για κλειδιά 256-bit.

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