Reality is merely an illusion, albeit a very persistent one. Albert Einstein

Σχετικά έγγραφα
ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

Διαχρονικές δομές δεδομένων

Συμμετρικά κρυπτοσυστήματα

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα πακέτου (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

Συμμετρική Κρυπτογραφία

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

Κεφ.11: Ευρετήρια και Κατακερματισμός

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

UP class. & DES και AES

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων.

Αλγόριθµοι συµµετρικού κλειδιού

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας

Δ Εξάμηνο. Κρυπτογραφία: Συμμετρική Κρυπτογράφηση

Εφαρμοσμένη Κρυπτογραφία Ι

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 10 : Ασφάλεια. Δρ. Γκόγκος Χρήστος

Εφαρμοσμένη Κρυπτογραφία Ι

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης

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

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

Κρυπ Κρ το υπ γραφία Κρυπ Κρ το υπ λογίας

Ασφάλεια Υπολογιστικών Συστηµάτων

Hash Functions. μεγεθος h = H(M) ολους. στο μηνυμα. στο συγκεκριμενο hash (one-way property)

Κρυπτογραφία. Εργαστηριακό μάθημα 1

Ασφάλεια Υπολογιστικών Συστημάτων

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Ασφάλεια Πληροφοριακών Συστημάτων. Συμμετρική Κρυπτογραφία ΙΙ. Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης. Ασφάλεια Πληροφοριακών Συστημάτων

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτοαλγόριθμοι. Χρήστος Ξενάκης

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 2ο Αναπαράσταση Δεδομένων

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αυθεντικότητα Μηνυμάτων Συναρτήσεις Hash/MAC

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

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

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Κρυπτογραφία. Κεφάλαιο 3 Αλγόριθμοι τμήματος Block ciphers

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Advanced Data Indexing

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ασφάλεια Πληροφοριακών Συστημάτων

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Κεφάλαια 2&21. Συναρτήσεις κατακερματισμού Πιστοποίηση ταυτότητας μηνυμάτων

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ

Ασφάλεια Πληροφοριακών Συστημάτων

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην επιστήμη των υπολογιστών

Κατακερματισμός (Hashing)

ΗΥ360 Αρχεία και Βάσεις εδοµένων

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος

Transcript:

Μια Πλήρως Διαχρονική Κρυπτογραφημένη Δομή Δεδομένων Αναζήτησης Εύρους Βασίλειος Ιωσηφίδης, 1045 Διπλωματική Εργασια για το ΠΜΣ: Επιστήμη και Τεχνολογία Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επιβλέπων: Χρήστος Μακρής, Επίκουρος καθηγητής Ημερομηνία: 15 Σεπτεμβρίου 2016

Πανεπιστήμιο Πατρών, Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ιωσηφίδης Βασίλειος c 2016 Με την επιφύλαξη παντός δικαιώματος 1

2

Reality is merely an illusion, albeit a very persistent one Albert Einstein 3

4

Ευχαριστίες Θα ήθελα πρώτα απ όλα να ευχαριστήσω τον καθηγητή μου, κ. Χρήστο Μακρή για την επίβλεψη αυτής της Διπλωματικής Εργασίας και για την ευκαιρία που μου έδωσε για να την εκπονήσω. Επίσης ευχαριστώ τον καθηγητή κ. Γιάννη Σταματίου και τον πρώην συμφοιτητή μου κ. Κυριάκο Ισπόγλου για την καθοδήγηση και την βοήθεια που μου παρείχαν. Τέλος θα ήθελα να ευχαριστήσω την οικογένεια μου και τους φίλους μου που μου στάθηκαν δίπλα μου όλα αυτά τα χρόνια. 5

6

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

8

Περιεχόμενα 1 Εισαγωγή στην Κρυπτογραφία. Αλγόριθμοι και τεχνικές 12 1.1 Εισαγωγή............................... 12 1.2 AES.................................. 15 1.3 BLOWFISH.............................. 16 1.4 CBC.................................. 18 1.5 DES.................................. 20 1.6 3-DES................................. 22 1.7 IDEA................................. 24 1.8 NEW DES.............................. 25 1.9 SERPENT.............................. 26 2 ΜΕΡΙΚΩΣ ΚΑΙ ΠΛΗΡΩΣ ΔΙΑΧΡΟΝΙΚΕΣ ΔΟΜΕΣ ΔΕ- ΔΟΜΕΝΩΝ 27 2.1 Εισαγωγή............................... 27 2.2 FAT NODE.............................. 29 2.3 PATH COPYING.......................... 32 2.4 NODE COPYING.......................... 33 2.5 Πλήρης Διαχρονικότητα....................... 37 3 Προηγούμενες Εργασίες 41 3.1 Order Preserving Encryption for Numeric Data.......... 41 3.2 Partially Persistent Data Structures of Bound Degree with Constant Update Time.......................... 47 3.3 Binary Tree Encryption: Constructions and Applications..... 52 3.4 Fully persistent B-Trees....................... 55 4 Encryption Search Tree 70 4.1 Λειτουργία ένθεσης.......................... 71 4.2 Λειτουργία Σπασίματος........................ 72 4.3 Λειτουργία Αναζήτησης........................ 72 4.4 Λειτουργία Διαγραφής........................ 73 4.5 Λειτουργία Επαναζύγισης....................... 75 5 Encryption Range Search Tree 77 5.1 Λειτουργία ένθεσης.......................... 78 5.2 Λειτουργία Σπασίματος........................ 78 5.3 Λειτουργία Αναζήτησης........................ 79 5.4 Λειτουργία Διαγραφής........................ 80 5.5 Λειτουργία Επαναζύγισης....................... 81 6 Persistent Encryption Range Search Tree 83 6.1 Partially Persistent Encryption Range Search Tree........ 83 6.2 Λειτουργία ένθεσης.......................... 84 6.3 Λειτουργία Σπασίματος........................ 85 6.4 Λειτουργία Μερικής Διαχρονικότητας................ 85 9

6.5 Λειτουργία Αναζήτησης........................ 88 6.6 Λειτουργία Διαγραφής........................ 89 6.7 Λειτουργία Επαναζύγισης....................... 90 6.8 Fully Persistent Encryption Range Search Tree.......... 94 7 Πειραματική Αξιολόγηση 96 7.1 Εισαγωγή............................... 97 7.2 Διαγραφή............................... 99 7.3 Αναζήτηση............................... 100 7.4 Memory Consumption........................ 101 8 Παράρτημα 103 8.1 Κώδικες Υλοποίησης......................... 103 8.1.1 First Encryption Tree.................... 103 8.1.2 Range Encryption Tree................... 116 8.1.3 Persistent Encryption Tree................. 137 8.1.4 Test Case for First Encryption Tree............ 173 8.1.5 Test Case for Range Encryption Tree............ 176 8.1.6 Test Case for Persistent Range Encryption Tree...... 178 Αναφορές.................................. 180 10

11

1 Εισαγωγή στην Κρυπτογραφία. Αλγόριθμοι και τεχνικές 1.1 Εισαγωγή Κρυπτογραφία [2] είναι η πρακτική και η μελέτη των τεχνικών για την ασφαλή επικοινωνία με την παρουσία τρίτου που ονομάζεται αντίπαλος. Γενικότερα, κρυπτογραφία είναι η τεχνική η οποία κατασκευάζει και αναλύει τα πρωτόκολλα που εμποδίζουν τρίτους ή το κοινό από την ανάγνωση μηνυμάτων. Διάφορες πτυχές της ασφάλειας των πληροφοριών, όπως το απόρρητο των δεδομένων, την ακεραιότητα των δεδομένων, ο έλεγχος γνησιότητας και μη άρνηση αναγνώρισης είναι κεντρικής σημασίας στη σύγχρονη κρυπτογραφία. Σύγχρονη κρυπτογραφία υπάρχει στη διασταύρωση των κλάδων των μαθηματικών, της επιστήμης των υπολογιστών και της ηλεκτρολογίας. Εφαρμογές της κρυπτογραφίας περιλαμβάνουν κάρτες ΑΤΜ, τους κωδικούς πρόσβασης του υπολογιστή, και το ηλεκτρονικό εμπόριο. Κρυπτογραφία στη σύγχρονη εποχή είναι ουσιαστικά συνώνυμη με την κρυπτογράφηση, τη μετατροπή των πληροφοριών από μια αναγνώσιμη κατάσταση σε ασυναρτησίες. Ο δημιουργός ένος κρυπτογραφημένου μήνυματος μοιράζεται την τεχνική αποκωδικοποίησης που χρειάζεται για να ανακτήσει την αρχική πληροφορία μόνο με αποδέκτες, αποκλείοντας έτσι τα ανεπιθύμητα πρόσωπα από το να κάνει το ίδιο. Στη βιβλιογραφία της κρυπτογραφίας χρησιμοποιεί συχνά Alice ( Α) για τον αποστολέα, ο Bob ( Β ) για τον αποδέκτη, και της Εύας ( ωτακουστής ) για τον αντίπαλο. Δεδομένου ότι η ανάπτυξη των μηχανών κρυπτογράφησης στο Δεύτερο Παγκόσμιο Πόλεμο Ι και η έλευση των ηλεκτρονικών υπολογιστών στο Δεύτερο Παγκόσμιο Πόλεμο, οι μέθοδοι που χρησιμοποιούνται για τη διεξαγωγή κρυπτολογίας έχουν γίνει όλο και πιο πολύπλοκες και η εφαρμογή τους πιο διαδεδομένη. Η σύγχρονη κρυπτογραφία βασίζεται σε μεγάλο βαθμό στη μαθηματική θεωρία και την επιστήμη των υπολογιστών. Οι κρυπτογραφικοί αλγορίθμοι σχεδιάζονται γύρω από την υπολογιστική υποθέση, καθιστώντας τέτοιους αλγορίθμους δύσκολο να σπάσουν στην πράξη από οποιονδήποτε αντίπαλο. Είναι θεωρητικά δυνατό να σπάσει ένα τέτοιο σύστημα, αλλά είναι ανέφικτο να γίνει από οποιο- 12

δήποτε γνωστό πρακτικό μέσο. Ως εκ τούτου, τα συστήματα αυτά ονομάζονται υπολογιστικά ασφαλή. Υπάρχουν συστήματα πληροφοριών θεωρητικά ασφαλείς που αποδεδειγμένα δεν μπορεί να σπάσει ακόμα και με απεριόριστη υπολογιστική ισχύ, ένα παράδειγμα είναι το one-time pad, αλλά αυτά τα συστήματα είναι πιο δύσκολο να εφαρμοστούν. Η ανάπτυξη των κρυπτογραφικών τεχνολογιών έχει εγείρει μια σειρά από νομικά ζητήματα στην εποχή της πληροφορίας. Σε ορισμένες δικαιοδοσίες όπου η χρήση της κρυπτογραφίας είναι νόμιμη, οι νόμοι επιτρέπουν στους ερευνητές την αποκάλυψη των κλειδιών κρυπτογράφησης για τα έγγραφα που σχετίζονται με την έρευνα. Η κρυπτογραφία παίζει επίσης σημαντικό ρόλο στη διαχείριση των ψηφιακών δικαιωμάτων και παραβίαση πνευματικών δικαιωμάτων των ψηφιακών μέσων. Τέσσερις είναι οι βασικές λειτουργίες που διέπουν την κρυπτογραφία: 1. Εμπιστευτικότητα: Η πληροφορία προς μετάδοση είναι προσβάσιμη μόνο στα εξουσιοδοτημένα μέλη. Η πληροφορία είναι ακατανόητη σε κάποιον τρίτο. 2. Ακεραιότητα: Η πληροφορία μπορεί να αλλοιωθεί μόνο από τα εξουσιοδοτημένα μέλη και δεν μπορεί να αλλοιώνεται χωρίς την ανίχνευση της αλλοίωσης. 3. Μη απάρνηση: Ο αποστολέας ή ο παραλήπτης της πληροφορίας δεν μπορεί να αρνηθεί την αυθεντικότητα της μετάδοσης ή της δημιουργίας της. 4. Πιστοποίηση: Οι αποστολέας και παραλήπτης μπορούν να εξακριβώνουν τις ταυτότητές τους καθώς και την πηγή και τον προορισμό της πληροφορίας με διαβεβαίωση ότι οι ταυτότητές τους δεν είναι πλαστές. ΟΡΟΛΟΓΙΑ Κρυπτογράφηση ονομάζεται η διαδικασία μετασχηματισμού ενός μηνύματος σε μία ακατανόητη μορφή με τη χρήση κάποιου κρυπτογραφικού αλγορίθμου ούτως ώστε να μην μπορεί να διαβαστεί από κανέναν εκτός του νόμιμου παραλήπτη. Η αντίστροφη διαδικασία όπου από το κρυπτογραφημένο κείμενο παράγεται το αρχικό μήνυμα ονομάζεται αποκρυπτογράφηση. 13

Κρυπτογραφικός αλγόριθμος είναι η μέθοδος μετασχηματισμού δεδομένων σε μία μορφή που να μην επιτρέπει την αποκάλυψη των περιεχομένων τους από μη εξουσιοδοτημένα μέρη. Κατά κανόνα ο κρυπτογραφικός αλγόριθμος είναι μία πολύπλοκη μαθηματική συνάρτηση. Αρχικό κείμενο (plaintext) είναι το μήνυμα το οποίο αποτελεί την είσοδο σε μία διεργασία κρυπτογράφησης. Κλειδί (key) είναι ένας αριθμός αρκετών bit που χρησιμοποιείται ως είσοδος στη συνάρτηση κρυπτογράφησης. Κρυπτογραφημένο κείμενο (ciphertext) είναι το αποτέλεσμα της εφαρμογής ενός κρυπτογραφικού αλγόριθμου πάνω στο αρχικό κείμενο. 14

1.2 AES Το πρότυπο κρυπτογράφησης για προχωρημένους AES [17], είναι μια προδιαγραφή για την κρυπτογράφηση των ηλεκτρονικών στοιχείων που καθορίζονται από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας. Το AES βασίζεται στην κρυπτογράφηση [17] που αναπτύχθηκε από δύο κρυπτογράφους, Joan Daemen, Vincent Rijmen. Το ΑΕΣ έχει εγκριθεί από την κυβέρνηση των ΗΠΑ και τώρα χρησιμοποιείται σε όλο τον κόσμο. Ο αλγόριθμος που περιγράφεται από το AES είναι μια κρυπτογράφηση συμμετρικού κλειδιού, που σημαίνει το ίδιο κλειδί χρησιμοποιείται τόσο για την κρυπτογράφηση και αποκρυπτογράφηση των δεδομένων. Το ΑΕΣ τέθηκε σε ισχύ ως ομοσπονδιακό πρότυπο στις 26 Μαΐου του 2002 μετά την έγκριση από το Γενικό Γραμματέα Εμπορίου. Το AES περιλαμβάνεται στο 18033-3 πρότυπο ISO / IEC. AES είναι διαθέσιμο σε πολλά διαφορετικά πακέτα κρυπτογράφησης, και είναι το πρώτο (και μόνο) προσιτό στο κοινό που εγκρίθηκε από την Εθνική Υπηρεσία Ασφαλείας (NSA) Σχήμα 1: ΑΕΣ Ο AES κρυπτογραφεί δεδομένα σε blocks βάσει κλειδιού. Τα blocks είναι μεγέθους 128 bit και το κλειδί είναι ποικίλου μεγέθους, 128, 192 και 256 bit. Είναι είναι ένας επαναληπτικός αλγόριθμος blocks (πινάκων). Σε κάθε εφαρμογή της επανάληψης οι μετατροπές γίνονται σε έναν ενδιάμεσο πίνακα, των αποκαλούμενο State. Στο τέλος της διαδικασίας ο State γίνεται η παραγόμενη έξοδος. Στο σχήμα 1 φαίνεται ένα παράδειγμα του ΑΕΣ. 15

1.3 BLOWFISH Ο blowfish [24] είναι ένας αλγόριθμος κρυπτογραφησης τμήματος (block cipher) που κρυπτογραφεί τμήματα μήκους 64 bit. Ο Blowfish σχεδιάστηκε ώστε να είναι εύκολος στην υλοποίηση και να παρουσιάζει μεγάλη ταχύτητα εκτέλεσης. Αποτελείται από δύο μέρη: το πρώτο είναι η επέκταση του κλειδιού (γίνεται η παραγωγή των session keys) στο το δεύτερο το σχήμα Φειστελ, όπου γίνεται η κρυπτογράφηση (σε κάθε επανάληψη γίνεται η χρηση ενός session key). Η επέκταση του κλειδιού (expansion key algorithm) μετατρέπει το κλειδί σε υποκλειδιά συνολικού μεγέθους 4168 bytes. Η κρυπτογράφηση ενός κειμένου γίνεται μέσα από ένα σύστημα Feistel το οποίο τρέχει για 16 επαναλήψεις. Κάθε γύρος αποτελείται από ένα κλειδί όπου είναι εξαρτημένο από μια μετάθεση του επιτεταμένου κλειδιού και από ένα πακέτο δεδομένων για κρυπτογράφηση. Στο σχήμα 2 φαινεται ένα παράδειγμα του αλγορίθμου. Ο Blowfish περιλαμβάνεται στους καλύτερους συμβατικούς αλγορίθμους κρυπτογράφησης που έχουν εφαρμοστεί, αφού τα υποκλειδιά και τα S-boxes παράγονται από διαδικασία επανειλημμένων εφαρμογών του Blowfish στον εαυτό του. Στον Blowfish, τα υποκλειδιά και τα S-boxes παράγονται από την επανειλημμένη εφαρμογή του ίδιου του αλγορίθμου Blowfish στο κλειδί. Οι επαναλήψεις αυτές τροποποιούν πλήρως τα δυαδικά ψηφία και καθιστούν την κρυπτανάλυση εξαιρετικά δύσκολη. Σχήμα 2: Αλγόριθμος Blowfish 16

Οι μέχρι σήμερα δημοσιεύσεις των προσπαθειών για κρυπτανάλυση του Blowfish δεν αναφέρουν πρακτικές αδυναμίες. Ο Blowfish χρησιμοποιείται, επίσης, σε διάφορες εμπορικές εφαρμογές. Ολες οι πράξεις είναι τύπου XOR και προσθέσεις σε 32 bit λέξεων. Οι μοναδικές επιπρόσθετες πράξεις είναι τέσσερις πίνακες όπου κρατάνε δεδομένα και αλλάζουν σε κάθε επενάληψη. 17

1.4 CBC Στην κρυπτογραφία, ο όρος mode of operation είναι ένας αλγόριθμος που χρησιμοποιεί ένα μπλοκ κρυπτογράφησης για την κρυπτογράφηση μηνυμάτων αυθαίρετου μήκους με τρόπο που να παρέχει την εμπιστευτικότητα ή τη γνησιότητα. Ενα μπλοκ κρυπτογράφησης από μόνο του είναι κατάλληλο μόνο για τον ασφαλή κρυπτογραφικό μετασχηματισμό (κρυπτογράφηση ή αποκρυπτογράφηση ) ενός σταθερού μήκους λέξης που ονομάζεται μπλοκ. Το mode of operation περιγράφει πώς να εφαρμοστεί κατ έπανάληψη η λειτουργία κρυπτογράφησης single-block για να μετατρέψει με ασφάλεια ποσότητες δεδομένων μεγαλύτερες από ένα μπλοκ. Οι περισσότεροι τρόποι απαιτούν μια μοναδική δυαδική ακολουθία, που συχνά αποκαλείται ένα διάνυσμα αρχικοποίησης (IV), για κάθε λειτουργία κρυπτογράφησης. Το IV πρέπει να είναι μη επαναλαμβανόμενο και, για ορισμένες λειτουργίες, τυχαίο. Το διάνυσμα αρχικοποίησης χρησιμοποιείται για να εξασφαλίσει τα διακριτά ciphertexts, παράγεται ακόμη και όταν το ίδιο plaintext είναι κρυπτογραφημένο, πολλές φορές ανεξάρτητα με το ίδιο κλειδί. Η κρυπτογράφηση αλυσίδας ή αλλιώς Code Block Chaining (CBC) [21] χρησιμοποιείται για την κρυπτογράφηση πολλών διαφορετικών block. Το πλεονέκτημά της είναι ότι δύο ίδια block απλού κειμένου, δεν θα κρυπτογραφηθούν ποτέ σε δύο ίδια block κρυπτογραφημένου κειμένου. Η είσοδος στον αλγόριθμο κρυπτογράφησης είναι το αποτέλεσμα της πύλης XOR του τρέχοντος τμήματος αρχικού κειμένου και του προηγούμενου τμήματος κρυπτογραφήματος. Σχήμα 3: Αλγόριθμος CBC Στο σχήμα 3 φαίνεται το σχήμα κρυπτογράφησης του αλγορίθμου. Με αυτό 18

τον τρόπο, κάθε μπλοκ εξαρτάται από όλα τα plaintext μπλοκς μέχρι εκείνο το σημείο. Για να γίνει κάθε μήνυμα μοναδικό, ένα διάνυσμα αρχικοποίησης πρέπει να χρησιμοποιηθεί στο πρώτο μπλοκ. Αποκρυπτογράφηση με εσφαλμένο IV έχει ως αποτέλεσμα το πρώτο μπλοκ plaintext να είναι διεφθαρμένο οπότε όλη η αλυσίδα θα αποκρυπτογραφηθεί λανθασμένα. Το διάνυσμα αρχικοποίησης IV πρέπει να είναι γνωστό τόσο στον πομπό όσο και στο δέκτη. 19

1.5 DES Το Data Encryption Standard (DES) [3] ήταν κάποτε ένας κυρίαρχος αλγόριθμος κρυπτογράφησης συμμετρικού κλειδιού για την κρυπτογράφηση των ηλεκτρονικών δεδομένων. Υπήρξε μεγάλη επιρροή στην πρόοδο της σύγχρονης κρυπτογραφίας στον ακαδημαϊκό κόσμο. Αναπτύχθηκε στις αρχές της δεκαετίας του 1970 στην IBM και βασίζεται σε προγενέστερο σχεδιασμό του Horst Feistel, ο αλγόριθμος υποβλήθηκε στο Εθνικό Γραφείο Προτύπων (NBS) μετά από πρόσκληση του οργανισμού να προτείνει έναν υποψήφιο για την προστασία των ευαίσθητων, μη ταξινομημένων στοιχείων ηλεκτρονικής διακυβέρνησης. Το 1976, μετά από διαβούλευση με την Εθνική Υπηρεσία Ασφαλείας (NSA), η NBS επιλεγεί τελικά μια ελαφρώς τροποποιημένη έκδοση. Το DES είναι το προτότυπο μπλοκ κρυπτογράφησης, ένας αλγόριθμος που παίρνει μια συμβολοσειρά σταθερού μήκους plaintext bits και το μετατρέπει μέσα από μια σειρά πολύπλοκων εργασιών σε μια άλλη συμβολοσειρά ciphertext του ιδίου μήκους. Στην περίπτωση του DES, το μέγεθος μπλοκ είναι 64 bits. Το DES χρησιμοποιεί επίσης ένα πλήκτρο για να προσαρμόσει το μετασχηματισμό, έτσι ώστε η αποκρυπτογράφηση να μπορεί να εκτελείται μόνο από εκείνους που γνωρίζουν το συγκεκριμένο κλειδί που χρησιμοποιείται για την κρυπτογράφηση. Το κλειδί φαινομενικά αποτελείται από 64 bits. Ωστόσο, μόνο 56 από αυτά χρησιμοποιούνται πράγματι από τον αλγόριθμο. Οκτώ bit χρησιμοποιούνται αποκλειστικά για τον έλεγχο της ισοτιμίας, και στη συνέχεια απορρίπτονται. Η συνολική δομή του αλγορίθμου φαίνεται στο Σχήμα 4. Υπάρχουν 16 όμοια στάδια επεξεργασίας, που ονομάζονται γύροι. Υπάρχει επίσης μια αρχική και τελική μετάθεση, που ονομάζεται IP και FP, οι οποίες είναι αντίστροφες (IP αναιρεί τη δράση του FP, και το αντίστροφο). Πριν από τους κύριους γύρους, το μπλοκ χωρίζεται σε δύο μισά 32-bit και η επεξεργασία γίνεται εναλλάξ. Αυτό το criss-crossing είναι γνωστό ως το σύστημα Feistel. Η δομή Feistel εξασφαλίζει ότι η αποκρυπτογράφηση και η κρυπτογράφηση είναι πολύ παρόμοιες διαδικασίες, η μόνη διαφορά είναι ότι τα δευτερεύοντα κλειδιά εφαρμόζονται με την αντίστροφη σειρά, όταν αποκρυπτογραφούνται. Το υπόλοιπο του αλγορίθμου είναι πανομοιότυπο. Αυτό απλοποιεί σε μεγάλο βαθμό την εφαρμογή, ιδιαίτερα 20

Σχήμα 4: Αλγόριθμος DES σε υλικό, καθώς δεν υπάρχει ανάγκη για χωριστό αλγόριθμο κρυπτογράφησης και αποκρυπτογράφησης. 21

1.6 3-DES Στην κρυπτογραφία, ο Triple DES (3-DES) [1] είναι η κοινή ονομασία για το Triple Data Encryption Algorithm (TDEA ή Triple DEA) συμμετρικού κλειδιού μπλοκ κρυπτογράφησης, το οποίο εφαρμόζεται στον αλγόριθμο κρυπτογράφησης δεδομένων DES τρεις φορές σε κάθε μπλοκ δεδομένων. Το μέγεθος του κλειδιού κρυπτογράφησης του αρχικού DES είναι 56 bits. Ηταν σε γενικές γραμμές επαρκείς, όταν ο αλγόριθμος έχει σχεδιαστεί, αλλά η αύξηση της υπολογιστικής ισχύος έκανε τις επιθέσεις brute-force εφικτές. Ο Triple DES παρέχει μια σχετικά απλή μέθοδο για την αύξηση του μεγέθους κλειδιού του DES για την προστασία από τέτοιες επιθέσεις, χωρίς την ανάγκη να σχεδιάσει ένας εντελώς νέος αλγόριθμος κρυπτογράφησης μπλοκ. Ο Triple DES χρησιμοποιεί ένα κλειδί πακέτο που περιλαμβάνει τρία κλειδιά DES k1, k2, k3 το καθένα των 56 bits (εξαιρουμένων των bits ισοτιμίας). Ο αλγόριθμος κρυπτογράφησης είναι η εξής: ciphertext = Ek3 (Dk2 (Ek1 (plaintext))) Δηλαδή, ο DES κρυπτογραφεί με κ1, ο DES αποκρυπτογραφήσει με κ2, τέλος ο DES κρυπτογράφηση με κ3. Η αποκρυπτογράφηση είναι η αντίστροφη: plaintext = Dk1 (Ek2 (Dk3 (ciphertext))) Κάθε τριπλή κρυπτογράφηση κρυπτογραφεί ένα μπλοκ των 64 bits δεδομένων. Τα πρότυπα καθορίζουν τρεις επιλογές κλειδιών: 1. Και τα τρία κλειδιά είναι ανεξάρτητα. 2. κ1 και κ2 είναι ανεξάρτητα, και κ3 = κ1. 3. Ολα τα κλειδιά είναι ταυτόσημα, δηλαδή κ1 = κ2 = κ3. Η επιλογή 1 είναι η ισχυρότερη, με 3 * 56 = 168 ανεξάρτητα ψηφία. Η επιλογή 2 παρέχει μικρότερη ασφάλεια, με 2 * 56 = 112 ψηφία. Η επιλογή 3 είναι ισοδύναμη με τον DES, μόνο με 56 ψηφία. Παρέχει συμβατότητα με DES. Σε κάθε περίπτωση η μέση λειτουργία είναι η αντίστροφη της πρώτης και της τελευταίας. Αυτό βελτιώνει την αντοχή του αλγορίθμου όταν χρησιμοποιείτε η ε- 22

Σχήμα 5: Αλγόριθμος 3 - DES πιλογή 2, και παρέχει συμβατότητα με DES με την επιλογή 3. Σε γενικές γραμμές, ο Triple DES με τρία ανεξάρτητα κλειδιά έχει μήκος κλειδιού 168 bits (τρια 56-bit κλειδιά DES), αλλά λόγω της επίθεσης meet-in-the-middle attack, η αποτελεσματική ασφάλεια που παρέχει είναι μόνο 112 bits.. 23

1.7 IDEA Στην κρυπτογραφία, ο International Data Encryption Algorithm (IDEA) [4], που αρχικά ονομαζόταν Improved Proposed Encryption Standard (IPES), είναι ένας συμμετρικός αλγόριθμος κρυπτογράφησης μπλοκ σχεδιασμένος από τους James Massey, Xuejia Lai και περιγράφηκε για πρώτη φορά το 1991. Ο αλγόριθμος επρόκειτο να αντικαταστήσει τον DES. Ο IDEA είναι μια μικρή αναθεώρηση μίας προηγούμενης κρυπτογράφησης, Proposed Encryption Standard (PES). Ο IDEA λειτουργεί σε μπλοκ 64-bit χρησιμοποιώντας ένα κλειδί 128-bit, και αποτελείται από μια σειρά οκτώ πανομοιότυπων μετασχηματισμών και μια μεταμόρφωση εξόδου. Η διαδικασία για την κρυπτογράφηση και την αποκρυπτογράφηση είναι παρόμοια. Ο IDEA αντλεί μεγάλο μέρος της ασφάλειας του διαφυλλώνοντας τελεστές από διαφορετικές ομάδες, πρόσθεση - πολλαπλασιασμό, και λογικούς τελεστές όπως OR,XOR. Αναλυτικότερα, Οι τελεστές αυτοί, που λειτουργούν σε 16-bit λέξεις, είναι οι εξής: Δυαδικός τελεστής XOR modulo Μετά από οκτώ γύρους έρχεται ο τελικός μισός γύρος. Η συνολική δομή του IDEA ακολουθεί το σύστημα Lai-Massey. Η XOR χρησιμοποιείται για την αφαίρεση και την πρόσθεση. Ο IDEA χρησιμοποιεί μια λειτουργία μισού γύρου. Για να λειτουργήσει με 16 bit (που σημαίνει τέσσερις εισόδους αντί για δύο για το μέγεθος μπλοκ 64 bit), ο IDEA χρησιμοποιεί το σύστημα Lai-Massey δύο φορές παράλληλα. Για να εξασφαλιστεί επαρκής διάχυση, δύο από τα υπομπλόκ αντιμετατίθενται μετά από κάθε γύρο. 24

1.8 NEW DES Στην κρυπτογραφία, ο NewDES [5] είναι ένας αλγόριθμος συμμετρικού κλειδιού κρυπτογράφησης μπλοκ. Δημιουργήθηκε το 1984 από τον Robert Scott ως μια πιθανή αντικατάσταση DES. Παρά το όνομά του, δεν προέρχεται από τον DES και έχει μια εντελώς διαφορετική δομή. Ο αλγόριθμος αναθεωρήθηκε με ένα τροποποιημένο βασικό πρόγραμμα το 1996 για να αντιμετωπίσει μια επίθεση. Αυτή η έκδοση μερικές φορές αναφέρεται ως NewDES-96. Το 2004, ο Scott δημοσιεύσε μερικές παρατηρήσεις σχετικά με τον προβληματισμό σχετικά με τα κίνητρα πίσω από το σχεδιασμό του NewDES και τι θα μπορούσε να κάνει διαφορετικά, έτσι ώστε να καταστεί η κρυπτογράφηση πιο α- σφαλή. Ο NewDES, σε αντίθεση με τον DES, δεν έχει μεταθέσεων ψηφίων, γεγονός που το καθιστά εύκολο να εφαρμοστεί στο λογισμικό. Ολες οι λειτουργίες εκτελούνται σε ολόκληρα τα bytes. Είναι ένας αλγόριθμος, αποτελούμενος από 17 γύρους εκτέλεσης σε ένα μπλοκ δεδομένων 64-bit και κάνει χρήση ενός κλειδιού 120-bit. Σε κάθε γύρο, το δευτερεύον κλειδί περνάει από XOR με 1-byte υπομπλόκ των δεδομένων, στη συνέχεια τροφοδοτείται μέσω ενός S-box, η έξοδος του ο- ποίου υπόκειται σε XOR με ένα άλλο υπο-μπλοκ δεδομένων. Συνολικά, 8 XOR λειτουργίες εκτελούνται σε κάθε γύρο. Κάθε σετ από δύο γύρους χρησιμοποιεί επτά δευτερεύοντα κλειδιά 1-byte, τα οποία προέρχονται από τη διάσπαση σε 56 bits του κλειδιού σε bytes. Το κλειδί στη συνέχεια περιστρέφεται 56 bits για χρήση στους επόμενες δύο γύρους. 25

1.9 SERPENT Ο Serpent [6] είναι ένας αλγόριθμος συμμετρικού κλειδιού κρυπτογράφησης μπλοκ που ήταν φιναλίστ στο διαγωνισμό Ad v anced Encryption Standard (AES), όπου κατέλαβε την δεύτερη θέση στο Rijndael. Ο Serpent σχεδιάστηκε από τους Ross Anderson, Eli Biham, Lars Knudsen. Ο Serpent έχει μέγεθος μπλοκ των 128 bits και υποστηρίζει μέγεθος κλειδιού 128, 192 ή 256 bits. Η κρυπτογράφηση είναι ένα 32 γύρων υποκατάστασηςμετάθεσης που λειτουργούν σε ένα μπλοκ τεσσάρων λέξεων 32-bit. Κάθε γύρος ισχύει μία από τις οκτώ 4-bit σε 4-bit S-box 32 φορές παράλληλα. Ο Serpent έχει σχεδιαστεί έτσι ώστε όλες οι λειτουργίες να μπορούν να εκτελεστούν παράλληλα, χρησιμοποιώντας 32 bit. Αυτό μεγιστοποιεί τον παραλληλισμό, επίσης επιτρέπει τη χρήση της εκτεταμένης εργασίας κρυπτανάλυσης που πραγματοποιείται στον DES. Ο αλγόριθμος Serpent cipher είναι δημόσιος και δεν έχει κατοχυρωθεί με δίπλωμα ευρεσιτεχνίας. Δεν υπάρχουν περιορισμοί ή επιβαρύνσεις σχετικά με τη χρήση του. Ως αποτέλεσμα, ο καθένας είναι ελεύθερος να ενσωματώσει τον Serpent στο λογισμικό (ή υλικό υλοποιήσεις) του χωρίς να πληρώνουν τέλη αδείας. Ο αλγόριθμος Serpent περιλαμβάνει 32 κύκλους μετασχηματισμών. Στον αλγόριθμο προσδιορίζεται μία αρχική και μία τελική μετάθεση, οι οποίες διευκολύνουν εναλλακτικούς τρόπους λειτουργίας. Σε καθέναν από τους 32 κύκλους περιλαμβάνονται τρία επιμέρους επίπεδα μετασχηματισμών: η πράξη XOR με το υποκλειδί, 32 παράλληλες εφαρμογές ενός από τα 8 S-boxes και ένας γραμμικός μετασχηματισμός. 26

2 ΜΕΡΙΚΩΣ ΚΑΙ ΠΛΗΡΩΣ ΔΙΑΧΡΟΝΙ- ΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2.1 Εισαγωγή Σε αυτό το κεφάλαιο θα γίνει ανάλυση των γνωστών τεχνικών που διέπουν τις μερικώς και πλήρως διαχρονικές δομές δεδομένων. Η ανάλυση θα γίνει βάση της εργασίας [20]. Οι κοινές δομές δεδομένων είναι εφήμερες, με την λογική ότι μια αλλαγή στην δομή καταστρέφει την παλιά εκδοχή, αφήνοντας μόνο την νέα εκδοχή διαθέσιμη προς χρήση. Σε αντίθεση, μια διαχρονική δομή επιτρέπει την πρόσβαση σε οποιαδήποτε εκδοχή, παλιά ή καινούρια, οποιαδήποτε στιγμή. Η μερικώς διαχρονική σημαίνει πως κάθε λειτουργία ενημέρωσης εφαρμόζεται στην νεότερη εκδοχή. Ο Overmars[23] μελέτησε τρεις απλούς αλλά γενικούς τρόπους απόκτησης μερικής διαχρονικότητας. Μια μέθοδος είναι η ρητή αποθήκευση κάθε έκδοσης, αντιγράφοντας ολόκληρη την εφήμερη δομή μετά από κάθε ενημέρωση. Αυτό έχει ως κόστος Ω(n) χρόνο και χώρο ανά ενημέρωση. Μια εναλλακτική μέθοδος είναι να μην γίνει η αποθήκευση καμίας έκδοσης αλλά αντιθέτως να γίνει αποθήκευση ολόκληρης της αλληλουχίας ενημερώσεων, ανακατασκευάζοντας έτσι την υφιστάμενη έκδοση από το μηδέν, κάθε φορά που πραγματοποιείται πρόσβαση. Αν η αποθήκευση μιας ενημέρωσης χρειάζεται Ο(1) χώρο, τότε αυτή η μέθοδος χρησιμοποιεί μόνο Ο(m) χώρο, αλλά η πρόσβαση στην έκδοση i χρειάζεται Ω(i) χρόνο ακόμα και μια ενημέρωση χρειάζεται Ο(1) χρόνο. Μια υβριδική μέθοδος είναι η αποθήκευση ολόκληρης της αλληλουχίας ενημερώσεων και επιπροσθέτως, κάθε k- th έκδοση, για κάποια επιθυμητή κατάλληλη τιμή του k. Η πρόσβαση στην έκδοση Ι προϋποθέτει την ανακατασκευή της από έκδοση k Li/k J, εκτελώντας την κατάλληλη αλληλουχία ενημερώσεων. Αυτή η μέθοδος έχει μια ανταλλαγή χρόνου η οποία εξαρτάται από την k και από τους χρόνους τρεξίματος της εφήμερης πρόσβασης και διεργασιών ανανέωσης. Δυστυχώς οποιαδήποτε επιλογή του k προκαλεί ένα φούσκωμα είτε στον χώρο αποθήκευσης, είτε στον χρόνο πρόσβασης μέσω του παράγοντα m, εάν κάποιος κάνει αιτιολογημένες υποθέσεις σχετικά με την 27

αποδοτικότητα των εφήμερων διεργασιών. Ο τρίτος τρόπος προσέγγισης του O- vermars [23] είναι να χρησιμοποιήσει τις δυναμικές τεχνικές των Bentley, Saxe [9] οι οποίες εφαρμόζονται στα λεγόμενα «αποσυντιθέμενα» προβλήματα εύρεσης. Δεδομένου πως μια εφήμερη δομή δεδομένων αντιπροσωπεύει ένα σετ αντικειμένων, στο οποίο η μόνη διεργασία ανανέωσης είναι η εισαγωγή, η μετατροπή σε μια διαχρονική δομή προκαλεί φούσκωμα μέσω ενός λογαριθμικού παράγοντα, τόσο στον χρόνο πρόσβασης όσο και στην χρήση χώρου, αν βέβαια κάποιος κάνει αιτιολογημένες υποθέσεις σχετικά με την αποδοτικότητα των εφήμερων διεργασιών. Αν επιτρέπονται και οι διαγραφές, τότε το «φούσκωμα» είναι πολύ πιο μεγάλο. Αναζητούν (οι συγγραφείς) πιο αποτελεσματικές τεχνικές. Ιδανικά, θα επιθυμούσαν ο χώρος αποθήκευσης που χρησιμοποιείται από την διαχρονική δομή να είναι Ο(1) ανά βήμα ανανέωσης και ο χρόνος ανά διεργασία να αυξάνεται μόνο από ένα αδιάκοπο παράγοντα με το πέρασμα του χρόνου, στην εφήμερη δομή. Ενας λόγος που τα αποτελέσματα του Overmars είναι τόσο φτωχά είναι το γεγονός πως υποθέτει πολύ λίγα πράγματα σχετικά με το βαθύτερη εφήμερη δομή. 28

2.2 FAT NODE Η πρώτη ιδέα [20] ήταν να καταγράψουν όλες τις αλλαγές που γινόντουσαν στα πεδία κόμβων, στα ίδια τα πεδία κόμβων, χωρίς να σβήσουν τις παλιές τιμές των πεδίων. Αυτό προϋποθέτει πως εκείνοι θα επιτρέψουν τους κόμβους να μετατραπούν σε αυθαιρέτως παχιούς, π.χ. για να κρατήσουν ένα αυθαίρετο νούμερο τιμών σε κάθε πεδίο. Για μεγαλύτερη ακρίβεια, κάθε κόμβος θα περιέχει τις ίδιες πληροφορίες και πεδία δείκτη όπως και ένας εφήμερος κόμβος (που περιέχει αυθεντικές τιμές πεδίου), παράλληλα με χώρο για ένα αυθαίρετο νούμερο επιπλέων τιμών πεδίου. Κάθε επιπλέον πεδίο τιμής έχει ένα συσχετιζόμενο πεδίο ονόματος και σφραγίδα έκδοσης. Η σφραγίδα έκδοσης υποδεικνύει πως η έκδοση στην ο- ποία το όνομα πεδίου άλλαξε ώστε να έχει μια συγκεκριμένη τιμή. Επιπροσθέτως κάθε παχύς κόμβος έχει την δική του σφραγίδα έκδοσης, η οποία υποδεικνύει την έκδοση στην οποία ο κόμβος δημιουργήθηκε. Αναπαριστούν εφήμερα βήματα ανανέωσης στις παχιές κομβικές δομές όπως παρακάτω: Θεωρήστε ως Ι την διεργασία ανανέωσης. Οταν ένα εφήμερο βήμα ανανέωσης δημιουργεί ένα καινούριο κόμβο, εκείνοι δημιουργούν έναν ανταποκρινόμενο παχύ κόμβο, με σφραγίδα έκδοσης i, ο οποίος περιέχει τις κατάλληλες αρχικές τιμές των πληροφοριών και πεδία δείκτη. Οταν ένα εφήμερο βήμα ανανέωσης αλλάζει ένα πεδίο τιμής σε ένα κόμβο, τότε προσθέτουν την αντίστοιχη νέα τιμή στο αντίστοιχο παχύ κόμβο, μαζί με το όνομα του πεδίου που αλλάζει και μια σφραγίδα έκδοσης του i. Για κάθε πεδίο σε κόμβο, αποθηκεύουν μόνο μια τιμή ανά έκδοση. Οταν αποθηκεύουν ένα πεδίο τιμής, αν υπάρχει ήδη μία τιμή στο ίδιο πεδίο, με την ίδια σφραγίδα έκδοσης, τότε αντικαταστούν την παλιά τιμή. Τα αρχικά πεδία τιμής θεωρούνται πως έχουν την σφραγίδα έκδοσης στον κόμβο που τα περιέχει. (Οι υποθέσεις τους σχετικά με τις λειτουργίες των συνδεδεμένων δομών δεδομένων δεν αποκλείουν την πιθανότητα μιας μοναδικής διεργασίας ανανέωσης σε μία εφήμερη δομή να αλλάξει το ίδιο πεδίο σε ένα κόμβο, παραπάνω από μία φορά. Αν αυτό δεν είναι επιτρεπτό, δεν χρειάζεται να εξεταστεί στην διαχρονική δομή για δύο πεδία τιμών με την ίδια σφραγίδα έκδοσης.) Η διαχρονική δομή που βγαίνει ως αποτέλεσμα, έχει όλες τις εκδόσεις της 29

εφήμερης δομής ενσωματωμένες σε αυτή. Πλοηγούνται μέσα από τις διαχρονικές δομές όπως ακολουθεί. Οταν ένα εφήμερο βήμα πρόσβασης που έχει εφαρμοστεί στην έκδοση i, προσχωρεί το πεδίο f ενός κόμβου, τότε εκείνοι βάζουν την τιμή στο αντίστοιχο παχύ κόμβο του οποίου το όνομα πεδίου είναι f, επιλέγοντας ανάμεσα από πολλές τέτοιες τιμές, εκείνη με την μέγιστη σφραγίδα έκδοσης που δεν είναι μεγαλύτερη όμως του i. Χρειάζονται επίσης την βοηθητική δομή δεδομένων ώστε να αποθηκεύσουν δείκτες πρόσβασης για τις διάφορες εκδόσεις. Αυτή η δομή αποτελείται από μια παράταξη δεικτών για κάθε όνομα δείκτη πρόσβασης. Μετά την διεργασία ανανέωσης i, αποθηκεύουν τις τρέχουσες τιμές των δεικτών πρόσβασης στις i-οστής θέσεις εκείνων των παρατάξεων πρόσβασης. Με αυτή την δομή, η εισαγωγή πρόσβασης σε οποιαδήποτε έκδοσης χρειάζεται Ο(1) χρόνο. Ο μοναδική σκοπιμότητα των κόμβων να έχουν σφραγίδες έκδοσης, είναι να είναι σίγουρο πως κάθε κόμβος θα περιέχει μόνο μια τιμή ανά πεδίο ονόματος, ανά έκδοση. Αυτές οι σφραγίδες δεν χρειάζονται αν υπάρχει κάποιος άλλος μηχανισμός, ο οποίος θα παρακολουθεί την ώρα της διεργασίας ανανέωσης i, τις νεότερες τιμές πεδίου κόμβων που δημιουργήθηκαν κατά την διάρκεια της ενημέρωσης i. Με σκοπό να πλοηγηθούν ανάμεσα στην δομή, αρκεί να θεωρήσουν κάθε αρχικό πεδίο τιμής σε ένα κόμβο, πως είναι σαν να έχει μηδενική σφραγίδα έκδοσης. Στο σχήμα 6 φαίνεται ένα παράδειγμα αυτής της τεχνικής. Η μέθοδος του παχύ κόμβου εφαρμόζεται σε οποιαδήποτε συνδεδεμένη χρονικά δομή και χρησιμοποιεί μόνο Ο(1) χώρο ανά εφήμερο βήμα ανανέωσης στην χειρότερη περίπτωση, αλλά έχει δύο μειονεκτήματα. Πρώτον, οι παχείς κόμβοι πρέπει να εκπροσωπούνται από συνδεδεμένες συλλογές κόμβων συγκεκριμένου μεγέθους. Αυτό δεν προκαλεί κάποια θεμελιακή δυσκολία αλλά περιπλέκει την εκτέλεση. Δεύτερον, η δράση επιλογής ποιου δείκτη να ακολουθήσει σε έναν παχύ κόμβο, την ώρα που αναπαριστά ένα βήμα πρόσβασης, χρειάζεται πολλά περισσότερα από συνεχή χρόνο, Αν οι τιμές ενός πεδίου σε ένα παχύ κόμβο ταξινομηθούν ανά σφραγίδα έκδοσης και αποθηκευθούν σε ένα δυαδικό δέντρο αναζήτησης, αναπαριστώντας μία εφήμερη πρόσβαση ή ανανέωση, τότε το βήμα χρειάζεται Ο(logm) χρόνο. Αυτό σημαίνει πως υπάρχει ένας λογαριθμικός παράγοντας φουσκώματος στους χρόνους διεργασιών πρόσβασης και ανανέωσης πάνω από τους χρόνους τους στην δομή. 30

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

2.3 PATH COPYING Η αντιγραφή μονοπατιού κάνει ένα αντίγραφο όλων των κόμβων στο μονοπάτι το οποίο περιέχει τον κόμβο πουθέλουμε να κάνουμε ένθεση ή διαγραφή. Στη συνέχεια πρέπει να γίνει αλλαγή προς τα πίσω στη δομή δεδομένων: όλοι οι κόμβοι που δείχνουν στην παλιά έκδοση κόμβων πρέπει να τροποποιηθούν ώστε να οδηγούν στο νέο κόμβο αντ άυτού. Αυτές οι τροποποιήσεις προκαλούν περισσότερες αλλαγές προς τα πίσω, και ούτω καθεξής, μέχρι να φτάσουμε στη ρίζα. Διατηρείται σε πίνακας οι σειρά από ρίζες βάση της σφραγίδας χρόνου. Στο σχήμα φαίνεται η λειτουργία της τεχνικής αυτής. Σχήμα 7: Παράδειγμα τεχνικής αντιγραφής μονοπατιού Η πολυπλοκότητα της αντιγραφής μνοπατιού για m τροποποιήσεις, αυτή κοστίζει Ο (log m) χρόνο αναζήτησης. Ο Χρόνος Τροποποίησης και ο χώρος οριοθετείται από το μέγεθος της δομής, δεδομένου ότι μία και μόνο τροποποίηση μπορεί να προκαλέσει ολόκληρη τη δομή πρέπει να αντιγραφτεί. Αυτό είναι Ο (m) για μία ενημερωμένη έκδοσης, και ως εκ τούτου έτσι Ο (n n) χρόνος προεπεξεργασίας. 32

2.4 NODE COPYING Εξαλείφουν τα μειονεκτήματα των παχεών κόμβων με την δεύτερη τους ιδέα, την αντιγραφή κόμβων. Επιτρέπουν στους κόμβους στην διαχρονική δομή να περιέχουν μόνο ένα καθορισμένο νούμερο τιμών πεδίου. Οταν τους τελειώνει ο χώρος σε ένα κόμβο, τότε δημιουργούν ένα νέο αντίγραφο του κόμβου, ο οποίος περιέχει μόνο την νεότερη τιμή σε κάθε πεδίο. Πρέπει επίσης να αποθηκεύσουν δείκτες στο νέο αντίγραφο σε όλους τους προκατόχους του αντιγραμμένου κόμβου, στην νεότερη έκδοση. Εάν δεν υπάρχει χώρος σε ένα προκάτοχο για έναν τέτοιο δείκτη, τότε πρέπει να αντιγραφεί και ο προκάτοχος. Παρόλα αυτά αν υποθέσουν πως η βαθύτερη εφήμερη δομή έχει κόμβους συνεχώς bounded in-degree και επιτρέψουν επιπλέον επαρκή χώρο σε κάθε κόμβο της διαχρονικής δομής, τότε μπορούν να τους αντλήσουν ένα Ο(1) δεσμό στην ποσότητα κόμβων που αντιγράφηκαν και στον χρόνο που χρειάστηκε ανά βήμα ανανέωσης. Για να αναπτύξουν τις λεπτομέρειες αυτής της ιδέας, θα χρησιμοποιήσουν την ακόλουθη ετυμολογία. Θα αποκαλούν ένα κόμβο της βαθύτερης εφήμερης δομής, ως εφήμερο κόμβο και ένα κόμβο της διαχρονικής δομής, διαχρονικό κόμβο. Αν χ είναι ο εφήμερος κόμβος που υπάρχει στην έκδοση i της εφήμερης δομής, τότε η έκδοση i του χ είναι χ μαζί με όλες τις τιμές πεδίου στην έκδοση i της δομής. Λόγω αυτού, θεωρούν πως ένας εφήμερος κόμβος περνάει από διάφορες εκδόσεις καθώς τα πεδία του αλλάζουν. Θα δηλώσουν πως χ ένας διαχρονικός κόμβος που αντιστοιχεί σε έναν εφήμερο κόμβο χ. Στην μέθοδο αντιγραφής κόμβων, την οποία θα περιγράψουν, κάθε διαχρονικός κόμβος περιέχει μόνο μια έκδοση κάθε πεδίου πληροφορίας αλλά μπορεί να περιέχει πολλαπλές εκδόσεις δεικτών πεδίου. (Άλλες παραλλαγές της μεθόδου, που επιτρέπουν πολλαπλές εκδόσεις πεδίων πληροφοριών, διατυπώνονται εύκολα. Ας είναι το d το νούμερο πεδίων δεικτών σε ένα εφήμερο κόμβο και ας είναι το p το μέγιστο νούμερο προκατόχων ενός εφήμερου κόμβου σε οποιαδήποτε έκδοση. Υποθέτουν πως το π είναι συνεχές. Κάθε διαχρονικός κόμβος θα περιέχει d + p + e + 1 πεδία δείκτη, οπού το e είναι επαρκώς μεγάλη συνεχής, ώστε να επιλεχθεί αργότερα. Από αυτά τα πεδία, τα d είναι τα ίδια όπως τα πεδία δείκτη σε 33

ένα εφήμερο κόμβο και περιέχουν αυθεντικούς δείκτες, τα p είναι για τους δείκτες προκατόχους, τα e για τους επιπλέον δείκτες και ένα είναι για ένα αντίγραφο δείκτη. Κάθε διαχρονικός κόμβος έχει τα ίδια πεδία πληροφοριών όπως ένας ε- φήμερος κόμβος, αλλά επίσης έχει μία σφραγίδα έκδοσης για τον ίδιο τον κόμβο και ένα πεδίο ονόματος καθώς και μία σφραγίδα έκδοσης για κάθε επιπλέον δείκτη. Οι αυθεντικοί δείκτες σε ένα κόμβο, θεωρείται ότι έχουν σφραγίδες έκδοσης ίσες με αυτές του κόμβου. Η ανταπόκριση ανάμεσα στην εφήμερη δομή και στην διαχρονική δομή είναι όπως ακολουθεί. Κάθε εφήμερος κόμβος αντιστοιχεί σε ένα σετ επίμονων κόμβων, που ονομάζονται οικογένεια. Τα μέλη αυτής της οικογένειας δημιουργούν μια λίστα, μονά συνδεδεμένα, συνδεδεμένη μέσω του αντιγράφου δεικτών σε α- ύξουσα σειρά ανά σφραγίδα έκδοσης, π.χ., το νεότερο μέλος της οικογένειας είναι τελευταία στην λίστα. Αποκαλούν αυτό το τελευταίο μέλος ζωντανό και τα υπόλοιπα μέλη της οικογένειας νεκρά. Κάθε έκδοση του εφήμερο κόμβου αντιστοιχεί σε ένα μέλος της οικογένειας, αν και διάφορες εκδόσεις του εφήμερο κόμβου μπορούν να αντιστοιχούν στο ίδιο μέλος της οικογένειας. Οι ζωντανοί κόμβοι και τα νεότερα πεδία τιμών τους εκπροσωπούν την νεότερη έκδοση της εφήμερης δομής. Αποκαλούν ζωντανό δείκτη, ένα δείκτη σε μία διαχρονική δομή που εκπροσωπεί ένα δείκτη στην νεότερη έκδοση της εφήμερης δομής. Για να διευκολυνθεί η κομβική αντιγραφή, κάθε ζωντανός δείκτης στην διαχρονική δομή έχει έναν αντίστοιχο αντίστροφο δείκτη, π.χ., εάν ο ζωντανός κόμβος χ περιέχει ένα ζωντανό δείκτη σε ένα ζωντανό κόμβο f, τότε η f περιέχει ένα δείκτη στο χ, αποθηκευμένο σε ένα από τα δικά του p πεδία προκατόχων. Οπως και στην μέθοδο του παχύ κόμβου, χρησιμοποιούν παρατάξεις πρόσβασης, μία για κάθε όνομα δείκτη πρόσβασης, ώστε να αποθηκεύσουν τις διάφορες εκδόσεις των δεικτών πρόσβασης. Ετσι λοιπόν, μπορούν να έχουν πρόσβαση σε ένα κόμβο καταχώρησης σε οποιαδήποτε έκδοση σε Ο(1) χρόνο. Η πλοήγηση ανάμεσα στην διαχρονική δομή είναι ακριβώς ίδια όπως και στην μέθοδο του παχύ κόμβου: για να αναπαραστήσουν ένα βήμα εφήμερης πρόσβασης που εφαρμόζεται στην έκδοση και ακολουθεί τον δείκτη σε ένα πεδίο f ενός εφήμερο κόμβου χ, ακολουθούν τον δείκτη με όνομα πεδίου f στον αντίστοιχο διαχρονικό κόμβο, επιλέγοντας ανάμεσα από διάφορους τέτοιους δείκτες, αυτόν με 34

την μέγιστη σφραγίδα έκδοσης που όμως δεν είναι μεγαλύτερη από i. Η αναπαράσταση ενός βήματος εφήμερης πρόσβασης σε μία διαχρονική δομή, χρειάζεται Ο(1) χρόνο. Οταν αναπαριστούν μία διεργασία εφήμερης ενημέρωσης, διατηρούν ένα σετ S κόμβων οι οποίοι έχουν αντιγραφεί. Θεωρείστε την διεργασία ενημέρωσης ως i. Ξεκινούν την αναπαράσταση αυτής της διεργασίας, προετοιμάζοντας το S να είναι άδειο. Αναπαριστούν τα βήματα εφήμερης πρόσβασης όπως περιγράφηκε πιο πάνω. Οταν το εφήμερο βήμα ενημέρωσης δημιουργήσει ένα νέο κόμβο, τότε δημιουργούν ένα αντίστοιχο, καινούριο και συνεχιζόμενο κόμβο με μία σφραγίδα έκδοσης του i και όλους τους αυθεντικούς δείκτες, μηδενικούς. Οταν το εφήμερο βήμα ενημέρωσης αλλάξει ένα πεδίο πληροφορίας σε ένα εφήμερο κόμβο χ, τότε ελέγχουν τον αντίστοιχο διαχρονικό κόμβο Χ. Εάν το χ έχει σφραγίδα έκδοσης i, αλλάζουν απλώς το κατάλληλο πεδίο στο 2. Εάν Χ έχει σφραγίδα έκδοσης μικρότερη του i, αλλά έχει ένα αντίγραφο του c(x)(το οποίο πρέπει να έχει σφραγίδα έκδοσης του i), αλλάζουν το κατάλληλο πεδίο στο c(x). Εάν το Χ έχει σφραγίδα έκδοσης μικρότερης του i αλλά δεν έχει αντίγραφο, τότε δημιουργούν ένα αντίγραφο c(x) του Χ. με την σφραγίδα έκδοσης i, κάνουν το αντίγραφο δείκτη του χ να δείχνει σε εκείνο και το γεμίζουν με τις πιο πρόσφατες τιμές των πεδίων πληροφοριών του χ, τα οποία, εξαιρώντας την νέα τιμή του αλλαγμένου πεδίου, μπορεί να αποκτηθεί από 2. Επίσης προσθέτουν στο c(x), δείκτες που αντιστοιχούν στις πιο πρόσφατες τιμές των πεδίων δείκτη του χ. Αυτό προϋποθέτει την ενημέρωση των αντίστροφων δεικτών και γίνεται όπως ακολουθεί: Υποθέτοντας ότι το Χ περιέχει ένα δείκτη σε ένα κόμβο y ως την πιο πρόσφατη έκδοση του πεδίου f. Αποθηκεύουν σε αυθεντικό πεδίο δείκτη f ενός κόμβου c(x) έναν δείκτη στο y ή στο αντίγραφο c(y) του y εάν το y έχει αντιγραφεί. Διαγράφουν τον δείκτη στο χ σε ένα από τα προκατεχόμενα πεδία του y και αποθηκεύουν έναν δείκτη στο c(x) στο προκατεχόμενο πεδίο του y ή του c(y), όπως είναι απαραίτητο. Μόλις το c(x) έχει όλα του τα αρχικά πεδία δεικτών συμπληρωμένα, προσθέτουν χ στο σετ των S των αντιγραμμένων κόμβων. Η αναπαράσταση ενός βήματος εφήμερης ανανέωσης που αλλάζει ένα πεδίο δείκτη είναι πάνω κάτω σαν την αναπαράσταση ενός βήματος που αλλάζει ένα πεδίο πληροφοριών. Εάν το χ είναι εφήμερος κόμβος, στον οποίο 35

η αλλαγή γίνεται, εξετάζουν το αντίστοιχο διαχρονικό κόμβο χ, Εάν το χ έχει σφραγίδα έκδοσης μικρότερη του i αλλά έχει ένα αντίγραφο c(x), τότε αλλάζουν το κατάλληλο αυθεντικό πεδίο δείκτη στο c(x). Εάν το χ έχει σφραγίδα έκδοσης μικρότερη του i, αλλά δεν έχει αντίγραφο, ελέγχουν εάν το x έχει χώρο για έναν επιπλέον δείκτη. Εάν ναι, τότε αποθηκεύουν τον κατάλληλο νέο δείκτη στο x, μαζί με το κατάλληλο όνομα πεδίου και μία σφραγίδα έκδοσης του i. Εάν όχι, δημιουργούν ένα νέο αντίγραφο του c(x) του x, το συμπληρώνουν όπως περιγράφθηκε πιο πάνω και προσθέτουν χ στο S. Κατά την διάρκεια της αναπαράστασης, οποιαδήποτε στιγμή εγκαθιστούν έναν δείκτη σε ένα διαχρονικό κόμβο χ, σιγουρεύονται ότι δείχνει προς ένα ζωντανό κόμβο. Πιο συγκεκριμένα, ένα το δείκτης δείχνει το y αλλά το y έχει ένα αντίγραφο c(y), τοποθετούν μέσα στο χ ένα δείκτη στο c(y) αντί για y. Επίσης, οποιαδήποτε στιγμή γίνεται η εγκατάσταση ενός δείκτη, ενημερώνουν τους αντίστροφους δείκτες κατάλληλα. Μετά την αναπαράσταση όλων των βημάτων της διεργασίας ενημέρωσης, επεξεργάζονται το σετ S ώστε να κάνουν τους ζωντανούς δείκτες να δείχνουν προς τους ζωντανούς κόμβους. Αυτή η επεξεργασία αποτελείται από την επανάληψη του ακόλουθου βήματος, μέχρι το S να αδειάσει. Ενημερώστε τους δείκτες. Α- φαιρέστε κάθε κόμβο y από το S. Για κάθε κόμβο χ που υποδεικνύεται από ένα προκάτοχο δείκτη στο y, βρείτε στο χ το ζωντανό δείκτη στο y. Εάν αυτός ο δείκτης έχει σφραγίδα έκδοσης μικρότερη του i, προσθέστε μία έκδοση i δείκτη από το χ στο c(y), αντιγράφοντας στο όπως περιγράφθηκε παραπάνω εάν δεν υπάρχει χώρος για αυτόν τον δείκτη στο χ. Εάν το χ αντιγραφεί, προσθέστε χ στο S. Οταν εγκαταστείτε δείκτες, ενημερώστε τους αντίστροφους δείκτες κατάλληλα. Για να ολοκληρώσουν την διεργασία ενημέρωσης, αποθηκεύουν τις νεότερες τιμές των δεικτών πρόσβασης στις i θέσεις των διατάξεων πρόσβασης. Τότε είναι έτοιμοι να ξεκινήσουν την επόμενη διεργασία. 36

2.5 Πλήρης Διαχρονικότητα Σε αυτή την ενότητα θα ασχοληθούν με τοπρόβλημα της πλήρης διαχρονικότητας, την μετατροπή της εφήμερης δομής σε πλήρως διαχρονική. Με την προσέγγιση του παχύ κόμβου θα μετατρέψουν μία εφήμερη συνδεδεμένη δομή σε πλήρως διαχρονική με κόστος χώρου, στην χειρότερη περίπτωση, Ο(1) ανά βήμα ανανέωσης και ένα κόστος χρόνου Ο(log m) στην χειρότερη περίπτωση, ανά βήμα πρόσβασης ή ανανέωσης. Με μία παραλλαγή της μεθόδου αντιγραφής κόμβου η οποία ονομάζεται διαχωρισμός κόμβου, μπορούν να μετατρέψουν μία εφήμερη συνδεδεμένη δομή συνεχούς φραγμένων εισερχομένων δεικτών, σε πλήρως διαχρονική με κόστος χρόνου απόσβεσης και χώρου Ο(1) και στην χειρότερη περίπτωση Ο(1) κόστος χρόνου ανά βήμα πρόσβασης. Το πρώτο πρόβλημα που αντιμετωπίζουν με την πλήρως διαχρονική δομή είναι πως ενώ οι διάφορες εκδόσεις μίας μερικά διαχρονικής δομής έχουν μία φυσική γραμμική διάταξη, οι εκδόσεις μίας πλήρως διαχρονικής δομής είναι μόνο μερικώς διατεταγμένες. Η μερική διάταξη καθορίζεται από ένα ριζωμένο δέντρο έκδοσης, του οποίου οι κόμβοι είναι εκδόσεις (0 μέχρι m), με έκδοση i και μητρική έκδοση j εάν η έκδοση j αποκτάται μέσω της ανανέωσης της έκδοσης i. Η έκδοση 0 είναι η ρίζα του δέντρου έκδοσης. Η αλληλουχία ανανεώσεων οι οποίες προκαλούν την έκδοση i, αντιστοιχεί με το μονοπάτι του δέντρου έκδοσης από την ρίζα στο i. Δυστυχώς, η έλλειψη μίας γραμμικής διάταξης στις εκδόσεις, κάνει προβληματική την πλοήγηση σε μία πλήρως διαχρονική δομή μέσω αναπαράστασης. Για να εξαλείψουν αυτή την δυσκολία, θα επιβάλλουν μία συνολική διάταξη στις εκδόσεις που συμβαδίζουν με την μερική διάταξη η οποία ορίζεται από το δέντρο έκδοσης. Θα αναπαραστήσουν αυτή την συνολική διάταξη μέσω μίας λίστας εκδόσεων, σε κατάλληλη σειρά. Αυτό το αποκαλούν λίστα έκδοσης. Οταν μία καινούρια έκδοση δημιουργείται, εισάγουν Ι στην λίστα έκδοσης αμέσως μετά τον «γονέα» της (στο δέντρο έκδοσης). Η λίστα που δημιουργείται μέσω του αποτελέσματος, καθορίζει μία προσειρά στο δέντρο έκδοσης, καθώς μπορεί εύκολα να αποδειχθεί μέσω επαγωγής. Αυτό υποδηλώνει πως η λίστα έκδοσης έχει την ακόλουθη καίρια ιδιότητα: για οποιαδήποτε έκδοση i, οι απόγονοι του i στο δέντρο έκδοσης εμφανίζονται δια- 37

δοχικά στη λίστα έκδοσης, ξεκινώντας με το i. Θα αναφερθούν στην κατεύθυνση προς την αρχή (front) της λίστας έκδοσης από ένα δεδομένο αντικείμενο ως προς τα αριστερά (leftward) και την κατεύθυνση προς το τέλος (back) της λίστας ως προς τα δεξιά (leftward). Επιπρόσθετα ως προς την διεξαγωγή εισαγωγών στην λίστα έκδοσης, χρειάζονται να είναι ικανοί να προσδιορίσουν, με δεδομένες δύο εκδόσεις i και j, εάν το i προηγείται ή ακολουθεί το j στην λίστα έκδοσης. Το πρόβλημα με την διάταξη λίστας, έχει αναλυθεί στις εξής εργασίες [10, 14, 18, 19, 25]. Εχοντας ασχοληθεί με ένα προκαταρκτικό τρόπο σχετικά με το θέμα της πλοήγησης, θα εξετάσουν πώς να χρησιμοποιούνται οι παχείς κόμβοι για την μετατροπή μίας συνδεδεμένης δομής σε πλήρως διαχρονική. Ουσιαστικά, κάθε παχύς κόμβος περιέχει τα ίδια πεδία όπως και ένας εφήμερος κόμβος (που αποθηκεύει αυθεντικές τιμές πεδίου), καθώς επίσης, χώρο και ένα αυθαίρετο νούμερο επιπλέων τιμών πεδίου, καθένα με ένα όνομα πεδίου και μία σφραγίδα έκδοσης, καθώς και χώρο για την σφραγίδα έκδοσης και τον ίδιο τον κόμβο. Η πλοήγηση μέσα στην διαχρονική δομή είναι ίδια όπως και στην περίπτωση μίας μερικώς διαχρονικής, ε- κτός από το γεγονός πως οι εκδόσεις που συγκρίνονται σε σχέση με την θέση τους στην λίστα έκδοσης, αντί να συγκρίνονται σε σχέση με τις αριθμητικές τιμές τους. Για αυτό, για να βρουν την τιμή που αντιστοιχεί σε αυτό, στο πεδίο f στην έκδοση Ι ενός εφήμερου κόμβου x, βρίσκουν στον παχύ κόμβο x που αντιστοιχεί την x τιμή πεδίου f του οποίου η σφραγίδα έκδοσης είναι δεξιότερα στην λίστα έκδοσης αλλά όχι δεξιά της i. Η ενημέρωση διαφέρει ελάχιστα από αυτό που γίνεται στην περίπτωση μίας μερικώς διαχρονικής δομής, διότι η εισαγωγή νέων εκδόσεων στην μέση της έκδοσης, το κάνει γενικότερα απαραίτητο να γίνει αποθήκευση δύο ενημερωμένων τιμών πεδίου ανά βήμα ανανέωσης, αντί για ένα. Ξεκινούν την διεργασία ενημέρωσης i προσθέτοντας i στην λίστα έκδοσης όπως περιγράφθηκε πιο πάνω. Οταν ένα εφήμερο βήμα ανανέωσης δημιουργεί έναν νέο εφήμερο κόμβο, δημιουργούν ένα αντίστοιχο νέο παχύ κόμβο με σφραγίδα έκδοσης i, συμπληρώνοντας τα αρχικά πεδία του κατάλληλα. Υποθέστε πως ένα εφήμερο βήμα ενημέρωσης αλλάζει το πεδίο f ενός εφήμερου κόμβου x. Το i+ δηλώνει την έκδοση μετά το i στην λίστα έκδοσης, εάν βέβαια, υπάρχει τέτοια έκδοση. Για να αναπαραστήσουν το βήμα ενημέρωσης, εντοπίζουν στο παχύ κόμβο x που αντιστοιχεί στις x τιμές 38

v 1 και v 2 του πεδίου f, ώστε το v 1 να έχει δεξιότερη σφραγίδα έκδοσης και όχι δεξιά του i και το v 2 να έχει αριστερότερη σφραγίδα έκδοσης δεξιά του i (στην λίστα έκδοσης). Ας είναι το i 1 και το i 2 να είναι οι σφραγίδες έκδοσης του v 1 και του v 2 αντίστοιχα. Υπάρχουν δύο περιπτώσεις: 1. Εάν i 1 = i, αντικαθιστούν το v 1, με την κατάλληλη νέα τιμή του πεδίου f. Εάν επιπρόσθετα το i είναι η σφραγίδα έκδοσης του κόμβου x, το v 1 είναι μηδενικός δείκτης και το i+ υπάρχει, αποθηκεύουν στο x έναν μηδενικό δείκτη με όνομα πεδίου f και σφραγίδα έκδοσης i+, εκτός και αν το x περιέχει ήδη έναν τέτοιο μηδενικό δείκτη. 2. Εάν i 1 < i, προσθέτουν την κατάλληλη νέα τιμή πεδίου f στον κόμβο x, με ένα όνομα πεδίου f και σφραγίδα έκδοσης i. Επιπρόσθετα εάν i 1 < i και i+ < i 2 (ή εάν το i+ υπάρχει αλλά δεν υπάρχει το i 2 ), προσθέτουν x σε ένα νέο αντίγραφο του v 1, με όνομα πεδίου f και σφραγίδα έκδοσης i+. Αυτό εγγυάται πως η νέα τιμή πεδίου f θα χρησιμοποιηθεί μόνο στην έκδοση i και πως η τιμή v 1, θα χρησιμοποιείται στις εκδόσεις από i+ και άνω αλλά όχι περιέχοντας την i 2, στην λίστα έκδοσης. Στο τέλος της διεργασίας ενημέρωσης, αποθηκεύουν τις τρέχουσες τιμές των δεικτών πρόσβασης στις i-οστής θέσεις των παρατάξεων πρόσβασης. (Οι τρέχουσες τιμές των δεικτών πρόσβασης είναι εκείνες των γονεικών του ι στο δέντρο έκδοσης, όπως τροποποιήθηκε κατά την διάρκεια της διεργασίας ενημέρωσης. Ας είναι το v μία τιμή σε ένα πεδίο f έχοντας σφραγίδα έκδοσης i σε ένα παχύ κόμβο x. Ορίζουν το έγκυρο διάστημα του v να είναι το διάστημα των εκδόσεων στην λίστα έκδοσης από το i μέχρι και πιο πάνω αλλά χωρίς να περιέχει την επόμενη σφραγίδα έκδοσης μιας τιμής πεδίου f στο x, ή πιο πάνω και περιέχοντας την τελευταία έκδοση από την λίστα έκδοσης, εάν δεν υπάρχει τέτοια επόμενη σφραγίδα έκδοσης. Τα έγκυρα διαστήματα των τιμών ενός πεδίου f σε ένα παχύ κόμβο x, διχοτομούν το διάστημα των εκδόσεων, από την σφραγίδα έκδοσης x μέχρι και την τελευταία έκδοση. Η ορθότητα της μεθόδου του παχύ κόμβου μπορεί εύκολα να καθιερωθεί χρησιμοποιώντας μία απόδειξη μέσω επαγωγής στον αριθμό βημάτων 39

ενημέρωσης, ώστε να δείξει πως η κατάλληλη αντιστοιχία ανάμεσα στην εφήμερη δομή και στην διαχρονική δομή, διατηρείται. Η μέθοδος του παχύ κόμβου παρέχει ολική διαχρονικότητα με την ίδια ασυμπτωματική αποδοτικότητα όπως και παρέχει μερική διαχρονικότητα. Ουσιαστικά, το κόστος χώρου ανά βήμα ενημέρωσης, στην χειρότερη περίπτωση, είναι Ο(1) και στην χειρότερη περίπτωση, το κόστος χρόνου ανά βήμα ανανέωσης ή πρόσβασης είναι Ο(log m), προϋποθέτοντας πως κάθε σετ τιμών πεδίου σε ένα παχύ κόμβο είναι αποθηκευμένο σε ένα δέντρο αναζήτησης, που ορίζεται από την σφραγίδα έκδοσης. Ενα πιο ακριβές όριο είναι Ο(log h) χρόνος ανά πρόσβαση η βήμα ε- νημέρωσης, οπού η είναι ο μεγαλύτερος αριθμός αλλαγών που γίνονται σε έναν εφήμερο κόμβο. Οπως και στην περίπτωση της μερικής διαχρονικότητας, η μέθοδος του παχύ κόμβου εφαρμόζεται ακόμα και αν τους εισερχόμενους δείκτες των εφήμερων κόμβων δεν είναι δεσμευμένα από μια συνεχή. Βελτιώνουν πάνω στην μέθοδο του παχύ κόμβου, χρησιμοποιώντας μία παραλλαγή της αντιγραφής κόμβου. Θα αποκαλέσουν την παραλλαγή αυτή, διαχωρισμό κόμβου, εφόσον μοιάζει με την μέθοδο του διαχωρισμού κόμβου που χρησιμοποιήθηκε για να πραγματοποιηθούν εισαγωγές στα Β-δέντρα. Η βασική διαφορά ανάμεσα στον διαχωρισμό κόμβου και στην αντιγραφή κόμβου, είναι πως ο πρώτος, όταν ένας κόμβος υπερχειλίζει, ένα νέο αντίγραφο δημιουργείται και χονδρικά, περίπου οι μισοί επιπλέον δείκτες μετακινούνται από το παλιό αντίγραφο στο καινούριο, αφήνοντας έτσι χώρο στα παλιά και στα νέα αντίγραφα για μέλλουσες ενημερώσεις, εξίσου. Η αποδοτική εκτέλεση του διαχωρισμού κόμβου είναι πιο περίπλοκη από την αντιγραφή κόμβου, κυρίως επειδή η σωστή συντήρηση των αντίστροφων δεικτών, χρειάζεται φροντίδα. Επίσης, οι δείκτες πρόσβασης για παλιές εκδόσεις, πρέπει κάποιες φορές να αλλαχθούν. Αυτό απαιτεί την συντήρηση των αντίστροφων δεικτών για δείκτες πρόσβασης καθώς επίσης και για τους δείκτες κόμβου προς κόμβο. 40

3 Προηγούμενες Εργασίες 3.1 Order Preserving Encryption for Numeric Data Η κρυπτογράφηση είναι μια καθιερωμένη τεχνολογία για την προστασία των ευαίσθητων δεδομένων. Ωστόσο, όταν κρυπτογραφούνται τα δεδομένα δεν μπορούν πλέον να διασταυρωθούν εύκολα πέρα από ακριβείς αντιστοιχίες. Στην εργασία [7] παρουσιάζουν ένα σύστημα κρυπτογράφησης που επιτρέπει κάθε λειτουργία σύγκρισης να γίνεται άμεσα στα κρυπτογραφημένα δεδομένα. Τα δεδομένα που έρχονται από μια σειρά αναζήτησης είναι ακριβή και δεν υπάρχουν εσφαλμένα αρχεία. Το σχέδιο που δίνεται έχει σχεδιαστεί για να εφαρμοστεί σε περιβάλλοντα που ο επιτιθέμενος μπορεί να αποκτήσει πρόσβαση σε μια κρυπτογραφημένη βάση, αλλά δεν έχει πληροφορίες για τον προηγούμενο τομέα, όπως η κατανομή των τιμών και δεν μπορεί να κρυπτογραφήσει ή να αποκρυπτογραφήσει αυθαίρετες τιμές της επιλογής του. Η κρυπτογράφηση είναι ισχυρή κατά την εκτίμηση της πραγματικής αξίας σε τέτοια περιβάλλοντα. Η βασική ιδέα του OPES είναι να λάβει σαν είσοδο προβλέπεται διανομή στόχου από ένα χρήστη και μεταμορφώσει τις απλού κειμένου τιμές κατά τέτοιο τρόπο ώστε η μετατροπή διατηρεί την τάξη, ενώ τα μετασχηματισμένες τιμές ακολουθούν την κατανομή στόχου. Για να κατανοήσουμε τη διαίσθηση πίσω από τον αλγόριθμο OPES, εξετάστε το ακόλουθο σχήμα κρυπτογράφησης: Δημιουργούν P μοναδικές τιμών από μίαν καθορισμένο από το χρήστη διανομή στόχου και τους ταξινομούν σε έναν πίνακα Τ. Η κρυπτογραφημένη τιμή c i της p i Στη συνέχεια δίνεται από c i = T [i]. Δηλαδή, η i τιμή απλού κειμένου στην ταξινομημένη λίστα P τιμών απλού κειμένου είναι κρυπτογραφημένη σε αριθμό i στην ταξινομημένη λίστα P τιμών που λαμβάνονται από την κατανομή στόχου. Η αποκρυπτογράφηση των c i απαιτεί μια αναζήτηση εντός ενός αντίστροφου χάρτη. Εδώ Τ είναι το κλειδί κρυπτογράφησης που πρέπει να κρατηθεί μυστικό. Σαφώς, αυτό το καθεστώς δεν αποκαλύπτει οποιαδήποτε πληροφορία σχετικά με τις αρχικές τιμές, εκτός από τη διάταξη, δεδομένου ότι οι κρυπτογραφημένες τιμές παρήχθησαν αποκλειστικά από την καθορισμένη από τον χρήστη διανομή 41

στόχου, χωρίς να χρησιμοποιούν οποιαδήποτε πληροφορία από την αρχική κατανομή. Ακόμα και αν ένας αντίπαλος έχει όλες τις κρυπτογραφημένες τιμές, δεν μπορεί να συναγάγει το Τ από αυτές τις τιμές. Με την κατάλληλη επιλογή διανομής στόχου, ο αντίπαλος μπορεί να αναγκαστεί να κάνει μεγάλα λάθη εκτίμησης. Αυτό το απλό σύστημα, ενώ διδακτικό, έχει τις ακόλουθες αδυναμίες για να μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση μεγάλων βάσεων δεδομένων: Το μέγεθος του κλειδιού κρυπτογράφησης είναι δύο φορές τόσο μεγάλο όσο ο αριθμός των μοναδικών τιμών στη βάση δεδομένων. Οι ενημερώσεις είναι προβληματικές. Κατά την προσθήκη μιας νέας τιμής, όπου p i < p < p i + 1 θα πρέπει να επανακρυπτογραφήσουν όλα τα p i, j > i Ο Opes έχει σχεδιαστεί έτσι ώστε το αποτέλεσμα της κρυπτογράφησης είναι στατιστικά δυσδιάκριτο απο εκείνο που λαμβάνεται χρησιμοποιώντας το ανωτέρω σχήμα, παρέχοντας έτσι το ίδιο επίπεδο ασφάλειας, ενώ αφαιρούν τις ελλείψεις του. Οταν κρυπτογραφούν μια βάση δεδομένων P, ο OPES κάνει χρήση όλων των plaintext τιμών που υπάρχουν στο p, και χρησιμοποιεί μια βάση δεδομένων των τιμών του δείγματος από την κατανομή-στόχου. Μόνο η κρυπτογραφημένη βάση δεδομένων C είναι αποθηκευμένο στο δίσκο. Ταυτόχρονα, ο OPES δημιουργεί επίσης κάποιες βοηθητικές πληροφορίες Κ, η οποίες χρησιμοποιούν το σύστημα της βάσης δεδομένων για την αποκρυπτογράφηση κωδικοποιημένων τιμών ή την κρυπτογράφηση νέες τιμών. Ετσι το Κ εξυπηρετεί τη λειτουργία του κλειδιού κρυπτογράφησης. Αυτές οι βοηθητικές πληροφορίες διατηρούνται κρυπτογραφημένες χρησιμοποιώντας συμβατικές τεχνικές κρυπτογράφησης. Ο OPES λειτουργεί σε τρία στάδια: Μοντέλο : η είσοδος και η κατανομή στόχου μοντελοποιούνται ως κομμάτια γραμμικού sp-line. Ισοπέδωση : η plaintext database P μετατρέπεται σε μια επίπεδη βάση δεδομένων F όπου οι τιμές στην F είναι ομοιόμορφα κατανεμημένες. Μετασχηματισμός : Η επίπεδη βάση δεδομένων F μετασχηματίζεται στην 42

κρυπτογραφημένη βάση δεδομένων C όπου οι τιμές στο C είναι κατανεμημένες με βάση την κατανομή στόχου. Σημειώνουν ότι, p i < p j => f i < f j => c i < c j Μοντελοποίηση των κατανεμητών Οι τεχνικές την μοντελοποίηση κατανομών δεδομένων έχουν μελετηθεί εκτενώς στη βιβλιογραφία των βάσεων δεδομένων, στο πλαίσιο της εκτίμησης του κόστους των διαφορετικών σχεδίων εκτέλεσης αναζήτησης. Οπως αναφέρθηκε, υπάρχουν δύο μεγάλες κατηγορίες τεχνικών : ιστόγραμμα με βάση ότι η σύλληψη των στατιστικών πληροφοριών σχετικά με την διανομή μέσω των μετρητών για ένα συγκεκριμένο αριθμό κάδων, καθώς και για τις παραμέτρους ενός δεδομένου τύπου συνάρτησης. Πειραματίστηκαν με διάφορες τεχνικές ιστογράμματος που βασίζονται, συμπεριλαμβανομένων των ίσο-βάθους, ίσο-πλάτους, και οι κυματοειδείς μέθοδοι, αλλα διαπίστωσαν ότι οι πεπλατυσμένες τιμές που ελήφθησαν δεν ήταν ομοιόμορφα κατανεμημένες, εκτός εάν ο επιλεγμένος αριθμός κάδων είναι υπερβολικά μεγάλος. Η κύρια πηγή του προβλήματος ήταν η παραδοχή ότι η κατανομή είναι ομοιόμορφη σε κάθε κάδο. Η παραμετρία είναι κατάλληλη για διανομές κλειστής μορφής, αλλά οδηγεί σε κακές εκτιμήσεις για τις παράτυπες κατανομές, η οποία αναμένουν να είναι ο κανόνας στην εφαρμογή τους. Αυτοί ως εκ τούτου, κατέφυγαν σε ένα συνδυασμό των παραμετρικών τεχνικών ιστογράμματος. Πρωτα κατακερματίζουν τις τιμές δεδομένων σε κάδους και στη συνέχεια το μοντέλο της κατανομής σε κάθε κάδο ως γραμμική spline. Το spline για έναν κάδο [p i, p h ) είναι απλά η γραμμή που συνδέει τις πυκνότητες στα δύο τελικά σημεία του κάδου. Ισοπέδωση Η γενική ιδέα της Ισοπέδωσης είναι να αντιστοιχίστεί ένας plaintext κάδος Β σε έναν κάδο B f στο πεπλατυσμένο χώρο κατά τέτοιο τρόπο ώστε το μήκος του B f να είναι ανάλογο με τον αριθμό των τιμών που υπάρχουν στο B. Ετσι, οι πυκνοί plaintext κάδοι θα τεντωθούν και οι αραιοί κάδοι θα συμπιεστούν. Οι τιμές μέσα σε ένα κάδο χαρτογραφούνται κατά τέτοιο τρόπο ώστε η πυκνότητα να είναι ομοιόμορφη σε επίπεδους κάδους Δεδομένου ότι οι πυκνότητες είναι ομοιόμορφες 43

στο inter-bucket και intra-bucket, οι τιμές στην πεπλατυσμένη βάση δεδομένων θα πρέπει να κατανέμονται ομοιόμορφα. Ορίζουμε την επόμενη λειτουργία χαρτογράφησης που επιτυγχάνει αυτούς τους στόχους. Μετασχηματίσμος Το στάδιο μετασχηματισμού είναι σχεδόν μια κατοπτρική εικόνα του σταδίου Ισοπέδωσης. Λαμβάνοντας υπόψη ένα ομοιόμορφα κατανεμημένο σύνολο ισοπεδωμένων τιμών, θέλουν να τους αντιστοιχίσουν στην κατανομή-στόχου. Ενας ισοδύναμος τρόπος σκέψης για το πρόβλημα είναι ότι θέλουμε να ισοπεδώσουμε την κατανομή-στόχου σε μια ομοιόμορφη κατανομή, διασφαλίζοντας παράλληλα ότι η διανομή λαμβάνεται έτσι «τυπικά» με την ομοιόμορφη κατανομή και με την ισοπέδωση της plaintext διανομής. Εχουμε ήδη στη διάθεσή τους κάδους για την plaintext κατανομή. Στάδιο 1. Bucketize τη κατανομή - στόχου, ανεξάρτητα από την plaintext κατανομή. Στάδιο 2. Στη συνέχεια αλλάζουν την κλίμακα της κατανομής στόχου με τέτοιο τρόπο ώστε το πλάτος της ομοιόμορφης κατανομής που παράγεται από την ισοπέδωση της κλίμακας κατανομής - στόχου γίνεται ίσο με το πλάτος της ομοιόμορφης κατανομής που παράγεται από την ισοπέδωση της plaintext κατανομής. Στάδιο 3. Θα αναφέρονται στο εξής με την διαβαθμισμένη κατανομή - στόχου ως η κρυπτογραφημένη κατανομή. Επεκτάσεις, ένας IEEE-754 ακρίβειας αριθμός κινητής υποδιαστολής εκπροσωπείται σε 32 bits. Η ερμηνεία των θετικών τιμών κινητής υποδιαστολής απλά ως ακέραιοι 32-bit διατηρεί την τάξη. Ετσι, ο opes μπορεί να χρησιμοποιηθεί άμεσα για την κρυπτογράφηση θετικών τιμών κινητής υποδιαστολής. Αρνητικές τιμές κινητής υποδιαστολής, ωστόσο, έχουν μια αντίστροφη σειρά, όταν ερμηνεύονται ως ακέραιοι. Παρ όλα αυτά, η σειρά τους μπορεί να διατηρηθεί με την αφαίρεση αρνητικών τιμών από τη μεγαλύτερη αρνητική. Η μονάδα ερωτημάτων κάνει αυτή την προσαρμογή στις εισερχόμενες σταθερές του ερωτήματος και η προσαρ- 44

μογή αναιρείται πριν επιστρέψει τα αποτελέσματα του ερωτήματος. Ενα παρόμοιο σύστημα χρησιμοποιείται για την κρυπτογράφηση τιμών κινητής υποδιαστολής διπλής ακρίβειας 64-bit Ενας αντίπαλος μπορεί να χρησιμοποιήσει τα αντίγραφα για να μαντέψει τη διανομή ενός τομέα, ιδιαίτερα αν η κατανομή είναι εξαιρετικά ασύμμετρη. Ομοίως, εάν ο αριθμός των διακριτών τιμών σε έναν τομέα είναι μικρός (π.χ., ημέρα του μήνα), μπορεί να χρησιμοποιηθεί για να μαντέψει τον τομέα. Η λύση για τα δύο αυτά προβλήματα είναι να χρησιμοποιήσετε ένα homophonic σύστημα στο οποίο μια plaintext τιμή αντιστοιχίζεται σε ένα φάσμα κρυπτογραφημένων τιμών. Η βασική ιδέα είναι να τροποποιήσει την Ισοπέδωση (στάδιο 1), ως ακολούθως. Πρώτον, κατά τον υπολογισμό των παραγόντων κλίμακας για κάθε κάδο χρησιμοποιώντας το περιορισμό ότι ο κάδος πρέπει να αντιστοιχίζεται σε ένα χώρο ανάλογο με τον αριθμό των σημείων στο κάδο, συμπεριλαμβάνουν τα αντίγραφα του αριθμού των σημείων. Ετσι, οι περιοχές όπου τα αντίγραφα είναι διαδεδομένα θα απλώνεται αναλογικά, και γειτονικές τιμές plaintext σε αυτές τις περιοχές θα πρέπει να αντιστοιχίζονται με ισοπέδωμένες τιμές που έχουν σχετικά μεγάλη απόσταση μεταξύ τους. Εστω ότι χρησιμοποιώντας τον τρέχοντα αλγόριθμο, μια plaintext τιμή p χαρτογραφείται σε μια τιμή f στον επίπεδο χώρο, και το p + 1 χαρτογραφείται σε f. Οταν κρυπτογράφούν το p, μπορούν τώρα να επιλέξουν τυχαία μια τιμή από το διάστημα [f, f ). Ετσι, οι κρυπτογραφημένες τιμές του p θα διαχέονται ομοιόμορφα στο διάστημα [f, f ). Σε συνδυασμό με την ομοιομορφία intra-bucket που δημιουργούνται από τις γραμμικές splines και την ομοιομορφία μεταξύ κάδου από τους παράγοντες κλίμακας, αυτό θα έχει ως αποτέλεσμα την ομοιόμορφη ισοπεδωμένη κατανομή είναι ομοιόμορφη ακόμη και αν η plaintext διανομή είχε μια ασύμμετρη κατανομή των αντιγράφων. Αυτή είναι η μόνη αλλαγή στον αλγόριθμο, έχοντας κρυμμένα τα διπλότυπα στο στάδιο ισοπεδώσης, καμία αλλαγή δεν είναι απαραίτητη στο στάδιο του μετασχηματισμού. Σύνοψιζοντας, με τη δραματική αύξηση στην ποσότητα των δεδομένων που συλλέγονται και αποθηκεύονται σε βάσεις δεδομένων, έχει γίνει ζωτικής σημασίας η ανάπτυξη αποτελεσματικών τεχνικών για την προστασία των ευαίσθητων δεδομένων από κακή χρήση. Οι μηχανισμοί ελέγχου πρόσβασης που χρησιμο- 45

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

3.2 Partially Persistent Data Structures of Bound Degree with Constant Update Time Σε αυτή την έρευνα [12] μελετάνε το πρόβλημα της δημιουργίας διαχρονικά φραγμένων βάσεων δεδομένων. Η μέθοδος αντιγραφής κόμβων Driscoll et al παρατείνεται ώστε ενημερώσεις να μπορούν να εκτελεστούν σε σταθερό χρόνο χειρότερης περίπτωσης με το μοντέλο μηχανήματος δείκτη. Το αποτέλεσμα παρουσιάζεται με την χρήση ενός δυναμικού παιχνιδιού στρατηγικής δυο παιχτών με βότσαλα από τους Dietz, Raman σε γραφήματα. Σε αυτή την έρευνα περιγράφουν μια μέθοδο δημιουργίας μερικώς διαχρονικών βάσεων δεδομένων. Μια μερικώς διαχρονική βάση δεδομένων είναι μια βάση δεδομένων στην οποία παλιότερες εκδόσεις της βάσης έχουν αποθηκευτεί και μπορεί πάντα να επιθεωρηθούν. Ωστόσο μόνο οι ποιο καινούργιες εκδόσεις μπορούν να τροποποιηθούν. Οι δομές δεδομένων θα περιγράφουν στο μοντέλο μηχανής δείκτη. Πχ. Αποτελούνται από τα αρχεία με ένα σταθερό αριθμό πεδίων το καθένα περιέχει ένα κομμάτι δεδομένων ή ένα δείκτη προς ένα άλλο αρχείο. Οι δομές δεδομένων μπορούν να προβληθούν ως γραφήματα με φραγμένους εξερχόμενους δείκτες. Στα παρακάτω, ο d υποδηλώνει τους φραγμένους εξερχόμενους δείκτες. Η κύρια υπόθεση είναι ότι οι δομές έχουν φραγμένους και τους εισερχόμενους δείκτες. Εστω ότι ο β τους υποδηλώνει. Δεν ικανοποιούν αυτές τις προϋποθέσεις όλες οι δομές δεδομένων άλλα μπορούν να μετατραπούν για να πληρούν αυτές : Αντικαθιστούν τους κόμβους από συγκλίνοντα δυαδικά ισορροπημένα δέντρα, έτσι ώστε όλα τα πρωτότυπα δείκτες που δείχνουν σε έναν κόμβο τώρα, αντί να δείχνουν τα φύλλα στο δέντρο που υποκαθίσταται στη δομή δεδομένων αντί του κόμβου και να αποθηκεύουν τις αρχικές πληροφορίες του κόμβου στην ρίζα του δέντρου. Η υπόθεση μπορεί τώρα να ικανοποιηθεί αφήνοντας το πολύ ένα σταθερό αριθμό δεικτών να δείχνει στο ίδιο φύλλο. Το μειονέκτημα αυτής της προσέγγισης είναι ότι ο χρόνος για να αποκτήσει πρόσβαση σε ένα κόμβο αυξάνεται από Ο(1) σε Ο(log b v ) όπου b v είναι το αρχικό όριο των φραγμένων εισερχομένων δεικτών του v. Οι κύριοι κανόνες του παιχνιδιού είναι ότι ο παίχτης I μπορεί να προσθέσει 47

ένα βότσαλο σε ένα αυθαίρετο κόμβο και ο παίχτης D μπορεί να αφαιρέσει όλα τα βότσαλα από ένα κόμβο παρέχεται τοποθετώντας ένα βότσαλο σε όλους τους προηγούμενους κόμβους. Ο στόχος του παιχνιδιού είναι να βρεθεί μια στρατηγική για τον παίκτη D που μπορεί να εγγυηθεί ότι ο αριθμός των βότσαλων σε όλους τους κόμβους να οριοθετείται από μια σταθερά Μ. Σε αυτή την έρευνα βελτιώνουν το όριο σε Μ = d + 2b με μια απλή διαφοροποίηση της πρωτότυπης στρατηγικής. Στην στατική περίπτωση (όπου το γράφημα δεν αλλάζει) παίρνουμε Μ = d + b. Το παιχνίδι των Dietz, Raman παίζεται σε ένα κατευθυνόμενο γράφημα G = ( V, E ) με φραγμένους εισερχόμενους και εξερχόμενους δείκτες. Χωρίς βλάβη της γενικότητας δεν επιτρέπουν την ύπαρξη του βρόχων και πολλαπλές ακμές. Σε κάθε κόμβο μια σειρά από βότσαλα σχετίζεται συμβολίζεται με Pv. Το δυναμικό παιχνίδι γραφημάτων είναι ένα παιχνίδι που οι δυο παίχτες Ι και D εναλλάσσονται για να παίξουν. Οι κινήσεις που μπορούν να πραγματοποιήσουν είναι οι εξής : Παίχτης Ι : να προσθέτει ένα βότσαλο σε ένα αυθαίρετο κόμβο v του γραφήματος ή καταργήσει μια υπάρχουσα ακμή (v,u) και να δημιουργήσει μια νέα ακμή (v,w) χωρίς να παραβιάσει τον περιορισμό των εισερχομένων δεικτών για w και τοποθετεί ένα βότσαλο στον κόμβο v. Παίχτης D: να μην κάνει τίποτα ή αφαιρέσει όλα τα βότσαλα από έναν κόμβο v και τοποθετήσει ένα νέο βότσαλο σε όλους τους προκατόχους του v. Στην ακόλουθη Zero(v) εκτελεί αυτή τη λειτουργία. Ο στόχος του παιχνιδιού είναι να δείξει ότι υπάρχει μια σταθερά Μ και μια στρατηγική για τον παίκτη Ι, έτσι ώστε ό, τι παίκτης που έχει το μέγιστο αριθμό των βότσαλων σε κάθε κόμβο, μετά την κίνηση του παίκτη D οριοθετείται από Μ. Κατά τη στατική έκδοση του παιχνιδιού ο παίκτης Ι μπορεί να κάνει μόνο τις κινήσεις του 1ου τύπου. Η ύπαρξη στρατηγικής για τον παίκτη D παρουσιάστηκε 48

στο 1, αλλά η δεδομένη στρατηγική δεν θα μπορούσε να εφαρμοστεί αποτελεσματικά (π.χ. ο κόμβος v στο (d) δεν θα μπορούσε να βρίσκεται σε χρόνο Ο(1). Θεώρημα 2 (Dietz, Raman) Μια στρατηγική για τον παίχτη D υπάρχει που δημιουργεί M =O(b+d). Περιγράφουν τώρα τη νέα τους στρατηγική για τον παίκτη D. Ξεκινάνε με μερικούς ορισμούς. Εχουν συνδέσει τις ακόλουθες συμπληρωματικές πληροφορίες με το γράφημα 8. Οι άκρες είναι είτε μαύρες ή άσπρες. Οι κόμβοι έχουν το πολύ μια εισερχόμενη λευκή άκρη. Δεν υπάρχουν λευκοί κύκλοι. Οι κόμβοι είναι είτε μαύροι είτε άσπροι. τουλάχιστον μια εισερχόμενη λευκή άκρη. Κόμβοι που είναι άσπροι έχουν Οι ορισμοί δίνουν με φυσικό τρόπο μια αύξηση σε ένα μέρος των κόμβων σε συνιστώσες: δύο κόμβους που συνδέονται με μια λευκή άκρη ανήκουν στην ίδια συνιστώσα. Φαίνεται εύκολα ότι μια συνιστώσα είναι ένα δέντρο με ρίζα από λευκές άκρες με μια μαύρη ρίζα και όλους τους άλλους κόμβους λευκούς. Ενας ενιαίος μαύρος κόμβος χωρίς παρακείμενη λευκή άκρη είναι επίσης μια συνιστώσα. Ονομάζουμε αυτό ένα απλό μέρος. Το σχήμα 8 είναι ένα παράδειγμα ενός γραφήματος με δύο απλές συνιστώσες και ένα μη απλό. Σχήμα 8: Το αποτέλεσμα της εκτέλεσης μιας λειτουργίας Break. Οι αριθμοί είναι ο αριθμός των βότσαλων στους κόμβους. Η επίδραση της εκτέλεσης Break σε μια συνιστώσα είναι ότι η συνιστώσα διασπάται σε απλούστερες συνιστώσες και ότι η ρίζα της αρχικής συνιστώσας ε- πισυνάπτεται στη συνιστώσα από ενός από τους προκατόχους της (αν υπάρχει). Ενα παράδειγμα της εφαρμογής της λειτουργίας Break φαίνεται στο σχήμα 8. Μια κρίσιμη ιδιότητα της Break είναι ότι όλοι οι κόμβοι στη συνιστώσα αλλάζουν χρώμα 49