ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΗΛΕΚΤΡΟΝΙΚΗ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Ειδική Επιστημονική Εργασία ΣΤΕΓΑΝΟΓΡΑΦΙΑ ΨΗΦΙΑΚΩΝ ΕΙΚΟΝΩΝ Μπαλκούρας Σωτήριος Υπεύθυνος Καθηγητής Σκόδρας Αθανάσιος Πάτρα 2013
2
3
Περιεχόμενα 1 ΕΙΣΑΓΩΓΗ... 11 1.1 ΑΝΤΙΚΕΙΜΕΝΟ ΤΗΣ ΕΡΓΑΣΙΑΣ... 11 1.2 ΟΡΓΑΝΩΣΗ ΤΟΥ ΚΕΙΜΕΝΟΥ... 12 2 ΑΠΟΚΡΥΨΗ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΧΡΗΣΗ ΣΤΕΓΑΝΟΓΡΑΦΙΑΣ... 14 2.1 ΕΙΣΑΓΩΓΗ... 14 2.2 ΣΤΕΓΑΝΟΓΡΑΦΙΑ... 14 2.2.1 Ορισμός... 14 2.2.2 Πεδίο εφαρμογών στεγανογραφίας... 17 2.3 ΤΕΧΝΙΚΕΣ ΣΤΕΓΑΝΟΓΡΑΦΙΑΣ ΣΕ ΕΙΚΟΝΑ... 19 2.3.1 Μέθοδος LSB... 19 2.3.2 Μέθοδος LBP (Local Binary Pattern)... 20 2.3.3 Μέθοδος απόκρυψης δεδομένων με τη χρήση Ιστογράμματος... 21 2.3.4 Μέθοδος DCT... 23 2.4 ΣΤΕΓΑΝΟΓΡΑΦΙΚΑ ΕΡΓΑΛΕΙΑ... 24 2.5 ΕΦΑΡΜΟΓΕΣ ΣΤΕΓΑΝΟΓΡΑΦΙΑΣ... 25 2.6 ΚΩΔΙΚΟΠΟΙΗΣΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΤΗ ΜΕΘΟΔΟ BASE64... 27 2.7 ΚΡΥΠΤΟΓΡΑΦΗΣΗ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΤΟΝ ΑΛΓΟΡΙΘΜΟ MD5... 29 3 ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ... 32 3.1 ΕΙΣΑΓΩΓΗ... 32 3.2 ΤΕΧΝΟΛΟΓΙΕΣ & ΠΕΡΙΟΡΙΣΜΟΙ ΥΛΟΠΟΙΗΣΗΣ... 32 3.2.1 PHP... 32 3.2.2 Apache... 33 3.2.3 Περιορισμοί υλοποίησης... 33 3.3 ΑΛΓΟΡΙΘΜΟΙ ΠΟΥ ΥΛΟΠΟΙΗΘΗΚΑΝ... 34 3.3.1 Least Significant Bit (LSB)... 34 4
3.3.2 Local Binary Pattern (LBP)... 37 3.4 ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΕΣ ΣΥΣΤΗΜΑΤΟΣ... 41 4 ΠΕΙΡΑΜΑΤΑ... 49 4.1 ΣΕΝΑΡΙΑ ΚΑΙ ΑΠΟΤΕΛΕΣΜΑΤΑ... 49 4.2 ΣΥΜΠΕΡΑΣΜΑΤΑ... 65 5 ΕΠΙΛΟΓΟΣ... 67 5.1 ΣΥΜΠΕΡΑΣΜΑΤΑ... 67 5.2 ΠΡΟΤΕΙΝΟΜΕΝΕΣ ΕΠΕΚΤΑΣΕΙΣ ΑΝΟΙΚΤΑ ΘΕΜΑΤΑ... 67 6 ΒΙΒΛΙΟΓΡΑΦΙΑ... 69 5
Κατάλογος Εικόνων Εικόνα 1: Αρχικές τιμές τριών pixels... Error! Bookmark not defined. Εικόνα 2: Απόκρυψη πληροφορίας στα 3 pixels με τη μέθοδο LSBError! Bookmark not defined. Εικόνα 3: Υπολογισμός LBP [22]... Error! Bookmark not defined. Εικόνα 4: (α) Το ιστόγραμμα της αρχικής εικόνας (β) Το ιστόγραμμα με μετατοπισμένα τα pixels που είναι μεγαλύτερα ή ίσα από το μέγιστο... Error! Bookmark not defined. Εικόνα 5: Μετασχηματισμός DCT... Error! Bookmark not defined. Εικόνα 6: Οι πιο δημοφιλείς εφαρμογές της στεγανογραφίας [29] Error! Bookmark not defined. Εικόνα 7 Διαχείριση της πληροφορίας μέσω του αλγορίθμου base64error! Bookmark not defined. Εικόνα 8 Πίνακας αναπαράστασης χαρακτήρων και αριθμών στη μέθοδο base64... Error! Bookmark not defined. Εικόνα 9 Κωδικοποίηση περιεχομένου με τη μέθοδο Base64... Error! Bookmark not defined. Εικόνα 10: Απεικόνιση απόκρυψης πληροφορίας με τη μέθοδο LSBError! Bookmark not defined. Εικόνα 11 Υπολογισμός του LBP... Error! Bookmark not defined. Εικόνα 12 Η αρχική σελίδα του συστήματος... Error! Bookmark not defined. Εικόνα 13 Επιλογή μεθόδου στεγανογράφησης... Error! Bookmark not defined. Εικόνα 14 Φόρμα μεθόδου LSB... Error! Bookmark not defined. Εικόνα 15 Φόρμα που εμφανίζεται στο χρήστη εφόσον επιλέξει ως μεθόδο στεγανογράφησης το LBP... Error! Bookmark not defined. Εικόνα 16 Επιλογή μεθόδου για ανάκτηση πληροφορίας... Error! Bookmark not defined. Εικόνα 17 Φόρμα μεθόδου LSB για ανάκτηση πληροφορίας... Error! Bookmark not defined. Εικόνα 18 Φόρμα μεθόδου LBP για ανάκτηση πληροφορίας... Error! Bookmark not defined. 6
Κατάλογος Πινάκων Πίνακας 1: Συνθήκες πειράματος σεναρίου 1... 51 Πίνακας 2: Αποτελέσματα σεναρίου 1... 51 Πίνακας 3: Συνθήκες πειράματος σεναρίου 2... 53 Πίνακας 4: Αποτελέσματα σεναρίου 2... 53 Πίνακας 5: Συνθήκες πειράματος σεναρίου 3... 55 Πίνακας 6: Αποτελέσματα σεναρίου 3... 56 Πίνακας 7: Συνθήκες πειράματος σεναρίου 3... 61 Πίνακας 8: Αποτελέσματα σεναρίου 3... 63 Πίνακας 9: Συγκεντρωτικός πίνακας αποτελεσμάτων... 65 7
8
Περίληψη Η ανάπτυξη του διαδικτύου τα τελευταία χρόνια έχει φέρει αλλαγές στο μέγεθος και την ποιότητα του διαθέσιμου περιεχομένου. Οι χρήστες κυριολεκτικά κατακλύζονται από πληροφορία η οποία μπορεί να έχει διάφορες μορφές όπως κείμενο, ήχο, εικόνα, βίντεο. Η μεγάλη εξάπλωση του διαδικτύου, η εύκολη αναζήτηση σε μεγάλο όγκο πληροφορίας καθώς και η παρουσίαση του περιεχομένου με φιλικό τρόπο προς το χρήστη συνέβαλε στην ολοένα αυξανόμενη ανάγκη για προμήθεια εικόνων, βίντεο και μουσικής. Η ψηφιοποίηση του μεγαλύτερου όγκου περιεχομένου που διαχειρίζονται οι χρήστες τόσο στην προσωπική όσο και στην επαγγελματική ζωή τους οδήγησε στην ανάπτυξη νέων τεχνικών στεγανογραφίας για την ανταλλαγή κρυφής πληροφορίας, έννοια η οποία είναι ευρέως γνωστή από την αρχαιότητα. Η παρούσα μεταπτυχιακή εργασία υλοποιεί δύο από τους πιο δημοφιλείς αλγορίθμους στεγανογράφησης τον LSB (Least Significant Bit) και τον LBP (Local Binary Pattern). Το σύστημα που αναπτύχθηκε είναι διαθέσιμο στο διαδίκτυο και μπορεί να χρησιμοποιηθεί από οποιοδήποτε χρήστη επιθυμεί να αποκρύψει πληροφορία (κείμενο ή εικόνα) μέσα σε μια εικόνα. Το σύστημα υλοποιεί όλο τον κύκλο της στεγανογράφησης δίνοντας τη δυνατότητα στο χρήστη όχι μόνο να κάνει απόκρυψη της πληροφορίας που επιθυμεί αλλά και την αντίστροφη διαδικασία δηλαδή την ανάκτηση της κρυμμένης πληροφορίας. Η διαδικασία είναι απλή και απαιτεί από τον αποστολέα (αυτός που κρύβει το μήνυμα) το ανέβασμα της εικόνας στο σύστημα, την εισαγωγή ενός μυστικού κλειδιού το οποίο πρέπει να είναι γνωστό για την ανάκτηση του μηνύματος, και φυσικά το μήνυμα, δηλαδή η προς απόκρυψη πληροφορία. Στη συνέχεια ο παραλήπτης για να ανακτήσει το μήνυμα θα πρέπει να ανεβάσει στο σύστημα τη στεγανογραφημένη εικόνα καθώς και το μυστικό κλειδί που έχει συμφωνήσει με τον αποστολέα. Τέλος, με κάποια σενάρια χρήσης, πραγματοποιούνται μετρήσεις, οι οποίες δείχνουν την απόδοση κάθε αλγορίθμου και γίνονται οι αντίστοιχες συγκρίσεις. Το σύστημα που υλοποιήθηκε στην παρούσα εργασία μπορεί να συμπεριλάβει και άλλες μεθόδους στεγανογράφησης καθώς επίσης και με την επέκταση του αλγορίθμου LBP ώστε να χρησιμοποιεί και τις τρεις χρωματικές συνιστώσες για την απόκρυψη της πληροφορίας.. Επίσης, θα είχε ιδιαίτερο ενδιαφέρον η παροχή της συγκεκριμένης διαδικασίας σαν ηλεκτρονική υπηρεσία (web service) ώστε να είναι εφικτό να χρησιμοποιηθεί ανεξάρτητα και να μπορεί να εισαχθεί ως αυτόνομο κομμάτι λογισμικού σε κάθε πλατφόρμα που υποστηρίζει web services. 9
Summary The development of the internet in recent years has brought changes in the size and quality of the available content. Users literally flooded with information which may have various forms like text, audio, image, and video. The wide spread of the internet, the ease of search in a large amount of information and the presentation of the available content in a friendly way resulted in the need for more images, videos and music. With the digitization of the available content new steganography techniques were necessary so that users can exchange secret information. In the current thesis two of the most popular steganography algorithms are implemented: the LSB (Least Significant Bit) and the LBP (Local Binary Pattern). The system is publicly available and can be used by any user who wishes to hide information (text or image) within an image. The system provides functionalities so that user can hide information within an image and recover the hidden information. The sender (the person who wishes to hide a message) has to provide the following information in the system: upload the image, provide the secret key needed to retrieve the message, and upload the message. The receiver has to upload the image containing the message and the secret key needed to recover the message. Anumber of usage scenarios are implemented to measure the performance of the algorithms and make comparisons. The implemented system can easily include more steganografy methods and also the extension of the LBP algorithm so that the three color components are used to hide the information. It would be interested to provide the current process as an e-service (web service) that it is feasible to be used independently and can be introduced as a standalone piece of software in any platform that supports web services. 10
1 Εισαγωγή 1.1 Αντικείμενο της Εργασίας Η ανάπτυξη του διαδικτύου τα τελευταία χρόνια έχει φέρει αλλαγές στο μέγεθος και την ποιότητα του διαθέσιμου περιεχομένου. Οι χρήστες κυριολεκτικά κατακλύζονται από πληροφορία η οποία μπορεί να έχει διάφορες μορφές όπως κείμενο, ήχο, εικόνα, βίντεο. Η μεγάλη εξάπλωση του διαδικτύου, η εύκολη αναζήτηση σε μεγάλο όγκο πληροφορίας καθώς και η παρουσίαση του περιεχομένου με φιλικό τρόπο προς το χρήστη οδήγησε στην αυξανόμενη ανάγκη για προμήθεια εικόνων, βίντεο και μουσικής. Η ψηφιοποίηση του μεγαλύτερου όγκου περιεχομένου που διαχειρίζονται οι χρήστες τόσο στην προσωπική όσο και στην επαγγελματική ζωή τους οδήγησε στην ανάπτυξη νέων τεχνικών στεγανογραφίας, έννοια η οποία είναι ευρέως γνωστή από την αρχαιότητα. Η στεγανογραφία είναι η τέχνη της επικοινωνίας με τέτοιο τρόπο ώστε να μη γίνεται αντιληπτή η επικοινωνία μεταξύ του αποστολέα και του αποδέκτη. Στόχος της στεγανογραφίας είναι η απόκρυψη της πληροφορίας σε σημείο που να μη μπορεί να γίνει αντιληπτή αλλά ταυτόχρονα και με τέτοιο τρόπο που δεν αλλοιώνει την ποιότητα της επικοινωνίας αλλά και της πληροφορίας η οποία ανταλλάσσεται μεταξύ των συμβαλλομένων. Ο όρος στεγανογραφία περιγράφηκε πρώτη φορά από τον Ηρόδοτο το 440 π.χ. ο οποίος αναφέρει δύο παραδείγματα της τεχνικής. Στο πρώτο ο Δημάρατος στέλνει προειδοποίηση για επικείμενη επίθεση στην Ελλάδα γράφοντας το κείμενο στη βάση ενός δισκίου κεριού πριν επανακαλύψει όλη την επιφάνεια με κερί. Ένα άλλο παράδειγμα από την αρχαιότητα είναι αυτό του Ιστιαίου ο οποίος ξύρισε το κεφάλι του πιο έμπιστου δούλου του και έγραψε το μήνυμα που ήθελε να στείλει για την εξέγερση ενάντια στους Πέρσες. Το μήνυμα δεν μπορούσε να γίνει αντιληπτό καθώς τα μαλλιά του δούλου μεγάλωσαν. Στη σημερινή εποχή η στεγανογραφία βρίσκει εφαρμογή στα δίκτυα επικοινωνιών αλλά και στην απόκρυψη πληροφοριών μέσα σε κείμενα, βίντεο, μουσική. Στην πρώτη περίπτωση τα μηνύματα στέλνονται μέσω δίκτυο και η στεγανογραφία χρησιμοποιείται όταν κάποιος θέλει να αποστείλει ένα μυστικό μήνυμα σε κάποιον άλλο χωρίς αυτό να γίνει αντιληπτό. Στη δεύτερη περίπτωση η στεγανογραφία χρησιμοποιείται για ανταλλαγή μυστικών μηνυμάτων, αλλά επίσης βρίσκει εφαρμογή σε θέματα πνευματικών δικαιωμάτων και χρησιμοποιείται για την αποθήκευση δεδομένων που έχουν σχέση με τον κάτοχο της πληροφορίας ή άλλου είδους δεδομένων όπως σειριακούς αριθμούς (fingerprints) στα ψηφιακά μέσα. Στόχος είναι ο εντοπισμός και η ταυτοποίηση των πνευματικών δικαιωμάτων. 11
Η αρχή που ακολουθείται στη στεγανογραφία βασίζεται στο γεγονός ότι τα ψηφιακά αρχεία που περιέχουν εικόνες ή ήχο μπορούν να τροποποιηθούν σε ένα βαθμό χωρίς καμία αλλοίωση της ποιότητάς τους αλλά και της λειτουργικότητάς τους. Η δεύτερη αρχή είναι ότι τυχόν μικρές αλλαγές στο χρώμα της εικόνας ή στην ποιότητα του ήχου δε γίνονται αντιληπτές από το ανθρώπινο μάτι ή αυτί. Η παρούσα μεταπτυχιακή εργασία υλοποιεί δύο αλγορίθμους στεγανογράφησης, τους LSB και LBP. Πρέπει να σημειωθεί ότι οι υπάρχουσες εφαρμογές που υλοποιούν κάποιον από τους δύο αλγορίθμους απαιτούν από το χρήστη την τοπική εγκατάσταση στον υπολογιστή του προκειμένου να χρησιμοποιηθεί. Η υλοποίηση που πραγματοποιήθηκε στα πλαίσια της συγκεκριμένης εργασίας είναι διαδικτυακή και μπορεί να χρησιμοποιηθεί από οποιονδήποτε το επιθυμεί, χωρίς την εγκατάσταση τοπικά κάποιου λογισμικού. Ο χρήστης έχει τη δυνατότητα να ανεβάσει μια εικόνα στο σύστημα, ένα μυστικό κλειδί καθώς και το μήνυμα που θέλει να αποκρύψει. Ακόμα δίνεται η δυνατότητα ανάκτησης του μηνύματος εφόσον ο ενδιαφερόμενος έχει στη διάθεσή του το μυστικό κλειδί που εισήγαγε ο αντισυμβαλλόμενος. 1.2 Οργάνωση του κειμένου Όπως αναφέρθηκε παραπάνω, στα πλαίσια της παρούσας εργασίας υλοποιήθηκε ένα διαδικτυακό σύστημα στεγανογράφησης. Στο σύστημα έχουν υλοποιηθεί δύο μέθοδοι στεγανογράφησης: LSB (Least Significant Bit) και LBP (Local Binary Pattern). Η εργασία έχει οργανωθεί ως εξής: Στο κεφάλαιο 2 γίνεται εισαγωγή στην έννοια της στεγανογραφίας και παρουσιάζονται επιμέρους θέματα που αφορούν την κωδικοποίηση της πληροφορίας που πραγματοποιείται πριν αυτή αποθηκευτεί στην εικόνα, καθώς και την κρυπτογράφηση με την οποία κρυπτογραφείται το κλειδί πριν από την κωδικοποίηση. Συγκεκριμένα, περιγράφονται οι αλγορίθμοι κωδικοποίησης Base64 και κρυπτογράφησης MD5, οι οποίοι χρησιμοποιούνται για να εξασφαλίσουν την ασφάλεια της μεθόδου. Σε περίπτωση που κάποιος τρίτος γνωρίζει την μέθοδο απόκρυψης και καταφέρει να ανακτήσει το μήνυμα, τότε δεν μπορεί να διαβάσει το κωδικοποιημένο μήνυμα χωρις το κλειδί. Επίσης γίνεται αναφορά της στεγανογραφίας στην ιστορία, αναλύονται δημοφιλείς μεθόδοι σε εικόνα, παρατάσσονται εργαλεία που χρησιμοποιούνται σήμερα, καθώς και τα πεδία εφαρμογής. Το κεφάλαιο 3 ασχολείται με την εφαρμογή που υλοποιήθηκε στην παρούσα εργασία. Γίνεται αναφορά στις τεχνολογίες που χρησιμοποιήθηκαν, όλα τα θέματα που αφορούν τη σχεδίαση και την υλοποίησή της εφαρμογής και αναδεικνύονται τα πλεονεκτήματα και τα μειονεκτήματα της λύσης που επιλέχθηκε. Στη συνέχεια περιγράφονται αναλυτικά οι δύο αλγόριθμοι LSB και LBP, η 12
ροή εργασιών προκειμένου να είναι δυνατή η διαδικασία της στεγανογράφησης και της ανάκτησης της κρυμμένης πληροφορίας. Τέλος, παρουσιάζονται οι διεπαφές που αναπτύχθηκαν για το σύστημα καθώς και οι προσφερόμενες λειτουργικότητες. Το κεφάλαιο 4 παρουσιάζει τα σενάρια χρήσης του συστήματος και οι σχετικές μετρήσεις που χρησιμοποιήθηκαν για τη σύγκριση των μεθόδων. Στην συνέχεια επισημαίνεται η απόδοσή τους στα σχετικά σενάρια, και γίνονται οι σχετικές συγκρίσεις. Τέλος, το κεφάλαιο 5 εκθέτει την σύνοψη της εργασίας και εξάγονται γενικά συμπεράσματα. Δίνει επίσης κατευθύνσεις μελλοντικής έρευνας στην συγκεκριμένη περιοχή μια και το θέμα παρουσιάζει ερευνητικό ενδιαφέρον. 13
2 Απόκρυψη πληροφορίας με χρήση στεγανογραφίας 2.1 Εισαγωγή Η έννοια της στεγανογραφίας είναι συνυφασμένη με την απόκρυψη πληροφορίας εντός κάποιου μέσου π.χ. εικόνα, κείμενο, ήχος ή βίντεο. Υλοποιείται από μια πληθώρα πρακτικών εφαρμογών μέσω διαφόρων τεχνικών που παρουσιάζονται στο παρόν κεφάλαιο. Στην παρούσα εργασία η διαδικασία στεγανογράφησης συνοπτικά ακολουθεί τα παρακάτω βήματα: Εισαγωγή της πληροφορίας προς απόκρυψη Κωδικοποίηση της πληροφορίας, με την χρήση κλειδιού το οποίο κρυπτογραφείται Χρήση μίας από τις υλοποιημένες μεθόδους για την πραγματοποίηση της απόκρυψης Στη συνέχεια δίνεται ιδιαίτερη έμφαση στην έννοια της στεγανογραφίας παραθέτοντας τον ορισμό της, τα πεδία εφαρμογής, κάποιες από τις δημοφιλέστερες τεχνικές και τα εργαλεία που υπάρχουν διαθέσιμα. Στο τέλος του κεφάλαιο περιγράφονται οι μέθοδοι κωδικοποίησης και κρυπτογράφησης της πληροφορίας που υλοποιήθηκαν στο πλαίσιο της παρούσας εργασίας. 2.2 Στεγανογραφία 2.2.1 Ορισμός Η στεγανογραφία είναι μια μέθοδος που επιτρέπει τη μετάδοση πληροφοριών ή μηνυμάτων 1 (χωρίς να γίνεται αντιληπτό από το ανθρώπινο μάτι) μέσω κάποιου καναλιού επικοινωνίας. Αυτό επιτυγχάνεται με την απόκρυψη πληροφορίας μέσα σε άλλη πληροφορία, αποκρύπτοντας έτσι την ύπαρξη των δεδομένων προς μετάδοση. Στόχος της στεγανογραφίας είναι η επίτευξη ασφαλούς επικοινωνίας με έναν μη ανιχνεύσιμο τρόπο και χωρίς να κινεί υποψίες για μετάδοση κρυφών δεδομένων. Σκοπός δηλαδή δεν είναι μόνο το να μη γνωρίζει κάποιος την κρυφή πληροφορία, αλλά να μη μπορεί καν να την αντιληφθεί. Σχεδόν όλα τα ψηφιακά αρχεία μπορούν να χρησιμοποιηθούν στη στεγανογραφία, αλλά πιο κατάλληλα είναι τα αρχεία που περιέχουν 1 Ένα μήνυμα συντίθεται από δεδομένα το οποία ο αποστολέας επιθυμεί να παραμείνουν εμπιστευτικά. Μπορεί να αφορά κείμενο, εικόνα ή οτιδήποτε μπορεί να αναπαρασταθεί με ένα bitstream. Η ύπαρξη μυστικού κλειδιού εξασφαλίζει ότι μόνο ο παραλήπτης, ο οποίος γνωρίζει το κλειδί, είναι σε θέση να ανακτήσει το μήνυμα. 14
πλεονάζουσα πληροφορία (redundant information). Ως πλεονάζουσα πληροφορία ορίζονται τα bits του αρχείου που είναι στα όρια του θορύβου ή η έλλειψη τους δεν θα επιφέρει σημαντική καμία αλλαγή στο σύνολο της πληροφορίας που αναπαρίσταται [1],[2],[3]. Ιστορικά δεδομένα Οι πρώτες καταγραφές στεναγογραφίας εντοπίζονται στην αρχαία Ελλάδα στο έργο «Χρονικά» του Ηροδότου που χρονολογείται γύρω στο 440 π.χ. Ο Ηρόδοτος καταγράφει δύο ιστορίες στεγανογράφησης. Η πρώτη αναφέρεται στον βασιλιά Δαρείο από την Σούσα ο οποίος ξύρισε το κεφάλι ενός από τους φυλακισμένους του και έγραψε επάνω στο κρανίο του ένα μυστικό μήνυμα. Όταν τα μαλλιά του φυλακισμένου μεγάλωσαν, τον έστειλε στον βασιλιά της Μιλήτου Αρισταγόρα χωρίς να εντοπιστεί το μήνυμα από κανέναν. Στη δεύτερη ιστορία, ένας στρατιώτης που λεγόταν Δημήρατος έπρεπε να στείλει ένα μήνυμα στη Σπάρτη ότι ο Ξέρξης πρόκειται να εισβάλει στην Ελλάδα. Χρησιμοποίησε τότε ένα πινάκιο που ήταν καλυμμένο με κερί από το οποίο το αφαίρεσε και έγραψε το μυστικό μήνυμα επάνω στο ξύλο του πίνακα. Στη συνέχεια το κάλυψε ξανά με κερί ώστε να φαίνεται κενό και το έστειλε στη Σπάρτη χωρίς να γίνει αντιληπτό, το μήνυμά του από τους Πέρσες. Οι Ρωμαίοι επίσης χρησιμοποιούσαν αόρατα μελάνια, τα οποία φτιάχνονταν από φυσικά συστατικά όπως χυμοί φρούτων και γάλα. Στη συνέχεια ζέσταιναν το αντικείμενο πάνω στο οποίο είχε γραφεί το μήνυμα και αποκάλυπταν το μυστικό περιεχόμενο. Τα αόρατα μελάνια εξελίχθηκαν περισσότερο κατά τη διάρκεια των αιώνων και είναι ακόμα σε χρήση αν και περιορισμένη. Κατά τη διάρκεια του 15ου και του 16ου αιώνα, πολλοί συγγραφείς συμπεριλαμβανομένου του Johannes Trithemius (συγγραφέα του «Steganographia») και του Gaspari Schotti (συγγραφέα του «Steganographica») έγραψαν για στεγανογραφικές τεχνικές όπως η κωδικοποίηση κειμένων, τα αόρατα μελάνια και τα ενσωματωμένα κρυμμένα μηνύματα στη μουσική. Μεταξύ του 1883 και του 1907, οι δημοσιεύσεις του Auguste Kerckhoff (συγγραφέα του «Cryptographic Militaire») και του Charles Briquet (συγγραφέα του «Les Filigranes») εξέλιξαν περισσότερο τη στεγανογραφία. Τα βιβλία αυτά πραγματεύονταν κυρίως την κρυπτογραφία, αλλά και τα δύο θεωρείται ότι θεμελίωσαν κάποια στεγανογραφικά συστήματα και πιο συγκεκριμένα τις τεχνικές υδατογραφήματος. Κατά τη διάρκεια του πρώτου και δεύτερου παγκοσμίου πολέμου ανακαλύφθηκαν επίσης ακόμα πιο εξελιγμένες μορφές στεγανογραφίας. Εκεί αναπτύχθηκε η λογική των κρυμμένων στεγανογραφημάτων, η αντικατάσταση μέρους της εικόνας καθώς και το σύστημα των μικροτελειών. 15
Στη σημερινή εποχή η στεγανογραφία χρησιμοποιείται στους υπολογιστές και στην απόκρυψη δεδομένων μέσα σε αρχεία. Πολλά εργαλεία και τεχνικές έχουν αναπτυχθεί βασιζόμενα στις ήδη υπάρχουσες τεχνικές της παλαιάς στεγανογραφίας [1],[2],[3]. Στεγανογραφία και κρυπτογραφία Στόχος της στεγανογραφίας και της κρυπτογραφίας είναι η παροχή μυστικής επικοινωνίας μεταξύ των δύο μερών που ανταλλάσσουν μηνύματα. Ωστόσο η στεγανογραφία και η κρυπτογραφία δεν είναι το ίδιο. Η κρυπτογραφία κρύβει το περιεχόμενο ενός μηνύματος από ένα κακόβουλο πρόσωπο, ενώ η στεγανογραφία κρύβει την ύπαρξη του ίδιου του μηνύματος. Επίσης υπάρχει διαφορά στο πότε θεωρείται ότι το σύστημα «έσπασε». Στην κρυπτογραφία το σύστημα σπάει όταν ο επιτιθέμενος καταφέρει να διαβάσει το μυστικό περιεχόμενο. Ένα στεγανογραφικό σύστημα από την άλλη για να σπάσει χρειάζεται ο επιτιθέμενος να εντοπίσει την ύπαρξη του μυστικού μηνύματος και να μπορέσει μετέπειτα να το διαβάσει ή να το καταστρέψει. Στην κρυπτογραφία, η δομή του μηνύματος τροποποιείται με τέτοιο τρόπο έτσι ώστε να μην μπορεί να διαβαστεί εκτός εάν ο ενδιαφερόμενος έχει γνώση του κλειδιού της κωδικοποίησης. Δε γίνεται καμία προσπάθεια να κρυφτεί το μήνυμα. Στην περίπτωση αυτή παρέχεται η δυνατότητα μετάδοσης της πληροφορίας ανάμεσα σε δύο μέρη με τέτοιο τρόπο που να εμποδίζεται κάποιος τρίτος να τη διαβάσει. Τέλος, η κρυπτογραφία επιτρέπει την πιστοποίηση της ταυτότητας ενός ατόμου προκειμένου να αποκτήσει πρόσβαση στην πληροφορία. Από την άλλη πλευρά, η στεγανογραφία δεν αλλάζει τη δομή του μυστικού μηνύματος, αλλά το κρύβει μέσα σε μία εικόνα-κάλυμμα έτσι ώστε να μην μπορεί να γίνει αντιληπτό. Για παράδειγμα, ένα κρυπτογραφημένο μήνυμα μπορεί να εγείρει υποψίες σε όποιον το παραλάβει, ενώ ένα αόρατο μήνυμα φτιαγμένο με στεγανογραφικές τεχνικές θα περάσει απαρατήρητο. Με άλλα λόγια, η στεγανογραφία αποτρέπει τρίτους παραλήπτες να αντιληφθούν την ύπαρξη κάποιου μηνύματος. Η ασφάλεια στην περίπτωση της στεγανογραφίας βασίζεται στη μυστικότητα του συστήματος κωδικοποίησης. Εφόσον το σύστημα κωδικοποίησης γίνει γνωστό το μήνυμα είναι διαθέσιμο προς ανάγνωση. Βεβαίως δεν υπάρχει περιορισμός στο συνδυασμό των δύο τεχνικών στεγανογραφίας και κρυπτογράφησης. Στην περίπτωση μάλιστα, που εφαρμόζεται αυτός ο συνδυασμός, ακόμη και αν κάποιος ανακαλύψει τη στεγανογραφική τεχνική για να διαβάσει το μήνυμα θα πρέπει να ανακαλύψει και το κλειδί κρυπτογράφησης [4]. 16
2.2.2 Πεδίο εφαρμογών στεγανογραφίας Η στεγανογραφία μπορεί να υλοποιηθεί σε εικόνες, αρχεία ήχου, βίντεο και κείμενα. Οι μέθοδοι που εφαρμόζονται πρέπει να υπολογίζουν τρεις πτυχές που αφορούν την χωρητικότητα, την ασφάλεια και την ευρωστία. Η χωρητικότητα αναφέρεται στο μέγεθος των δεδομένων που μπορεί να αποθηκευθούν στο μέσο κάλυψης, η ασφάλεια στην αδυναμία κάποιου που είτε ακούει τον ήχο είτε βλέπει την εικόνα ή διαβάζει το κείμενο να εντοπίζει την κρυμμένη πληροφορία και η ευρωστία στο εύρος των τροποποιήσεων που μπορεί να υποστεί το μέσο στεγανογράφησης πριν κάποιος τρίτος καταστρέψει την κρυμμένη πληροφορία [5]. Η βαρύτητα που δίνεται σε κάθε έναν από τους παραπάνω συντελεστές καθορίζεται ανάλογα με την εφαρμογή στεγανογράφησης που υλοποιείται. Γενικά όμως τα σημαντικότερα χαρακτηριστικά τα οποία πρέπει να ικανοποιούνται είναι: Οι πληροφορίες που αποκρύπτονται να μην είναι αντιληπτές από τον ανθρώπινο παρατηρητή Να εξασφαλίζεται το μέγιστο επίπεδο ασφάλειας σε όλη τη διαδικασία αλλά Να μπορούν να αποθηκευτούν όσο το δυνατόν περισσότερα δεδομένα κάνοντας χρήση έξυπνων τεχνικών προκειμένου να υπάρξει εκμετάλλευση όλης της χωρητικότητας του μέσου κάλυψης Το αποτέλεσμα της στεγανογράφησης να είναι ανθεκτικό σε απλή επεξεργασία σήματος, γεωμετρικές στρεβλώσεις και επιθέσεις, να είναι αναλλοίωτο σε μετασχηματισμούς εικόνας όπως περικοπή ή περιστροφή ή συμπίεση Οι μέθοδοι που υλοποιούνται σε ψηφιακά μέσα (κείμενο, ήχο, εικόνα, βίντεο) είναι οι ακόλουθες: Απόκρυψη δεδομένων σε κείμενο Η απόκρυψη κειμένου μέσα σε κείμενο είναι εύκολο να ανιχνευθεί από τους αναγνώστες και γι αυτό το λόγο δεν είναι εύκολο να γίνει [6]. Οι τεχνικές στεγανογράφησης επικεντρώνονται στην ανακάλυψη τροποποιήσεων οι οποίες δεν είναι ορατές από τον αναγνώστη του κειμένου. Οι τρεις δημοφιλείς μέθοδοι είναι: Α. Μέθοδοι ανοιχτού τύπου: Οι μέθοδοι αυτοί εκμεταλλεύονται το διάστημα μεταξύ των φράσεων, το κενό στο τέλος της γραμμής καθώς και το κενό μεταξύ των λέξεων. Τα προγράμματα που έχουν αναπτυχθεί μπορεί να αφαιρούν τα επιπλέον κενά ή να χρησιμοποιούν ένα συγκεκριμένο τρόπο προσθήκης κενών (π.χ. ένα κενό μετά από κάθε τελεία). Στη συνέχεια η κωδικοποίηση ακολουθεί κάποιο κανόνα όπως για παράδειγμα ότι το ψηφίο 0 του μηνύματος αντικαθίσταται με 1 κενό ενώ το 1 με δύο κενά. 17
Β. Μέθοδοι που εκμεταλλεύονται το συντακτικό: Οι μέθοδοι αυτοί αξιοποιούν τα σημεία στίξης και συγκεκριμένα την ιδιότητα ότι αν ο συγγραφέας παραλείψει κάποιο σημείο στίξης δεν αλλοιώνεται το νόημα της φράσης. Μία άλλη τεχνική που μπορεί να εφαρμοστεί σε αυτές τις περιπτώσεις είναι η αντιστροφή των φράσεων έτσι ώστε να μη χάνουν το νόημά τους. Γ. Σημασιολογικές μέθοδοι: Οι μέθοδοι αυτοί κωδικοποιούν την πληροφορία μέσα από τη χρήση των λέξεων. Εάν για παράδειγμα θεωρήσουμε τα συνώνυμα ενός λεξικού για κάποιο συγκεκριμένο νόημα τότε μέσα σε κάποιο πλαίσιο μία λέξη μπορεί να αντικατασταθεί από κάποια άλλη. Η επιλογή χρήσης μιας από όλες τις λέξεις μπορεί να αποθηκεύσει 2 bits δεδομένων. Η δυσκολία σε αυτή την τεχνική έγκειται στην επιλογή της σωστής συνώνυμης λέξης. Απόκρυψη δεδομένων σε ήχο Ο κύριος περιορισμός στην στεγανογράφηση ενός ηχητικού σήματος είναι ότι η στεγανογραφημένη πληροφορία δεν θα πρέπει να ακούγεται από τον ακροατή. Ειδικά για τα ηχητικά σήματα παρουσιάζεται ιδιαίτερη δυσκολία καθώς γενικά συμπιέζονται με αλγορίθμους για ηχητική συμπίεση οι οποίοι συνήθως αφαιρούν συχνότητες που δεν ακούγονται. Δεδομένου ότι και η στεγανογραφημένη πληροφορία δεν πρέπει να ακούγεται χάνεται και αυτή. Για να ξεπεραστεί αυτό το πρόβλημα χρησιμοποιούνται διάφορες τεχνικές όπως η στεγανογραφία με bit stream [7] και PCM [8]. Στην πρώτη περίπτωση τα δεδομένα προς στεγανογράφηση εισάγονται απευθείας στα συμπιεσμένα αρχεία ήχου ενώ στη δεύτερη το μήνυμα ενσωματώνεται σε ένα ασυμπίεστο αρχείο ήχου αποκρύπτοντας ένα ευρυζωνικό σήμα δεδομένων κάτω από το όριο κάλυψης (masking threshold) του ηχητικού σήματος. Απόκρυψη δεδομένων σε εικόνες Η στεγανογράφηση σε εικόνες, ανάλογα με τις αλλαγές που πραγματοποιούνται στην εικόνα, χωρίζονται σε κατηγορίες: Α. Τεχνικές που αλλάζουν τις τιμές των pixels: Για κάθε εικόνα επιλέγονται συγκεκριμένα pixels στα οποία εκτελούνται εργασίες αλλαγής των τιμών τους, με βάση συγκεκριμένους αλγορίθμους. Τέτοιοι αλγόριθμοι είναι οι LSB [9], LBP [10], χρήση ιστογράμματος [11] οι οποίοι περιγράφονται στην επόμενη ενότητα. B. Τεχνικές στο πεδίο των συχνοτήτων: Οι αλγόριθμοι αυτοί είναι πιο κατάλληλοι για εφαρμογές που απαιτούν την ανθεκτικότητα της μεθόδου σε δεδομένες επεξεργασίες, όπως για παράδειγμα συμπίεση κατά jpeg. Στην πρώτη φάση εφαρμόζεται μια συνάρτηση μετασχηματισμού π.χ. DCT (Discrete Cosine Transform) [9] ή FFT (Fast Fourier Transform) [12]. Τα δεδομένα εισάγονται μεταβάλλοντας τους επιλεγμένους συντελεστές. Η επιλογή των συντελεστών γίνεται έτσι ώστε το 18
μήνυμα να είναι ανθεκτικό σε πιθανές αλλαγές της εικόνας. Η στεγανογραφημένη εικόνα παράγεται με την εφαρμογή του αντίστροφου μετασχηματισμόυ. Απόκρυψη δεδομένων σε βίντεο Η στεγανογραφία σε βίντεο σε αρκετές περιπτώσεις ακολουθεί όμοια διαδικασία με την στεγανογραφία στις εικόνες. Η διαφορά έγκειται στο γεγονός ότι η πληροφορία κρύβεται μέσα σε κάθε καρέ του βίντεο. Οι τεχνικές χωρίζονται σε δύο ομάδες: Α. Το βίντεο αντιμετωπίζεται ως ακολουθία εικόνων: Κάθε καρέ του βίντεο θεωρείται μια ξεχωριστή εικόνα στην οποία αποκρύπτεται η πληροφορία. Το κύριο πλεονέκτημα αυτής της μεθόδου είναι η δυνατότητα χρήσης των αλγορίθμων στεγανογράφησης και υδατογράφησης εικόνων σε βίντεο [13]. Β. Στεγανογραφία σε βίντεο σε πραγματικό χρόνο: Οι τεχνικές αυτές εκμεταλλεύονται δεδομένα του ίδιου του βίντεο, όπως χρωματικά χαρακτηριστικά, ρυθμίσεις κατά την κωδικοποίηση συμπίεσης, κ.α..για παράδειγμα εάν τα χρώματα σε κάποιο μπλοκ του φρέιμ είναι παρόμοιο τότε αλλάζει τα χαρακτηριστικά των χρωμάτων ενός αριθμού pixels προκειμένου να γίνει η απόκρυψη των δεδομένων στο φρέιμ. [14], [15]. 2.3 Τεχνικές στεγανογραφίας σε εικόνα 2.3.1 Μέθοδος LSB H μέθοδος LSB (Least Significant Bit) είναι μία από τις πιο δημοφιλής μεθόδους στεγανογραφίας [16]. Η αρχή στην οποία στηρίζεται ακολουθεί την εξής λογική: το λιγότερο σημαντικό ψηφίο από κάποια ή και από όλα τα pixels μία εικόνας κάλυψης αντικαθίστανται από ένα bit του κρυφού μηνύματος. Στην περίπτωση που το μέσο απόκρυψης είναι εικόνες 24-bit, αυτό το ψηφίο μπορεί να προέρχεται από κάθε χρωματική συνιστώσα της εικόνας: κόκκινο, πράσινο, μπλε. Δηλαδή σε κάθε pixel είναι δυνατό να γίνεται απόκρυψη 3 bits μηνύματος. Κατά αυτόν τον τρόπο σε μία εικόνα διαστάσεων 800x600 μπορούν να στεγανογραφηθούν 1.440.000 bits ή 180.000 bytes [17]. Στην ακόλουθη εικόνα παρουσιάζονται τρία pixels από μία RGB εικόνα: Εικόνα 1: Αρχικές τιμές τριών pixels Εάν για παράδειγμα ο αποστολέας επιθυμεί την απόκρυψη του αριθμού 200 (δυαδική αναπαράσταση είναι 11001000) τότε αντικαθιστώντας το τελευταίο bit (λιγότερο σημαντικό) κάθε 19
συνιστώσας με ένα bit της δυαδικής αναπαράστασης του 200 προκύπτει το αποτέλεσμα της ακόλουθης εικόνας: Εικόνα 2: Απόκρυψη πληροφορίας στα 3 pixels με τη μέθοδο LSB Στα τρία pixel που χρειάστηκαν για την στεγανογραφία, χρησιμοποιήθηκαν οι οκτώ από εννιά συνολικά συνιστώσες. Από αυτές μόνο τα τρία υπογραμμισμένα bits (εικόνα 2) χρειάστηκε να αλλάξουν. Δεδομένου ότι υπάρχουν 256 δυνατοί συνδυασμοί για κάθε χρώμα, αλλάζοντας το λιγότερο σημαντικό ψηφίο των χρωματικών συνιστωσών κάθε pixel, το αποτέλεσμα έχει πολύ μικρές επιδράσεις στην ένταση των χρωμάτων. Αυτές οι αλλαγές δεν μπορούν να γίνουν αντιληπτές από το ανθρώπινο μάτι και έτσι το μήνυμα αποκρύπτεται επιτυχώς. Στην περίπτωση που η εικόνα δεν εμφανίζει πολλές ακμές ή μεγάλες χρωματικές αντιθέσεις κ.α. μπορούν να χρησιμοποιηθούν περισσότερα από ένα bit (2 ή 3) από κάθε χρώμα και οι επιδράσεις να μην μπορούν και πάλι να γίνουν αντιληπτές. Το προηγούμενο παράδειγμα περιγράφει μια πολύ απλοϊκή προσέγγιση απόκρυψης του μηνύματος αντικαθιστώντας το λιγότερο σημαντικό ψηφίο κάθε χρωματικής συνιστώσας σε συνεχόμενα pixels έως ότου γίνει απόκρυψη όλου του μηνύματος. Μία τέτοια μέθοδος μπορεί να είναι γνώστη και κατά συνέπεια μπορεί εύκολα κάποιος να εξάγει το μήνυμα [18]. Σε ένα πιο ασφαλές σύστημα ο αποστολέας και ο παραλήπτης χρησιμοποιούν ένα κρυφό κλειδί με το οποίο καθορίζονται τα pixels που θα χρησιμοποιηθούν. Έτσι εξασφαλίζεται ότι κάποιος ανεπιθύμητος που δεν έχει στην κατοχή του το κλειδί δε μπορεί να γνωρίζει σε ποια pixels είναι κρυμμένο το μήνυμα και κατά συνέπεια δεν μπορεί να το αποσπάσει [19]. 2.3.2 Μέθοδος LBP (Local Binary Pattern) O ταξινιμητής υφής Local Binary Pattern (LBP) αναπτύχθηκε για την εξαγωγή χαρακτηριστικών υφής μελετώντας τις διαβαθμίσεις του γκρι της εικόνας. O LBP αποτελεί ένα από τα χαρακτηριστικά που χρησιμοποιούνται για κατηγοριοποίηση υφής και το οποίο εκμεταλλεύεται η μέθοδος στεγανογράφησης για την εισαγωγή του μηνύματος. Αναφέρθηκε για πρώτη φορά από τον Harwood [20] και στη συνέχεια παρουσιάστηκε επισήμως ως μέθοδος ανάλυσης υφής από τον Ojala το 1996 [21]. Ο LBP είναι απλοϊκός στον υπολογισμό του και πολύ αποδοτικός. Επίσης, ανταποκρίνεται άριστα σε μεθόδους αναγνώρισης προτύπων στο ανθρώπινο οπτικό σύστημα [22]. 20
Το γεγονός ότι οι διαβαθμίσεις του γκρι στις περισσότερες εικόνες περιέχουν κάποιο είδος θορύβου τις καθιστά χρήσιμες για απόκρυψη πληροφορίας χωρίς να γίνεται αντιληπτή. Για το λόγο αυτό μπορούν να χρησιμοποιηθούν κατηγοριοποιητές υφής (texture classifiers). Ο LBP ταξινομητής ορίζεται ως ένα μέτρο σύγκρισης υφής που αφήνει αναλλοίωτες τις αποχρώσεις του γκρι και οι οποίες προέρχονται από την εξέταση της υφής σε μία τοπική γειτονιά [23]. Ο ταξινομητής λειτουργεί με 8 γειτονικά pixels, χρησιμοποιώντας την τιμή του κεντρικού pixel ως κατώφλι. Η τιμή του υπολογίζεται πολλαπλασιάζοντας την τιμή του κατωφλίου (threshold) με τα βάρη που δίνονται για κάθε pixel και προσθέτοντας τα αποτελέσματα. Εικόνα 3: Υπολογισμός LBP [24] Χρησιμοποιείται ευρέως σε διάφορες εφαρμογές, λόγω της ανοχής που έχει στις αλλαγές της φωτεινότητας και λόγω της απλότητας στον υπολογισμό του. Μερικές από τις εφαρμογές αυτές είναι η κατάτμηση υφής [24], η ανάκτηση εικόνας και βίντεο, η αναγνώριση προσώπου και η ανάλυση εικόνας. Επίσης, χρησιμοποιείται στη διαδικασία στεγανάλυσης και απόκρυψης δεδομένων. 2.3.3 Μέθοδος απόκρυψης δεδομένων με τη χρήση Ιστογράμματος Η μέθοδος βασίζεται σε μια δημοσιευμένη μέθοδο απόκρυψης δεδομένων με την ταυτόχρονη δυνατότητα επανάκτησής τους με τη χρήση του ιστογράμματος της εικόνας [25]. Το κυριότερο στοιχείο της μεθόδου είναι η ανεύρεση του pixel που εμφανίζεται πιο πολλές φορές σε μια συγκεκριμένη εικόνα. Με μικρή τροποποίηση κάποιων pixels της εικόνας μπορεί να αποκρυφθεί 21
πληροφορία χωρίς να αλλοιωθεί αισθητά η εικόνα. Χαρακτηριστικό είναι ότι το PSNR 2 παραμένει πάντα μεγαλύτερος από 48 db. Στο πρώτο βήμα δημιουργείται το ιστόγραμμα της εικόνας ενώ στη συνέχεια γίνεται εύρεση της τιμής του pixel που εμφανίζεται ποιο συχνά στη συγκεκριμένη εικόνα (π.χ. 155). Το επόμενο στάδιο περιλαμβάνει τον εντοπισμό των σημείων μηδενισμού της εικόνας. Ως σημεία μηδενισμού ορίζονται η μικρότερη και η μεγαλύτερη τιμή που παίρνουν τα pixels στην εικόνα. Η διαδικασία απόκρυψης ξεκινάει με την αύξηση της τιμής όλων των pixels που είναι μεγαλύτερα ή ίσα με το pixel που έχει την πιο συχνή εμφάνιση (στο παράδειγμα της ακόλουθης εικόνας είναι το 155) κατά ένα. Το ιστόγραμμα της εικόνας είναι πλέον εν μέρει μετατοπισμένο σε σχέση με το αρχικό. Η θέση του pixel που είχε τη μεγαλύτερη συχνότητα εμφάνισης παραμένει κενή καθώς η μετατόπιση πραγματοποιείται από εκείνο το σημείο και μετά. Στο παράδειγμα της ακόλουθης εικόνας παρουσιάζονται το αρχικό ιστόγραμμα και το μετατοπισμένο. (α) (β) Εικόνα 4: (α) Το ιστόγραμμα της αρχικής εικόνας (β) Το ιστόγραμμα με μετατοπισμένα τα pixels που είναι μεγαλύτερα ή ίσα από το μέγιστο. 2 Το PSNR ορίζεται στο κεφάλαιο 4, παράγραφος 4.1 22
Η μέθοδος ολοκληρώνεται με την αλλαγή της τιμής των pixels που έχουν αριθμό ίσο με 154, δηλαδή το αμέσως μικρότερο σε τιμή pixel, προσθέτοντας σε αυτά την τιμή των bits προς απόκρυψη. Με αυτόν τον τρόπο εάν το bit που χρειάζεται να αποκρυφτεί είναι το μηδέν το pixel δεν θα υποστεί καμία απολύτως αλλαγή. Εάν είναι το ένα τότε θα αυξηθεί κατά ένα και θα καταλάβει μια θέση στο ιστόγραμμα και συγκεκριμένα στον αριθμό 155. Στην τελική εικόνα το pixel που εμφανίζεται πιο πολλές φορές είναι το pixel με τιμή 156 άρα τα δεδομένα τοποθετούνται στα pixels με αριθμούς 154 και 155 [11]. 2.3.4 Μέθοδος DCT Η μέθοδος DCT εφαρμόζεται κυρίως σε εικόνες τύπου jpeg. Για κάθε χρωματική συνιστώσα το jpeg χρησιμοποιεί τον διακριτό μετασχηματισμό συνημιτόνου (DCT) για να μετασχηματίσει τα pixels των 8x8 blocks της εικόνας σε 64 DCT συντελεστές. Πρακτικά, ο αλγόριθμος εξετάζει ένα - ένα block διαστάσεων 8x8 και υπολογίζει τους DCT συντελεστές μέσω της παρακάτω σχέσης: N1N1 (2x 1) u (2y 1) v C( u, v) a( u) a( v) f ( x, y)cos cos x0 y0 2 2 (1) Εικόνα 5: Μετασχηματισμός DCT Στη συνέχεια οι συντελεστές αυτοί κβαντίζονται χρησιμοποιώντας έναν πίνακα κβάντισης. Η σχέση κβάντισης είναι η ακόλουθη: C( u, v) F( u, v) ( Q( u, v)/ 2) / Q( u, v) (2) Τα λιγότερο σημαντικά ψηφία των κβαντισμένων DCT συντελεστών μπορούν να αντικατασταθούν με τα bit του μηνύματος προς απόκρυψη. Η αλλαγή ενός DCT συντελεστή επιφέρει τροποποιήσεις και στα 64 pixels του block [5]. 23
Η διαδικασία για την απόκρυψη πληροφορίας με την μέθοδο του DCT έχει ως εξής: Στο πρώτο βήμα γίνεται εισαγωγή της εικόνας που θα χρησιμοποιηθεί για κάλυψη ενώ το μήνυμα προς απόκρυψη μετατρέπεται σε δυαδική μορφή. Η εικόνα διασπάται σε blocks διαστάσεων 8x8 και γίνεται εφαρμογή διακριτού μετασχηματισμού συνημιτόνου σε κάθε block. Κάθε block μετά την ολοκλήρωση της παραπάνω διαδικασίας κβαντίζεται. Στη συνέχεια γίνεται αντικατάσταση του λιγότερο σημαντικού ψηφίου από κάθε DCΤ συντελεστή με ένα bit πληροφορίας προς απόκρυψη. Η ολοκλήρωση της παραπάνω διαδικασίας ολοκληρώνει και την διαδικασία στεγανογράφησης της εικόνας. Η διαδικασία της ανάκτησης του μηνύματος πραγματοποιείται εφαρμόζοντας την αντίστροφη διαδικασία. Στο πρώτο βήμα γίνεται ανάγνωση της στεγανογραφημένης εικόνας και διαχωρίζεται σε 8x8 blocks. Στη συνέχεια εφαρμόζεται διακριτός μετασχηματισμός συνημιτόνου σε κάθε block και κάθε block κβαντίζεται. Τα λιγότερα σημαντικά ψηφία κάθε DCT συντελεστή αποτελούν τα bit του μηνύματος προς απόκρυψη. Όταν ολοκληρωθεί η ανάκτηση των bit του μηνύματος από τους DCT συντελεστές γίνεται επανασύνθεση του αρχικού μηνύματος [9]. 2.4 Στεγανογραφικά εργαλεία Στο διαδίκτυο υπάρχουν μια σειρά από στεγανογραφικά εργαλεία τα οποία διαχειρίζονται τους περισσότερους διαφορετικούς τύπους δεδομένων. Τα εργαλεία αυτά μπορούν να εγκατασταθούν σε διάφορα λειτουργικά συστήματα (Windows, Linux, Macintosh) ενώ το κείμενο προς απόκρυψη ενσωματώνεται σε εικόνες BMP, JPG, GIF κα. Επίσης δημοφιλής τρόπος στεγανογραφίας είναι η ενσωμάτωση απλού κειμένου εντός αρχείων HTML. Στην περίπτωση αυτή τα δεδομένα προς απόκρυψη ενσωματώνονται χρησιμοποιώντας κενούς χαρακτήρες, tabs και κενά στο τέλος των γραμμών. Τέλος, μια ακόμη γνωστή μέθοδος στεγανογραφίας είναι αυτή που πραγματοποιείται με αρχεία ήχου όπως WAV, PCM, AVI, MIDI, MPEG, MP3, RIFF, και VOC. Σε επίπεδο υλικού η απόκρυψη γίνεται σε μη χρησιμοποιούμενους ή κρυφούς δίσκους δεδομένων στο σύστημα αρχείων. Στην περίπτωση αυτή τα δεδομένα μπορεί να αποθηκευθούν μεταξύ των αρχείων ή σε οποιοδήποτε αχρησιμοποίητο χώρο μέσα στο σύστημα αρχείων. Τα αρχεία αυτά αποθηκεύονται σε κρυφούς φακέλους που δεν αποτελούν ορατό χώρο από το λειτουργικό σύστημα μειώνοντας την πιθανότητα εντοπισμού [26], [27], [25]. Τα πιο γνωστά σεγανογραφικά εργαλεία είναι τα ακόλουθα: MP3Stego: Εκτελεί απόκρυψη της πληροφορίας σε αρχεία MP3 κατά τη διάρκεια της διαδικασίας συμπίεσης. Τα δεδομένα καταρχήν συμπιέζονται, κρυπτογραφούνται και στη συνέχεια γίνεται απόκρυψή τους μέσα στο MP3 bitstream. 24
JPHide και JPSeek: Τα προγράμματα JPHIDE και JPSEEK επιτρέπουν την απόκρυψη ενός αρχείου σε μια εικόνα JPEG. Στόχος είναι όχι μόνο η απόκρυψη ενός αρχείου μέσα στην εικόνα αλλά και η δυνατότητα να μην μπορεί να ανιχνευθεί ότι η εικόνα κρύβει κάποιο αρχείο. Όταν η πληροφορία που κρύβεται καταλαμβάνει μικρό ποσοστό της εικόνας και ο χρήστης δεν έχει την αρχική εικόνα είναι αρκετά δύσκολο να συμπεράνει κάποιος ότι υπάρχει απόκρυψη αρχείου. Όταν η αλλαγή στην εικόνα είναι μεγαλύτερη από 15% τότε η αλλαγή αυτή είναι ορατή δια γυμνού οφθαλμού. BlindSide: Το εργαλείο Blindside επιτρέπει την απόκρυψη ενός αρχείου ή ενός συνόλου αρχείων μέσα σε μια εικόνα του υπολογιστή. Η νέα εικόνα μπορεί να φαίνεται ίδια ωστόσο έχει τη δυνατότητα να χωρέσει έως 50 χιλιάδες κρυφά αρχεία. Τα αρχεία που κρύβονται μπορεί να προστατεύονται με ειδικό κωδικό προκειμένου να εμποδίσουν την πρόσβαση στα δεδομένα. GIFShuffle: Χρησιμοποιείται για την απόκρυψη μηνυμάτων μέσα σε εικόνες τύπου GIF αναμιγνύοντας το χάρτη χρωμάτων, μια τεχνική που αφήνει την εικόνα φαινομενικά ίδια. Μπορεί να διαχειριστεί όλες τις εικόνες GIF, συμπεριλαμβανομένων και εκείνων με διαφάνεια και κινούμενα σχέδια, ενώ παράλληλα παρέχει τη συμπίεση και κρυπτογράφηση του μηνύματος προς απόκρυψη. WbStego: Παρέχει τη δυνατότητα απόκρυψης κάθε τύπου αρχείου σε εικόνες bitmap, αρχεία κειμένου: HTML ή Adobe PDF. Δεν διακρίνονται αλλαγές στο αρχείο που έχει στεγανογραφηθεί. StegoVideo: Επιτρέπει την απόκρυψη ενός αρχείου σε ένα αρχείο βίντεο. Ο αλγόριθμος που χρησιμοποιεί επιτρέπει τη μικρότερη δυνατή απώλεια δεδομένων μετά τη συμπίεση. Επίσης μπορεί να εξάγει την κρυμμένη πληροφορία. Η χρήση κωδικού για την απόκρυψη είναι επίσης δυνατή. S-Tools: Εκτελεί απόκρυψη αρχείων και φακέλων χρησιμοποιώντας τη στεγανογραφία μέσα σε εικόνες τύπου BMP, GIF καθώς και αρχεία μουσικής τύπου WAV. Οι διαφορές που προκαλούνται από τη διαδικασία απόκρυψης δεν είναι ορατές στο ανθρώπινο μάτι. Παρέχεται ακόμη η δυνατότητα κρυπτογράφησης της πληροφορίας. Steganos 3: Χρησιμοποιεί μια σειρά τεχνικών στεγανογράφησης και κρυπτογράφησης για την απόκρυψη δεδομένων είτε σε αρχεία ήχου είτε σε εικόνες. Παρέχει μια σειρά επιπρόσθετων δυνατοτήτων για την προστασία των σημαντικών εγγράφων. 2.5 Εφαρμογές στεγανογραφίας Η στεγανογραφία όπως αναφέρθηκε και παραπάνω μπορεί να χρησιμοποιηθεί κάθε φορά που κάποιος επιθυμεί να κρύψει κάποια δεδομένα. Βέβαια ο απώτερος στόχος είναι η επιθυμία κάθε 25
κατόχου της πληροφορίας να αποτρέψει άτομα χωρίς εξουσιοδότηση να αποκτήσουν πρόσβαση σε πληροφορίες που περιέχονται σε κάποιο μήνυμα. Υπάρχουν πολλές εφαρμογές για την ψηφιακή στεγανογραφία σε εικόνες όπως είναι η προστασία της πνευματικής ιδιοκτησίας, ο εμπλουτισμός του κειμένου με επιπρόσθετα χαρακτηριστικά καθώς και η επικοινωνία μέσω εικόνων. Στον τομέα των επιχειρήσεων η στεγανογραφία χρησιμοποιείται για την απόκρυψη σχεδίων ή τύπων που πρόκειται να χρησιμοποιηθούν σε κάποια μελλοντική εργασία. Βεβαίως η στεγανογραφία μπορεί να χρησιμοποιηθεί και στον τομέα της βιομηχανικής κατασκοπείας με την αποστολή μηνυμάτων μέσα από κάποια εταιρεία χωρίς να το αντιλαμβάνεται κανείς. Σε προσωπικό επίπεδο χρησιμοποιείται όταν απλώς κάποιος επιθυμεί να αποκρύψει κάποια πληροφορία η οποία δεν επιθυμεί να γνωστοποιήσει σε κάποιο τρίτο [28]. Η απόκρυψη πληροφορίας έχει τρεις δημοφιλείς χρήσεις. Εφαρμόζεται σε μυστικά κανάλια ανοιχτών συστημάτων που εκτελούν ενσωμάτωση δεδομένων, την στεγανογραφία καθώς και στην ψηφιακή υδατογράφηση. Εικόνα 6: Οι πιο δημοφιλείς εφαρμογές της απόκρυψης πληροφορίας [29] Στο πρωτόκολλο TCP/IP τα μυστικά κανάλια περιλαμβάνουν πληροφορίες συγκάλυψης για την ταυτότητα στις επικεφαλίδας του πρωτοκόλλου προκειμένου να αποκρύψουν την πραγματική ταυτότητα ενός ή περισσοτέρων συστημάτων. Η δυνατότητα αυτή είναι πολύ χρήσιμη για ασφαλείς επικοινωνίες ιδιαίτερα σε ανοιχτά συστήματα όπως το διαδίκτυο όπου είναι απαραίτητη η εχεμύθεια για όλη τη διαδικασία. Μια ακόμη εφαρμογή της στεγανογραφίας είναι η χρήση «μηνυμάτων κάλυψης» για την αποστολή κρυφών μηνυμάτων. Η μέθοδος αυτή είναι χρήσιμη όταν ένα μέρος επιθυμεί να αποστείλει ένα μυστικό μήνυμα ή ένα έγγραφο πάνω από ένα ανοιχτό σύστημα όπως το διαδίκτυο. Ουσιαστικά, η αποστολή ενός μηνύματος μέσα σε κάποιο άλλο προσδίδει μια αίσθηση ασφάλειας δεδομένου ότι κανείς δεν ξέρει ότι υπάρχει και κάποιο άλλο μυστικό κείμενο. Στην κατηγορία αυτή ανήκει και η ενσωμάτωση περιγραφικών δεδομένων μέσα σε μια εικόνα. Αυτά 26
μπορεί να είναι λεζάντες, σχόλια ή χρονοσημάνσεις. Έτσι η αντιγραφή της στεγανογραφημένης εικόνας περιλαμβάνει και τα παραπάνω δεδομένα. Η πρόσβαση σε αυτά παρέχεται μόνο σε όποιον κατέχει το κλειδί αποκρυπτογράφησης. Η τελευταία πιο δημοφιλής εφαρμογή στεγανογραφίας είναι η μέθοδος της ψηφιακής υδατογράφησης αν και δεν θεωρείται αμιγώς στεγανογραφία. Ωστόσο χρησιμοποιούνται στεγανογραφικές τεχνικές για την αποθήκευση υδατογραφημάτων στα δεδομένα. Η διαφορά έγκειται στο ότι ενώ σκοπός της στεγανογραφίας είναι η απόκρυψη πληροφοριών το υδατογράφημα τις περισσότερες φορές χρησιμοποιείται για την προσθήκη πληροφοριών οι οποίες μάλιστα είναι εμφανής δια γυμνού οφθαλμού (ωστόσο υπάρχουν και περιπτώσεις όπου το υδατογράφημα χρησιμοποιείται για την απόκρυψη πληροφοριών οι οποίες δεν είναι εμφανείς). Στην περίπτωση αυτή οι στεγανογραφικές τεχνικές χρησιμοποιούνται προκειμένου να μην υπάρχει αλλοίωση σε φωτογραφίες, αρχεία ήχου ή βίντεο. Συνήθως χρησιμοποιείται για λόγους προστασίας της πνευματικής ιδιοκτησίας από εταιρείες ή οντότητες που επιθυμούν την ενσωμάτωσή του εμπορικού τους σήματος ή άλλες πληροφορίες που αφορούν την άδεια του λογισμικού [28]. 2.6 Κωδικοποίηση της πληροφορίας με τη μέθοδο base64 Στα πλαίσια της παρούσας εργασίας τα δεδομένα κωδικοποιούνται με τη μέθοδο base64 εντούτοις υπάρχουν πολλές μέθοδοι που μπορεί να χρησιμοποιηθούν όπως η κωδικοποίηση εντροπίας, πηγής και υβριδικής. Η μέθοδος base64 διαχειρίζεται την πληροφορία με τη μορφή bits και αναπαριστά τα δυαδικά δεδομένα σε μορφή ASCII. Χρησιμοποιείται συνήθως όταν απαιτείται η κωδικοποίηση δυαδικών δεδομένων τα οποία πρέπει να αποθηκευθούν και να αποσταλούν με μέσα μετάδοσης που διαχειρίζονται δεδομένα κειμένου. Η διαδικασία που ακολουθείται περιλαμβάνει το διαχωρισμό των δεδομένων σε bytes (ομαδοποιημένα ανά τρία) τα οποία στη συνέχεια ομαδοποιούνται σε τέσσερα πακέτα των 6 bits. Χρησιμοποιούνται λοιπόν 2 6 χαρακτήρες, δηλαδή 64 χαρακτήρες [30]. Εικόνα 7 Διαχείριση της πληροφορίας μέσω του αλγορίθμου base64 27
Οι χαρακτήρες που χρησιμοποιεί η base64 είναι τα κεφαλαία γράμματα Α Ζ (26 χαρακτήρες), τα μικρά γράμματα a z (26 χαρακτήρες), οι αριθμοί 0 9 (10 χαρακτήρες), το + (1 χαρακτήρας) και το / (1 χαρακτήρας) 3. Εικόνα 8 Πίνακας αναπαράστασης χαρακτήρων και αριθμών στη μέθοδο base64 Παρακάτω παρουσιάζεται το παράδειγμα κωδικοποίησης της έκφρασης Hello World. Καταρχήν πραγματοποιείται η αναπαράσταση των χαρακτήρων σε ASCII και δυαδική μορφή. Εικόνα 9 Κωδικοποίηση περιεχομένου με τη μέθοδο Base64 Η διαδικασία ακολουθεί τα παρακάτω βήματα: 1. Μετατροπή των χαρακτήρων σε δυαδική μορφή. 2. Ένα μέρος της έκφρασης το Hel αναπαρίσταται ως 01001000 01100101 01101100 σε δυαδική μορφή (24 bits). 3. Τα τρία πακέτα των 8 bits (από τα συνολικά 24 bits) μετατρέπονται σε τέσσερα πακέτα των 6 bits. Έτσι δημιουργούντα τα εξής πακέτα: 010010 000110 010101 101100. 3 Οι 256 χαρακτήρες (28) του ASCII αναπαριστάνονται με τους αριθμούς από το 0 έως το 255. Κάθε χαρακτήρας απαιτεί 8 bit, δηλαδή ένα byte, για την αναπαράστασή του. Δηλαδή κάθε χαρακτήρας είναι και ένας αριθμός ανάμεσα στο 0 και το 255. 28
4. Μετατροπή των πακέτων 6 bits από δυαδική σε δεκαδική μορφή: 010010 = 18, 000110 = 6, 010101 = 21, 101100 = 44. 5. Από τον πίνακα τιμών της base64 παράγονται οι χαρακτήρες: 18 = S, 6 = G, 21 = V, 44 = s. 6. Τελικά οι τρεις πρώτοι ASCII χαρακτήρες ( Hel ) μετατρέπονται στους χαρακτήρες SGVs. Ακολουθώντας την παραπάνω λογική γίνεται κωδικοποίηση των 9 ASCII χαρακτήρων ως εξής: Hel = SGVs, lo[κενό] = bg8g, Wor = V29y, ld! = bgqh. Τελικά η έκφραση Hello World! κωδικοποιείται με base64 σε SGVsbG8gV29ybGQh. Στο προηγούμενο παράδειγμα η έκφραση είχε 12 χαρακτήρες. Το αποτέλεσμα της διαίρεσης του μήκους της έκφρασης με το 3 (η base64 επεξεργάζεται 3 bytes τη φορά), είναι 4. Στην περίπτωση που ο αριθμός των bytes που αποτελούν το μήνυμα προς κωδικοποίηση δεν είναι ακέραιο πολλαπλάσιο του 3 η μέθοδος base64 προσθέτει τον χαρακτήρα = στην εξάδα των bits που δεν υπάρχει ενώ εάν υπάρχει πακέτο που έχει λιγότερα από 6 bits συμπληρώνεται με μηδενικά. Στην περίπτωση του Hello προκύπτουν οι χαρακτήρες SGVs από το Hel (προηγούμενο παράδειγμα) και από το lo προκύπτουν τα εξής: 011011 = 27 = b, 000110 = 6 = g, 1111xx = ;, xxxxxx = ; Το τρίτο πακέτο θα συμπληρωθεί με 0, δηλαδή 111100 = 60 = 8 και το τελευταίο πακέτο που δεν υπάρχει θα αναπαρασταθεί με =. Άρα η έκφραση Hello κωδικοποιείται σε Hel = SGVs και lo = bg8= και συνολικά προκύπτει το SGVsbg8=. 2.7 Κρυπτογράφηση πληροφορίας με τον αλγόριθμο MD5 Στην εργασία πριν γίνει η κωδικοποίηση του μηνύματος πραγματοποιείται κρυπτογράφηση του κλειδοού με την χρήση του αλγορίθμου MD5 [31]. Ο αλγόριθμος αυτός παρέχει ένα είδος αποτυπώματος ή μια περίληψη του κλειδιού όσο μέγεθος και αν έχει αυτό ενώ η πιθανότητα να υπάρχουν δύο κλειδιά τα οποία θα έχουν την ίδια σύνοψη είναι πολύ μικρή. Ο αλγόριθμος δέχεται ως είσοδο ένα κλειδί μήκους έστω b ενώ μπορεί να αναπαρασταθεί ως μια ακολουθία από bits: m_0 m_1... m_{b-1}. Υλοποιείται σε 4 βήματα. Βήμα 1. Προσάρτηση επιπρόσθετων bits στη λέξη εφόσον αυτό απαιτείται Το κλειδί εμπλουτίζεται με κάποιο αριθμό bits ώστε το μήκος του να συγκλίνει στο 448 ως υπόλοιπο της διαίρεσης με το 512. Ουσιαστικά, το μήκος του κλειδιού επεκτείνεται προκειμένου 29
να είναι 64 bits μικρότερο από ένα πολλαπλάσιο του 512. Η διαδικασία εκτελείται ακόμη και αν το υπόλοιπο της διαίρεσης του μήκους του κλειδιού με το 512 ήδη συγκλίνει στο 448. Για να γίνει το «γέμισμα» με τα bits προστίθεται ένα 1 στο τέλος του κλειδιού και μιας ακολουθίας μηδενικών έτσι ώστε το μήκος του κλειδιού να ικανοποιεί την παραπάνω συνθήκη. Βήμα 2. Προσάρτηση μήκους κλειδιού Το μήκος του αρχικού κλειδιού (πριν γίνει η προσάρτηση των επιπρόσθετων bits του προηγούμενου βήματος) προσαρτάται στο κλειδί που προέκυψε μετά το βήμα 1 (προστίθενται 64 bits στο τέλος του κλειδιού) έτσι ώστε το μήκος του νέου κλειδιού να είναι πολλαπλάσιο του 512 άρα και του 16. Εάν το μήκος του αρχικού κλειδιού είναι μεγαλύτερο από 2 64 χρησιμοποιούνται μόνο τα 64 λιγότερο σημαντικά bit. Οι λέξεις του κλειδιού που προκύπτει είναι M[0... N-1] όπου το Ν είναι πολλαπλάσιο του 16. Βήμα 3. Αρχικοποίηση του πίνακα MD Η σύνοψη (digest) του κλειδιού υπολογίζεται με τη χρήση ενός πίνακα τεσσάρων λέξεων κάθε μια από τις οποίες είναι ένας καταχωρητής 32-bit. Οι τιμές αρχικοποίησης των τεσσάρων λέξεων σε δεκαεξαδική κωδικοποίηση είναι οι ακόλουθες: λέξη A: 01 23 45 67 λέξη B: 89 ab cd ef λέξη C: fe dc ba 98 λέξη D: 76 54 32 10 Βήμα 4. Διαχείριση κλειδιού σε μπλοκ των 512 bit Η επεξεργασία των μπλοκ κλειδιών πραγματοποιείται σε 4 στάδια κάθε ένα από τα οποία περιλαμβάνει 62 εργασίες βασιζόμενες σε μια μη γραμμική συνάρτηση F, αρθρωτή προσθήκη και αριστερή περιστροφή των bits. Για να ολοκληρωθεί η παραπάνω διαδικασία ορίζονται 4 βοηθητικές συναρτήσεις κάθε μια από τις οποίες δέχεται 3 λέξεις των 32-bit και παράγουν μια λέξη ως αποτέλεσμα. F(X,Y,Z) = XY v not(x) Z G(X,Y,Z) = XZ v Y not(z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(z)) 30
Οι εργασίες που εκτελούνται από τις παραπάνω συναρτήσεις σε λεπτομέρεια αποτυπώνονται στην ακόλουθη δημοσίευση [32]. Το κλειδί που προκύπτει από την ολοκλήρωση των υπολογισμών παράγεται ως μια ακολουθία 4 bytes δεδομένων. 31
3 Σχεδίαση και Υλοποίηση συστήματος 3.1 Εισαγωγή Στο προηγούμενο κεφάλαιο παρουσιάστηκε η έννοια της στεγανογραφίας. Έγινε αναφορά σε όλα τα στάδια που ακολουθούνται κατά την εφαρμογή της (κωδικοποίηση, κρυπτογράφηση) ενώ αναλύθηκαν οι δημοφιλέστερες τεχνικές στεγανογραφίας σε εικόνα και παρουσιάστηκαν τα εργαλεία και οι εφαρμογές της. Στο παρόν κεφάλαιο περιγράφονται τα βασικά στοιχεία που συνθέτουν το σύστημα στεγανογραφίας ψηφιακών εικόνων. Τα θέματα που περιγράφονται αφορούν τις τεχνολογίες που χρησιμοποιήθηκαν, δύο από τις μεθόδους που επιλέχθηκαν προς υλοποίηση ενώ γίνεται παρουσίαση και των διεπαφών αλληλεπίδρασης του χρήστη με το σύστημα. 3.2 Τεχνολογίες & περιορισμοί υλοποίησης Το σύστημα στεγανογραφίας ψηφιακών εικόνων υλοποιήθηκε σε διαδικτυακό περιβάλλον με τεχνολογίες PHP και Apache. Ως εκ τούτου κληρονόμησε όλους τους περιορισμούς που εισάγουν οι παραπάνω τεχνολογίες. Το διαδικτυακό περιβάλλον επιλέχθηκε γιατί μια διαδικτυακή εφαρμογή είναι εύκολα προσβάσιμη από απομακρυσμένους χρήστες. Δεν απαιτείται η εγκατάσταση κάποιου λογισμικού τοπικά αλλά ούτε Η/Υ ιδιαίτερων απαιτήσεων επειδή ο αλγόριθμος εκτελείται στον server. Η εφαρμογή φιλοξενείται προσωρινά στην ακόλουθη διεύθυνση: http://korwnaios.gr/swtiris/neo/. 3.2.1 PHP Η PHP είναι μία γλώσσα προγραμματισμού η οποία σχεδιάστηκε για τη δημιουργία δυναμικών σελίδων στο διαδίκτυο και είναι γνωστή ως HyperText preprocessor. Είναι μία server side (εκτελείται στον διακομιστή) scripting γλώσσα και γράφεται συνήθως πλαισιωμένη από κώδικα HTML, για μορφοποίηση των αποτελεσμάτων. Αντίθετα από μία συνηθισμένη HTML σελίδα η σελίδα PHP δεν στέλνεται άμεσα σε έναν πελάτη (client), αντ αυτού πρώτα αναλύεται και μετά αποστέλλεται το παραγόμενο αποτέλεσμα. Τα στοιχεία HTML στον πηγαίο κώδικα μένουν ως έχουν αλλά ο PHP κώδικας ερμηνεύεται και εκτελείται. Ο κώδικας PHP μπορεί να θέσει ερωτήματα σε βάσεις δεδομένων, να δημιουργήσει εικόνες, να διαβάσει και να γράψει αρχεία, να συνδεθεί με απομακρυσμένους υπολογιστές κ.τ.λ. 32
3.2.2 Apache Ο Apache Web Server είναι αυτό ακριβώς που δηλώνει το όνομά του. Πρόκειται δηλαδή για έναν εξυπηρετητή (server) του παγκόσμιου Ιστού (Web). Ο Apache εγκαθίσταται σε έναν υπολογιστή ανεξάρτητα με το λειτουργικό σύστημα που χρησιμοποιείται. Ο ρόλος του είναι η διαχείριση αιτημάτων από διάφορα προγράμματα χρήστες (clients) όπως είναι ο φυλλομετρητής (browser) ενός χρήστη και η εξυπηρέτηση αυτών παραθέτοντας τις σελίδες που ζητούν είτε απευθείας μέσω μιας ηλεκτρονικής διεύθυνσης (URL), είτε μέσω ενός συνδέσμου (link). Ο τρόπος με τον οποίο ο Apache εξυπηρετεί αυτές τις αιτήσεις, είναι σύμφωνος με τα πρότυπα που ορίζει το πρωτόκολλο HTTP (Hypertext Transfer Protocol). 3.2.3 Περιορισμοί υλοποίησης Η PHP όπως αναφέρθηκε παραπάνω είναι μια γλώσσα προγραμματισμού που χρησιμοποιείται για την ανάπτυξη διαδικτυακών εφαρμογών και εφαρμόζεται κυρίως στο επίπεδο της παρουσίασης του περιεχομένου. Εστιάζει δε, στη δημιουργία ενός επιπέδου αλληλεπίδρασης με διάφορες βάσεις δεδομένων για την παραγωγή δυναμικού περιεχομένου στο διαδίκτυο. Το γεγονός αυτό επηρεάζει την ταχύτητα της γλώσσας και η απόδοσή της δεν πλησιάζει κάποια από τις γνωστές γλώσσες προγραμματισμού (C ή C++). Επιπρόσθετα αν και διαθέτει μια πληθώρα συναρτήσεων για διάφορα πεδία εφαρμογής δεν έχει ανεπτυγμένες και εξειδικευμένες βιβλιοθήκες επεξεργασίας εικόνων σε αντίθεση με το προγραμματιστικό περιβάλλον matlab που διαθέτει έναν μεγάλο αριθμό συναρτήσεων για αριθμητικούς υπολογισμούς ειδικά στο πεδίο της γραµµικής άλγεβρας (πίνακες). Ως εκ τούτου ενώ το matlab μπορεί να χρησιμοποιηθεί στη στεγανογραφία και στην επεξεργασία εικόνας παρέχοντας μια σειρά έτοιμων συναρτήσεων και ευκολιών, στην PHP ο χρήστης θα πρέπει πολλές από τις συναρτήσεις να τις κατασκευάσει από την αρχή. Στο σύστημα που αναπτύχθηκε εφαρμόζονται κάποιοι ακόμη περιορισμοί που προκύπτουν από τις παραμέτρους εγκατάστασης του web server αλλά και του εξυπηρετητή όπου φιλοξενείται η εφαρμογή. Αφορούν τα παρακάτω θέματα: Μέγεθος εικόνας: Το σύστημα μπορεί να διαχειριστεί εικόνες ανεξαρτήτου μεγέθους δεδομένου ότι θα δοθεί επαρκής χρόνος για τη διενέργεια όλων των υπολογισμών που απαιτούνται. Ωστόσο για λόγους ασφάλειας κάθε web server ορίζει ένα μέγιστο μέγεθος αρχείων που μπορεί να διαχειριστεί. Το μέγεθος αυτό συνδέεται άμεσα με την ώρα που είναι δυνατό να παραμένει ανοιχτή η σύνδεση του χρήστη με το σύστημα. Χρόνος εκτέλεσης του κώδικα: Ο web server θέτει έναν ακόμη περιορισμό που αφορά το χρονικό όριο εκτέλεσης του κώδικα. Βρίσκεται σε άμεση συνάρτηση με την παραπάνω 33
παράμετρο. Για παράδειγμα εάν ο χρήστης ανεβάσει μια μεγάλη εικόνα το μέγεθος της οποίας ανήκει εντός των επιτρεπόμενων ορίων αλλά απαιτούνται υπολογισμοί οι οποίοι δεν μπορούν να ολοκληρωθούν εντός συγκεκριμένου χρόνου τότε ο κώδικας σταματάει την εκτέλεσή του. Όριο μνήμης: Η PHP διαθέτει μια παράμετρο η οποία ορίζει το μέγιστο όριο της μνήμης που μπορεί να καταναλώνεται από κάθε εφαρμογή που τρέχει σε μια δεδομένη χρονική στιγμή. Με τον τρόπο αυτό εμποδίζονται κάποιες εφαρμογές να εκμεταλλεύονται το σύνολο της μνήμης και γίνεται καλύτερη διαχείριση των διαθέσιμων πόρων του συστήματος. 3.3 Αλγόριθμοι που υλοποιήθηκαν Στο σύστημα υλοποιούνται δύο αλγόριθμοι στεγανογράφησης εικόνας o Least Significant Bit (LSB) και ο Local Binary Pattern (LBP). 3.3.1 Least Significant Bit (LSB) 3.3.1.1 Περιγραφή Ο αλγόριθμος LSB (όπως περιγράφηκε στο προηγούμενο κεφάλαιο) βασίζεται στην ιδέα ότι αλλαγές στα λιγότερο σημαντικά ψηφία των pixels μιας εικόνας προκαλούν ανεπαίσθητες αλλαγές στη μορφή της οι οποίες δεν γίνονται αντιληπτές από το ανθρώπινο μάτι. Η αναπαράσταση μιας εικόνας γίνεται με έναν πίνακα ΜxΝ όπου Μ και Ν οι διαστάσεις της. Ουσιαστικά, κάθε εικόνα μπορεί να θεωρηθεί ως ένας πίνακας από pixels τα οποία παίρνουν τιμές από 0-255 και αναπαριστούν τη χρωματική διαβάθμιση καθενός (π.χ. 155). Τα pixels μιας RGB εικόνας αποτελούνται από τρεις συντελεστές χρωματικές συνιστώσες (red, green, blue). Κάθε μια από αυτές τις συνιστώσες αναπαρίσταται ως μια ακολουθία των 8 bits. Στις περισσότερες περιπτώσεις τα λιγότερο σημαντικά ψηφία αυτής της ακολουθίας συνιστούν θόρυβο άρα μη χρήσιμη πληροφορία. Στον αλγόριθμο αυτό γίνεται η παραδοχή ότι η αντικατάσταση αυτών των ψηφίων κάθε pixel με ένα bit μηνύματος επιτυγχάνει απόκρυψη πληροφορίας μέσα στην εικόνα χωρίς αυτή η αλλαγή να γίνει αντιληπτή. Η ιδέα αυτή υλοποιείται και στο συγκεκριμένο σύστημα. Σε πρώτη φάση η πληροφορία προς απόκρυψη κωδικοποιείται με βάση κάποιο κλειδί δημιουργώντας έτσι ένα bitstream κωδικοποιημένης πληροφορίας. Στη συνέχεια τα τρία πρώτα bit από το bitstream του μηνύματος αποκρύπτονται στις τρεις αντίστοιχες συνιστώσες του πρώτου pixel της εικόνας, ένα bit σε κάθε συνιστώσα. Τα επόμενα 3 bit αποκρύπτονται στο επόμενο pixel και η διαδικασία επαναλαμβάνεται 34
μέχρι να ολοκληρωθεί η απόκρυψη του συνόλου του μηνύματος. Στην ακόλουθη εικόνα παρουσιάζεται σχηματικά η διαδικασία αυτή [33]. Εικόνα 10: Απεικόνιση απόκρυψης πληροφορίας με τη μέθοδο LSB 3.3.1.2 Υλοποίηση αλγορίθμου LSB στο σύστημα Στην παρακάτω ενότητα παρουσιάζεται αναλυτικά η διαδικασία υλοποίησης του αλγορίθμου αυτού στο παρόν σύστημα. Τα βήματα που ακολουθούνται για την υλοποίηση του αλγορίθμου LSB είναι τα παρακάτω: Διάβασμα όλων των δεδομένων εισόδου του συστήματος ήτοι: εικόνα προς στεγανογράφηση, πληροφορία προς απόκρυψη και κλειδί βάσει του οποίου γίνεται η κωδικοποίηση της πληροφορίας Κωδικοποιήση της πληροφορίας προς στεγανογράφηση με βάση το κλειδί που εισήγαγε ο χρήστης του συστήματος Έλεγχος της τάξης μεγέθους του μηνύματος σε σχέση με τη χωρητικότητα της εικόνας. Υλοποίηση του αλγορίθμου LSB Εξαγωγή της στεγανογραφημένης εικόνας Βήμα 1: Ο χρήστης εισάγει τις απαραίτητες πληροφορίες για να «τρέξει» ο αλγόριθμος LSB. Τα δεδομένα που καλείται να εισάγει περιλαμβάνουν την εικόνα προς στεγανογράφηση, την πληροφορία που επιθυμεί να αποκρύψει στην παραπάνω εικόνα καθώς και το κλειδί με βάση το οποίο θα γίνει η κωδικοποίηση. Η εικόνα μπορεί να εισαχθεί είτε από αρχείο που διαθέτει ο χρήστης στον υπολογιστή του είτε από κάποια διεύθυνση στο διαδίκτυο. Ο αλγόριθμος παρέχει δυνατότητα διαχείρισης εικόνων ανεξαρτήτου μεγέθους λαμβάνοντας υπόψη τυχόν περιορισμούς που προκύπτουν από τις τεχνολογίες υλοποίησης (όπως αναφέρθηκαν στην προηγούμενη ενότητα του παρόντος 35
κεφαλαίου). Το κλειδί που χρησιμοποιείται για την κωδικοποίηση της πληροφορίας έχει τη μορφή αλφαριθμητικού. Τέλος, εισάγεται η πληροφορία προς απόκρυψη η οποία μπορεί να έχει τη μορφή κειμένου ή εικόνας. Βήμα 2: Στο στάδιο αυτό υλοποιείται η κωδικοποίηση της πληροφορίας με βάση το κλειδί που έχει εισάγει ο χρήστης. Συγκεκριμένα αφού εισαχθούν τα κλειδιά (ένα «ιδιωτικό» (private) που εισάγει ο χρήστης και ένα δημόσιο που χρησιμοποιείται στον κώδικα) κρυπτογραφούνται μέσω του αλγορίθμου md5 και στην συνέχεια κωδικοποιείται το μήνυμα με βάσει τα κρυπτογραφημένα κλειδιά. Βήμα 3: Στο σημείο αυτό υπολογίζεται η χωρητικότητα της εικόνας και συγκρίνεται με το μέγεθος της πληροφορίας προς απόκρυψη(σε bits). Ο υπολογισμός της χωρητικότητας της εικόνας (σε bits) γίνεται με βάση τον αριθμό των pixels της εικόνας πολλαπλασιασμένο με 3 (τρία χρώματα R: red, G: green, B: blue). Η σχέχη με την βάση την οποία υπολογίζεται η χωρητικότητα είναι η εξης: C M N 3 (3) Όπου με C συμβολίζεται η χωρητικότητα και με Μ, Ν οι διαστάσεις της εικόνας. Βήμα 4: Στο τέταρτο βήμα υλοποιείται ο αλγόριθμος LSB. Ο αλγόριθμος διατρέχει την εικόνα εξετάζοντας ένα ένα τα pixel και τερματίζει όταν έχει ολοκληρώσει την απόκρυψη όλης της πληροφορίας. Συγκεκριμένα, η διαδικασία αρχίζει αποσυνθέτοντας το πρώτο pixel στις 3 χρωματικές συνιστώσες (R, G, B) του. Το τελευταίο bit κάθε χρωματικής συνιστώσας του πρώτου pixel αντικαθίσταται με ένα bit πληροφορίας. Στη συνέχεια επανασυνθέτει τις τρεις συνιστώσες του pixel και αποθηκεύει το pixel στην ίδια θέση. Η διαδικασία συνεχίζεται διατρέχοντας το επόμενο pixel με ανάλογο τρόπο. Κάθε pixel της εικόνας αποκρύπτει 3 bits πληροφορίας. Βήμα 5: Εφόσον ολοκληρωθεί η διαδικασία απόκρυψης της πληροφορίας με επιτυχία επιστρέφεται στο χρήστη η στεγανογραφημένη εικόνα την οποία μπορεί να ανοίξει ή να αποθηκεύσει στον υπολογιστή του. 3.3.1.3 Ανάκτηση πληροφορίας με τον αλγόριθμο LSB Ο χρήστης μπορεί να ανακτήσει την πληροφορία που στεγανογράφησε εκτελώντας την αντίστροφη διαδικασία με τη χρήση του αλγορίθμου LSB. Τα βήματα που εκτελούνται κατά τη διαδικασία ανάκτησης είναι τα ακόλουθα: Διάβασμα της στεγανογραφημένης εικόνας καθώς και του κλειδιού με βάση το οποίο έγινε η κωδικοποίηση της πληροφορίας Υλοποίηση της διαδικασίας ανάκτησης της πληροφορίας με τον αλγόριθμο LSB 36
Αποκωδικοποίηση της πληροφορίας με βάση το κλειδί Εξαγωγή του στεγανογραφημένου μηνύματος Βήμα 1: Ο χρήστης εισάγει μέσω ειδικής διεπαφής τη στεγανογραφημένη εικόνα καθώς και το κλειδί με το οποίο έγινε η κωδικοποίηση. Οι τρόποι παροχής των πληροφοριών αυτών γίνονται με αντίστοιχο τρόπο όπως περιγράφηκε παραπάνω. Στην περίπτωση λανθασμένου κλειδιού η ανάκτηση της πληροφορίας δεν είναι δυνατή. Βήμα 2: Στο στάδιο αυτό γίνεται η σάρωση της εικόνας ένα ένα τα pixel αναλύοντάς τη στις τρεις χρωματικές συνιστώσες. Από κάθε συνιστώσα χρησιμοποιείται το λιγότερο σημαντικό bit το οποίο αποτελεί και την κρυμμένη πληροφορία. Η διαδικασία συνεχίζεται μέχρι να ανακτηθεί όλο το μήνυμα. Βήμα 3: Στο βήμα αυτό εφόσον ο χρήστης έχει δώσει το σωστό κλειδί γίνεται αποκωδικοποίηση της πληροφορίας με αντίστροφο τρόπο από αυτόν που περιγράφηκε παραπάνω. Βήμα 4: Το μήνυμα είναι έτοιμο προς διαχείριση από το χρήστη. Μπορεί να έχει τη μορφή κειμένου ή εικόνας ανάλογα με τον τύπο της πληροφορίας που στεγανογραφήθηκε. 3.3.2 Local Binary Pattern (LBP) 3.3.2.1 Περιγραφή Ο δεύτερος αλγόριθμος που υλοποιείται είναι ο LBP. Σε αντίθεση με τον αλγόριθμο LSB ο αλγόριθμος LBP επεξεργάζεται την εικόνα με τη μορφή blocks 3x3. Στην πρώτη φάση η εικόνα διαιρείται σε 3x3 blocks. Κάθε 3x3 block αντιστοιχεί σε μία γειτονιά α(i,j) η οποία έχει τιμές εύρους 0 α(i,j) 255 όπου i,j = 0,1,2,3. Κάθε γειτονιά κατωφλιοποιείται στην τιμή του κεντρικού pixel. Τα pixels τα οποία έχουν τιμή μεγαλύτερη ή ίση με το κεντρικό pixel μετατρέπονται σε 1, ενώ τα υπόλοιπα σε 0 δημιουργώντας έτσι ένα νέο 3x3 block το w. Στη συνέχεια το w πολλαπλασιάζεται με τα διωνυμικά βάρη που αντιστοιχούν σε κάθε τιμή του ενώ οι τιμές που προκύπτουν (από τα 8 pixels) προστίθενται κατασκευάζοντας έτσι τον LBP αριθμό, ο οποίος αποτελεί το ιδιαίτερο χαρακτηριστικό αυτής της γειτονιάς [34]. 37
Binomial weights 1 2 4 8 6 16 32 64 128 Original Image 6 5 2 7 6 2 9 3 7 1 0 0 1 6 0 1 0 1 a i w i 1 0 0 8 6 0 32 0 128 LBP = 1+8+32+128=169 Εικόνα 11 Υπολογισμός του LBP Η βασική ιδέα είναι η επίτευξη απόκρυψης 8 bits μηνύματος σε κάθε γειτονιά. Για κάθε γειτονιά 3x3 υπολογίζεται ο LBP αριθμός όπως περιγράφηκε παραπάνω. Οι τιμές των pixels σε κάθε γειτονιά μεταβάλλονται σε τέτοιο ποσοστό ώστε οι τιμές που παράγονται μετά την απόκρυψη της πληροφορίας να είναι κοντά στις αρχικές τους τιμές. Αρχικά οι γειτονιές κατηγοριοποιούνται σε αυτές που μπορούν να χρησιμοποιηθούν για απόκρυψη πληροφορίας (Ε) και σε αυτές που δεν μπορούν (U). Η διάκριση γίνεται με βάση το αν οι γειτονιές παρουσιάζουν ακμές, αν περιέχουν υψηλές συχνότητες κτλ., αφού οποιαδήποτε αλλαγή σε αυτές τις γειτονιές μπορεί να γίνει εύκολα αντιληπτή. Για να εξασφαλιστεί ότι αποφεύγεται η χρήση αυτών των γειτονιών γίνεται ανίχνευση ακμών προκειμένου να γίνει κατάταξη της κάθε γειτονιάς σε μία από τις κατηγορίες: E ή U. Για κάθε α(i,j) γειτονιά δημιουργείται ο δυαδικός πίνακας ακμών h(i,j), όπου τίθενται 1 για τα pixels στα οποία υπάρχει ακμή και 0 για τα υπόλοιπα. Η ανίχνευση ακμών εφαρμόζεται πριν και μετά την απόκρυψη της πληροφορίας. Η διαδικασία αυτή πραγματοποιείται αφού μετά την απόκρυψη του μηνύματος σε κάποια γειτονιά μπορεί να εμφανιστούν ακμές οι οποίες δεν υπήρχαν κατηγοριοποιώντας έτσι την γειτονιά σε U από Ε. Εάν μια γειτονιά μετά την απόκρυψη του μηνύματος χαρακτηριστεί U από Ε τότε το μήνυμα κρύβεται ξανά στην αμέσως επόμενη διαθέσιμη γειτονιά. Οι αλλαγές που συντελέστηκαν στη γειτονιά η οποία πριν την απόκρυψη είχε χαρακτηριστεί Ε ενώ μετά την απόκρυψη U διατηρούνται. Ωστόσο η γειτονιά αυτή θα εξαιρεθεί από τη διαδικασία ανάκτησης της πληροφορίας και το μήνυμα θα ανακτηθεί από την επόμενη Ε γειτονιά [10]. 3.3.2.2 Στεγανογράφηση με τον αλγόριθμο LBP Ο αλγόριθμος LBP υλοποιείται στο σύστημα ακολουθώντας τα παρακάτω βήματα: 38
Διάβασμα της εικόνας προς στεγανογράφηση, της πληροφορίας προς απόκρυψη και του κλειδιού με βάση το οποίο γίνεται η κωδικοποίηση της πληροφορίας Κωδικοποίηση της πληροφορίας προς στεγανογράφηση με βάση το κλειδί που εισήγαγε ο χρήστης του συστήματος Έλεγχος της τάξης μεγέθους του μηνύματος σε σχέση με τη χωρητικότητα της εικόνας Υλοποίηση του αλγορίθμου LBP Εξαγωγή της στεγανογραφημένης εικόνας Βήματα 1, 2: Τα βήματα αυτά είναι όμοια με τα δύο πρώτα στάδια της διαδικασίας που περιγράφηκε για τον αλγόριθμο LSB. Στο στάδιο αυτό ο χρήστης παρέχει την εικόνα προς στεγανογράφηση, την πληροφορία προς απόκρυψη καθώς και το κλειδί για την κωδικοποίηση της πληροφορίας. Στο επόμενο βήμα κωδικοποιεί την πληροφορία με βάση το κλειδί που δόθηκε από το χρήστη καθώς και ένα δημόσιο κλειδί. Βήμα 3: Στο βήμα 3 ελέγχεται εάν υπάρχει δυνατότητα απόκρυψης του μηνύματος μέσα στην εικόνα που δόθηκε από το χρήστη. Για το λόγο αυτό γίνεται σύγκριση του μεγέθους του μηνύματος με το μέγιστο όγκο πληροφορίας που μπορεί να αποθηκευτεί στη συγκεκριμένη εικόνα. Αν ικανοποιείται η συνθήκη η διαδικασία συνεχίζεται. Αναλυτικά: Υπολογίζονται οι διαστάσεις της εικόνας, M και N. Εάν οι τιμές των διαστάσεων δεν είναι ακέραια πολλαπλάσια του 3 γίνεται τροποποίησή τους προκειμένου να ικανοποιούν την συνθήκη αυτή. Η αλλαγή στις διαστάσεις επιτρέπει τη διαχείριση της εικόνας σε 3x3 blocks. Κάθε 3x3 block έχει τη δυνατότητα αποθήκευσης 8 bits πληροφορίας. Ο αριθμός των blocks που αποτελούν την εικόνα πολλαπλασιασμένος επί 8 (8 bits ανά block) δίνει το μέγιστο αριθμό από bits πληροφορίας που μπορούν να αποθηκευθούν σ αυτή. Η χωρητικότητα υπολογίζεται από την σχέση: C M /3 N 3 8 (4) Βήμα 4: Στο βήμα αυτό υλοποιείται ο αλγόριθμος LBP. Η εικόνα αναλύεται στις 3 χρωματικές συνιστώσες: R, G, B. Για κάθε μία από τις συνιστώσες αυτές δημιουργείται ένας ξεχωριστός πίνακας. Η αποθήκευση της πληροφορίας γίνεται στον πίνακα της μιας χρωματικής συνιστώσας, στη B (Blue). Η επιλογή αυτή έγινε με δεδομένο ότι το ανθρώπινο μάτι έχει λιγότερη ευαισθησία σε αλλαγές που πραγματοποιούνται στο συγκεκριμένο χρώμα. Η διαδικασία έχει ως εξής: Τα blocks της συγκεκριμένης συνιστώσας διατρέχονται ένα ένα. Ο πρώτος έλεγχος που πραγματοποιείται είναι η ύπαρξη ακμής στο μπλοκ. Ο έλεγχος ύπαρξης ακμών πραγματοποιείται καθώς η απόκρυψη πληροφορίας σε μπλοκ με ακμές μπορεί να επιφέρει 39
αλλαγές οι οποίες είναι αντιληπτές στο ανθρώπινο μάτι. Εάν υπάρχει ακμή, το μπλοκ παραλείπεται και η διαδικασία συνεχίζει στο επόμενο. Εάν δεν υπάρχει ακμή, αποκρύπτονται 8 bits πληροφορίας στο συγκεκριμένο block. Μετά την απόκρυψη της πληροφορίας γίνεται επανέλεγχος, προκειμένου να διαπιστωθεί εάν δημιουργήθηκε ακμή στο μπλοκ που χρησιμοποιήθηκε. Εάν όντως δημιουργήθηκε ακμή η ίδια πληροφορία αποκρύπτεται ξανά στο επόμενο διαθέσιμο μπλοκ αλλιώς ο αλγόριθμος συνεχίζει και αποθηκεύει τα επόμενα 8 bits της πληροφορίας. Με τον τρόπο αυτό αποφεύγεται η πιθανότητα απώλειας πληροφορίας κατά την ανάκτηση αφού κατά τη διαδικασία αυτή τα μπλοκ με ακμές αγνοούνται. Οι δύο παραπάνω διαδικασίες επαναλαμβάνονται έως ότου ολοκληρωθεί η εισαγωγή του μηνύματος και μετά ο αλγόριθμος σταματάει να εκτελείται. Με τον τρόπο αυτό τυχόν αλλοιώσεις περιορίζονται μόνο στο κομμάτι της εικόνας που χρησιμοποιήθηκε για την απόκρυψη. Κατά τη διάρκεια της απόκρυψης του μηνύματος στο block ο πίνακας w (η διαδικασία υπολογισμού του πίνακα αυτού περιγράφηκε παραπάνω) αλλάζει. Μετά από κάθε νέο υπολογισμό του w πραγματοποιείται έλεγχος της ακραίας περίπτωσης στην οποία η τιμή του κεντρικού pixel (κατώφλι) είναι 0 ώστε να αποφεύγεται υποχείληση. Τα bit μηνύματος με τιμή 0 αποθηκεύονται στα pixels με τιμή που ισούται με τη διαφορά του κατωφλίου μείον 1. Αυτό σημαίνει ότι όταν το κατώφλι έχει τιμή μηδέν, τα pixels στα οποία θα αποθηκευτούν τα bits του μηνύματος με τιμή 0 θα αποκτήσουν τιμή -1 η οποία βρίσκεται εκτός του αποδεκτού εύρους τιμών 0-255. Αντίστοιχος έλεγχος γίνεται και για την αποφυγή υπερχείλησης. Τα bits μηνύματος με τιμή 1 αποθηκεύονται στα pixels με την τιμή του κατωφίου συν 1. Κατά συνέπεια όταν το κατώφλι έχει τιμή 255 θα υπάρξει υπερχείληση. Εφόσον ολοκληρωθεί η διαδικασία απόκρυψης της πληροφορίας (στην μπλε συνιστώσα) γίνεται αποθήκευση του μήκους του μηνύματος στην κόκκινη συνιστώσα (αριθμός bits που αποτελούν το μήνυμα). Η αποθήκευση του μήκους του μηνύματος λαμβάνει χώρα σε ένα 4x4 block προκειμένου να εξασφαλισθεί η δυνατότητα απόκρυψης όσο το δυνατόν μεγαλύτερου μηνύματος (της τάξης κάποιων εκατομμυρίων bits). Επιπρόσθετα, η αποθήκευση του μήκους του μηνύματος στην κόκκινη συνιστώσα επιλέχθηκε καθώς σε όλη τη διαδικασία συμμετέχει μόνο η μπλε συνιστώσα ενώ παράλληλα γίνεται όσο το δυνατόν καλύτερη αξιοποίηση όλων των διαθέσιμων blocks της. Βήμα 5: Η διαδικασία ολοκληρώνεται με την επιστροφή της στεγανογραφημένης εικόνας στο χρήστη. Οι δυνατότητες που παρέχονται είναι όμοιες με το αντίστοιχο βήμα του αλγορίθμου LSB. 40
3.3.2.3 Ανάκτηση πληροφορίας με τον αλγόριθμο LBP Το σύστημα παρέχει τη δυνατότητα ανάκτησης της πληροφορίας που στεγανογραφήθηκε και με τη χρήση του αλγορίθμου LBP. Κατά την διαδικασία αυτή υλοποιείται η αντίστροφη διαδικασία από αυτή που περιγράφηκε παραπάνω. Συγκεκριμένα τα βήματα που ακολουθούνται είναι τα εξής: Διάβασμα της εικόνας που προέκυψε από τη διαδικασία της στεγανογράφησης καθώς και του κλειδιού με βάση το οποίο έγινε η κωδικοποίηση της πληροφορίας Υλοποίηση της διαδικασίας ανάκτησης της πληροφορίας με τον αλγόριθμο LBP Αποκωδικοποίηση της πληροφορίας με βάση το κλειδί Εξαγωγή του στεγανογραφημένου μηνύματος Βήμα 1: Ο χρήστης εισάγει μέσω ειδικής διεπαφής τη στεγανογραφημένη εικόνα καθώς και το κλειδί με το οποίο έγινε η κωδικοποίηση. Οι τρόποι παροχής των πληροφοριών αυτών γίνονται με αντίστοιχο τρόπο όπως περιγράφηκε παραπάνω. Στην περίπτωση λανθασμένου κλειδιού η ανάκτηση της πληροφορίας δεν είναι δυνατή. Βήμα 2: Στο στάδιο αυτό γίνεται ανάλυση της εικόνας στις τρεις χρωματικές συνιστώσες. Με αντίστοιχο τρόπο όπως περιγράφηκε παραπάνω προκύπτουν τρεις πίνακες, ένας για κάθε συνιστώσα. Στο σημείο αυτό διαβάζεται το μήκος του προς ανάκτηση μηνύματος το οποίο όπως περιγράφηκε παραπάνω είχε αποθηκευθεί στην κόκκινη συνιστώσα κατά τη διάρκεια της απόκρυψης. Στη συνέχεια σαρώνεται ο πίνακας της μπλε συνιστώσας και ελέγχεται η ύπαρξη ακμής σε κάθε μπλοκ. Εάν βρεθεί κάποια ακμή, το μπλοκ παραλείπεται και η διαδικασία συνεχίζει την εξέταση του επόμενου. Εάν δεν βρεθεί, γίνεται η ανάκτηση των 8 bits πληροφορίας από το μπλοκ. Η διαδικασία αυτή συνεχίζεται μέχρι να ανακτηθεί όλη η κρυμμένη πληροφορία. Βήμα 3: Η διαδικασία της αποκωδικοποίησης ακολουθεί τα αντίστροφα βήματα της διαδικασίας που περιγράφηκε κατά τη διαδικασία της κωδικοποίησης. Βήμα 4: Στο βήμα αυτό εάν έχει ολοκληρωθεί επιτυχώς η διαδικασία της αποκωδικοποίησης επιστρέφεται το μήνυμα στο χρήστη. Το μήνυμα μπορεί να είναι κείμενο ή εικόνα ανάλογα με τον τύπο της πληροφορίας που στεγανογραφήθηκε. 3.4 Λειτουργικότητες συστήματος Στην ενότητα αυτή περιγράφονται όλες οι επιφάνειες αλληλεπίδρασης του χρήστη με το σύστημα. Υποστηρίζονται δύο κατηγορίες ενεργειών: Στεγανογράφηση εικόνων και Ανάκτηση πληροφορίας των στεγανογραφημένων εικόνων με τη χρήση των δύο αλγορίθμων που 41
περιγράφηκαν παραπάνω. Τα δεδομένα που μπορεί να διαχειριστεί το σύστημα αφορούν εικόνες τύπου jpeg, png και gif. Στη συγκεκριμένη εργασία ο χρήστης εισάγοντας τα δεδομένα προς στεγανογράφηση υλοποιεί και διαδικασία κωδικοποίησης μέσω του αλγορίθμου base64 όπως περιγράφηκε παραπάνω. Εικόνα 12 Η αρχική σελίδα του συστήματος Στην πρώτη σελίδα γίνεται μια σύντομη περιγραφή των δύο μεθόδων που υλοποιούνται από το σύστημα. Ουσιαστικά περιγράφονται τα βασικά βήματα που ακολουθούνται κατά τη διαδικασία στεγανογράφησης για τους δύο αλγορίθμους. Η λειτουργικότητα που παρέχεται από το σύστημα αφορά τις εξής κατηγορίες: Στεγανογράφηση Ανάκτηση πληροφορίας από τη στεγανογραφημένη εικόνα 42
Στεγανογράφηση εικόνων Η διαδικασία της στεγανογράφησης μπορεί να γίνει είτε με τη μέθοδο LSB είτε με τη μέθοδο LBP. Εικόνα 13 Επιλογή μεθόδου στεγανογράφησης Αντίστοιχες επιλογές υπάρχουν και στην κατηγορία Ανάκτηση πληροφορίας όπου ο χρήστης μπορεί να ανακτήσει την κρυμμένη πληροφορία από τη στεγανογραφημένη εικόνα. Εδώ ισχύει ο ακόλουθος κανόνας: Ο χρήστης θα πρέπει να επιλέξει ως μέθοδο στεγανογράφησης και ανάκτησης της πληροφορίας την ίδια αλλιώς η ανάκτηση θα αποτύχει. Έτσι εάν για παράδειγμα επιλεγεί η μέθοδος LSB για τη στεγανογράφηση της εικόνας που ενδιαφέρει το χρήστη τότε και κατά την ανάκτηση της πληροφορίας θα πρέπει να επιλεγεί η μέθοδος LSB. Επιλογή μεθόδου στεγανογράφησης LSB Ο χρήστης επιλέγει τη μέθοδο LSB για τη στεγανογράφηση της εικόνας. Για την ολοκλήρωση της διαδικασίας θα πρέπει να εισάγει μια σειρά από πληροφορίες όπως φαίνονται στην ακόλουθη εικόνα. 43
Εικόνα 14 Φόρμα μεθόδου LSB Τα στοιχεία που πρέπει να παρέχει ο χρήστης στο σύστημα είναι: Η εικόνα μέσα στην οποία θα γίνει απόκρυψη της πληροφορίας Το κλειδί κωδικοποίησης των δεδομένων που πρόκειται να κρυφτούν στην εικόνα Η πληροφορία που πρόκειται να κρυφτεί εντός της εικόνας. Εισαγωγή εικόνας: Στο πεδίο εισαγωγή εικόνας ο χρήστης θα πρέπει να δώσει στο σύστημα την εικόνα η οποία αποτελεί το μέσο απόκρυψης της πληροφορίας. Η εικόνα «ανεβαίνει» στο σύστημα με έναν από τους παρακάτω τρόπους: από τον υπολογιστή του χρήστη ή από το διαδίκτυο. Συγκεκριμένα, στην πρώτη περίπτωση μέσω της επιλογής Choose File, ο χρήστης προσδιορίζει την διεύθυνση της εικόνας η οποία βρίσκεται αποθηκευμένη στον υπολογιστή του. Στη δεύτερη περίπτωση η εικόνα είναι δημοσιευμένη στο διαδίκτυο οπότε ο χρήστης αρκεί να δώσει τη διεύθυνση της. Τη διεύθυνση αυτή θα πρέπει να την πληκτρολογήσει στο πεδίο το οποίο βρίσκεται δεξιά από την αναγραφή Εικόνα από URL. 44
Κλειδί κωδικοποίησης: Το επόμενο πεδίο που θα πρέπει να συμπληρωθεί είναι το πεδίο Κλειδί κωδικοποίησης. Εδώ θα πρέπει να δοθεί κάποιο αλφαριθμητικό με βάση το οποίο θα κωδικοποιηθεί το μήνυμα πριν από τη στεγανογράφηση. Η διαδικασία αυτή προσθέτει ένα επιπρόσθετο πεδίο ασφάλειας στην απόκρυψη της πληροφορίας. Έτσι, ακόμη και εάν κάποιος ανακτήσει την πληροφορία που έχει κρυφτεί μέσα στην εικόνα δεν θα έχει πλήρη πρόσβαση σε αυτή εφόσον δεν διαθέτει το κλειδί με βάση το οποίο έγινε η κωδικοποίησή της. Δεδομένα προς στεγανογράφηση: Ο χρήστης παρέχει το μήνυμα το οποίο επιθυμεί να αποκρύψει μέσα στην εικόνα. Το μήνυμα μπορεί να είναι είτε κάποια εικόνα, είτε κάποιο κείμενο. Η εικόνα προς απόκρυψη μπορεί να βρίσκεται αποθηκευμένη στον υπολογιστή του χρήστη ( Εισαγωγή εικόνας από αρχείο ) ή μπορεί να είναι κείμενο οπότε εισάγεται πληκτρολογώντας το στο πεδίο Εισαγωγή κειμένου. Το σύστημα υπολογίζει κάθε φορά τη μέγιστη πληροφορία που μπορεί να στεγανογραφηθεί στην δοθείσα εικόνα λαμβάνοντας υπόψη το μέγεθος της εικόνας που έχει δώσει ο χρήστης καθώς και τη δυνατότητα της μεθόδου που έχει επιλέξει. Στην περίπτωση που το μήνυμα προς στεγανογράφηση ξεπερνάει το όριο αυτό, δεν πραγματοποιείται η στεγανογράφηση ενώ ο χρήστης πληροφορείται μέσω μηνύματος για το όριο της πληροφορίας την οποία μπορεί να αποκρύψει. Η ίδια εικόνα έχει διαφορετική χωρητικότητα ανάλογα με τη μέθοδο που επιλεγεί και σύμφωνα με τις σχέσης υπολογισμού της χωρητικότητας (3),(4). (LSB, LBP). Ο χρήστης ακόμη προειδοποιείται με μηνύματα λάθους στην περίπτωση που δεν δώσει τιμή σε κάποιο υποχρεωτικό πεδίο. Επιλογή μεθόδου στεγανογράφησης LBP Στην ακόλουθη εικόνα παρουσιάζεται η φόρμα που εμφανίζεται στο χρήστη εάν επιλέξει ως μέθοδο στεγανογράφησης την LBP. Τα στοιχεία που καλείται να εισάγει ο χρήστης είναι τα ίδια όπως περιγράφηκαν για τη μέθοδο LSB. Η διαφορά έγκειται στον αλγόριθμο που υλοποιείται στο πίσω μέρος της φόρμας. Συνοπτικά τα στοιχεία που καλείται να εισάγει ο χρήστης είναι: Εικόνα στην οποία θα γίνει η απόκρυψη της πληροφορίας. Η εικόνα αυτή μπορεί να βρίσκεται αποθηκευμένη στον υπολογιστή του χρήστη ή σε κάποια διεύθυνση του διαδικτύου. Κλειδί κωδικοποίησης το οποίο χρησιμοποιείται για την κωδικοποίηση των δεδομένων που πρόκειται να αποκρυφθούν στην εικόνα. 45
Δεδομένα προς στεγανογράφηση τα οποία μπορεί να αφορούν είτε μια εικόνα αποθηκευμένη στον υπολογιστή του χρήστη είτε κάποιο κείμενο το οποίο πληκρτολογεί εκείνη τη στιγμή μέσω της φόρμας. Εικόνα 15 Φόρμα που εμφανίζεται στο χρήστη εφόσον επιλέξει ως μέθοδο στεγανογράφησης το LBP Ανάκτηση πληροφορίας Η κατηγορία «Ανάκτηση πληροφορίας» χρησιμοποιείται όταν ο χρήστης επιθυμεί την ανάκτηση κάποιου κρυμμένου μηνύματος εντός μιας εικόνας. Η ανάκτηση της πληροφορίας πραγματοποιείται με μία από τις μεθόδους που περιγράφηκαν: LSB, LBP. Όπως επισημάνθηκε παραπάνω η μέθοδος που πρέπει να επιλεχθεί για την ανάκτηση της πληροφορίας θα πρέπει να είναι η ίδια με αυτή που χρησιμοποιήθηκε για την απόκρυψη των δεδομένων. 46
Εικόνα 16 Επιλογή μεθόδου για ανάκτηση πληροφορίας Ανάκτηση της πληροφορίας με τη μέθοδο LSB Στην παρακάτω εικόνα παρουσιάζεται η πληροφορία που καλείται να εισάγει ο χρήστης προκειμένου να αποκτήσει πρόσβαση στην πληροφορία που έχει αποκρυφθεί. Εικόνα 17 Φόρμα μεθόδου LSB για ανάκτηση πληροφορίας Τα δεδομένα που πρέπει να εισάγει είναι: Η στεγανογραφημένη εικόνα η οποία περιέχει ενσωματωμένη την πληροφορία που αποκρύφθηκε στο προηγούμενο βήμα. Το κλειδί κωδικοποίησης το οποίο θα πρέπει να γνωρίζει ο χρήστης προκειμένου να αποκτήσει πρόσβαση στην κωδικοποιημένη πληροφορία. Εισαγωγή εικόνας: Στο πεδίο αυτό εισάγεται η στεγανογραφημένη εικόνα. Η εικόνα μπορεί να βρίσκεται αποθηκευμένη τοπικά στον υπολογιστή του χρήστη ( Choose File ) είτε σε κάποια διεύθυνση στο διαδίκτυο ( Εικόνα από κάποιο URL ). 47