3 Εισαγωγή στην Κρυπτογραφία -...

16
74 3 Εισαγωγή στην Κρυπτογραφία 3.1 Βασικές Έννοιες Η κρυπτογραφία χρησιμοποιείται σήμερα ως ένα χρήσιμο εργαλείο στην ασφάλεια πληροφοριών, δηλαδή την προστασία των δεδομένων ως προς την εμπιστευτικότητα, την ακεραιότητα και τη διαθεσιμότητά τους. Ας εξετάσουμε τους σχετιζόμενους με την κρυπτογραφία βασικούς όρους: Κρυπτογραφικός αλγόριθμος (cipher). Αποτελείται από έναν αλγόριθμο κρυπτογράφησης και αποκρυπτογράφησης Κλασσικοί κρυπτογραφικοί αλγόριθμοι Αλγόριθμοι Αντικατάστασης (Substitution) Ο αλγόριθμος του Καίσαρα (Ceasar cipher) Κάθε γράμμα αντικαθίσταται από το επόμενο κατά 3 θέσεις γράμμα Αλγόριθμος Κρυπτογράφησης Αλγόριθμος Αποκρυπτογράφησης Παράδειγμα: Αρχικό μήνυμα: I CAME I SAW I CONQUERED Κρυπτογραφημένο μήνυμα: L FDPH L VDZ L FRQTXHUHG Αλγόριθμος Κρυπτογράφησης. Ένας αλγόριθμος Κρυπτογράφησης (Encryption) μετατρέπει τα δεδομένα σε μη αναγνώσιμη μορφή, με σκοπό την διασφάλιση της εμπιστευτικότητας των δεδομένων (confidentiality). Η κρυπτογράφηση προσφέρει το ψηφιακό ισοδύναμο ενός σφραγισμένου φακέλου. Αλγόριθμος Αποκρυπτογράφησης. Ένας αλγόριθμος Αποκρυπτογράφησης (Decryption) αντιστρέφει την διαδικασία της κρυπτογράφησης, μετατρέπει τα κρυπτογραφημένα δεδομένα στην αρχική τους μορφή. Κρυπτογραφικό κλειδί. Η σύγχρονη κρυπτογραφία, χρησιμοποιεί ένα κλειδί (key), δηλαδή μία συμβολοσειρά η οποία μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση ή/και αποκρυπτογράφηση, καθώς και για τη δημιουργία ή επαλήθευση ψηφιακής υπογραφής. Τα κρυπτογραφικά κλειδιά μπορεί να χρησιμοποιούνται από συμμετρικούς ή μη συμμετρικούς (δημόσιου κλειδιού) κρυπτογραφικούς αλγόριθμους.

Upload: vuonganh

Post on 01-Mar-2019

232 views

Category:

Documents


0 download

TRANSCRIPT

74

3 Εισαγωγή στην Κρυπτογραφία

3.1 Βασικές Έννοιες Η κρυπτογραφία χρησιµοποιείται σήµερα ως ένα χρήσιµο εργαλείο στην ασφάλεια πληροφοριών, δηλαδή την προστασία των δεδοµένων ως προς την εµπιστευτικότητα, την ακεραιότητα και τη διαθεσιµότητά τους. Ας εξετάσουµε τους σχετιζόµενους µε την κρυπτογραφία βασικούς όρους: Κρυπτογραφικός αλγόριθµος (cipher). Αποτελείται από έναν αλγόριθµο κρυπτογράφησης και αποκρυπτογράφησης

Κλασσικοί κρυπτογραφικοί αλγόριθµοιΑλγόριθµοι Αντικατάστασης(Substitution)

Ο αλγόριθµος του Καίσαρα (Ceasar cipher)Κάθε γράµµα αντικαθίσταται από το επόµενοκατά 3 θέσεις γράµµα

Αλγόριθµος Κρυπτογράφησης

Αλγόριθµος Αποκρυπτογράφησης

Παράδειγµα:Αρχικό µήνυµα: I CAME I SAW I CONQUERED

Κρυπτογραφηµένο µήνυµα: L FDPH L VDZ L FRQTXHUHG

Αλγόριθµος Κρυπτογράφησης. Ένας αλγόριθµος Κρυπτογράφησης (Encryption) µετατρέπει τα δεδοµένα σε µη αναγνώσιµη µορφή, µε σκοπό την διασφάλιση της εµπιστευτικότητας των δεδοµένων (confidentiality). Η κρυπτογράφηση προσφέρει το ψηφιακό ισοδύναµο ενός σφραγισµένου φακέλου. Αλγόριθµος Αποκρυπτογράφησης. Ένας αλγόριθµος Αποκρυπτογράφησης (Decryption) αντιστρέφει την διαδικασία της κρυπτογράφησης, µετατρέπει τα κρυπτογραφηµένα δεδοµένα στην αρχική τους µορφή. Κρυπτογραφικό κλειδί. Η σύγχρονη κρυπτογραφία, χρησιµοποιεί ένα κλειδί (key), δηλαδή µία συµβολοσειρά η οποία µπορεί να χρησιµοποιηθεί για την κρυπτογράφηση ή/και αποκρυπτογράφηση, καθώς και για τη δηµιουργία ή επαλήθευση ψηφιακής υπογραφής. Τα κρυπτογραφικά κλειδιά µπορεί να χρησιµοποιούνται από συµµετρικούς ή µη συµµετρικούς (δηµόσιου κλειδιού) κρυπτογραφικούς αλγόριθµους.

75

Κρυπτογραφία - Εισαγωγή

Ένας κρυπτογραφικός αλγόριθµος αποτελείται από:Έναν αλγόριθµο κρυπτογράφησης (encryption algorithm)

Έναν αλγόριθµο αποκρυπτογράφησης (decryption algorithm)

Kurose, 2003

Συµµετρική Κρυπτογράφηση: περιλαµβάνει τους κρυπτογραφικούς αλγόριθµους στους οποίους χρησιµοποιείται το ίδιο κλειδί για την κρυπτογράφηση και την αποκρυπτογράφηση των δεδοµένων. Στη συµµετρική κρυπτογράφηση το κλειδί κρυπτογράφησης/αποκρυπτογράφησης είναι εξ ορισµού µυστικό κλειδί, γνωστό µόνο στους εξουσιοδοτηµένους κατόχους.

Συµµετρικοί κρυπτογραφικοί αλγόριθµοιΣυµµετρικός αλγόριθµος ή Αλγόριθµος Μυστικού Κλειδιού

To ίδιο κλειδί για κρυπτογράφηση και αποκρυπτογράφηση (ΚΑ = ΚΒ = Κ)

Πρόβληµα: Πώς ανταλλάσουν το µυστικό κλειδί δυο χρήστες;Το κανάλι µέσω του οποίου ανταλλάσσεται το Κ πρέπει να είναι ασφαλές!

Το Πρόβληµα της ∆ιαχείρισης Κλειδιού (Key Management)

ΚΑλγόριθµοςΑποκρυπτ/σης

Μή

«Λάθος»

ΑλγόριθµοςΚρυπτογρ/σης

Secure Channel

ΜEΚ(Μ)

Κ1

2

3

4

5

Μη Συµµετρική Κρυπτογράφηση ή Κρυπτογράφηση ∆ηµοσίου Κλειδιού: περιλαµβάνει τους κρυπτογραφικούς αλγόριθµους στους οποίους χρησιµοποιείται ένα κλειδί για κρυπτογράφηση και ένα διαφορετικό κλειδί για την αποκρυπτογράφηση των δεδοµένων. Τα κλειδιά αυτά αποτελούν ένα µαθηµατικά συνδεδεµένο ζεύγος

76

κλειδιών όπου η γνώση του ενός κλειδιού δεν οδηγεί στην αποκάλυψη του άλλου. Το κλειδί κρυπτογράφησης γνωστοποιείται (συνήθως µέσω ψηφιακού πιστοποιητικού) σε τρίτους και λέγεται δηµόσιο κλειδί ενώ το κλειδί αποκρυπτογράφησης είναι γνωστό µόνο στον κάτοχό του και λέγεται ιδιωτικό ή µυστικό κλειδί. Η κρυπτογράφηση ∆ηµοσίου Κλειδιού µπορεί να χρησιµοποιηθεί και για τη δηµιουργία και επαλήθευση ψηφιακής υπογραφής.

Αλγόριθµοι ∆ηµόσιου Κλειδιού (κρυπτογράφηση)Η Αlice χρησιµοποιεί το ∆ηµόσιο Κλειδί eB του Bob για νακρυπτογραφήσει το Μ: Ο Bob χρησιµοποιεί το Ιδιωτικό Κλειδί του dB για νααποκρυπτογραφήσει το µήνυµα: )(CDM

Bd=

dB

ΑλγόριθµοςΑποκρυπτ/σηςM Αλγόριθµος

Κρυπτογρ/σης

Authenticated Channel

M)(MEC

Be=

1

2

3

4

5

eB

)(MECBe=

Αλγόριθµοι ∆ηµόσιου Κλειδιού (Ψηφιακή Υπογραφή)Ο Bob χρησιµοποιεί το Ιδιωτικό του κλειδί dB για υπογράψειψηφιακά το µήνυµαΗ Αlice χρησιµοποιεί το ∆ηµόσιο Κλειδί του Bob eB για ναεπαληθεύσει την υπογραφή

Το πρόβληµα της ∆ιαχείρισης Κλειδιού έχει επιλυθεί ????

Καινούριο πρόβληµα: Πώς ξέρει η Alice ότι το eΒ είναι όντως του Bob?

)(MECBd=

dB

ΑλγόριθµοςΥπογραφής

M ΑλγόριθµοςΕπαλήθευσης

Authenticated Channel

OKή

«Λάθος»

eB

)(, MECMBd=

1

4

3

2

2

Ψηφιακή Υπογραφή: µία συµβολοσειρά η οποία συνοδεύει ηλεκτρονικά δεδοµένα ή αρχεία και µπορεί να χρησιµοποιηθεί για την επαλήθευση της ακεραιότητάς τους, καθώς και για τον καταλογισµό ευθύνης (non repudiation). Για τη δηµιουργία/επαλήθευση ψηφιακών υπογραφών χρησιµοποιείται κρυπτογράφηση

77

δηµόσιου κλειδιού. Το ιδιωτικό κλειδί χρησιµοποιείται για τη δηµιουργία της υπογραφής και το δηµόσιο κλειδί για την επαλήθευση της υπογραφής. Ψηφιακό Πιστοποιητικό: είναι ένα ψηφιακό έγγραφο το οποίο χρησιµοποιείται στην κρυπτογραφία ∆ηµόσιου Κλειδιού, για να πιστοποιήσει την αυθεντικότητα των δηµόσιων κλειδιών των χρηστών. Ένα ψηφιακό πιστοποιητικό περιλαµβάνει το δηµόσιο κλειδί ενός χρήστη, το όνοµα του κατόχου του, τους χρησιµοποιούµενους αλγόριθµους και διάφορες άλλες πληροφορίες σχετικά µε τον κάτοχο του κλειδιού. Για να είναι έγκυρο ένα ψηφιακό πιστοποιητικό, είναι υπογεγραµµένο από κάποια Αρχή Πιστοποίησης και περιλαµβάνει µια ηµεροµηνία λήξης (ή Περίοδο Ισχύος).

Πιστοποιητικά ∆ηµόσιου κλειδιού

As a Certification Authority, I assert that this Public Key is associated with Joe Smith

Signed, Certification Authority

X.509 Certificate

http://www.e-publishing.af.mil/contentmgmt/PKI%20Tutorial.ppt

Serial #: 5Subject: Bob

Το πιστοποιητικό τουBob εκδόθηκε απότην Αρχή ΠιστοποίησηςCA-1

Public Key:

SignatureCA-1

Όλοι γνωρίζουντο δηµόσιο

κλειδί της CA-1From: 02-28-01To: 02-28-03

… και τοχρησιµοποιούν γιανα επαληθεύσουντην υπογραφή στοπιστοποιητικό

Αρχή Πιστοποίησης: είναι µία οντότητα η οποία έχει το δικαίωµα να εκδίδει και να ανακαλεί ψηφιακά πιστοποιητικά. Μία Αρχή Πιστοποίησης θα πρέπει να κατέχει και η ίδια ένα ζεύγος κλειδιών για την υπογραφή των πιστοποιητικών που εκδίδει. Το δηµόσιο κλειδί της Αρχής Πιστοποίησης θα πρέπει να είναι υπογεγραµµένο είτε από την ίδια την Αρχή Πιστοποίησης (αυτό-υπογεγραµµένο πιστοποιητικό) είτε από κάποια άλλη Αρχή Πιστοποίησης (π.χ. σε ένα ιεραρχικό σύστηµα – Υποδοµή ∆ηµόσιου Κλειδιού). Ασφάλεια του κρυπτογραφικού συστήµατος Η ασφάλεια ενός κρυπτογραφικού συστήµατος δε βασίζεται στη µυστικότητα του αλγόριθµου αλλά στη µυστικότητα του κλειδιού (στους αλγόριθµους δηµοσίου κλειδιού η ασφάλεια βασίζεται στη µυστικότητα του ιδιωτικού κλειδιού). Αν ένα µυστικό η ιδιωτικό κλειδί αποκαλυφθεί, τότε τα µηνύµατα που είναι κρυπτογραφηµένα µε το κλειδί αυτό µπορούν να αποκρυπτογραφηθούν. Σε ένα σύστηµα ψηφιακής υπογραφής, αν κάποιος τρίτος αποκτήσει (µη εξουσιοδοτηµένη) πρόσβαση στο ιδιωτικό κλειδί µπορεί να υπογράψει ηλεκτρονικά δεδοµένα, υποδυόµενος το νόµιµο κάτοχο του κλειδιού.

78

Αλγόριθµοι ∆ηµόσιου Κλειδιού (κρυπτογράφηση)∆ιορθωµένο σχήµα (µε τη χρήση πιστοποιητικών)

Η Αlice χρησιµοποιεί το ∆ηµόσιο Κλειδί eB του Bob για νακρυπτογραφήσει το Μ:

Ο Bob χρησιµοποιεί το Ιδιωτικό Κλειδί του dB για νααποκρυπτογραφήσει το µήνυµα: )(CDM

Bd=

dB

ΑλγόριθµοςΑποκρυπτ/σηςM Αλγόριθµος

Κρυπτογρ/σης M)(MEC

Be=

1

2

3

4

5

eB, CertB

)(MECBe=

Αλγόριθµοι ∆ηµόσιου Κλειδιού (Ψηφιακή Υπογραφή)∆ιορθωµένο σχήµα (µε τη χρήση πιστοποιητικών)

Ο Bob χρησιµοποιεί το Ιδιωτικό του κλειδί dB για υπογράψειψηφιακά το µήνυµα

Η Αlice χρησιµοποιεί το ∆ηµόσιο Κλειδί του Bob eB για ναεπαληθεύσει την υπογραφή

Το πρόβληµα της ∆ιαχείρισης Κλειδιού έχει επιλυθεί ?

Ναι, εφόσον η Alice και o Bob εµπιστεύονται την ίδια CA.

)(MECBd=

dB

ΑλγόριθµοςΥπογραφής

M ΑλγόριθµοςΕπαλήθευσης

Authenticated Channel

OKή

«Λάθος»

eB, CertB

)(, MECMBd=

1

4

3

2

2

3.2 Υβριδικά Συστήµατα Ταχύτητα του αλγόριθµου. Η ταχύτητα παίζει µεγάλο ρόλο στην επιλογή ενός αλγόριθµου. Τα αρχεία µεγάλου µεγέθους απαιτούν (σχετικά) µεγάλο χρονικό διάστηµα χρόνο για να κρυπτογραφηθούν και να αποκρυπτογραφηθούν µε ένα σύστηµα δηµόσιου κλειδιού. Συγκεκριµένα, έχει αναφερθεί ότι οι αλγόριθµοι µυστικού κλειδιού είναι 100-10.000 φορές ταχύτεροι. Στην πράξη η κρυπτογραφία δηµόσιου κλειδιού χρησιµοποιείται για την ασφαλή ανταλλαγή του µυστικού κλειδιού που θα χρησιµοποιηθεί αργότερα για την

79

επικοινωνία µε συµµετρική κρυπτογράφηση. Για παράδειγµα, ο χρήστης Α επιλέγει ένα συµµετρικό κλειδί Κ, στη συνέχεια το κρυπτογραφεί µε το δηµόσιο κλειδί του χρήστη Β και στέλνει το κρυπτογραφηµένο µήνυµα στον Β. Ο Β αποκρυπτογραφεί το µήνυµα µε το ιδιωτικό του κλειδί, και ανακτά το κλειδί Κ. Στη συνέχεια ο Α και ο Β θα χρησιµοποιούν το κλειδί Κ καθώς και έναν συµµετρικό αλγόριθµο για την κρυπτογράφηση και αποκρυπτογράφηση της επικοινωνίας τους. Για παράδειγµα, η τεχνική αυτή χρησιµοποιείται στο πρωτόκολλο SSL καθώς και στην εφαρµογή PGP. Παράδειγµα: Στη διάρκεια του παρακάτω πρωτοκόλλου, η Alice αυθεντικοποιεί τον Bob και στη συνέχεια δηµιουργεί και αποστέλει στον Bob ένα συµµετρικό κλειδί Κ.

Κ Συµµετρικό κλειδί (µυστικό) dX Ιδιωτικό κλειδί του χρήστη Χ eX ∆ηµόσιο κλειδί του χρήστη Χ CertX Πιστοποιητικό δηµόσιου κλειδιού του χρήστη Χ Hash[M] Η τιµή hash του µηνύµατος Μ ΕΚ(Μ) Κρυπτογράφηση µε το κλειδί Κ

Συµβολισµοί

Α Β Γεια Β Α Γεια, Εδώ Bob, CertBob

Α Β Ωραία Bob, να ένα µυστικό BeE (K)

B A KE ( µήνυµα_επιβεβαίωσης )

Μελέτη Περίπτωσης: Η υπηρεσία PGP (Κρυπτογράφηση)

Kurose, 2003

+ Συνένωση (concatenation) - ∆ιαχωρισµός (deconcatenation)m ΜήνυµαKS Συµµετρικό κλειδίKS(.) Κρυπτογράφηση /αποκρυπτογράφηση µε το συµµετρικό κλειδί ΚSeB ∆ηµόσιο κλειδί του Bob dB Ιδιωτικό κλειδί του BobeB(.) Κρυπτογράφηση µε το δηµόσιο κλειδί eB

dB(.) Αποκρυπτογράφηση µε το ιδιωτικό κλειδί dB

80

3.3 Μονόδροµες Συναρτήσεις Hash (One-way Ηash functions) Μονόδροµη Συνάρτηση (One Way). Μία µονόδροµη συνάρτηση, όπως δηλώνει και η ονοµασία της, είναι µονής κατεύθυνσης. Αυτό σηµαίνει ότι δεδοµένης µιας τιµής Χ είναι εύκολος ο υπολογισµός του f(Χ). Η αντιστροφή της συνάρτησης, δηλαδή ο υπολογισµός του Χ δεδοµένου του f(X), θεωρείται εξαιρετικά δύσκολη. Μονόδροµες Συναρτήσεις Κρυφής Εισόδου (trapdoor One-way functions). Μια µονόδροµη συνάρτηση κρυφής εισόδου, όπως δηλώνει η ονοµασία της, είναι µονής κατεύθυνσης. Αυτό σηµαίνει ότι δεδοµένης µιας τιµής Χ είναι εύκολος ο υπολογισµός του f(Χ). Η αντιστροφή της συνάρτησης, δηλαδή ο υπολογισµός του Χ δεδοµένου του f(X), θεωρείται εξαιρετικά δύσκολη, εκτός και αν κάποιος έχει την µυστική πληροφορία (trapdoor). Σηµείωση: Έως σήµερα δεν έχει αποδειχτεί µε µαθηµατικό τρόπο ότι υπάρχουν µονόδροµες συναρτήσεις. Ωστόσο, όλα τα σύγχρονα συστήµατα δηµόσιου κλειδιού βασίζουν την ασφάλεια τους στην ύπαρξη αυτών των συναρτήσεων. Σε ένα σύστηµα δηµόσιου κλειδιού, η µυστική πληροφορία είναι το ιδιωτικό κλειδί του χρήστη.

Μονόδροµες ΣυναρτήσειςΕύκολος ο υπολογισµός τους

«∆ύσκολη» η αντιστροφή τους

Ποια θα µπορούσε να είναι η χρήσητων µονόδροµων συναρτήσεων;

1. Ακεραιότητα & Αυθεντικοποίηση

2. Κρυπτογράφηση

Ένσταση: κανείς δε θαµπορούσε να ανακτήσει το Μ !!

Μονόδροµες Συναρτήσεις (One-way)

Μονόδροµες Συναρτήσεις & ΚρυπτογράφησηΜονόδροµες συναρτήσεις κρυφήςεισόδου (trapdoor one way)

One-way: Εύκολος ο υπολογισµόςΑντιστροφή: ∆ύσκολη, εκτός καιεάν κάποιος γνωρίζει τη µυστικήπληροφορία (trapdoor)Οι αλγόριθµοι δηµοσίου κλειδιούβασίζονται στην ύπαρξη τους

π.χ. Η κρυπτογράφηση µε τοναλγόριθµο RSA θεωρείταιµονόδροµη συνάρτησηΗ µυστική πληροφορία για τηναντιστροφή του RSA είναι οιπρώτοι παράγοντες του n

x )(xfΕύκολο

∆ύσκολο

Schneier, Bruce. Applied

Cryptography. John Wiley & Sons, Inc., 2nd edition, 1996.

∆εν έχει αποδειχθεί η ύπαρξη τους

It would take millions of years to compute x from f(x), even if all the computers in the world

were assigned to the problem

Συναρτήσεις Hash. Μια συνάρτηση hash, γνωστή και ως: message digest, fingerprint, cryptographic checksum, MIC (Message Integrity Check), MDC (Message Detection Code), είναι µια συνάρτηση, µαθηµατική ή άλλη, που λαµβάνει ως είσοδο ένα αλφαριθµητικό µεταβλητού µήκους (pre-image) Μ και επιστρέφει ως έξοδο ένα αλφαριθµητικό σταθερού µήκους (που καλείται η τιµή hash του Μ). Οι συναρτήσεις hash είναι εξ’ ορισµού εύκολες στον υπολογισµό, και επίσης προσφέρουν υπηρεσίες συµπίεσης, εφόσον το αρχικό κείµενο έχει µέγεθος µεγαλύτερο από το µέγεθος της συνάρτησης hash. Για παράδειγµα, µια συνάρτηση hash θα µπορούσε να είναι µια συνάρτηση που δέχεται ως είσοδο έναν αριθµό χαρακτήρων (byte), και επιστρέφει έναν χαρακτήρα που ισοδυναµεί µε το XOR όλων των χαρακτήρων της εισόδου.

81

Ιδιότητες Συναρτήσεων Hash1. Compression

H συνάρτηση H δέχεται ωςείσοδο ένα αλφαριθµητικό (pre image) οποιουδήποτεµεγέθους και δίνει στην έξοδοένα αλφαριθµητικό µεγέθους Χ(τιµή hash)

2. Ευκολία στον υπολογισµό:

∆εδοµένης µιας τιµής x καιτης συνάρτησης H, είναιεύκολο να βρείς το H(x)

Συναρτήσεις Hash

http://msdn.microsoft.com/library/en-us/dnvs05/html/datastructures_guide2-fig09.gif

D R

Menezes, Oorschot, Vanstone, Handbook of Applied Cryptography, CRC, 2001

http://en.wikipedia.org/wiki/Hash_algorithm

Κρυπτογραφικές συναρτήσεις Hash. Μια κρυπτογραφική συνάρτηση hash, είναι a) Μονόδροµη συνάρτηση hash: Είναι εύκολο να υπολογίσουµε την τιµή Ηash(Μ) ενός µηνύµατος Μ, αλλά εξαιρετικά δύσκολο να ανακτήσουµε το µήνυµα Μ δεδοµένης της τιµής Ηash(Μ). Επιπλέον, β) µια συνάρτηση µε προστασία από συγκρούσεις (collision resistant): Είναι εξαιρετικά δύσκολο να βρεθούν δύο µηνύµατα Μ, Μ’ που να δίνουν την ίδια τιµή hash(Μ)=hash(M’).

Κρυπτογραφικές Συναρτήσεις Hash

http://msdn.microsoft.com/library/en-us/dnvs05/html/datastructures_guide2-fig09.gif

Ιδιότητες ΚρυπτογραφικώνΣυναρτήσεων Hash1. One way: Είναι εύκολο να

υπολογίσεις την τιµή hashδεδοµένου του αρχικούµηνύµατος, αλλά δύσκολο ναυπολογίσεις το αρχικό µήνυµαδεδοµένης της τιµής hash.

2. Collision-Resistance: ∆ύσκολο να βρεθεί σύγκρουση

Σύγκρουση: δύο µηνύµατα πουδίνουν την ίδια τιµή hash

D R

Menezes, Oorschot, Vanstone, Handbook of Applied Cryptography, CRC, 2001

Σηµείωση: Αν |D| > |R| τότε οι συγκρούσεις είναι αναπόφευκτες, ωστόσο, σε µιακρυπτογραφική συνάρτηση hash είναι δύσκολο να βρεθούν

Κρυπτογραφικές Συναρτήσεις HashΜονόδροµες Συναρτήσεις Hash µεεπιπλέον προστασία απόσυγκρούσεις (collision resistance)

∆εν υπάρχει µυστικότητα στον τρόπο λειτουργίας µιας µονόδροµης (one-way) συνάρτησης hash. Η ασφάλεια της στηρίζεται στο γεγονός ότι είναι µονόδροµη, καθώς και στο µήκος (σε bit) του µηνύµατος της εξόδου (output) . Επιπλέον, η έξοδος

82

δεν εξαρτάται από την είσοδο (input) κατά εµφανή τρόπο. Μια απλή αλλαγή ενός bit στο µήνυµα εισόδου, αλλάζει, κατά µέσο όρο, τα µισά bit της τιµής hash. ∆εδοµένης µιας τιµής hash, θεωρείται υπολογιστικά αδύνατο να βρεθεί το µήνυµα Μ από το οποίο προήλθε. Επίσης, δεδοµένης της τιµής hash ενός µηνύµατος Μ, θεωρείται υπολογιστικά αδύνατο να βρεθεί ένα διαφορετικό µήνυµα Μ’ ώστε hash(M) = hash(M’). Γνωστοί αλγόριθµοι µονόδροµων συναρτήσεων hash είναι ο MD5, και o SHA (Secure Hash Algorithm) µε µήκος τιµής εξόδου: 256 ή 512 bit. Συναρτήσεις Hash και συστήµατα Ψηφιακής Υπογραφής. Για λόγους αποδοτικότητας (θυµίζουµε ότι η συνάρτηση hash προσφέρει υπηρεσίες συµπίεσης), ο αποστολέας υπολογίζει και υπογράφει ψηφιακά την τιµή hash ενός µηνύµατος. Στη συνέχεια αποστέλει το µήνυµα καθώς και την ψηφιακή υπογραφή στον παραλήπτη.

Αλγόριθµοι ∆ηµόσιου Κλειδιού (Ψηφιακή Υπογραφή)(Παραλλαγµένο)

Σηµείωση: Ο αλγόριθµος προσφέρει αυθεντικότητα-ακεραιότηταΕάν επιθυµούµε και εµπιστευτικότητα, θα πρέπει το µήνυµα πουστέλνει ο Bob να κρυπτογραφηθεί (αφού υπογραφτεί)

Μελέτη περίπτωσης: PGP

dB

ΑλγόριθµοςΥπογραφής

M

ΑλγόριθµοςΕπαλήθευσης

Authenticated Channel

OKή

«Λάθος»

eB, CertB

))((, MHEMBd

1

5

4

3

3

Αλγόριθµοςhash

Η(Μ)

2

Σηµείωση: Αν η συνάρτηση hash δεν είχε προστασία από συγκρούσεις, τότε θα ήταν δύσκολο να υπάρξει µη αποποίηση ευθύνης για ένα µήνυµα Μ που είναι υπογεγραµµένο ψηφιακά: Ο υπογράφων, θα µπορούσε να βρει ένα µήνυµα Μ’ ώστε hash(M)=hash(M’) και στη συνέχεια να ισχυριστεί ότι υπέγραψε το µήνυµα Μ’.

3.4 Έλεγχος Αυθεντικότητας χρήστη σε συστήµατα ∆ηµόσιου Κλειδιού

Αυθεντικοποίηση χρήστη (ή ταυτοποίηση) ονοµάζεται η διαδικασία κατά την οποία ένας χρήστης Α επαληθεύει την ταυτότητα του χρήστη Β. Στο ακόλουθο παράδειγµα, περιγράφουµε ένα πρωτόκολλο αυθεντικοποίησης µε τη χρήση ενός συστήµατος ψηφιακής υπογραφής. Ψηφιακή υπογραφή. H Alice επιθυµεί να αυθεντικοποιήσει τον Bob. Ο Bob έχει στην κατοχή του ένα ζεύγος κλειδιών (ένα δηµόσιο και ένα ιδιωτικό κλειδί). Ο Bob αποκαλύπτει το δηµόσιο κλειδί του στην Alice. Η Alice στέλνει ένα µήνυµα χαιρετισµού στον Bob:

83

Α Β Γειά, είµαι η Alice, εσύ είσαι ο Bob; Ο Bob απαντά κρυπτογραφώντας ένα µήνυµα µε το ιδιωτικό κλειδί του: B A Alice, Εδώ Bob,

BdE (Hash [Alice, Εδώ Bob]) Η Alice λαµβάνει το µήνυµα, υπολογίζει την τιµή Hash του µηνύµατος, και στη συνέχεια επαληθεύει την υπογραφή αποκρυπτογραφώντας µε το δηµόσιο κλειδί του Bob και συγκρίνοντας τις δύο τιµές Hash. Ένας κακόβουλος χρήστης Mallory δεν γνωρίζει το ιδιωτικό κλειδί του Bob, οπότε δεν µπορεί να υπογράψει ψηφιακά το µήνυµα χαιρετισµού. ∆ιαχείριση του δηµόσιου κλειδιού. Πώς αποκαλύπτει ο Bob το δηµόσιο κλειδί του στην Alice µε ασφαλή τρόπο; Η έννοιας της ασφάλειας κατά τη µεταφορά ενός δηµόσιου κλειδιού δεν έγκειται στη µυστικότητα αλλά στην αυθεντικότητα του. Ας θεωρήσουµε το εξής πρωτόκολλο: Α Β Γεια Β Α Γειά, Είµαι ο Bob, δηµόσιο-κλειδί-Bob A B Απόδειξε το B A Alice, Εδώ Bob,

BdE (Hash [Alice, Εδώ Bob]) Στο πρωτόκολλο που περιγράψαµε, ένας κακόβουλος χρήστης (Mallory) µπορεί να ισχυριστεί ότι είναι ο Bob αποστέλλοντας το δικό του δηµόσιο κλειδί eM στην Alice. Στη συνέχεια ακολουθεί το πρωτόκολλο υπογράφοντας ψηφιακά έναν χαιρετισµό µε το ιδιωτικό του κλειδί. Η Alice εξαπατάται πιστεύοντας ότι απευθύνεται στον Bob. Ψηφιακά Πιστοποιητικά. Ένα ψηφιακό πιστοποιητικό συνδέει ένα δηµόσιο κλειδί µε το όνοµα του κατόχου του. Πρόκειται για ένα ηλεκτρονικό έγγραφο, υπογεγραµµένο από µία έµπιστη οντότητα (Αρχή Πιστοποίησης), που πιστοποιεί το δηµόσιο κλειδί ενός υποκειµένου. Συνήθως περιέχει τις ακόλουθες πληροφορίες. • Το όνοµα του υποκειµένου για το οποίο εκδίδεται το πιστοποιητικό • Το δηµόσιο κλειδί του υποκειµένου • Η περίοδος ισχύος του πιστοποιητικού • Το όνοµα του εκδότη του πιστοποιητικού • Την ψηφιακή υπογραφή του εκδότη του πιστοποιητικού Το πιστοποιητικό είναι υπογεγραµµένο µε το ιδιωτικό κλειδί του εκδότη. Εφόσον η Alice και ο Bob γνωρίζουν και εµπιστεύονται τον εκδότη, τότε γνωρίζουν και το δηµόσιο κλειδί του εκδότη. Το πιστοποιητικό είναι δηµόσια πληροφορία – δε χρειάζεται να περιβάλλεται από µυστικότητα. Το πρωτόκολλο αυθεντικοποίησης τροποποιείται ως εξής: Α Β Γεια Β Α Γειά, Είµαι ο Bob, CertB

84

A B Απόδειξε το B A Alice, Εδώ Bob,

BdE (Hash [Alice, Εδώ Bob]) Όταν η Alice λαµβάνει το αρχικό µήνυµα του Bob, επαληθεύει την υπογραφή στο ψηφιακό πιστοποιητικό χρησιµοποιώντας το δηµόσιο κλειδί της Αρχής Πιστοποίησης (την οποία εµπιστεύεται). Στη συνέχεια ακολουθεί το πρωτόκολλο και επαληθεύει την υπογραφή του Bob, κάνοντας χρήση του δηµόσιου κλειδιού που αναγράφεται στο πιστοποιητικό CertB. Αν ο Mallory αποπειραθεί να πλαστοπροσωπήσει τον Bob, θα αποτύχει: Α Μ Γεια Μ Α Γεια, Εδώ Bob, CertB A M Απόδειξε το M A ??? Υποδοµή ∆ηµόσιου Κλειδιού. Εφόσον χρησιµοποιείται τεχνολογία δηµοσίου κλειδιού θα πρέπει να υπάρχουν οι κατάλληλοι µηχανισµοί πιστοποίησης της αυθεντικότητας των δηµοσίων κλειδιών µε χρήση ψηφιακών πιστοποιητικών, µέσω της κατάλληλης υποδοµής δηµοσίου κλειδιού. Η πιστοποίηση των δηµοσίων κλειδιών και η αντίστοιχη υποδοµή δηµοσίου κλειδιού θα πρέπει να υλοποιείται είτε από εσωτερικές διαδικασίες (π.χ. στα πλαίσια µιας επιχείρησης-οργανισµού), είτε από µια Τρίτη Έµπιστη Αρχή Πιστοποίησης (certification authority).

Υποδοµές ∆ηµόσιου Κλειδιού: Το Ιεραρχικό Σύστηµα X.509

Μελέτη Περίπτωσης:Η CA–1 υπογράφει το πιστοποιητικό του Bob

Η Αlice εµπιστεύεται την Αρχή CA-2

Subject: CA1

Το πιστοποιητικότης CA-1 πουεκδόθηκε από τηνΑρχή CA-2

Public Key:

SignatureCA-2

Subject: Bob

Το πιστοποιητικό(του ∆Κ) του BobΠου εκδόθηκε από τηνΑρχή CA-1

Public Key:

SignatureCA-1

Το µήνυµα πουυπέγραψε ο Bob

SignatureBob

Το δηµόσιο κλειδίτης CA-2

που «εµπιστεύεται»η Alice

Alice,500 widgets would cost$500000.00

http://www.smart.gov/information/polk/polk.ppt

Ιεραρχίες Πιστοποίησης. Κάθε ψηφιακό πιστοποιητικό είναι υπογεγραµµένο ηλεκτρονικά µε το ιδιωτικό κλειδί του εκδότη του. Αν το πιστοποιητικό του Bob είναι υπογεγραµµένο από µια Αρχή Πιστοποίησης CA1 που δεν εµπιστεύεται η Alice (η Alice εµπιστεύεται µόνον την Αρχή CA2), τότε σε αυτήν την περίπτωση η Alice δεν µπορεί να πιστοποιήσει την αυθεντικότητα του δηµόσιου κλειδιού του Bob. Μια ιεραρχία πιστοποίησης προσφέρει ένα µονοπάτι εµπιστοσύνης (trust path): Αν το

85

πιστοποιητικό του ∆ηµόσιου Κλειδιού της Αρχής CA1 είναι υπογεγραµµένο από την Αρχή CA2, τότε το πρωτόκολλο ελέγχου αυθεντικότητας τροποποιείται ως εξής:

Α Β Γεια Β Α Γειά, Είµαι ο Bob, CertB, CertCA1 A B Απόδειξε το B A Alice, Εδώ Bob,

BdE (Hash [Alice, Εδώ Bob]) Όταν η Alice λαµβάνει το αρχικό µήνυµα του Bob, επαληθεύει τις υπογραφές στα ψηφιακά πιστοποιητικά χρησιµοποιώντας το δηµόσιο κλειδί της Αρχής Πιστοποίησης CA2 (την οποία εµπιστεύεται). Στη συνέχεια ακολουθεί το πρωτόκολλο και επαληθεύει την υπογραφή του Bob, κάνοντας χρήση του δηµόσιου κλειδιού που αναγράφεται στο πιστοποιητικό CertB.

Χ.509

H εµπιστοσύνη «µεταφέρεται»:H Alice «εµπιστεύεται» τη CA-2H CA-2 «εµπιστεύεται» την αρχή CA-1H CA-1 βεβαιώνει ότι το ∆Κ του Bob είναι το σωστό

Αποτέλεσµα: Η Alice εµπιστεύεται ότι το ∆ΚB ανήκει στον Bob1. Αν κρυπτογραφήσει ένα µήνυµα µε το ∆ΚΒ, µόνον ο Bob θα µπορεί

να το αποκρυπτογραφήσει2. Ένα η υπογραφή ενός µηνύµατος επαληθευτεί µε το ∆ΚΒ, µόνον ο

Bob θα µπορούσε να έχει υπογράψει το µήνυµα

3.4.1 Κώδικες Αυθεντικότητας Μηνύµατος (MAC) Message Authentication Code (MAC). Ένας Κώδικας Αυθεντικότητας Μηνύµατος ή MAC, είναι ο συνδυασµός µιας κρυπτογραφικής συνάρτησης hash µε ένα (µυστικό) συµµετρικό κλειδί που γνωρίζουν µόνον ο αποστολέας και ο παραλήπτης. Σε αυτήν την περίπτωση, στη συνάρτηση hash δίδονται ως είσοδος το µήνυµα και το συµµετρικό κλειδί. Εναλλακτικά, η Alice υπολογίζει την τιµή hash ενός µηνύµατος Μ, και στη συνέχεια κρυπτογραφεί την τιµή hash µε το συµµετρικό κλείδι Κ, το οποίο «µοιράζεται» µε τον Bob.

86

Αυθεντικοποίηση ΜηνύµατοςΣυναρτήσεις MAC (Message Authentication Code)

ΗΜΑC: Μια συνάρτηση MAC µπορεί να θεωρηθεί παραλλαγήµιας συνάρτησης hash (n-bit)

Είσοδος: Το µήνυµα Μ και ένασυµµετρικό κλειδί Κ

Έξοδος: τιµή MAC (n–bit)

H(M,K)

Ασφάλεια Συνάρτησης HMAC

1. Κληρονοµούν τις ιδιότητεςασφάλειας της συνάρτησης Hash

2. H διαδροµή Μ ΜΑC(M) δενείναι πλέον εύκολη

εκτός αν υπάρχει γνώση του Κ

Αν η συνάρτηση Hash είναιασφαλής, τότε η ασφάλεια τηςσυνάρτησης MAC βασίζεταιστο µήκος του κλειδιού

π.χ. Μήκος(Κ)

Menezes, Oorschot, Vanstone, Handbook of Applied Cryptography, CRC, 2001

HASH

H Alice στέλνει το αρχικό µήνυµα Μ καθώς και την τιµή MAC του µηνύµατος στον Bob. Ο Bob χρησιµοποιεί το Μ που έλαβε και το κλειδί Κ για να υπολογίσει την τιµή MAC(M). Τέλος ο Bob συγκρίνει τις δύο τιµές ΜΑC. Αν είναι ίδιες, ο Bob επαληθεύει την ταυτότητα της Alice ως αποστολέα του µηνύµατος: Μόνον η Alice γνωρίζει το κλειδί Κ, εποµένως µόνον η Alice µπορεί να κατασκευάσει το MAC(Μ). Χάρη στη χρήση της κρυπτογραφικής συνάρτησης hash, ο αλγόριθµος επιπλέον διασφαλίζει την ακεραιότητα των µηνυµάτων που ανταλλάσσονται. Για παράδειγµα, αν το µέγεθος της τιµής εξόδου της συνάρτησης Ηash είναι µεγάλο, π.χ. 256 bit, η εύρεση ενός µηνύµατος Μ’ ώστε Η(Μ)=Η(Μ’) είναι πρακτικά αδύνατη.

Αυθεντικοποίηση Μηνύµατος και ΑκεραιότηταΣυµµετρικές Τεχνικές: ΜΑC

ΑλγόριθµοςHash

ΑλγόριθµοςHash

MM, ΜΑC(Μ)3 4

2

Μ

)(?

) ( MMACMAC =

5

NAI (OK)

OXI

M

1

Secure ChannelK

K K

Ακεραιότητα ΚΑΙΑυθεντικοποίησηΜηνύµατος

Σηµείωση: Σε σύγκριση µε την χρήση των κρυπτογραφικών συναρτήσεων Hash γιαακεραιότητα, όπου η δεύτερη ιδιότητα ασφάλειας των συναρτήσεων hash (collision resistant) είναι η πλέον σηµαντική, στις συναρτήσεις MAC βλέπουµε επίσης τη σηµασία της πρώτηςιδιότητας (one-way): Aν η συνάρτηση hash δεν ήταν µονόδροµη, η Eve θα έβρισκε το Κ !!!

87

Σηµείωση: Το προηγούµενο παράδειγµα αποτελεί µια συµµετρική τεχνική ελέγχου αυθεντικότητας.

3.5 ∆ιαχείριση Κλειδιού ∆ηµιουργία κλειδιού: Ένα κλειδί πρέπει να ανθίσταται σε επιθέσεις λεξικού (dictionary attack). Ένα «ισχυρό» κλειδί αποτελείται από µια «τυχαία» συµβολοσειρά bit, που δηµιουργείται από µια αυτοµατοποιηµένη διαδικασία (γεννήτορας) παραγωγής ψευδο-τυχαίων αριθµών (pseudo-randomness generator). Κάθε bit ενός κλειδιού πρέπει να είναι εξίσου πιθανό. Μήκος κλειδιού. O µόνος τρόπος να παραβιαστεί ένας “ισχυρός” κρυπτογραφικός αλγόριθµος, είναι η αποκαλούµενη και ως επίθεση ωµής βίας (btute-force). Σε αυτήν την επίθεση, ο Mallory δοκιµάζει όλα τα πιθανά κλειδιά ώστε να βρει κάποιο που ταιριάζει µε το κλειδί που χρησιµοποιήθηκε κατά την κρυπτογράφηση. Για να εξαπολύσει αυτού του είδους την επίθεση, ο κρυπταναλυτής πρέπει πρώτα να υποκλέψει ένα κρυπτογράφηµα Η πολυπλοκότητα της επίθεσης υπολογίζεται ως εξής. Εαν το κλειδί έχει µήκος 8 bits, τότε υπάρχουν 28 , ή 256 πιθανά κλειδιά. Εποµένως, θα χρειαστούν 256 προσπάθειες προκειµένου να βρεθεί το σωστό κλειδί, µε πιθανότητα 50% να βρεθεί το κλειδί µετά τις µισές προσπάθειες. Οι χρόνοι µπορούν να συντοµευθούν µε κατανεµηµένη επεξεργασία. Αν το κλειδί έχει µήκος 128 bit, τότε ο κρυπταναλυτής θα πρέπει να δοκιµάσει κατά µέσο όρο 2127 κλειδιά, πριν βρει το σωστό. Η επίθεση αυτή είναι πρακτικώς αδύνατη. Σηµείωση: Σε έναν συµµετρικό αλγόριθµο, το ελάχιστα αποδεκτό µήκος κλειδιού είναι 128 bit. Σε έναν αλγόριθµο δηµόσιου κλειδιού, το ελάχιστα αποδεκτό µήκος κλειδιού είναι 1024 bit. Ανταλλαγή κλειδιού: Σε µεγάλα ιδίως δίκτυα, ο τρόπος µε τον οποίο τα κλειδιά µεταφέρονται ή τίθενται υπό διαπραγµάτευση µεταξύ των χρηστών, πρέπει να είναι ασφαλής. Έχουν προταθεί πολλά πρωτόκολλα ανταλλαγής κλειδιών (π.χ Diffie Hellman), η επιλογή ενός εκ των οποίων πρέπει να γίνεται µε µεγάλη προσοχή. Αποθήκευση: Ένα µυστικό (ιδιωτικό) κλειδί πρέπει να φυλάσσεται σε ασφαλές σηµείο. Για παράδειγµα, η φύλαξη του σε φορητό αποθηκευτικό µέσο ή στο σκληρό δίσκο ενός Η/Υ θα πρέπει να συνεπικουρείται από µηχανισµούς ταυτοποίησης χρήστη (κωδικός πρόσβασης ή/και βιοµετρικά συστήµατα). Το πλέον ενδεδειγµένο από τη σκοπιά της ασφάλειας σηµείο φύλαξης ενός κλειδιού είναι µια έξυπνη κάρτα (smart card): η πρόσβαση στο κλειδί ελέγχεται µε τη χρήση κωδικού PIN ή/και µε βιοµετρικά αποτυπώµατα. Η κάρτα µπορεί επίσης να φέρει το ψηφιακό πιστοποιητικό του κλειδιού και να εκτελεί το λογισµικό κρυπτογράφησης-αποκρυπτογράφησης καθώς και ψηφιακής υπογραφής για λογαριασµό του κατόχου της. Σε µια τέτοια περίπτωση η κάρτα µπορεί να χρησιµοποιηθεί σε οποιοδήποτε τερµατικό διαθέτει αναγνώστη έξυπνων καρτών.

88

Έξυπνες Κάρτες

Μοιάζουν µε απλή πλ. κάρτα …Αλλά έχουν ενσωµατωµένοµικρο-επεξεργαστή & µνήµη

8-bit επεξεργαστή32 Κ µνήµη ROM512 bytes RAM

∆ύσκολο να πλαστογραφηθούν (tamper-resistance)

«Ισχυρή» Ταυτοποίηση (PIN + φυσική κατοχή)

Εκτέλεση κρυπτογραφικών πράξεων µέσα στην κάρτα

Περισσότερες από µια εφαρµογές σε µια κάρτα

Εύκολα µεταφέρσιµες Ανανέωση - Ανάκληση κλειδιού. Όσο αυξάνεται το µέγεθος και ο αριθµός των επικοινωνιών που προστατεύονται από ένα κρυπτογραφικό κλειδί, τόσο αυξάνεται ο κίνδυνος κρυπτανάλυσης του κλειδιού. Εποµένως ένα κλειδί θα πρέπει να έχει συγκεκριµένη διάρκεια ζωής. Ανά τακτά χρονικά διαστήµατα, ένα κλειδί θα πρέπει να ανανεώνεται (key update). Σε συµµετρικά συστήµατα, ένα κλειδί επιβάλλεται να αλλάζει κάθε φορά που ολοκληρώνεται η επικοινωνία (session). Σε συστήµατα δηµόσιου κλειδιού, ένα κλειδί πρέπει να ανανεώνεται-ανακαλείται όταν εκπνεύσει η περίοδος ισχύος που αναγράφεται στο ψηφιακό πιστοποιητικό, ή σε περίπτωση κλοπής του.

89

Βιβλιογραφία - ∆ικτυογραφία [1] Anderson, Ross. Security Engineering: A Guide To Building Dependable

Distributed Systems. John Wiley and Sons Ltd, 2001. [2] Ferguson, Niels, Schneier, Bruce. Practical Cryptography. John Wiley & Sons,

2003. [3] Kurose, J. F., Ross, K. W. Computer Networking – A Top-Down approach

featuring the Internet. Addison-Wesley, 2005. [4] Mao, Wenbo. Modern Cryptography: Theory and Practice. Prentice Hall, 2003 [5] Matyas, Vaclav Jr, Riha, Zdenek. Biometric authentication systems. Technical

report, ECOM-MONITOR, 2000. [6] National Computer Security Center (NCSC), A guide to understanding

discrentionary access control in trusted systems, 30 September 1987 [7] McClure, Stuart, Scambray, Joel, Kurtz, George. Hacking Exposed, 5th Edition:

Network Security Secrets & Solutions. Osborne/McGraw-Hill, 2005. [8] Schneier, Bruce. Applied Cryptography. John Wiley & Sons, Inc., 2nd edition,

1996. [9] Schneier, Bruce. Secrets and Lies: Digital Security in a Networked World. Wiley

Computer Publishing, 2001. [10] Stinson, Douglas. Cryptography: Theory and Practice. CRC Press, 1995 [11] Tanenbaum, Andrew S. Computer Networks — Fourth Edition. Prentice-Hall

International, 2003. [12] ∆ρ.Π. Κοτζανικολάου. Τεχνολογίες και Πολιτικές Ασφάλειας. Σηµειώσεις

µαθήµατος, 7ο Εξάµηνο. Τµήµα Πληροφορικής, Πανεπιστήµιο Πειραιώς, 2005. [13] ∆ρ. Χ. Κ. Γεωργιάδης. Προβλήµατα Ασφάλειας στο Ηλεκτρονικό Εµπόριο.

Σηµειώσεις µαθήµατος, Παν. Θεσσαλίας, 2003. [14] Εισαγωγή στον Έλεγχο Πρόσβασης, Τµήµα Πληροφορικής, Α.Π.Θ,

http://www.csd.auth.gr/~oswinds/dopsys/week10b.pdf