Το πρωτόκολλο Secure Hyper Text Transfer Protocol (S–HTTP) αναπτύχθηκε για λογαριασμό της κοινοπραξίας CommerceNet το 1994. Στη σημερινή του μορφή, το πρωτόκολλο ορίζει μια επέκταση του ΗΤΤΡ που μπορεί να χρησιμοποιηθεί για να υποστηρίξει υπηρεσίες ασφάλειας απ’ άκρη σ’ άκρη σε συναλλαγές WWW. Το πρωτόκολλο δίνει έμφαση στην ευελιξία επιλογής μηχανισμών διαχείρισης κλειδιών, πολιτικών ασφάλειας και κρυπτογραφικών αλγόριθμων, υποστηρίζοντας ανοικτές διαπραγματεύσεις μεταξύ πελατών και εξυπηρετητών. Για παράδειγμα, το πρωτόκολλο δεν απαιτεί τη χρήση πιστοποιητικών. Αν ο πελάτης διαθέτει πιστοποιητικό, τότε αυτό χρησιμοποιείται. Αν όχι, τότε χρησιμοποιούνται άλλες τεχνικές ασφάλειας.
Η τρέχουσα προδιαγραφή S–HTTP υποστηρίζει τους αλγόριθμους MD2, MD5 και SHA–1 για μονόδρομες συναρτήσεις σύνοψης, τους αλγόριθμους DES–CBC, 3DES–CBC, DESX–CBC, IDEA–CFB, RC2–CBC, RC4, CDMF–CBC για κρυπτογράφηση και τους αλγόριθμους RSA και DSS για ψηφιακές υπογραφές.
Το S–HTTP επιτρέπει τη διαλειτουργικότητα μεταξύ διαφόρων υλοποιήσεων και είναι συμβατό με το ΗΤΤΡ. Αυτό, βασικά, σημαίνει ότι ένας πελάτης S–HTTP μπορεί να επικοινωνήσει με ένα ΗΤΤΡ εξυπηρετητή (που δεν υποστηρίζει S–HTTP) και αντιστρόφως. Φυσικά, η επικοινωνία τους δε θα χρησιμοποιεί τα χαρακτηριστικά ασφάλειας του S–HTTP.
Συντακτικά, τα μηνύματα S–HTTP είναι παρόμοια με τα μηνύματα ΗΤΤΡ. Αποτελούνται από μια γραμμή αίτησης ή κατάστασης, που ακολουθείται από μια σειρά γραμμών επικεφαλίδας, και ένα σώμα που μπορεί να περιέχει ένα εσώκλειστο περιεχόμενο. Το S–HTTP υποστηρίζει προστασία περιεχομένου μηνύματος με τρεις ανεξάρτητους μηχανισμούς: ψηφιακή υπογραφή, αυθεντικοποίηση και κρυπτογράφηση. Κάθε μήνυμα μπορεί να υπογραφεί ψηφιακά, να αυθεντικοποιηθεί ή να κρυπτογραφηθεί ή να προστατευτεί με οποιονδήποτε συνδυασμό αυτών ή να μην προστατευτεί καθόλου.
• Αν εφαρμοστεί η ψηφιακή υπογραφή, ένα κατάλληλο πιστοποιητικό (ή αλυσίδα πιστοποιητικών) πρέπει να επισυναφθεί στο μήνυμα. Εναλλακτικά, ο αποστολέας μπορεί να απαιτήσει από τον παραλήπτη να βρει εκείνος, ανεξάρτητα, τα απαραίτητα πιστοποιητικά.
• Αν εφαρμοστεί η αυθεντικοποίηση μηνύματος, υπολογίζεται ένας κώδικας αυθεντικοποίησης μηνύματος (Message Authentication Code – MAC) και μια τιμή σύνοψης του κειμένου, χρησιμοποιώντας ένα κοινό μυστικό κλειδί. Το κλειδί αυτό μπορεί να έχει συμφωνηθεί χρησιμοποιώντας κάποια αυτοματοποιημένη ή όχι μέθοδο διακίνησης. Ένας τρόπος συμφωνίας κλειδιού είναι και η χρήση εισιτηρίων του συστήματος Kerberos. Η αυθεντικοποίηση μηνύματος παρέχεται ως ξεχωριστή υπηρεσία ασφάλειας, επειδή η διαδικασία ψηφιακής υπογραφής μιας συναλλαγής πρέπει να είναι ξεκάθαρη και συνειδητή επιλογή του χρήστη, ενώ πολλές ανάγκες αυθεντικοποίησης μπορούν να ικανοποιηθούν με κάποιον απλούστερο μηχανισμό, όπως αυτός που παρέχεται από μια μονόδρομη συνάρτηση σύνοψης με κλειδί.
• Το S–HTTP ορίζει δύο μηχανισμούς διακίνησης κλειδιών. Ο πρώτος απαιτεί πιστοποιητικά δημόσιων κλειδιών και υποστηρίζει ανταλλαγή κλειδιών εντός ζώνης (in–band). Στην περίπτωση αυτή ο αποστολέας μεταδίδει το κλειδί συναλλαγής κρυπτογραφημένο με το δημόσιο κλειδί του παραλήπτη. Ο δεύτερος μηχανισμός δεν απαιτεί τέτοια πιστοποιητικά. Στην περίπτωση αυτή η συναλλαγή εξασφαλίζεται με ένα κλειδί που έχει εξωτερικά συμφωνηθεί και οι σχετικές πληροφορίες βρίσκονται σε μια από τις συγκεκριμένες γραμμές επικεφαλίδας S–HTTP. Εναλλακτικά, κλειδιά συναλλαγών μπορούν επίσης να εξαχθούν από εισιτήρια του συστήματος Kerberos. Για να είναι αναγνωρίσιμη η χρήση του S–HTTP, έχει οριστεί ένας νέος προσδιοριστής πρωτοκόλλου URL με το όνομα shttp.
Τέλος πρέπει να σημειώσουμε οτι το S–HTTP δεν έχει καμιά σχέση με το HTTPS, το οποίο είναι ένας συνδιασμός των πρωτοκόλλων HTTP και SLL.
Η τρέχουσα προδιαγραφή S–HTTP υποστηρίζει τους αλγόριθμους MD2, MD5 και SHA–1 για μονόδρομες συναρτήσεις σύνοψης, τους αλγόριθμους DES–CBC, 3DES–CBC, DESX–CBC, IDEA–CFB, RC2–CBC, RC4, CDMF–CBC για κρυπτογράφηση και τους αλγόριθμους RSA και DSS για ψηφιακές υπογραφές.
Το S–HTTP επιτρέπει τη διαλειτουργικότητα μεταξύ διαφόρων υλοποιήσεων και είναι συμβατό με το ΗΤΤΡ. Αυτό, βασικά, σημαίνει ότι ένας πελάτης S–HTTP μπορεί να επικοινωνήσει με ένα ΗΤΤΡ εξυπηρετητή (που δεν υποστηρίζει S–HTTP) και αντιστρόφως. Φυσικά, η επικοινωνία τους δε θα χρησιμοποιεί τα χαρακτηριστικά ασφάλειας του S–HTTP.
Συντακτικά, τα μηνύματα S–HTTP είναι παρόμοια με τα μηνύματα ΗΤΤΡ. Αποτελούνται από μια γραμμή αίτησης ή κατάστασης, που ακολουθείται από μια σειρά γραμμών επικεφαλίδας, και ένα σώμα που μπορεί να περιέχει ένα εσώκλειστο περιεχόμενο. Το S–HTTP υποστηρίζει προστασία περιεχομένου μηνύματος με τρεις ανεξάρτητους μηχανισμούς: ψηφιακή υπογραφή, αυθεντικοποίηση και κρυπτογράφηση. Κάθε μήνυμα μπορεί να υπογραφεί ψηφιακά, να αυθεντικοποιηθεί ή να κρυπτογραφηθεί ή να προστατευτεί με οποιονδήποτε συνδυασμό αυτών ή να μην προστατευτεί καθόλου.
• Αν εφαρμοστεί η ψηφιακή υπογραφή, ένα κατάλληλο πιστοποιητικό (ή αλυσίδα πιστοποιητικών) πρέπει να επισυναφθεί στο μήνυμα. Εναλλακτικά, ο αποστολέας μπορεί να απαιτήσει από τον παραλήπτη να βρει εκείνος, ανεξάρτητα, τα απαραίτητα πιστοποιητικά.
• Αν εφαρμοστεί η αυθεντικοποίηση μηνύματος, υπολογίζεται ένας κώδικας αυθεντικοποίησης μηνύματος (Message Authentication Code – MAC) και μια τιμή σύνοψης του κειμένου, χρησιμοποιώντας ένα κοινό μυστικό κλειδί. Το κλειδί αυτό μπορεί να έχει συμφωνηθεί χρησιμοποιώντας κάποια αυτοματοποιημένη ή όχι μέθοδο διακίνησης. Ένας τρόπος συμφωνίας κλειδιού είναι και η χρήση εισιτηρίων του συστήματος Kerberos. Η αυθεντικοποίηση μηνύματος παρέχεται ως ξεχωριστή υπηρεσία ασφάλειας, επειδή η διαδικασία ψηφιακής υπογραφής μιας συναλλαγής πρέπει να είναι ξεκάθαρη και συνειδητή επιλογή του χρήστη, ενώ πολλές ανάγκες αυθεντικοποίησης μπορούν να ικανοποιηθούν με κάποιον απλούστερο μηχανισμό, όπως αυτός που παρέχεται από μια μονόδρομη συνάρτηση σύνοψης με κλειδί.
• Το S–HTTP ορίζει δύο μηχανισμούς διακίνησης κλειδιών. Ο πρώτος απαιτεί πιστοποιητικά δημόσιων κλειδιών και υποστηρίζει ανταλλαγή κλειδιών εντός ζώνης (in–band). Στην περίπτωση αυτή ο αποστολέας μεταδίδει το κλειδί συναλλαγής κρυπτογραφημένο με το δημόσιο κλειδί του παραλήπτη. Ο δεύτερος μηχανισμός δεν απαιτεί τέτοια πιστοποιητικά. Στην περίπτωση αυτή η συναλλαγή εξασφαλίζεται με ένα κλειδί που έχει εξωτερικά συμφωνηθεί και οι σχετικές πληροφορίες βρίσκονται σε μια από τις συγκεκριμένες γραμμές επικεφαλίδας S–HTTP. Εναλλακτικά, κλειδιά συναλλαγών μπορούν επίσης να εξαχθούν από εισιτήρια του συστήματος Kerberos. Για να είναι αναγνωρίσιμη η χρήση του S–HTTP, έχει οριστεί ένας νέος προσδιοριστής πρωτοκόλλου URL με το όνομα shttp.
Τέλος πρέπει να σημειώσουμε οτι το S–HTTP δεν έχει καμιά σχέση με το HTTPS, το οποίο είναι ένας συνδιασμός των πρωτοκόλλων HTTP και SLL.