Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Un petit SSL
Réalisé sous Eclipse Platform
Introduction
I. Fonctionnement du SSL
1. Objectifs ........................................................................................................................... 15
2. Langage ............................................................................................................................ 16
3. Librairies ........................................................................................................................... 16
4. Outil.................................................................................................................................. 16
5. Cahier des charges ........................................................................................................... 16
III. Analyse
4
Table des figures
5
Remerciements
Nous remercions aussi Mme Boya pour ses indications fournis lors de
notre entretient durant la semaine au ski, qui nous as beaucoup aidé.
6
Introduction
Afin de parfaire notre apprentissage et d’appliquer les différentes
notions enseignées, nous devons choisir et mener a bien un projet
informatique durant le 3ème semestre de notre DUT. Ceci nous permet
d’une part d’appliquer les connaissances acquises, et d’autres part
d’avoir une expérience se rapprochant du domaine professionnel où il
nous sera demandé de gérer un travail de groupe, sur une durée
déterminée.
7
I. Fonctionnement du SSL
1. Aspect global
L’objectif de SSL est de vérifier l’identité des parties impliquées dans une
transaction sécurisée et de s’assurer que les données échangées sont
protégées de toute interception ou modification. Les principales fonctions
assurées par SSL sont décrites ci-dessous.
8
Schéma global du SSL :
Cette algorithme est très simple pour l'échange des clefs et le voici décrit:
Soient 2 personnes A et B désirant communiquer sans utiliser une clef
secrète. Pour cela ils se mettent d'accord sur 2 nombres g et n tels que n
soit supérieur à g et g supérieur à 1, et cela sur un canal non sécurisé (il
faut que n soit grand: de l'ordre de 512 ou 1024 bits pour que l'échange
des clefs soit sécurisé). Ils prennent chacun chez eux un nombre
aléatoire:
Ainsi le pirate peut intercepter X, et Y mais il lui est très difficile d'en
9
déduire x et y (c'est sur ce principe que repose la sécurité de
l'algorithme).
Une fois dans son coin, A calcule k=Y^x mod n et B calcule k'=X^y mod
n.
b. L’algorithme RSA
A crée 4 nombres p, q, e et d :
10
2. Distribution des clés :
5. Représentation
11
c. L’algorithme AES
12
Transformation non linéaire d'octets : subBytes
()
L’opération subByte () effectue une substitution d’octet utilisant une table
S-Box. On substitue chaque octet ci du bloc courant avec l’octet contenu
dans la S-Box indexé par les 4bits de poids fort et les 4bits de poids faible
de ci.
La S-Box étant une table constante.
13
Brouillage des colonnes : mixColumns ()
Fonctionnement :
14
Une phase de calcul du condensat
Le prétraitement
Il faut d’abord compléter le message pour qu’il ait une taille compatible
avec les spécifications de l’algorithme SHA-1, soit un multiple de 512 bits.
Il faut ensuite découper le message en bloc de 512 bits. Enfin il faut
initialiser les variables de travail.
Le calcul de haché
II. Recherche
1. Objectifs
L’objectif de notre projet est d’implémenter une connexion client serveur
en utilisé un flux de donnée sécurisé par le système SSL.
15
2. Langage
Le langage qui a été utilisé pour le développement de cette application est
le JAVA car il nous a été imposé. Ce langage n’est pas le mieux adapté
pour les opérations sur les octets, mais il nous a permis d’implémenté très
facilement notre interface client-serveur.
3. Librairies
Les librairies utilisées sont les librairies de base de Java. Plus précisément
Swing et Awt pour l’interface, Net et Utils pour la connexion client serveur,
Io pour les exceptions d’erreur et les flux de données et enfin Math et
Security pour le SSL.
4. Outil
Pour le développement, nous avons utilisé la plateforme Eclipse, open-
source et gratuit.
Le client pourra :
16
Une zone d’affichage de la conversation publique du
chat.
Adresse
Pseudo
Forum
17
III. Analyse
1. Diagramme de classe du SSL
2. Use-Case du SSL
18
3. Les diagrammes de séquence du SSL
Connexion au serveur
19
Déconnexion au server
20
Envoi de sécurisé de données sécurisé SSL
21
4. Les diagrammes de séquences des cas d’exceptions
22
IV. Développement
Nous avons choisit dans la partie développement de ne pas mettre de
source car le code est très lourd. Nous allons donc entreprendre une
explication basé sur le coté programmation de ces algorithme.
Le cryptage RSA
23
La génération des clés
Tout d’abord il faut générer la clé publique car c’est elle et un autre
paramètre qui va nous permettre de créer la clé privée. Pour cela on doit
générer deux nombre premier (p et q) à l’aide de probablePrime() puis
ensuite construire deux autre constantes tel que ( phi = (p-1)*(q-1) et
n=p*q). Ensuite on doit générer un nombre premier tel qu’il ne doit avoir
aucun facteur en commun avec phi. Ce chiffre constituera la clé publique
du RSA. Pour trouver la clé publique on doit trouver un nombre tels que
ed mod phi=1 ce qui revient à faire d= e mod-1phi.
public BigInteger generer_clé_publique (BigInteger p,BigInteger q){
BigInteger e = BigInteger.probablePrime(1000,sr);
while (p.compareTo(e)==-1 && q.compareTo(e)==1) {
e = BigInteger.probablePrime(1000,sr);
}
return e;
}
Le cryptage et le décryptage
Le cryptage AES
24
L’analyse mathématique ayant était bien réalisé nous n’avions plu qu’a
implémenté les différentes fonctions à exécuter et à les inclure dans une
boucle d’un nombre de tour défini par la taille de la clé.
o La transformation SubBytes()
o La transformation ShiftRows()
o La transformation MixColumns()
o La transformation AddRoundKey()
3. Intégrité : SHA1
Le remplissage :
Il s'agit ici d'ajouter des informations au message pour qu'il soit d'une
taille multiple de 512 bits.
Pour ce faire, on ajoute un bit "1" à la fin du message M, puis k zéros, où
k est la plus petite solution non négative de l'équation: l + 1 + k = 448
mod 512 où l est la taille en bit du message.
On ajoute alors un bloc de 64 bits correspondant à la représentation
binaire l.
Le tout est rangé dans un tableau d’octet.
Le découpage :
25
private int h6 = 0x1f83d9ab;
private int h7 = 0x5be0cd19;
h0 = (6a09e667)16
h0 = (0110 1010 0000 1001 1101 0110 0110 0111)2
h0 = (1779029607)10
Calcul du haché
Fonction utilisé :
Détail de l’algorithme
26
M(i) = bloc n°i (m bits), du message M
Pour i = 1 à N
{
3. Pour t = 0 à 79
{
( notée ci-après est la fonction logique, décrite plus haut)
}
4. Calcul des valeurs de hachage intermédiaires
27
4. Développer l’interface
Le client/serveur
Nous avons donc du dans un premier temps établir une connexion multi-
client/serveur cohérente, pour que les différents clients puissent discuter
entre eux. Pour cela, le serveur récupère un message posté dans la boite
au lettre par un client et le redistribue à tout les autres sous forme de
chaine de caractère composé du nom de l’expéditeur et du message
(thomas dit : message). Puis dans un second temps concevoir l’a
connexion privée car lorsque un utilisateur demande une connexion privée
le serveur crée un nouvelle tache spécifique entre les deux clients
concernés permettant d’exclure complètement les autres utilisateurs de
cette conversation.
L’interface graphique
Les interfaces graphiques client et serveur devaient présentées certains
composants obligatoires. Pour cela nous avons du utilisé des classes
contenu dans les librairies java Awt et Swing tels que les JFrame, JPanel ,
JButton, JList, JTextArea, JTextField et JCheckBox.Ces composant
graphique ont été placé sur la frame à l’aide d’un BorderLayout
permettant de placer les composant sur la page en fonction d’un attribut
de placement (South, North, east, west).
28
(Figure 15 et 16) Aperçu fenêtre client et fenêtre serveur
29
5. Problèmes rencontrés
Les différents problèmes que nous avons rencontrés sont :
La sécurité de l’algorithme
30
Conclusion
Pour conclure, nous pouvons dire que la réalisation de ce projet nous
appris beaucoup de choses sur les problèmes de sécurité informatique, de
sécurité des données ainsi que sur l’échange de données sensible via une
communication client/serveur. Nous avons dut apprendre comment
résoudre ces problèmes et apporter des solutions fonctionnelles.
Enfin ce projet nous a permis d’appliquer les connaissances qui nous ont
été inculquées au cours de ces deux années de DUT Informatique à l’IUT
de Montpellier. Nous avons été confrontés à de nombreux problèmes nous
forçant à trouver des solutions alternatives afin de les résoudre. Enfin ce
projet aura été l’occasion de nous faire tester et utiliser pleinement les
compétences acquises au cours de ces deux années.
31
Références
SSL :
o http://fr.wikipedia.org/wiki/Secure_Socket_Layer
Java :
o http://java.developpez.com/faq/java/
o « La programmation objet en Java » par Michel Divay aux éditions
Dunod
AES :
o http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
o http://dra13-1-82-229-12-
107.fbx.proxad.net/telechargements/fgc/annexes/fgc_annexe_1.
pdf
o http://crypto.freezee.org/aes/aes_report.html
SHA1 :
o http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf
o http://fr.wikipedia.org/wiki/Sp%C3%A9cifications_SHA-256
RSA :
o http://www.dma.ens.fr/culturemath/maths/pdf/nombres/RSA.pdf
o http://sebsauvage.net/comprendre/encryptage/crypto_rsa.html
Diffie Hellman :
o http://mantis.free.fr/articles/diffie.htm
o http://en.wikipedia.org/wiki/Diffie-Hellman
32
Glossaire
Mots : Ensemble de 4 octets rangés dans un tableau.
Anneau : On appelle anneau tout triplet constitué d'un ensemble non vide
et de deux lois de compositions internes et sur G qui vérifient :
33
Résumé
Dans ce dossier nous cherchons à expliquer le fonctionnement d’un
système sécurisé d’envoi de donnée de type SSL en détaillant clairement
les différents processus utilisé dans une telle cryptographie. Tout d’abord
nous expliquons indépendamment chacun des algorithmes de cryptage en
nous penchant sur leur aspect mathématique ,pour ensuite nous pencher
plus précisément sur l’analyse de type UML et le développement de
l’application et sur la mise en place de l’envoi sécurisé. Ce développement
est divisé en deux points : la création de l’algorithme de cryptage et la
conception de l’interface utilisateur permettant son utilisation. Enfin nous
proposons une solution d’application simple mettant en place ce type
d’échange.
Resume
In this case we seek to explain how a secure system for sending data type
SSL clearly detailing the various processes used in such as cryptography.
First we explain each regardless of encryption algorithms in focusing on
their mathematical aspect, and then turn our attention more specifically
on the type UML analysis and development of application and on the
establishment of the consignment Secure. This development is divided
into two areas: the creation of the encryption algorithm and user interface
design for use. Finally we propose a simple solution for setting up such
exchanges.
34