# Protocole cryptographique

Un protocole de sécurité (protocole cryptographique ou protocole de chiffrement) est un protocole abstrait ou concret qui remplit une fonction liée à la sécurité et applique des méthodes cryptographiques, souvent sous forme de séquences de primitives cryptographiques. Un protocole décrit comment les algorithmes doivent être utilisés et inclut des détails sur les structures de données et les représentations, à quel point il peut être utilisé pour implémenter plusieurs versions interopérables d'un programme.
Les protocoles cryptographiques sont largement utilisés pour le transport sécurisé des données au niveau de l'application. Un protocole cryptographique intègre généralement au moins certains de ces aspects :
* Accord ou établissement de clé
* Authentification de l'entité
* Chiffrement symétrique et authentification des messages
* Transport de données sécurisé au niveau de l'application
* Méthodes de non-répudiation
* Méthodes de partage de secrets
* Calcul multipartite sécurisé
Par exemple, Transport Layer Security (TLS) est un protocole cryptographique utilisé pour sécuriser les connexions Web (HTTPS). Il dispose d'un mécanisme d'authentification d'entité, basé sur le système X.509 ; une phase de configuration de clé, où une clé de chiffrement symétrique est formée en employant une cryptographie à clé publique ; et une fonction de transport de données au niveau de l'application. Ces trois aspects ont des interconnexions importantes. TLS standard ne prend pas en charge la non-répudiation.
Il existe également d'autres types de protocoles cryptographiques, et même le terme lui-même a différentes lectures ; Les protocoles d'application cryptographique utilisent souvent une ou plusieurs méthodes d'accord de clé sous-jacentes, qui sont parfois elles-mêmes appelées "protocoles cryptographiques". Par exemple, TLS utilise ce que l'on appelle l'échange de clés Diffie-Hellman, qui, bien qu'il ne soit qu'une partie de TLS en soi, Diffie-Hellman peut être considéré comme un protocole cryptographique complet en soi pour d'autres applications.

## Protocoles cryptographiques avancés

Une grande variété de protocoles cryptographiques vont au-delà des objectifs traditionnels de confidentialité, d'intégrité et d'authentification des données pour sécuriser également une variété d'autres caractéristiques souhaitées de la collaboration assistée par ordinateur. Les signatures aveugles peuvent être utilisées pour l'argent numérique et les informations d'identification numériques pour prouver qu'une personne détient un attribut ou un droit sans révéler l'identité de cette personne ou l'identité des parties avec lesquelles cette personne a effectué des transactions. L'horodatage numérique sécurisé peut être utilisé pour prouver que des données (même confidentielles) existaient à un certain moment. Le calcul multipartite sécurisé peut être utilisé pour calculer des réponses (telles que la détermination de l'offre la plus élevée dans une enchère) sur la base de données confidentielles (telles que des offres privées), de sorte que lorsque le protocole est terminé, les participants ne connaissent que leur propre entrée et la réponse. Les systèmes de vote auditables de bout en bout fournissent des ensembles de propriétés de confidentialité et d'auditabilité souhaitables pour la conduite du vote électronique. Les signatures indéniables incluent des protocoles interactifs qui permettent au signataire de prouver une contrefaçon et de limiter qui peut vérifier la signature. Le chiffrement déniable augmente le chiffrement standard en rendant impossible pour un attaquant de prouver mathématiquement l'existence d'un message en texte brut. Les mélanges numériques créent des communications difficiles à tracer.

## Vérification formelle

Les protocoles cryptographiques peuvent parfois être vérifiés formellement à un niveau abstrait. Lorsque cela est fait, il est nécessaire de formaliser l'environnement dans lequel le protocole opère afin d'identifier les menaces. Cela se fait fréquemment à travers le modèle Dolev-Yao.
Logiques, concepts et calculs utilisés pour le raisonnement formel des protocoles de sécurité :
* Logique Burrows – Abadi – Needham (logique BAN)
* Modèle Dolev-Yao
* π-calcul
* Logique de composition de protocole (PCL)
Projets de recherche et outils utilisés pour la vérification formelle des protocoles de sécurité :
* Automated Validation of Internet Security Protocols and Applications (AVISPA) et projet de suivi AVANTSSAR
** Chercheur d'attaque basé sur la logique de contrainte (CL-AtSe)
** Vérificateur de modèle à virgule fixe open-source (OFMC)
** Vérificateur de modèle basé sur SAT (SATMC)
* Casper
* CryptoVerif
* Analyseur de formes de protocole cryptographique (CPSA)
* Connaissance des protocoles de sécurité (KISS)
* Analyseur de protocole Maude-NRL (Maude-NPA)
* ProVerif
* Scyther
* Tamarin Prover

### Notion de protocole abstrait

Pour vérifier formellement un protocole, il est souvent abstrait et modélisé à l'aide de la notation Alice & Bob. Un exemple simple est le suivant :
    $A\rightarrow B:\{X\}_{K_{A,B}}$
Ceci indique qu'Alice $A$ a l'intention d'envoyer un message à Bob $B$ composé d'un message $X$ chiffré sous clé partagée $K_{A,B}$ .

## Exemples

* Internet Key Exchange
* IPsec
* Kerberos
* Messagerie confidentielle
* Protocole point à point
* Secure Shell (SSH)
* Signal Protocol
* Transport Layer Security
* ZRTP