©Silberschatz, Korth and Sudarshan9.1Database System Concepts - 6 th Edition Εφαρμογές με ΒΔ (Κεφ9 από βιβλίο Silberschatz)
©Silberschatz, Korth and Sudarshan9.2Database System Concepts - 6 th Edition Προγράμματα User Interfaces Οι χρήστες συνήθως δεν χρησιμοποιούν SQL Μία εφαρμογή είναι ο μεσολαβητής μεταξύ χρηστών και βάσης Οι εφαρμογές διαχωρίζονται σε front-end middle layer backend Front-end: user interface Forms Graphical user interfaces Πολλά interfaces είναι Web-based
©Silberschatz, Korth and Sudarshan9.3Database System Concepts - 6 th Edition Ιστορική εξέλιξη Τρεις βασικές εποχές mainframe (1960’s και 70’s) personal computer era (1980’s) We era (1990’s και μετά)
©Silberschatz, Korth and Sudarshan9.4Database System Concepts - 6 th Edition Web Interface Οι Web browsers το de-facto standard user interface προς ΒΔ Μεγάλος αριθμός χρηστών προσπελαύνουν τις ΒΔ από παντού Δεν χρειάζεται εγκατάσταση/κατέβασμνα εξειδικευμένου κώδικα, και περέχεται καλό user interface Javascript, Flash και άλλες τεχνολογίες τρέχουν μέσα στον browser, αλλά εγκαθίστανται διαφανώς Π.χ: τράπεζες, αεροπορικές εταιρίες, ενοικιάσεις αυτοκινήτων, εγγραφές σε πανεπιστήμια / e-stundents κλπ.
©Silberschatz, Korth and Sudarshan9.5Database System Concepts - 6 th Edition World Wide Web Κατανεμημένο πληροφοριακό σύστημα βασισμένο σε hypertext. Τα Web documents είναι hypertext documents με χρήση HyperText Markup Language (HTML) HTML documents έχουν Κείμενο με καθορισμό font και άλλες οδηγίες μορφοποίησης hypertext links σε άλλα documents. Φόρμες για την αποστολή δεδομένων στο Web server
©Silberschatz, Korth and Sudarshan9.6Database System Concepts - 6 th Edition Uniform Resources Locators URL παράδειγμα: Πώς θα προσπελαστεί το document “http” καθορίζει το Hyper Text Transfer Protocol. Μοναδικό όνομα μηχανήματος στο Internet. Το πού θα βρεθεί μέσα στο μηχάνημα το έγγραφο. Το τελευταίο μπορεί να είναι: Όνομα μονοπατιού, ή Ένα πρόγραμμα με παραμέτρους για αυτό – Π.χ.,
©Silberschatz, Korth and Sudarshan9.7Database System Concepts - 6 th Edition HTML και HTTP Η HTML κάνει το formatting, hypertext link, και παρουσίαση εικόνων tables, stylesheets κλπ. Η HTML επίσης δίνει input features Επιλογή – Pop-up menus, radio buttons, check lists Εισαγωγή στοιχείων – Text boxes Στέλνονται στο σέρβερ για να χειριστούν από κάποιο εκτελέσιμο HyperText Transfer Protocol (HTTP) για την επικοινωνία με το Web server
©Silberschatz, Korth and Sudarshan9.8Database System Concepts - 6 th Edition Παράδειγμα HTML ID Name Department Zhang Comp. Sci. …. Search for: Student Instructor Name:
©Silberschatz, Korth and Sudarshan9.9Database System Concepts - 6 th Edition Παράδειγμα εμφάνισης από την HTML
©Silberschatz, Korth and Sudarshan9.10Database System Concepts - 6 th Edition Web Servers Μπορεί να παρέχει διάφορες υπηρεσίες. Το URL μπορεί να καθορίζει ένα πρόγραμμα το οποίο παράγει δυναμικά την HTML. Ο HTTP server εκτελεί το πρόγραμμα, και στέλνει την HTML έξοδο που παράγει. Ο Web client μπορεί να δώσει ορίσματα μαζί με το URL. Common Gateway Interface (CGI): standard interface μεταξύ web και application server
©Silberschatz, Korth and Sudarshan9.11Database System Concepts - 6 th Edition Αρχιτεκτονική Web 3 επιπέδων
©Silberschatz, Korth and Sudarshan9.12Database System Concepts - 6 th Edition Αρχιτεκτονική Web 2 επιπέδων Για την αποφυγή του overhead των 3 επιπέδων
©Silberschatz, Korth and Sudarshan9.13Database System Concepts - 6 th Edition HTTP Sessions Το HTTP είναι connectionless Όταν ο server απαντήσει, η σύνδεση χάνεται και ξεχνιέται Αντίθετα ένα Unix login, ή μία JDBC/ODBC σύνδεση παραμένει ενεργή Διατηρεί στοιχεία χρήστη κλπ πληροφορίες. Αιτιολογία: λιγότερος φόρτος στο server Σφιχτά όρια στα ΛΣ για τον αριθμό ανοιχτών συνδέσεων Χρειαζόμαστε όμως πληροφορία session Π.χ. Ταυτότητα χρήστη Λύση το cookie
©Silberschatz, Korth and Sudarshan9.14Database System Concepts - 6 th Edition Sessions και Cookies Το cookie είναι ένα μικρό κείμενο με πληροφορίες Το στέλνει ο server στο browser αρχικά Μετά ο browser στο server για τις επόμενες επικοινωνίες Ο Server κρατάει πληροφορίες για τα cookies που έστειλε Τα Cookies μπορεί να είναι μόνιμα ή συγκεκριμένου χρόνου
©Silberschatz, Korth and Sudarshan9.15Database System Concepts - 6 th Edition Servlets Java Servlet specification: ένα API για επικοινωνία του Web/application server και της εφαρμογής στο server Π.χ. μέθοδοι για να αντληθούν στοιχεία από Web forms και να αποσταλεί HTML στον client Το servlet φορτώνεται στο server Κάθε αίτημα είναι ένα νέο thread στο server Το thread κλείνει μόλις εξυπηρετηθεί το αίτημα
©Silberschatz, Korth and Sudarshan9.16Database System Concepts - 6 th Edition Servlet Code import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class PersonQueryServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" Query Result "); out.println(" "); ….. BODY OF SERVLET (next slide) … out.println(" "); out.close(); }
©Silberschatz, Korth and Sudarshan9.17Database System Concepts - 6 th Edition Servlet Code String persontype = request.getParameter("persontype"); String number = request.getParameter("name"); if(persontype.equals("student")) {... code to find students with the specified name using JDBC to communicate with the database.. out.println(" "); out.println(" ID Name: " + " Department "); for(... each result...){... retrieve ID, name and dept name... into variables ID, name and deptname out.println(" " + ID + " " + " " + name + " " + " " + deptname + " "); }; out.println(" "); } else {... as above, but for instructors... }
©Silberschatz, Korth and Sudarshan9.18Database System Concepts - 6 th Edition Servlet Sessions Το Servlet API υποστηρίζει handling of sessions Βάζει ένα cookie στην πρώτη επικοινωνία με τον browser Για να δούμε εάν ένα session είναι ήδη active: if (request.getSession(false) == true) .. then existing session else.. redirect to authentication page authentication page check login/password request.getSession(true): creates new session Χρήση attribute value pairs για ένα session session.setAttribute(“userid”, userid) session.getAttribute(“userid”)
©Silberschatz, Korth and Sudarshan9.19Database System Concepts - 6 th Edition Servlet Support Τα Servlets τρέχουν σε Apache Tomcat, Glassfish, JBoss BEA Weblogic, IBM WebSphere, Oracle Application Servers
©Silberschatz, Korth and Sudarshan9.20Database System Concepts - 6 th Edition Server-Side Scripting Απλοποιεί τη σύνδεση μιας βάσης στο Web Ορίζει ένα HTML έγγραφο με ενσωματωμένα code/SQL queries. Η είσοδος από τις HTML φόρμες μπορεί να χρησιμποιηθεί απευθείας στα code/SQL queries. Ο Web server εκτελεί τα code/SQL queries και παράγει το HTML document. Διάφορες scripting languages JSP, PHP General purpose scripting languages: VBScript, Perl, Python
©Silberschatz, Korth and Sudarshan9.21Database System Concepts - 6 th Edition Java Server Pages (JSP) Μία JSP σελίδα με embedded Java code Hello <% if (request.getParameter(“name”) == null) { out.println(“Hello World”); } else { out.println(“Hello, ” + request.getParameter(“name”)); } %> Η JSP μεταγλωτίζεται σε Java + Servlets Η JSP επιτρέπει νέα tags, σε tag libraries Είναι library functions π.χ. Για paginated display από μεγάλα σετ δεδομένων
©Silberschatz, Korth and Sudarshan9.22Database System Concepts - 6 th Edition PHP Πολλές libaries και για πρόσβαση σε ΒΔ με ODBC Hello <?php if (!isset($_REQUEST[‘name’])) { echo “Hello World”; } else { echo “Hello, ” + $_REQUEST[‘name’]; } ?>
©Silberschatz, Korth and Sudarshan9.23Database System Concepts - 6 th Edition Client Side Scripting Οι Browsers κατεβάζουν κάποια σκριπτ (client-side scripts) μαζί με τα documents, και τα εκτελούν σε “safe mode” στον client Javascript Macromedia Flash και Shockwave VRML Applets Επιτρέπουν στα έγγραφα να είναι active Π.χ. κίνηση Π.χ. Έλεγχος εισόδου χρήστη Ευέλικτη αλληλεπίδραση με χρήστη
©Silberschatz, Korth and Sudarshan9.24Database System Concepts - 6 th Edition Client Side Scripting και ασφάλεια Χρειάζονται ειδικοί μηχανισμοί ασφάλειας Εύκολο για περιοισμένων δυνατοτήτων γλώσσες, δύσκολο για γενικές γλώσσες όπως η Java Το Java security system διασφαλίζει ότι ο Java applet code δεν κάνει απευθείας κλήσεις Δεν επιτρέπονται δυνητικά επικίνδυνες ενέργειες όπως file writes Ειδοποιεί το χρήστη για δυνητικά επικίνδυνες ενέργειες και του δίνει δυνατότητα να συνεχίσει ή όχι το πρόγραμμα.
©Silberschatz, Korth and Sudarshan9.25Database System Concepts - 6 th Edition Javascript Ευρύτατη χρήση Η βάση των νέων Web applications (Web 2.0 applications) με πλούσια user interfaces Οι Javascript functions μπορούν Ελέγξουν εγκυρότητα εισόδου Τροποποιήσουν την εμφάνιση της Web page, μέσω του document object model (DOM) (δενδρική δομή αναπαράστασης της HTML) Επικοινωνήσουν με έναν Web server για να φέρουν δεδομένα και να αλλάξουν δυναμικά τη σελίδα χωρίς reload/refresh Η βάση της τεχνολογίας AJAX (Web 2.0) Π.χ. Επιλέγοντας τη χώρα σε ένα drop-down menu, η λίστα των νομών εμφανίζεται αυτόματα σε ένα δεύτερο drop-down menu
©Silberschatz, Korth and Sudarshan9.26Database System Concepts - 6 th Edition Javascript Παράδειγμα Javascript για τον έλεγχο της εισόδου function validate() { var credits=document.getElementById("credits").value; if (isNaN(credits)|| credits =16) { alert("Credits must be a number greater than 0 and less than 16"); return false } } Title: Credits:
©Silberschatz, Korth and Sudarshan9.27Database System Concepts - 6 th Edition Application Architectures Application layers Presentation ή user interface model-view-controller (MVC) architecture – model: business logic – view: παρουσίαση δεδομένων, εξαρτάται από τη συσκευή (display device) – controller: δέχεται τα events, εκτελεί ενέργειες, επιστρέφει ένα view στο χρήστη business-logic layer Παρέχει ένα high level view των δεδομένων και των ενεργειών σε αυτά Κρύβει τις λεπτομέρειες του σχήματος της βάσης data access layer Διασυνδέει το business logic layer και τη ΒΔ Παρέχει mapping από το object model του business layer στο σχεσιακό μοντέλο της ΒΔ
©Silberschatz, Korth and Sudarshan9.28Database System Concepts - 6 th Edition Application Architecture
©Silberschatz, Korth and Sudarshan9.29Database System Concepts - 6 th Edition Object-Relational Mapping Επιτρέπει τον κώδικα να γίνει με object-oriented data model, ενώ η αποθήκευση γίνεται σε σχεσιακή βάση Εναλλακτικά πρέπει να υπάρχει object-oriented ή object-relational ΒΔ Δεν έχουν γνωρίσει εμπορική επιτυχία Ο σχεδιαστής πρέπει να φτιάξει ένα mapping μεταξύ των object data και του σχεσιακού σχήματος Π.χ. η Java class Student αντιστοιχίζεται στον πίνακα student, και αντίστοιχα τα πεδία Ένα object μπορεί να αντιστοιχεί σε πολλές εγγραφές σε πολλούς πίνακες Η εφαρμογή ανοίγει ένα session, το οποίο συνδέεται στη ΒΔ Τα αντικείμενα δημιουργούνται και σώζονται στη ΒΔ με session.save(object) Χρησιμοποιείται το mapping για να δημιουργηθούν οι εγγραφές στη ΒΔ Με ερωτήματα μπορούν να ανακτηθούν τα objects που ικανοποιούν συγκεκριμένες προϋποθέσεις
©Silberschatz, Korth and Sudarshan9.30Database System Concepts - 6 th Edition Object-Relational Mapping εργαλεία Hibernate το πιο διαδεδομένο εργαλείο για οbject-relational mapping public domain, τρέχει σε διάφορα ΣΔΒΔ Υποστηρίζει μία query language που μεταφράζει τα queries σε SQL queries Επιτρέπει τις συσχετίσεις να αντιστοιχιστούν σε σύνολα από objects Entity Data Model της Microsoft
©Silberschatz, Korth and Sudarshan9.31Database System Concepts - 6 th Edition Απόδοση Web Server Είναι θέμα για δημοφιλή Web sites Εκατομμύρια χρήστες ανά δευτερόλεπτο Caching τεχνικές για τη μείωση κόστους εξυπηρέτησης σελίδων, εκμεταλλευόμενοι τα κοινά χαρακτηριστικά των αιτήσεων Στο server site: Caching των JDBC connections – connection pooling Caching των αποτελεσμάτων των ερωτημάτων στη ΒΔ – Ίσως χρειάζονται όμως ενημέρωση αν αλλάξει η ΒΔ Caching της παραγόμενης HTML Στο δίκτυο του client Caching των σελίδων από Web proxy
©Silberschatz, Korth and Sudarshan9.32Database System Concepts - 6 th Edition Ασφάλεια εφαρμογών
©Silberschatz, Korth and Sudarshan9.33Database System Concepts - 6 th Edition SQL Injection Π.χ. Ένα ερώτημα "select * from instructor where name = ’" + name + "’" Αν αντί για όνομα ο χρήστης βάλει: X’ or ’Y’ = ’Y Τότε το ερώτημα γίνεται : "select * from instructor where name = ’" + "X’ or ’Y’ = ’Y" + "’" Που σημαίνει: select * from instructor where name = ’X’ or ’Y’ = ’Y’ Θα μπορούσε ο χρήστης να βάλει X’; update instructor set salary = salary ; -- Αν χρησιμοποιούμε Prepared statement: "select * from instructor where name = ’X\’ or \’Y\’ = \’Y’ Πάντα πρέπει να χρησιμοποιούνται prepared statements, με την είσοδο του χρήστη ως παράμετρο Το παρακάτω δεν είναι ασφαλές conn.prepareStatement("select * from instructor where name = ’" + name + "’“)
©Silberschatz, Korth and Sudarshan9.34Database System Concepts - 6 th Edition Cross Site Scripting HTML κώδικας σε μία σελίδα που εκτελεί ενέργεια σε άλλη E.g. Κίνδυνος: αν ο χρήστης που βλέπει αυτή τη σελίδα είναι συνδεδεμένος στη mybank, μπορεί να πετύχει Απλοϊκό παράδειγμα με GET,αλλά αν ο κώδικας ήταν σε script, μπορεί να εκτελούσε και POST Ονομάζεται cross-site scripting (XSS) ή cross-site request forgery (XSRF or CSRF) Πώς ένα web site να μη γίνει όχημα για XSS ή XSRF επιθέσεις Μη αποδοχή HTML tags σε κείμενο που παρέχουν οι χρήστες, με κατάλληλες συναρτήσεις που να το ανιχνεύουν και να το αφαιρούν
©Silberschatz, Korth and Sudarshan9.35Database System Concepts - 6 th Edition Cross Site Scripting Πώς να προστατευθεί ένα web site από XSS/XSRF επιθέσεις Χρήση του referer (URL της σελίδας απ’όπου ήρθε το link) που δίνει το HTTP, ώστε να ελέγχεται αν το link ήταν από το ίδιο site, και όχι από άλλο Έλεγχος της IP του αιτήματος ότι είναι ίδια με την IP του χρήστη Προστασία από υποκλοπή του cookie Όχι χρήση GET για updates Όπως προτείνει και το HTTP standard
©Silberschatz, Korth and Sudarshan9.36Database System Concepts - 6 th Edition Διαρροή Password Δεν πρέπει τα passwords, όπως τα database passwords, να αποθηκεύονται σε clear text σε scripts που μπορεί να δουν οι χρήστες E.g. Σε αρχεία που σερβίρει ο web server Περιορισμός πρόβασης στον database server από συγκεκριμένες IPs που τρέχουν τους application servers Συνήθως τα ΣΔΒΔ έχουν δυνατότητα περιορισμού των IP που δέχονται
©Silberschatz, Korth and Sudarshan9.37Database System Concepts - 6 th Edition Application Authentication Single factor authentication όπως τα passwords ακατάλληλη για κρίσιμες εφαρμογές Μάντεμα των passwords, sniffing των πακέτων αν δεν χρηιμοποιείται κρυπτογράφηση Επαναχρησιμοποίηση passwords από τους χρήστες spyware που πιάνει τα password Two-factor authentication Π.χ. password και one-time password από SMS Π.χ. password και one-time password συσκευές Ψευδοτυχαίος αριθμός κάθε λεπτό που τον βλέπει ο χρήστης Ο χρήστης εισάγει τον ψευδοτυχαίο αριθμό Ο application server δημιουργεί τη ίδια σειρά ψευδοτυχαίων για να ελέγξει την ορθότητά τους.
©Silberschatz, Korth and Sudarshan9.38Database System Concepts - 6 th Edition Application Authentication Man-in-the-middle επίθεση Π.χ. web site που προσποιείται ότι είναι το mybank.com, και πιάνει τα πακέτα του χρήστη προς και από το mybank.com, και τα προωθεί πέρα δώθε Ούτε η two-factor authentication μπορεί να την αποτρέψει Λύση: αυθεντικοποίηση του Web site, με digital certificates (ψηφιακά πιστοποιητικά), με secure http (https) Central authentication σε έναν οργανισμό Η εφαρμογή ανακατευθύνει σε ένα κεντρικό authentication service Αποφεύγεται η επανάληψη του password του χρήστη LDAP ή Active Directory για authentication
©Silberschatz, Korth and Sudarshan9.39Database System Concepts - 6 th Edition Single Sign-On Single sign-on επιτρέπει στο χρήστη να συνδεθεί μία φορά, και οι εφαρμογές συνδέονται με το authentication service για να επιβεβαιώσουν την ταυτότητα του χρήστη χωρίς να εισάγει συνέχεια κωδικούς Security Assertion Markup Language (SAML) πρότυπο για ανταλλαγή authentication και authorization πληροφορίας Π.χ. χρήστης του ΤΕΙ Πάτρας θέλει να εγγραφεί σε εξωτερική εφαρμογή με το userid Η εφαρμογή επικοινωνεί με το Web-based authentication service στο ΤΕΙ Πάτρας και επιβεβαιώνει τι δικαιώματα έχει ο χρήστης OpenID πρότυπο για ανταλλαγή authentication μεταξύ οργανισμών Π.χ. Χρήση του Yahoo! ως OpenID authentication provider
©Silberschatz, Korth and Sudarshan9.40Database System Concepts - 6 th Edition Application-Level Authorization Η SQL δεν επιτρέπει περιορισμένη πρόσβαση όπως “φοιτητές που βλέπουν τους βαθμούς τους αλλά όχι άλλων” Πρόβλημα 1: Η ΒΔ δεν γνωρίζει ποιοι είναι οι χρήστες της εφαρμογής Πρόβλημα 2: SQL authorization γίνεται σε επίπεδο πινάκων ή στηλών αλλά όχι εγγραφών Μία λύση: views όπως create view studentTakes as select * from takes where takes.ID = syscontext.user_id() Όπου το syscontext.user_id() δίνει την ταυτότητα του χρήστη Παρέχεται από την εφαρμογή στη ΒΔ Όμως πολλά τέτοια views είναι δύσκολα διαχειρίσιμα
©Silberschatz, Korth and Sudarshan9.41Database System Concepts - 6 th Edition Application-Level Authorization Συνήθως το authorization γίνεται εξ ολοκλήρου στην εφαρμογή Η εφαρμογή έχει πρόσβαση σε όλη τη ΒΔ Μεγάλη επιφάνεια δυνητικής επίθεσης, δυσκολότερη προστασία Εναλλακτικά: fine-grained (row-level) authorization schemes Επεκτάσεις στην SQL authorization (δεν έχουν ακόμα υλοποιηθεί) Oracle Virtual Private Database (VPD) επιτρέπει κατηγορήματα που προστίθενται διάφανα σε όλα τα SQL queries Π.χ. προσθήκη ID= sys_context.user_id() σε όλα τα queries στον πίνακα student αν ο χρήστης είναι φοιτητής
©Silberschatz, Korth and Sudarshan9.42Database System Concepts - 6 th Edition Audit Trails Οι εφαρμογές πρέπει να καταγράφουν όλες τις ενέργειες ώστε να φαίνεται ποιος έκανε ένα update, ή είχε πρόσβαση σε ευαίσθητα δεδομένα Audit trails για εκ των υστέρων χρήση ώστε να Ανιχνευθούν παραβιάσεις Επισκευαστεί η ζημιά Βρεθεί ο υπαίτιος Audit trails για χρήση σε επίπεδο ΒΔ και Εφαρμογής
©Silberschatz, Korth and Sudarshan9.43Database System Concepts - 6 th Edition Κρυπτογράφηση Κρυπτογράφηση των δεδομένων εάν η ΒΔ δεν έχει ικανοποιητική προστασία authorization. Ιδιότητες καλής κρυπτογράφησης: Σχετικά απλή (απο)κρυπτογράφηση δεδομένων για authorized χρήστες. Βασίζεται όχι στη μυστικότητα του αλγορίθμου αλλά στις παραμέτρους (κλειδί). Πολύ δύσκολη ανεύρεση του κλειδιού από έναν κακόβουλο χρήστη. Symmetric-key encryption: Συμμετρική κρυπτογράφηση, ένα κλειδί Public-key encryption (asymmentric-key encryption): Ασυμμετρική, διαφορετικά κλειδιά για κρυπτο- και αποκρυπτογράφηση Το κλειδί κρυπτογράφησης μπορεί να είναι public, το αποκρυπτογράφησης μυστικό
©Silberschatz, Korth and Sudarshan9.44Database System Concepts - 6 th Edition Κρυπτογράφηση σε ΒΔ Τα ΣΔΒΔ υποστηρίζουν γενικά κρυπτογράφηση Διαφορετικά επίπεδα: disk block Κάθε disk block κρυπτογραφείται με χρήση κλειδιού που έχει το ΣΔΒΔ. Ακόμα και αν κάποιος πάρει τα δεδομένα δεν μπορεί να τα διαβάσει χωρίς το κλειδί. Ολόκληροι πίνακες ή στήλες Δεν κρυπογραφούνται τα μη ευαίσθητα δεδομένα Όσα εμπλέκονται σε primary/foreign key constraints δεν μπορούν να κρυπτογραφηθούν. Αποθήκευση κλειδιών κρυπτογράφησης και αποκρυπτογράφησης Συνήθως χρησιμοποιείται ένα single master key για την προστασία πολλών κλειδιών κρυπτογράφησης και αποκρυπτογράφησης στη ΒΔ Εναλλακτικά: η (απο)κρυπτογράφηση γίνεται στην εφαρμογή πριν σταλούν οι τιμές στη ΒΔ
©Silberschatz, Korth and Sudarshan9.45Database System Concepts - 6 th Edition Κρυπτογράφηση και Αυθεντικοποίηση Η χρήση κωδικών είναι συνήθης αλλά επιρρεπής σε υποκλοπή από το δίκτυο (sniffing). Challenge-response συστήματα που αποφεύγουν τη μετάδοση κωδικών Η ΒΔ στέλνει ένα τυχαίο challenge στο χρήστη. Ο χρήστης κρυπτογραφεί και στέλνει αποτέλεσμα. Η ΒΔ πιστοποιεί το αποτέλεσμα Μπορεί να χρησιμοποιεί κρυπτογραφία δημόσιου κλειδιού Ψηφιακές υπογραφές για την πιστοποίηση δεδομένων Παρέχουν και nonrepudiation: μη δυνατότητα άρνησης των δεδομένων
©Silberschatz, Korth and Sudarshan9.46Database System Concepts - 6 th Edition Ψηφιακά πιστοποιητικά Χρησιμοποιούνται για την πιστοποίηση των δημόσιων κλειδιών Πώς γνωρίζουμε όταν επικοινωνούμε με ένα web site ότι είναι το αυθεντικό και όχι ένας απατεώνας; Λύση: Το δημόσιο κλειδί του web site Πρόβλημα: πώς πιστοποιείται το δημόσιο κλειδί; Λύση: Κάθε client (π.χ. browser) έχει τα δημόσια κλειδιά κάποιων root-level certification authorities Ένα site μπορεί να ζητήσει το όνομα/URL και το δημόσιο κλειδί του να υπογραφούν από μία certification authority: το υπογεγραμμένο έγγραφο λέγεται certificate (πιστοποιητικό) Ο Client μπορεί να χρησιμοποιήσει το δημόσιο κλειδί του certification authority για να πιστοποιήσει το certificate Μπορεί να υπάρχουν πολλαπλά επίπεδα certification authorities. Κάθε certification authority Παρουσιάζει το δικό της certificate υπογεγραμμένο από υψηλότερου επιπέδοου authority και Χρησιμοποιεί το ιδιωτικό της κλειδί για να υπογράψει για άλλα web sites ή authorities