5.9 S/HTTP (Secure Hyper-Text Transfer Protocol)
5.9.1
ΕισαγωγήΤο
WWW είναι ένα διανεμημένο σύστημα πολυμέσων το οποίο χαίρει μεγάλης αποδοχής από πολλούς χρήστες. Το βασικό και περισσότερο χρησιμοποιούμενο πρωτόκολλο μεταξύ WWW clients και WWW servers είναι το Hyper Text Transfer Protocol. Η ευκολία της χρήσης του WWW έχει προκαλέσει το παγκόσμιο ενδιαφέρον και χρησιμοποιείται σαν η υποδομή client / server για πολλές δικτυακές εφαρμογές. Τέτοιες εφαρμογές απαιτούν την αμοιβαία πιστοποίηση της ταυτότητας των δύο επικοινωνούντων υπολογιστών και την ικανότητα ανταλλαγής ευαίσθητων πληροφοριών. Οι τρέχοντες, όμως, HTTP εφαρμογές έχουν μέτρια έως και μηδαμινή υποστήριξη για τους κρυπτογραφικούς μηχανισμούς που είναι απαραίτητοι για τέτοιες συναλλαγές.Το πρωτόκολλο
Secure HTTP παρέχει ασφαλής μηχανισμούς επικοινωνίας μεταξύ ένα ζευγάρι HTTP server – client με σκοπό να επιτρέψει αυθόρμητες εμπορικές συναλλαγές. Στόχος της σχεδίασης ήταν ένα ευέλικτο πρωτόκολλο που διαθέτει πολλαπλούς μηχανισμούς και αλγόριθμους, και την δυνατότητα διαπραγμάτευσης αυτών. Σχεδιάστηκε από τους E. Rescorla και A. Schiffman του EIT και αποτελεί υπερσύνολο του HTTP.5.9.2
Χαρακτηριστικά του S/HTTP5.9.4
Είδη ΠροστασίαςΗ προστασία ενός μηνύματος εφαρμόζεται με τρεις διαφορετικούς τρόπους
: με υπογραφή, με κρυπτογράφηση και με παραγωγή MACs. Κάθε μήνυμα μπορεί να υπογραφεί, να κρυπτογραφηθεί ή οποιοσδήποτε συνδυασμός αυτών, συμπεριλαμβανομένων της παραγωγής και της παροχής καμίας προστασίας.Υποστηρίζονται αρκετές τεχνικές διαχείρισης κλειδιών όπως συμμετρικά μυστικά κλειδιά
, ασύμμετρη διαχείριση και το σύστημα Key Distribution Center (KDC) του Kerberos. Επιπλέον, ένας μηχανισμός challenge-response παρέχει στους επικοινωνούντες υπολογιστές την δυνατότητα να αναγνωρίζουν τις επιθέσεις επανάληψης (replay attacks).Υπογραφές
Όταν υπογράφεται ψηφιακά
, ένα κατάλληλο πιστοποιητικό μεταφέρεται με το μήνυμα ή ο αποστολέας μπορεί να αφήσει τον παραλήπτη να αποκτήσει το απαιτούμενο πιστοποιητικό από μόνος του.Κρυπτογράφηση
Εκτός από την βασική κρυπτογράφηση
, το S/HTTP καθορίζει δύο μηχανισμούς ανταλλαγής κλειδιών: (α) χρήση ασύμμετρης διαχείρισης κλειδιών και (β) χρήση ενός προκαθορισμένου κλειδιού.Στην πρώτη περίπτωση
, οι παράμετροι και το κλειδί του συμμετρικού κρυπτοσυστήματος κρυπτογραφούνται με την δημόσια κλείδα του παραλήπτη.Στην δεύτερη περίπτωση
, τα ίδια στοιχεία κρυπτογραφούνται με κλειδί που έχει προαποφασιστεί νωρίτερα. Τα κλειδιά αυτά μπορούν να προέλθουν και από τα tickets του Kerberos.Παραγωγή
Message Authentication Codes (MACs)Το
S/HTTP παρέχει επιπλέον μέσα για την επαλήθευση της ακεραιότητας των δεδομένων και την πιστοποίηση της ταυτότητας του αποστολέα. Χρησιμοποιεί το MAC του μηνύματος, το οποίο υπολογίζεται από hash αλγόριθμο σε συνδυασμό με ένα κοινό μυστικό κλειδί (π.χ. MD5). Αυτή η τεχνική δεν απαιτεί την χρήση ασύμμετρης διαχείρισης ούτε την χρήση κρυπτογράφησης.5.9.4
Μοντέλο ΕπεξεργασίαςΠροετοιμασία Μηνύματος
Η δημιουργία ενός
S/HTTP μηνύματος μπορεί να θεωρηθεί σαν μια συνάρτηση με τρεις εισόδους:Ο αποστολέας συνδυάζει τις προτιμήσεις και των δύο πλευρών και αποφαίνεται για τους αλγόριθμους και μηχανισμούς που θα χρησιμοποιηθούν καθώς και για την μορφή των κλειδιών
. Ίσως χρειαστεί η επέμβαση του χρήστη σε περίπτωση πολλών επιλογών. Στο προστατευμένο HTTP μήνυμα, έπειτα, προστίθονται κατάλληλες S/HTTP επικεφαλίδες και παράγεται το τελικό S/HTTP μήνυμα.Παραλαβή του Μηνύματος
Η επεξεργασία του παραληφθέντος
S/HTTP μηνύματος, με την σειρά της, μπορεί να θεωρηθεί σαν συνάρτηση με τέσσερις διακριτές εισόδους:Για να μπορέσει να επεξεργαστεί το
S/HTTP μήνυμα, ο παραλήπτης διαβάζει τις S/HTTP επικεφαλίδες για να ανακαλύψει τι κρυπτογραφικοί μετασχηματισμοί εφαρμόστηκαν στο μήνυμα και με την βοήθεια των προσυμφωνημένων κλειδιών τις αφαιρεί. Το αποτέλεσμα είναι το HTTP μήνυμα (ή κάποιο άλλο αντικείμενο).Ο παραλήπτης μπορεί να επιλέξει να επαληθεύσει ότι οι εφαρμοσμένοι μηχανισμοί ταιριάζουν με αυτούς που είχε δηλώσει ο αποστολέας
(είσοδος 4), με αυτούς που είχε ζητήσει ο παραλήπτης (είσοδος 2) καθώς και με τις τρέχοντες προτιμήσεις του τελευταίου (είσοδος 3), με σκοπό να αποφανθεί εάν το μήνυμα είχε μετασχηματιστεί κατάλληλα.5.9.5 HTTP
ΕνθυλάκωσηΈνα
S/HTTP μήνυμα αποτελείται από μία γραμμή αίτησης (request line) ή απάντησης (status line), ακολουθούμενη από μια σειρά από επικεφαλίδες τύπου RFC822 και τα ασφαλισμένα ενθυλακωμένα περιεχόμενα. Τα ενθυλακωμένα περιεχόμενα μπορεί να είναι είτε ένα ακόμα S/HTTP μήνυμα, είτε ένα HTTP μήνυμα, είτε απλά δεδομένα.
Request Line
Για τις
HTTP αιτήσεις η γραμμή που ξεκινά το μήνυμα είναι:Secure * Secure-HTTP/1.1
Status Line
Στις απαντήσεις του
server η πρώτη γραμμή πρέπει να είναι:Secure-HTTP/1.1 200 OK
Παρατηρούμε ότι δεν δηλώνεται κατά πόσο έγινε δεκτή ή όχι η αίτηση του
client. Η ίδια γραμμή χρησιμοποιείται και στην περίπτωση αποτυχίας και στην περίπτωση επιτυχίας, γεγονός που αποτρέπει την επίγνωση της περίπτωσης.5.9.6
Οι Επικεφαλίδες του S/HTTPΤο πρωτόκολλο καθορίζει μία σειρά από νέες επικεφαλίδες που πηγαίνουν στο πεδίο των επικεφαλίδων του
S/HTTP μηνύματος. Από αυτές, όλες εκτός των "Content-Type" και "Content-Privacy-Domain" είναι προαιρετικές. Τα κυρίως περιεχόμενα του μηνύματος διαχωρίζονται από τις επικεφαλίδες με δύο συνεχόμενες ακολουθίες των χαρακτήρων ελέγχου <CR><LF>.
Content-Privacy-Domain
Αυτή η επικεφαλίδα υπάρχει για να παρέχει συμβατότητα με τα
S/HTTP εφαρμογές που βασίζονται στο PEM. Οι τιμές της είναι "PEM", "PKCS-7" και "PGP".Όταν χρησιμοποιείται η επικεφαλίδα
"Content-Privacy-Domain: PKCS-7", η προστασία του μηνύματος γίνεται με τους εξής τρόπους, βάσει του PKCS-7: με υπογραφή και με κρυπτογράφηση. Κάθε HTTP μήνυμα μπορεί να κρυπτογραφηθεί, να υπογραφεί ή και τα δύο. Το μήνυμα που υπογράφεται συνήθως συνοδεύεται από πιστοποιητικό ή από αλυσίδα πιστοποιητικών. Οι επικεφαλίδες "Content-Privacy-Domain: PGP" και "Content-Privacy-Domain: PEM" υποδηλώνουν εφαρμογή των κανόνων του PGP ή του PEM, αντίστοιχα.Content-Transfer-Encoding
Εδώ καθορίζεται η κωδικοποίηση των περιεχομένων και οι τιμές που μπορεί να πάρει η επικεφαλίδα είναι
"8-bit", "7-bit" και "BASE64". Η τιμή εξαρτάται από την επικεφαλίδας "Content-Privacy-Domain ".Για την περίπτωση που είναι
"Content-Privacy-Domain: PKCS-7", οι μόνες επιτρεπτές τιμές της "Content-Transfer-Encoding" είναι "BASE64" ή "8-bit".Για την περίπτωση που είναι
"Content-Privacy-Domain: PEM", η μόνη επιτρεπτή τιμή είναι η "7-bit".Για την περίπτωση που είναι
"Content-Privacy-Domain: PGP" , όλες οι παραπάνω τιμές επιτρέπονται ανάλογα με την μορφή του PGP μηνύματος.Content-Type
Υπό κανονικές συνθήκες
, τα ενθυλακωμένα περιεχόμενα μετά την αφαίρεση όλων κρυπτογραφικών μέτρων ασφαλείας, θα είναι ένα HTTP μήνυμα. Σε αυτήν την περίπτωση η επικεφαλίδα θα είναι:Content-Type: application/http
Δεν αποκλείεται
, όμως, τα ενθυλακωμένα περιεχόμενα να είναι κάποιου άλλου τύπου με την προϋπόθεση ότι αυτός ο τύπος δηλωθεί σωστά με την χρήση κατάλληλης επικεφαλίδας "Content-Type".Prearranged-Key-Info
Η επικεφαλίδα αυτή έχει σαν σκοπό να συνοδεύσει πληροφορίες σχετικά με κλειδί που έχει προκανονιστεί με κάποιον τρόπο έκτος της εσωτερικής κρυπτογράφησης
. Μία χρήση της επικεφαλίδας είναι η in-band επικοινωνία ενός session key στην περίπτωση που κάποια από τις δύο πλευρές δεν κατέχει ένα.Ορίζονται τρεις μέθοδοι για την ανταλλαγή
session keys: (α) Inband, (β) Kerberos και (γ) Outband. Οι δύο πρώτες μέθοδοι, Inband και Kerberos, υποδηλώνουν ότι το κλειδί έχει ανταλλαγεί πρωτύτερα, με χρήση μιας HTTP επικεφαλίδας "Key-Assign". Η Outband μέθοδος υπονοεί ότι ο client και ο server έχουν πρόσβαση σε κλειδιά που σχετίζονται με ονόματα χρηστών, είτε μέσω μιας βάσης δεδομένων, είτε από την εισαγωγή ενός κωδικού από τον χρήστη μέσω του πληκτρολόγιου.
MAC-Info
Μεταφέρει ένα
Message Authentication Code (MAC), παρέχοντας πιστοποίηση ταυτότητας και ακεραιότητας. Το MAC υπολογίζεται από τα ενθυλακωμένα περιεχόμενα, την ώρα (προαιρετικό – αποτρέπει τις επιθέσεις replay attacks) και κάποιού κοινού μυστικού που μοιράζονται ο client και ο server. Έστω ότι χρησιμοποιείται hash αλγόριθμος H, τότε η εξίσωση που περιγράφει την διαδικασία είναι (οι δύο κάθετες παύλες || σημαίνουν συνένωση):MAC = hex(H(Message||<time>||<shared key>))
5.9.7
ΔιαπραγματεύσειςΚαι δύο πλευρές πρέπει να είναι σε θέση να εκφράσουν τις προτιμήσεις και τις απαιτήσεις τους σχετικά με ποίες κρυπτογραφικές ενισχύσεις επιτρέπουν ή απαιτούν
. Το σύνολο των πληροφοριών που διαπραγματεύονται, χωρίζεται σε τέσσερα μέρη:Property: Το είδος της προστασίας (κρυπτογράφηση, υπογραφές, κτλ.).
Value: Ο αλγόριθμος που προσφέρει την παραπάνω προστασία.
Direction: Η κατεύθυνση για την οποία αναφέρονται οι συγκεκριμένες προτιμήσεις (reception, origination).
Strength: Πόσο ισχυρή είναι η επιλογή (required, optional, refused).
Η τιμή
optional του τελευταίου πεδίου φανερώνει ότι οι αλγόριθμοι και το είδος της προστασίας που αναφέρονται στο Value και στο Property είναι προαιρετικές. Κατά την παραλαβή (reception) μηνύματος ασφαλισμένου με προαιρετικούς μηχανισμούς, ο παραλήπτης θα επιλέξει να το επεξεργαστεί αλλά δεν περιορίζεται στην επεξεργασία μόνο τέτοιων μηνυμάτων. Ο αποστολέας (origination) ο οποίος ορίζει κάποιες προτιμήσεις προαιρετικές, μπορεί να τις χρησιμοποιήσει όταν βρίσκονται σε συμφωνία με τις προτιμήσεις του παραλήπτη και δεν μπορεί όταν δεν είναι αποδεκτές.Η τιμή
required υποδηλώνει ότι ο παραλήπτης (reception) θα δέχεται S/HTTP μηνύματα μόνο με αυτές τις κρυπτογραφικές ενισχύσεις, ενώ ο αποστολέας (origination) θα χρησιμοποιεί μόνο αυτές ανεξάρτητα με τις προτιμήσεις του παραλήπτη.Τέλος, η τιμή
refused υποδηλώνει ότι ο παραλήπτης (reception) δεν θα δέχεται S/HTTP μηνύματα με τέτοιες κρυπτογραφικές ενισχύσεις, ενώ ο αποστολέας (origination) δεν θα παράγει ποτέ τέτοια μηνύματα.Επικεφαλίδες Διαπραγμάτευσης
Η τιμή του πεδίου
Property συμπληρώνεται με κατάλληλες επικεφαλίδες που προσδιορίζουν ποια κρυπτογραφική ιδιότητα βρίσκεται υπό συζήτηση.Ένα παράδειγμα που εξηγεί αυτά που συζητήσαμε παραπάνω είναι:
Όπως προείπαμε, υπάρχουν προκαθορισμένες τιμές για τους μηχανισμούς προστασίας. Αυτές είναι:
5.9.8
Νέες Επικεφαλίδες HTTPΤο πρωτόκολλο S/HTTP καθορίζει μία συλλογή νέων επικεφαλίδων που τοποθετούνται στις επικεφαλίδες του HTTP μηνύματος. Με τον τρόπο αυτό οι νέες επικεφαλίδες μοιράζονται την κρυπτογραφική προστασία που παρέχεται στις υπάρχουσες. Οι νέες επικεφαλίδες παρουσιάζονται παρακάτω.
5.9.9
Υποστηριζόμενοι ΑλγόριθμοιΟι αλγόριθμοι που υποστηρίζει το S/HTTP χωρίζονται σε κατηγορίες, ανάλογα με είδος της παρεχόμενης προστασίας με την οποία χρησιμοποιούνται.
Αλγόριθμοι Διαχείριση Κλειδιών
Οι μηχανισμοί που καθορίζονται για την διαχείριση και ανταλλαγή κλειδιών (
key management, key exchange) είναι οι RSA, Inband, Outband και Kerberos. Οι δύο ς μέθοδοι Inband και Kerberos, υποδηλώνουν ότι το κλειδί έχει ανταλλαγεί πρωτύτερα, με χρήση μιας HTTP επικεφαλίδας "Key-Assign". Η Outband μέθοδος υπονοεί ότι ο client και ο server έχουν πρόσβαση σε κλειδιά που σχετίζονται με ονόματα χρηστών, είτε μέσω μιας βάσης δεδομένων, είτε από την εισαγωγή ενός κωδικού από τον χρήστη μέσω του πληκτρολόγιου. Η RSA χρησιμοποιεί την ιδιωτική κλείδα του αποστολέα για την κρυπτογράφηση του κλειδιού κρυπτογράφησης των ενθυλακωμένων περιεχομένων που συνοδεύεται από πιστοποιητικό τύπου Χ.509 με την δημόσια κλείδα του αποστολέα.Αλγόριθμοι Ψηφιακής Υπογραφής και Παραγωγής
Message DigestΤο S/HTTP υποστηρίζει δύο αλγόριθμους για την παραγωγή ψηφιακών υπογραφών:
RSA και DSS. Για την παραγωγή message digest υποστηρίζονται οι MD2, MD5 και SHS.Αλγόριθμοι Συμμετρικής Κρυπτογράφησης
Οι αλγόριθμοι αυτοί διαχωρίζονται σε αυτούς που χρησιμοποιούνται στην κρυπτογράφηση των ενθυλακωμένων περιεχομένων και σε αυτούς που χρησιμοποιούνται στην κρυπτογράφηση των ενθυλακωμένων HTTP επικεφαλίδων.
Οι αλγόριθμοι για την κρυπτογράφηση των περιεχομένων είναι:
DES-CBC: Ο DES σε Cipher Block Chaining (CBC) mode.
DES-EDE-CBC: Ο Triple DES χρήση 2 κλειδιών σε Encrypt-Decrypt-Encrypt mode και σε CBC mode.
DES-EDE3-CBC: Ο Triple DES με χρήση 3 κλειδιών σε Encrypt-Decrypt-Encrypt mode και σε CBC mode.
DESX-CBC: Ο DESX της RSA.
IDEA-CFB: Ο IDEA σε Cipher Feedback mode.
RC2-CBC: Ο RC2 της RSA σε Cipher Block Chaining (CBC) mode.
RC4: Ο RC4 της RSA.
CDMF-CBC: Ο CDMF της IBM σε Cipher Block Chaining (CBC) mode.
Οι αλγόριθμοι για την κρυπτογράφηση των επικεφαλίδων είναι:
DES-ECB: Ο DES σε Electronic Codebook (ECB) mode.
DES-EDE-ECB: Ο Triple DES χρήση 2 κλειδιών σε Encrypt-Decrypt-Encrypt mode και σε ECB mode.
DES-EDE3-ECB: Ο Triple DES με χρήση 3 κλειδιών σε Encrypt-Decrypt-Encrypt mode και σε ECB mode.
DESX-ECB: Ο DESX της RSA.
IDEA-ECB: Ο IDEA σε Electronic Codebook (ECB) mode.
RC2-ECB: Ο RC2 της RSA σε Electronic Codebook (ECB) mode.
CDMF-ECB: Ο CDMF της IBM σε Electronic Codebook (ECB) mode.
5.9.10
Προστασία Από Γνωστές ΕπιθέσειςΤο S/HTTP, όπως και το SSL, παρέχει προστασία έναντι των επιθέσεων
Man-In-The-Middle-Attack, Replay Attack και Dictionary Attack. Είναι πιο σταθερό, όμως από το SSL γιατί επιτρέπεται η επαναδιαπραγμάτευση των μηχανισμών και αλγορίθμων. Επιπλέον, οι αλγόριθμοι που υποστηρίζει το S/HTTP είναι πιο ανθεκτικοί σε επιθέσεις. Συγκεκριμένα, το κόστος ανάλυσης του DES (ο προρυθμισμένος αλγόριθμος του S/HTTP) είναι πολύ υψηλότερο από το αντίστοιχο κόστος του RC4 με 40 bit κλειδί (προρυθμισμένος αλγόριθμος του SSL).5.9.11
Αδυναμίες του S/HTTPΗ χρήση της μεθόδου
Inband για ανταλλαγή κλειδιών είναι προβληματική. Η μεταφορά των κλειδιών δεν γίνεται με αρκετή ασφάλεια και μπορούν εύκολα να πέσουν στα χέρια εισβολέων. Επίσης, άλλη μια αδυναμία του S/HTTP είναι η εξαιρετική του ευελιξία στην επιλογή μηχανισμών και αδυναμία κρυπτογράφησης όλων των ανταλλαγών μηνυμάτων. Σε αντίθεση το SSL εφαρμόζει την άποψη της κρυπτογράφησης των πάντων.5.9.12
Περαιτέρω ΠληροφορίεςΜία σύντομη περιγραφή του S/HTTP υπάρχει στις σελίδες:
SHTTP links -- http://www3.tsl.uu.se/~micke/shttp_links.html
An Overview of SHTTP -- http://www.homeport.org/~adam/shttp.html
Πιο τεχνικές πληροφορίες για το
S/HTTP είναι διαθέσιμες στις παρακάτω ηλεκτρονικές σελίδες:SHTTP Draft -- http://search.ietf.org/internet-drafts/draft-ietf-wts-shttp-06.txt
SHTML Draft -- http://search.ietf.org/internet-drafts/draft-ietf-wts-shtml-05.txt