Κατασκευή πρότυπου αλγορίθμου παραγωγής

Κατασκευή πρότυπου αλγορίθμου παραγωγής
συνθηματικών
για
την
αποτελεσματικότερη
αυθεντικοποίηση σε πληροφοριακά συστήματα.
Ιωάννης Αριστειδάκης 1 και Γεώργιος Ασσιόγλου 2
1,2
1
Εκπαιδευτήρια Απόστολος Παύλος
[email protected] , [email protected]
Επιβλέπων Καθηγητής: Λάζαρος Τζήμκας
Καθηγητής Πληροφορικής, Εκπαιδευτήρια Απόστολος Παύλος
[email protected]
ΠΕΡΙΛΗΨΗ
Η ραγδαία ανάπτυξη των ηλεκτρονικών πληροφοριακών συστημάτων, δημιούργησε νέες
υπηρεσίες και πολλαπλές εφαρμογές πληροφόρησης, διασκέδασης, εκπαίδευσης, εμπορίου
μέσω του διαδικτύου. Οι εφαρμογές των υπολογιστών αφορούν πλήθος χρηστών και τις
περισσότερες φορές περιέχουν δεδομένα τα οποία πρέπει να προσπελαστούν μόνο από
συγκεκριμένους εξ’ αυτών. Για το λόγο αυτό έχουν αναπτυχθεί διάφορες πολιτικές και
μοντέλα ασφαλείας για την ασφάλεια των υπολογιστικών συστημάτων. Κάθε μοντέλο
ασφαλείας προσφέρει προστασία η οποία όμως είναι ευάλωτη σε απειλές αφού έχει τρωτά
σημεία. Συνεπώς κανένα σύστημα δεν είναι απόλυτα ασφαλές αλλά μπορεί να γίνει
αποτελεσματικότερο συνδυάζοντας τα θετικά στοιχεία από διάφορα μοντέλα ασφαλείας.
Στην παρούσα εργασία υλοποιήθηκε ένας πρότυπος αλγόριθμος που συνδυάζει τα
πλεονεκτήματα από διάφορα συστήματα ασφαλείας και παράγει μεταβλητούς κωδικούς οι
οποίοι θα χρησιμοποιούνται για την ταυτοποίηση και την αυθεντικοποίηση ενός χρήστη
προκειμένου αυτός να εισέλθει σε ένα υπολογιστικό σύστημα. Ο αλγόριθμος υλοποιήθηκε
με την χρήση της Γλώσσας Προγραμματισμού C++ και παράγει κωδικούς που δεν θα
είναι σταθεροί αλλά θα μεταβάλλονται δυναμικά με το χρόνο. Στόχος είναι, η δημιουργία
ενός προτύπου συστήματος προστασίας ενός οποιουδήποτε υπολογιστικού συστήματος,
που θα παρέχει την απαραίτητη ασφάλεια έναντι αποπειρών παραβίασης λογισμικού και
θα είναι ανθεκτικό σε λεξικογραφικές επιθέσεις. Το παρών λοιπόν πρόγραμμα προσπαθεί
να συνδυάσει χαρακτηριστικά από επιμέρους συστήματα ασφαλείας ώστε να γίνει
ασφαλέστερο και αυτό επιτυγχάνεται σε ικανοποιητικό βαθμό χάρη στους μαθηματικούς
αλγόριθμους οι οποίοι δεν παράγουν έναν σταθερό κωδικό εισόδου, αλλά έναν μεταβλητό
που εναλλάσσεται σε σχέση με τον χρόνο, μη επαναλαμβανόμενα.
ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ: Ασφάλεια πληροφοριακών συστημάτων, Προγραμματισμός,
Προσομοίωση, Μαθηματικός αλγόριθμος, αυθεντικοποίηση, μοντέλα ασφαλείας.
1
ΕΙΣΑΓΩΓΗ
Η χρήση μοντέλων ασφαλείας είναι ευρέως διαδεδομένη στην σύγχρονη εποχή. Ένα
μοντέλο ασφαλείας θεωρείται μία εφαρμογή που εξασφαλίζει την προστασία των
δεδομένων μας, είτε αυτά είναι αρχεία, φάκελοι, εφαρμογές κ.ά. Χρησιμοποιούνται
καθημερινά από εκατομμύρια άτομα παγκοσμίως για πρόσβαση σε ιστοσελίδες, βάσεις
δεδομένων, ηλεκτρονικά παιχνίδια, αλλά και σε προσωπικές ηλεκτρονικές συσκευές.
Για αυτό, σκοπός της παρούσας εργασίας είναι η κατασκευή ενός γενικευμένου
μοντέλου ασφαλείας, φιλικό προς τον χρήστη και ταυτόχρονα, ανθεκτικό σε κάθε είδους
κακόβουλης επίθεσης.
Για να επιτευχθεί η ασφαλής χρήση των πληροφοριακών συστημάτων και να
αποτραπεί η χρήση τους από μη-εξουσιοδοτημένα άτομα αναπτύχθηκαν διάφοροι
μηχανισμοί ασφαλείας ώστε να πραγματοποιηθεί η ταυτοποίηση και η αυθεντικοποίηση
ενός χρήστη. Ταυτοποίηση (identification) ενός λογικού υποκειμένου καλείται η
διαδικασία εκείνη, κατά την οποία το λογικό υποκείμενο παρέχει σε ένα Πληροφοριακό
Σύστημα (στο εξής θα αναφέρεται ως ΠΣ) τις πληροφορίες που απαιτούνται
προκειμένου να συσχετιστεί με ένα από τα αντικείμενα που δικαιούνται προσπέλασης
στους πόρους (resources) του. Αυθεντικοποίηση (authentication) ενός λογικού
υποκειμένου, καλείται η διαδικασία εκείνη, κατά την οποία ένα λογικό υποκείμενο
παρέχει σε ένα ΠΣ τις πληροφορίες που απαιτούνται προκειμένου να ελεγχθεί η
βασιμότητα της συσχέτισης που επιτεύχθηκε κατά τη διαδικασία της ταυτοποίησης.
Υπάρχουν πολλές τεχνικές για να επιτευχθεί η αυθεντικοποίηση ενός λογικού
υποκειμένου από ένα ΠΣ με τους διαδεδομένους:

Τεχνική I: Κάτι που το λογικό υποκείμενο γνωρίζει (πχ. ένα συνθηματικό ή
ένα PIN)

Τεχνική II: Κάτι που το λογικό υποκείμενο κατέχει (μαγνητική συσκευή
αναγνώρισης πχ έξυπνη κάρτα ή ψηφιακό πιστοποιητικό )

Τεχνική III: Κάτι που χαρακτηρίζει το λογικό υποκείμενο με βάση
μονοσήμαντα βιομετρικά χαρακτηριστικά του (συστήματα βιομετρικής
τεχνολογίας, πχ. εφαρμογές δακτυλικών αποτυπωμάτων, αναγνώριση φωνής
και ίριδας ματιού)

Τεχνική IV: Κάτι που προσδιορίζει την τοποθεσία που βρίσκεται το λογικό
υποκείμενο (πχ διεύθυνση IP).
Κανένα σύστημα δεν μπορεί να είναι απόλυτα ασφαλές καθώς κάθε τεχνική
ασφαλείας έχει κάποια πλεονεκτήματα και μειονεκτήματα. Ενδεικτικά στον πίνακα 1
αναφέρονται τα σημαντικότερα από αυτά:
Η πιο διαδεδομένη τεχνική ασφαλείας για την αυθεντικοποίηση σε ΠΣ είναι η χρήση
συνθηματικών. Χρησιμοποιούνται σχεδόν παντού, από έναν προσωπικό υπολογιστή στο
σπίτι όπου κάθε χρήστης έχει ένα συνθηματικό ώστε να προστατεύει τα αρχεία του, σε
ιστοσελίδες, σε λογαριασμούς ηλεκτρονικού ταχυδρομείου, σε τράπεζες (ΡΙΝ) κτλ.
Συνθηματικό είναι η πληροφορία η οποία σχετίζεται με ένα λογικό υποκείμενο και η
οποία επιβεβαιώνει την ταυτότητα του λογικού υποκειμένου. Οι λόγοι που είναι τόσο
ευρεία η εφαρμογή τους είναι το ότι έχουν απλή λειτουργία, χαμηλό κόστος καθώς δεν
απαιτούν πρόσθετο εξοπλισμό υλοποίησης, παρέχουν ικανοποιητικό βαθμό προστασίας
για τον απλό χρήστη ενός ΠΣ. Όμως όπως και κάθε άλλη τεχνική ασφαλείας έχουν και
κάποια μειονεκτήματα όπως η πιθανότητα τυχαίας αποκάλυψης του συνθηματικού ή
αποκάλυψής του με συστηματικό τρόπο (λεξικογραφικές επιθέσεις), που μπορούν όμως
2
να ελαχιστοποιηθούν με την χρήση σύνθετων συνθηματικών, μεγάλων σε μέγεθος που
να συνδυάζουν τυχαία χαρακτήρες και αριθμούς, ή με την χρήση μεταβλητών κωδικών
που να αλλάζουν κάθε φορά που αλλάζει μία παράμετρος κατά την εισαγωγή στο ΠΣ.
Φυσικά όσο αυξάνονται οι απαιτήσεις στην ασφάλεια τόσο πιο πολύπλοκο γίνεται το
σύστημα και συνεπώς τόσο πιο δύσκολο στην χρήση για τον απλό χρήστη και συνεπώς
αναφέρονται σε κάποιον με πιο εξειδικευμένες γνώσεις.
Πίνακας 1: Πλεονεκτήματα-Μειονεκτήματα Τεχνικών Αυθεντικοποίησης
Τεχνική
I: Κάτι που
γνωρίζει
IΙ: Κάτι
που
κατέχει
IΙΙ: Κάτι
που το
χαρακτη
ρίζει
Πλεονεκτήματα

Εύκολη υλοποίηση και
εφαρμογή

Τροποποιούνται εύκολα

Δε χάνονται ή κλέβονται

Αν και είναι απλά στη
χρήση τους, στην
περίπτωση που είναι ένας
μοναδικός συνδυασμός
αριθμών και γραμμάτων,
δεν αποκαλύπτονται εύκολα


Δεν αντιγράφονται εύκολα
καθώς κατασκευάζονται
από ειδικά υλικά τα οποία
δεν είναι ευρέως διαθέσιμα
Μειονεκτήματα

Τα τεκμήρια
αυθεντικοποίησης
εύκολα μπορούν να
αντιγραφούν

Συνήθως είναι
εύκολο να τα
μαντέψει κανείς,
χωρίς ιδιαίτερες
τεχνικές γνώσεις

Συνήθως μπορούν να
αποκαλυφθούν με
αυτοματοποιημένες
μεθόδους

Υψηλό κόστος

Μπορούν να χαθούν
ή να κλαπούν

Δυσκολίες στην
κατασκευή
αξιόπιστων
συσκευών
αναγνώρισης με
χαμηλό κόστος

Δεν είναι αλάνθαστα
Παρέχουν μεγαλύτερη
ασφάλεια από την Τεχνική
I και II.
Στην παρούσα εργασία επιχειρήθηκε η κατασκευή ενός συστήματος για την
αυθεντικοποίηση χρηστών από ένα ΠΣ, που να συνδυάζει χαρακτηριστικά από δύο
τεχνικές ασφαλείας που αναφέρθηκαν παραπάνω (συνθηματικό και κάτι που έχει ο
χρήστης: usb flash). Επιπρόσθετα σε κάθε τεχνική εφαρμόστηκαν πρόσθετα μέτρα
ασφαλείας, δηλαδή το συνθηματικό δεν ήταν ένα απλό σταθερό συνθηματικό αλλά ένα
μεταβλητό συνθηματικό που παράγονταν μέσω μίας συνάρτησης ανάλογα με την
3
χρονική-ημερολογιακή στιγμή που ο χρήστης επιθυμεί να εισέλθει στο ΠΣ. Επιπλέον για
να μπορέσουν να παραχθούν αυτά τα συνθηματικά απαιτούνταν να έχει ο χρήστης μία
συσκευή απαραίτητη για την δημιουργία τους, στην οποία εφαρμόστηκαν και σε αυτή
πρόσθετα μέτρα ασφαλείας που περιγράφονται αναλυτικά παρακάτω.
ΜΕΘΟΔΟΣ
Γενικές Πληροφορίες
Κύριο εργαλείο το οποίο χρησιμοποιήθηκε στην εκπόνηση τούτης της εργασίας, ήταν
η χρήση της Γλώσσας Προγραμματισμού C++. Με την βοήθεια της γλώσσας,
δημιουργήσαμε δύο προγράμματα-εφαρμογές. Το πρώτο, είναι ιδιωτικό, δηλαδή το
κατέχει μόνο ο επιθυμητός χρήστης σε προσωπικό αποθηκευτικό χώρο, λ.χ. cd, dvd,
δίσκος τύπου flash κ.ά. Μέσω αλγορίθμων, που κατασκευάσαμε ακριβώς γι αυτό το
σκοπό, δίνει στον χρήστη έναν κωδικό που ισχύει για τη συγκεκριμένη χρονική περίοδο,
αφού μεταβάλλεται μη περιοδικά ανάλογα με το χρόνο. Το δεύτερο πρόγραμμα θα
μπορούσε, με τη χρήση ανεπτυγμένου προγραμματισμού να συνδεθεί σε ένα φάκελο,
αρχείο ή άλλο πρόγραμμα που χρειάζεται προστασία. Ωστόσο εμείς επικεντρωθήκαμε
στην δημιουργία ενός γενικευμένου μοντέλου ασφαλείας, χωρίς να το έχουμε
προσαρμόσει σε κάτι συγκεκριμένο. Τρέχοντας το δεύτερο πρόγραμμα ο χρήστης
καλείται να πληκτρολογήσει τον κωδικό που του δόθηκε απ’ το προηγούμενο. Το
σύστημα θα συγκρίνει τα δεδομένα που εισήχθησαν με τον σωστό κωδικό και αναλόγως
θα επιτρέψει την είσοδο ή όχι.
Σχεδιασμός και Λειτουργία του Πρώτου Προγράμματος (Γεννήτρια Κωδικών)
Όπως προαναφέρθηκε το συγκεκριμένο πρόγραμμα είναι ιδιωτικό. Αυτό σημαίνει ότι
θα το κατέχουν μόνο τα εξουσιοδοτημένα άτομα σε ένα προσωπικό και ασφαλές φορητό
δίσκο δεδομένων (πχ. Usb flash disk). Συνεπώς παρέχεται η προστασία τύπου «είναι
κάτι που κατέχω», όπου πολύ δύσκολα μπορεί να βρεθεί ο κωδικός εκτός από την
περίπτωση που ο φορητός δίσκος κλαπεί η πέσει στην κατοχή μη εξουσιοδοτημένων
ατόμων. Επιπλέον, ακόμη και σε περίπτωση κλοπής ή απώλειας του φορητού δίσκου,
υπάρχει επιπλέον προστασία με κωδικό ΡΙΝ του οποίου η εισαγωγή είναι απαραίτητη
για να λειτουργήσει η γεννήτρια κωδικών. Όταν κάποιος χρήστης θελήσει να βρει τον
κωδικό για το δεύτερο πρόγραμμα, αρκεί να εισάγει τον δίσκο στον υπολογιστή και να
τρέξει το πρώτο πρόγραμμα. Η ιδέα είναι ότι χωρίς τον φορητό δίσκο ο πιθανός
παραβάτης δεν μπορεί να έχει πρόσβαση στην γεννήτρια κωδικών (πρώτο πρόγραμμα)
και συνεπώς είναι αδύνατο να αποκτήσει τον κωδικό πρόσβασης.
Ανοίγοντας την γεννήτρια κωδικών ζητείται από τον χρήστη ένας στατικός κωδικός
προκειμένου να μπει στο κυρίως πρόγραμμα, ένας κωδικός τύπου ΡΙΝ που
εξουσιοσιοδοτεί τον χρήστη να τρέξει το πρώτο πρόγραμμα (Σχήμα 1). Σε περίπτωση
που ο κωδικός που πληκτρολογήθηκε είναι λάθος στην οθόνη θα εμφανιστεί μήνυμα ότι
η είσοδος απαγορεύεται και μετά από 2 δευτερόλεπτα το πρόγραμμα θα κλείσει
αυτόματα (Σχήμα 2). Η καθυστέρηση των 2 δευτερολέπτων καθώς και το κλείσιμο του
προγράμματος δυσκολεύουν κάποια κακόβουλα προγράμματα να το παραβιάσουν
(προγράμματα λεξικογραφικών επιθέσεων που προσπαθούν να βρουν το συνθηματικό
από ένα σύστημα δοκιμάζοντας τυχαία κωδικούς που παράγουν με τον συνδυασμό
χαρακτήρων και λέξεων από κάποιο λεξικό).
4
Σχήμα 1: Αρχική οθόνη για εισαγωγή κωδικού πρόσβασης για την γεννήτρια κωδικών
Σχήμα 2: Γεννήτρια κωδικών –αποτυχημένη προσπάθεια εισαγωγής κωδικού
Στην περίπτωση που ο κωδικός είναι σωστός το πρόγραμμα συνεχίζει ζητώντας απ’ τον
χρήστη να πληκτρολογήσει τέσσερις μεταβλητές (Σχήμα 3). Οι μεταβλητές αυτές είναι
ένα είδος εσωτερικού κωδικού, μόνο που εάν δεν εισαχθούν σωστά το πρόγραμμα θα
συνεχίσει μεν κανονικά, όμως το κλειδί που θα παράγει δεν θα είναι σωστό και όταν το
εισάγει στον λήπτη κλειδιών (δεύτερο πρόγραμμα) δεν θα του επιτραπεί η είσοδος
καθώς ο κωδικός που παρήγαγε το πρώτο πρόγραμμα είναι λανθασμένος. Τη σωστή
τιμή και σειρά των μεταβλητών θα την ξέρει μόνο ο εξουσιοδοτημένος χρήστης, και
συνεπώς έτσι δημιουργείται το τρίτο στάδιο ασφάλειας. Είναι τοποθετημένες έτσι ώστε
ακόμα κι αν ο εισβολέας καταφέρει και μπει στο κυρίως πρόγραμμα να του είναι
αδύνατο να βγάλει σωστό κλειδί, ενώ είναι σχεδόν αδύνατο να τις μαντέψει
χρησιμοποιώντας κάποιο πρόγραμμα λόγω της φύσης της γεννήτριας κλειδιών. Τέλος
εάν εισαχθούν οι κατάλληλες μεταβλητές το πρόγραμμα βγάζει το σωστό κλειδί, το
οποίο όταν πληκτρολογηθεί στον λήπτη κλειδιών που αναλύεται στην επόμενη ενότητα,
θα επιτρέψει την πρόσβαση στο υπολογιστικό σύστημα το οποίο θέλουμε να
προστατεύσουμε. Η συνάρτηση η οποία παράγει το επιθυμητό κλειδί χρησιμοποιεί
5
στοιχεία της ημερομηνίας και της ώρας του πληροφοριακού συστήματος από το οποίο
γίνεται η πρόσβαση, και συνεπώς παράγει έναν κωδικό του οποίου η ισχύς είναι
περιορισμένη. Αυτό έχει συνέπεια ότι είναι πολύ δύσκολο να βρεθεί με συστηματικό
τρόπο καθώς η διάρκεια ζωής του περιορίζεται χρονικά και συνεπώς ακόμη και αν
κάποιος τον υποκλέψει δεν μπορεί να τον χρησιμοποιήσει μετά από ένα χρονικό
διάστημα καθώς δεν θα ισχύει (Γεννήτρια παραγωγής τυχαίων αριθμών «μίας χρήσης»).
Σχήμα 3: Γεννήτρια κωδικών – Εισαγωγή μεταβλητών για παραγωγή κλειδιού
Λόγω της πολυπλοκότητας του αλγορίθμου, ο κώδικας του προγράμματος είναι
εκτεταμένος και συνεπώς δεν μπορεί να παρατεθεί στο κείμενο. Πρέπει επίσης να
αναφερθεί ενδεικτικά πως προκύπτει το κλειδί από την γεννήτρια παραγωγής κωδικών:
Κλειδί = z ∙ x + y
όπου τα x, y, z είναι μεταβλητές που υπολογίζονται με βάση τις μεταβλητές a, b, c, d που
εισάγονται από τον χρήστη και από την ημέρα, το μήνα και το έτος που λαμβάνονται
από την ώρα του Πληροφορικού Συστήματος σύμφωνα με τους τύπους:
x=2 ∙ month+8 ∙ year-3 ∙ (62+sday) + 9 ∙ day
y = a ∙ b ∙ c ∙ month + a3+ b2+4 ∙ d ∙ c2 ∙ sday
z= 5 ∙ b ∙ c ∙ month3 - 2 ∙ sday2 - d2
όπου:





a, b, c, d: οι μεταβλητές που πρέπει να εισάγει ο χρήστης στο σύστημα.
sday: η ημέρα που προκύπτει από την ημερομηνία του συστήματος.
month: ο μήνας που προκύπτει από την ημερομηνία του συστήματος.
year: το έτος που προκύπτει από την ημερομηνία του συστήματος.
day: ένας αριθμός που προκύπτει ύστερα από ένα σενάριο επιλογών και
πράξεων πάνω στη μεταβλητή sday και στη μεταβλητή month.
6
Σχεδιασμός και Λειτουργία Δεύτερου Προγράμματος (Λήπτης Κλειδιών)
Το δεύτερο πρόγραμμα ή αλλιώς και λήπτης κλειδιών χρησιμοποιεί τον ίδιο περίπου
αλγόριθμο προκειμένου να παράγει τον κωδικό που αντιστοιχεί στην συγκεκριμένη
ημερομηνία και ώρα. Οι μεταβλητές που απαιτούνταν από τον χρήστη στην γεννήτρια
κλειδιών τώρα δεν είναι αναγκαίες αφού έχουν εισαχθεί είδη στον πηγαίο κώδικα του
λήπτη κλειδιών. Το αποτέλεσμα των πράξεων που διενεργούνται από το πρόγραμμα
παραμένουν προσωρινά στη μνήμη του υπολογιστή και δεν εμφανίζεται πουθενά στη
οθόνη. Με την πληκτρολόγηση του κωδικού από τον χρήστη το πρόγραμμα συγκρίνει το
αποτέλεσμα που έχει βγάλει με το νούμερο που έχει εισαχθεί. Στην περίπτωση που οι
δύο κωδικοί είναι ταυτόσημοι, τότε το πρόγραμμα μας επιτρέπει την είσοδο στο
σύστημα (Σχήμα 4). Σε αντίθετη περίπτωση δηλαδή όταν τα νούμερα δεν ταυτίζονται
μεταξύ τους, εμφανίζεται στην οθόνη μήνυμα ότι η πρόσβαση απαγορεύεται και μετά
από 2 δευτερόλεπτα το πρόγραμμα κλείνει αυτόματα. Αυτό γίνεται για τους ίδιους
λόγους με το πρώτο πρόγραμμα, δηλαδή για την δυσκολότερη εύρεση του κωδικού από
κακόβουλα προγράμματα πού δοκιμάζουν μέχρι και εκατομμύρια συνδυασμούς το
δευτερόλεπτο. Με τον τρόπο αυτό μειώνουμε τους συνδυασμούς πού κάνουν, στην
καλύτερη περίπτωση σε 2 ανά δευτερόλεπτο. Ακόμα το γεγονός ότι μετά από κάθε
προσπάθεια θα πρέπει να ξανανοίγει το πρόγραμμα δυσκολεύει ιδιαίτερα τον πιθανό
εισβολέα.
Σχήμα 4: Ενδεικτική οθόνη από τον λήπτη κλειδιών (2ο πρόγραμμα)
Συζήτηση και Συμπεράσματα
Σχεδιάστηκε και κατασκευάστηκε ένα αξιόπιστο πρότυπο σύστημα ασφαλείας φιλικό
προς το χρήστη και ταυτόχρονα ικανό να αντισταθεί στις περισσότερες επιθέσεις καθώς
συνδυάζει τα πλεονεκτήματα από διάφορες τεχνικές ασφαλείας που χρησιμοποιούνται
με αποτέλεσμα να γίνεται πιο αξιόπιστη και ασφαλής η είσοδος σε ένα ΠΣ. Αποτελεί
συνδυασμό διαφόρων τεχνικών αυθεντικοποίησης για την προσπέλαση των
μειονεκτημάτων τους και την δημιουργία ενός πιο αξιόπιστου και ανθεκτικού
συστήματος σε λεξικογραφικές και άλλου είδους επιθέσεις.
Μέσω αυτής της μεθόδου, επιτυγχάνεται μέγιστο επίπεδο ασφαλείας, αρχικά με τη
χρήση έξυπνου συστήματος εξόδου από το πρόγραμμα σε περίπτωση λανθασμένης
εισαγωγής κωδικού και επιπλέον με τη χρήση μεταβλητού κωδικού αντί σταθερού που
εναλλάσσεται με βάση το χρόνο. Επιπλέον υπάρχει προστασία ακόμα και σε περίπτωση
αποκάλυψης του κλειδιού αφού αυτό είναι προορισμένο να διαρκεί για συγκεκριμένο
7
χρονικό διάστημα. Ο κωδικός που θα το διαδεχτεί θα διαφέρει ολοκληρωτικά από τον
προηγούμενο άρα ο εισβολέας θα πρέπει να τον μαντέψει ξανά από την αρχή.
Η εντροπία ενός κωδικού ορίζεται ως οι μέγιστοι πιθανοί συνδυασμοί για την
αποκάλυψη του κωδικού. Στον δικό μας αλγόριθμο βρέθηκε ότι είναι 302 bits ή 1091
πιθανοί συνδυασμοί που πρέπει να δοκιμαστούν για να μπορέσει να σπάσει ο κωδικός.
Συνεπώς είναι αρκετά ισχυρό το παραγόμενο κλειδί και πρακτικά πολύ δύσκολο να
παραβιαστεί καθώς η ισχύς του είναι περιορισμένη.
Όμως όπως αναφέρθηκε και στην εισαγωγή κανένα σύστημα ασφαλείας δεν μπορεί να
είναι τέλειο και απόλυτα ασφαλές. Το ίδιο και το σύστημα που υλοποιήθηκε στην
παρούσα εργασία έχει περιθώρια βελτίωσης ώστε να γίνει ακόμη πιο αποτελεσματικό.
Θα μπορούσε να γίνει χρήση μεγαλύτερου και πιο σύνθετου αλγόριθμου για την
παραγωγή δυσκολότερων κωδικών για ακόμη μεγαλύτερη ασφάλεια. Επίσης χρήση
περαιτέρω προγραμματισμού για την σύνδεση του λήπτη κωδικών με κάποιο αρχείο ή
φάκελο για την προστασία του, θα βοηθούσε ώστε να μπορέσει να χρησιμοποιηθεί και
σε εφαρμογές σε υπολογιστές.
ΒΙΒΛΙΟΓΡΑΦΙΑ
Cplusplus.com tutorial, [On-line] Available: http://www.cplusplus.com/doc/tutorial/
Diffie, W., and Hellman, M. (1976), Multiuser cryptographic techniques, National
Computer Conference, New York.
Evans, A., Kantrowitz, J., and Weiss, E. (1974). A user authentication system not
requiring secrecy in the computer, Communications of the ACM, 17, 437-442.
Kahn, D. (1967). The Codebreakers: the Story of Secret Writing, New York: Macmillan.
Lidinsky. W et al. (1990). Identification and authentication of end user systems for
packet communications network services, US Patent, 4, 896, 319.
Mills, D. (1995). Improved algorithms for synchronizing computer network clocks,
IEEE ACM Transactions on Networking, 3 (3), 65-75.
Needham, M., Michael, D., Schroeder. (1978). Using encryption for authentication in
large networks of computers, Magazine Communications of the ACM, 21 (12), 993999.
Newton, F., and Williams, G. (1998). User Identification and authentication system
using ultra long identification keys and ultra large databases of identification keys for
secure remote terminal access to a host computer, US Patent, 5, 771, 291.
Pohlig, S., and Hellman, M. (1979). An improved algorithm for computing algorithms in
GF(p) and its cryptographic significance, IEEE Trans. Inform. Theorv, 3 (1), 36-44.
Rhoads, G., (1998), Identification/authentication system using robust, distributed coding,
US Patent, 5, 745, 604.
Robling Denning, D. (1982). Cryptography and data security, Addison-Wesley Longman
Publishing Co, Inc. Boston, MA, USA.
Shannon, C. (1949). Communication theory of secrecy systems, Bell Syst. Tech. J., 28,
656-715.
Steiner, J., Neuman, C., and Schiller J. (1988), Kerberos: An Authentication Service for
Open Network Systems, M.I.T. Athena Project, Cambridge, Massachusetts, 1-15.
Whitfield, D., and Hellman, M. (1976). New Directions in Cryptography, IEEE
Transactions on Information Theory, 22 (6), 644-654.
8