Προγραμματισμός

Ο μαγικός κόσμος της κρυπτογράφησης (1) – Ο κώδικας του Καίσαρα

Η ανάγκη για τη μετάδοση δεδομένων και πληροφοριών με ασφάλεια, απασχόλησε τον άνθρωπο από την αρχαιότητα. Η αλγοριθμική σκέψη προϋπήρξε των υπολογιστών και μερικά παραδείγματα της σκέψης αυτής, θα σας παρουσιάσω στη σειρά άρθρων που θα αφορούν την κρυπτογράφηση δεδομένων. Στο πρώτο μέρος θα γνωρίσουμε τον αλγόριθμο κρυπτογράφησης του Καίσαρα, ή κώδικα του Καίσαρα (Caesar Cipher) με σταθερή μετατόπιση.

Ο κώδικας του Καίσαρα είναι είναι μία από τις απλούστερες μεθόδους κρυπτογράφησης δεδομένων. Χρησιμοποιούταν από τον Ιούλιο Καίσαρα, στην προσωπική του αλληλογραφία, και βασίζεται στην αντικατάσταση γραμμάτων ενός κειμένου με κάποιο άλλο γράμμα με σταθερή απόσταση κάθε φορά στο αλφάβητο. Για το λόγο αυτό ονομάζεται και κώδικας μετατόπισης ή ολίσθησης (Shift Cipher).

Για να καταλάβουμε το πως λειτουργεί, ας δούμε το παρακάτω παράδειγμα:

Ας πάρουμε το Ελληνικό Αλφάβητο:

ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

Αν μετατοπίσουμε το αλφάβητο (πχ κατά 3 θέσεις προς τα αριστερά), θα έχουμε πλέον τη σειρά:

ΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΑΒΓ

Η νέα αυτή σειρά του αλφαβήτου αποτελεί τον κώδικα, και το κλειδί κρυπτογράφησης – αποκρυπτογράφησης των δεδομένων είναι το 3.

Ας γράψουμε τα δύο αλφάβητα το ένα κάτω από το άλλο:

  • Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
  • Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω Α Β Γ

τότε το κρυπτογραφημένο μήνυμα: ΒΔΑΠΣΠΧΔΦ ΧΚΠ ΔΞΚΛΘΜΔ θα αντιστοιχεί στο ΨΑΧΝΟΝΤΑΣ ΤΗΝ ΑΛΗΘΕΙΑ.

Με χρήση λίγων μαθηματικών (αριθμητική υπολοίπων), αν αντιστοιχίσουμε κάθε γράμμα του αλφαβήτου, με έναν αριθμό, ξεκινώντας από το 0 για το Α, το 1 για το Β, …, το 23 για το Ω, μπορούμε να κρυπτογραφήσουμε ένα γράμμα x με μετατόπιση ν, με τον τύπο:

Encrypt(χ)=(χ+ν)mod=24, όπου Εncrypt(χ) η νέα θέση του χ, και mod το υπόλοιπο της διαίρεσης (χ+ν) με το 24.

Παράδειγμα: έστω το γράμμα Γ με μετατόπιση 3. Το Γ αντιστοιχεί στο 2 (αφού Α=0, Β=1) και με μετατόπιση 3 θα έχω χ+ν=2+3=5.

5 mod 24=5 (διότι το 24 στο 5, χωράει 0 φορές και μένει το 5 ως έχει). Το 5 όμως είναι το Ζ (αφού Α=0, Β=1, Γ=2, Δ=3, Ε=4, Ζ=5). Πράγματι αν δείτε τα δύο αλφάβητα που γράψαμε παραπάνω, θα δείτε ότι το Γ αντιστοιχεί στο Ζ!

Έν ακόμη παράδειγμα: έστω το γράμμα Ψ με μετατόπιση 3. Το Ψ αντιστοιχεί στο 22 και με μετατόπιση 3 θα έχω χ+ν=22+3=25. Το 25 είναι εκτός ορίων (0 – 23), άρα θα αφαιρέσω 24.

Όμως 25 – 24=1. Το 1 αντιστοιχεί στο Β!

Για την αποκρυπτογράφηση ο τύπος θα γίνει Decrypt(χ)=(χ-ν)mod24

Παράδειγμα: από το κρυπτογραφημένο Ψ με μετατόπιση 3 θα έχουμε: το Ψ είναι στη θέση 22. Με μετατόπιση 3 θα έχουμε χ-ν=22-3=19, δηλαδή το γράμμα Υ.

Μια πολύ ενδιαφέρουσα εφαρμογή για να καταλάβετε πως λειτουργεί ο κώδικας, μπορείτε να βρείτε στη σελίδα της ώρας του κώδικα (Code.org). Στην παρακάτω εικόνα, βλέπετε στα αριστερά ένα κρυπτογραφημένο μήνυμα. Στο κάτω μέρος μπορείτε να κάνετε μετατόπιση του αλφαβήτου (αριστερά η δεξιά) ώστε να αποκρυπτογραφηθεί το μήνυμα. Ο αριθμός που θα βρείτε – και αποκρυπτογραφεί το μήνυμα – είναι οι θέσεις που πρέπει να μετατοπιστεί το αλφάβητο (δηλαδή το κλειδί αποκρυπτογράφησης). Πατήστε στην εικόνα και δοκιμάστε το:

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

Μια λύση για μια αρκετά ισχυρή κρυπτογράφηση, θα μπορούσε να είναι η τυχαία αντικατάσταση των γραμμάτων (Random Substitution Cipher ή κώδικας τυχαίας αντικατάστασης).

Παράδειγμα:

στο ελληνικό αλφάβητο: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ, αντιστοιχίζω κάθε γράμμα με κάποιο άλλο με τυχαία σειρά: ΛΗΝΑΧΩΥΓΠΔΕΘΞΤΙΜΟΒΡΣΨΖΚΦ. Στην περίπτωση αυτή οι δοκιμές δε μπορούν να αποδώσουν αποτέλεσμα. Στην πραγματικότητα, θα μπορούσε να πει κάποιος πως ο κώδικας “δε σπάει”, κάτι που φυσικά θα ανατρέψουμε σε επόμενο άρθρο. Δείτε το παρακάτω βίντεο για να πάρετε μια ιδέα του κώδικα τυχαίας αντικατάστασης:

Στο επόμενο άρθρο θα γνωρίσουμε τη μέθοδο της ανάλυσης συχνότητας εμφάνισης γλώσσας, και θα δούμε πως “ξεκλειδώνει” ο κώδικας τυχαίας αντικατάστασης…

Share
Share
Μετάβαση στο περιεχόμενο