Sécurisation des communications
Numérique et sciences informatiques

Qu’est ce que la sécurité ?
La sécurité détermine les parties critiques à protéger et les risques sur le réseau.
Principes généraux
La cryptographie est une des disciplines de la cryptologie s'attachant à protéger des messages (assurant confidentialité, authenticité et intégrité) en s'aidant de clés. Elle se distingue de la stéganographie qui fait passer inaperçu un message dans un autre message alors que la cryptographie rend un message supposément inintelligible à autre que qui-de-droit.
Elle est utilisée depuis l'Antiquité, mais certaines de ses méthodes les plus modernes, comme la cryptographie asymétrique, datent de la fin du xxe siècle.
Sécuriser un réseau, c'est assurer :
- La confidentialité des données (et des acteurs) de la communication ;
- L'authenticité des données de la communication en vérifiant l’identité des acteurs ;
- l'intégrité des données en vérifiant qu'elles n’ont pas été altérées ;
- La disponibilité de la communication
- la "non-répudiation" : les acteurs impliqués dans la communication ne peuvent nier y avoir participer.
La cryptologie est « science du secret ».
Le chiffrement est le procédé de cryptographie. Son but est de rendre un document incompréhensible par une personne qui n'a pas à connaître son contenu. On chiffre (cipher en anglais) un message avec une "clé de chiffrement". Un message qui a été chiffré est ensuite déchiffré par la personne qui a la clé de chiffrement.
Décrypter un message est le fait de tenter, SANS la clé de déchiffrement, de retrouver le message original.
Le chiffrement à clé symétrique
Le chiffrement symétrique est un algorithme de chiffrement qui utilise la même clé pour chiffrer et déchiffrer les données. Cette clé est partagée entre les parties qui communiquent et elle doit être gardée secrète pour assurer la sécurité de la communication. L'algorithme de chiffrement symétrique le plus communément utilisé est l'algorithme AES (Advanced Encryption Standard).
Lorsqu'un message est envoyé à un destinataire, le message est chiffré en utilisant la clé symétrique partagée. Le destinataire doit utiliser la même clé pour déchiffrer le message. La sécurité du chiffrement symétrique dépend de la sécurité de la clé partagée.
Un exemple déjà très ancien de chiffrement symétrique est la substitution monoalphabétique : le code de César
Entraînement 1 :
Le codage de César transforme un message en changeant chaque lettre en la décalant dans l’alphabet.
Par exemple, avec un décalage de 3, le A se transforme en D, le B en E, ..., le X en A, le Y en B et le Z en C. Les autres caractères (‘!’,’ ?’…) ne sont pas codés. La fonction position_alphabet
ci-dessous prend en paramètre un caractère lettre et renvoie la position de lettre dans la chaîne de caractères ALPHABET s’il s’y trouve et -1 sinon.
La fonction cesar prend en paramètre une chaîne de caractères message et un nombre entier décalage et renvoie le nouveau message codé avec le codage de César utilisant le décalage .
ALPHABET='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def position_alphabet(lettre):
return ALPHABET.find(lettre)
def cesar(message, decalage):
resultat = ''
for ... in message :
if lettre in ALPHABET :
indice = position_alphabet( ... ) % 26
resultat = resultat + ALPHABET[indice + ...]
else:
resultat = ...
return resultat
Compléter la fonction cesar.
Exemples :
>>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !',4)
'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'
>>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !',-5)
'BONJOUR A TOUS. VIVE LA MATIERE NSI !'
Entraînement 2 :
Décrypter le message suivant (code cesar)
RWM IX XSXS RI WI WITEVIRX NEQEMW !
Le chiffrement à clé asymétrique
Le chiffrement asymétrique est une méthode de chiffrement qui utilise deux clés différentes pour chiffrer et déchiffrer les données. Ces clés sont appelées clé privée et clé publique. La clé privée est gardée secrète par son propriétaire, tandis que la clé publique est accessible à tous.
Le destinataire d'un message utilise sa clé publique pour chiffrer le message avant de l'envoyer au propriétaire de la clé privée. Le propriétaire de la clé privée utilise sa clé pour déchiffrer le message. Le chiffrement asymétrique est plus sûr que le chiffrement symétrique car la clé privée n'est connue que par le propriétaire, ce qui rend la communication plus sécurisée.
L'algorithme de chiffrement asymétrique le plus couramment utilisé est RSA.
Échange de clé symétrique en utilisant un protocole asymétrique
Lorsqu'un utilisateur se connecte à un site Web sécurisé, tel qu'un site bancaire ou de commerce électronique, le navigateur du client et le serveur Web doivent s'échanger une clé symétrique pour chiffrer les données de manière sécurisée. Cependant, l'échange de clé symétrique en utilisant un canal de communication non sécurisé, tel que l'Internet, peut rendre la communication vulnérable aux attaques.
Afin de résoudre ce problème, un protocole de chiffrement asymétrique est utilisé pour échanger une clé symétrique entre le navigateur du client et le serveur Web. Le protocole le plus couramment utilisé est le protocole SSL/TLS (Secure Sockets Layer/Transport Layer Security).
Le protocole SSL/TLS utilise un certificat numérique émis par une autorité de certification (AC) de confiance pour garantir l'identité du serveur Web. Le certificat numérique contient la clé publique du serveur, qui est utilisée par le navigateur du client pour chiffrer une clé de session aléatoire qui est ensuite envoyée au serveur Web. Le serveur Web utilise sa clé privée pour déchiffrer la clé de session aléatoire, qui est utilisée pour chiffrer les données échangées entre le navigateur du client et le serveur Web.
Alice doit envoyer à Bob la clé qui lui permettra de déchiffrer (décrypter) le message. Mais une personne mal intentionnée qui parviendrait à intercepter cette clé pourrait aussi déchiffrer le message. Il faut, pour résoudre ce problème, faire appel à une méthode de chiffrement dite asymétrique.
Principe de fonctionnement du chiffrement asymétrique :
Le principe de fonctionnement du chiffrement asymétrique repose sur l'utilisation de deux clés : une clé publique et une clé privée. La clé publique peut être partagée avec tout le monde tandis que la clé privée doit être gardée secrète.
- Génération de la paire de clés : L'utilisateur génère une paire de clés distinctes, composée d'une clé privée et d'une clé publique. La clé publique peut être partagée avec quiconque, tandis que la clé privée doit être conservée en toute sécurité.
- Chiffrement : Lorsqu'un expéditeur souhaite envoyer un message à un destinataire, il utilise la clé publique du destinataire pour chiffrer le message. Le destinataire peut ensuite utiliser sa clé privée pour déchiffrer le message.
- Signature : Si un expéditeur souhaite s'assurer que le message n'a pas été altéré pendant la transmission, il peut signer le message avec sa clé privée. Le destinataire peut ensuite vérifier la signature en utilisant la clé publique de l'expéditeur.
L'avantage du chiffrement asymétrique est qu'il est très sûr car la clé privée n'est connue que de l'utilisateur, tandis que la clé publique peut être partagée librement. Cependant, le chiffrement asymétrique est plus lent que le chiffrement symétrique en raison de la complexité des calculs impliqués dans la génération de clés et le chiffrement/déchiffrement des données.

Exemples d'algorithmes de chiffrement asymétrique (clé partagée)
Le chiffrement RSA est un algorithme de chiffrement asymétrique inventé par Ron Rivest, Adi Shamir et Leonard Adleman en 1977 (nommé par les initiales de ses trois inventeurs). Il est largement utilisé pour protéger la confidentialité des échanges de données sur les réseaux informatiques.
Le chiffrement RSA repose sur le principe de la factorisation d'un grand nombre entier en produits de deux nombres premiers. L'algorithme utilise une paire de clés : une clé publique pour chiffrer les données et une clé privée pour déchiffrer les données.
Pour simplifier, les codes de type RSA se basent sur le principe qu'il est facile de multiplier des nombres premiers entre eux mais qu'il est difficile de faire l'opération inverse : trouver les deux nombres connaissant leur produit. Surtout quand on considère des nombres premiers de plusieurs centaines de chiffres !
Pour rappel, les nombres premiers (comme 2, 3, 5, 7, 11, ..) n'ont que 2 diviseurs distincts (1 et lui même).
La sécurité de l'algorithme dépend de la longueur des clés utilisées.
Le chiffrement RSA est largement utilisé pour sécuriser les communications sur les réseaux informatiques, y compris les transactions bancaires en ligne, les échanges de courriels et les communications vocales sur IP.
Le protocole HTTPS
Le protocole HTTPS (Hypertext Transfer Protocol Secure) est une version sécurisée du protocole HTTP, utilisé pour les communications entre un client (comme un navigateur web) et un serveur web. Il utilise le chiffrement pour protéger les données qui transitent entre le client et le serveur.
Le chiffrement est réalisé à l'aide d'un certificat SSL/TLS (Secure Sockets Layer/Transport Layer Security). Ce certificat est un fichier électronique qui associe une clé publique à une entité (comme un site web). Il est émis par une autorité de certification de confiance, qui garantit que le site web est authentique et que la communication est sécurisée.
Le protocole HTTPS utilise un échange de clés pour établir une session sécurisée entre le client et le serveur. Ce processus est réalisé en plusieurs étapes :
- Le client envoie une demande de connexion sécurisée au serveur.
- Le serveur répond en envoyant son certificat SSL/TLS au client, qui contient la clé publique du serveur.
- Le client vérifie la validité du certificat SSL/TLS en le comparant avec une liste de certificats de confiance, stockée dans le navigateur web.
- Si le certificat SSL/TLS est valide, le client génère une clé de session aléatoire et l'envoie au serveur, chiffrée à l'aide de la clé publique du serveur.
- Le serveur déchiffre la clé de session à l'aide de sa clé privée, et utilise cette clé pour chiffrer les données échangées entre le client et le serveur pendant la session.
Une fois la session établie, toutes les données échangées entre le client et le serveur sont chiffrées à l'aide de la clé de session, ce qui garantit la confidentialité et l'intégrité des données.
En conclusion, le protocole HTTPS est essentiel pour garantir la sécurité des communications sur Internet, en particulier lorsqu'il s'agit de transactions financières, de transfert de données sensibles ou de l'échange d'informations personnelles. Les sites web qui utilisent HTTPS sont facilement reconnaissables grâce au cadenas vert affiché dans la barre d'adresse du navigateur web.
Entraînement : explorer les données contenues dans un certificat
Ouvrez un nouvel onglet dans votre navigateur et rendez-vous sur le site https://www.elysee.fr/
Remarquez dans la barre d’adresse le petit cadenas à gauche qui signifie que les communications sont sécurisées (et cryptées).
En fait, tout le processus décrit précédemment s’est déjà déroulé, sans que vous ayez eu conscience de ce qui s’est passé. Les clés ont été échangées et le canal de communication utilise un cryptage symétrique.
Pour visualiser les données contenues dans le certificat :
• Si vous utilisez Chrome, cliquez sur le cadenas puis sur “certificat”.
• Si vous utilisez Firefox, cliquez sur le cadenas puis la flèche à droite de “Connexion”. Cliquez sur “plus d’informations”, et enfin sur “Afficher le certificat”.
Questions :
- Comment s’appelle le tiers de confiance ayant signé le certificat ?
- Pour qui le certificat a-t-il été émis ?
- Quelle est sa date d’expiration ?
- Trouvez la clé publique contenue dans le certificat ainsi que l’algorithme de chiffrement utilisé. (détails)
- Quel est l’algorithme utilisé pour la signature du certificat ?
Un certificat numérique possède trois caractéristiques essentielles :
- il est infalsifiable : il est chiffré pour empêcher toute modification.
- il est nominatif : il est délivré à une seule entité (comme la carte d’identité est délivrée à une personne et une seule).
- il est certifié : il y a le « tampon » de l’autorité qui l’a délivré.
Entraînement : Remettre dans le bon ordre les évènements suivants
- Le navigateur génère aléatoirement une clé de session
- Le serveur déchiffre la clé de session en utilisant le même algorithme de chiffrement asymétrique que le navigateur du client
- Le navigateur du client demande le certificat du serveur de la banque de chiffrement asymétrique
- Le serveur établit une session de communication par chiffrement symétrique avec le client
- Le navigateur envoie la clé de session chiffrée au serveur
- Le navigateur chiffre la clé de session à l’aide de la clé publique, en utilisant un algorithme
- Le navigateur extrait du certificat la clé publique du serveur
- Le navigateur vérifie l’authenticité du certificat à l’aide d’une clé publique racine
- Le serveur envoie le certificat de la banque au navigateur du client