Κατανεμημένα Συστήματα. Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

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

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

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

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web

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

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

Κατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

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

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

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

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

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

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

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

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL

Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

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

Τεχνική Ανάλυση των η-υπογραφών & των η-πιστοποιητικών

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

Κινητά και Διάχυτα Συστήματα. Ενότητα # 8: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Δομημένος Προγραμματισμός

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

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

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κεφάλαιο 21. Κρυπτογραφία δημόσιου κλειδιού και πιστοποίηση ταυτότητας μηνυμάτων

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

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

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

Τεχνολογία Πολυμέσων. Ενότητα # 2: Εφαρμογές πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

Τεχνολογία Πολυμέσων. Ενότητα # 7: Θεωρία πληροφορίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα (ΗΥ321)

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

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

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

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

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

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

Τεχνολογία Πολυμέσων. Ενότητα # 8: Αρχές κωδικοποίησης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

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

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης

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

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

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

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

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

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

8.3 Ασφάλεια ικτύων. Ερωτήσεις

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

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

Τεχνολογία Πολυμέσων. Ενότητα # 19: Τηλεδιάσκεψη Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 18: Υπηρεσίες Ιστού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν

ΑΣΦΑΛΕΙΑ ΚΑΤΑ ΤΗ ΙΑΚΙΝΗΣΗ ΠΟΛΥΜΕΣΙΚΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Βασικά Θέματα Κρυπτογραφίας Συμμετρική & Ασύμμετρη Κρυπτογραφία-Ακεραιότητα)

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

Τεχνολογία Πολυμέσων. Ενότητα # 15: Συγχρονισμός πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΣΕΜΙΝΑΡΙΟ. ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο

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

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές

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

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

KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

Τεχνολογία Πολυμέσων. Ενότητα # 17: Πρωτόκολλα μετάδοσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου

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

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Κρυπτογραφία. Εργαστηριακό μάθημα 5 Stream ciphers Κρυπτανάλυση με τον αλγόριθμο Berlekamp-Massey

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Transcript:

Κατανεμημένα Συστήματα Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Οικονομικό Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Οι εικόνες προέρχονται από το βιβλίο «Κατανεμημένα Συστήματα με Java», Ι. Κάβουρας, Ι. Μήλης, Γ. Ξυλωμένος, Α. Ρουκουνάκη, 3 η έκδοση, 2011, Εκδόσεις Κλειδάριθμος. 3

Σκοποί ενότητας Εξοικείωση με την αρχιτεκτονική ασφάλειας της Java και την έννοια των παρόχων ασφάλειας. Κατανόηση των βασικών διεπαφών και τάξεων ασφάλειας της Java (λίστες ελέγχου προσπέλασης, συνόψεις μηνυμάτων, κρυπτογραφία, ψηφιακές υπογραφές, ψηφιακά πιστοποιητικά). 4

Περιεχόμενα ενότητας Μηχανισμοί ασφάλειας Πάροχοι ασφάλειας Λίστες ελέγχου προσπέλασης Συνόψεις μηνυμάτων Κρυπτογραφία Ψηφιακές υπογραφές Ψηφιακά πιστοποιητικά 5

Μηχανισμοί ασφάλειας Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Κατανεμημένη ασφάλεια Ασφάλεια σε κατανεμημένα συστήματα Οι μηχανές επικοινωνούν μέσω του δικτύου Κάθε ανοιχτή θύρα κινδυνεύει από παραβίαση Παρείσακτος: κλέβει ή αλλοιώνει πόρους Πληροφορίες, εύρος ζώνης, υπολογιστική ισχύ Η ασφάλεια εξαρτάται από την εφαρμογή Τι επιθέσεις περιμένουμε να δούμε; Πόσο σημαντικό είναι να τις αποτρέψουμε; 7

Ασφάλεια και Java Αρχιτεκτονική κρυπτογραφίας Java (JCA) Υπηρεσία πιστοποίησης ταυτότητας και εξουσιοδότησης Java (JAAS) Παρέχουν διεπαφές προγραμματισμού (API) Πάνω τους χτίζονται πιο σύνθετοι μηχανισμοί Παράδειγμα: πιστοποίηση ταυτότητας Kerberos Πράκτορας (λογισμικού) Λογισμικό που αντιπροσωπεύει το χρήστη 8

Μοντέλο παρείσακτου Παρείσακτος (α) (β) Μήνυμα (γ) Αποστολέας Παραλήπτης Έστω δύο επικοινωνούσες διεργασίες Χρησιμοποιούν ένα ανασφαλές κανάλι Ο παρείσακτος μπορεί να κάνει τρία πράγματα Υποκλοπή μηνυμάτων (παθητικός) Τροποποίηση μηνυμάτων (ενεργητικός) Εισαγωγή νέων μηνυμάτων (ενεργητικός) 9

Διεπαφές της Java (1 από 2) Κρυπτογράφηση δεδομένων Απόκρυψη περιεχομένου μηνυμάτων Αποτρέπει την υποκλοπή μηνυμάτων Συνόψεις μηνυμάτων Πιστοποίηση ακεραιότητας μηνύματος Αποτρέπει την τροποποίηση μηνυμάτων Ψηφιακές υπογραφές Πιστοποίηση αποστολέα μηνύματα Αποτρέπει την εισαγωγή μηνυμάτων 10

Διεπαφές της Java (2 από 2) Ψηφιακά πιστοποιητικά Πιστοποίηση ψηφιακής υπογραφής χρήστη Δεν επιτρέπουν στον παρείσακτο να υποδύεται άλλους Λίστες ελέγχου προσπέλασης Διαχείριση ταυτοτήτων πρακτόρων Έλεγχος προσπέλασης των πόρων Εξουσιοδότηση χρήσης των πόρων 11

Πάροχοι ασφάλειας Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Πάροχοι ασφάλειας (1 από 2) Πάροχος: πακέτο με υλοποίηση υπηρεσίας Αποκρύπτει την υλοποίηση από την εφαρμογή Συμβατότητα με διάφορες υλοποιήσεις Διαθέσιμοι πάροχοι ασφάλειας SunJCE: DES, AES, RSA, MD5, SHA-1 Sun: DSA SunRsaSign: RSA Εγκατάσταση πρόσθετων παρόχων 13

Πάροχοι ασφάλειας (2 από 2) Πράκτορας Διεπαφή παρόχων Πάροχος 1 MD5 Πάροχος 2 MD5 Πάροχος 3 SHA-1 Ενιαία διεπαφή για τους πράκτορες Επιλογή αλγορίθμου από συγκεκριμένο πάροχο Υλοποίηση του MD5 από τον πάροχο 1 Επιλογή αλγορίθμου από οποιονδήποτε πάροχο Οποιαδήποτε υλοποίηση του MD5 14

Τάξη Provider (1 από 2) Αφηρημένη τάξη Provider Πάροχος που υλοποιεί υπηρεσίες ασφάλειας Αλγόριθμοι ασφάλειας (όπως ο RSA) Διαχείριση κλειδιών (παραγωγή, μετατροπή) Ο πραγματικός πάροχος επεκτείνει την τάξη Έχει όνομα και αριθμό έκδοσης Όταν προσαρμόζεται λαμβάνει σειρά προτίμησης Η σειρά ορίζει ποια υλοποίηση θα χρησιμοποιήσουμε 15

Τάξη Provider (2 από 2) Τάξη Provider: πακέτο java.security Provider (String name, double version, String info) Κατασκευάζει έναν πάροχο Το info είναι ένα κείμενο περιγραφής String getname() double getversion() String getinfo() Επιστρέφουν τις πληροφορίες του παρόχου 16

Λίστες ελέγχου προσπέλασης Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Έλεγχος προσπέλασης Λίστα ελέγχου προσπέλασης (ACL) Αποτελείται από στοιχεία ή καταχωρίσεις Στοιχείο: ομάδα και δικαίωμα προσπέλασης Η ομάδα μπορεί να είναι ένας πράκτορας Το δικαίωμα δείχνει τι μπορεί να κάνει Κωδικοποιεί κανόνες εξουσιοδότησης java.security.acl: διεπαφές για ACL sun.security.acl: προκαθορισμένες υλοποιήσεις 18

Διεπαφή Principal Εντολέας (principal): χρήστης ή οργανισμός Διεπαφή Principal Ακυρώνει equals, hashcode και tostring Η υλοποίηση πρέπει να φτιάξει δικές της String getname(): επιστρέφει όνομα εντολέα Τάξη PrincipalImpl: υλοποίηση της Principal PrincipalImpl(String user) Δημιουργεί έναν εντολέα με όνομα user 19

Διεπαφή Group (1 από 2) Παριστάνει μια ομάδα εντολέων Επεκτείνει τη διεπαφή Principal boolean addmember(principal user) Προσθέτει τον εντολέα user στην ομάδα Επιστρέφει false αν ήταν ήδη μέλος boolean removemember(principal user) Αφαιρεί τον εντολέα user από την ομάδα Επιστρέφει false αν δεν ήταν μέλος 20

Διεπαφή Group (2 από 2) Μέθοδοι διεπαφής Group boolean ismember(principal user) Επιστρέφει true αν ο user είναι μέλος της ομάδας Ελέγχει την ομάδα και τυχόν υποομάδες Enumeration<? Extends Principal> members() Επιστρέφει απαρίθμηση χρηστών (εντολείς ή ομάδες) Τάξη GroupImpl: υλοποίηση της Group GroupImpl(String groupname) Δημιουργεί μια ομάδα με όνομα groupname 21

Διεπαφή Permission Παριστάνει τα δικαιώματα χρήσης Δεν υλοποιεί συγκεκριμένη συμπεριφορά Δε γνωρίζουμε τι δικαιώματα θέλει ο χρήστης Ακυρώνει τις μεθόδους equals και tostring Τάξη PermissionImpl: υλοποίηση Permission Χρησιμοποιεί συμβολοσειρές για τα δικαιώματα PermissionImpl(String permission) Κατασκευάζει ένα δικαίωμα με όνομα permission 22

Διεπαφή AclEntry (1 από 4) Παριστάνει ένα στοιχεία μιας ACL Περιέχει ένα σύνολο από δικαιώματα Σχετίζεται με ένα εντολέα ή μία ομάδα Θετική: παραχωρεί δικαιώματα Προεπιλογή αν δεν ορίζεται διαφορετικά Αρνητική: αφαιρεί δικαιώματα Έως μία θετική και μία αρνητική ανά εντολέα Ανεξάρτητα από τα δικαιώματα κάθε μίας 23

Διεπαφή AclEntry (2 από 4) Μέθοδοι διεπαφής AclEntry boolean addpremission(permission perm) Προσθέτει δικαίωμα perm στο στοιχείο boolean checkpremission(permission perm) Ελέγχει αν περιέχεται το δικαίωμα perm boolean removepremission(permission perm) Αφαιρεί το δικαίωμα perm από το στοιχείο Enumeration<Permission> permissions() Επιστρέφει τα δικαιώματα του στοιχείου 24

Διεπαφή AclEntry (3 από 4) Μέθοδοι διεπαφής AclEntry Boolean setprincipal(principal user) Καθορίζει τον εντολέα του στοιχείου Principal getprincipal() Επιστρέφει τον εντολέα του στοιχείου boolean isnegative(): είναι αρνητικό το στοιχείο; void setnegativepermissions() Κάνει το στοιχείο αρνητικό 25

Διεπαφή AclEntry (4 από 4) Τάξη AclEntryImpl Υλοποιεί τη διεπαφή AclEntry AclEntryImpl(Principal user) Δημιουργεί ένα θετικό στοιχείο για τον user AclEntryImpl() Δημιουργεί ένα θετικό στοιχείο χωρίς εντολέα 26

Διεπαφή Owner (1 από 2) Παριστάνει τον ιδιοκτήτη μιας ACL Χρήση και για τη δόμηση των ACL Η διεπαφή Acl επεκτείνει τη διεπαφή Owner Μόνο οι ιδιοκτήτες μιας ACL την αλλάζουν boolean addowner(principal c, Principal o) Προσθέτει στους ιδιοκτήτες τον o Καλείται από τον ιδιοκτήτη c boolean deleteowner(principal c, Principal o) Διαγράφει από τους ιδιοκτήτες τον o 27

Διεπαφή Owner (2 από 2) Μέθοδοι διεπαφής Owner boolean isowner(principal owner) Ελέγχει αν ο owner ανήκει στους ιδιοκτήτες Τάξη OwnerImpl Υλοποιεί τη διεπαφή Owner OwnerImpl(Principal owner) Δημιουργεί μια ομάδα ιδιοκτητών Αρχικός ιδιοκτήτης είναι ο owner 28

Διεπαφή Acl (1 από 5) Παριστάνει μία ACL Αποτελείται από στοιχεία (δικαιώματα, εντολείς) Έχει μια ομάδα ιδιοκτητών με διεπαφή Owner Τα θετικά και αρνητικά στοιχεία συνδυάζονται Τα επιμέρους δικαιώματα συνεκτιμώνται Τα στοιχεία εντολέων υπερισχύουν των ομάδων Μια ομάδα μπορεί να έχει ορισμένα δικαιώματα Ένα μέλος της μπορεί να έχει διαφορετικά δικαιώματα 29

Διεπαφή Acl (2 από 5) Μέθοδοι διεπαφής Acl boolean addentry(principal c, AclEntry entry) Προσθέτει το στοιχείο entry στη λίστα Ο c είναι ο ιδιοκτήτης της ACL Ο εντολέας του entry περιέχεται στο στοιχείο boolean removeentry(principal c, AclEntry entry) Αφαιρεί το στοιχείο entry από τη λίστα 30

Διεπαφή Acl (3 από 5) Μέθοδοι διεπαφής Acl Enumeration<AclEntry> entries() Επιστρέφει όλα τα στοιχεία της λίστας Enumeration<Permission> getpermissions(principal user) Επιστρέφει τα δικαιώματα του εντολέα user Περιλαμβάνει δικαιώματα ομάδας και του ίδιου Επιστρέφονται όλα τα θετικά δικαιώματα 31

Διεπαφή Acl (4 από 5) Υπολογισμός δικαιωμάτων εντολέα Σύνολο θετικών ομαδικών δικαιωμάτων Σύνολο αρνητικών ομαδικών δικαιωμάτων Συνεκτιμώνται τα δύο σύνολα Σύνολο θετικών ατομικών δικαιωμάτων Σύνολο αρνητικών ατομικών δικαιωμάτων Συνεκτιμώνται τα δύο σύνολα Τα ατομικά αναιρούν τα ομαδικά 32

Διεπαφή Acl (5 από 5) Μέθοδοι διεπαφής Acl boolean checkpermission(principal principal, Permission perm) Επιστρέφει true αν ο principal έχει το δικαίωμα perm void setname(principal c, String name): ορίζει όνομα String getname(): επιστρέφει το όνομα Τάξη AclImpl: υλοποίηση διεπαφής Acl AclImpl(Principal owner, String name) Δημιουργεί μια Acl με ιδιοκτήτη και όνομα 33

Συνόψεις μηνυμάτων Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Γιατί συνόψεις; Σύνοψη μηνύματος (message digest) Τιμή κατακερματισμού περιεχομένου Ακολουθία δυαδικών ψηφίων σταθερού μήκους Με κρυπτογραφικό αλγόριθμο κατακερματισμού Λέγεται και αλγόριθμος σύνοψης μηνυμάτων Παράδειγμα: MD5 (128 bit), SHA-1 (160 bit) Χαρακτηρίζει μοναδικά το περιεχόμενο 35

Ιδιότητες συνόψεων (1 από 2) Κρυπτογραφική συνάρτηση κατακερματισμού Υπολογιστικά ανέφικτη η αντιστροφή Το μήνυμα δεν μπορεί να βρεθεί από τη σύνοψη Άρα μπορεί να μεταδίδεται χωρίς κρυπτογράφηση Υπολογιστικά ανέφικτη η κατασκευή μηνύματος Αν έχουμε ένα μήνυμα και τον κατακερματισμό Άρα δεν μπορούμε να αντικαταστήσουμε μηνύματα Ακόμη κι αν τα έχουμε υποκλέψει 36

Ιδιότητες συνόψεων (2 από 2) Κρυπτογραφική συνάρτηση κατακερματισμού Υπολογιστικά ανέφικτη η κατασκευή όμοιων Δεν μπορούμε να φτιάξουμε μηνύματα με ίδια τιμή Άρα τα μηνύματα δεν αντικαθίστανται Δεν μπορούμε να αρνηθούμε ένα μήνυμα Λειτουργεί ως ψηφιακό δακτυλικό αποτύπωμα Η συνάρτηση μπορεί να έχει συγκρούσεις Απλά δεν μπορούμε να τις αξιοποιήσουμε 37

Τάξη MessageDigest (1 από 4) Αφηρημένη τάξη MessageDigest Διαχειρίζεται συνόψεις μηνυμάτων MessageDigest getinstance(string algorithm) Επιστρέφει υλοποίηση του αλγορίθμου σύνοψης Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider String getalgorithm(): όνομα αλγορίθμου Provider getprovider(): πάροχος αλγορίθμου 38

Τάξη MessageDigest (2 από 4) Υπολογισμός σύνοψης Το μήνυμα είναι μια ακολουθία από byte Το στέλνουμε στον αλγόριθμο σε τμήματα void update(byte input): στέλνει ένα byte void update(byte[] input, int offset, int len) Στέλνει len bytes του πίνακα input από το offset void update(byte[] input) Στέλνει όλο τον πίνακα input 39

Τάξη MessageDigest (3 από 4) Υπολογισμός σύνοψης void reset(): αρχικοποιεί τη σύνοψη byte[] digest(): επιστρέφει τη σύνοψη int digest(byte[] buf, int offset, int len) Επιστρέφει τη σύνοψη στον πίνακα buf Ξεκινά από τη θέση offset για έως και len θέσεις byte[] digest(byte[] input) Στέλνει και το input και μετά επιστρέφει τη σύνοψη 40

Τάξη MessageDigest (4 από 4) Μετά τον υπολογισμό γίνεται αρχικοποίηση Δεν χρειάζεται ειδική κλήση αρχικοποίησης Έλεγχος σύνοψης Έστω ότι λάβαμε μήνυμα και σύνοψη Υπολογίζουμε μια νέα σύνοψη από το μήνυμα Ελέγχουμε αν ταιριάζει με αυτή που λάβαμε Boolean isequal(byte[] digesta, byte[] digestb) Συγκρίνει δύο συνόψεις για ισότητα 41

Κρυπτογραφία Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Κρυπτογραφία (1 από 2) Διασφάλιση εμπιστευτικότητας μηνυμάτων Η σύνοψη διασφαλίζει την ακεραιότητα Η εμπιστευτικότητα απαιτεί κρυπτογραφία Κρυπτογράφηση Παραγωγή κρυπτογραφημένου κειμένου Από απλό (ή καθαρό) κείμενο Αποκρυπτογράφηση: αντίστροφη διαδικασία Παράγει το απλό από το κρυπτογραφημένο 43

Κρυπτογραφία (2 από 2) Αποστολέας C Παραλήπτης P K E E C C K D D P Κρυπτογραφικός αλγόριθμος Μαθηματική συνάρτηση (από)κρυπτογράφησης Κλειδί: παραμετροποιεί τις συναρτήσεις Έστω P το απλό και C το κρυπτογραφημένο K E : κλειδί κρυπτογράφησης, K D : αποκρυπτογράφησης Κρυπτογράφηση: E(K E,P)=C Αποκρυπτογράφηση: D(K D,C)=P 44

Διεπαφή Key Παριστάνει οποιοδήποτε είδος κλειδιού Κάθε κλειδί έχει τρία χαρακτηριστικά String getalgorithm(): αλγόριθμος κατασκευής Byte[] getencoded(): πρότυπη αναπαράσταση Επιτρέπει ανταλλαγή κλειδιών έξω από τη JVM String getformat(): μορφότυπο κλειδιού Για την πρότυπη αναπαράσταση Επεκτείνεται από Public/Private/SecretKey 45

Μυστικά κλειδιά (1 από 3) Κρυπτογραφία μυστικού κλειδιού Λέγεται και συμμετρική κρυπτογραφία Ίδιο κλειδί κρυπτο-αποκρυπτογράφησης Μυστικό, καταμεριζόμενο ή συμμετρικό κλειδί Απλή και γρήγορη μέθοδος Σε σχέση με κρυπτογραφία δημόσιου κλειδιού Αν διαρρεύσει το κλειδί είναι άχρηστη Το κλειδί όμως πρέπει να ανταλλαγεί! 46

Μυστικά κλειδιά (2 από 3) Τάξη KeyGenerator Γεννήτρια συμμετρικών κλειδιών Κατάλληλα για συγκεκριμένο αλγόριθμο KeyGenerator getinstance(string algorithm) Παράγει μια γεννήτρια κλειδιών για τον αλγόριθμο Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider String getalgorithm(): όνομα αλγορίθμου Provider getprovider(): πάροχος αλγορίθμου 47

Μυστικά κλειδιά (3 από 3) Τάξη KeyGenerator void init(algorithmparameterspec params) Αρχικοποιεί τη γεννήτρια κλειδιών Χρήση συνόλου παραμέτρων params SecretKey generatekey() Παράγει ένα μυστικό κλειδί Χωρίς init, χρήση προκαθορισμένων παραμέτρων Διεπαφή AlgorithmParameterSpec Προδιαγραφή κρυπτογραφικών παραμέτρων 48

Δημόσια κλειδιά (1 από 5) Κρυπτογραφία δημόσιου κλειδιού Λέγεται και ασύμμετρη κρυπτογραφία Ζεύγος κλειδιών Ιδιωτικό κλειδί: γνωστό στον ιδιοκτήτη Δημόσιο κλειδί: γνωστό σε όλους Δεν μπορεί να υπολογιστεί το ένα από το άλλο Ο αποστολέας κωδικοποιεί με δημόσιο κλειδί Ο παραλήπτης αποκωδικοποιεί με ιδιωτικό κλειδί 49

Δημόσια κλειδιά (2 από 5) Τα κλειδιά λειτουργούν και αντίστροφα Κρυπτογράφηση με ιδιωτικό Αποκρυπτογράφηση με δημόσιο Δημόσια ή μυστικά κλειδιά; Τα δημόσια είναι πιο εύκολα στη διανομή Είναι όμως πολύ πιο ακριβά υπολογιστικά Χρήση δημόσιων για ανταλλαγή μυστικών Συνδυασμός ευκολίας και ταχύτητας 50

Δημόσια κλειδιά (3 από 5) Τάξη KeyPair Αντιπροσωπεύει ένα ζεύγος κλειδιών KeyPair(PublicKey pubkey, PrivateKey privkey) Κατασκευάζει ζεύγος κλειδιών pubkey/privkey PublicKey getpublic() Επιστρέφει το δημόσιο κλειδί PrivateKey getprivate() Επιστρέφει το ιδιωτικό κλειδί 51

Δημόσια κλειδιά (4 από 5) Τάξη KeyPairGenerator Γεννήτρια ζευγών κλειδιών Κατάλληλα για συγκεκριμένο αλγόριθμο KeyPairGenerator getinstance(string Algorithm) Παράγει μια γεννήτρια κλειδιών για τον αλγόριθμο Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider String getalgorithm(): όνομα αλγορίθμου Provider getprovider(): πάροχος αλγορίθμου 52

Δημόσια κλειδιά (5 από 5) Τάξη KeyPairGenerator void initialize(algorithmparameterspec params) Αρχικοποιεί τη γεννήτρια κλειδιών Χρήση συνόλου παραμέτρων params KeyPair generatekeypair() Παράγει ένα ζεύγος κλειδιών Χωρίς initialize, χρήση προκαθορισμένων παραμέτρων Πρόσβαση στα κλειδιά με τις μεθόδους της KeyPair 53

Τάξη Cipher (1 από 5) Υλοποιεί κρυπτο-αποκρυπτογράφηση Ανεξάρτητα από το είδος συστήματος Ανεξάρτητα από τον συγκεκριμένο αλγόριθμο Cipher getinstance(string transformation) Παράγει αντικείμενο που υλοποιεί το transformation Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider String getalgorithm(): όνομα αλγορίθμου Provider getprovider(): πάροχος αλγορίθμου 54

Τάξη Cipher (2 από 5) Ομάδες κρυπτογραφήματος Ακολουθίες bit σταθερού μήκους Η είσοδος είναι ακολουθία τέτοιων ομάδων Οι ομάδες μπορεί να εξαρτώνται μεταξύ τους Ανάλογα με τον τρόπο ανάδρασης Ξεκινάμε με ένα διάνυσμα αρχικοποίησης Σχήμα συμπλήρωσης για τελευταία ομάδα Πρέπει όλες να έχουν το ίδιο μέγεθος 55

Τάξη Cipher (3 από 5) Μετασχηματισμός: συμβολοσειρά Περιγράφει τις λειτουργίες που εκτελούνται Τρία στοιχεία που χωρίζονται με / Αλγόριθμος κρυπτογράφησης Τρόπος ανάδρασης (προαιρετικά) Σχήμα συμπλήρωσης (προαιρετικά) Παράδειγμα: DES/ECB/PKCS5Padding Προεπιλεγμένες τιμές για ό,τι δεν ορίζεται 56

Τάξη Cipher (4 από 5) Μέθοδοι τάξης Cipher void init(int opmode, Key key, AlgorithmParametersSpec params) Αρχικοποιεί κωδικοποιητή με κλειδί key Λειτουργία ανάλογα με το init ENCRYPT_MODE: κρυπτογράφηση DECRYPT_MODE: αποκρυπτογράφηση void init(int opmode, Key key) Αρχικοποίηση με προκαθορισμένες παραμέτρους 57

Τάξη Cipher (5 από 5) Μέθοδοι τάξης Cipher byte[] update(byte[] input) Ξεκινά ή συνεχίζει την κωδικοποίηση Παρέχεται το επόμενο τμήμα δεδομένων Επιστρέφει την κωδικοποίηση του τμήματος byte[] dofinal(): ολοκληρώνει κωδικοποίηση Συμπληρώνει είσοδο και επιστρέφει αποτέλεσμα Μετά επαναφέρει τον κωδικοποιητή στην αρχή byte[] dofinal(byte[] input): παρέχει τελικά δεδομένα 58

Ψηφιακές υπογραφές Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Ψηφιακές υπογραφές (1 από 4) Ψηφιακή υπογραφή Υποκαθιστά τη φυσική υπογραφή Συνδέεται με ένα μήνυμα Επαληθεύεται στον παραλήπτη Χρήση κρυπτογραφίας δημόσιου κλειδιού Υπολογισμός ψηφιακής υπογραφής Υπολογισμός σύνοψης μηνύματος Κωδικοποίηση σύνοψης με ιδιωτικό κλειδί 60

Ψηφιακές υπογραφές (2 από 4) Επαλήθευση ψηφιακής υπογραφής Υπολογισμός νέας σύνοψης μηνύματος Αποκρυπτογράφησης ψηφιακής υπογραφής Χρήση δημόσιο κλειδιού του αποστολέα Σύγκριση νέας και αρχικής σύνοψης Αν είναι ίδιες, τότε έχουμε επαλήθευση Τι σημαίνει ακριβώς επαλήθευση ή μη; 61

Ψηφιακές υπογραφές (3 από 4) Επιτυχής επαλήθευση Το μήνυμα δεν έχει αλλοιωθεί Αλλιώς θα άλλαζε η σύνοψη Έχει υπογραφεί με συγκεκριμένο μυστικό κλειδί Αυτό που ταιριάζει με το δημόσιο κλειδί Πώς συνδέουμε πρόσωπο με κλειδί; Πρέπει να γνωρίζουμε το δημόσιο κλειδί του Πρέπει να μην έχει διαρρεύσει το ιδιωτικό κλειδί 62

Ψηφιακές υπογραφές (4 από 4) Ημερομηνία και ώρα υπογραφής Συνήθως προστίθεται στο μήνυμα Άρα περιλαμβάνεται στη σύνοψη Αν λήξει το κλειδί, δεν ισχύουν οι υπογραφές Τι ακριβώς κρυπτογραφούμε; Αν θέλουμε εμπιστευτικότητα, το μήνυμα Αν θέλουμε ταυτότητα, μόνο την υπογραφή Μεγάλο κέρδος σε χρόνο λόγο μικρότερου μεγέθους 63

Τάξη Signature (1 από 3) Αφηρημένη τάξη Signature Παριστάνει αλγόριθμο ψηφιακών υπογραφών Αλγόριθμοι κρυπτογράφησης και σύνοψης Signature getinstance(string Algorithm) Παράγει αντικείμενο που υλοποιεί τον αλγόριθμο Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider String getalgorithm(): όνομα αλγορίθμου Provider getprovider(): πάροχος αλγορίθμου 64

Τάξη Signature (2 από 3) Μέθοδοι τάξης Signature void initsign(privatekey privkey) Αρχικοποιεί αλγόριθμο για υπογραφή Περνάμε το ιδιωτικό κλειδί void initverify(publickey pubkey) Αρχικοποιεί αλγόριθμο για επαλήθευση Περνάμε το δημόσιο κλειδί 65

Τάξη Signature (3 από 3) Μέθοδοι τάξης Signature void update(byte[] data): προσθήκη δεδομένων Για υπογραφή ή επαλήθευση Επαναλαμβάνουμε μέχρι να τελειώσουν byte[] sign(): ολοκληρώνει υπογραφή Επιστρέφει την ψηφιακή υπογραφή boolean verify(byte[] sig): επαληθεύει υπογραφή Περνάμε την υπογραφή προς επαλήθευση 66

Ψηφιακά πιστοποιητικά Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Ψηφιακά πιστοποιητικά (1 από 5) Επίθεση του ενδιάμεσου Έστω εισβολέας ανάμεσα σε δύο πράκτορες Τα άκρα ανταλλάσσουν τα δημόσια κλειδιά τους Ο εισβολέας τα αλλάζει με τα δικά του Ο εισβολέας παρεμβάλλεται μεταξύ τους Αποκρυπτογραφεί και κρυπτογραφεί τα πάντα Πώς ξέρουμε αν έχουμε το σωστό δημόσιο κλειδί; Δεν είναι μυστικό, αλλά μπορεί να έχει πειραχτεί 68

Ψηφιακά πιστοποιητικά (2 από 5) Ψηφιακό πιστοποιητικό Εκδίδεται από κάποια αρχή πιστοποίησης (CA) Η CA επιβεβαιώνει τον κάτοχο ενός κλειδιού Συνήθως, ενός δημόσιου κλειδιού Περιλαμβάνει κλειδί, όνομα και διεύθυνση Επιπλέον όνομα CA και ημερομηνία λήξης κλειδιού Υπογράφεται από τον εκδότη Αρχή πιστοποίησης ή απλό χρήστη 69

Ψηφιακά πιστοποιητικά (3 από 5) Αυτοϋπογεγραμμένο κλειδί Ο κάτοχος υπογράφει το κλειδί του Χρήση του εργαλείου keytool στη Java Κλειδί υπογεγραμμένο από CA Υπογράφεται με το ιδιωτικό κλειδί της CA Το δημόσιο κλειδί της CA είναι ευρέως γνωστό Προεγκατεστημένο σε λειτουργικό ή φυλλομετρητή Καθένας μπορεί να ελέγξει το πιστοποιητικό 70

Ψηφιακά πιστοποιητικά (4 από 5) Αρχή πιστοποίησης K CA,Δ K CA,Ι Πιστοποιητικό K CA,Ι (K E,Δ ) Πελάτης Εξυπηρετητής K CA,Δ K E,Δ Παράδειγμα: αρχή πιστοποίησης CA Όλοι γνωρίζουν το δημόσιο κλειδί της K CA,Δ Υπογράφει το κλειδί Κ Ε,Δ του εξυπηρετητή Ο πελάτης επαληθεύει το κλειδί του εξυπηρετητή 71

Ψηφιακά πιστοποιητικά (5 από 5) Αλυσίδες πιστοποιητικών Κάθε πιστοποιητικό βασίζεται σε προηγούμενο Μήκος 1: αυτοϋπογεγραμμένο πιστοποιητικό Μπορεί να είναι το πιστοποιητικό μιας CA Μήκος 2: πιστοποιητικό χρήστη Η CA πιστοποιεί την ταυτότητα του χρήστη Μήκος 3: πιστοποιητικό άλλου χρήστη Ο πιστοποιημένος χρήστης πιστοποιεί τον άλλο 72

Τάξη Certificate Αφηρημένη τάξη Certificate Παριστάνει ένα ψηφιακό πιστοποιητικό Τάξη X509Certificate: πιστοποιητικά X.509 void verify(publickey key) Επαληθεύει το πιστοποιητικό ή ρίχνει εξαίρεση Χρήση του δημόσιου κλειδιού key για επαλήθευση PublicKey getpublickey(): επιστρέφει το κλειδί String tostring(): επιστρέφει το πιστοποιητικό 73

Εργαλείο keytool (1 από 2) Διαχείριση κλειδιών/πιστοποιητικών X.509 Δημιουργία ζευγών κλειδιών Παραγωγή αυτοϋπογεγραμμένων πιστοποιητικών Έκδοση αιτήσεων για πιστοποιητικά προς CA Εισαγωγή πιστοποιητικών σε αποθήκη Χαρακτηρισμός δημόσιων κλειδιών ως έμπιστα Διαχείριση αποθηκών κλειδιών Χρήση του αρχείου.keystore 74

Εργαλείο keytool (2 από 2) Αποθήκη κλειδιών Προστατευμένη βάση δεδομένων Προστατεύεται από συνθηματικό Πρόσθετο συνθηματικό για κάθε ιδιωτικό κλειδί Καταχώριση κλειδιού Μυστικό ή ιδιωτικό κλειδί Αλυσίδα πιστοποιητικών για αντίστοιχο δημόσιο κλειδί Καταχώριση έμπιστου πιστοποιητικού Πιστοποιητικό δημόσιου κλειδιού που εμπιστευόμαστε 75

Τάξη KeyStore (1 από 4) Προσπέλαση και διαχείριση αποθήκης KeyStore getinstance(string type) Παράγει αποθήκη τύπου type Java Key Store (JKS): υλοποίηση της Sun Χρήση κωδικών για προστασία αποθήκης και κλειδιών Μπορούμε επίσης να επιλέξουμε τον πάροχο Είτε με συμβολοσειρά είτε με αντικείμενο Provider Provider getprovider(): πάροχος αποθήκης 76

Τάξη KeyStore (2 από 4) Μέθοδοι τάξης KeyStore void load(inputstream stream, char[] password) Φορτώνει αποθήκη από το ρεύμα stream Αν το stream είναι null, δημιουργία νέας Χρήση κωδικού password για έλεγχο πρόσβασης void store(outputstream stream, char[] password) Γράφει αποθήκη στο ρεύμα stream Προστατεύει την αποθήκη με κωδικό password 77

Τάξη KeyStore (3 από 4) Μέθοδοι τάξης KeyStore void setkeyentry(string alias, Key key, char[] password, Certificate[] chain) Συσχετίζει κλειδί key με ψευδώνυμο alias Αλυσίδα πιστοποίησης chain για δημόσιο κλειδί Προστασία με τον κωδικό password void setcertificateentry(string alias, Certificate cert) Συσχετίζει πιστοποιητικό cert με ψευδώνυμο alias 78

Τάξη KeyStore (4 από 4) Μέθοδοι τάξης KeyStore Key getkey(string alias, char[] password) Επιστρέφει κλειδί με ψευδώνυμο alias Certificate getcertificate(string alias) Επιστρέφει το πιστοποιητικό με όνομα alias Επιστρέφει πρώτο στοιχείο αλυσίδας για κλειδί alias Certificate[] getcertificatechain(string alias) Επιστρέφει αλυσίδα πιστοποιητικών για κλειδί alias void deleteentry(string alias) Διαγράφει την καταχώριση με ψευδώνυμο alias 79

Τέλος Ενότητας # 7 Μάθημα: Κατανεμημένα Συστήματα, Ενότητα # 7: Θέματα ασφάλειας Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής