La Sécurité dans les Réseaux
En Java
Ahcène Bounceur
Sécurité informa<que
L’objec<f fondamental de la cryptographie est de permeDre à deux personnes appelées
tradi<onnellement, Alice et Bob de
communiquer à travers un canal peu sûr de telle sorte qu’un opposant Eve ne puisse ni
comprendre ni modifier ou manipuler les données véhiculées via ce canal.
Cryptographie
La cryptographie est l’art de crypter ou de coder un message afin de le rendre inintelligible à ceux qui ne sont pas habilités à en prendre
connaissance
Cryptanalyse
• La cryptanalyse est l’art de décrypter, de
décoder ou de déchiffrer un message par une personne non habilitée à le faire,
• C’est l’art de casser un système cryptographique,
• C’est donc l’ensemble des procédés d’aDaque d’un système cryptographique.
Cryptologie
La cryptologie est l’ensemble formé de la cryptographie et de la cryptanalyse.
Texte clair M
• L’informa<on qu’Alice souhaite transmeDre à Bob
Texte chiffré (cryptogramme) C
• Le message chiffré ou codé
Chiffrement ou codage
• Le processus de transforma<on d’un message clair pour le rendre incompréhensible
(inintelligible)
• Usage d’une fonc<on de chiffrement E(.) : C = E(M)
Déchiffrement ou décodage
• Processus de reconstruc<on du message clair à par<r du message chiffré
• Usage d’une fonc<on de déchiffrement D(.) : D(C) = D(E(M)) = M
• En pra<que les fonc<ons E(.) et D(.) sont paramétrées par des clés, Ke la clé de chiffrement et Kd la clé de
déchiffrement, qui peuvent prendre l’une des valeurs d’un ensemble appelé espace des clés. On a donc la rela<on
suivante :
EKe(M) = C DKd(C) = M
Cryptosystème (1/2)
• Ensemble composé d’algorithmes
cryptographiques, textes en clairs, textes chiffrés et clés possibles.
Cryptosystème (2/2)
• Le type de rela<on qui unit les clés Ke et Kd permet de définir deux grandes catégories de systèmes cryptographiques :
– Les systèmes à clés secrètes ou symétriques (AES : Advanced Encryp/on Standard, , DES : Data
Encryp/on Standard) :
Ke=Kd, la même clé sert au chiffrement et au déchiffrement
– Les systèmes à clés publiques ou asymétriques (RSA) : une clé sert au chiffrement et une autre sert au
déchiffrement ; il y a une rela<on entre Ke et Kd
CRYPTOGRAPHIE ANCIENNE
Codage de César
• Cryptographie mono-alphabé<que
• BONJOUR à 3
• ERQMQXU
Codage de César
• Cryptographie mono-alphabé<que
public static String encrypt(String s, int cle) { String e = "";
for(int i=0; i<s.length(); i++) { char c = s.charAt(i);
c = (char) (((c-'A'+cle)%26)+'A');
e += c;
}
return e;
}
Code Vigenère
V
Cryptographie poly-alphabé<que
Méthode de Hill (codage)
• Codage (Z/26Z) :
– A : Une Matrice inversible (det != 0) – N : taille d’un bloc
• Exemple :
A =
3 4 5 9 N = 2
Méthode de Hill (Codage)
• Exemple :
BO NJ OU RX BO = 1 14
3 4 1 7 (= H) x =
5 9 14 1 (= B) BONJOUR = HBXQSQNG
Cryptographie symétrique 10
Avantage : Il est très rapide,
Inconvénient : La distribution des clés reste le problème majeur du cryptage conventionnel surtout lorsque le nombre de communicants devient grand.
Texte en clair
A B
Algorithme
Clef secrète
Texte
chiffré Texte
en clair
Algorithme
Cryptographie a clé session :
11
Avantage : Assurer les objectifs de la sécurité.
Inconvénient : très lourd .
Texte en clair
A B
Texte chiffré
Algorithme
Texte en clair
Algorithme
Clef privée de B Clef publique de B
Cryptographie asymétrique
Asymétrique(privée/publique):
Java Cryptography Architecture (JCA)
• Symétrique
– AES : Advanced Encryp<on System
• Asymétrique
– RSA : Rivest, Shamir, Adleman
JCA : cryptage AES
• Générer une clé :
KeyGenerator cle =
KeyGenerator.getInstance("AES");
cle.init(128);
SecretKey secretKey = cle.generateKey();
import javax.crypto.KeyGenerator;
AES (128) DES (56) DESede (168) HmacSHA1 HmacSHA256
JCA : cryptage AES
• Le codeur :
Cipher codeur = Cipher.getInstance("AES");
codeur.init(Cipher.ENCRYPT_MODE, secretKey);
JCA : cryptage AES
• Coder un message :
byte[] texteCode = codeur.doFinal("Mon message".getBytes());
JCA : décryptage AES
codeur.init(Cipher.DECRYPT_MODE,
secretKey, codeur.getParameters());
byte[] texteNonCode =
codeur.doFinal(texteCode);