Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Année académique 2011-2012
Attention : ce document est
entièrement basé sur les
transparents du cours et est
très incomplet.
INFO 0045-2 Cryptographie et sécurité
informatique Le résumé
Réalisé par Marc Gou
2
C.I.A. : Confidentiability + Availability + Integrity
La confidentialité est la prévention de la divulgation non autorisée d’information. L’intégrité est la propriété d’une information n’ayant pas été altérée de manière non autorisée. La disponibilité est la capacité d’une information à être accessible et modifiable au moment opportun par ceux qui ont l’autorisation.
A.A.A.
L’identité des parties communicantes n’est pas traitée dans le modèle C.I.A. Authentification détermine l’identité ou le rôle d’une personne. Autorisation détermine, en se basant sur le contrôle d’accès, si une personne ou un système est autorisé à accéder à des ressources. Audit est le suivi (tracking) de ce qui a été fait dans le système par un utilisateur ou un groupe d’utilisateurs.
Pentagone
Admissibility : la machine sur laquelle on travaille/se connecte est-elle fiable?
Hexad
Utilité : une information chiffrée pour laquelle on a perdu la clé n’est plus d’aucune utilité.
McCumber : En forme d’un cube C.I.A. + Etat de donnée (Transmission, Storage, Processing) + Principes et règles à adopter (Human factors, Policy and practises, Technology).
Chapitre 1 : Sécurité des OS Concept des OS Le système d’exploitation (OS) fournit l’interface entre l’utilisateur de l’ordinateur et le hardware. L’OS gère la façon dont les applications accèdent aux diverses ressources dont le disque dur, le CPU, la mémoire centrale et les Entrées/Sorties. L’OS gère aussi les différents utilisateurs et les différentes applications. L‟OS permet de gérer le multitasking : plusieurs tâches peuvent partager, simultanément, une ressource particulière, le CPU. L’OS est en charge d’affecter à chaque programme exécuté une portion de temps CPU. La rapidité de calcul du CPU donne l’impression que l’ordinateur exécute toutes les applications simultanément.
3
Mais la situation est un peu différente dans les architectures multi-cœurs modernes. Le noyau (kernel) est le composant cœur d’un OS qui gère les ressources hardware de bas niveau (mémoire, CPU, appareils E/S). Les tâches associées au noyau sont, généralement, représentées en couches.
Chaque appareil est représenté par un driver qui encapsule les détails de l’interaction avec cet appareil. L’API (Application Programming Interface) présentée par le driver permet à l’application d’interagir à un haut niveau avec l’appareil. L’OS se charge d’effectuer les opérations de bas niveau. Les appels systèmes sont les moyens utilisés pour exiger du noyau d’effectuer une telle action à la place de l’application. Ils sont contenus dans des librairies qui définissent les fonctions permettant de communiquer avec le noyau (libc, read(), write(), exec()…). Les programmes sont stockés sur un périphérique de stockage permanent ils doivent donc être chargés en mémoire RAM pour pouvoir s’exécuter. Un programme qui s’exécute est un processus (process). Un processus doit pouvoir être identifié de manière unique grâce à un entier strictement positif PID (process identifier), l’objectif est de permettre
plusieurs instances d‟un même programme. Un système de fichiers (file system) est une abstraction de l’organisation de la mémoire externe “permanente”. L‟OS organise les fichiers hiérarchiquement en dossiers, chaque dossier contient des fichiers ou des sous-dossiers. Le disque dur consiste donc en une collection de dossiers imbriqués formant un arbre, le dossier le plus haut est la racine de l’arbre (root folder). Les permissions sont utilisées pour délimiter les droits des utilisateurs. Ils vérifiées par l’OS pour déterminer si un fichier est accessible en lecture, écriture, ou exécution par un utilisateur (ou groupe d’utilisateurs). Matrice de permission : - permission du propriétaire (owner permission)
4
- permission du groupe (group permission) - droit d’accès par défaut (world permission) Il existe, en outre, 3 bits de permission particuliers : Set-user-ID (setuid) bit permet à un utilisateur d’exécuter un programme avec les permissions du propriétaire du programme. Exemples (ls -l) :
-rwsr-xr-x: setuid, exécutable par tous
-rwxr-xr-x: exécutable par tous, mais pas setuid
-rwSr--r--: setuid, mais pas exécutable (sans intérêt)
ATTENTION ! Un attaquant peut forcer un programme, avec setuid, à exécuter un code arbitraire. Attaquant peut exploiter le mécanisme setuid pour avoir les permissions du propriétaire du programme, scénario de type privilege escalation.
Set-group-ID (setgid) bit est identique que setuid mais le propriétaire est un groupe. Pour les répertoires, les fichiers créés à l’intérieur ont le même groupe que le répertoire et non au créateur du fichier. Exemples (ls -l)
-rwxr-sr-x: setgid, exécutable par tous
drwxrwsr-x: répertoire setgid-rw-r-Sr--: fichier setgid, mais non
exécutable (sans intérêt)
Sticky bit (pour les répertoires) empêche un utilisateur de supprimer/renommer les fichiers dont il n’est pas propriétaire Exemples (ls -l)
drwxrwxrwt: sticky bit, accès à tous
drwxrwx--T: sticky bit, accès par utilisateur/groupe
La mémoire RAM est l’espace d’adressage de l’ordinateur qui contient le code du programme qui s’exécute, ses données en entrée et et sa mémoire de travail. Pour chaque process, la RAM est organisée en segment, les différentes parties de l’espace d’adressage sont séparées. Un ordinateur n’a généralement pas suffisamment de mémoire pour tous les processus en cours d’exécution. L’OS donne alors l’illusion au process qu’il dispose d’un accès complet à un espace d’adressage continu (vision virtuelle). La mémoire est divisée en pages, l’OS sait lesquelles sont en mémoire et lesquelles sont stockées sur le disque.
5
Machines virtuelles : l’OS présente une vision dans laquelle le processus tourne sur un OS et une architecture particulière alors que ce n’est pas le cas. Avantages des machines virtuelles sont nombreuses : efficacité hardware, portabilité, sécurité et management.
Passwords Problème d’authentification : permettre à l’OS de déterminer l’identité (ou le rôle) de quelqu’un. Mécanisme standard : <username, pwd> : si le pwd entré par l’utilisateur correspond à celui stocké par l’OS, l’OS accepte l’authentification et log l’utilisateur. Sinon, refus Les passwords ne sont pas stockés en clair sur le système car il y aurait un risque trop élevé en cas de vol. A la place, l‟OS conserve une empreinte du mot de passe (hash). Fonction de hachage cryptographique :
h, fonction de hachage x, argument de la fonction y, empreinte résultante : h(x) = y
La fonction de hash doit être irréversible : connaissant y et h, il doit être impossible de retrouver x.
Fonctionnement de ce mécanisme :
1. Utilisateur tape son id, X et son password P. 2. L’OS obtient H, l’empreinte stockée du password de X. 3. L’OS teste si h(P) == H.
6
Les attaques possibles ? o Pwd écrits (Post-it sur écran, sous le clavier, …) o Espionnage par dessus l’épaule (Distributeurs d’argent) o Social engineering (tromper les utilisateurs) o Key logger (programme tournant en arrière-plan et enregistrant toutes les frappes au clavier) o Ecoute du réseau (certains protocoles laissent passer en clair les pwds : POP, FTP)
Attaque on-line : l’attaquant teste des paires <user, pwd>, les contre-mesures sont :
L’utilisation des captchas qui permet de distinguer l’humain et le bot Bloquer le compte après x tentatives infructueuses et prévenir l’utilisateur (inconvénient :
transforme l’attaque en déni de service et coût pour l’utilisateur de débloquer son compte). Attaque off-line : la fonction H doit être connue et l’attaquant doit avoir procuré le fichier des pwds. Il a alors 3 possibilités :
Attaque du dictionnaire (Deviner le pwd) Attaque brute force (Génération aléatoire des pwds) Attaque heuristique (mix de l’attaque du dictionnaire et brute force)
L’attaquant compare alors les hashes avec ceux du fichier volé jusqu’à obtenir une égalité. Attaque du dictionnaire : En moyenne, un dictionnaire contient entre 150.000 et 200.000 mots, beaucoup de personnes utilisent des mots du dictionnaire comme pwd. Il est possible de préparer l’attaque en précompilant un fichier de hashes, il suffit ensuite de comparer le fichier volé et les hashes précompilés. Attaque heuristique : Certaines règles sont appliquées aux mots du dictionnaire en fonction des pratiques courantes (Renverser, majuscule<->minuscule, dupliquer, ajout de préfixe/suffixe…). UNIX ajoute une protection supplémentaire aux pwds : Des bits aléatoires sont ajoutés à chaque pwd avant le hash :
o ajoute de l’aléatoire à l’output o bits aléatoires = sel (salt) : typiquement, un nombre aléatoire associé à chaque
Avantage du sel est Augmentation de l’espace de recherche E pour une attaque de type dictionnaire :
E = B = nombre de bits du sel et D = taille du dictionnaire
Fonctionnement de ce mécanisme : 1. Utilisateur tape son id, X et son password P 2. l’OS obtient S et H 3. l’OS teste si h(S || P) == H
Les fonctions de hash sous UNIX : DES, MD5, Blowfish, SHA-1 (Mac OSX), … La taille du sel dépend de l’OS : Mac OSX (32 bits), Linux moderne (48 bits), OpenBSD (128 bits). Cas d’étude : UNIX avec MD5 :
on retient les 8 premiers caractères du pwd (les caractères ultérieurs sont ignorés) on conserve 7 bits/caractères (MD5 nécessite une clé de 56 bits) hash créé en chiffrant une chaîne de caractères nuls avec la clé de 56 bits et en ajoutant le sel
7
Pwd est stocké dans etc/shadow :
username:pwd:last:may:must:warn:expire:disable:reserved
pwd : sel + hash
last : dernière modification
may : délai avant de pouvoir être modifié
must : délai avant de être devoir modifié
warn : prévenir l’utilisateur
expire : délai entre expiration et blocage
disable : date de blocage de compte
Win98/ME utilise Lan Manager Hash (LM Hash) : pas de sel, si moins de 14 caractères, Windows ajoute des ‘0’ pour arriver à 14 caractères (padding). Win NT/2000/XP/Vista/7 utilise NT Lan Manager Hash (NT Hash) : Le pwd n’est plus coupé en 2 blocs et peut être plus long que 14 caractères mais il y a risque d’incompatibilité. La fonction d’hash utilisé est le MD4 et il n’y a toujours pas de sel. Le système utilisé est beaucoup moins performant que celui d’UNIX.
Droit d’accès Fichiers et répertoires sont gérés par l’OS, les applications accèdent aux fichiers via une API. Un descripteur de fichiers fournit un identificateur pour un fichier/répertoire. C’est une valeur indexée permettant d’accéder rapidement à un fichier, contenu dans la table des descripteurs de fichiers.
Opérations sur les fichiers o ouverture: renvoie un descripteur de fichier o lecture/écriture/exécution o fermeture: invalide le descripteur de fichier
Organisation hiérarchique des fichiers : Windows utilise un arbre tandis que linux utilise un DAG (Graphe dirigé acyclique). N’oublions pas que Le meilleur moyen d’éviter une attaque, c’est de l’empêcher, on peut donc conserver la C.I.A. (déterminer rigoureusement qui a accès à une information particulière), le principe de base utilisé est le LEAST PREVILEGE. Discretionary Access Control (DAC) est le modèle standard utilisé dans les OS. Il y a 4 façons d’implémenter DAC
ACM : Contrôle et visualisation facile, mais trop gourmande en mémoire et difficile à maintenir. ACL : Taille raisonnable mais difficile d’énumérer tous les droits d’un sujet donné. Capacités : Taille raisonnable mais difficile d’énumérer tous les droits associés à un sujet
particulier. RBAC : Réduction de la quantité de règles mais très peu répandu dans les OS.
Exploits
8
Exploit : Tout input (code, argument, séquence de commandes) qui tire avantage d’un bug ou d’une vulnérabilité afin de réaliser une attaque. Attaque : Comportement non anticipé ou involontaire qui se produit dans un programme (ou un ordinateur ou du matériel électronique) apportant un avantage à l’attaquant. Buffer Overflow : Le programmeur oublie d’inclure du code vérifiant qu’une chaîne en entrée peut être contenue entièrement dans un buffer/tableau, un input du processus en cours fait déborder le buffer. Ce débordement écrase alors une partie de la mémoire allouée au processus. Le processus peut alors exploiter des données malicieuses et exécuter du code malicieux. Stack buffer overflow peut être utilisé pour injecter du code malicieux dans la pile et écraser l’adresse de retour d’une fonction. Shellcode (écrit généralement en assembleur) est une chaîne de caractères qui représente un code binaire exécutable capable de lancer un shell. Shellcode est injecté en partie avec le buffer qui est débordé. Payload est le buffer contenant le code malicieux. Race condition est un défaut dans un système électronique ou informatique multitâche, non prévu lors de la conception, caractérisé par un résultat différent selon l'ordre dans lequel sont effectuées certaines opérations du système (selon l'entrelacement des tâches). Lorsqu'il y a compétition, il existe une courte période de temps entre deux instructions (d'une même tâche) pendant laquelle une modification est faite dans le système qui le rend vulnérable à certaines instructions des autres tâches.
Exploits Web Directory Traversal (Attaque ../) : Exécuter des commandes qui accèderont à des fichiers dont l’accès est supposé être restreint et exploiter une validation insuffisante des noms de fichiers donnés en input par l’utilisateur du site web. Cross-Site scripting (XSS) : Problème de validation de l’input sur un site web permettant à l’attaquant d’injecter du code qui sera exécuté par la suite sur le navigateur de la victime. Le site web est utilisé comme vecteur pour exécuter du code malicieux chez la victime. XSS persistant : Le code reste sur le site durant un certain temps et est visible des autres utilisateurs. XSS non persistant : Le code ne persiste pas au-delà de la session de l’attaquant. Le XSS permet aussi de rediriger une session, de montrer de fausses informations, de mettre en place des faux formulaires pour obtenir des données personnelles et de voler des cookies. Injection SQL : c’est un type d'exploitation d'une faille de sécurité d'une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité.
Chapitre 2 : Virologie
9
Généralité Un maliciel (malware) peut être classé en diverses catégories en fonction de son mode de propagation et de dissimulation. •Propagation
o virus: propagation assistée par l’humain (email) o vers: propagation automatique (sans intervention humaine)
•Dissimulation o rootkit: modifie l’OS pour cacher son existence o cheval de Troie: fournit des fonctionnalités désirables et cache ses aspects malicieux
Inside Man Attaque de l’intérieur (insider attack) est une brèche de sécurité causée/facilitée par quelqu’un faisant partie de l’organisation qui contrôle/construit ce qui doit être protégé. Pour un maliciel, il s’agit d’un trou de sécurité créé dans le logiciel par un de ses programmeurs. Il existe 2 types: porte dérobée et bombe logique. Porte dérobée (Backdoor ou Trapdoor) : Caractéristique ou commande cachée dans un programme qui, Lorsque la commande cachée est activée, permet à un utilisateur d’effectuer des actions pour lesquelles, normalement, il n’a pas les permissions. Bombe logique : Programme réalisant une action malicieuse suite à une certaine condition. Elle peut être combinée avec un Backdoor. PROTECTIONS : Il faut
o Eviter les failles uniques (single point failure) : éviter de tout placer dans les mains d’un seul homme
o Revisiter le code (walk-through) : faire relire le code par d’autres programmeurs o Utiliser des outils de reporting et d’archivage : documentation automatique afin de découvrir des
portions de code suspect o Limiter les permissions : Principe du moindre privilège, un utilisateur ne doit pas avoir plus de
privilèges que nécessaire
Virus Un virus informatique est un bout de code capable de se répliquer en modifiant d’autres fichiers ou programmes. La réplication nécessite, généralement, une aide humaine (cliquer sur 1 attachment, partager 1 clé USB). Il y a trois types de virus :
virus code/fichier macro virus virus boot sector
Un virus suit 4 phases d’exécution :
10
o Phase dormante : le virus fait profil bas et évite toute forme de détection o Phase de propagation : le virus se réplique et infecte de nouveaux fichiers sur de nouveaux
systèmes o Phase déclenchant : une condition logique fait en sorte que le virus se réveille et devienne
virulent o Phase d’action : le virus exécute son action malicieuse (payload)
On envisage 4 types d’infection
écrasement : le code original est détruit concaténation : le code original est conservé, éventuellement compressé infection de librairies : permet au virus de résider en permanence en mémoire (kernel32.dll ) macro virus : infection de documents MS Office et peut s’installer dans les templates
DEFENSE : Signature du virus : une chaîne de caractères identifiant uniquement le virus en analysant les fichiers infectés (détection basé sur le pattern matching). Quarantaine : la vérification pour les virus peut se faire périodiquement ou en temps réel. Un fichier ayant un matching partiel d’une signature est stocké dans une zone protégée la quarantaine : le fichier peut, alors, être examiné plus en détails. Méthodes de dissimulation Virus encrypté : le corps du virus est crypté ce qui permet de cacher certains éléments du virus (code de réplication, payload). Virus polymorphique : encryptage du virus avec des variations aléatoire du moteur de décryptage et des clés différentes (mutation du virus lorsqu’il se réplique). Pour détecter, il faut utiliser le code générique pour cryptage. Virus métaphorique : le corps du virus varie (réordonnancement d’instructions, ajout d’instructions inutiles, mutation du virus). Pour détecter, conjonction/séquence de signatures, probabilité.
Vers Un ver est un maliciel qui propage des copies de lui-même sans devoir s’injecter dans d’autres programmes et sans intervention humaine. Dans la plupart des cas, le vers va transporter un payload (suppression de fichier et installation d’une porte dérobée). Fonctionnement générique d’un ver
générer la liste de cible pour chaque machine sur la liste vérifier si elle est infectée et vulnérable infecter et se reproduire
11
Modèle épidémique classique de propagation d’un ver : le start et le finish sont assez lents, au milieu la propagation est très rapide.
o N: nombre total d’hôtes vulnérables o I(t): nombre d’hôtes infectés au temps t o S(t): nombre d’hôtes susceptibles au temps t o I(t) + S(t) = N o β: taux d’infection
Evolution dans le temps o I(0) = 1 o S(0) = N-1 o I(t+1) = I(t) + β* I(t)*S(t) o S(t+1) = N-I(t+1)
Cheval de Troie Cheval de Troie est un maliciel semblant exécuter une tâche utile mais effectuant aussi une (ou plusieurs) action(s) négative(s) (exemple : lancer un keylogger). Un cheval de Troie peut être installé comme payload d’un autre maliciel.
Rootkit
Rootkit modifie l’OS de façon à cacher son existence. Il existe des différents types de rootkit : User-mode : ring 3 + privilèges administrateur Kernel-mode : ring 0 + ajout/remplacement des portions de l’OS Bootkits : remplace le bootloader par un contrôlé par l’attaquant Virtual machine manager (VMM) : ring 1 + accueil de l’OS cible comme une machine virtuelle Hardware/firmware : utilisation du firmware pour créer une image persistante du malware
Economie L’élaboration des malwares est un business, il y a à la fois : Une demande pour des maliciels
o croissance au niveau de la cybercriminalité “professionnelle” o croissance des fraudes on-line
Une offre o variation customisée d’exploits connus o le développeur de maliciel peut facilement vendre “différents produits” à ses clients
Chapitre 3 : Emails Non sollicités Spam : inondation d’Internet avec plusieurs copies d’un même message afin de forcer le message vers des personnes n’ayant pas choisi de le recevoir.
12
Effets Infrastructure
remplissage inutile de serveurs et boîtes mail consommation de bande passante
Productivité : perte de temps liée au tri des messages (coût estimé, globalement, à 100 milliards $/an).
Techniques
L’adresse de l’émetteur est presque toujours forgée pour éviter les contre-attaques. Plusieurs méthodes sont possible : Open-relay, abus de comptes mails, botnet ou utilisation de son propre serveur SMTP. SMTP (Simple Mail Transfer Protocol) est le protocole utilisé pour l’envoi de courrier électronique. Connexion TCP sur le port 25. Quelques commandes de base :
o HELO : annonce un serveur
o Mail From : définit un émetteur o Rcpt To : définit un receveur o Data : définit le contenu
SMTP n’utilise aucun mécanisme d’identification, il est dès lors facile de forger un email. Application limitée : tracking vers l’émetteur grâce à l’en-tête du mail reçu
contenu de la commande HELO adresse IP de l’émetteur heure de réception
Open Relays : serveur SMTP autorisant le relai d’email (processing d’email dont la source n’appartient pas au même domaine) Idée est le suivant :
un seul message (forgé) est déposé sur quelques serveurs SMTP avec une liste de milliers de destinations chacun
les serveurs SMTP envoient tranquillement une copie du message à chaque destinataire Les dommages causés sont les suivants :
les serveurs sont saturés par l’envoi de spams les disques se remplissent avec les logs et messages d’erreur l’ISP (internet service provider) peut arrêter son service de mail black listing
Protection : Pour qu’un message soit accepté par le serveur, il faut que soit l’émetteur, soit le receveur appartienne au même domaine que le serveur Abus de comptes webmail : Un script est utilisé pour ouvrir plusieurs comptes via des webmails, ces comptes sont utilisés pour l’envoi de spam jusqu’à leurs clôtures. Botnet : réseau de machines piratées contrôlées par une personne. Typiquement, un virus infecte l’ordinateur pour le transformer en “bot”. Les bots se connectent à un IRC et attendent les ordres du maître. Location de botnet est devenue un business.
13
Pour obtenir une liste de destination : achat d’une liste d’adresses crawler : parcours automatique du web dictionnaire : test brute-force pour découvrir des adresses hacking : attaque d’une base de données virus/spyware : obtention du carnet d’adresses d’une personne hoax/chaînes : inciter le receveur à renvoyer le mail à tous ses contacts
Protections Législation Filtres : programmes permettant de filtrer les emails en séparant les spams du courrier légitime. Le filtrage se fait sur base du contenu du message et du format du message. Pas la solution idéale car possibilité de faux positifs/négatifs Exemple: SpamAssassin - open source - plusieurs centaines de règles, chacune donnant un score positif ou négatif - renforcement des règles via du filtrage bayesian Black list : rejet des emails provenant d’émetteurs appartenant à une liste noire
o SBL: IPs des opérateurs de spam connus o XBL: IPs des systèmes piratés relayant les mails
Avantages facile à mettre en œuvre pas cher
Inconvénients faux négatifs possibles nécessite un serveur centralisé pour élaborer la liste réactivité pour la mise à jour de la liste
White list : la réception est autorisée si l’émetteur (domaine, IP, ...) appartient à la white list Avantages
pas cher facile à mettre en œuvre
Inconvénients les émetteurs autorisés doivent être connus à l’avance faux positifs
Grey list : bloquer un mail quand le comportement de son émetteur semble anormal, le receveur gère une base de données contenant, pour chaque email entrant, un triplet (IP du serveur SMTP, IP expéditeur, IP destinataire). La base de données devient une white list Pour chaque email entrant, on vérifie s’il appartient à la base de données. Si non: le mail est inséré dans la base de données et un message d’erreur est envoyé au serveur SMTP. L’émetteur doit essayer de retransmettre le mail après au moins 30min : Avantage : Très peu de faux positifs Inconvénient : Délai en raison de la liste grise
14
Chapitre 4 : Attaques réseaux
Modèle TCP/IP Modèle OSI
Applications (SMTP, HTTP, telnet)
Application
Présentation
Session
Transport (TCP, UDP) Transport
Internet (IP, ARP, ICMP) Réseau
Liaison de données (Ethernet, PPP, X.25)
Liaison de données
Physique
Adresse IP : Octet.Octet.Octet.Octet Port est utilisé au niveau transfert, utilisé pour identifier l’application à envoyer.
Paquet TCP : beaucoup plus complexe, l’information perdue doit pouvoir être récupéré.
TCP connexion est une connexion à 3 étapes :
Client -> Serveur : flag = (SYN), SEQ = x Serveur -> Client : flag = (SYN, ACK), SEQ = y, ACK = x+1 Client -> Serveur : flag = (ACK), SEQ = x+1, ACK = y+1
15
Déni de service DoS (Denial of Service) est une attaque consistant à empêcher un système informatique de fonctionner correctement. Ping of Death : Envoi de paquets “ping” malformés, un paquet ping permet de tester l’accessibilité d’une autre machine dans le réseau. Taille d’un paquet ping est de 56 bytes (86 bytes avec l’en-tête). Taille d’un paquet ping of death: > 65.535 bytes. SYN Flooding : Une attaque informatique visant à atteindre un déni de service. Elle s'applique dans le cadre du protocole TCP et consiste à envoyer une succession de requêtes SYN vers la cible. A la réception d’un SYN, le serveur alloue la mémoire nécessaire à la connexion, puis le serveur stocke les infos dans une queue de connexions à moitié ouvertes, puis le serveur répond avec un SYN+ACK, et enfin le serveur attend le ACK. Si la queue est remplie, plus aucune connexion ne peut être acceptée. L’attaquant peut s’attribuer d’autres adresses pour rester anonyme (spoofing). Les OS modernes sont protégés contre le SYN flooding. Protections contre le SYN flooding?
o accroitre la taille de la queue o réduire le timer pour la réception du ACK o retirer le plus vieux SYN de la queue o filtrage des adresses IP o Caching
Caching :
o pas de réservation de ressources o on met en cache le SYN et envoi du SYN+ACK o à la réception du ACK, la connexion est seulement créée o SYN Cookie : À utiliser lorsque la queue est quasi remplie
Les SYN cookies sont des valeurs particulières des numéros de séquences initiales générés (ISN) par un serveur lors d'une demande de connexion TCP. A la réception du SYN
le serveur envoie un SYN+ACK avec un SYN Cookie le serveur écrase l’entrée SYN dans la queue
A la réception du ACK, le serveur vérifie qu’il contient bien un SYN cookie valide. si oui, il est très probable que le client ait déjà envoyé un SYN et qu’il soit honnête -> la
connexion est créée sinon, rejet de la connexion
Mais pas encore adopté par Windows. Attaque réflexion (SMURF Attack) : noyer la cible à l’aide d’amplificateur de trafic. Utlisation du ping amplifié.
o adresse source du ping: cible de l’attaque o destination du ping: adresse broadcast, le paquet est envoyé à toutes les machines du sous-
réseau
16
o les machines pingées répondent à la cible de l’attaque Protection
o hôtes & routers ne doivent pas répondre à des pings sur l’adresse broadcast o configurer les routers pour ne pas forwarder des paquets vers l’adresse broadcast o si le serveur est faible, on peut le configurer pour ignorer les pings
DDoS
Attaquant Maîtres Agents Victimes
L’objectif est d’augmenter la puissance/efficacité d’une attaque DoS Le traçage de l’attaquant beaucoup plus difficile (2 couches intermédiaires). Attaque plus difficile à filtrer (car plusieurs sources). Technique?
o Le pirate prend possession de différentes machines et installe un agent dessus (via un cheval de troie)
o Plusieurs maîtres contrôlent les agents o Le pirate envoie ses ordres aux maîtres qui les relaient aux agents afin d’attaquer la cible
Spoofing Spoofing est une technique utilisée en informatique qui consiste à envoyer des paquets IP en utilisant une adresse IP source qui n'a pas été attribuée à l'ordinateur qui les émet. (Tromperie sur la source du paquet et réponse envoyée à l’adresse forgée) Intérêts : l’adresse IP source peut servir pour autoriser une connexion
Routers et firewalls filtrent les paquets sur base de l’IP source Certains programmes autorisent certaines sources à se connecter sans authentification (rlogin,
rsh) Si le pirate et la victime spoofée ne sont pas sur le même LAN, alors il est difficile de connaître l’ISN de la victime car ISN est un nombre aléatoire.
17
Prédiction de l’ISN possible sur certaines implémentations simples de TCP ouvrir un certain nombre de connexions TCP et observer l’ISN et les échantillons d’incrément lancer l’attaque en se basant sur le dernier ISN et un incrément obtenus via les échantillons lancer plusieurs attaques simultanément avec plusieurs incréments, en espérant que l’un d’eux
soit le bon
ARP Spoofing
ARN (Adress Resolution Protocol) permet d’associer à une adresse IP une adresse MAC. L’identificateur d’une interface réseau via un identifiant hardware spécifique Les requêtes ARP sont broadcastées sur le réseau et le résultat conservé en cache.
Sniffing Plusieurs protocoles basent leur authentification sur du texte clair (telnet, rsh, ftp, http, pop, imap) où le nom d’utilisateur et pwd en clair sur le réseau. En écoutant le trafic qui passe sur le réseau, on peut capturer des noms d’utilisateurs + pwds (wireshark). Une fois dans le sous-réseau, on peut capturer bien plus d’informations.
Chapitre 5 : Firewalls Un pare-feu réseau (network firewall) est un software ou un hardware qui permet d’éviter la propagation d’une attaque tout en autorisant le trafic désiré. Avantages de firewall software :
meilleures performances des firewalls software : bénéficient des performances des PCs actuels moins chers : PCs pas cher
Inconvénients de firewall software : Un firewall software hérite de toutes les vulnérabilités de l’OS sur lequel il tourne Architecture connue des firewalls software : exploitation "facile" de vulnérabilités
18
Principes de base Moindre privilège : chaque élément (utilisateur, software) du système peut seulement disposer des droits minimums nécessaires à ses tâches. Exemples : utilisateurs réguliers ne peuvent être root, un admin doit aussi utiliser un compte “normal”, un serveur web tourne via un compte sans privilège particulier… Défense en profondeur : utilisation de plusieurs mécanismes de protection redondants. Exemples : anti-virus sur les serveurs et les hôtes, on sécurise aussi (configuration, patches) les machines protégées par un firewall…
Goulot d’étranglement : il est plus simple de contrôler des données si elles passent toutes par le même endroit. Exemples : interdiction de connecter sa machine via un modem, toute interconnexion avec une autre entreprise doit passer par le firewall... Maillon le plus faible : un firewall ne sera jamais plus efficace que son élément le plus faible donc tous les éléments du système doivent posséder une sécurité équivalente. Exemple : inutile d’avoir un logiciel anti-virus pour le FTP si on n’en a pas un aussi pour le trafic HTTP et SMTP. Déni par défaut : il est préférable d’interdire tout ce qui n’est pas explicitement permis que d’accepter tout ce qui n’est pas explicitement interdit car on ne connaît pas à l’avance toutes les menaces auxquelles on peut être exposé donc il vaut mieux interdire quelque chose d’utile que permettre une attaque. Participation des utilisateurs : un système de sécurité n’est efficace que si tous les utilisateurs adhèrent à ses principes. Si le système empêche les utilisateurs de travailler ou si les restrictions sont mal expliquées, les utilisateurs ne collaboreront pas. Du coup, certaines personnes pourraient adopter un comportement à risque. Exemple : installation d’un modem pour pouvoir aller sur Internet. Simplicité : la plupart des attaques sont dues à des erreurs humaines. Plus un système est compliqué, plus il est prompt à contenir des erreurs pouvant être exploitées par des pirates. Avantage de la simplicité :
o le risque d’erreur est plus petit
o le bon fonctionnement d’un système simple est plus facile à vérifier
Caractéristiques Il existe 2 types de Firewall : Stateless (ne retient pas les paquets qu’il a vu passer) et Statefull (garde une trace des paquets qu’il a vu passer et reconstruit chaque état d’une connexion). Firewall statefull avec TCP :
pour chaque connexion, il sait à quoi devrait ressembler le prochain paquet: flags, numéro de séquence
il peut éliminer les paquets qui ne correspondent pas
19
il peut remplacer les numéros de séquence en cas de réception d’un SYN, il peut générer lui-même le SYN+ACK, et si la connexion est complétée, le SYN est envoyé à la machine terminale
il peut empêcher le SYN flooding Protection contre le SYN flooding : Simple
le firewall garde trace de toutes les tentatives d’ouverture de connexion s’il estime qu’une connexion reste à moitié ouverte trop longtemps, il envoie un RST à la
machine distante Avancé
le firewall retarde les paquets SYN et génère lui-même des SYN+ACK à la place de la machine terminale
il envoie le SYN original à la machine terminale seulement lorsqu’il a reçu le ACK Analyse des paquets : Un firewall peut analyser les paquets et vérifier leurs formats et contenus, il peut ainsi éliminer :
des paquets malformés (DoS, exploit, ping of death, ...) des paquets qui ne correspondent pas à l’état actuel des protocoles des paquets avec un contenu indésirable (virus)
Filtrage : aide à limiter le trafic à des services utiles. Il peut être basé sur des critères multiples :
IP source : éviter le spoofing IP destination protocoles (TCP, UDP, ICMP, ...) et ports flags et options : définir la direction dans laquelle une connexion peut être établie
NAT : On utilise des adresses privées à l’intérieur du réseau et une (ou plusieurs) adresses publiques pour communiquer avec Internet, le NAT (network address translator) se charge alors de faire la correspondance entre les deux. Ce mécanisme permet notamment de faire correspondre une seule adresse externe publique visible sur Internet à toutes les adresses d'un réseau privé, et pallie ainsi l'épuisement des adresses IPv4.
Il existe divers types d’adresses IP :
multicast : un émetteur, plusieurs receveurs anycast : redirection des données vers le serveur le plus “proche” ou le plus “efficace”, un
émetteur, plusieurs receveurs mais sélection du receveur final unicast : point à point, publiquement routable ou non routable
Fonctionnement de NAT :
quand un paquet quitte le réseau interne, son adresse source est remplacée par une adresse publique
quand un paquet arrive de l’extérieur, la destination publique est remplacée par l’adresse privée utilisation d’une table de traduction
Par défaut, un NAT dynamique n’accepte pas l’établissement de connexions entrantes. Quand 2 connexions sont identifiées uniquement par leurs adresses IP, il y a collision. On peut changer le port source. (Port and Address Translation)
20
Le NAT dynamique ne permet pas d’établir des connexions entrantes, possède une bonne protection par défaut et élimine le P2P. Il est possible de définir certaines entrées statiques dans la table de traduction : NAT statique, ce qui permet les connexions entrantes. On crée une entrée par protocole, ainsi différents ports pour une même adresse externe peuvent mener à différentes adresses internes. Avantage du NAT :
moins d’adresses publiques : moins cher changement d’ISP (Internet Service Provider) facile réorganisation interne du réseau facile possibilité d’une certaine protection automatique structure interne du réseau cachée
Inconvénient du NAT :
TCP/UDP checksums : checksum recalculé pour chaque paquet envoyé vers l’extérieur certains protocoles ne supportent pas les modifications de paquets (IPSec) certains protocoles échangent les adresses
Un checksum est un nombre qu'on ajoute à un message à transmettre pour permettre au récepteur de vérifier que le message reçu est bien celui qui a été envoyé. Authentification : Le firewall peut exiger une authentification afin de laisser passer une connexion
o trafic sortant : limiter l’accès à Internet à des utilisateurs privilégiés o trafic entrant : permettre l’accès aux ressources internes pour les employés en déplacement
Cette authentification peut être faite par une base de données locale ou centrale. Accès à distance : Le firewall permet aux utilisateurs extérieurs d’accéder au LAN.
o L’utilisateur extérieur doit établir une connexion chiffrée avec le firewall o L’utilisateur peut, alors, agir comme si il se trouvait dans le LAN
Chiffrage : Le firewall est à même de crypter/décrypter les données passant à travers des zones moins sures. Exemples interconnexion entre 2 sites distants via Internet, accès à distance… Génération des Logs : Les logs permettent de garder trace des tentatives d’attaques et aussi de vérifier que les ports (ou destinations) qu’on autorise sont réellement nécessaires (Moindre privilège).
Architecture Firewall personnel : Initialement, le firewall interdit toute connexion. A chaque alarme, l’utilisateur est amené à déterminer la règle à appliquer
blocage autorisation temporaire autorisation complète
Ce qui permet de bloquer les backdoors, logiciels espions, ... Ce qui fait de firewall le complément idéal à un anti-virus.
21
NAT + Filtrage : à utiliser quand le niveau de sécurité requis est faible Configuration
NAT dynamique pour toutes les machines internes NAT statique pour tous les serveurs accessibles filtrage sortant et entrant
Limitations pas d’analyse de contenu depuis Internet : attention aux virus n’évite pas les attaques depuis l’extérieur sur les serveurs internes : exploits, DoS, ...
DMZ : Zone démilitarisée -> zone connectée ni à Internet, ni au réseau interne. À utiliser quand le niveau de sécurité requis est moyen. Configuration
les machines internes peuvent seulement se connecter au proxy seul le proxy peut se connecter à Internet NAT dynamique pour le trafic sortant NAT statique pour le trafic interne en direction du proxy filtrage entrant et sortant
Limitation le firewall est un point crucial : toute vulnérabilité du firewall peut être exploitée pour accéder à
l’ensemble du réseau tous les services passent via le proxy : une vulnérabilité dans le proxy peut donner accès à tout
(single point of failure) DMZ Sandwich : à utiliser quand le niveau de sécurité requis est élevé Configuration
les machines internes se connectent uniquement aux proxies : un proxy par service de façon à éviter le single point of failure
seuls les proxies peuvent se connecter à Internet pas de routage au niveau des proxies : LAN reliant les proxies est commuté (switches au lieu de routeurs) tables ARP remplies de manière statique : éviter l’ARP spoofing NAT dynamique pour le trafic sortant NAT statique pour le trafic entrant Filtrage sortant et entrant
Règles Les règles de filtrage sont spécifiées dans une liste. Pour chaque paquet
le firewall parcourt la liste jusqu’à trouver une règle qui s’applique
le firewall exécute l’action associée à la règle
le firewall passe au paquet suivant La dernière règle est celle qui interdit tout ce qui n’a pas été autorisé
22
Stateless : Spécifier le flag rend possible l’autorisation des seules connexions désirées mais si un attaquant est capable de forger un paquet avec les flags adéquats, le firewall laissera passer.
impossible de faire la distinction entre un paquet appartenant à une connexion en cours et un paquet hors contexte
limite d’un système de filtrage stateless Statefull : Un firewall statefull connait les connexions établies. Il peut autoriser automatiquement le trafic de retour, Ce qui le rend plus sûr car
pas de paquets non sollicités plus simple à configurer, donc moins prompt aux erreurs
Organisation : Quand il y a beaucoup de règles, il est important de les organiser de manière systématique. Le firewall doit permettre les connexions depuis l’extérieur vers la DMZ Web. Le firewall doit permettre les connexions internes vers Internet mais uniquement via la DMZ Proxy.
Une bonne méthode pour organiser les règles :
o définir un niveau de sécurité pour chaque zone o grouper les règles par zone o ordre décroissant de niveau de sécurité
Chaque groupe est composé de 4 parties o autorisations explicites pour le trafic entrant o interdictions générales pour le trafic entrant o autorisations explicites pour le trafic sortant o interdictions générales pour le trafic sortant
Pour chaque zone, il est suffisant de déclarer les flux vers des zones moins sécurisées.
23
Il n’est pas nécessaire de spécifier le trafic en direction/venant d’une zone de plus haut niveau : déjà traité dans la zone de plus haut niveau. Une règle impliquant 2 zones apparaît dans le bloc de la zone la plus sécurisée. En principe, la dernière règle (13) ne devrait jamais être atteinte : pas nécessaire mais peut être utile pour détecter les erreurs de configuration (logs).
24
Chapitre 6 : Cryptographie symétrique Cryptologie : science des messages secrets et des codes chiffrés, utilisée traditionnellement par les militaires et les gouvernements. Cryptographie : ensemble des principes, méthodes et techniques qui assurent le chiffrement et déchiffrement des données dont l’objectif est d’assurer la confidentialité des données et l’intégrité des données. Cryptanalyse : ensemble des méthodes et procédés de déchiffrage visant à casser un cryptogramme sans connaissance de la clef de chiffrement. Texte clair : texte d’origine qui est immédiatement intelligible et qui peut être exploité directement, sans avoir recours au déchiffrement. Chiffrement : opération qui permet de substituer au texte clair un texte inintelligible, ce qui le rend inexploitable pour quiconque ne possédant pas la clé permettant de le ramener à sa forme initiale. Cryptogramme : message rendu inintelligible grâce au chiffrement et ne peut être lu/compris que par les personnes en possession de la clé permettant de le déchiffrer (idéalement). Déchiffrement : opération inverse d’un chiffrement réversible. Ainsi, une personne autorisée, en possession de la clé peut rétablir en clair un cryptogramme. Cryptosystème : quintuplet (M, C, K, E, D) M: ensemble des textes clairs possibles C: ensemble des textes chiffrés K: ensemble des clés E: ensemble des fonctions de chiffrement D: ensemble des fonctions de déchiffrement Un bon cryptosystème doit disposer de 3 qualités Diffusion
aucune propriété statistique ne peut être déduite du message chiffré le message chiffré est réellement inintelligible
Confusion toute modification du message en clair se traduit par une modification complète du message
chiffré Robustesse de la clé
difficile de déterminer k et difficile d’énumérer tous les k On a 4 types de cryptanalyse :
texte chiffré : l’attaquant possède une copie des cryptogrammes échangés textes en clair connus : l’attaquant possède plusieurs paires <texte clair, texte chiffré> textes en clair choisis : l’attaquant possède plusieurs paires <texte clair, texte chiffré> mais il a
pu choisir le texte clair texte chiffré choisi : l’attaquant choisit plusieurs cryptogrammes dont il obtient le texte clair
correspondant
25
Side Channel Attack : toute attaque basée sur l’information obtenue de l’implémentation physique du cryptosystème. Exemple : Timing Attack, Power monitoring Attack, Electromagnetic Attack, Acoustic Attack, Cache Attack, Differential Fault Analysis Il y a 4 résultats possibles à une attaque
cassage partiel : l’attaque calcule quelques informations sur le texte clair cassage local : l’attaquant calcule quelques paires <texte clair, texte chiffré> cassage global : l’attaquant calcule la fonction d, possibilité de déchiffrer tout message cassage complet : l’attaquant connaît la clé k
Définir un protocole robuste face à une attaque
disposant de moyens importants : entrée ayant un objectif modeste : sortie
Chiffrement par transposition Cryptographie à clé secrète : les protagonistes s’échangent une clé secrète. La sécurité du chiffrement dépend du non divulgation de la clé. Chiffrement de type anagramme : les lettres du message sont déplacées. Exemple : texte clair: CRYPTOGRAPHIE Transposition choisie: texte clair à l’envers (c’est la clé) Texte chiffré : EIHPARGOTPYRC Il y a aussi le Scytale Spartiate
Chiffrement monoalphabétique Chiffrement par substitution : on change d’alphabet, ainsi pour un alphabet à 27 lettres, on a 26! alphabets possibles. Problème : confusion sur l’alphabet mais chaque lettre conserve sa place d’origine. Substitution monoalphabétique : remplacer chaque lettre de l’alphabet par une autre. Ce qui revient à un décalage différent pour chaque lettre. Cas particulier: chiffrement de César : décalage des lettres de l’alphabet.
a → d, b → e, c → f, ... On travaille modulo 26 et la clé est le décalage (26 possibilités). Problèmes : confusion faible et pas de diffusion
seulement 26 clés possibles : car décalage commun sur l'alphabet cassage de l’algorithme simple : tester toutes les clés
Cryptanalyse de la substitution monoalphabétique (Al-Kindi) Idée de base
toutes les lettres de la langue (française) n’ont pas la même fréquence d’apparition
26
par analyse statistique de la fréquence des lettres du texte chiffré, on peut retrouver les substitutions
Plus facile quand le texte chiffré est long. Si insuffisant, on peut travailler sur des blocs de lettres : fréquences des digrammes.
Chiffrement polyalphabétique Substitution d’une lettre du texte clair par une autre choisie en fonction de l’état du cryptosystème en plus de substitution fixe. Le changement de lettre s’obtient avec une clé :
o indique le nombre de décalage à réaliser à un moment donné o pour chiffrer une lettre du texte clair (position i), on utilise une lettre de la clé (position i) o pour chiffrer la lettre suivante (i+1), on utilise la lettre suivante de la clé (i+1) o quand tous les caractères de la clé sont épuisés, on recommence au début de la clé
Vigenère : Algorithme de chiffrage
o Pour chaque lettre du texte clair : on sélectionne la colonne correspondante de la table o Pour une lettre de la clé : on sélectionne la ligne adéquate o Le croisement des deux donne la lettre chiffrée, on répète la clé autant de fois que nécessaire
Vigenère : Algorithme de déchiffrage
o Pour chaque lettre de la clé : on sélectionne la ligne adéquate o On cherche la lettre chiffrée correspondante dans la ligne : la colonne correspondante donne la
lettre déchiffrée
Vigenère : Cryptanalyse en 3 étapes 1. trouver la longueur I de la clé 2. découper le message M en I messages m0, m1, ..., mI-1 3. mi contient l’ensemble des lettres dont la position dans le texte modulo I est égal à i 4. toutes les lettres d’un mi sont chiffrées avec le même décalage 5. analyse fréquentielle sur chacun des mi : déterminer le décalage de chaque colonne
Les 2 méthodes pour trouver la longueur de la clé : o Répétition des fréquences o Indices de coïncidence
Le chiffrement de Vigenère est donc sensible à une attaque à texte chiffré du moins, tant que le texte est long et écrit dans une langue connue. One-time pad/Chiffre de Vernam : démontré qu’il est incassable
o la clé est aussi longue que le message à chiffrer : Vigenère avec I = |m| o les caractères composant la clé sont choisis aléatoirement o la clé est nouvelle pour chaque message
Avantages de l’One-time pad
o confusion totale : chiffrement totalement aléatoire
o diffusion totale : la clé n’est jamais réutilisée et le même texte est chiffré différemment à chaque fois
27
Inconvénients de l’One-time pad o comment transmettre la clé? o si on arrive à transmettre la clé de manière sécurisée, pourquoi ne pas le faire directement avec
le texte clair?
Chiffrement par blocs On ne travaille plus sur les lettres de l’alphabet mais sur un ensemble de blocs, Le message m est découpé en n blocs avec padding éventuel si le dernier bloc est trop court.
chaque bloc est chiffré le texte chiffré, m’, correspond à la concaténation des n blocs chiffrés
Deux méthodes de chiffrement : ECB et CBC. ECB (Electronic cipher block) est le mode de chiffrement le plus simple. Chaque bloc est simplement chiffré, séparément, avec la clé.
Limite d'ECB : chiffrement peu sûr car 2 blocs clairs identiques donnent toujours le même bloc chiffré pour une clé k fixée. CBC (Cipher block chaining) Le résultat du chiffrement du bloc dépend
de la clé k du bloc chiffré XOR entre le bloc et le bloc chiffré
Nécessite un vecteur d’initialisation (IV) généré aléatoirement transmis avec le texte chiffré
28
Avec CBC, 2 blocs clairs identiques sont chiffrés différemment, donc il y a bonne protection d'un point de vue chiffrement, c’est le mode le plus utilisé.
Réseau de Feistel : construction utilisée dans les algorithmes de chiffrement par bloc. une longueur de bloc, l un espace de clé, K un nombre de tours/étages, r un générateur de sous-clés, g : divise la clé k en r sous-clés une fonction de chiffrement, f : doit exister
DES : C’est un réseau de Feistel équilibré.
blocs de 64 bits (L=32 bits et R=32bits) nombre de rondes r=16
clé de 56 bits : sous-clé de 48 bits fonction f: p-box + s-box : utilise 8 S-boxes avec un mapping de 6 bits vers 4 bits
Avantages de DES rapidité : chiffrer à 64Mo/sec bonne diffusion : P-Box bonne confusion : S-Box facile à implémenter en hardware
Inconvénients de DES taille de la clé (56 bits) méthodes pour casser la clé : cryptanalyse différentielle, attaque T (tickling attack), cryptanalyse
linéaire
29
AES : Advanced Encryption Standard : nouveau standard du gouvernement américain adopté en 2000, développé par des chercheurs belges de KUL.
Avantages :
rapide : plus rapide que 3-DES nécessite peu de mémoire : peut être
implémenté dans une carte à puces résistant aux attaques : pas de cryptanalyse
linéaire, pas de cryptanalyse différentielle la seule “solution” est la recherche exhaustive
Chapitre 7 : Cryptographie asymétrique La cryptographie asymétrique (ou à clé publique) est basée sur un concept différent de la cryptographie symétrique. Chaque intervenant possède une clé publique.
clé connue de tous la connaissance de cette clé suffit pour envoyer un message chiffré à son propriétaire
Chaque intervenant possède une clé privée. clé confidentielle liée mathématiquement à la clé publique correspondante permet de déchiffrer tout message chiffré avec la clé publique
Avantages
s’il y a n intervenants dans une discussion, n clés sont suffisantes les clés publiques doivent être distribuées de manière authentifiée mais pas confidentielle
Inconvénients
algorithmes de chiffrage/déchiffrage plus lents que ceux de la cryptographie symétrique nécessite une longueur de clé très grande (3072 au lieu de 256 bits pour AES)
30
La cryptographie asymétrique est basée sur des problèmes mathématiques : Utilisation de fonction à sens unique avec brèche secrète. Fonction à sens unique avec brèche secrète est une fonction f telle que :
o f(x) est facile à calculer o (x) est difficile à calculer. o (x) en connaissant k, est facile à calculer (k étant la brèche).
En cryptographie asymétrique, k est la clé privée.
RSA Basé sur les problèmes de factorisation et RacineIemeModulaire. Entrées:
un entier n, produit de 2 nombres premiers p, q : n = p * q un entier e > 0 premier avec (p-1)*(q-1) : pgcd(e, (p-1)*(q-1)) = 1 un entier c
Sortie: m tel que c ≡ mod n
Le protocole RSA fonctionne en 3 étapes :
1. création d’un couple (clé publique, clé privée) pour Bob : la clé publique est diffusée à tout le monde.
2. quand Alice veut envoyer un message confidentiel à Bob : elle utilise la clé publique de Bob pour chiffrer le message
3. Bob utilise sa clé privée pour déchiffrer le message envoyé par Alice La création des clés Choisir 2 nombres entiers, p et q, premiers : p et q doivent être plutôt grands (environ 100 chiffres) Calculer n tel que n = p * q
o φ(n) = (p - 1) * (q - 1) o si p et q sont grands, n est aussi très grand (environ 200 chiffres)
Choisir un entier e, très grand, tel que
o 1 < e < φ(n)
o pgcd(e, φ(n)) = 1 avec e premier avec (p - 1) * (q - 1) Calculer d tel que
o (e * d) mod φ(n) = 1, avec d < φ(n) o d est le multiplicateur inverse de e dans la classe module φ(n)
La clé publique est (e, n) La clé privée est (d, n) Pour chiffrer un message M
obtenir la clé publique (e, n) calculer C = mod n, où 0 ≤ M < n
Pour déchiffrer un message C utiliser la clé privée (d, n)
calculer M = mod n Approches possibles pour attaquer RSA
31
Brute force : tester toutes les clés privées possibles mais c’est impossible étant donné la taille des nombres.
Mathématique : plusieurs approches possibles mais toutes sont basées sur la tentative de factoriser le produit de 2 nombres premiers
Timing attack : basée sur le temps nécessaire au déchiffrement Texte chiffré choisi : exploitation des propriétés de RSA
Pour contrer le timing attack, soit on ajoute des délais aléatoires soit on fait en sorte que tous les exponentiations doivent prendre le même temps avant de retourner un résultat. Blinding :
On ne calcule plus mod n mais r * mod n. L’effet de r est enlevé en le multipliant par son inverse. RSA est sensible à une attaque de type texte chiffré choisi : L’attaquant dispose d’un certain nombre de textes chiffrés et des textes clairs correspondants ce qui permet d’exploiter les propriétés de RSA pour aider, par la suite, la cryptanalyse.
Chapitre 8 : Certification La cryptographie asymétrique permet de garantir la confidentialité des messages échangés mais quid de l’intégrité (surtout si le canal de communication n’est pas sûr) ? Garantir l’intégrité d’un message c’est pouvoir détecter toute modification du message entre le moment
de son émission et le moment où il est reçu.
L’attaquant ne peut pas déchiffrer le message par contre, il peut le modifier et cette modification peut
avoir des conséquences désastreuses.
Pour assurer l’intégrité d’un message :
empreinte d’un message
message authentification code (MAC)
MAC est le résumé du message, elle a une taille fixe (128-160 bits).
Non collision : Deux documents légèrement différents doivent avoir un MAC différent.
Sens unique : Très difficile de construire un document qui a le même MAC qu’un autre document.
Si le message et son MAC ne correspondent plus, il y a sûrement eu manipulation du message Le MAC ne doit pas pouvoir être recalculé facilement par un attaquant.
Chiffrement par bloc : le dernier bloc est le MAC.
Data Authentication Algorithm (DAA) : MAC calculé à l’aide de DES
vecteur d’initialisation à 0
si nécessaire, on ajoute des 0 au bloc final
le message est chiffré avec DES en mode CBC
le bloc final est le MAC du message où les M bits de poids forts (16 ≤ M ≤ 64)
Mais méthode dépassée car MAC trop petit pour les besoins de sécurité actuels.
32
Pour calculer un MAC, il nous faut une fonction d’hachage H: t → {0, 1}n.
facilement calculable
transforme une chaîne binaire de taille quelconque t en chaîne binaire de taille fixe n
H(x) = y
y est l’empreinte du message
x est la pré-image de y
collision est inévitable car t > n
On parle de collision entre x et x’ lorsque
x ≠ x’
H(x) = H(x’)
Propriétés d’une fonction de hachage
facilité de calcul
compression
Fonction de hachage à sens unique
résistance à la pré-image : étant donné y, il est difficile de trouver x, tel que H(x) = y et étant
donné y, 2n calculs de hash requis pour trouver x
résistant à la seconde pré-image : étant donné x, difficile de trouver x’ ≠ x, tel que H(x) = H(x’) et
étant donné x, 2n calculs de hash requis pour trouver x’
Fonction de hachage résistante aux collisions
résistance à la collision : difficile de trouver x et x’ tels que H(x) = H(x’)
résistant à la seconde pré-image : étant donné x, difficile de trouver x’ ≠ x, tel que H(x) = H(x’) et
étant donné x, 2n calculs de hash requis pour trouver x’
Attaque de Yuval (attaque des anniversaires)
Soit H: {0, 1}t → {0, 1}n une fonction de hachage.
o Input: A, message initial et Ã, message corrompu
o Output: A’ ≈ A et à ≈ Ã’, tels que H(A’) = H(Ã’)
1. Générer 2n/2 modifications mineures de A notées A’
o pour chacune, calculer H(A’)
o stocker dans une table T
2. Générer des Ã’, modifications mineures de A’ jusqu’à ce que H(Ã’) soit dans T -> collision
Construction d’une fonction de hachage : Construction de Merkle-Damgård
Se base sur une fonction de compression h: {0, 1}b x {0, 1}n → {0, 1}n.
33
Application de la construction de Merkle-Damgård au calcul de H(M)
o padding éventuel à M pour avoir |M| = k * b bits
o découpage de M en k blocs de b bits
o itération de la fonction h (avec un vecteur d’initialisation)
Théorème (Merkle-Damgård) : Si h est résistante aux collisions, alors H l’est aussi.
MD5
64 rondes sur 4 blocs de 32 bits où 4 x 16 sous-rondes où F prend les valeurs :
F = (B & C) | (!B & D)
F = (D & B) | (!D & C)
F = B ⊕ C ⊕ D
F = C ⊕ (B | !D)
Plus considéré comme sûr aujourd'hui.
SHA-512 : Pas d'attaques connues pour le moment
Hash-Based Message Authentication Code (HMAC) : Les faiblesses trouvées dans les fonctions de
hachage ont mené à l’élaboration de techniques plus élaborées.
Signature
Pour le moment on peut assurer la confidentialité et l’intégrité mais on ne peut garantir son authenticité.
Authenticité : un message est dit authentique si son expéditeur est bien celui auquel on s’attend.
On peut garantir l’authenticité d’un message grâce à une signature numérique.
La signature permet de garantir l’intégrité du message et l’authenticité du message.
Propriétés d’une signature numérique
Authentique : le receveur est convaincu que le signataire a délibérément signé le document
Infalsifiable : le signataire, et personne d’autre, ne peut avoir signé délibérément le document
Non réutilisable : une partie du document ne peut pas être placée dans un autre document
Inaltérable : après signature, le document ne peut être altéré
Non répudiable : le signataire ne peut pas, par la suite, nier la signature du document
Il existe 3 formes de contrefaçon pour une signature
34
Contrefaçon sélective : capacité de l’attaquant à créer une signature valide pour un message particulier
(ou une classe de messages) choisi au préalable par l’attaquant
Contrefaçon empirique : capacité de l’attaquant à créer une signature valide pour au moins un message
sans avoir de contrôle sur le message
Contrefaçon universelle : capacité de l’attaquer à créer une signature valide pour tout message
Protocole
Alice envoie son message, chiffré à l’arbitre : Alice → Arbitre: EKa(m)
L’arbitre vérifie le message d’Alice et rajoute une information de validation du message d’Alice (m, “reçu
de Alice”)
L’arbitre envoie le message d’Alice et la validation à Bob, en le chiffrant avec la clé de Bob
Arbitre → Bob: EKb(m, “reçu de Alice”)
Bob déchiffre le message et est certain que le message vient bien d’Alice : m reçu d’Alice
Il est possible que plusieurs émetteurs signent un message.
Signature de groupe : un membre du groupe peut signer, anonymement et pour tout le groupe, un
message. En cas de problème, le manager du groupe peut révéler l’identité du signataire.
Signature en anneau : idem signature de groupe mais l’identité du signataire ne peut jamais être révélée.
Infrastructure à clé publique
Problème : Hypothèse de base de la cryptographie asymétrique
Les clés publiques sont authentiques :
a. Bob publie sa clé publique sur son site web
b. Oscar s’introduit sur le site et remplace la clé publique de Bob par la sienne
35
c. Alice veut envoyer un message, confidentiel, à Bob et utilise la clé publique du site web pour
chiffrer le message
d. Oscar peut déchiffrer le message adressé à Bob
Solution : utiliser un organisme de confiance pour la distribution des clés. 2 modèles sont envisagées :
Modèle PKI : utilisé par les organismes commerciaux et gouvernementaux et nécessite une autorité
centrale.
Réseau de confiance : modèle distribué et utilisé par PGP (Pretty Good Privacy).
PKI (Public Key Infrastructure) : ensemble d’infrastructures permettant de réaliser effectivement des
échanges sécurisés.
PKI ne distribue pas des clés mais des certificats qui contiennent
une clé publique
des données d’identité
o pour une personne: état civil, adresse, email, ...
o pour un serveur: nom de domaine, adresse IP, contact, ...
o une date de validité
un certificat est validé par une tierce personne : autorité de certification (CA)
PKI assure la gestion (création, distribution, péremption) des certificats.
Modèle PKI :
Alice génère ses clés publique et privée
Alice émet une requête au CA
Le CA valide la clé, authentifie Alice et génère un certificat
Le certificat est signé par le CA : certifie l’origine et l’intégrité du certificat
Le certificat est publié dans un annuaire public
Modèle hiérarchique
Chaque CA possède lui-même un certificat
La clé privée associée permet de signer les certificats émis par le CA
Ce certificat est signé par un autre CA : chaîne de certificats
Le dernier certificat de la chaîne est signé par lui-même : certificat auto-signé et racine
Fonctions de PKI :
émettre des certificats à des entités préalablement authentifiées
révoquer des certificats
maintenir des certificats
établir, publier et respecter des pratiques de certification pour établir un espace de confiance
rendre les certificats publics par le biais d’annuaires
éventuellement, gérer les clés et fournir les services d’archivage
Les acteurs d’une PKI :
Détenteur du certificat : possède la clé privée et le certificat numérique contient la clé publique
36
Utilisateur du certificat : récupère le certificat et utilise la clé publique dans sa transaction avec le
détenteur
Autorité de certification (CA) : entité juridique et morale d’une PKI dont les rôles sont :
o génération des certificats
o émission et maintenance des informations sur les CRLs
o publication des certificats non encore expirés
o maintenance des archives des certificats expirés/révoqués
Autorité d’enregistrement (RA) : intermédiaire entre le détenteur de la clé et le CA
o vérifie les requêtes des utilisateurs et transmet les requêtes au CA
o chaque CA dispose d’une liste de RA accrédités
o un RA est connu du CA par son nom et sa clé publique
o le CA vérifie les informations du RA via sa signature
Dépôt/annuaire (repository) :
o distribue les certificats et les CRLs
o accepte les certificats et les CRLs d’autres CAs et les rend disponibles aux utilisateurs
Archive
o stockage à long terme d’informations utiles pour le CA
o permet le règlement de litige
Réseau de confiance : Modèle simple, sans autorité centrale où Chaque intervenant construit son réseau
de confiance :
confiance automatique à une personne donnant son certificat
confiance pleine à tout intervenant connu par un autre en qui on a pleinement confiance
Avantage : idéal pour un milieu informel
Problèmes :
La notion de confiance transitive ? : Peut-on être sûr que “les amis de mes amis sont mes amis”?
Inapplicable si le cadre juridique est important (judiciaire, gouvernementale)