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

Σχετικά έγγραφα
Γενικά Μία μέθοδος κρυπτογραφίας δημοσίου κλειδιού Αντί για δακτύλιους της μορφής Z n χρησιμοποιεί ελλειπτικές καμπύλες ορισμένες σε πεπερασμένα σώματ

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

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

Αριθμοθεωρητικοί Αλγόριθμοι

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

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

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

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

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

α) f(x(t), y(t)) = 0,

ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή 2. Θεωρία αριθμών Αλγεβρικές δομές 3. Οι κρυπταλγόριθμοι και οι ιδιότητές τους

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

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

ΚΡΥΠΤΟΓΡΑΦΙΑ ΕΛΛΕΙΠΤΙΚΩΝ ΚΑΜΠΥΛΩΝ ΚΑΙ H ΕΦΑΡΜΟΓΗ ΤΗΣ ΣΤΟ BITCOIN. Επιβλέπων Καθηγητής: Άγγελος Κιαγιάς. Γιώργος Καρυστιανός ΜΠΛΑ

Παύλος Εφραιμίδης. Βασικές Έννοιες Κρυπτογραφίας. Ασφ Υπολ Συστ

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

Εθνικό Μετσόβιο Πολυτεχνείο

Cryptography and Network Security Chapter 9. Fifth Edition by William Stallings

Κρυπτοσύστημα RSA (Rivest, Shamir, Adlemann, 1977) Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής

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

Δυαδικό Σύστημα Αρίθμησης

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

πυθαγόρειες τριάδες, τριγωνομετρία και υπολογισμός ολοκληρωμάτων.

Cryptography and Network Security Chapter 13. Fifth Edition by William Stallings

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΒΑΣΙΣΜΕΝΗΣ ΣΕ ΕΛΛΕΙΠΤΙΚΕΣ ΚΑΜΠΥΛΕΣ ΠΑΝΩ ΣΕ BINARY EXTENSION GALOIS FIELDS GF(2 N )

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ

Αριθμητική Ανάλυση & Εφαρμογές

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

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

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

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

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

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

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

Κρυπτογραφία Δημόσιου Κλειδιού II Αλγόριθμος RSA

ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΛΥΜΕΝΕΣ & ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ. Επιμέλεια: Γ. Π. Βαξεβάνης (Γ. Π. Β.

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

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac

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

Κρυπτογραφία Δημοσίου Κλειδιού

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ

Πρόβληµα 2 (15 µονάδες)

Κρυπτογραφία. Εργαστηριακό μάθημα 1

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ

Υπολογιστικά & Διακριτά Μαθηματικά

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

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

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ

Οργάνωση Υπολογιστών

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Συστήματα συντεταγμένων

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

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

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

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

Κεφάλαιο 2. Διανύσματα και Συστήματα Συντεταγμένων

Εφαρμοσμένα Μαθηματικά ΙΙ

Στ Τάξη. Α/Α Μαθηματικό περιεχόμενο Δείκτες Επιτυχίας Ώρες Διδ. 1 ENOTHTA 1

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

Ορισμένες σελίδες του βιβλίου

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1.1. Διαφορική Εξίσωση και λύση αυτής

ΕΝΟΤΗΤΑ 5. Μονοψήφιος πολλαπλασιασμός Προβλήματα αναλογίας

Εφαρμοσμένα Μαθηματικά ΙΙ

Θέματα Διπλωματικών Εργασιών

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

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

1 x m 2. degn = m 1 + m m n. a(m 1 m 2...m k )x m 1

Υπολογιστικά & Διακριτά Μαθηματικά

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Μ Α Θ Η Μ Α Τ Ι Κ Α Γ ΓΥΜΝΑΣΙΟΥ ΖΕΡΒΟΣ ΜΑΝΟΛΗΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

EE512: Error Control Coding

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ : Η Υ : Σ Ο Κ Δ Ε του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Δ Χ Γ : 227492 Θέμα Ασφάλεια Δεδομένων σε Υλικό με τη χρήση Ελλειπτικών Καμπυλών Binary Edwards Επιβλέπων Καθηγητής Οδυσσέας Κουφοπαύλου Αριθμός Διπλωματικής Εργασίας: Πάτρα, Οκτώβριος 2018

ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η διπλωματική εργασία με θέμα Ασφάλεια Δεδομένων σε Υλικό με τη χρήση Ελλειπτικών Καμπυλών Binary Edwards του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Δημόπουλου Χαράλαμπου του Γεωργίου (Α.Μ.: 227492) παρουσιάστηκε δημόσια και εξετάστηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις / / Ο Επιβλέπων Ο Διευθυντής του Τομέα Οδυσσέας Κουφοπαύλου Καθηγητής Χούσος Ευθύμιος Καθηγητής

Περίληψη Αντικείμενο της εργασίας αυτής αποτελεί ένα αρκετά ενδιαφέρον ζήτημα στο χώρο της Κρυπτογραφίας, αυτό της προσπάθειας ανάδειξης πιο αποδοτικών και ασφαλέστερων οικογενειών Ελλειπτικών Καμπυλών καθώς και την πρακτική εφαρμογή αυτών. Υπό αυτό το πρίσμα, η εργασία αυτή καταπιάνεται με την ανάπτυξη ενός Κρυπτογραφικού Συστήματος Ελλειπτικών Καμπυλών βασισμένο στις Καμπύλες Edwards και πιο συγκεκριμένα τη δυαδική τους μορφή, δηλαδή τις Binary Edwards Curves. Αρχικά, σε μαθηματικό επίπεδο, γίνεται μια σύγκριση μεταξύ των διαφορετικών οικογενειών καμπυλών με τα αντίστοιχα μειονεκτήματα και πλεονεκτήματα που προσφέρει η καθεμία. Σε σχέση με τις ήδη καθιερωμένες καμπύλες Weierstrass, οι Καμπύλες Edwards θεωρούνται ολοκληρωμένες και ομοιόμορφες, καθώς δεν παρουσιάζουν σημεία εξαίρεσης που αποτελούν τρωτό σημείο όσον αφορά την ασφάλεια. Μειονέκτημά τους όμως σε σχέση με τις Weierstrass είναι η απόδοσή τους λόγω των περισσότερων πράξεων πεπερασμένων πεδίων που απαιτούν. Σε αυτό το σημείο πρέπει να ληφθεί η σωστή απόφαση όσον αφορά τον τύπο πεπερασμένου πεδίου, καθώς αυτή θα επηρρεάσει σε μεγάλο βαθμό τη μορφή και του υπόλοιπου συστήματος. Υπό αυτό το πρίσμα, μία επιλογή αφορά την εφαρμογή του Κρυπτογραφικού Συστήματος εξολοκλήρου σε λογισμικό, προσφέροντας αρκετά μεγάλη ευελιξία με σοβαρό ανίκτυπο όμως την ταχύτητα εκτέλεσης και την ασφάλεια από επιθέσεις τύπου Side Channel Analysis. Η άλλη προσέγγιση είναι μια υλοποίηση ως επί το πλείστον σε υλικό, γεγονός που προσδίδει τις μέγιστες επιδόσεις και ασφάλεια, με αντίκτυπο παρ όλα αυτά το χρόνο σχεδιασμού και την ανελαστικότητα που αναπόφευκτα προσδίδει μία τέτοιου τύπου υλοποίηση. Θέλοντας λοιπόν να προσδώσουμε ταχύτητα στο σύστημά μας προχωρούμε στην επιλογή δυαδικών GF (2 k ) πεδίων αντί των πρώτων GF (p) και κατά συνέπεια στην υλοποίησή των πράξεών τους απευθείας σε υλικό, αφού σε αυτά απλουστεύονται κατά μεγάλο βαθμό σχεδιαστικά οι πράξεις αυτές. Έχοντας επίγνωση πλέον οτι στο χαμηλότερο επίπεδο οι πράξεις της πρόσθεσης και του πολλαπλασιασμού σε πεδία GF (2 k ) θα υλοποιηθούν σε υλικό, προσπαθούμε να αντλήσουμε όσο το δυνατόν περισσότερη ταχύτητα ανά χρόνο σχεδίασης γίνεται. Παρατηρούμε λοιπόν πως στον αλγόριθμο γέννησης και επικύρωσης υπογραφών ECDSA η πιο απαιτητική ενέργεια είναι η πράξη του Βαθμωτού Πολλαπλασιασμού (Scalar Multiplication). Για αυτόν τον λόγο λαμβάνεται η απόφαση το Κρυπτογραφικό Σύστημα να είναι ένα υβρίδιο υλικού-λογισμικού, με την πράξη του Βαθμωτού Πολλαπλασιασμού να πραγματοποιείται σε υλικό και τις υπόλοιπες αλγοριθμικές ενέργειες να τις αναλαμβάνει το λογισμικό. Προχωρώντας προς τον τελικό στόχο την υλοποίηση ενός πολλαπλασιαστή με ισορροπημένα χαρακτηριστικά όσον αφορά την ταχύτητα v

και τον αριθμό των χρησιμοποιούμενων λογικών πυλών, χωρίς όμως να υστερείται προστατευτικών μέτρων απέναντι σε SCA επιθέσεις, εφαρμόζουμε μία σειρά από τεχνικές βελτιστοποίησης. Πιο συγκεκριμένα, μετά από μία Data Dependency Graph ανάλυση, αναμιγνύονται οι GF (2 k ) πράξεις και της Πρόσθεσης και του Διπλασιασμού σημείου καμπύλης και παραλληλίζονται ταυτόχρονα σε επίπεδα, δημιουργώντας ένα συμπαγές συνονθύλεμα που αποκρύπτει όσο το δυνατόν περισσότερη κρίσιμη πληροφορία καθ όλη τη διάρκεια εκτέλεσης του Βαθμωτού Πολλαπλασιασμού. Ο πολλαπλασιαστής είναι δομημένος από τρεις ξεχωριστές και ημιαυτόνομες μονάδες που αναλαμβάνουν η κάθε μια την αποθήκευση των αποτελεσμάτων στο δικό τους αρχείο καταχωρητών και την επανάκτηση των τιμών αυτών ώστε να προωθηθούν στις επιμέρους αριθμητικές μονάδες προς υπολογισμό των νέων αποτελεσμάτων. Στις μονάδες αυτές έχει εφαρμοστεί μία τεχνική σημαντικής μείωσης της επιφάνειας του δικτύου πολυπλεκτών μέσω της ομαδοποίησης των αποτελεσμάτων ανά δύο. Τις τρεις αυτές μονάδες συγχρονίζει μία Μηχανή Πεπερασμένων Καταστάσεων (FSM), υπεύθυνη για τη διαβίβαση όλων των σημάτων ελέγχου. Μία επιπλέον τεχνική αφορά τη δόμηση του Αρχείου Καταχωρητών με τέτοιο τρόπο ώστε να διαχειρίζεται πιο αποδοτικά τη διάρκεια ζωής των αποτελεσμάτων με συνέπεια τη μείωση του αριθμού των αναγκαίων καταχωρητών. Περισσότερες λεπτομέρειες για τις συγκεκριμένες τεχνικές παρουσιάζονται στο Κεφάλαιο 3. Στην προσπάθεια να ενισχυθεί το συνολικό σύστημα από επιθέσεις τύπου SPA (Simple Power Attack) και SCA (Side Channel Analysis), έχει προταθεί μία σειρά αντίμετρων. Η εκτέλεση του Βαθμωτού Πολλαπλασιασμού επιτυγχάνεται με τη χρήση του αλγορίθμου Montgomery Power Ladder (MPL), ο οποίος προσφέρει απόκρυψη των εκτελεσθέντων πράξεων σημείων χωρίς όμως την εισαγωγή επιπλέον ψεύτικων πράξεων. Εκτός όμως από τον παραλληλισμό επιπέδων των GF (2 k ) πράξεων και τη χρήση του MPL, δύο επιπλέον μέτρα προστασίας από SCA επιθέσεις έχουν εφαρμοστεί. Το πρώτο αφορά την τυχαιοποίηση της βαθμωτής τιμής του πολλαπλασιασμού, η οποία γίνεται σε επίπεδο λογισμικού και το δεύτερο αφορά την τυχαιοποίηση των προβολικών συντεταγμένων του σημείου εξόδου του Βαθμωτού Πολλαπλασιαστή πολλές φορές κατά τη διάρκεια εκτέλεσης του πολλαπλασιασμού. Για να δοκιμαστεί η αρχιτεκτονική του συστήματος αυτού σε πραγματικές συνθήκες, υλοποιήθηκε σε υλικό με τη βοήθεια του Zynq- 7000 SoC FPGA (Zedboard). Ο Βαθμωτός Πολλαπλασιαστής συνδέεται με έναν επεξεργαστή ARM Cortex-A9 μέσω ενός driver γραμμένου σε C. Τα αποτελέσματα που παράχθηκαν φανερώνουν μία ισορροπημένη σχεδίαση, με αρκετά ικανοποιητικές τιμές όσον αφορά το συνδυασμό ταχύτητας και χρησιμοποιούμενης επιφάνειας. Τέλος, το σύστημα ελέγχθηκε ως προς την αντίσταση που προσφέρει ενάντια σε επιθέσεις μέσω της χρήσης της τεχνικής του Test Vector vi

Leakage Assessment (TVLA), όπου επίσης φανερώθηκαν αρκετά ικανοποιητικά αποτελέσματα που του προσδίδουν ένα σεβαστό επίπεδο προστασίας. Λαμβάνοντας υπόψιν λοιπόν και τις θετικές μετρήσεις υλοποίησης όπως αναφέρθηκαν παραπάνω, φανερώνεται πως το σύστημα αυτό αποτελεί μία ολοκληρωμένη λύση όσον αφορά τα διάφορα χαρακτηριστικά του και υλοποιημένο με βάση μία καινούρια οικογένεια καμπυλών. vii

Abstract The point of interest of this Thesis is an important subject in the field of Cryptography, notably the effort of nominating and implementing in practice a safer and more efficient family of Elliptic Curves. Through this scope, we developed an Elliptic Curve Cryptosystem based on the Edwards Curves family and more specifically its binary GF (2 k ) representation, Binary Edwards Curves. Firstly, a comparison is performed in mathematical level between the different family types of Elliptic Curves, highlighting the advantages and disadvantages each one offers. Compared to the already standardized Weierstrass family, Edwards Curves are considered unified and complete, due to the absence of exception points that could expose critical security vulnerabilities. On the other hand, they tend to perform generally slower than Weierstrass curves because of the higher number of field operations they require. At this point in the design process, the correct finite field must be chosen that will drastically alter the form of the remaining system. One highly flexible approach is implementing every aspect of the Cryptographic System in software while lacking in operational speed and Side Channel Attack resistance. The other approach is essentially a mostly hardware-based implementation that sacrifices flexibility and design time for high levels of performance and security. Working towards a faster system, binary GF (2 k ) fields were used instead of primary GF (p) ones, due to the simplicity they offer in a hardware design. Imbued with the knowledge that at the lowest level the GF (2 k ) addition and multiplication operations will be hardware implemented, we try to improve the performance to design time ratio. Observing the ECDSA signature generation and verification algorithms we conclude that the Scalar Multiplication is the most demanding operation. This leads to the decision of implementing a purely hardware Scalar Multiplier that completes an otherwise purely software-based system design. A series of optimization techniques are then applied on the scalar multiplier, aiming for a balanced design in respect to speed and number of logic gates that also doesn t lack protective countermeasures against SCAs. After a Data Dependency Graph analysis, the GF (2 k ) addition and doubling operations are grouped together and parallelized in multiple layers, hiding critical information during the execution of the scalar multiplication. The multiplier s architecture consists of three semi-autonomous units, each with their own register file where the results are being stored again for future calculations. By grouping in pairs the inputs to the arithmetic units at the multiplexer network level, we achieve significant reduction in occupied LUTs. viii

The control of all the systems is operated by a Finite State Machine (FSM). The last optimization technique is applied on the Register File by optimizing the data lifespan which leads to a reduction in necessary registers. More information on these techniques is presented in Chapter 3. In order to improve the system s resistance against Simple Power Attacks and Side Channel Analysis attacks, a series of countermeasures is proposed. Regarding the scalar multiplication algorithm, the Montgomery Power Ladder (MPL) algorithm is implemented, offering operation masking without introducing any dummy operations overhead. The last two SCA resistance countermeasures we implemented are the software-based scalar blinding and the randomization of the projective coordinates of the output point at the end of every MPL round. For implementation of the system in real-time, we used the Zynq- 7000 SoC FPGA (Zedboard). The Scalar Multiplier is connected with an ARM Cortex-A9 through a C driver. The implementation results reveal a quite balanced design regarding used logic gates and execution speed. Lastly, for test purposes of the SCA resistance, the Test Vector Leakage Assessment (TVLA) technique generated quite positive results, indicating a strong level of protection. The combination of both scopes interesting results indicates the implemented system is a complete, protected and well balanced solution in a newly explored family of Elliptic Curves. ix

Ευχαριστίες Θα ήθελα να εκφράσω ένα μεγάλο ευχαριστώ και την αμέριστη ευγνωμοσύνη μου στον κ. Αποστόλη Φούρναρη και στον κ. Οδυσσέα Κουφοπαύλου για την πολύτιμη υπομονή και βοήθειά τους που μου προσέφεραν κατά την εκπόνηση της παρούσας διπλωματικής εργασίας. xi

ΠΕΡΙΕΧΟΜΕΝΑ 1 Μαθηματικό Υπόβαθρο 5 1.1 Αρχές Θεωρίας Ομάδων..................... 5 1.2 Αρχές Θεωρίας Πεπερασμένων Πεδίων............ 6 1.2.1 Αριθμητική Πεπερασμένων Πεδίων.......... 7 1.3 Αρχές Θεωρίας Ελλειπτικών Καμπυλών............ 10 1.3.1 Αριθμητική Ελλειπτικών Καμπυλών.......... 12 1.4 Καμπύλες Edwards....................... 13 1.4.1 Καμπύλες Binary Edwards............... 14 1.5 Ασύμμετρη Κρυπτογραφία................... 15 1.5.1 Κρυπτογραφία και Ελλειπτικές Καμπύλες...... 17 1.5.2 Ο Αλγόριθμος ECDSA.................. 18 2 Περιγραφή Συστήματος 21 2.1 Γενική Προσέγγιση Αρχιτεκτονικής............... 21 2.2 Δομή Συστήματος........................ 23 2.2.1 Δομή Λογισμικού..................... 24 2.3 Τρόπος Λειτουργίας....................... 25 2.3.1 Σύνδεση Λογισμικού και Υλικού............ 25 2.3.2 Λειτουργία σε Πραγματικό Χρόνο........... 26 3 Βαθμωτός Πολλαπλασιαστής 29 3.1 Γενική Προσέγγιση Αρχιτεκτονικής............... 29 3.1.1 Προστασία εναντίον Simple Power Attacks...... 30 3.1.2 Προστασία εναντίον Side Channel Attacks...... 31 3.2 Προσέγγιση Σχεδίασης για Προστασία από SCAs...... 33 3.3 Προσέγγιση Σχεδίασης για Βελτιστοποίηση Πόρων..... 38 xiii

xiv 3.4 Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή.......... 40 3.4.1 Μηχανή Πεπερασμένων Καταστάσεων (FSM).... 40 3.4.2 Λειτουργικές Μονάδες................. 41 3.4.3 Αρχείο Καταχωρητών.................. 45 3.4.4 Γεννήτρια Ψευδοτυχαίων Αριθμών (PRNG)...... 46 4 Αποτελέσματα 51 4.1 Περιβάλλον Υλοποίησης..................... 51 4.2 Επιδόσεις Συνολικού Συστήματος............... 52 4.3 Επιδόσεις Βαθμωτού Πολλαπλασιαστή............ 54 4.4 Επιδόσεις Αντίστασης σε SCAs................. 54 4.4.1 Μεθοδολογία Εκτίμησης Διαρροής........... 57 4.4.2 Εφαρμογή Εκτίμησης Διαρροής............ 58 4.5 Συμπεράσματα.......................... 60 Βιβλιογραφία 63

ΕΙΣΑΓΩΓΗ Με τη ραγδαία ανάπτυξη που έχουν γνωρίσει τα τελευταία χρόνια τα ενσωματωμένα υπολογιστικά συστήματα (embedded systems), κρίνεται απαραίτητη όσο ποτέ η ανάγκη αυξημένης ασφάλειας σε αυτά, καθώς και στη μεταξύ τους επικοινωνία. Η εγγενής δυσκολία υλοποίησης ικανοποιητικού επιπέδου ασφάλειας σε τέτοιου είδους συστήματα έγκειται στους περιορισμούς μεγέθους, επεξεργαστικής ισχύος και κατανάλωσης που θέτουν από τη φύση τους. Ο αλγόριθμος RSA (Rivest-Shamir-Adleman) είναι ένας από τους πρώτους αλγορίθμους Δημοσίου Κλειδιού που αναπτύχθηκε και καθιερώθηκε με την πάροδο των χρόνων. Παρόλα αυτά, αποτελεί έναν αλγόριθμο σχετικά αργό και απαιτητικό όσον αφορά το μέγεθος κλειδιού, που πλέον μπορεί να φτάσει και τα 4096 bits. Τα προβλήματα αυτά επιλύει σε αρκετά μεγάλο βαθμό η Κρυπτογραφία Ελλειπτικών Καμπυλών, προσφέροντας ίδιου επιπέδου ασφάλεια με αρκετά μικρότερο μέγεθος κλειδιού σε σχέση με τον RSA. Το γεγονός αυτό την ανατάσσει σε μια ελκυστική επιλογή προς υλοποίηση σε εφαρμογές ενσωματωμένων υπολογιστικών συστημάτων. Αυτό έγινε εφικτό μέσω της εφαρμογής δημοφιλών κρυπτογραφικών λύσεων στο γενικότερο μαθηματικό πλαίσιο που προσφέρει η Κρυπτογραφία Εκκειπτικών Καμπυλών, όπως η μετεξέλιξη του αλγορίθμου ECDSA από τον DSA (Digital Signature Scheme). Η διάδοση του αλγορίθμου αυτού ήταν ευρεία όχι μόνο για εφαρμογές σχετικές με το Internet of Things, αλλά και σε υψηλής απόδοσης υπολογιστικά συστήματα. Επομένως, ο σχεδιαστής μιας τέτοιας ECDSA υλοποίησης επιβάλλεται να λάβει υπόψιν του τις απαιτήσεις σε ταχύτητα, ευελιξία σε γρήγορες αλλαγές αλλά και προστασία απέναντι σε επιθέσεις που έχουν ως στόχο να εξαγάγουν μυστική πληροφορία (Side Channel Attacks). 1

2 Εισαγωγή Η ισορροπία ανάμεσα στις τρεις αυτές παραπάνω αρχές είναι αρκετά δύσκολο να επιτευχθεί. Η ιδιαίτερη μαθηματική περιπλοκότητα που εισαγάγει η χρήση της Κρυπτογραφίας Ελλειπτικών Καμπυλών, κυρίως λόγω της πράξης του Βαθμωτού Πολλαπλασιασμού, οδηγεί σε αυξημένο υπολογιστικό κόστος αλλά και σε αυξημένο αριθμό πόρων υλικού. Για την αύξηση της προσδοκούμενης απόδοσης, υπάρχει η επιλογή της μεταφοράς της λειτουργικότητας του αλγορίθμου απευθείας σε υλικό, με αντάλλαγμα όμως την ευελιξία του συστήματος, κάτι που απαιτεί την εξεύρεση μιας ισορροπημένης λύσης. Πιο συγκεκριμένα, μία αρκετά γνωστή τεχνική είναι η υλοποίηση των πιο εντατικών πράξεων σε υλικό, με τις υπόλοιπες να συμπληρώνονται μέσω λογισμικού. Μέσω της τεχνικής αυτής επιτυγχάνουμε ισορροπία ανάμεσα στην απόδοση και την ευελιξία, αλλά συνίσταται προσοχή κατά τη σχεδίαση, καθώς μια αφελής υλοποίηση ενός Βαθμωτού Πολλαπλασιαστή ελοχεύει αρκετούς κινδύνους, όντας ευπαθής απέναντι σε SCAs. Οι Καμπύλες Weierstrass, η πιο διαδεδομένη μορφή Ελλειπτικής Καμπύλης μέχρι σήμερα και καθιερωμένες από το National Institute of Standardization Technology (NIST), δεν προσφέρουν μια ολοκληρωμένη και συμμετρική προσέγγιση για όλες τις πράξεις σημείων σε καμπύλη, με αποτέλεσμα την ύπαρξη σημείων εξαιρέσεων ευάλωτων σε επιθέσεις [10], [13], [29]. Προς επίλυση του προβλήματος αυτού ολοκληρωμένες φόρμουλες προτάθηκαν [30] για καμπύλες Weierstrass μόνο όμως σε πεδία GF (p). Το ίδιο δεν κατέστη εφικτό όμως και για καμπύλες Weierstrass ορισμένες πάνω σε πεδία GF (2 k ). Για να αντιμετωπιστεί, λοιπόν, αυτή η έλλειψη ομοιομορφίας και πληρότητας, μία εναλλακτική λύση προτάθηκε στο [3], βασιζόμενη πάνω σε μία νέα μορφή Ελλειπτικών Καμπυλών, τις λεγόμενες Edwards Curves για GF (p). Αργότερα, η πρόταση αυτή επεκτάθηκε και για GF (2 k ) [4], δημιουργώντας έτσι τις λεγόμενες Binary Edwards Curves (BEC). Χαρακτηριστικό γνώρισμα των καμπυλών αυτών λόγω της διαφορετικής μορφής τους σε σχέση με τις Weierstrass είναι η εγγενής συμμετρία, πληρότητα και ομοιομορφία που προσφέρουν, στοιχεία που προσδίδουν περισσότερη προστασία απέναντι σε SCAs. Μειονέκτημά τους, παρόλα αυτά, αποτελεί ο μεγαλύτερος αριθμός πράξεων πεδίου GF (2 k ) που απαιτούν σε σχέση με τις Weierstrass, οδηγώντας έτσι σε χαμηλότερης απόδοσης συστήματα. Εν κατακλείδι, όσον αφορά την Κρυπτογραφία Ελλειπτικών Καμπυλών, υπάρχουν περαιτέρω περιθώρια βελτίωσης των προαναφερθέντων γνωρισμάτων, παράλληλα με την ανάγκη υλοποίησης κατάλληλων συστημάτων ανθεκτικών σε κρυπταναλυτικές επιθέσεις. Στα παρακάτω κεφάλαια αναφέρουμε το απαραίτητο μαθηματικό υπόβαθρο, προσφέροντας λύσεις στα παραπάνω προβλήματα μέσω της σχεδίασης ενός συστήματος Ελλειπτικών Καμπυλών με επιτάχυνση υλικού (hardware accelerated), βασισμένο στην καινούρια οικογένεια Ελλεπτικών Καμπυλών των Binary Edwards Curves, που όπως προαναφέρθηκε αποτελέι μία λύση αρκετά πιο

ανθεκτική σε κρυπταναλυτικές επιθέσεις από τις ήδη καθιερωμένες οικογένειες. 3

ΚΕΦΑΛΑΙΟ 1 ΜΑΘΗΜΑΤΙΚΟ ΥΠΟΒΑΘΡΟ Στο συγκεκριμένο κεφάλαιο παρουσιάζονται και αναλύονται οι μαθηματικές έννοιες απαραίτητες προς κατανόηση των διαφόρων θεμάτων σχετιζόμενα με την παρούσα διπλωματική εργασία. Αρχικά, γίνεται αναφορά στη θεωρία ομάδων όσον αφορά ιδιαιτέρως τα πεπερασμένα σώματα, τα οποία συσχετίζονται και με την αριθμητική των ελλειπτικών καμπυλών όπως αναλύεται στη συνέχεια. Έπειτα, παρουσιάζεται μια ξεχωριστή κατηγορία ελλειπτικών καμπυλών, οι Binary Edwards Curves και εν τέλει τα πλεονεκτήματα που προσφέρει η εφαρμογή των Ελλειπτικών Καμπυλών στην Κρυπτογραφία. 1.1 Αρχές Θεωρίας Ομάδων Μία αβελιανή ομάδα είναι ένα σύνολο στοιχείων Α, όπου μαζί με μία οποιαδήποτε πράξη μπορούν να συνδυάσουν δύο στοιχεία a και b που ανήκουν σε αυτήν και να σχηματιστεί ένα καινούριο στοιχείο a b. Για να οριστεί όμως σαν αβελιανή ομάδα το σύνολο των στοιχείων και η πράξη (A, ), πρέπει να ικανοποιούνται οι εξής ιδιότητες: Κλειστότητα: Για όλα τα a, b A, το αποτέλεσμα της πράξης a b θα βρίσκεται επίσης στο Α. Προσεταιριστική: Ισχύει (a b) c = a (b c) για όλα τα a, b, b A. Ταυτότητα: Υπάρχει ένα στοιχείο e A, έτσι ώστε για όλα τα στοιχεία στο Α να ισχύει e a = a e = a. Αντιστροφή: Για κάθε a A, υπάρχει ένα στοιχείο b A, ώστε a b = b a = e, όπου e το στοιχείο ταυτότητας. 5

6 Μαθηματικό Υπόβαθρο Αντιμεταθετικότητα: Για όλα τα a, b A, ισχύει a b = b a. Η τελευταία ιδιότητα της αντιμεταθετικότητας είναι καθοριστική ώστε μια ομάδα να λέγεται αβελιανή. Σε αυτό το σημείο μπορούν να οριστούν λοιπόν η προσθετική ομάδα (G, +) και η πολλαπλασιαστική ομάδα (G, ), δηλαδή το σύνολο των στοιχείων G όπου μπορεί να εφαρμοστεί πάνω τους η πράξη της πρόσθεσης και του πολλαπλασιασμού αντίστοιχα. Υπάρχουν επίσης οι λεγόμενες κυκλικές ομάδες, δηλαδή όταν για αυτές υφίσταται ένα στοιχείο g G, ονομαζόμενο κι ως ο γεννήτορας της ομάδας, τέτοιο ώστε όλα τα στοιχεία αυτής να μπορούν να υπολογιστούν αν εφαρμόσουμε επαναληπτικά στο στοιχείο g την αριθμητική πράξη που ορίζει την ομάδα αυτή. Παραδείγματος χάριν, μιας αθροιστικής ομάδας τα στοιχεία θα είναι G = {0, g, 2g, 3g,...} κι αντιστοίχως τα στοιχεία μιας πολλαπλασιαστικής ομάδας θα είναι G = {1, g, g 2, g 3,...}. 1.2 Αρχές Θεωρίας Πεπερασμένων Πεδίων Μία ομάδα λέγεται σώμα (F, +, ) όταν έχει στοιχεία ορισμένα τόσο για άθροιση όσο και για πολλαπλασιασμό και έχει αντιστοίχως και σύμφωνα με τα προαναφερθέντα τις παρακάτω ιδιότητες: Το (F, +) είναι μια αβελιανή ομάδα, δηλαδή ισχύει a + b = b + a, έχοντας ως στοιχείο ταυτότητας το 0. Το (F, ) είναι μια αβελιανή ομάδα, δηλαδή ισχύει a b = b a, έχοντας ως στοιχείο ταυτότητας το 1. Ο πολλαπλασιασμός είναι προσεταιριστικός στο F, δηλαδή ισχύει (a b) c = a (b c) για όλα τα a, b, c F. Ο πολλαπλασιασμός είναι επιμεριστικός πάνω στην πρόσθεση +, δηλαδή a (b + c) = (a b) + (a c) και (b + c) a = (b a) + (c a) για όλα τα a, b, c F. Υπάρχει το στοιχείο ταυτότητας 1 F όπου 1 0 έτσι ώστε a a = a 1 = a για κάθε a F. Υπάρχει ένα στοιχείο a 1 F έτσι ώστε a 1 a = a a 1 = 1, για κάθε a 0, a F. Πριν ορίσουμε τα πεπερασμένα σώματα πρέπει να αναφερθούμε στα σώματα επέκτασης (extension fields). Αν το F είναι υποσώμα του Κ, δηλαδή F K, τότε ονομάζουμε Κ το σώμα επέκτασης του F και μπορούμε να το υποδηλώσουμε ως K/F ή [K : F ]. Στα μαθηματικά, ένα πεπερασμένο σώμα ή σώμα Galois (από το Γάλλο μαθηματικό Everiste Galois) είναι ένα σώμα το οποίο έχει πεπερασμένο πλήθος στοιχείων σε σχέση με ένα άπειρο. Συμβολίζονται ως GF (p), συνήθως έχουν τη μορφή GF (p) = {0, 1,..., p 1} και παρουσιάζουν εξαιρετικά χρήσιμες ιδιότητες σε τομείς όπως η Θεωρία Αριθμών, η Αλγεβρική

Αρχές Θεωρίας Πεπερασμένων Πεδίων 7 Γεωμετρία, η Θεωρία Κωδικοποίησης και η Κρυπτογραφία. Η χαρακτηριστική (characteristic) ενός σώματος είναι ένας πρώτος αριθμός p, αποτελεί απαραίτητη προϋπόθεση για την ύπαρξη ενός πεπερασμένου σώματος GF (p) και συμβολίζεται ως Char(GF (p)). Αντιστοίχως, μπορούμε να ορίσουμε πεπερασμένα σώματα επέκτασης GF (q) πάνω στο GF (p) τα σώματα που έχουν q = p k. Ο αριθμός k είναι ένας θετικός ακέραιος και υποδηλώνει το βαθμό του πεπερασμένου σώματος επέκτασης. Όταν k = 1 το σώμα επέκτασης και το πεπερασμένο ταυτίζονται. Έτσι, αυτά τα πεπερασμένα σώματα ονομάζονται πρώτα ή GF (p). Αν p = 2, τότε το πεπερασμένο σώμα επέκτασης ονομάζεται πεπερασμένο σώμα δυαδικής επέκτασης και συμβολίζεται ως GF (2 k ). Τα συγκεκριμένα σώματα εμφανίζουν ιδιότητες αρκετά επιθυμητές για υπολογιστικές εφαρμογές, καθώς οι αριθμητικές πράξεις πάνω σε αυτά είναι αρκετά πιο απλοποιημένες σε σχέση με τα πρώτα σώματα GF (p). Η τάξη ενός σώματος επέκτασης ονομάζεται Order(GF (q)) και υποδηλώνει το πλήθος των στοιχείων του σώματος. 1.2.1 Αριθμητική Πεπερασμένων Πεδίων Αρχικά, πρέπει να επιλεχθεί το λεγόμενο ανάγωγο πολυώνυμο f(x) k βαθμού, το οποίο μπορεί να διαιρεθεί ακριβώς με τον εαυτό του ή τη μονάδα και είναι μονικό, δηλαδή ο συντελεστής του μεγιστοβάθμιου όρου του είναι μονάδα. Αναπαρίσταται ως: με τους συντελεστές f i GF (2). k 1 f(x) = x k + f i x i (1.1) Έτσι, ένας τρόπος που μπορούν τα στοιχεία του GF (2 k ) να αναπαρασταθούν είναι μέσω της πολυωνυμικής βάσης, δηλαδή ως δυαδικά πολυώνυμα (οι συντελεστές τους ανήκουν στο F 2 = {0, 1}) βαθμού το πολύ k 1 ορισμένα πλέον πάνω στη βάση {x k 1,..., x 3, x 2, x, 1} και με συντελεστές a i GF (2), όπου x μια ρίζα του ανάγωγου πολυωνύμου f(x) που ορίζει το GF (2 k ). Εν τέλει, το στοιχείο θα έχει τη μορφή: i=0 a = a k 1 x k 1 + a k 2 x k 2 + a k 3 x k 3 +... + a 1 x + a 0 (1.2) Μπορούμε λοιπόν και διανυσματικά να περιγράψουμε το στοιχείο a ως a = {a k 1, a k 2, a k 3,..., a 1, a 0 }, γεγονός που κάνει τη χρήση των δυαδικών πεδίων ιδιαίτερα ελκυστική, αφού είναι εφικτό με έναν δυαδικό αριθμό να αναπαραστήσουμε στοιχεία του πεδίου. Τα πεδία GF (2 k ) θα μας απασχολήσουν αποκλειστικά και στην υλοποίηση της διπλωματικής όπως θα φανεί και στα επόμενα κεφάλαια. Σε αυτό το σημείο μπορούμε να αναφέρουμε τις βασικές πράξεις οριζόμενες πάνω στα πεπερασμένα σώματα GF (2 k ) όταν έχουμε αναπαράσταση πολυωνυμικής βάσης, δηλαδή την GF (2 k ) πρόσθεση και αφαίρεση,

8 Μαθηματικό Υπόβαθρο το GF (2 k ) πολλαπλασιασμό και τετραγωνισμό, καθώς και την GF (2 k ) αντιστροφή και διαίρεση. Οι πράξεις που θα μας απασχολήσουν στην υλοποίηση είναι η πρόσθεση-αφαίρεση κι ο πολλαπλασιασμός πεδίου. GF (2 k ) Πρόσθεση-Αφαίρεση: Η πρόσθεση και η αφαίρεση πραγματοποιούνται προσθέτοντας ή αφαιρώντας αντίστοιχα δύο στοιχεία a, b GF (2 k ) modulo τη χαρακτηριστική. Στην περίπτωσή μας, όπου η χαρακτηριστική ισούται με 2, η πρόσθεση modulo 2, η αφαίρεση modulo 2, καθώς και η XOR πράξη είναι πανομοιότυπες. Επομένως, οι πράξεις της πρόσθεσης και της αφαίρεσης μπορούν να αντικατασταθούν ισοδυνάμως από μία πράξη bitwise XOR μεταξύ των αντίστοιχων συντελεστών a i και b i των στοιχείων a, b. GF (2 k ) Πολλαπλασιασμός: Για πολυωνυμική βάση, υποθέτουμε οτι τα a(x), b(x) είναι στοιχεία του GF (2 k ) που ορίζεται πάνω στο ανάγωγο πολυώνυμο f(x). Σε αυτήν την περίπτωση, ο πολλαπλασιασμός ορίζεται ως: k 1 c(x) = c i x i = a(x) b(x) = a(x) b(x) mod f(x) (1.3) i=0 όπου c(x) GF (2 k ) και c i GF (2). Ο πολλαπλασιασμός των πολυωνύμων οδηγεί σε ένα 2k 1 βαθμού πολυώνυμο, το οποίο όπως είναι προφανές δεν ανήκει πλέον στο GF (2 k ). Γι αυτό το λόγο, είναι απαραίτητη η πραγματοποίηση modulo f(x) πράξης πάνω στο αποτέλεσμα του πολλαπλασιασμού. Αυτές οι δύο ενέργειες μπορούν, ανάλογα και με τον αλγόριθμο, να πραγματοποιηθούν ταυτοχρόνως ή ξεχωριστά. Όσον αφορά την πράξη modulo, αυτή πραγματοποιείται χρησιμοποιώντας τον ορισμό του πεδίου GF (2 k ) πολυωνυμικής βάσης, έχοντας ήδη από τη σχέση (1.1) τη μορφή του ανάγωγου πολυωνύμου, με x τη ρίζα του f(x). Εφόσον το x είναι η ρίζα, τότε θα ισχύει: k 1 k 1 f(x) = x k + f i x i = 0 x k = f i x i i=0 επειδή στα δυαδικά σώματα η πρόσθεση είναι ίδια με την αφαίρεση. Έτσι, i=0 k 1 k 1 x x k = x k+1 = x f i x i = f k 1 x k + f i 1 x i i=0 i=1

Αρχές Θεωρίας Πεπερασμένων Πεδίων 9 Άρα το x k+1 μπορεί να υπολογιστεί ως k 1 k 1 k 1 x k+1 = f k 1 f i x i + f i 1 x i = (f k 1 f i + f i 1 )x i + f k 1 f 0 i=0 i=1 Με αυτόν τον τρόπο, αντικαθιστούμε τους επιπλέον συντελεστές x i για k i 2k 1 με ένα συνδυασμό των x i και των συντελεστών f i του ανάγωγου πολυωνύμου f(x), για 0 i k 1. Έτσι, το γινόμενό μας ανήχθηκε σε ένα πολυώνυμο βαθμού k 1 και ανήκει πλέον στο GF (2 k ). Υπάρχουν αρκετοί τύποι πολλαπλασιαστών σε GF (2 k ), καθώς και αρκετοί αλγόριθμοι ανάλογα με τον τύπο. Χρησιμοποιώντας πολυωνυμική βάση αναπαράστασης, οι τρεις κατηγορίες είναι σειριακοί πολλαπλασιαστές (bit serial), σειριακοί πολλαπλασιαστές ψηφίου (digit serial) και παράλληλοι πολλαπλασιαστές. Οι bit serial, όπως είναι αναμενόμενο, εκτελούν την πράξη bit προς bit κι άρα ολοκληρώνουν έναν πολλαπλασιασμό σε k κύκλους ρολογιού. Αντιθέτως, οι παράλληλοι πολλαπλασιαστές υπολογίζουν το γινόμενο σε 1 κύκλο ρολογιού, αφού επεξεργάζονται τα δεδομένα ανά k bit. Οι digit serial πολλαπλασιαστές αποτελούν την ενδιάμεση λύση μεταξύ των δύο προηγούμενων, αφού ολοκληρώνουν την πράξη μετά από D < k κύκλους ρολογιού, όπου D = k/d, επεξεργάζοντας τα δεδομένα σε λέξεις μήκους d-bit. Αποτελούν τον επιλεγμένο τύπο πολλαπλασιαστή της παρούσας εργασίας. Πιο συγκεκριμένα σχετικώς με τους digit serial πολλαπλασιαστές, στην περίπτωση όπου επιθυμούμε να πολλαπλασιάσουμε δύο αριθμούς a(x), b(x) ενός GF (2 k ) πεδίου και ορισμένους πάνω σε ένα ανάγωγο πολυώνυμο f(x), πρέπει αρχικώς να ορίσουμε έναν από τους δύο αριθμούς με τη μορφή ψηφίων. Δηλαδή, το b(x) θα είναι της μορφής: b(x) = D 1 i=0 i=1 B i (x)x di = B D 1 (x)x d(d 1) + B D 2 (x)x d(d 2) +... + B 1 (x)x d + B 0 (x) όπου κάθε B i (x) είναι της μορφής: d 1 B i (x) = b Di+j x j = b Di+d 1 x d 1 + b Di+d 2 x d 2 +... + b Di+1 x 1 + b Di j=0 Κατά αυτόν τον τρόπο μπορούμε να πολλαπλασιάσουμε τους δύο αριθμούς επεξεργαζόμενοι πλέον τα στοιχεία ανά ψηφία κι όχι ανά bit. Για σάρωση των ψηφίων από το λιγότερο σημαντικό προς το περισσότερο σημαντικό έχει χρησιμοποιηθεί ο Αλγόριθμος 1 όπως παρουσιάζεται παρακάτω. Σε αυτό το σημείο πρέπει να τονίσουμε οτι πολύ σημαντικό ρόλο παίζει και η μορφή του ανάγωγου πολυωνύμου, καθώς μπορεί κατά πολύ να βελτιώσει την απόδοση της διαδικασίας εκτελώντας της ανά λέξεις. Για

10 Μαθηματικό Υπόβαθρο INPUT: a = {a k 1...a 1, a 0 }, r = {f k 1...f 1, f 0 }, b = {B D 1...B 1, B 0 }, B i = {b Di+d 1, b Di+d 2...b Di+1, b Di } f(x) = x k + k 1 i=0 f ix i = x k + r(x), OUTPUT: c = a b, c(x) = a(x)b(x)modf(x). 1. c = 0 2. For i = 0 to D 1 do. 2.1 c = c + B i a. 2.2 a = (x d a)modf(x). 3. Return c. Αλγόριθμος 1: Digit serial LSB GF (2 k ) multiplication να συμβεί αυτό, πρέπει να είναι ή τριώνυμο, ή πεντώνυμο με μέσους όρους κοντινούς μεταξύ τους. Παρακάτω ακολουθούν ανάγωγα πολυώνυμα προτεινόμενα από τη NIST στο standard FIPS 186-2: f(z) = z 163 + z 7 + z 6 + z 3 + z 1 f(z) = z 233 + z 74 + 1 f(z) = z 283 + z 12 + z 7 + z 5 + 1 f(z) = z 409 + z 87 + 1 f(z) = z 571 + z 10 + z 5 + z 2 + 1 Ο Αλγόριθμος 2 δείχνει την πράξη modulo στο πεδίο της εξίσωσης (1.5) η οποία εκτελείται και κατά το Βήμα 2.2 του digit serial LSB Αλγορίθμου (Αλγόριθμος 1) κι αποτελεί το χρησιμοποιούμενο πολυώνυμο κατά την υλοποίηση της εργασίας, όπου C[i] πίνακας λέξεων με W=32 bit η καθεμία. 1.3 Αρχές Θεωρίας Ελλειπτικών Καμπυλών Ως μια Ελλειπτική Καμπύλη η οποία είναι ορισμένη πάνω σε ένα σώμα F, θεωρούμε το σύνολο των λύσεων, δηλαδή των σημείων (x, y) που επαληθεύουν την εξίσωση Weierstrass της καμπύλης E : y 2 + a 1 xy + a 3 y = x 3 + a 2 x 2 + a 4 x + a 6. Μέρος των λύσεων είναι και το σημείο στο άπειρο, οριζόμενο ως O. Οι συντελεστές a 1, a 2, a 3, a 4, a 6 ανήκουν και αυτοί στο σώμα F. Είναι εφικτό μέσω ενός μετασχηματισμού αλλαγής μεταβλητών να οδηγηθούμε στη λεγόμενη μικρή εξίσωση Weierstrass, η οποία σχετίζεται με τον τύπο του σώματος πάνω στον οποίο είναι ορισμένη η Ελλειπτική

Αρχές Θεωρίας Ελλειπτικών Καμπυλών 11 INPUT: A binary polynomial c(z) of degree at most 464. OUTPUT: c(z) mod f(z). 1. For i from 15 downto 8 do 1.1 T C[i]. 1.2 C[i 8] C[i 8] (T 23). 1.3 C[i 7] C[i 7] (T 9). 1.4 C[i 5] C[i 5] (T 1). 1.5 C[i 4] C[i 4] (T 31). 2. T C[7] 9. 3. C[0] C[0] T. 4. C[2] C[2] (T 10). 5. C[3] C[3] (T 22). 6. C[7] C[7] & 0x1FF. 7. Return (C[7], C[6], C[5], C[4], C[3], C[2], C[1], C[0]). Αλγόριθμος 2: Fast reduction modulo f(z) = z 233 + z 74 + 1 (with W=32) Καμπύλη. Ο μετασχηματισμός αυτός υφίσταται όταν έχουμε δύο ελλειπτικές καμπύλες ορισμένες στο F, τις E 1 και E 2, οι οποίες είναι ισομορφικές πάνω στο F όταν υπάρχουν u, r, s, t F, u 0 ώστε η αλλαγή μεταβλητών: (x, y) (u 2 x + r, u 3 y + u 2 sx + t) να μας οδηγεί από την καμπύλη E 1 στην καμπύλη E 2. Οι Ελλειπτικές Καμπύλες χωρίζονται ανάλογα με τη μορφή τους σε υπεριδιάζουσες (singular) και μη-υπεριδιάζουσες (non-singular). Έχει αποδειχτεί [2] οτι οι υπεριδιάζουσες είναι ασθενείς για χρήση σε κρυπτογραφικές εφαρμογές και γι αυτό το λόγο ασχολούμαστε μόνο με τις μηυπεριδιάζουσες. Ανάλογα με το πεδίο F πάνω στο οποίο είναι ορισμένη μια μη-υπεριδιάζουσα καμπύλη, η μικρή εξίσωση Weierstrass αλλάζει: Όταν έχουμε πεδίο GF (p) κι η χαρακτηριστική του είναι διάφορη του 2 ή 3 η μορφή της καμπύλης είναι E : y 2 = x 3 + ax + b όπου a, b GF (p) και η διακρίνουσα = 16(4a 3 + 27b 2 ) 0. Όταν έχουμε πεδίο GF (2 k ) και με χαρακτηριστική ίση με 2 η μορφή της καμπύλης είναι όπου a, b GF (2 k ) και = b 0. E : y 2 + xy = x 3 + ax 2 + b Τέλος, μια ειδική περίπτωση της προηγούμενης είναι όταν έχουμε a, b GF (2),όπου οι καμπύλες που εμπίπτουν σε αυτήν την κατηγορία ονομάζονται Καμπύλες Koblitz. Αυτές οι καμπύλες είναι ανώμαλες δυαδικές κι έχουν το πλεονέκτημα οτι ο πολλαπλασιασμός είναι

12 Μαθηματικό Υπόβαθρο εφικτό να πραγματοποιηθεί χωρίς τη χρήση πράξης διπλασιασμού σημείων. Οι καμπύλες Weierstrass είναι η πιο διαδεδομένη μορφή Ελλειπτικών Καμπυλών, με κύριο πλεονέκτημα την ταχύτητα με την οποία μπορούν να εκτελεστούν πράξεις σημείων πάνω σε αυτές. Παρόλα αυτά, ένα σημαντικό μειονέκτημά τους είναι το γεγονός πως δεν προσφέρουν μια ενοποιημένη και συμμετρική προσέγγιση όσον αφορά τις πράξεις σημείων (πρόσθεση και πολλαπλασιασμός σημείων). Αυτό σημαίνει πως έχουμε σημεία εξαιρέσεις, για τα οποία θα πρέπει να γίνεται ειδικός έλεγχος κατά την εκτέλεση πράξεων σημείων, κάτι που αποτελεί μια αδυναμία εναντίον κρυπταναλυτικών επιθέσεων τύπου side channel. Για όλους τους τύπους αλγορίθμων στους οποίους χρησιμοποιούνται Ελλειπτικές Καμπύλες, πρωταρχικό βήμα σε κάθε έναν από αυτούς είναι η συμφωνία μεταξύ των χρηστών όσον αφορά τον τύπο του σώματος και τις παραμέτρους της Ελλειπτικής Καμπύλης. Αυτές οι παράμετροι τομέα (domain parameters) είναι: οι συντελεστές της καμπύλης a 0 έως a 6 ανάλογα με τη μορφή της το σημείο βάσης G, δηλαδή ο γεννήτορας της καμπύλης η τάξη n, δηλαδή το πλήθος των σημείων της καμπύλης ο συντελεστής h = 1, λεγόμενος και ως cofactor, που πρέπει πάντα n να είναι ακέραιος αριθμός. 1.3.1 Αριθμητική Ελλειπτικών Καμπυλών Υπάρχουν τρεις αριθμητικές πράξεις που μπορούν να οριστούν ανάμεσα στα σημεία μιας Ελλειπτικής Καμπύλης E, ορισμένης πάνω σε ένα πεπερασμένο σώμα F. Αυτές είναι η πρόσθεση κι ο διπλασιασμός σημείων Ελλειπτικής Καμπύλης, καθώς και ο πολλαπλασιασμός σημείου με ακέραιο (scalar multiplication). Αποτελεί προφανές οτι και τα αποτελέσματα των πράξεων αυτών είναι σημεία που ανήκουν πάνω στην καμπύλη E(F ). Όλα μαζί τα σημεία της καμπύλης μαζί με την πράξη της πρόσθεσης σχηματίζουν μια αβελιανή ομάδα τύπου (G, +), με στοιχείο ταυτότητας το σημείο στο άπειρο O, όπως ορίστηκε σε προηγούμενο υποκεφάλαιο. Έτσι λοιπόν, οι πράξεις της πρόσθεσης και του διπλασιασμού μπορούν να πραγματοποιηθούν χρησιμοποιώντας το λεγόμενο κανόνα της χορδής κι εφαπτομένης. Έστω η Καμπύλη Ε και P (x 1, y 1 ), Q(x 2, y 2 ) δύο σημεία πάνω σε αυτήν. Για να υπολογίσουμε ένα τρίτο σημείο R(x 3, y 3 ), δηλαδή το άθροισμα των δύο προηγούμενων, σχεδιάζουμε μια γραμμή που ενώνει τα P και Q και βρίσκουμε το κοινό σημείο της ευθείας αυτής με την καμπύλη Ε. Το συμμετρικό σημείο ως προς τον άξονα των x είναι το σημείο R(x 3, y 3 ) που αναζητούμε. Αντιστοίχως, για το διπλασιασμό σημείου αυτό που αλλάζει σε σχέση με την προηγούμενη διαδικασία είναι πως πλέον

Καμπύλες Edwards 13 προσθέτουμε το ίδιο σημείο P με τον εαυτό του, άρα η ευθεία που θα τέμνει την καμπύλη είναι η εφαπτομένη στο P. Επεκτείνοντας την πράξη αυτή έστω k φορές, δηλαδή προσθέτοντας συνεχώς το P στον εαυτό του, κινούμαστε πάνω στην καμπύλη και καταλήγουμε στο τελικό σημείο Q = k P. Με αυτή λοιπόν την επαναληπτική ακολουθία πράξεων πρόσθεσης και διπλασιασμού σημείων Ελλειπτικής Καμπύλης εκτελείται η πράξη του πολλαπλασιασμού σημείου με ακέραιο ή scalar πολλαπλασιασμός. Παρακάτω ακολουθεί η γενική μορφή του αλγορίθμου: INPUT: P, k OUTPUT: Q = k P 1. Q = O 2. While k 0 do 2.1. If k is even then k = k/2 and P = 2P 2.2. If k is odd then k = k 1 and Q = Q + P 3. Return Q Αλγόριθμος 3: Scalar Multiplication 1.4 Καμπύλες Edwards Τα σημεία σε μία καμπύλη της μορφής Weierstrass y 2 + a 1 xy + a 3 y = x 3 + a 2 x 2 + a 4 x + a 6 (1.4) περιλαμβάνουν, εκτός από τα συγγενή σημεία (x 1, y 1 ) που ικανοποιούν την εξίσωση, και ένα επιπλέον σημείο στο άπειρο το οποίο αποτελεί και το ουδέτερο στοιχείο. Οι κλασσικές φόρμουλες για τον υπολογισμό του αθροίσματος P + Q αποτυγχάνουν εαν τα P, Q είναι στο άπειρο ή εαν το P + Q είναι στο άπειρο ή αν το P ισούται με το Q. Το γεγονός αυτό οδηγεί στην ανάγκη κάθε μία από αυτές τις πιθανότητες να πρέπει να ελεγχθεί και να διαχειριστεί μεμονωμένα και αποτελεί αιτία πληθώρας προβλημάτων στις διάφορες υλοποιήσεις Ελλειπτικής Κρυπτογραφίας και ιδιαιτέρως στις υλοποιήσεις υλικού ευάλλωτες σε side-channel attacks. Οι Bernstein, Lange και Farashahi στο [3] έδειξαν πως για πεδία k με χαρακτηριστική char(k) 2 και d 2 k, τα συγγενή σημεία της λεγόμενης Καμπύλης Edwards x 2 + y 2 = 1 + dx 2 y 2 (1.5) σχηματίζουν μία ομάδα. Ο νόμος πρόσθεσης όπως παρουσιάζεται από τον Edwards [5] για αυτήν την καμπύλη είναι ολοκληρωμένος (complete). Αυτό σημαίνει πως οι φόρμουλες πρόσθεσης και διπλασιασμού σημείων λειτουργούν σωστά για όλα τα ζεύγη σημείων εισόδου, καθώς δεν υφίστανται

14 Μαθηματικό Υπόβαθρο πλεόν προβληματικά σημεία στο άπειρο. Πιο συγκεκριμένα, το ουδέτερο στοιχείο αυτής της καμπύλης είναι το συγγενές σημείο (0, 1). Το μειονέκτημα της καμπύλης αυτής αποτελεί πως δεν είναι ελλειπτική για πεδία k με char(k) = 2. Η απουσία αυτή των εξαιρετικών περιπτώσεων σημείων κατά την εκτέλεση των αλγορίθμων πρόσθεσης και διπλασιασμού σημείων οδηγεί σε μία εγγενή προστασία από side-channel κρυπταναλυτικές επιθέσεις, όπως Simple Power Attacks (SPAs), που προσπαθούν να διακρίνουν τις δύο διαφορετικές πράξεις μέσω της διαφοράς του ίχνους διαρροής τους (leakage trace). Συνεπώς, το γνώρισμα αυτό των καμπυλών Edwards έχει οδηγήσει στην αύξηση της δημοτικότητάς τους τα τελευταία χρόνια, παρόλη την υστέρηση σε ταχύτητα που παρουσιάζουν συγκρινόμενες με τις καμπύλες Weierstrass λόγω του μεγαλύτερου αριθμού πράξεων που απαιτούν. 1.4.1 Καμπύλες Binary Edwards Αν και αρχικώς ορισμένες για καμπύλες πάνω σε GF (p) πεδία, οι καμπύλες Edwards έπειτα ορίστηκαν [4] πλήρως πάνω σε δυαδικά πεδία επέκτασης GF (2 k ) με χαρακτηριστική ίση με 2 (Binary Edwards Curves). Η γενική εξίσωση των δυαδικών καμπυλών Edwards ορίζεται ως: E B,d1,d 2 : d 1 (x + y) + d 2 (x 2 + y 2 ) = xy + xy(x + y) + x 2 y 2 (1.6) Οι σταθερές d 1 και d 2 ανήκουν στο GF (2 k ) και πρέπει επίσης να ισχύει οτι d 1 0 και d 2 d 2 1 + d2 2. Χαρακτηριστικό επίσης γνώρισμα των καμπυλών αυτών είναι η συμμετρία τους, δηλαδή για ένα σημείο P (x 1, y 1 ) πάντα θα υπάρχει το αντίστοιχο P (y 1, x 1 ) πάνω στην καμπύλη. Οι καμπύλες, επιπλέον, μπορούν να θεωρηθούν ολοκληρωμένες όταν για το ίχνος τους ισχύει T r(d 2 ) = 1 ή ισοδυνάμως δεν υπάρχει στοιχείο t GF (2 k ) που να ικανοποιεί την εξίσωση t 2 + t + d 2 = 0. Ανά δύο ισοδυναμία: Είναι καθιερωμένο οι ελλειπτικές καμπύλες να παρουσιάζονται στη Weierstrass μορφή τους. Μία συνηθισμένη ελλειπτική καμπύλη μπορεί να εκφραστεί με τη σύντομη Weierstrass μορφή ως u 2 + uv = u 3 + a 2 u 2 + a 6 (1.7) με a 6 0. Το ουδέτερο στοιχείο της πρόσθεσης είναι το σημείο στο άπειρο και η αφαίρεση ορίζεται ως (u 1, v 1 ) = (u 1, v 1 +u 1 ). Η αντιστοίχιση (x, y) (u, v) ορισμένη ως: u = d 1 (d 2 1 + d 1 + d 2 )(x + y)/(xy + d 1 (x + y)), v = d 1 (d 2 1 + d 1 + d 2 )(x/(xy + d 1 (x + y)) + d 1 + 1)

Ασύμμετρη Κρυπτογραφία 15 είναι μία ανα δύο ισοδυναμία της καμπύλης E B,d1,d 2 με την καμπύλη u 2 + uv = u 3 + (d 2 1 + d 2 )u 2 + d 4 1(d 4 1 + d 2 1 + d 2 2) Ένας αντίστροφος μετασχηματισμός δίνεται ως: x = d 1 (u + d 2 1 + d 1 + d 2 )/(u + v + (d 2 1 + d 1 )(d 2 1 + d 1 + d 2 )), y = d 1 (u + d 2 1 + d 1 + d 2 )/(v + (d 2 1 + d 1 )(d 2 1 + d 1 + d 2 )). Και οι δύο αυτοί μετασχηματισμοί υποδηλώνουν τη δυνατότητα να αναπαραστήσουμε τη δυαδική Edwards καμπύλη με την αντίστοιχη σύντομη μορφή της Weierstrass και αντιστρόφως. Παρόλο που υπάρχουν ρητές φόρμουλες για την πρόσθεση και τον πολλαπλασιασμό [4], από την εξίσωση 1.6 μπορεί να συμπεραθεί οτι περιορίζοντας τα d 1 και d 2 μέσω μιας μεταξύ τους σχέσης οδηγεί σε μια απλοποίηση των πράξεων για πρόσθεση και διπλασιασμό. Στη γενική περίπτωση, η BEC πρόσθεση σε συγγενείς (affine) συντεταγμένες απαιτεί 2 GF (2 k ) Αντιστροφές (I), 8 GF (2 k ) Πολλαπλασιαμούς (M), 2 GF (2 k ) Τετραγωνισμούς (S), 3 GF (2 k ) Διπλασιασμούς (D), καθώς και αρκετές GF (2 k ) Προσθέσεις(A). Με σκοπό να απαλλαγούμε από το κόστος που επιβάλλει η πράξη της Αντιστροφής (I) μεταφερόμαστε σε προβολικές (projective) συντεταγμένες. Η προβολική μορφή της καμπύλης Edwards E B,d1,d 2 είναι: d 1 (X + Y )Z 3 + d 2 (X 2 + Y 2 )Z 2 = XY Z 2 + XY (X + Y )Z + X 2 Y 2 (1.8) όπου καταλήγουμε σε κόστος πράξεων 18M + 3S + 6D + 24A (με d 1 d 1 = d 2 1 ). Το γεγονός όμως πως στις προβολικές συντεταγμένες ο διπλασιασμός σημείου μπορεί να πραγματοποιηθεί μέσω της φόρμουλας για πρόσθεση σημείων μας βοηθάει στην απλοποίηση της φόρμουλας διπλασιασμού, μειώνοντας έτσι το κόστος GF (2 k ) πράξεων σε 2M + 6S + 3D + 9A (με d 1 d 2 = d 2 /d 1 ). Στον πίνακα 1.1 παρουσιάζονται οι GF (2 k ) απλοποιημένες πλέον πράξεις για πρόσθεση και διπλασιασμό σημείου σε BECs, για d 1 d 1 = d 2 1. Ένα σημείο Ṕ : (X, Y, Z) σε προβολικές συντεταγμένες μπορεί να τροποποιηθεί σε ένα BEC σημείο P : (x, y) συγγενών συντεταγμένων μέσω των πράξεων x = X/Z και y = Y /Z [8]. 1.5 Ασύμμετρη Κρυπτογραφία Η Ασύμμετρη Κρυπτογραφία (ή αλλιώς Κρυπτογραφία Δημοσίου Κλειδιού) προσφέρει ένα διαφορετικό μοντέλο διαχείρισης κλειδιών, σε σχέση με τη Συμμετρική Κρυπτογραφία. Η κύρια ιδέα είναι οτι ο αποστολέας κι ο παραλήπτης δε χρησιμοποιούν ένα κοινό μυστικό κλειδί, αλλά διαθέτουν διαφορετικά κλειδιά για ξεχωριστούς σκοπούς. Πιο συγκεκριμένα, ένας χρήστης έχει στη διάθεσή του ένα ζεύγος κλειδιών, αποτελούμενο από ένα ιδιωτικό (private) και ένα δημόσιο

16 Μαθηματικό Υπόβαθρο Πίνακας 1.1: Πράξεις Σημείων σε BECs (X 3 : Y 3 : Z 3 ) = (X 1 : Y 1 : Z 1 ) + (X 3D : Y 3D : Z 3D ) = 2(X 1 : Y 1 : (X 2 : Y 2 : Z 2 ) Z 1 ) A = X 1 X 2 DA = X 1 X 1 B = Y 1 Y 2 DC = Y 1 Y 1 C = Z 1 Z 2 DE = Z 1 Z 1 D = d 1 C DB = DA DA E = C C DD = DC DC F = d 1 d 1 E DH = DA DE G 1 = X 1 + Z 1 DI = DC DE G 2 = X 2 + Z 2 DL = DE DE G = G 1 G 2 DF = d 1 DL H 1 = Y 1 + Z 1 DJ = DH + DI H 2 = Y 2 + Z 2 DO = d 2 DJ H = H 1 H 2 DM = DB + DD I = A + G DG = d 1 d 2 DM J = B + H DK = DG + DO K 1 = X 1 + Y 1 DL 1 = DF + DJ K 2 = X 2 + Y 2 DL 2 = DH + DD K = K 1 K 2 DL 3 = DI + DB L = d 1 K DX 3 = DL 2 + DK U 1 = K + I DY 3 = DL 3 + DK U 2 = J + C DZ 3 = DL 1 + DG U 3 = U 1 + U 2 U 4 = L U 3 U 5 = F + U 4 U = C U 5 V 1 = A B V 2 = G H V 3 = d 1 E V 4 = V 1 + V 2 V 5 = V 3 + V 4 V 6 = L V 5 V 7 = D F V 8 = V 7 + V 6 V = Z 3 + V 8 M 1 = A + D N 1 = G + D O 1 = M 1 N 1 M 2 = B + D N 2 = H + D O 2 = M 2 N 2 P 1 = D O 1 P 2 = D O 2 X 3 = V + P 1 Y 3 = V + P 2 Z 3 = U

Ασύμμετρη Κρυπτογραφία 17 (public) κλειδί. Όπως γίνεται προφανές, το δημόσιο κλειδί μπορεί να γνωστοποιηθεί στον οποιονδήποτε κι επίσης να αποτελέσει ένα είδος ταυτότητας για το συγκεκριμένο χρήστη. Αντιθέτως, το ιδιωτικό κλειδί παραμένει μυστικό και γνωστό μόνο στον κάτοχό του. Υπάρχει μαθηματική σχέση μεταξύ των δύο κλειδιών, με την έννοια οτι το ένα παράγεται από το άλλο, χωρίς αυτή η διαδικασία να μπορεί να επιτευχθεί αντιστρόφως. Παραδείγματος χάριν, μπορούμε χρησιμοποιώντας τον αλγόριθμο RSA να κρυπτογραφήσουμε ένα μήνυμα με το δημόσιο κλειδί ενός τρίτου προσώπου, το οποίο μπορεί να αποκρυπτογραφηθεί μόνο με το αντίστοιχο ιδιωτικό κλειδί. Το πιο σημαντικό πρόβλημα που λύθηκε με την εφεύρεση της Ασύμμετρης Κρυπτογραφίας είναι η ασφαλής επικοινωνία μέσω ενός μη ασφαλούς καναλιού, κάτι που δεν ήταν εφικτό με τους συμβατικούς τρόπους της Συμμετρικής Κρυπτογραφίας. Στην πράξη, χρησιμοποιείται αρκετά συχνά για την εγκαθίδρυση ενός κοινού μυστικού κλειδιού μεταξύ δύο χρηστών, καθώς το μειονέκτημά της είναι πως έχει μεγαλύτερες απαιτήσεις σε απόδοση και χώρους αποθήκευσης. 1.5.1 Κρυπτογραφία και Ελλειπτικές Καμπύλες Η Κρυπτογραφία Ελλειπτικών Καμπυλών αποτελεί μία συγκεκριμένη προσέγγιση στην Κρυπτογραφία Δημοσίου Κλειδιού, προσφέροντας το πλεονέκτημα μικρότερου μήκους κλειδιών χωρίς συμβιβασμούς όσον αφορά την ασφάλεια σε σχέση με τις άλλες προσεγγίσεις Ασύμμετρης Κρυπτογραφίας. Το πεδίο εφαρμογών τους επίσης ποικίλει από πρωτόκολλα συμφωνίας κλειδιών, ψηφιακές υπογραφές, γεννήτριες ψευδοτυχαίων αριθμών κτλ. Η Ασύμμετρη Κρυπτογραφία βασίζεται στην ασφάλεια που παρέχουν άλυτα ή πρακτικώς ανέφικτα προς λύση μαθηματικά προβλήματα. Όπως ειπώθηκε προηγουμένως, ο στόχος όλων των προσεγγίσεων είναι η δυσκολία στο να οδηγηθούμε από έναν αριθμό σε εκείνον από τον οποίο παρήχθη ο πρώτος. Όσον αφορά τις Ελλειπτικές Καμπύλες, η δυσκολία αυτή πηγάζει από την αδυναμία υπολογισμού του διακριτού λογαρίθμου ενός τυχαίου σημείου πάνω στην καμπύλη σε σχέση με ένα δημοσίως γνωστό σημείο Βάσης. Αυτό το πρόβλημα είναι ευρέως γνωστό ως Elliptic Curve Discrete Logarithm Problem (ECDLP). Έτσι, μπορούμε να χρησιμοποιήσουμε έναν τυχαίο ακέραιο k ως το ιδιωτικό μας κλειδί κι εκτελώντας scalar πολλαπλασιασμό με ένα σημείο Γεννήτορα G μιας καμπύλης να καταλήξουμε στο τελικό σημείο Q = k G, που αποτελεί και το δημόσιό μας κλειδί. Το ECDLP λοιπόν έγκειται στην αδυναμία υπολογισμού του k γνωρίζοντας μόνο το τελικό σημείο Q.

18 Μαθηματικό Υπόβαθρο 1.5.2 Ο Αλγόριθμος ECDSA Ο Αλγόριθμος ECDSA (Elliptic Curve Digital Signature Algorithm) είναι μία εκδοχή του DSA (Digital Signature Algorithm) που βασίζεται στην κρυπτογραφία ελλειπτικών καμπυλών. Αποτελεί το πιο διαδεδομένο σύστημα για ψηφιακές υπογραφές βασισμένο στις ελλειπτικές καμπύλες, όπως φαίνεται από τα standards ANSI X9.62, FIPS 186-2, IEEE 1363-2000 και ISO/IEC 15946-2. Κατά την υλοποίηση, το πρώτο βήμα είναι η συμφωνία σχετικά με τις παραμέτρους της καμπύλης που θα χρησιμοποιηθεί από τις δύο πλευρές. Θέλοντας να υπογράψει ένα μήνυμα m, ο υπογράφων θα πρέπει πρώτα να δημιουργήσει ένα ζεύγος κλειδιών (d, Q). Είναι μείζονος σημασίας το ιδιωτικό κλειδί d να είναι ένας τυχαίος αριθμός στο διάστημα [1, n 1], καθώς η ασφάλεια του συστήματος εξαρτάται σε μεγάλο βαθμό από την τυχαιότητα του ιδιωτικού κλειδιού. Έπειτα, υπολογίζεται το δημόσιο κλειδί ως Q = dg, όπου G είναι το σημείο γεννήτορας της καμπύλης. Παρακάτω παρουσιάζονται λεπτομερώς τα απαραίτητα βήματα για την παραγωγή της ψηφιακής υπογραφής. INPUT: D = (m, f(x), G, n, h), private key d, message m, hash function H. OUTPUT: Signature (r, s). 1. Select k E R [1, n 1]. 2. Compute kg = (x 1, y 1 ) and convert x 1 to an integer x 1. 3. Compute r = x 1 mod n. If r = 0 go to step 1. 4. Compute e = H(m). 5. Compute s = k 1 (e + dr) mod n. If s = 0 go to step 1. 6. Return (r, s). Αλγόριθμος 4: ECDSA Signature Generation Αντιστοίχως, για την επιβεβαίωση της εγκυρότητας μιας υπογραφής ενός μηνύματος χρειάζεται να γνωρίζουμε το δημόσιο κλειδί του υπογράφοντος, όπως φαίνεται στον Αλγόριθμο 5. Αξίζει να σημειωθεί πως η έξοδος της συνάρτησης κατακερματισμού H πρέπει να έχει μήκος λέξης το πολύ ίσο με την τάξη n. Ο αλγόριθμος ECDSA είναι συμβατός προς χρήση με οποιαδήποτε ελλειπτική καμπύλη, και κατ επέκταση είναι συμβατός ακόμα και με Δυαδικές Καμπύλες Edwards που χρησιμοποιούνται στην παρούσα εργασία. Υπάρχει μια επιπλέον εκδοχή του αλγορίθμου αυτού δομημένη για Καμπύλες Edwards (EdDSA), όμως έχει προταθεί μόνο για Edwards Καμπύλες ορισμένες πάνω σε πεδία GF (p) [6].

INPUT: D = (m, f(x), G, n, h), public key Q, message m, signature s. OUTPUT: Acceptance or rejection of the signature. 1. Verify that r and s are integers in the interval [1, n 1]. If verification fails return INVALID. 2. Compute e = H(m). 3. Compute w = s 1 mod n. 4. Compute u 1 = eq mod n and u 2 = rw mod n. 5. Compute X = u 1 G + u 2 Q. 6. If X = return INVALID. 7. Convert the x-coordinate x 1 of X to an integer x 1 ;compute u = x 1 mod n. 8. If u = r then return VALID ; Else return INVALID. Αλγόριθμος 5: ECDSA Signature Verification

ΚΕΦΑΛΑΙΟ 2 ΠΕΡΙΓΡΑΦΗ ΣΥΣΤΗΜΑΤΟΣ 2.1 Γενική Προσέγγιση Αρχιτεκτονικής Ίσως η πιο σημαντική ενέργεια που πρέπει να διεξαχθεί πριν την έναρξη σχεδίασης ενός Κρυπτοσυστήματος Ελλειπτικών Καμπυλών είναι η αναγνώριση και η ταυτοποίηση των κατάλληλων κομματιών από τα οποία θα αποτελείται το σύστημα. Στο Σχήμα 2.1 διακρίνονται τα διάφορα επίπεδα από τα οποία αποτελείται ένα σύνηθες Κρυπτοσύστημα Ελλειπτικών Καμπυλών. Από τα διάφορα κρυπτογραφικά πρωτόκολλα (ECDH, ECIES, ECDSA κτλ.) μεταφερόμαστε στο επίπεδο επιλογής οικογένειας καμπυλών, έπειτα στις πράξεις σημείων και τέλος στις πράξεις πάνω σε πεπερασμένα πεδία όπως αναλύθηκε στο προηγούμενο κεφάλαιο. Σκοπός αυτού είναι ο υπολογισμός του οικονομικού κόστους, του κόστους σε απόδοση, καθώς και του χρόνου υλοποίησης που κάθε ένα από τα κομμάτια απαιτεί. Οι οικογένειες πρώτων πεδίων τυγχάνουν καλύτερης υποστήριξης σε υλοποιήσεις λογισμικού, καθώς η αριθμητική ακεραίων είναι βελτιστοποιημένη σε μεγαλύτερο βαθμό στους σημερινούς μικροεπεξεργαστές. Επίσης, παρουσιάζουν αρκετές σχεδιαστικές προκλήσεις όταν πρόκειται να υλοποιηθούν απευθείας σε υλικό, αφού η αλυσίδα κρατουμένου εισάγει προβλήματα χρονισμού και επιφάνειας. Αντίστοιχα, οι οικογένειες καμπυλών βασισμένες σε δυαδικά πεδία επέκτασης δεν είναι στον ίδιο βαθμό αποτελεσματικές όταν πρόκειται για υλοποιήσεις λογισμικού σε ισχυρούς επεξεργαστές κι ειδικά όταν ο βαθμός του πεδίου είναι σχετικά μεγάλος. Σε ασθενέστερους επεξεργα- 21

22 Περιγραφή Συστήματος στές με πιο αδύναμους πολλαπλασιαστές ακεραίων το μειονέκτημα αυτό εξομαλύνεται ως ένα βαθμό. Τα πλεονεκτήματα όμως που προσφέρουν είναι το γεγονός πως οι πράξεις πεδίου μπορούν να υλοποιηθούν σε υλικό αρκετά πιο αποδοτικά σε σχέση με τα πρώτα πεδία, με χαρακτηριστικότερο παράδειγμα την πράξη της πρόσθεσης σε δυαδικά πεδία, όπου επιτυγχάνεται απλά με μία πύλη XOR. Τέλος, τα στοιχεία ενός GF (2 k ) πεδίου μπορούν να αναπαρασταθούν ως διανύσματα k μεγέθους με την κάθε τιμή να είναι 0 ή 1. Σχήμα 2.1: Δομή Κρυπτοσυστήματος Ελλειπτικών Καμπυλών Γενικότερα, οι υλοποιήσεις απευθείας σε υλικό προσφέρουν μεγαλύτερη ταχύτητα και καλύτερη κατανάλωση ισχύος, με αντίτιμο όμως την ευελιξία σε αλλαγές και το χρόνο σχεδίασης σε σχέση με τις υλοποιήσεις λογισμικού. Έτσι, είναι ύψιστης σημασίας στο συγκεκριμένο σημείο να γίνει η σωστή επιλογή του τύπου υλοποίησης καθενός από τα αποτελούμενα κομμάτια του κρυπτογραφικού συστήματος. Πιο συγκεκριμένα, η ανάγκη επίτευξης λόγου μέγιστης απόδοσης προς κόστος οδηγεί στην απόφαση δόμησης του Κρυπτογραφικού Συστήματος Ελλειπτικών Καμπυλών ως ένα συνδυασμό υλικού-λογισμικού. Παρατηρώντας τα απαραίτητα βήματα κατά την εκτέλεση του αλγορίθμου ψηφιακών υπογραφών ECDSA, τόσο κατά τη γέννηση υπογραφών αλλά και την επαλήθευσή τους, εντοπίζουμε τις απαιτητικές σε απόδοση εργασίες που μπορούν να βελτιωθούν αν υλοποιηθούν εξ ολοκλήρου σε υλικό. Ως αποτέλεσμα, το ECDSA σύστημά μας θα υλοποιηθεί πραγματοποιώντας τις υψηλού επιπέδου διεργασίες των αλγορίθμων 1.3 και 1.4 μέσω λογισμικού και χρησιμοποιώντας όπου είναι απαραίτητο έναν προσαρμοσμένο πυρήνα υλικού (IP Core) για τη χρονοβόρα και ευάλωτη όσον αφορά την

Δομή Συστήματος 23 ασφάλεια πράξη του βαθμωτού πολλαπλασιασμού (scalar multiplication) συγκεκριμένα για καμπύλες Binary Edwards. 2.2 Δομή Συστήματος Όπως φαίνεται και στο Σχήμα 2.2, η Αρχιτεκτονική του ECDSA Συστήματος αποτελείται από διάφορα υποσυστήματα υλικού και λογισμικού, δομημένα γύρω από μία System-On-Chip λύση που περιλαμβάνει μία Application Processing Unit (APU) κι ένα Central AXI Interconnect σύστημα διασυνδέσεων με διάφορα υποσυστήματα υλικού. Σχήμα 2.2: Αρχιτεκτονική Συστήματος ECDSA

24 Περιγραφή Συστήματος 2.2.1 Δομή Λογισμικού Η στοίβα λογισμικού (software stack) απαραίτητη κατά την εκτέλεση του αλγορίθμου ECDSA βρίσκεται στη DDR3 μνήμη, συνδεδεμένη μέσω ενός DDR ελεγκτή με το Central Interconnect System. Το σύστημα αυτό είναι υπεύθυνο για τη διασύνδεση όλων των στοιχείων υλικού που απαιτούν επικοινωνία με τα διάφορα άλλα υποσυστήματα που βρίσκονται ενσωματωμένα σε έναν επεξεργαστή ARM. Το IP Core του BEC βαθμωτού πολλαπλασιαστή είναι επίσης συνδεδεμένο στο Central AXI Interconnect μέσω ενός AXI Control υποσυστήματος. Το υποσύστημα αυτό ενσωματώνει επίσης μια σειρά από καταχωρητές λογισμικού (software registers), οι οποίοι είναι προσπελάσιμοι από την ECDSA στοίβα μέσω του Scalar Multiplication driver, κάνοντας με αυτόν τον τρόπο εφικτή την επικοινωνία μεταξύ της APU μονάδας επεξεργασίας και του πυρήνα υλικού μας. Σχήμα 2.3: Αρχιτεκτονική Λογισμικού Συστήματος ECDSA Όσον αφορά την ECDSA στοίβα, αυτή χρησιμοποιεί μία συγκεκριμένη διεπαφή λογισμικού (API) για να επιτύχει την εκτέλεση των αλγορίθμων 4 και 5. Η βάση αυτής της διεπαφής είναι η βιβλιοθήκη Ελλειπτικών Καμπυλών ανοιχτού κώδικα OpenECC [7], προσαρμοσμένη έτσι ώστε να υποστηρίζει τις καμπύλες Binary Edwards. Παρατηρώντας τον Αλγόριθμο 5 γίνεται αντιληπτό ότι εκτελείται μία επιπλέον πρόσθεση σημείων κατά

Τρόπος Λειτουργίας 25 το Βήμα 5 αυτού. Λόγω του οτι η συγκεκριμένη πράξη δεν είναι διαθέσιμη ξεχωριστά από τη μονάδα του Βαθμωτού Πολλαπλασιαστή σε επίπεδο υλικού, οδηγούμαστε στην ανάγκη υλοποίησης των πράξεων Πρόσθεσης και Διπλασιασμού σημείων σε επίπεδο λογισμικού. Έτσι, τροποποιήθηκε η OpenECC βιβλιοθήκη ώστε να περιλαμβάνει και τις συγκεκριμένες πράξεις. Στο Σχήμα 2.3 διακρίνεται η δομή του λογισμικού κατά την εκτέλεση των εντολών του συστήματος. Οι είσοδοι που συλλέγονται από την κονσόλα προωθούνται προς χρησιμοποίηση από την OpenECC βιβλιοθήκη και κατά συνέπεια από τη στοίβα λογισμικού ECDSA και τον driver του Βαθμωτού Πολλαπλασιαστή μας. Για την επίτευξη όσον το δυνατόν περισσότερης τυχαιότητας σε επίπεδο λογισμικού, χρησιμοποιείται ένα Real Time Clock (RTC), του οποίου η τιμή αξιοποιείται ως seed για τη Γεννήτρια Ψευδοτυχαίων Αριθμών της OpenECC βιβλιοθήκης. Έτσι, στις περιπτώσεις όπου επιθυμούμε τη γέννηση ενός τυχαίου αριθμού, καλούμε την απαραίτητη συνάρτηση που μας επιστρέφει ως αποτέλεσμα την τρέχουσα ώρα με ακρίβεια δευτερολέπτου. Συνεπώς, μπορούμε με αρκετή σιγουριά να βασιστούμε στην τυχαιότητα που προσφέρει η PRNG λογισμικού και στο επίπεδο ασφάλειας αυτής. Τέλος, υπάρχει μία Non Volatile μνήμη Flash, συνδεδεμένη με το κεντρικό σύστημα διασυνδέσεων μέσω ενός ελεγκτή QSPI σε AXI (Advanced Extensible Interface), που σκοπό έχει την αποθήκευση των κλειδιών ενός χρήστη. 2.3 Τρόπος Λειτουργίας 2.3.1 Σύνδεση Λογισμικού και Υλικού Εκμεταλλευόμενοι, λοιπόν, τη λειτουργικότητα που μας προσφέρει η OpenECC βιβλιοθήκη, ο αλγόριθμος ECDSA μπορεί να εκτελεστεί στην APU μέσω της API διεπαφής μας. Όπως προαναφέρθηκε, το σύστημα έχει τη δυνατότητα αποθήκευσης τιμών δημοσίων κλειδιών διάφορων χρηστών προς χρήση σε πληθώρα σεναρίων, ώστε να μπορούν να χρησιμοποιηθούν κατά την εκτέλεση επαλήθευσης μιας ψηφιακής υπογραφής σε ένα συγκεκριμένο μήνυμα. Κατά την εκτέλεση, ο Scalar Multiplication driver συμπεριφέρεται ως μέρος του ήδη υπάρχοντος συστήματος μνήμης. Το AXI Control υποσύστημα είναι υπεύθυνο για την επικοινωνία μεταξύ του πολλαπλασιαστή και του αντίστοιχού του driver, δρώντας ουσιαστικά ως μια διεπαφή μεταξύ ενός AXI master κι ενός AXI slave. Περισσότερο συγκεκριμένα, η APU, μέσω του κεντρικού συστήματος διασυνδέσεων έχει τη δυνατότητα να αποθηκεύσει και να προσπελάσει τιμές στους καταχωρητές λογισμικού του AXI Control υποσυστήματος. Εκτός όμως από τη μεταβίβαση τιμών εισόδου και εξόδου, οι καταχωρητές αυτοί χρησιμεύουν και για τον έλεγχο του βαθμωτού πολλαπλασιαστή.

26 Περιγραφή Συστήματος Στον καταχωρητή ελέγχου που δρα ως μια διεπαφή λογισμικού, οι τιμές συγκεκριμένων bits του ανφέρονται και σε μια διαφορετική διεργασία του πολλαπλασιαστή, είτε αυτή είναι reset ή το έναυσμα για την εκκίνηση της πράξης του βαθμωτού πολλαπλασιασμού με τις δοθείσες αρχικές τιμές εισόδου. Με αυτόν τον τρόπο, μεταβιβάζονται οι τιμές εισόδου προς τον πολλαπλασιαστή, αφού και αυτός έχει πρόσβαση στους ίδιους καταχωρητές και αφού ολοκληρωθεί ο πολλαπλασιασμός το IP Core αποθηκεύει τα αποτελέσματα στους καταχωρητές εξόδου προς χρήση από την APU. Την ολοκλήρωση ενός πολλαπλασιασμού υποδηλώνει ένα συγκεκριμένο bit ενός ξεχωριστού καταχωρητή κατάστασης (status register), το οποίο ελέγχεται παροδικά (polling) από τον driver. Τέλος, τα σωστά αποτελέσματα των καταχωρητών, δηλαδή οι συντεταγμένες του τελικού σημείου (X, Y, Z) σε προβολικές συντεταγμένες φορτώνονται στην DDR μνήμη, ώστε να χρησιμοποιηθούν από τη στοίβα στον ECDSA αλγόριθμο. 2.3.2 Λειτουργία σε Πραγματικό Χρόνο Για να αποκτήσουμε πρόσβαση στη λειτουργικότητα που προσφέρεται από το συνολικό σύστημα πρέπει να εγκαθιδρύσουμε μία σύνδεση σειριακής επικοινωνίας με αυτό μέσω USB καλωδίου. Αφού προγραμματίσουμε το FPGA, είτε άμεσα είτε από κάρτα SD, θέτουμε τις σωστές παραμέτρους σειριακής επικοινωνίας στο τερματικό: Baud rate: 115.200 Data bits: 8 Stop bits: 1 Parity: None Flow Control: None Αφού θέσουμε τις παραμέτρους, εκκινούμε τη bare-metal C εφαρμογή μας που περιλαμβάνει τον απαραίτητο driver όπως περιγράφτηκε προηγουμένως και παρατηρούμε στην οθόνη του τερματικού να εμφανίζεται το prompt για την εισαγωγή εντολής. Οι διαθέσιμες εντολές για τις λειτουργίες που προσφέρει ο ECDSA αλγόριθμος είναι οι: ECDSA Γέννηση Υπογραφής: ecdsa -s [message], όπου [message] είναι το μήνυμα που έχει εισαχθεί μέσω του τερματικού κι αποτελεί τα δεδομένα που θέλουμε να υπογράψουμε χρησιμοποιώντας ως ζεύγος κλειδιών ένα ήδη παραχθέν που βρίσκεται στη μνήμη Flash του Zedboard. Αποτέλεσμα αυτής της εντολής είναι η ECDSA υπογραφή (r,s) σε δεκαεξαδική μορφή.

Τρόπος Λειτουργίας 27 ECDSA Επικύρωση Υπογραφής: ecdsa -v [HostID] [r] [s] [message], όπου [HostID] αποτελεί ένα αναγνωριστικό απαραίτητο ώστε να διαβαστεί το σωστό Δημόσιο Κλειδί του αντίστοιχου Host αποθηκευμένο στη μνήμη Flash. Οι είσοδοι [r] και [s] αποτελούν την υπογραφή που συνοδεύει το μήνυμα [message] ώστε να επικυρωθεί. Αποτέλεσμα της εντολής αυτής είναι ένα μήνυμα VALID είτε INVALID, υποδηλώνοντας την εγκυρότητα της συγκεκριμένης υπογραφής για το συγκεκριμένο μήνυμα. Με αυτές τις δυνατότητες, λοιπόν, μπορεί να δημιουργηθεί μια πληθώρα σεναρίων που επιδεικνύουν τη λειτουργικότητα της υλοποίησης του ECDSA συστήματος. Ένα από αυτά τα πειράματα που μπορεί να εκτελεστεί ακόμα και σε ένα Zedboard είναι να θεωρήσουμε δύο οντότητες Alice και Bob, των οποίων τα ζεύγη κλειδιών βρίσκονται προϋπολογισμένα ήδη στη Flash μνήμη του συστήματος. Έτσι, για να υπογράψει η Alice ένα συγκεκριμένο μήνυμα εισαγόμενο από το τερματικό, αρκεί απλώς να διαβάσει το ιδιωτικό της κλειδί από τη μνήμη και με αυτό να δημιουργήσει την ECDSA υπογραφή (r, s). Έπειτα, την υπογραφή αυτή μπορεί ο Bob να τη δεχτεί σαν είσοδο από το τερματικό μαζί με το μήνυμα της Alice και διαβάζοντας από τη Flash το Δημόσιο Κλειδί της να αποφανθεί αν η υπογραφή είναι έγκυρη ή όχι.

ΚΕΦΑΛΑΙΟ 3 ΒΑΘΜΩΤΟΣ ΠΟΛΛΑΠΛΑΣΙΑΣΤΗΣ 3.1 Γενική Προσέγγιση Αρχιτεκτονικής Όπως προαναφέρθηκε, στους περισσότερους κρυπτογραφικούς αλγορίθμους Ελλειπτικών Καμπυλών την κύρια αιτία επιρροής της απόδοσης αποτελεί η πράξη του βαθμωτού πολλαπλασιασμού. Όντας μια σειρά από πράξεις πρόσθεσης και διπλασιασμού σημείων καμπυλών είναι αναμενόμενα στόχος βελτίωσης στις περισσότερες υλοποιήσεις του ECDSA αλγορίθμου. Παρόλα αυτά, κατά τη διαδικασία σχεδίασης ενός βαθμωτού πολλαπλασιαστή, επιβάλλεται παράλληλα με την αύξηση της απόδοσης να λάβουμε υπόψιν και την αντοχή σε Side Channel κρυπταναλυτικές επιθέσεις. Τα δύο αυτά στοιχεία έχουν άμεση εξάρτηση με τον πολλαπλασιαστικό αλγόριθμο που επρόκειτο να υλοποιηθεί αλλά και με τη γενικότερη αρχιτεκτονική του πολλαπλασιαστή. Σκοπός λοιπόν είναι η εφαρμογή διάφορων τεχνικών και σε επίπεδο αλγοριθμικό αλλά και σε επίπεδο Register Transfer Level (RTL) για τη δημιουργία ενός αρκετά αποδοτικού σε ταχύτητα και μέγεθος πολλαπλασιαστή, που δε θα υστερεί όμως προστασίας από κρυπταναλυτικές επιθέσεις. Κατά την εκτέλεση ενός πολλαπλασιασμού Q = k P, ο στόχος ενός επιτιθέμενου είναι η εξαγωγή ή αλλιώς η εύρεση της βαθμωτής τιμής k (το λεγόμενο ιδιωτικό κλειδί) μέσω τυχόν διαρροών πληροφοριών σε οποιαδήποτε στιγμή του πολλαπλασιασμού μέχρι το τέλος της πράξης. 29

30 Βαθμωτός Πολλαπλασιαστής Αποτελεί ύψιστης σημασίας λοιπόν η επιλογή του σωστού αλγορίθμου βαθμωτού πολλαπλασιασμού μέσα από τις διάφορες επιλογές για την όσο το δυνατόν μεγαλύτερη αποφυγή διαρροών. Παρόλο όμως που υπάρχει ένα σχετικά μεγάλο πλήθος τέτοιων αλγορίθμων, λίγοι από αυτούς θεωρούνται ανθεκτικοί σε διαρροές. 3.1.1 Προστασία εναντίον Simple Power Attacks Ένας πολλά υποσχόμενος τέτοιος αλγόριθμος είναι ο λεγόμενος Montgomery Power Ladder (MPL), του οποίου έχει αποδειχτεί [9] [10] η ανθεκτικότητα σε αρκετές απλές αλλά και πιο ανεπτυγμένες επιθέσεις ισχύος (Simple Power Attacks). Το κύριο πλεονέκτημά του αποτελεί το γεγονός πως κατά την εκτέλεσή του απουσιάζουν τυχόν ψεύτικες πράξεις (dummy operations) και πως ο αριθμός των πράξεων πάνω σε σημεία καμπύλης παραμένει σταθερός ανεξάρτητα από το μέγεθος του βαθμωτού μεγέθους k [11]. Αυτό σημαίνει οτι οι πράξεις σημείων σε κάθε γύρο μπορούν να εκτελεστούν παράλληλα, δίνοντας έτσι τη δυνατότητα μείωσης του χρόνου εκτέλεσης ενός πολλαπλασιασμού, αλλά και τη δυνατότητα απόκρυψης της εκτελούμενης πράξης. Παρακάτω παρουσιάζεται ο αλγόριθμος MPL [11], όπου t υποδηλώνει το μέγεθος σε bit ενός βαθμωτού e. INPUT: P : BEC base point EC(GF (2 k )), e = (e t 1, e t 2,...e 0 ) GF (2 k ) OUTPUT: e P 1. R 0 = O, R 1 = P 2. For i = t 1 to 0 If (e i = 0) then R 1 = R 0 + R 1, R 0 = 2 R 0 else R 0 = R 0 + R 1, R 1 = 2 R 1 end if 3. Return R 0. Αλγόριθμος 6: SPA resistant MPL algorithm Αξίζει να τονίσουμε οτι οι Δυαδικές Καμπύλες Edwards (BECs) ενώ μπορούν δυνητικά να ενισχύσουν την SCA προστασία κατά τον MPL αλγόριθμο λόγω των ιδιοτήτων τους που αναφέρθηκαν στο 1ο Κεφάλαιο, παρόλα αυτά η προστασία αυτή χάνεται κατά τη βελτιστοποίηση του αλγορίθμου διπλασιασμού [3] [4]. Γι αυτό το λόγο, όπως επίσης και του γεγονότος πως ο MPL αλγόριθμος δεν είναι ασφαλής εναντίον προηγμένων Side Channel κρυπταναλυτικών επιθέσεων (Advanced SCAs), όπως διαφορικών και επιθέσεων συσχέτισης (Correlation Attacks), επιβάλλεται η εισαγωγή

Γενική Προσέγγιση Αρχιτεκτονικής 31 κι υλοποίηση επιπλέον μέτρων προστασίας στη σχεδίαση του βαθμωτού πολλαπλασιαστή μας. 3.1.2 Προστασία εναντίον Side Channel Attacks Πολλά από τα μέτρα που μπορούν να ληφθούν για επίτευξη αντίστασης σε SCAs μπορούν να κατηγοριοποιηθούν είτε σε μέτρα απόκρυψης διαρροών (leakage hiding) ή μέτρα αποσυσχέτισης (leakage masking) [10] [12]. Κατά τη μέθοδο απόκρυψης στόχος είναι η ταυτότητα των πράξεων κατά την εκτέλεση ενός αλγορίθμου να παραμένει αδιευκρίνιστη σε έναν επιτιθέμενο, ώστε να κάνει δύσκολη τη διαδικασία ανάλυσης του ίχνους διαρροής. Επιτεύξιμο αυτό γίνεται μέσω διάφορων τεχνικών, είτε με τη χρήση ειδικών κυκλωμάτων εισαγωγής θορύβου στη διαδικασία είτε σε αλγοριθμικό επίπεδο με την είσοδο ψεύτικων πράξεων στη διαδικασία και την αναδιάταξη πράξεων GF (2 k ) πεδίου. Τελικός στόχος αυτών των τεχνικών είναι η αδυναμία ταυτοποίησης της εκτελέσιμης πράξης σημείων, δηλαδή της πρόσθεσης και του διπλασιασμού. Οι καμπύλες Edwards, όπως και ο MPL αλγόριθμος, προσφέρουν αρκετή ευκολία στην υλοποίηση των παραπάνω μέτρων ασφαλείας λόγω της ομοιομορφίας και της πληρότητας των πρώτων, αλλά και του παραλληλισμού των πράξεων που προσφέρει στο σχεδιαστή ο MPL αλγόριθμος. Από την άλλη πλευρά, η αποσυσχέτιση (masking) δεν έχει στόχο την εξάλειψη του ίχνους διαρροής αλλά τη διάκριση της ευαίσθητης πληροφορίας από αυτό. Κύριος τρόπος επίτευξης αυτού είναι η προσθετική ή πολλαπλασιαστική τυχαιοποίηση συγκεκριμένης μεταβλητής άμεσα συσχετιζόμενης με την ευαίσθητη πληροφορία κατά τη διάρκεια εκτέλεσης ενός αλγορίθμου. Πιο συγκεκριμένα, από τις πιο ευρέως διαδεδομένες τεχνικές όσον αφορά το masking σε βαθμωτό πολλαπλασιασμό ελλειπτικών καμπυλών αποτελούν οι τρεις τεχνικές του Coron [13], δηλαδή η τυχαιοποίηση της βαθμωτής τιμής (e στον Αλγόριθμο 6), η τυχαιοποίηση του αρχικού σημείου εισόδου P (point blinding) ή η τυχαιοποίηση των προβολικών συντεταγμένων αυτού (X, Y, Z). Από τις τρεις αυτές τεχνικές οι πιο εύκολα υλοποιήσιμες είναι η πρώτη (scalar blinding) και η τελευταία (projective coordinate blinding), καθώς η τεχνική του point blinding απαιτεί την εισαγωγή και αποθήκευση ενός τυχαίου σημείου σε κάθε βαθμωτό πολλαπλασιασμό, κάτι που επιφέρει καθυστέρηση και αύξηση της επιφάνειας της υλοποίησης. Η παραπάνω σύντομη ανάλυση μας τονίζει την ανάγκη που έχει ο υλικά επιταχυνόμενος βαθμωτός πολλαπλασιαστής που επεξεργάζεται την τιμή k κατά την εκτέλεση του αλγορίθμου ECDSA να πρέπει να παρέχει ένα αρκετά υψηλό επίπεδο ασφάλειας εναντίον μιας μεγάλης γκάμας κρυπταναλυτικών επιθέσεων Side Channel. Για να το επιτύχουμε αυτό εκ-

32 Βαθμωτός Πολλαπλασιαστής μεταλλευόμαστε τον παραλληλισμό των πράξεων σημείων καμπύλης που προσφέρει ο MPL αλγόριθμος για να εκτελέσουμε ταυτοχρόνως τις δύο κύριες πράξεις σημείων αλλά και για να εισαγάγουμε απόκρυψη πληροφορίας. Το συγκεκριμένο μέτρο άμυνας πραγματοποιείται με τη δόμηση ενός ενιαίου και συμπαγούς μπλοκ υπολογισμών. Στην ουσία, δημιουργούμε παράλληλα επίπεδα GF (2 k ) πράξεων όπου αναμιγνύουμε σε επίπεδο χρονικό τις GF (2 k ) πράξεις της πρόσθεσης και του διπλασιασμού προς ταυτόχρονη εκτέλεση. Οι έξοδοι κατά το τέλος εκτέλεσης των υπολογισμών του μπλοκ αυτού είναι οι προβολικές συντεταγμένες (X 3 : Y 3 : Z 3 ) και (X 3D : Y 3D : Z 3D ) της πρόσθεσης και διπλασιασμού σημείου αντίστοιχα και υποδηλώνουν το τέλος ενός MPL γύρου, όπως έχει οριστεί στον Αλγόριθμο 6. Η προσέγγιση, λοιπόν, αυτή έχει ως σκοπό να δυσκολέψει τη διάκριση μεταξύ των πράξεων σημείων και να εισαγάγει θόρυβο στο ίχνος διαρροής κάθε γύρου. Και οι δύο αυτοί στόχοι είναι εφικτοί λόγω του παραλληλισμού που εισάγουμε στη σχεδίασή μας. Με αυτόν τον τρόπο ένας επιτιθέμενος συναντά αυξανόμενη δυσκολία στην προσπάθειά του να αποκωδικοποιήσει σε μια οποιαδήποτε στιγμή ποια πράξη κάθε γύρου είναι αυτή με τη μεγαλύτερη συνεισφορά στο ίχνος διαρροής του συγκεκριμένου γύρου. Εντούτοις, το αντίμετρο αυτό δεν είναι από μόνο του ικανό να αντιμετωπίσει κάποιες ευρέως διαδεδομένες SCA επιθέσεις. Όπως προαναφέρθηκε λοιπόν, για να ενισχύσουμε περαιτέρω την αντίσταση του βαθμωτού πολλαπλασιαστή, υιοθετούμε δύο από τα αντίμετρα του Coron, βαθμωτή τυχαιοποίηση (scalar randomization) και τυχαιοποίηση προβολικών συντεταγμένων (projective coordinate randomization). Όσον αφορά το πρώτο μέτρο, αυτό εφαρμόζεται σε επίπεδο λογισμικού στη βαθμωτή τιμή e πριν την είσοδο αυτής στον πολλαπλασιαστή. Αφού γεννήσουμε έναν τυχαίο αριθμό h, τον πολλαπλασιάζουμε με την τάξη n του σημείου Γεννήτορα της BEC καμπύλης και τον προσθέτουμε στην τιμή e του Αλγορίθμου 6, σχηματίζοντας έτσι την τιμή u = e + h n [13]. Πρακτικά, η τιμή h μπορεί να είναι ένας μικρός αριθμός (π.χ 20 bits) και η εισαγωγή της τεχνικής αυτής σαν μέτρο αντίστασης επιφέρει μια επέκταση ψηφίου πάνω στο u, το οποίο θα έχει μήκος μεγαλύτερο από k. Αυτό οδηγεί αντίστοιχα και στην αύξηση του αριθμού των γύρων του MPL αλγορίθμου (t γύροι, όπου t το μήκος ψηφίων του u). Εκτός όμως από το μέτρο αυτό, εφαρμόζουμε και ένα ακόμα καθαρά υλοποιημένο πάνω στο υλικό που αποτελεί μία στρατηγική τυχαιοποίησης του σημείου εισόδου σε προβολικές συντεταγμένες. Διαλέγοντας και σε αυτήν την περίπτωση έναν τυχαίο αριθμό r και πολλαπλασιάζοντάς τον με ένα σημείο εισόδου (X : Y : Z) λαμβάνουμε ως αποτέλεσμα το σημείο (r X : r Y : r Z). Εκ πρώτης όψεως, το σημείο αυτό φαντάζει διαφορετικό με το αρχικό, όμως το γεγονός πως εργαζόμαστε πάνω στις προβολικές συντεταγμένες σημαίνει οτι κατά τη μετατροπή του σημείου

Προσέγγιση Σχεδίασης για Προστασία από SCAs 33 σε συγγενείς, τα σημεία P = (X : Y : Z) και P R = (r X : r Y : r Z) καταλήγουν να αποτελούν το ίδιο μοναδικό σημείο [1]. Αυτό καθίσταται εμφανές λόγω της πράξης μετασχηματισμού από προβολικές σε συγγενείς συντεταγμένες x = X/Z και y = Y /Z, όπου για το σημείο P R η τυχαία τιμή r κατά τις πράξεις x = r X r Z και y = r Y r Z απαλείφεται. Την τυχαιοποίηση αυτήν την εφαρμόζουμε σε κάθε i γύρο του MPL αλγορίθμου πολλαπλασιαστικά με τα αποτελέσματα και της πράξης πρόσθεσης σημείου και διπλασιασμού. Πολλαπλασιάζουμε δηλαδή με τον τυχαίο αριθμό r κατά το τέλος του MPL γύρου και το αποτέλεσμα της πρόσθεσης σημείου αλλά και το αποτέλεσμα του διπλασιασμού σημείου, ανεξάρτητα με ποιο από τα δύο επρόκειτο να χρησιμοποιηθεί στον επόμενο MPL γύρο. Αξίζει να σημειώσουμε επίσης οτι η τιμή r i ανανεώνεται σε κάθε γύρο. Η υλοποίηση επομένως του μέτρου αυτού ενσωματωμένη στη μονάδα υπολογισμού των γύρων προσφέρει αντίσταση απέναντι σε οριζόντιες και κάθετες ανεπτυγμένες επιθέσεις ASCAs. 3.2 Προσέγγιση Σχεδίασης για Προστασία από SCAs Έχοντας ως τελικό στόχο την υλοποίηση της στρατηγικής που θέσαμε στις προηγούμενες ενότητες, υιοθετούμε κι επεκτείνουμε τη σχεδιαστική προσέγγιση βασισμένη στο Montgomery Power Ladder αλγόριθμο που έχει προταθεί στα [14] [15] [16]. Κύριος άξονας γύρω από τον οποίο περιστρέφεται η στρατηγική αυτή είναι η σχεδίαση μιας υπολογιστικής μονάδας που θα εκτελεί ταυτόχρονα πρόσθεση και διπλασιασμό σημείων σε ένα γύρο MPL. Αυτό θα καταστεί επιτεύξιμο με την παρατήρηση της εξάρτησης δεδομένων (data dependencies) των GF (2 k ) πράξεων που παρουσιάζονται στον Πίνακα 1.1, την ευρεία συνένωση των πράξεων αυτών, καθώς και με την εισαγωγή τυχαιοποίησης κατά το μεγαλύτερο δυνατό βαθμό σε όλη τη διαδικασία. Ο υπολογιστικός αυτός πυρήνας δέχεται ως εισόδους 2 σημεία P 1 = (X 1 : Y 1 : Z 1 ) και P 2 = (X 2 : Y 2 : Z 2 ) και παράγει ως αποτελέσματα 2 επίσης σημεία P 3 = (rx 3 : ry 3 : rz 3 ) και P 3D = (rx 3D : ry 3D : rz 3D ). Έτσι, σε κάθε γύρο πραγματοποιούνται παράλληλα οι πράξεις P 3 = P 1 + P 2 και P 3D = 2 P 1. Το γεγονός πως ο MPL αλγόριθμος αποτελεί τη βάση πάνω στην οποία στηρίζεται η γενικότερη αρχιτεκτονική του βαθμωτού πολλαπλασιαστή και κατ επέκταση του ECDSA συστήματος κάνει ακόμα πιο σημαντική την ανάγκη η μονάδα αυτή να παρέχει υψηλή απόδοση σε ταχύτητα, κατανάλωση και αντοχή σε SCAs. Κύριος τρόπος επίτευξης υψηλότερης ταχύτητας είναι ο παραλληλισμός όσο το δυνατόν περισσότερων GF (2 k ) πράξεων του Πίνακα 1.1 μέσω της υλοποίησης κατάλληλων μονάδων GF (2 k ) πρόσθεσης και πολλαπλασιασμού αντίστοιχα και της εξεύρεσης του ιδανικού αριθμού πλήθος

34 Βαθμωτός Πολλαπλασιαστής αυτών. Όπως έχει συζητηθεί στα [14] [16], οι digit serial πολλαπλασιαστές μπορούν να προσφέρουν ικανοποιητική ισορροπία ανάμεσα σε ταχύτητα και επιφάνεια (αριθμός πυλών ή FPGA LUT). Παρόλα αυτά, υπάρχει ένα όριο σχετικά με το πόσες τέτοιες μονάδες μπορούμε να χρησιμοποιήσουμε παράλληλα, εξαρτώμενο από παράγοντες όπως το κόστος υλοποίησης σε διαθέσιμους πόρους, η ενδιάμεση εξάρτηση δεδομένων των GF (2 k ) πράξεων και ο παράγοντας χρησιμοποίησης (utilization factor). Ο παράγοντας αυτός αναφέρεται στη δυνατότητα να παραμένουν ενεργές και κατειλημμένες όσο το δυνατόν περισσότερες υπολογιστικές μονάδες οποιαδήποτε χρονική στιγμή και όπως γίνεται αντιληπτό απαιτείται να διατηρείται σε υψηλά επίπεδα για να εξασφαλίζεται η αποφυγή κατασπατάλησης αχρησιμοποίητων πόρων και να μην ακυρώνονται επί της ουσίας τα μέτρα απόκρυψης πληροφορίας κατά την εκτέλεση ενός MPL γύρου. Ένα επιπλέον σημείο που απαιτεί προσοχή είναι το γεγονός πως η αραιή χρησιμοποίηση GF (2 k ) αριθμητικών μονάδων μπορεί να οδηγήσει στη δημιουργία ευάλωτου σημείου για πιο εξεζητημένες φυσικές επιθέσεις [17]. Για τους παραπάνω λόγους καταλήγουμε στη χρησιμοποίηση ενός ισορροπημένου αριθμού παράλληλων GF (2 k ) πράξεων χωρίς να στέκεται εμπόδιο το γεγονός πως σε κάποιες χρονικές στιγμές υπάρχει η πιθανότητα ύπαρξης περισσότερων διαθέσιμων πράξεων σε σχέση με αυτές που όντως υποστηρίζονται προς εκτέλεση. Εφόσον λοιπόν είναι περιορισμένος ο αριθμός των αριθμητικών υπολογιστικών μονάδων που έχουμε στη διάθεσή μας, οι πράξεις που δεν μπορούν να εκτελεστούν άμεσα λόγω απασχολημένων πόρων καθυστερούνται προς εκτέλεση σε επόμενη χρονική στιγμή. Σε αυτό το σημείο πρέπει να λάβουμε υπόψιν στο σχεδιασμό μας και την προηγούμενή μας προσέγγιση που κάναμε όσον αφορά το βασισμένο σε υλικό masking απέναντι σε SCAs. Γι αυτό το λόγο θα πρέπει να συμπεριλάβουμε μία σειρά από GF (2 k ) πράξεις τυχαιοποίησης στην υπολογιστική μονάδα του MPL αλγορίθμου, οι οποίες πραγματοποιούνται πάνω σε κάθε προβολική συντεταγμένη των δύο σημείων εξόδου του αλγορίθμου P 3 και P 3D. Επιτεύξιμο αυτό στη σχεδίασή μας θα καταστεί με την εκτέλεση επιπλέον GF (2 k ) πολλαπλασιασμών μετά το πέρας των πράξεων του MPL αλγορίθμου. Όπως προαναφέρθηκε παραπάνω, κατά τους πολλαπλασιασμούς αυτούς πολλαπλασιάζουμε και τις δύο προβολικές συντεταγμένες των σημείων P 3 και P 3D με έναν τύχαίο αριθμό r, αποτέλεσμα εξόδου μιας Γεννήτριας Ψευδοτυχαίων Αριθμών (PRNG). Η τιμή αυτή r ανανεώνεται σε κάθε νέο MPL γύρο, εξασφαλίζοντας με αυτόν τον τρόπο ένα ενιαίο και τυχαίο μοτίβο διαρροής κατά τη διάρκεια όλου του βαθμωτού πολλαπλασιασμού. Έπειτα από μια ανάλυση εξάρτησης δεδομένων (Data Dependency Graph) πάνω στις πράξεις του Πίνακα 1.1 για έναν MPL γύρο οι GF (2 k ) πράξεις ταυτοποιούνται και διαχωρίζονται σε πιθανά επίπεδα παραλληλισμού. Σύμφωνα με τη διάρκεια ζωής του κάθε αποτελέσματος που απαι-

Προσέγγιση Σχεδίασης για Προστασία από SCAs 35 τείται ώστε να μην παρουσιαστεί λάθος τιμή σε κανένα σημείο είτε της πρόσθεσης είτε του διπλασιασμού σημείων Ελλειπτικών Καμπυλών, απεικονίζουμε την όλη διαδικασία με γραφικό τρόπο στα Σχήματα 3.1 για την Πρόσθεση και 3.2 για το Διπλασιασμό αντίστοιχα. Με τετράγωνο συμβολίζεται η GF (2 k ) πράξη του πολλαπλασιασμού ενώ με κύκλο η GF (2 k ) πράξη της πρόσθεσης. Επιπροσθέτως, έχοντας επίσης και ως στόχο την επίτευξη ισορροπίας ανάμεσα σε απόδοση και υψηλό utilization factor δομείται μια σειρά από παράλληλα επίπεδα. Ο αριθμός, καθώς και το χρονικό πλαίσιο των επιπέδων αυτών καθορίζεται κυρίως από την ισορροπημένη χρήση GF (2 k ) digit serial πολλαπλασιαστών. Το αποτέλεσμα της παραπάνω ανάλυσης αποτυπώνεται στον Πίνακα 3.1 καθώς και με γραφικό τρόπο στα Σχήματα 3.1 και 3.2. Πίνακας 3.1: Paralleling BEC point addition and doubling GF (2 k ) operations Inputs (X 1 : Y 1 : Z 1 ) (X 2 : Y 2 : Z 2 ) Layer M1 M2 M3 Ad1 Ad2 Ad3 1 A B DA G1 G2 K1 2 G DC DB H1 H2 K2 3 H DD DE I - - 4 C DH DI J - DM 5 V2 V1 K DJ DL2 DL3 6 DO E DG U2 V4 U1 7 D V3 L DK - U3 8 DL F U4 M1 V5 N1 9 V7 V6 O1 M2 N2 U5 10 DF O2 U V8 DX3 DY3 11 - P2 P1 DL1 - V 12 rdy3 rz3 rdx3 DZ3 Y3 X3 13 ry3 rx3 rdz3 - - - Outputs (X 3 : Y 3 : Z 3 ) (X 3D : Y 3D : Z 3D ) Rand Outputs (rx 3 : ry 3 : rz 3 ) (rx 3D : ry 3D : rz 3D ) - : idle r: random number Παρατηρούμε για αυτόν οτι έχουμε 13 ξεχωριστά επίπεδα παραλληλισμού στα οποία εκτελούνται ταυτοχρόνως 3 GF (2 k ) πολλαπλασιασμοί (M1, M2 και M3), και 3 GF (2 k ) προσθέσεις (Ad1, Ad2, Ad3). Η GF (2 k ) πράξη του τετραγωνισμού πραγματοποιείται επίσης από τους 3 πολλαπλασιαστές. Όπως φαίνεται και στον πίνακα, τα τελευταία δύο επίπεδα είναι απαραίτητα για την τυχαιοποίηση των προβολικών συντεταγμένων των σημείων εξόδου με την τυχαία τιμή r. Υπενθυμίζουμε πως ο GF (2 k ) πολλαπλασιασμός με τις παραμέτρους καμπύλης d 1, d 2, d 1 +d 2 πραγματοποιείται

36 Βαθμωτός Πολλαπλασιαστής Σχήμα 3.1: Point Addition Data Dependency Graph

Προσέγγιση Σχεδίασης για Προστασία από SCAs 37 Σχήμα 3.2: Point Doubling Data Dependency Graph

38 Βαθμωτός Πολλαπλασιαστής επίσης με τις ήδη υπάρχουσες υπολογιστικές μονάδες. Ξεχωριστό στοιχείο του πίνακα αυτού είναι ο υψηλός utilization factor κοντά στο 100%, καθώς παρατηρούμε πως σε κάθε επίπεδο παραλληλισμού είναι απασχολημένες σχεδόν όλες οι μονάδες. Επιπλέον, στις περισσότερες των περιπτώσεων όπου δε γίνονται πράξεις, αυτές εν τέλει πρόκειται για GF (2 k ) προσθέσεις, οι οποίες συμβάλλουν κατά πολύ λιγότερο και στην τελική απόδοση του ολικού συστήματος αλλά και στους πόρους που απαιτούν, όντας ουσιαστικά μία πράξη bitwise XOR. Αυτό σημαίνει πως απαιτούν μόνο έναν κύκλο ρολογιού για να παράξουν το αποτέλεσμα της πρόσθεσης και η απουσία τέτοιων πράξεων σε συγκεκριμένους γύρους του Πίνακα 3.1 μπορεί να κριθεί οτι έχει ακόμα και ανεπαίσθητη συμβολή στο τελικό ίχνος του πολλαπλασιασμού. 3.3 Προσέγγιση Σχεδίασης για Βελτιστοποίηση Πόρων Οι αναδιαταγμένες πράξεις που παρουσιάζονται στον Πίνακα 1.1 αποτελούν μόνο ένα γύρο του Montgomery Power Ladder αλγορίθμου. Χρησιμοποιώντας 3 GF (2 k ) Πολλαπλασιαστές και 3 Αθροιστές, η συνολική υπολογιστική μονάδα πρέπει να υποστηρίζει 12 εισόδους (2 για κάθε πράξη) και 6 εξόδους, η καθεμία με 233 ψηφία μήκος λέξης. Παρατηρώντας τους Πίνακες 1.1 και 3.1 συμπεραίνουμε οτι υπάρχουν τιμές ενός επιπέδου που χρησιμοποιούνται όχι μόνο στο αμέσως επόμενο ως είσοδοι αλλά και σε μελλοντικά επίπεδα επίσης. Μέχρι να απαιτηθούν ξανά ως είσοδοι σε οποιαδήποτε από τις τρεις υπολογιστικές μονάδες πρέπει να είναι διαθέσιμες και αποθηκευμένες σε καταχωρητές. Υπονοείται έτσι η ύπαρξη ενός σχετικά μεγάλου μηχανισμού αποθήκευσης ο οποίος θα λειτουργεί παράλληλα και με έναν περίπλοκο μηχανισμό ελέγχου για τη μεταφορά των τιμών στους καταχωρητές κι από κει πάλι προς τις υπολογιστικές μονάδες. Πιο συγκεκριμένα, μια αφελής υλοποίηση ενός τέτοιου μηχανισμού θα απαρτιζόταν από 22 στοιχεία αποθήκευσης (καταχωρητές), έναν 6-σε-22 εξόδους μηχανισμό ελέγχου και έναν 22-σε-12 μηχανισμό ελέγχου εισόδων για να καλύψει όλες τις δυνατές περιπτώσεις των Πινάκων 1.1 και 3.1. Σε αυτό το σημείο είναι εμφανές το πρόβλημα που δημιουργείται με την υλοποίηση τέτοιων μηχανισμών, αφού η πολυπλοκότητα, το μεγάλο μέγεθος και το fan-out οδηγούν σε μη επιτρεπτά trade-offs. Για να αντιμετωπίσουμε το πρόβλημα αυτό υιοθετούμε μια σχεδιαστική προσέγγιση που βασίζεται στις εξής αρχές: Ομαδοποίηση υπολογιστικών μονάδων σε ημιαυτόνομες Λειτουργικές Μονάδες (Operational Units): Για την καλύτερη διαχείριση των υπολογισμών είναι δομικά καλύτερο να ενώσουμε τις δύο GF (2 k ) πράξεις (πρόσθεση και πολλαπλασιασμός) σε μία ενιαία υπολογιστική μονάδα που θα εργάζεται ανεξάρτητα αλλά και συνεργαζόμενη με τις αντίστοιχες μονάδες.

Προσέγγιση Σχεδίασης για Βελτιστοποίηση Πόρων 39 Αυτό σημαίνει οτι μία τέτοια Λειτουργική Μονάδα θα περιέχει μία Μονάδα Πράξεων που θα αποτελείται από έναν digit serial GF (2 k ) Πολλαπλασιαστή και έναν GF (2 k ) Αθροιστή. Περιορισμός απαιτήσεων αποθήκευσης στις ξεχωριστές μονάδες: Με σκοπό να οδηγηθούμε προς την αυτονομία της κάθε Λειτουργικής Μονάδας, είναι επιθυμητό αυτή να έχει το δικό της στοιχείο αποθήκευσης, είτε αυτό είναι ένα αρχείο καταχωρητών, ένας Buffer ή στοιχείο μνήμης. Ιδανικά, τα δεδομένα που διαχειρίζεται μία μονάδα θα πρέπει να αποθηκεύονται και να προσπελαύνονται απο τον αποθηκευτικό χώρο της ίδιας της μονάδας μόνο και όχι άλλης. Για πρακτικούς λόγους όμως είναι αρκετά δύσκολο να ικανοποιηθεί αυτό κι έτσι αρκεί το γεγονός και μόνο όλες οι είσοδοι προς τη Μονάδα Πράξεων να αποθηκεύονται τοπικά. Τοπικότητα της αποθήκευσης και της ομαδοποίησης όλων των εισόδων σε όλα τα επίπεδα παραλληλισμού: Σε κάθε Λειτουργική Μονάδα το αρχείο καταχωρητών της θα πρέπει να περιέχει όλες τις απαραίτητες τιμές προς χρήση ως εισόδους σε αυτήν, όπως δείχνει η κάθε στήλη του πίνακα 3.1. Ιδανικά, οι τιμές αυτές θα έχουν υπολογιστεί επίσης κι από την ίδια από τις τρεις Μονάδες. Τέλος, το αρχείο καταχωρητών θα πρέπει να διαχωριστεί σε δύο τμήματα όπου το καθένα θα αποθηκεύει τιμές προς είσοδο σε μία από τις δύο εισόδους του Πολλαπλασιαστή και του Αθροιστή αντίστοιχα (στην είσοδο 1 ή στη 2). Εκμετάλλευση της διάρκειας ζωής των τιμών σε κάθε Μονάδα: Τα δεδομένα που χρησιμοποιούνται ως είσοδοι σε έναν υπολογισμό δεν είναι απαραιτήτως χρήσιμα για όλους τους κύκλους ρολογιού που αυτός ο υπολογισμός διαρκεί. Αυτή την ιδιότητα μας την προσφέρουν μόνο οι GF (2 k ) digit serial κι οι parallel πολλαπλασιαστές, όχι όμως οι bit serial. Στους digit serial οι τιμές παραμένουν κλειδωμένες εσωτερικά κατά τον πρώτο κύκλο κι έτσι γίνεται περιττή η αποθήκευσή τους σε κάποια εξωτερική μονάδα μέχρι το πέρας του υπολογισμού. Επομένως, η διάρκεια ζωής των τιμών εσωτερικά μιας Λειτουργικής Μονάδας μας επιτρέπει μια πιο αποδοτική επαναχρησιμοποίηση των στοιχείων αποθήκευσής της κατά τη διάρκεια εκτέλεσης. Λαμβάνοντας, τέλος, υπόψιν τους διαφορετικούς χρόνους καθυστέρησης μεταξύ των δύο GF (2 k ) πράξεων, συμπεραίνουμε πως μας δίνεται η δυνατότητα καθυστέρησης εκτέλεσης της πράξης της πρόσθεσης για μερικούς κύκλους ρολογιού σε περίπτωση που το αποτέλεσμα της πράξης αυτής χρειάζεται στο αμέσως επόμενο επίπεδο παραλληλισμού. Υπενθυμίζουμε οτι η GF (2 k ) πρόσθεση χρειάζεται έναν κύκλο ρολογιού, ώντας μια σειρά από παράλληλες XOR εκτελέσεις, ενώ ο GF (2 k ) πολλαπλασιασμός χρειάζεται k/d κύκλους ρολογιού.

40 Βαθμωτός Πολλαπλασιαστής 3.4 Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή Αποπειρώντας να υλοποιήσουμε τη στρατηγική που αναλύθηκε στα προηγούμενα υποκεφάλαια, καταλήγουμε στη σχεδίαση του πολλαπλασιαστή όπως αυτή φαίνεται στο Σχήμα 3.3. Μία Μηχανή Πεπερασμένων Καταστάσεων (FSM) δρα ως ο μηχανισμός ελέγχου όλων των απαραίτητων σημάτων ελέγχου των υπόλοιπων μονάδων, συνδεδεμένη με έναν καταχωρητή ολίσθησης κλειδιού, μία Γεννήτρια Ψευδοτυχαίων Αριθμών (PRNG) και 3 Λειτουργικές Μονάδες (Operational Units). Σχήμα 3.3: Scalar Multiplier Architecture 3.4.1 Μηχανή Πεπερασμένων Καταστάσεων (FSM) Η Μηχανή Πεπερασμένων Καταστάσεων (FSM) είναι υπεύθυνη για την παραγωγή όλων των κατάλληλων σημάτων ελέγχου που στέλνονται σε κάθε μία μονάδα, καθώς και για το σωστό συγχρονισμό αυτών σύμφωνα και με τη λογική του Πίνακα 3.1. Όπως φαίνεται και στο Σχήμα 3.4, η Μηχανή αναμένει το σήμα εκκίνησης start για να ξεκινήσει ο πολλαπλασιασμός. Οι επόμενες καταστάσεις χωρίζονται σε 13 διαφορετικές ομάδες αντιπροσωπώντας τα 13 επίπεδα του Πίνακα 3.1, με τρεις καταστάσεις να αποτελούν την κάθε ομάδα. Οι δείκτες I (Init), S (Secondary) και F (Final) υποδηλώνουν τις 3 καταστάσεις στις οποίες βρίσκεται η FSM σε κάποιο συγκεκριμένο επίπεδο. Στις Init καταστάσεις φορτώνονται οι είσοδοι στους κατάλληλους

Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή 41 πρωτεύοντες καταχωρητές όπου έπειτα όσες κριθούν απαραίτητο προωθούνται στους δευτερεύοντες στις καταστάσεις με δείκτη S. Περισσότερα για τους πρωτεύοντες και δευτερεύοντες καταχωρητές θα παρουσιαστούν σε επόμενο υποκεφάλαιο. Τέλος, στις F (Final) καταστάσεις λαμβάνουμε τα αποτελέσματα και τα αποθηκεύουμε στους κατάλληλους καταχωρητές για χρήση στις επόμενες βαθμίδες. Όταν ολοκληρωθούν όλα τα επίπεδα παράγεται ως γενική έξοδος στη Last κατάσταση το τελικό σημείο του Βαθμωτού Πολλαπλασιασμού και η FSM επιστρέφει στην Idle κατάσταση αναμένοντας και πάλι σήμα έναρξης. 3.4.2 Λειτουργικές Μονάδες Οι Λειτουργικές Μονάδες ενσωματώνουν η κάθε μία το δικό της αρχείο καταχωρητών, μια σειρά από πολυπλέκτες υπεύθυνους για την προώθηση των τιμών του αρχείου καταχωρητών, καθώς και τη δικιά τους Αριθμητική Μονάδα. Το Σχήμα παρουσιάζει μια κάτοψη της αρχιτεκτονικής μιας Λειτουργικής Μονάδας. Όπως γίνεται φανερό, κύρια μέρη της Αριθμητικής Μονάδας (Arithmetic Unit) είναι ένας GF (2 k ) digit-serial πολλαπλασιαστής και ένας GF (2 k ) αθροιστής. Τα αποτελέσματα που παράγει η Αριθμητική Μονάδα αποθηκεύονται ξανά στο αρχείο καταχωρητών μέσω ενός συμπλέγματος πολυπλεκτών. Με σκοπό τη μείωση της πολυπλοκότητας και των πόρων υλικού (επιφάνεια), οι σχεδιαστικές τεχνικές που παρουσιάστηκαν στο υποκεφάλαιο 3.3 εφαρμόζονται για τον BEC digit-serial Scalar Multiplier. GF (2 k ) Adder: Η πράξη της GF (2 k ) πρόσθεσης, όντας μία απλή πράξη XOR σε δυαδικά πεδία, μπορεί εύκολα, απλά και οικονομικά να υλοποιηθεί χρησιμοποιώντας μία συστοιχία από 233 πύλες XOR. Αυτές δέχονται σαν είσοδο τα 233 ψηφία των τιμών εισόδου Α και Β αντιστοίχως και παράγουν το αποτέλεσμα C 233 ψηφίων μήκους λέξης επίσης. GF (2 k ) Digit Serial Multiplier: Προχωρώντας προς την υλοποίηση του Αλγορίθμου 1, αρχικά κλειδώνουμε τις τιμές εισόδου A και Β σε δύο εσωτερικούς καταχωρητές. Η τιμή Β συνδέεται σε έναν πολυπλέκτη όπου σε κάθε γύρο επιλέγει την επόμενη ομάδα ψηφίων σύμφωνα με τον LSB αλγόριθμο. Ο πολυπλέκτης αυτός ελέγχεται μέσω ενός απαριθμητή 3 ψηφίων, υποδηλώνοντας σε κάθε αλλαγή του την έναρξη ενός νέου γύρου. Για το Βήμα 2.1 του αλγορίθμου, εκμεταλλευόμαστε μια συστοιχία πυλών AND και XOR οι οποίες παράγουν το μερικό αποτέλεσμα.

42 Βαθμωτός Πολλαπλασιαστής Σχήμα 3.4: Finite State Machine

Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή 43 Το πλήθος των πυλών αυτών είναι άμεσα εξαρτώμενο από το μέγεθος ψηφίου της λέξης Β που θα επιλεγεί. Για καλύτερη ομαδοποίηση αυτών, δημιουργείται ένα επαναχρησιμοποιούμενο κύτταρο πολλαπλασιασμού (multiplication cell) το οποίο παρουσιάζεται στο Σχήμα 3.5. Στην ουσία, εφόσον η πράξη του πολλαπλασιασμού των στοιχείων μιας λέξης σε ένα δυαδικό GF (2 k ) πεδίο είναι μια απλή πράξη AND, χρησιμοποιείται η συγκεκριμένη πύλη για την πράξη A B i. Συμπληρωματικά, η πύλη XOR χρησιμεύει για να μεταφέρει την πληροφορία που γέννησε ο αντίστοιχος πολλαπλασιασμός του προηγούμενου επιλεγμένου ψηφίου. Σχήμα 3.5: Multiplication cell Μετά από τη διαδικασία αυτή, το μερικό γινόμενο P (m + d) έχει παραχθεί, παρόλα αυτά έχει όμως αυξηθεί σε μήκος λέξης από το επιτρεπτό όριο των m ψηφίων κατά το μέγεθος του κάθε ψηφίου d. Γι αυτό το λόγο, στο Βήμα 2.2 γίνεται, παράλληλα με μία μετατόπιση προς τα δεξιά της λέξης a, και η μείωση του τελικού γινομένου ώστε να επανέρθει στα φυσιολογικά όρια. Πρέπει να τονίσουμε σε αυτό το σημείο πως είναι έγκυρο η μείωση αυτή να πραγματοποιείται είτε στο τελικό αποτέλεσμα είτε μεμονωμένα στις τιμές A και C. Η συνολική λοιπόν σχεδίαση του GF (2 k ) digit serial πολλαπλασιαστή φαίνεται στο Σχήμα 3.6. Η επίτευξη στην ουσία της πράξης modulo πραγματοποιείται στο Reduction Cell μέσω μίας σχεδίασης που αποτελείται ως επί των πλείστων από πύλες XOR όπως περιγράφεται απολύτως στον Αλγόριθμο 2.

44 Βαθμωτός Πολλαπλασιαστής Σχήμα 3.6: Digit-serial multiplier

Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή 45 3.4.3 Αρχείο Καταχωρητών Αρχικά, το Αρχείο Καταχωρητών (Register File) χωρίζεται σε δύο διαφορετικά Γκρουπ (Α και Β) όπου το καθένα από αυτά αποτελείται από 4 καταχωρητές. Οι δύο από αυτούς θεωρούνται κύριοι καταχωρητές κι οι άλλοι δύο δευτερεύοντες. Σκοπός της πρώτης κατηγορίας καταχωρητών είναι η αποθήκευση των αποτελεσμάτων που παράγει η Αριθμητική Μονάδα, ενώ στους δευτερεύοντες καταχωρητές μεταφέρεται ακολουθιακά η τιμή των κύριων σε περίπτωση που έχει μεγάλη διάρκεια ζωής κι επιβάλλεται να αποθηκευτεί καινούρια τιμή στους κύριους. Το κάθε Γκρουπ καταχωρητών (Α ή Β) έχει άμεση σχέση μόνο με μία από τις δύο εισόδους του GF (2 k ) Πολλαπλασιαστή και Αθροιστή αντίστοιχα και συνδέεται με αυτούς μέσω αφοσιωμένου πολυπλέκτη. Η Αρχιτεκτονική αυτή υποστηρίζει στην πράξη τις σχεδιαστικές αρχές του προηγούμενου υποκεφαλαίου. Το γεγονός οτι η πράξη της GF (2 k ) πρόσθεσης πραγματοποιείται σε έναν κύκλο ρολογιού ενώ του πολλαπλασιασμού σε k/d μας επιτρέπει να ομαδοποιούμε ακολουθιακά ζευγάρια καταχωρητών και των δύο κατηγοριών. Με αυτόν τον τρόπο έχουμε τη δυνατότητα να μεταφέρουμε το αποτέλεσμα της πρόσθεσης που είναι αποθηκευμένο σε έναν κύριο καταχωρητή στο δευτερεύων ακόμα και κατά τη διάρκεια που ένας GF (2 k ) πολλαπλασιασμός εκτελείται. Έτσι, οι περιττές τιμές που πλέον δεν επρόκειτο να χρησιμοποιηθούν ξανά διαγράφονται αμέσως μετά την τελευταία πράξη στην οποία εμπλέκονται, εφόσον είναι ήδη αποθηκευμένες στους εσωτερικούς καταχωρητές του GF (2 k ) digit-serial πολλαπλασιαστή. Το μέτρο αυτό οδηγεί στη μείωση και του αριθμού των καταχωρητών αλλά και του αριθμού των πολυπλεκτών που είναι απαραίτητοι για την αποθήκευση των αριθμητικών αποτελεσμάτων. Μετά τον υπολογισμό τους από την Αριθμητική Μονάδα, τα αποτελέσματα πρέπει να τοποθετηθούν προσεκτικά σε ένα από τα δύο Γκρουπ Α ή Β του αρχείου καταχωρητών, όπου το καθένα περιλαμβάνει όλα τα μερικά αποτελέσματα που επρόκειτο να προωθηθούν σε μεταγενέστερο στάδιο προς την Είσοδο Α ή την Είσοδο Β του πολλαπλασιαστή και αθροιστή αντίστοιχα. Παραδείγματος χάριν, για να υπολογίσουμε την τιμή A = X 1 X 2 πρέπει προηγουμένως να έχουμε σιγουρευτεί οτι το X 1 είναι αποθηκευμένο στο Γκρουπ Α και αντιστοίχως οτι το X 2 είναι αποθηκευμένο στο Γκρουπ Β. Επιπροσθέτως, οι απαραίτητες GF (2 k ) πράξεις που αναλαμβάνει μία Λειτουργική Μονάδα πρέπει να διαμοιραστούν σωστά στο χρόνο, δηλαδή στα επίπεδα παραλληλισμού, ώστε να ικανοποιείται η υιοθετούμενη αρχή όσον αφορά την αποθήκευση. Στους Πίνακες 3.2, 3.3 και 3.4 παρουσιάζονται τα αποτελέσματα των υπολογισμών σύμφωνα με τον πίνακα 3.1, καθώς και το πως αποθηκεύονται ανά Λειτουργική Μονάδα. Σε αυτούς του πίνακες, κάθε σειρά αντιπροσωπεύει ένα από τα 13 επίπεδα παραλληλισμού και κάθε στήλη αποτελεί έναν ξεχωριστό καταχωρητή που τοποθετούνται τα αποτελέσματα ανά χρόνο. Επίσης, διακρίνονται τα δύο Γκρουπ Α και Β κι από

46 Βαθμωτός Πολλαπλασιαστής ποιους καταχωρητές αποτελείται το καθένα. Τέλος, το * σύμβολο υποδηλώνει τη μεταβίβαση μιας τιμής από έναν κύριο καταχωρητή σε έναν δευτερεύον η οποία όπως έχει αναφερθεί πραγματοποιείται κατά τη διάρκεια εκτέλεσης ενός GF (2 k ) πολλαπλασιασμού και όχι στο τέλος αυτού. Πίνακας 3.2: Operations storage in register file 1 Group A Group B Extra R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 X1 Y1 Z2 Z1 X2 A G1 Z2 G2 Z1 X2 B H1 A G H2 H I DE DE J*/DH J DI G C DE DJ DJ DI DG DO DJ D F DG DL D V7 V6 DL DY3 DJ Z3 Z3 DX3*/DF DX3 DY3 DL1 Y3*/rDY3 Y3 rz3 rz3 rdx3 *:value propagation to secondary register Παρατηρώντας το Σχήμα 3.7, η τεχνική που περιγράψαμε και υλοποιήσαμε μας επιτρέπει να μειώσουμε σε αρκετά μεγάλο βαθμό τους απαραίτητους πολυπλέκτες επιλογής των εισόδων της Αριθμητικής Μονάδας σε μόνο 4-σε-1 πολυπλέκτες με μήκος λέξης 233 bits. Παρόλα αυτά δεν μπορούμε να αποφύγουμε κάποιες εξαιρετικές περιπτώσεις όπου η μεγάλη διάρκεια ζωής των περιεχομένων κάποιων καταχωρητών μας ωθεί στη χρησιμοποίηση επιπλέον καταχωρητών. Στους πίνακες 3.2, 3.3 και 3.4 αυτοί οι καταχωρητές υποδηλώνονται με την ονομασία extra. Έτσι, αυτές οι εξαιρέσεις απαιτούν την προσεκτική και κατά περίπτωση διαχείρισή τους με σκοπό να ικανοποιείται η BEC GF (2 k ) υπολογιστική ροή. 3.4.4 Γεννήτρια Ψευδοτυχαίων Αριθμών (PRNG) Κατά τα επίπεδα παραλληλισμού 12 και 13 πραγματοποιείται η τυχαιοποίηση των προβολικών συντεταγμένων των αποτελεσμάτων και της πρόσθεσης σημείου καμπύλης αλλά και του διπλασιασμού σημείου. Η Γεννήτρια Ψευδοτυχαίων Αριθμών (PRNG), όπως φαίνεται και στο Σχήμα 3.3, παράγει έναν τυχαίο αριθμό r 233 ψηφίων και τον πολλαπλασιάζει με το ενδιάμεσο αποτέλεσμα ενός Montgomery Power Ladder γύρου, όπως αναλύθηκε σε προηγούμενο κεφάλαιο. Στην περίπτωσή μας, η Γεννήτρια αυτή είναι μια Trivium based PRNG [18]. Στην αρχή κάθε MPL γύρου η

Αρχιτεκτονική Βαθμωτού Πολλαπλασιαστή 47 Πίνακας 3.3: Operations storage in register file 2 Group A Group B Extra R1 R2 R3 R4 R5 R6 R7 R8 R9 Y1 X2 Y2 Y1 Z2 A B Z2 DA DC DC DD DC H A DE DC C DD DH C B DL2 C V1 H V2 V4 E V3 L V4 D E V5 N2 DK M2 D DY3*/O2 DY3 DY3*/DX3 DY3 DY3 DK Z3 P2 V DY3 Z3 rdy3 X3 rdy3 rz3 *:value propagation to secondary register Πίνακας 3.4: Operations storage in register file 3 Group A Group B Extra R1 R2 R3 R4 R5 R6 R7 R8 R9 X2 Z1 X1 Y1 Y2 Z1 X1 DA Z1 K1 DA Z1 K2*/DB K2 DC K1 G DE I*/DD I C DE DI DM DL3*/DK DL3 U2 C U1 DM L DK U3 F M1 N1 DK U4 O1 U5 DX3 O1 DX3*/Z3 DX3 V8*/DY3 V8 DX3*/Z3 DX3 V DX3 DY3 P1 rdx3 DZ3 rdy3 rdx3 *:value propagation to secondary register

48 Βαθμωτός Πολλαπλασιαστής Σχήμα 3.7: Operational unit overview