Μια από τις τεχνολογίες που έκανε την εμφάνισή της την τελευταία δεκαετία είναι το Blockchain. Τα πλεονεκτήματα και ειδικότερα οι προοπτικές που δημιουργεί για αποκεντρωμένες, διανεμημένες και ασφαλείς συναλλαγές, ώθησαν την τεχνολογία αυτή εντός μικρού χρονικού διαστήματος να διεισδύσει στον τεχνολογικό κόσμο. Ξεκίνησε εστιάζοντας, κατά κύριο λόγο, στις οικονομικές συναλλαγές με τη βοήθεια του κρυπτονομίσματος Bitcoin. Στη συνέχεια, μέσω της πλατφόρμας Ethereum πραγματοποιήθηκε το επόμενο μεγάλο βήμα, όπου η τεχνολογία Blockchain μπόρεσε να βρει εφαρμογή σε μη οικονομοκεντρικά περιβάλλοντα, όπως αυτό της υγείας και κυρίως αυτό της διαχείρισης της εφοδιαστικής αλυσίδας. Όμως, το μεγαλύτερο πλεονέκτημα που κάνει το Blockchain μια πολλά υποσχόμενη εφεύρεση παραμένει το οικονομικά αποκεντρωμένο μοντέλο που μπορεί να υλοποιήσει. Σύμφωνα με το μοντέλο αυτό, όλες οι χρηματικές συναλλαγές πραγματοποιούνται μέσω ενός διανεμημένου συστήματος, το οποίο δεν ανήκει σε κάποια κεντρική αρχή, όπως για παράδειγμα μια τράπεζα. Το σύστημα αυτό λειτουργεί με τη βοήθεια των χρηστών του και προσφέρει ασφαλή εκτέλεση συναλλαγών σε άμεσο χρόνο. Πάνω σε αυτό το μοντέλο έχει προταθεί μια εναλλακτική μορφή χρηματοδότησης μικρομεσαίων επιχειρήσεων. Αυτή αναφέρεται ως αρχική προσφορά νομίσματος (στην αγγλική βιβλιογραφία αναφέρεται ως Initial Coin Offering ή εν συντομία ICO) και βοηθάει τις επιχειρήσεις να ενισχυθούν οικονομικά με αυτοματοποιημένο, ασφαλή και αποκεντρωμένο τρόπο. Ωστόσο, όπως όλες οι διαδικασίες, έτσι και το ICO, μπορεί να σχεδιαστεί με λανθασμένα κριτήρια ασφαλείας και να οδηγήσει στην οικονομική καταστροφή μιας εταιρίας. Στόχος, λοιπόν, αυτής της εργασίας είναι η τεχνική ανάλυση μιας διαδικασίας ICO που πραγματοποιείται στην πλατφόρμα του Ethereum και συγκεκριμένα η παρουσίαση των τμημάτων που μπορούν να υπονομεύσουν την ασφάλεια και την αξιοπιστία της, καθώς και να προταθούν τρόποι αντιμετώπισης και πρόληψης. Στο τέλος, υλοποιείται μια τέτοια διαδικασία στην πράξη, όπου και εφαρμόζονται όλα όσα αναλύθηκαν στα προηγούμενα στάδια.
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς νομίσματος στο Ethereum Blockchain
1. Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή
διαδικασίας αρχικής προσφοράς νομίσματος στο
Ethereum Blockchain
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
Επιβλέπων καθηγητής: κ. Ανδρέας Συμεωνίδης
Καμτζηρίδης Γεώργιος
ΑΕΜ: 8542
Οκτώβρης, 2019
ISSEL Intelligent Systems & Software Engineering Labgroup
2. ISSEL Intelligent Systems & Software Engineering Labgroup 2
Κίνητρο
• Επεκτείνει τη λειτουργία της σε μη οικονομοκεντρικά συστήματα
• Διακινεί νόμιμα μεγάλες χρηματικές ποσότητες
• Ενισχύει τη ψηφιοποίηση αγαθών και προϊόντων
• Βοηθά τη χρηματοδότηση μικρομεσαίων επιχειρήσεων
Τα τελευταία 4 χρόνια η τεχνολογία Blockchain μέσω της πλατφόρμας Ethereum:
Τα τελευταία 2 χρόνια μέσω του Ethereum:
• Πραγματοποιήθηκαν πάνω από 1337 ξεχωριστές χρηματοδοτήσεις επιχειρήσεων1
• Συλλέχθηκαν περίπου 8.158.239.066$ μέσω χρηματοδοτήσεων1
1 Πηγές: https://www.icodata.io/stats/2018, https://www.icodata.io/stats/2019
2 Πηγή: https://www.investopedia.com/news/ethereum-smart-contracts-vulnerable-
hacks-4-million-ether-risk/
Ωστόσο, την ίδια περίοδο σε Blockchain δίκτυα:
• Κλάπηκαν περισσότερα από 500.000.000$ λόγω ευπαθών λογισμικών2
• Πάνω από 4.000.000$ ήταν υπό την κατοχή ευάλωτων προγραμμάτων2
3. ISSEL Intelligent Systems & Software Engineering Labgroup 3
Σκοπός
• Παρουσίαση της τεχνολογίας Blockchain με έμφαση στο δίκτυο του Ethereum
• Ανάλυση της αρχιτεκτονικής του λογισμικού που λειτουργεί στο Ethereum
• Έρευνα σχετική με τις ευπάθειες των προγραμμάτων στο Ethereum
• Υπόδειξη χρήσης προτύπων σχεδίασης και γενικότερων λύσεων για την αντιμετώπιση των προβλημάτων
• Καθιέρωση καλών πρακτικών σε θέματα ασφαλείας που αφορούν την ανάπτυξη και παραγωγή
λογισμικού
Γενικά:
Ειδικότερα:
• Επεξήγηση μιας διαδικασίας αρχικής προσφοράς νομίσματος (Initial Coin Offering ή ICO)
• Αντιμετώπιση απειλών και λογικών σφαλμάτων ενός ICO
• Εφαρμογή εξειδικευμένων πρακτικών και συμβουλών κατά την ανάπτυξη ενός ICO
Τέλος, παρουσιάζεται αναλυτικά η σχεδίαση και υλοποίηση μιας διαδικασίας ICO με γνώμονα την ασφάλεια
και αξιοπιστία στην πλατφόρμα του Ethereum.
4. ISSEL Intelligent Systems & Software Engineering Labgroup 4
Γνώσεις που αποκτήθηκαν
• Χαρακτηριστικά δικτύου
• Αρχιτεκτονική λογισμικού
• Ευπάθειες λογισμικού
• Μέθοδοι αντιμετώπισης προβλημάτων
• Καλές πρακτικές
• Πρότυπα σχεδίασης
Γενικά: Ειδικότερα στο Ethereum:
• Τεχνολογία Blockchain
• Αρχική προσφορά νομίσματος (ICO)
Εν τέλει:
• Ασφαλή σχεδίαση και ανάπτυξη λογισμικού στο Ethereum
• Υλοποίηση λογισμικού για τη διεκπεραίωση ενός ICO
ακολουθώντας υψηλά πρότυπα ασφαλείας
5. ISSEL Intelligent Systems & Software Engineering Labgroup 5
Υπόβαθρο – Ethereum (1/2)
Τι είναι το Ethereum;
• Είναι ένα Blockchain δίκτυο
• Δημιουργήθηκε το 2014 από μια ομάδα προγραμματιστών στην Ελβετία
• Διαθέτει δικό του κρυπτονόμισμα, το ether
Γιατί ξεχωρίζει το δίκτυο του Ethereum;
Γιατί εκτός από την καταχώρηση οικονομικών συναλλαγών επιτρέπει και την
εκτέλεση προγραμμάτων γενικότερου σκοπού
Στο Ethereum:
• Καταχωρούνται προγράμματα τα οποία ονομάζονται έξυπνα συμβόλαια
(Smart Contracts)
• Οι χρήστες του μπορούν να αλληλεπιδράσουν με αυτά μέσω συναλλαγών
• Οι συναλλαγές εκτελούνται από τους miners
• Τα αποτελέσματα των συναλλαγών καταχωρούνται ξανά στην αλυσίδα
6. ISSEL Intelligent Systems & Software Engineering Labgroup 6
Υπόβαθρο – Ethereum (2/2)
• Στην πράξη το δίκτυο του Ethereum αποτελεί έναν παγκόσμιο υπολογιστή
• Τα προγράμματα γράφονται σε μια γλώσσα υψηλού επιπέδου
Η δημοφιλέστερη γλώσσα υψηλού επιπέδου είναι η Solidity1 η οποία:
1Αποθετήριο: https://github.com/ethereum/solidity
• Είναι σχεδιασμένη για την ανάπτυξη smart contracts
• Αποτελεί αλχημεία των γλωσσών Javascript και C++
• Είναι Turing-Complete
• Υποστηρίζει την αντικειμενοστραφή σχεδίαση λογισμικού
7. ISSEL Intelligent Systems & Software Engineering Labgroup 7
Υπόβαθρο – Αρχική προσφορά νομίσματος
• Μια μέθοδος συλλογικής χρηματοδότησης ενός προϊόντος ή μιας υπηρεσίας
• Λαμβάνει χώρα, κυρίως, σε Blockchain περιβάλλοντα
Λειτουργία:
Τι είναι;
1. Η εταιρία δημιουργεί μια ποσότητα από ψηφιακές μάρκες (tokens)
2. Συσχετίζει τα tokens με ένα προϊόν ή υπηρεσία
3. Κοστολογεί τα tokens βάσει της συσχέτισης
4. Διαθέτει τα tokens, σε διακριτά στάδια, σε τιμή μικρότερη απ’ αυτή που θα έχει τελικά το προϊόν ή η
υπηρεσία
Αποτέλεσμα:
• Η εταιρία χρηματοδοτείται άμεσα από τους πελάτες της
• Οι πελάτες αποκτούν το προϊόν ή την υπηρεσία που επιθυμούν σε χαμηλή τιμή
Κυριότερα πλεονεκτήματα:
• Αυτοματοποιημένη, αποκεντρωμένη και ανεξάρτητη διαδικασία
• Ορισμένες φορές ανεξάρτητη από κεντρικές αρχές, χωρίς κάποιο νομικό περιορισμό ή ρύθμιση
8. ISSEL Intelligent Systems & Software Engineering Labgroup 8
Μεθοδολογία – Επίθεση επανεισαγωγής
Δεδομένα:
• Τα smart contracts επιτρέπουν την παύση της εκτέλεσής τους ώστε να εκτελεστεί μια ρουτίνα ενός
εξωτερικού smart contract
• Μόλις ολοκληρωθεί η εκτέλεση της εξωτερικής ρουτίνας, το αρχικό smart contract συνεχίζει να εκτελείται
Πρόβλημα:
Λύση: χρήση προτύπου σχεδίασης ελέγχων-επιδράσεων-αλληλεπιδράσεων (Checks-Effects-
Interactions)
Βήματα:
Αποτέλεσμα: η εσωτερική κατάσταση του smart contract δεν εξαρτάται άμεσα από την
αλληλεπίδραση με το εξωτερικό σύστημα
Η εκτέλεση αυθαίρετου κώδικα μπορεί να δημιουργήσει καταστάσεις αναδρομής, όπου η εξωτερική ρουτίνα
καλεί, ξανά, το αρχικό smart contract επιτρέποντας τη μεταβολή της κατάστασής του με απρόσμενο τρόπο
1. Έλεγχος δεδομένων εισόδου
2. Μεταβολές στην εσωτερική κατάσταση του smart contract
3. Αλληλεπιδράσεις με εξωτερικά συστήματα
9. ISSEL Intelligent Systems & Software Engineering Labgroup 9
Μεθοδολογία – Επίθεση άρνησης υπηρεσίας
Δεδομένα:
• Στο δίκτυο του Ethereum ο αριθμός των συναλλαγών που μπορούν να καταχωρηθούν σε ένα block
περιορίζεται από το block gas limit
• Ένα smart contract μπορεί να εκτελεί συναλλαγές μαζικά
Πρόβλημα:
Λύση: χρήση προτύπου σχεδίασης Pull Over Push
Βήματα:
Αποτέλεσμα: εξασφαλίζεται η καταχώρηση των συναλλαγών στην αλυσίδα και οι ενέργειες ενός
χρήστη δεν επηρεάζουν τους υπόλοιπους χρήστες, αλλά ούτε και το σύνολο του συστήματος
• Μια συναλλαγή ενδέχεται να μην μπορεί να καταχωρηθεί λόγω της ποσότητας από gas που χρειάζεται
• Μαζικές ενέργειες μπορούν να αναβληθούν αέναα εξαιτίας κακοηθών χρηστών
1. Αποφυγή χρήσης βρόχων επανάληψης σε ανεξέλεγκτου μήκους πίνακες
2. Αποφυγή μαζικών ενεργειών
3. Εκκίνηση διαδικασίας από τον εκάστοτε χρήστη
10. ISSEL Intelligent Systems & Software Engineering Labgroup 10
Μεθοδολογία – Επίθεση εξουσιοδότησης
Δεδομένα:
• Η γλώσσα Solidity δίνει τη δυνατότητα λήψης της «ταυτότητας» του δράστη που εκτελεί την τρέχουσα
ρουτίνα, αλλά και αυτού που εκκίνησε τη διαδικασία
• Ο δράστης μπορεί να είναι είτε εξωτερικός λογαριασμός είτε λογαριασμός συμβολαίου
Πρόβλημα:
Λύση: εξουσιοδότηση αποκλειστικά και μόνο μέσω της «ταυτότητας» του τελευταίου χρήστη
Βήματα:
Αποτέλεσμα: εξασφαλίζεται ότι η εξουσιοδότηση γίνεται στον «πραγματικό» δράστη
Η χρήση του δράστη που εκκίνησε τη διαδικασία ως «ταυτότητα» για την εξουσιοδότηση μιας ενέργειας
μπορεί να προκαλέσει επιθέσεις τύπου man in the middle
1. Απαγόρευση χρήσης της μεταβλητής tx.origin σε θέματα εξουσιοδότησης
2. Αποκλειστική χρήση της μεταβλητής msg.sender σε θέματα εξουσιοδότησης
11. ISSEL Intelligent Systems & Software Engineering Labgroup 11
Μεθοδολογία – Καλές πρακτικές
• Έχει δηλώσεις περιορισμού σε όλες τις συναρτήσεις και τις μεταβλητές
• Έχει μηχανισμούς απενεργοποίησης και ενεργοποίησης λειτουργιών
• Πραγματοποιεί αποστολές ether μέσω της συνάρτησης transfer
• Λαμβάνει υπόψη καταστάσεις υπερχείλισης (Overflow) ή ανεπάρκειας (Underflow)
• Κάνει σωστή χρήση των μεταβλητών «χρόνου»
• Έχει αυτοματοποιημένους ελέγχους (Unit Tests) με υψηλή κάλυψη
• Έχει πλήρη τεκμηρίωση τόσο στον πηγαίο κώδικα όσο και σε μορφή εγγράφου ή ιστοσελίδας
Ένα smart contract πρέπει να:
12. ISSEL Intelligent Systems & Software Engineering Labgroup 12
Αποτελέσματα (1/6)
1. Τεκμηρίωση σε μορφή σχολίων
2. Checks-Effects-Interactions
A. Checks
B. Effects
C. Interactions
3. Χρήση της συνάρτησης transfer
Συνάρτηση επιστροφής χρημάτων
13. ISSEL Intelligent Systems & Software Engineering Labgroup 13
Αποτελέσματα (2/6)
Συνάρτηση εξαργύρωσης tokens
1. Pull Over Push
14. ISSEL Intelligent Systems & Software Engineering Labgroup 14
Αποτελέσματα (3/6)
Συνάρτηση μεταφοράς tokens
Χρήση συναρτήσεων βιβλιοθήκης
SafeMath για την αντιμετώπιση
περιπτώσεων overflow και underflow
16. ISSEL Intelligent Systems & Software Engineering Labgroup 16
Αποτελέσματα (5/6)
1. Χρήση του timestamp αντί του block number
2. Χρήση του msg.sender αντί του tx.origin
Τροποποιητές συναρτήσεων χρόνου
Τροποποιητές συναρτήσεων
εξουσιοδότησης
17. ISSEL Intelligent Systems & Software Engineering Labgroup 17
Αποτελέσματα (6/6)
Κάλυψη Unit Tests Τεκμηρίωση κώδικα
18. ISSEL Intelligent Systems & Software Engineering Labgroup 18
Υποδομή
Διεπαφή χρήστη Διακομιστής
• Αλληλεπίδραση χρηστών με τα smart contracts
• Παρακολούθηση των smart contracts
• Παρουσίαση αναλυτικών δεδομένων και
διαγραμμάτων
Τεχνολογίες:
• AngularJS: 1.6.5
• Typescript: 3.4.4
• Web3JS: 1.0.0-beta.37
• ChartJS: 2.8.0
• Παρακολούθηση της δραστηριότητας των smart
contracts
• Λεπτομερής καταγραφή των δεδομένων που
διαχειρίζονται τα smart contracts
• Διάθεση των δεδομένων στη διεπαφή για την
κατασκευή διαγραμμάτων
Τεχνολογίες:
• NodeJS: 11.10.1
• ExpressJS: 4.17.1
• MongoDB: 3.4.21
22. ISSEL Intelligent Systems & Software Engineering Labgroup 22
Συμπεράσματα
• Η ανάπτυξη ασφαλών smart contracts είναι μια απαιτητική διαδικασία
• Διαφέρει στη νοοτροπία από τη συμβατική παραγωγή λογισμικού
• Χρειάζεται εξειδικευμένες γνώσεις σε διάφορους τομείς
• Απαιτεί ιδιαίτερη προσοχή κατά τα στάδια της ανάλυσης ενός smart contract
• Η κατανόηση των κυριότερων ευπαθειών ενός smart contract είναι απαραίτητη
• Η εφαρμογή καλών πρακτικών κατά την ανάπτυξη είναι αναγκαία
Διαδικασία ανάπτυξης smart contracts για μια διαδικασία ICO
23. ISSEL Intelligent Systems & Software Engineering Labgroup 23
Μελλοντική εργασία
Ο τομέας της ασφάλειας είναι ραγδαία εξελισσόμενος, ιδιαίτερα σε μια πλατφόρμα ηλικίας 5 ετών.
Καθημερινά εντοπίζονται νέες ευπάθειες σε συστήματα που θεωρούνταν, μέχρι πρότερα, ασφαλή.
Το δίκτυο του Ethereum αναβαθμίζεται ετησίως, προσθέτοντας νέα χαρακτηριστικά και δημιουργώντας
καινούργιες απαιτήσεις ασφαλείας.
Εμφανίζονται νέα πρότυπα σχεδίασης για την αντιμετώπιση προβλημάτων στα smart contracts.
24. ISSEL Intelligent Systems & Software Engineering Labgroup 24
Ευχαριστίες
Θα ήθελα να ευχαριστήσω τον Αναπληρωτή καθηγητή κ. Ανδρέα Συμεωνίδη για την εμπιστοσύνη που μου έδειξε
με την αποδοχή της πρότασης για τη διπλωματική εργασία, καθώς και τη συμβολή του στην τελική μορφή αυτής
Επίσης, θα ήθελα να ευχαριστήσω τον κ. Δημήτρη Φιλιππίδη ο οποίος πρότεινε τη βασική ιδέα της εργασίας
Τέλος, θα ήθελα να ευχαριστήσω όλους εσάς που είστε σήμερα εδώ γι’ αυτήν την παρουσίαση