Συγκριτική μελέτη διεπιφανειών παράλληλου προγραμματισμού σε εφαρμογές εύρεσης κωδικού κρυπτογραφημένου με αλγόριθμο MD5.

 
This item is provided by the institution :

Repository :
Psepheda - Digital Library and Institutional Repository
see the original item page
in the repository's web site and access all digital files if the item*
share




2012 (EN)

Συγκριτική μελέτη διεπιφανειών παράλληλου προγραμματισμού σε εφαρμογές εύρεσης κωδικού κρυπτογραφημένου με αλγόριθμο MD5.

Σαλονικίδης, Διονύσιος

Πρόγραμμα Μεταπτυχιακών Σπουδών Ειδίκευσης στην Εφαρμοσμένη Πληροφορική
Μαργαρίτης, Κωνσταντίνος

Η συγκεκριμένη έρευνα επιχειρεί να συγκρίνει την απόδοση εφαρμογών εύρεσης κωδικού κρυπτογραφημένου με MD5, χρησιμοποιώντας διεπιφάνειες παράλληλου προγραμματισμού. Συγκεκριμένα μελετούνται τα παράλληλα APIs (Application Programming Interfaces - APIs) OpenMP (Open Multi-Processing), TPL (Task Parallel Library) και CUDA (Compute Unified Device Architecture). Για την υλοποίηση των προγραμμάτων χρησιμοποιήθηκαν τρία περιβάλλοντα ανάπτυξης εφαρμογών (Integrated Development Environments - IDEs) με διαφορετικές γλώσσες προγραμματισμού: Code Blocks με προγραμματισμό σε C, Visual Studio με προγραμματισμό σε C# και Visual Studio με προγραμματισμό σε CUDA C, αντίστοιχα. Οι υλοποιήσεις με OpenMP και TPL αφορούν τον παραλληλισμό με χρήση της CPU (Central Processing Unit), ενώ αυτή με CUDA τον παραλληλισμό με χρήση της GPU (Graphics Processing Unit). Οι εφαρμογές που χρησιμοποιούν την CPU πραγματοποιήθηκαν με δύο διαφορετικές υλοποιήσεις: την απλή εκτέλεση χωρίς παραλληλισμό και την υλοποίηση με παράλληλο API. Τα προγράμματα που χρησιμοποιούν την GPU πραγματοποιήθηκαν με δύο διαφορετικές παράλληλες υλοποιήσεις: η πρώτη για εύρεση της θέσης του κωδικού από την CPU και η δεύτερη για εύρεση της θέσης του κωδικού από την GPU. Για να υπάρχει άμεση σύγκριση των αποτελεσμάτων ο βασικός κορμός υλοποίησης είναι ο ίδιος για όλες τις εφαρμογές. Αρχικά ο χρήστης εισάγει έναν κωδικό σε αλφαριθμητική μορφή, μέγιστου μήκους 8 χαρακτήρων. Στη συνέχεια ο κωδικός αυτός κωδικοποιείται με MD5 (MD5 Hash) και κατόπιν το πρόγραμμα κάνοντας διαδοχικούς συνδυασμούς με την μέθοδο Brute Force προσπαθεί να τον βρει. Πριν την εκτέλεση της διαδικασίας Brute Force το πρόγραμμα εκτελεί έναν έλεγχο για ένα λεπτό από το οποίο συλλέγει τον χρόνο εκτέλεσης της συγκεκριμένης διαδικασίας. Η διαδικασία που χρησιμοποιείται στον έλεγχο αυτό είναι ίδια με αυτή που χρησιμοποιείται στη μέθοδο Brute Force. Με βάση τον χρόνο που μετρήθηκε υπολογίζεται ο μέγιστος χρόνος ολοκλήρωσης της μετατροπής όλων των απαιτούμενων συνδυασμών για n χαρακτήρες κάθε φορά, π.χ. ο χρόνος ολοκλήρωσης όλων των συνδυασμών για 2 χαρακτήρες, για 3 χαρακτήρες κ.λ.π. Στο τέλος εμφανίζονται τα τελικά αποτελέσματα που αναφέρουν τον κωδικό σε αλφαριθμητική μορφή, εφόσον βρεθεί, ή κατάλληλο μήνυμα, εφόσον δεν βρεθεί. Επίσης εμφανίζονται οι συνολικοί χρόνοι εκτέλεσης, ο αριθμός των συνδυασμών που ελέγχθηκαν, ο μέγιστος αριθμός συνδυασμών ανά δευτερόλεπτο που επιτεύχθηκε κ.λ.π. Σκοπός της έρευνας είναι να γίνει σύγκριση των παράλληλων υλοποιήσεων όχι μόνο ως προς την απόδοσή τους, αλλά και ως προς την ευχρηστία στον προγραμματισμό τους. Στόχος της έρευνας είναι να βρεθούν οι καλύτερες υλοποιήσεις των παράλληλων APIs ως προς τις μεθόδους προγραμματισμού τους, ώστε να επιτευχθεί σε κάθε περίπτωση η μέγιστη και καλύτερη αξιοποίηση της χρήσης της CPU ή της GPU. Για τις απλές υλοποιήσεις, χωρίς παραλληλισμό το πρόγραμμα παράγει διαδοχικούς συνδυασμούς χαρακτήρων τους οποίους θεωρεί ως έναν κωδικό που στη συνέχεια τον μετατρέπει σε MD5 Hash. Στο τέλος συγκρίνει τον MD5 κωδικό που παρήγαγε με τον αρχικό κώδικα που του δόθηκε. Αν είναι ίδιοι, θεωρεί ότι τον βρήκε, διαφορετικά συνεχίζει στον επόμενο. Δηλαδή η όλη διαδικασία ακολουθεί το σειριακό μοντέλο. Στις παράλληλες υλοποιήσεις οι συνδυασμοί που παράγονται μετατρέπονται σε MD5 Hash όχι σειριακά, αλλά παράλληλα σε ομάδες των Ν στοιχείων ανάλογα με τις υλοποιήσεις του κάθε API. Τα αποτελέσματα των παραπάνω υλοποιήσεων έδειξαν ότι η ταχύτερη παράλληλη διαδικασία σε επίπεδο CPU ήταν αυτή με το OpenMP. Οι μετρήσεις έδειξαν ότι απείχαν αρκετά από την υλοποίηση με το TPL. Στο θέμα του προγραμματισμού το OpenMP ήταν το ευκολότερο με την καλύτερη τεκμηρίωση και αυτό οφείλεται στο ότι χρησιμοποιείται αρκετά χρόνια και λόγω του ανοικτού κώδικά του έχει ωριμάσει περισσότερο από τα υπόλοιπα. Το TPL είναι κλειστό στον κώδικά του και υφίσταται πολλούς περιορισμούς στον προγραμματισμό του. Ο βασικότερος λόγος των περιορισμών αυτών είναι να διατηρηθεί από την Microsoft (η οποία αναπτύσσει το TPL) η μεγαλύτερη ασφάλεια στο λειτουργικό της σύστημα.
Διπλωματική εργασία--Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη, 2012.

Electronic Thesis or Dissertation
Text

CUDA
Τεχνική Brute Force
TPL
Αλγόριθμος MD5
OpenMP
Παράλληλες διεπιφάνειες προγραμματισμού εφαρμογών
Παράλληλος προγραμματισμός


Greek

2012-06-28T12:48:42Z
2012


Πανεπιστήμιο Μακεδονίας Οικονομικών και Κοινωνικών Επιστημών.




*Institutions are responsible for keeping their URLs functional (digital file, item page in repository site)