Solutions utilisées par les entreprises
Antivirus
Firewall
ACL (Access Control Lists)
IDS (Intrusion Detection Systems)
Distribution des clés et authentification des utilisateurs
Kerberos
Infrastructure à clé publique
X 509 certificats
Sécurité au niveau du transport
SSL-TLS
SSH
HTTPS
Sécurité réseau sans fil
IEEE 802.11i
WAP, WTLS
Sécurité du courrier électronique
PGP (Pretty Good Privacy)
S/MIME
DKIM
Sécurité IP
IPSec
ESP
Couche réseau
IPSec
Couche transport
SSL-TLS
Couche application
PGP, HTTPS
HTTPS est la combinaison de HTTP et SSL
Caractéristiques
URL commence par https://
Utilise le port 443, contrairement à HTTP qui utilise le port 80
Éléments cryptés
URL du document demandé
Contenu du document
Contenu des formulaires
Cookies
Contenu de l’en-tête HTTP
Documenté dans RFC 2818
HTTP sur TLS : Il n'y a pas de changement fondamental dans l'utilisation de HTTP sur SSL ou TLS, et les deux implémentations sont appelées HTTPS.
Conçu pour sécuriser les communications sur Internet.
SSL Développé par Netscape (1994)
Implémentation de tunnels au niveau 4 du modèle OSI “transport”
utilisable que pour la sécurisation du flux TCP
SSLv3 est la dernière version
Similaire à TLS 1
Utilisation avec différents protocoles comme HTTP, FTP, SMTP
Protocole sécurisé et ports
FTP-DATA (889)
FTPS (990)
IMAPS (991)
TELNETS (992)
IRCS (993)
HTTPS (443)
SSMTP (465)
SNNTP (563)
SSL-LDAP (636)
SPOP3 (995)
Confidentialité
Algorithme de chiffrement
Intégrité
Fonction de hachage
Authentification
Certificats numériques
Composantes
SSL Record Protocol : sécurité de base
Protocoles comme Handshake, Change Cipher Spec pour la gestion des échanges SSL, Alert protocol pour le traitement des erreurs.
SSL n'est pas un unique protocole, mais deux couches de protocoles
SSL Record Protocol fournit des services de sécurité de base a divers protocoles de couche supérieure. HTTP peut fonctionner au dessus de SSL
3 protocoles sont définis dans le cadre de SSL: le protocole Handshake(initialisation de la communication sécurisée), le protocole Change Cipher Spec et le protocole d'alerte(traitement des erreurs ). Ces protocoles spécifiques SSL sont utilisés dans la gestion des échanges SSL
Confidentialité : e protocole Handshake définit une clé secrète partagée (clé desession)qui est utilisée pour le chiffrement des charges utiles SSL « payloads »
Intégrité des messages : : le protocole Handshake définit également une clésecrète partagée qui est utilisée pour former un code d'authentification demessage (MAC) « message authentication code », MD5 ou SHA-1 .
Processus de chiffrement
Exemples d'algorithmes et tailles de clés
Il prend un message d'application à transmettre,
1. fragmente les données en blocs gérables,
2. compresse éventuellement les données,
3.applique un MAC, calculer un code d'authentification de message sur les données compressées. Pour cela, une clé secrète partagée est utilisée. algorithme de hachage cryptographique; soit MD5 ou SHA-1
4.crypte, le message compressé et le MAC sont cryptés à l'aide d'un cryptage symétrique.
5.ajoute un en-tête et
6.transmet l'unité résultante dans un segment TCP.
Les données reçues sont décryptées, vérifiées, décompressées et réassemblées avant d'être transmises aux utilisateurs de niveau supérieur.
Structure du paquet SSL
Type de contenu (8 bits): protocole de couche supérieure utilisé pour traiter le fragment inclus. change_cipher_spec,alert, handshake, and application_data
• la version principale de SSL utilisée. Pour SSLv3, la valeur est 3.
• la version mineure en cours d'utilisation. Pour SSLv3, la valeur est 0.
• Longueur compressée (16 bits): longueur en octets du fragment de texte en clair (ou du fragment compressé si la compression est utilisée)
Ssl début par une phase de négociation : lorsque vous vous connecter au web vous ne connaisser pas le serveur et le serveur ne vous connais pas la pour faire connaissance une phase de négociation débute avant de faire des écanges sécurisé. Et lorsque le serveur utilise un algorithme de chifrememnt que le client n’ a pas son algorithme de déchifrement donc on vous demande de faire une mise a jour de votre navigateur afin d avoir l’algo
ClientHello :
Informations requises pour établir une connexion
SSL or TLS version
Cryptographic algorithms
Data compession methods
ServerHello :
Cryptographic algorithm agreement
Session ID
certificat numérique du serveur
clé publique du serveur
Le client va chercher dans le Certificate Authority CA, la certificat si elle est originale
ClientKeyExchange : Puis le client partage une clé secrete cryptée avec la clé publique du server
Messages de fin d'échange de clés
Finished(client) : le message finish est crypté avec la clé secrete partagée handshake complete
Finished(server) : le message finish est crypté avec la clé secrete partagée handshake complete
Exchange Messages
indiquer le changement de la suite de chiffrement et qu'une nouvelle clé doit être utilisée pour le reste de la session
l'un des deux côtés envoie un message de changement de Spec de chiffrement pour indiquer qu'une nouvelle clé doit être utilisée pour le reste de la session
RSA : Algorithme Asymétrique (Authentification)
AES: Algorithme symétrique avec le mode opérateur CBC (Cipher Block Chaining) et une taille de clé de 128bits (Confidentialité)
SHA: Algorithme de hachage (Intégrité)
Types d'alertes
Alertes fatales et avertissements
Chaque message de ce protocole se compose de deux octets.
Le premier octet prend la valeur warning (1) ou fatal (2) pour indiquer la gravité du message.
Si le niveau est fatal, SSL met immédiatement fin à la connexion. D'autres connexions sur la même session peuvent continuer, mais aucune nouvelle connexion sur cette session ne peut être établie.
Le deuxième octet contient un code qui indique l'alerte spécifique. Tout d'abord, nous listons les alertes qui sont toujours fatales.
Fatal alerts
unexpected_message: An inappropriate message was received.
bad_record_mac: MAC incorrect reçu
decompression_failure: The decompression function received improper input (e.g., unable to decompress or decompress to greater than maximum allowable length).
handshake_failure : Sender was unable to negotiate an acceptable set of security parameters given the options available.
Warning alerts
illegal_parameter: A field in a handshake message was out of range or inconsistent with other fields.
The remaining alerts are the following.
close_notify: Notifies the recipient that the sender will not send any more messages on this connection. Each party is required to send a close_notify alert before closing the write side of a connection.
no_certificate: May be sent in response to a certificate request if no appropriate certificate is available.
bad_certificate: A received certificate was corrupt (e.g., contained a signature that did not verify).
unsupported_certificate: The type of the received certificate is not supported.
certificate_revoked: A certificate has been revoked by its signer.
certificate_expired: A certificate has expired.
Initiatives de normalisations de l'IETF dont le but est de produire une version Internet standard de SSL (RFC 5246)
TLS est une norme internet dans la RFC 5246, Tres similaire a SSLv3
Echange sécurisé de clés de chiffrement
Authentification du serveur et du client
Confidentialité et intégrité des messages
Protocole de communication réseau sécurisée conçu pour etre plus simple et moins couteux a mettre en oeuvre
SSH1 fournit
une fonction de connexion a distance sécurisée pour remplacer TELNET
une connexion client serveur plus générale utilisable pour des fonctions tq : Transfert de fichiers et le courrier électronique
SSH2 Norme dans les RFC 4250 à 4256 de l’IETF
SSH est organisé en trois protocoles qui s'exécutent généralement sur TCP
Protocole d'authentification utilisateur SSH: authentifie l'utilisateur côté client auprès du serveur.
Protocole de connexion SSH: Multiplexe le tunnel chiffré en plusieurs canaux logiques.
Protocole de couche de transport SSH: Fournit l'authentification, la confidentialité et l'intégrité du serveur. Il peut éventuellement également assurer une compression.
TCP: Transmission control Protocol fournit une livraison de bout en bout fiable et orientée connexion.
IP: Le protocole Internet fournit une livraison de datagrammes à travers plusieurs réseaux.
Tout d'abord, le client établit une connexion TCP avec le serveur.. Une fois la connexion établie, le client et le serveur échangent des données, appelées paquets, dans le champ de données d'un segment TCP.
Header (en-tête) : Donne des informations sur le type de paquet (par exemple, message d'authentification ou commande).
Payload (charge utile) : représente les données brutes à transmettre, qui peuvent être du texte ou d'autres messages encodés.
Compression : Le payload est compressé pour réduire la taille totale des données à transmettre. Cela optimise les performances, notamment dans les réseaux avec une bande passante limitée.
Après cette étape, on obtient le compressed payload (charge utile compressée).
seq# (sequence number) : Un numéro de séquence utilisé pour identifier l'ordre des paquets.
pktl (packet length) : La longueur totale du paquet, y compris la charge utile, le remplissage, etc.
pdl (padding length) : La longueur du remplissage ajouté
Padding (Remplissage) : Des données aléatoires ou des zéros sont ajoutés pour aligner le paquet sur une taille fixe, ce qui est nécessaire pour certains algorithmes de chiffrement symétrique.
Chiffrement (Encryption)
Le paquet est chiffré pour assurer la confidentialité des données pendant leur transmission.
L'ensemble des données compressées, du padding et des informations de longueur (pktl et pdl) est transformé en ciphertext (texte chiffré).
MAC (Message Authentication Code) : Un MAC est calculé à partir des données pour garantir leur intégrité et s'assurer qu'elles n'ont pas été altérées pendant le transit.
Ce MAC est basé sur une clé secrète partagée et le contenu du paquet.
Création du Paquet SSH : Le résultat final inclut les données chiffrées (ciphertext) et le MAC pour protéger l'intégrité. Ce paquet complet est envoyé au destinataire.
1. Établissement de la connexion TCP
2. Échange des chaînes d'identification (Identification string exchange)
Le client et le serveur échangent leurs versions du protocole SSH et leurs versions logicielles
3. Négociation des algorithmes (Algorithm negotiation): les messages SSH_MSG_KEXINIT sont échangés, Ces messages contiennent les listes des algorithmes pris en charge par chaque partie (algorithmes de chiffrement, d'authentification, de compression, etc.). Le client et le serveur choisissent les algorithmes communs pour sécuriser la communication.
l’échange de clés
le cryptage
l’algorithme MAC
l’algorithme de compression
Chiffrement des données (Cipher)
Authentification et intégrité des messages (MAC Algorithm) : assurent que les messages échangés n'ont pas été altérés et garantissent l'authenticité de la communication.
Compression des données (Compression Algorithm): réduisent la taille des données échangées pour optimiser les performances de la transmission.
4. Échange de clés (Key Exchange) : Une fois les algorithmes négociés, l'échange de clés commence pour établir une clé partagée sécurisée. en utilisant diffie hellman.
Les messages SSH_MSG_NEWKEYS signalent la fin de l'échange de clés et indiquent que les nouvelles clés sont désormais utilisées pour le chiffrement et l'intégrité des messages.
5. Requête de service (Service request): le client envoie un message SSH_MSG_SERVICE_REQUEST pour demander un service spécifique, tel que :
L'authentification de l'utilisateur.
L'ouverture d'un canal pour l'exécution de commandes distantes ou le transfert de fichiers.
l'utilisateur fournit les moyens par lesquels le client est authentifié auprès du serveur.
public key le client envoie un message au serveur qui contient la clé publique du client
message signé par la clé privée du client.
Lorsque le serveur reçoit ce message, il vérifie l authentification du client
Le protocole de connexion SSH permet l’authentification et la gestion des sessions réseau sécurisées entre le client et le serveur, reposant sur une couche de transport déjà sécurisée par des algorithmes de chiffrement et d'intégrité.. Voici les étapes clés de ce protocole :
Établissement de canaux de communication :
Après authentification réussie, le protocole de connexion SSH ouvre des canaux logiques multiplexés à l'intérieur de la connexion sécurisée. Ces canaux permettent des communications simultanées, telles que l'exécution de diverses commandes ou le transfert de fichiers, tout en maintenant la sécurité de la communication.
Services pendant la connexion :
Le client envoie des messages de service pour spécifier ce qu'il souhaite faire, par exemple :
Exécution de commandes distantes.
Transfert de fichiers (via SCP ou SFTP).
Le serveur répond par des messages appropriés, permettant l’exécution des tâches demandées.
Gestion de session :
Le protocole gère également la durée de vie de la session, permettant d'établir, de maintenir et de terminer la connexion sécurisée en fonction des besoins de l'utilisateur.
Open a Channel :
Le client envoie une requête (SSH_MSG_CHANNEL_OPEN
) au serveur pour ouvrir un canal de communication.
Le serveur répond avec une confirmation (SSH_MSG_CHANNEL_OPEN_CONFIRMATION
) si le canal est accepté.
Data Transfer :
Une fois le canal ouvert, les données sont échangées entre le client et le serveur via des messages de type SSH_MSG_CHANNEL_DATA
. Ces messages contiennent les données utilisateur chiffrées.
Close a Channel :
Après le transfert de données, le canal est fermé via un message spécifique (SSH_MSG_CHANNEL_CLOSE
).
Une connexion TCP non sécurisée relie les entités TCP du client et du serveur, permettant un échange bidirectionnel des données.
Le tunnel SSH se situe dans la "couche de transport" de la pile de protocoles SSH
Le Tunnel SSH sécurisé crée une connexion chiffrée entre les entités SSH du client et du serveur, offrant une sécurité contre l'interception de données.
La connexion TCP sous-jacente (indiquée comme "non sécurisée") est encapsulée dans ce tunnel, garantissant la confidentialité des données transmises.
SSH | SSL |
Protocole de communication réseau sécurisée conçu pour remplacer Telnet. | couche de sécurité entre les protocoles de transport et d'application. |
connexion à distance sécurisée à une autre machine pour envoyer des commandes | Utilisé pour sécuriser les communications sur Internet, en intégrant des protocoles comme HTTP, FTP, etc. |
Basé sur les tunnels | Basé sur les certificats numériques |
Organisé en trois protocoles exécutés généralement sur TCP : le protocole d'authentification utilisateur, le protocole de connexion, et le protocole de couche de transport. Utilise des algorithmes asymétriques pour l'authentification et des algorithmes symétriques pour le chiffrement des données | Assure la confidentialité, l'intégrité et l'authentification grâce à un échange de clés sécurisé. |
port 22 | port 443 |
exige authentification du client avec une clé ou mot de passe | exige vérification certificat du serveur |
protocole de réseau cryptographique, basé uniquement sur des techniques de cryptographie (chiffrement, signature, etc.). | protocole de sécurité, combine cryptographie et autres mécanismes de sécurité. |
PGP : pretty good privacy
S/MIME : Multipurpose internal mail extensions
DKIM : domain keys identified mail
est un standard de chiffrement utilisé principalement pour sécuriser les communications par courrier électronique. Il vise à garantir la confidentialité, l'intégrité, l'authenticité et la non-répudiation des messages. PGP utilise des techniques de cryptographie asymétrique pour l'authentification et la cryptographie symétrique pour le chiffrement des données, rendant ainsi les courriers électroniques plus sûrs.
SSL (Secure Sockets Layer) et PGP (Pretty Good Privacy) sont utilisés pour sécuriser les communications, mais ils servent des objectifs différents.
SSL est principalement utilisé pour établir une connexion sécurisée entre un client et un serveur sur Internet, en assurant la confidentialité et l'intégrité des données échangées via des protocoles comme HTTPS.
D'un autre côté, PGP est spécifiquement conçu pour chiffrer et signer des messages, notamment des emails, afin de garantir leur confidentialité, intégrité, authenticité et non-répudiation.
En pratique, on ne peut pas utiliser SSL à la place de PGP, car ils répondent à des besoins différents dans le domaine de la sécurité des données. SSL sécurise les communications en transit, tandis que PGP sécurise le contenu des messages eux-mêmes.
Dans la navigation on est en mode connecté et c’est possible d’utiliser la clé de session car le destinateur peut ne pas être connecté donc la solution de SSL ne peut pas être utiliser dans la messagerie
La confidentialité : chiffrement symétrique et asymétrique
L’intégrité : on ne veut pas que les mails soit modifier durant leur transfert
L’authenticité : un destinateur lorsque il reçoit le mail il doit être sur que ce mail proviens bien de l’expéditeur donc il y a une authenticité du mail
La non répudiation: l’expéditeur ne pourra pas nié d’avoir envoyé le mail
Compression: le mail peut comporté une quantité d’information importante donc on peut encombré la bande passante, une technique pour réduire le message de l’expéditeur c’est la compression
Principe :
Utilise une paire de clés : une clé publique (pour chiffrer) et une clé privée (pour déchiffrer).
La clé publique est partagée avec tout le monde.
La clé privée reste secrète, connue uniquement de son propriétaire.
Avantages :
Sécurité robuste : La clé privée n'a pas besoin d'être partagée, ce qui réduit le risque de compromission.
Non-répudiation : Permet de prouver l'origine d'un message grâce aux signatures numériques.
Inconvénients :
Lenteur : Les algorithmes asymétriques (comme RSA ou ECC) sont beaucoup plus lents que les algorithmes symétriques en raison de leur complexité mathématique.
Pas adapté aux gros volumes : Principalement utilisé pour sécuriser des petites quantités de données (comme des clés symétriques ou des signatures numériques).
Principe :
Utilise une seule clé pour chiffrer et déchiffrer les données. La même clé doit être partagée entre l'expéditeur et le destinataire.
Avantages :
Rapidité : Les algorithmes de chiffrement symétrique (comme AES ou DES) sont beaucoup plus rapides que les algorithmes asymétriques, car ils nécessitent moins de calculs mathématiques.
Efficacité pour de grandes quantités de données : Idéal pour chiffrer de gros fichiers ou des flux en temps réel.
Inconvénients :
Partage sécurisé de la clé : La clé doit être transmise de manière sécurisée à toutes les parties, ce qui peut poser problème en cas d'interception.
Moins robuste : Si la clé est compromise, toutes les communications protégées par cette clé sont également compromises.
Clé de session :
Dans les systèmes modernes, une clé de session unique est générée pour chaque session ou transaction, ce qui améliore la sécurité. Même si cette clé est compromise, elle ne peut être utilisée qu'une seule fois.
Dans les systèmes modernes (comme PGP, SSL/TLS, ou HTTPS), on combine les deux types de chiffrement pour tirer parti de leurs avantages :
Chiffrement asymétrique : Utilisé pour échanger une clé de session symétrique de manière sécurisée.
Chiffrement symétrique : Utilisé ensuite pour chiffrer le contenu de la communication (rapide et efficace).
Chiffrement asymétrique :
Utilisé pour transmettre la clé de session en toute sécurité.
Clés utilisées : Pub_B (clé publique de Bob) et Priv_B (clé privée de Bob).
Chiffrement symétrique :
Utilisé pour protéger le contenu réel (message).
Clé utilisée : S (clé de session générée par Alice).
Avantages de cette combinaison :
La sécurité robuste du chiffrement asymétrique.
La rapidité et l'efficacité du chiffrement symétrique.
Alice (pubA, privA) et Bob (pubB, privB) et le message (M) et la fonction de hachage (H), signature (Sig), la clé de session (S)
Alice éxpediteur :
chiffré M avec H pour obtenir H(M) le haché
H(M) chiffrer avec privA pour obtenir Sig
concatener le message en clair M avec la signature [ M || Sig ]
chiffrer [ M || Sig ] avec S pour obtenir MC message chiffré
chiffrer S avec pubB pour obtenir SC
concatener la clé S chiffré avec le message chiffré [SC || MC]
segmentation : fragmentation en paquet avant l’envoi
envoi
Bob destinataire :
segmentation : rassembler les paquets reçus pour reconstruire le message [SC || MC]
déchiffrer SC avec la clé privB pour obtenir S
déchiffrer MC avec S pour obtenir [M || Sig]
on chiffre M avec H pour obtenir H(M) calculé par B
on déchiffre Sig avec pubA pour obtenir H(M) calculé par A
on vérifie H(M) de A avec H(M) de B pour assuré l’intégrité du message (qu’il ne soit pas modifié)
un standard Internet utilisé pour sécuriser les communications par email. Il fournit des fonctionnalités de sécurité similaires à celles de PGP, notamment le chiffrement et la signature numérique. Voici les principales caractéristiques de S/MIME :
Chiffrement des Emails : S/MIME permet de chiffrer le contenu des messages électroniques, garantissant que seuls les destinataires prévus peuvent lire les messages.
Signature Numérique : Les utilisateurs peuvent signer numériquement leurs emails, ce qui permet de vérifier l'identité de l'expéditeur et d'assurer que le contenu n’a pas été modifié pendant le transit.
Gestion des Certificats : S/MIME utilise des certificats numériques issus d'autorités de certification (CA), ce qui facilite la gestion des clés publiques et la vérification de l'authenticité des expéditeurs.
Interopérabilité : S/MIME est largement adopté et pris en charge par de nombreux clients de messagerie, ce qui en fait un choix populaire pour les organisations cherchant à protéger leurs communications par email.
Normes de Sécurité : S/MIME respecte des normes de sécurité reconnues, permettant un chiffrement robuste et des mécanismes de signature fiables pour les communications électroniques.
PGP (Pretty Good Privacy) :
Utilise un modèle de clés pair-à-pair.
Les utilisateurs génèrent leurs propres clés publiques et privées et échangent les clés publiques directement.
La gestion des clés repose sur la confiance personnelle (Web of Trust).
S/MIME (Secure/Multipurpose Internet Mail Extensions) :
Dépend d'autorités de certification (CA) pour émettre des certificats numériques.
Les utilisateurs obtiennent des certificats qui lient une clé publique à leur identité, ce qui facilite l'authentification et la gestion des clés.
PGP :
Utilise le chiffrement symétrique pour le message (avec une clé de session) et le chiffrement asymétrique pour sécuriser cette clé.
Les utilisateurs peuvent également signer numériquement leurs messages avec leur clé privée, indiquant l'authenticité.
S/MIME :
Utilise également le chiffrement symétrique pour le message, mais s'appuie sur des certificats numériques pour la gestion des clés publiques.
Offre des fonctionnalités similaires de signature numérique, fournissant une assurance d'identité et d'intégrité.
PGP :
Largement utilisé par les particuliers et dans des contextes où la confidentialité est primordiale.
Peut nécessiter une configuration et une gestion des clés plus technique.
S/MIME :
Souvent utilisé dans des environnements professionnels où la conformité et les normes de sécurité sont critiques.
Prend en charge directement par la majorité des clients de messagerie professionnels et implique moins de gestion manuelle des clés.
PGP :
Flexible et peut être utilisé avec différents formats et protocoles de communication.
Peut avoir des problèmes d'interopérabilité avec certains systèmes, surtout si des implémentations différentes de PGP sont utilisées.
S/MIME :
Offre une meilleure interopérabilité et compatibilité entre différents clients de messagerie du fait de son adoption standardisée.
Dans l'ensemble, PGP et S/MIME sont des solutions efficaces pour sécuriser les communications email, mais ils diffèrent par leur approche vis-à-vis de la gestion des clés, l'utilisation des certificats, et le public qu'ils ciblent.