HEAL DSpace

Αποδεδειγμένα ασφαλής ανίχνευση εισαγωγής κακόβουλου κώδικα ή δεδομένων στη μνήμη μιας εφαρμογής

Αποθετήριο DSpace/Manakin

Εμφάνιση απλής εγγραφής

dc.contributor.author Μητρόπουλος, Κωνσταντίνος el
dc.contributor.author Mitropoulos, Konstantinos en
dc.date.accessioned 2017-09-12T08:38:20Z
dc.date.available 2017-09-12T08:38:20Z
dc.date.issued 2017-09-12
dc.identifier.uri https://dspace.lib.ntua.gr/xmlui/handle/123456789/45579
dc.identifier.uri http://dx.doi.org/10.26240/heal.ntua.14405
dc.rights Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα *
dc.rights.uri http://creativecommons.org/licenses/by-nc-nd/3.0/gr/ *
dc.subject Ανίχνευση επίθεσης el
dc.subject Αποδεδειγμένη ασφάλεια el
dc.subject Εξωτερική πιστοποίηση εγκυρότητας el
dc.subject Κρυπτογραφία el
dc.subject Επίθεση σε RAM el
dc.subject Injection detection en
dc.subject Provable security en
dc.subject Remote attestation en
dc.subject Cryptography en
dc.subject Attack in RAM en
dc.title Αποδεδειγμένα ασφαλής ανίχνευση εισαγωγής κακόβουλου κώδικα ή δεδομένων στη μνήμη μιας εφαρμογής el
dc.title Provably secure code or data injection detection in a process's memory en
heal.type bachelorThesis
heal.classification Κρυπτογραφία el
heal.classification Cryptography en
heal.classificationURI http://data.seab.gr/concepts/1d5032de48e058a3bff46c7446dbde3e5c392ea4
heal.classificationURI http://data.seab.gr/concepts/1d5032de48e058a3bff46c7446dbde3e5c392ea4
heal.language el
heal.access free
heal.recordProvider ntua el
heal.publicationDate 2017-06-23
heal.abstract Στην παρούσα διπλωματική εργασία μελετάμε την υλοποίηση της θεωρητικής ασφάλισης της μνήμης μιας εφαρμογής από κάποιον κακόβουλο ο οποίος μπορεί, κάποια δεδομένη χρονική στιγμή, να γράψει σε αυτήν με κάποιο εξωτερικό τρόπο (πχ με ακτινοβολία ή κάνοντας παράνομη χρήση του DMA) αλλά δεν μπορεί να τη διαβάσει. Η ιδέα ανήκει στους Richard Lipton, Rafail Ostrovsky, και Βασίλη Ζήκα (http://drops.dagstuhl.de/opus/volltexte/2016/6311/ [1]). Η προσέγγιση έχει ενδιαφέρον γιατί είναι provably secure, δηλαδή αποδεδειγμένα ασφαλής και δεν βασίζεται σε ευριστικές μεθόδους ή απλές τεχνικές διασφάλισης που ίσως να δουλεύουν στις περισσότερες περιπτώσεις αλλά δεν είναι αποδεδειγμένα ασφαλείς. Γι' αυτόν τον λόγο στοχεύει σε συγκεκριμένο πρόβλημα με συγκεκριμένες παραδοχές (μη δυνατότητα ανάγνωσης), και το λύνει εξ' ολοκλήρου. Η ιδέα είναι να παρεμβάλουμε, ανάμεσα στα χρήσιμα bytes της μνήμης μιας εφαρμογής κομμάτια κλειδιών (keys) καθώς και Message Authentication Codes, για ελέγχους ακεραιότητας. Προϋποθέτουμε μια ασφαλή CPU η οποία πριν λάβει κάτι από τη μνήμη ελέγχει το αντίστοιχο MAC(<χρήσιμα bytes> || <keyshares>) να είναι ορθό, και μετά προχωρά κανονικά. Όταν λάβει από έναν εξωτερικό παίκτη μια πρόκληση (challenge), συνθέτοντας τα κλειδιά των οποίων τα κομμάτια έχουν διασπαρεί στη μνήμη, αποκρυπτογραφεί ορθά το challenge και απαντάει με το plaintext. Ένας επιτιθέμενος αν αλλάξει τη μνήμη είτε θα αλλάξει κάτι που θα ακυρώνει τα MACs (οπότε η ασφαλής CPU θα σταματήσει να εκτελεί ή θα καταστρέψει τα keyshares), είτε θα αλλάξει όλο το block των χρήσιμων bytes+keyshares+MAC, οπότε θα ακυρώσει τα κλειδιά και θα το καταλάβει ο εξωτερικός παίκτης. Στόχος της διπλωματικής είναι να προσεγγίσουμε τον χρόνο που χρειάζεται για να υλοποιηθεί στην πράξη αυτό το σχήμα σε hardware. Υλοποιούμε λοιπόν την προσομοίωση στο userspace ως μια καλή προσέγγιση (του άνω φράγματος του χρόνου), χρησιμοποιώντας κώδικα που κάνει τις ασφαλείς λειτουργίες. Στον μεν κανονικό κώδικα βάζουμε επιπρόσθετα jmps (για την αγνόηση των keyshares και macs) αλλά και verification calls όταν πρέπει να ελεγχθεί ένα MAC, ενώ την υπόλοιπη μνήμη την προσπελαύνουμε με ειδικούς getters και setters (που ελέγχουν τα MAC για την υπόλοιπη μνήμη). Φυσικά, η μνήμη της εφαρμογής δεν είναι όλη “ασφαλής”, αλλά εμείς δεσμεύουμε ένα κομμάτι της το οποίο το καλούμε ασφαλές και εκτελούμε τις προσομοιώσεις εκεί. Τα αριθμητικά αποτελέσματα καταδεικνύουν ότι κοστίζει αρκετά η συχνή επαλήθευση των MACs, και ο ολικός χρόνος είναι μεγάλος. Προτείνουμε όμως καλύτερες (και αρκετά πιο δύσκολες στην υλοποίηση) τεχνικές ακόμα καλύτερης προσέγγισης, αλλά και ιδέες (όπως η χρήση ασφαλούς cache) που μειώνουν πολύ τον επιπρόσθετο χρόνο. el
heal.abstract In the present diploma thesis we study the implementation of the theoretical safeguarding of a process's memory from a malicious actor who can, at a given moment, write on it using some external procedure (eg with radiation or by misusing DMA), but cannot read it. The idea belongs to Richard Lipton, Rafail Ostrovsky, and Vassilis Zikas (http://drops.dagstuhl.de/opus/volltexte/2016/6311/ [1]). This approach is interesting because it is provably secure, and does not depend on heuristics or other techniques that may work on some occasions but are not provably secure. That's why it targets a specific problem with specific assumptions (the adversary does not have the ablitity to read the memory before injecting), and solves it completely. The idea is to interleave, among the useful bytes in a process's memory, keyshares as well as Message Authentication Codes, for integrity. We assume a secure CPU which, before loading something from memory, checks the corresponding MAC(<useful bytes>||<keyshares>) to be correct, and afterwards it continues the execution. When it receives a challenge from an attestator, it combines the keyshares to produce keys and decrypts the challenge answering with the plaintext. An attacker who will alter the memory, will either alter something that invalidates the MACs (so the secure CPU will stop executing or will destroy the keyshares), or will alter the entire block of useful bytes+keyshares+MAC, so the keys will be altered and the remote attestator will detect it. The target of this diploma thesis is to approach the execution time that it takes for a schema like that being implemented in hardware. So, we implement the simulation in the userspace as a good estimate (of the upper bound of the execution time), using code that does the secure operations. We insert jmps in the normal code (so as to ignore keyshares and MACs), as well as verification calls when a MAC needs to be checked. The rest of the memory is accessed through secure getters and setters (who check the macs as well). Of course, the entire process's memory is not “secure”, but we allocate a part of it which we call secure and run the simulations there. The numerical results show that the continuous MAC verification costs a lot, so it takes a lot for the program to complete. We propose better (and harder to impelement) techniques of an even better approach of the execution time, as well as ideas (like the utilization of a secure cache) who reduce the total time by a big amount. en
heal.advisorName Παγουρτζής, Αριστείδης el
heal.committeeMemberName Παπασπύρου, Νικόλαος el
heal.committeeMemberName Φωτάκης, Δημήτριος el
heal.committeeMemberName Παγουρτζής, Αριστείδης el
heal.academicPublisher Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών. Εργαστήριο Λογικής και Επιστήμης Υπολογισμών el
heal.academicPublisherID ntua
heal.numberOfPages 81 σ.
heal.fullTextAvailability true


Αρχεία σε αυτό το τεκμήριο

Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο:

Αυτό το τεκμήριο εμφανίζεται στην ακόλουθη συλλογή(ές)

Εμφάνιση απλής εγγραφής

Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα Εκτός από όπου ορίζεται κάτι διαφορετικό, αυτή η άδεια περιγράφεται ως Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα