Vous êtes sur la page 1sur 88

Sécurité des Systèmes et Réseaux avancé

Chapitre 0 Introduction

M. Remane NIZAR
PhD student in Coding, Cryptology, Algebra and application of UCAD
Data science, IA and IOT engineer of UVS - ATOS
Information System Security engineer of ESP
remane.nizar@ucad.edu.sn
Master 1 Réseaux télécommunications
Deuxieme semestre

ISI 2022 - 2023

3 mai 2023

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT1 /engine
88
Plan
1 Matériels et Outils du cours
2 Objectifs du cours
3 Introduction à la Sécurité des Systèmes et réseaux
4 Cryptographie
5 Génération des clés
Génération des clés symétrique(secrète)
KeyGenerator
PBE : SecretKey
Génération des clés asymétrique(publique)
6 CHIFFREMENT SYMÉTRIQUE
Chiffrement par flux
Chiffrement par bloc
7 CHIFFREMENT ASYMETRIQUE
RSA : Chiffrement- Déchiffrement
Diffie- Hellman
Signature numérique
8 DSA avec JCE : Paire de clés
9 Signature avec JCE
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT2 /engine
88
Matériels et Outils du cours

Wireshark

Free portscanner

Filezilla client

Packet Tracer dernière Version

Kali Linux

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT3 /engine
88
Metasploitable 2

Machines virtuelles pour la Sécurité

Firewall ASA

Pfsense

Langage Java

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT4 /engine
88
Objectifs du cours

Objectif général du cours


L’objectif de ce cours est de permettre aux étudiants de maitriser
la sécurité des systèmes et réseaux.

Objectifs spécifiques
Comprendre les concepts de bases de la sécurité ;
Acquérir les connaissances théoriques et techniques indispensables
dans le domaine de la sécurité des réseaux et systèmes ;
Concevoir, implémenter et prendre en charge la sécurité des
réseaux et systèmes ;
Développer un esprit critique et des compétences en matière de
résolution des problèmes de sécurité.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT5 /engine
88
1. Introduction à la Sécurité des Systèmes et
réseaux

Introduction
Dans cette première section du chapitre on va plus s’intéresser au
généralité de la sécurité des SI ;
Système d’Information (SI) est un ensemble organisé de ressources
(matériels, logiciels, personnel, données et procédures) qui permet de
regrouper, de classifier, de traiter et de diffuser de l’information
sur un phénomène donné ;
La sécurité des systèmes d’information (SSI) est l’ensemble des
moyens techniques, organisationnels, juridiques et humains
nécessaire et mis en œuvre afin d’assurer la protection :
Des informations (données)
Du matériel
Des logiciels

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT6 /engine
88
L’objectif général de sécurité de SI est d’assurer la continué des
activités d’une entreprise dans des bonne conditions ;
La gestion de la la SSI englobe à la fois la gestion de la sécurité
et de la sureté
La sécurité des systèmes d’information rentre premièrement dans
un maillon plus large qu’on appelle l’administration des réseaux
informatiques ;
Est un domaine assez vague, dans le quelle une sous partie est la
sécurité des systems d’information ;
Cette sécurité est né du faite qu’on s’est redu compte que depuis
quelques années les entreprises ont besoin de s’ouvrir à
l’extérieur ;
Donc ils ont besoin d’ouvrir leurs :
Réseaux
Ressources
Données
Lorsqu’on s’ouvre à des entité externe, il est susceptible d’avoir
des menaces.
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT7 /engine
88
Menaces
Une menace, dans le contexte de la sécurité informatique , se
réfère à tout ce qui a le potentiel de causer de graves dommages
à un système informatique
Les menaces sont susceptibles de transformer des vulnérabilités en
attaques contre des systèmes informatiques, des réseaux, etc.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT8 /engine
88
Les principales menaces effectives auxquelles un système
d’information(SI) peut être confronté sont liées par :
Un utilisateur du système : l’énorme majorité des problèmes liés à
la sécurité d’un système d’information est l’utilisateur,
généralement insouciant( programme interne) ;
Un programme malveillant : un logiciel destiné à nuire ou à
abuser des ressources du système est installé (par mégarde ou par
malveillance) sur le système, ouvrant la porte à des intrusions ou
modifiant les données ;
Une personne malveillante : une personne parvient à s’introduire
sur le système, légitimement ou non, et à accéder ensuite à des
données ou à des programmes auxquels elle n’est pas censée avoir
accès en utilisant par exemple des failles connues et non corrigées
dans les logiciels(programme externe).

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai IA
2023
and IOT9 /engine
88
Programmes malveillants
Un programme malveillant (malware en anglais) est un logiciel
développé dans le but de nuire à un système informatique.
Virus : programme se dupliquant automatiquement sur le même
ordinateur. Il peut être transmis à un autre ordinateur par
l’intermédiaire du courrier électronique ou par l’échange de
données ;
Ver (worm) : exploite les communications réseaux d’un
ordinateur afin d’assurer sa reproduction sur d’autres ordinateurs ;
Cheval de Troie (trojan) : programme à apparence légitime
(voulue) qui exécute des routines nuisibles sans l’autorisation de
l’utilisateur ;
Porte dérobée (backdoor) : permet d’ouvrir d’un accès réseau
frauduleux sur un système informatique. Il est ainsi possible
d’exploiter à distance la machine ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
10 /engine
88
Logiciel espion (spyware) : fait de la collecte d’informations
personnelles sur l’ordinateur d’un utilisateur sans son
autorisation. Ces informations sont ensuite transmises à un
ordinateur tiers ;
Enregistreur de frappe (keylogger) : programme généralement
invisible installé sur le poste d’un utilisateur et chargé
d’enregistrer à son insu ses frappes clavier ; pour intercepter des
mots de passe par exemple.
Exploit : programme permettant d’exploiter une faille de sécurité
d’un logiciel ;
Rootkit : ensemble de logiciels permettant généralement
d’obtenir les droits d’administrateur sur une machine, d’installer
une porte dérobée, de truquer les informations susceptibles de
révéler la compromission, et d’effacer les traces laissées par
l’opération dans les journaux système.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
11 /engine
88
Provenance de menace

Figure – Provenance de menace

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
12 /engine
88
Les menaces qui viennent à l’intérieur sont généralement souvent
due le faite q’un utilisateur ne sait pas utiliser le système(il s’est
mal déconnecter et un autre utilisateur qui était dans l’entreprise peut
utiliser ces ressources pour faire certains choses ) ;
Les menaces qui viennent de l’extérieurs sont souvent sophistiqués
par ce qu’on se protège le plus souvent vis à vis de l’extérieur plus
tôt que l’intérieur ;
On conçoit des firwall les plus puissants possibles pour détecter,
bloquer des comportement anormaux ;
Généralement les donnés peuvent provenir de l’extérieur (external
threat) et de l’intérieur(Internal threat) ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
13 /engine
88
Risques liés à la sécurité des systèmes d’information
Étant donnée qu’avec le développement de l’utilisation d’internet,
Les entreprises ouvrent leur système d’information à :
Leurs partenaires
Leurs fournisseurs
Elles ne sont plus au niveau de l’architecture trois tiers ou n-tiers.
Il devient donc nécessaire de connaître les ressources de l’entreprise
à:
Protéger
Et de maîtriser le contrôle d’accès
Et les droits des utilisateurs du système.
En revanche, la sécurité est un compromis entre coûts, risques et
contraintes.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
14 /engine
88
Risque : c’est la probabilité qu’une menace exploite une
vulnérabilité. Autrement dit, c’est une possibilité qu’un fait
dommageable se produise.
Vulnérabilité : c’est une faiblesse inhérente à un système (software
ou hardware).
Appelée parfois faille ou brèche, elle représente le niveau d’exposition
face à la menace dans un contexte particulier.
Est une faille dans un système qui peut être utilisée comme un moyen
d’attaque ;
Faille de sécurité : est une faiblesse dans unprogramme ou
équipement , qui pourrait permettre à un attaquant de
compromettre l’intégrité, la disponibilité ou la confidentialité ;
Menace : c’est le danger (interne ou externe) tel qu’un hacker, un
virus, etc.
Contre-mesure : c’est un moyen permettant de réduire le risque
dans une organisation.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
15 /engine
88
Types des risques
RISQUES HUMAINS
Ce sont les plus importants, même s’ils sont le plus souvent ignorés
ou minimisés.
Ils concernent les utilisateurs mais également les informaticiens eux
mêmes.
On peut citer :
La maladresse : commettre des erreurs ou exécuter de
traitement non souhaité, ou effacer involontairement des
données ou des programmes ; etc.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
16 /engine
88
L’inconscience et l’ignorance : introduire des programmes
malveillants sans le savoir (par exemple lors de la réception du
courrier).
La malveillance : Certains utilisateurs peuvent volontairement
mettre en péril le système d’informations, en y introduisant en
connaissance de cause des virus ou des vers en introduisant
volontairement des mauvaises informations dans une base des
données. On parle même de la (cybercriminalité) ;
L’ingénierie sociale : Une méthode qu’on utilise pour obtenir des
informations d’une personne confidentielles, que l’on n’est pas
normalement autorisé à obtenir, en vue de les exploiter à
d’autres fins.
L’espionnage Est un moyen employer sur tout aux industriels
pour obtenir des information sur les activités
concurrentes(procédés de fabrication, projets en cours, futurs
produits, politique de prix, clients et prospects, etc.)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
17 /engine
88
RISQUES MATERIELS
Ils sont liés aux défauts et pannes inévitables que connaissent tous
les systèmes matériels et logiciels.
On peut citer :
Les incidents liés au matériel : la plupart des composants
électroniques modernes produits en grandes séries, peuvent
comporter des défauts de fabrication. Ils finissent un jour ou
l’autre par tomber en panne.
Les incidents liés au logiciel : Ce sont les plus fréquents.
? Les systèmes d’exploitation et les programmes sont de plus en
plus complexes car ils font de plus en plus de choses.
? Ils nécessitent l’effort conjoint de milliers de développeurs.
Les incidents liés à l’environnement : les machines électroniques
les réseaux de communication sont sensibles aux variations de
températures ou de l’humidité ainsi qu’aux champs
électromagnétiques.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
18 /engine
88
Précautions à prendre
Dans le cas des risques matériels il est possible de se prémunir :
Redondance des matériels : Est la duplication de composants ou
de fonctions critiques d’un système dans le but d’augmenter la
fiabilité du système, sous la forme d’une sécurité intégrée, ou pour
améliorer les performances réelles du système,
Dispersion des sites : Un accident (incendie, tempête, tremblement
de terre, attentat, etc.) a très peu de chance de se produire
simultanément en plusieurs endroits distants.
Procédures de contrôle indépendants : ils permettent bien souvent
de déceler les anomalies avant qu’elles ne produisent des effets
dévastateurs. Il est possible de réaliser des audits de sécurité.
Sécurité et Sureté
Sécurité : est la capacité d’un systeme de lutter contre les actes
de malveillance ;
Sureté : est la capacité d’un système de lutter contre les accidents

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
19 /engine
88
Risques et Menaces de messagerie électronique
Pourriel (spam) : un courrier électronique non sollicité, la plupart du
temps de la publicité. Ils encombrent le réseau, et font perdre du
temps à leurs destinataires ;
Ransomwares (rançongiciels) : (contraction de rançon et de logiciel)
il s’agit des virus les plus répandus actuellement.
Le principe de cette infection est le suivant :
? Caché dans une pièce jointe, un programme malveillant
? Chiffre les documents stockés dans l’ordinateur qui a été le premier
infecté.
Hameçonnage (phishing) : un courrier électronique dont
l’expéditeur se fait généralement passer pour un organisme
financier et demandant au destinataire de fournir des informations
confidentielles ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
20 /engine
88
Risques et Menaces sur le réseau
Écoutes (sniffing) : Technique permettant de récupérer toutes
les informations transitant sur un réseau (on utilise pour cela un
logiciel sniffer). Elle est généralement utilisée pour récupérer les
mots de passe des applications et pour identifier les machines
qui communiquent sur le réseau.
Usurpation d’identité (spoofing) : technique consistant à prendre
l’identité d’une autre personne ou d’une autre machine. Elle est
généralement utilisée pour récupérer des informations sensibles,
que l’on ne pourrait pas avoir autrement.
Déni de service (denial of service) : technique visant à provoquer
des interruptions de service, et ainsi d’empêcher le bon
fonctionnement d’un système. Il peut y avoir des tentatives
d’extorsion de fond : menacer de stopper l’activité d’une entreprise.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
21 /engine
88
Types d’attaques réseaux
Une attaque des systèmes d’information est toute tentative
d’accès non autorisé un système d’information dans le but de
causer des dommages.
Les attaques des systèmes d’information visent à désactiver,
perturber, détruire ou contrôler des systèmes informatiques ou à
modifier, bloquer, supprimer, manipuler ou voler les données contenues
dans ces systèmes.
Les attaques dans les réseaux viennent souvent dans un système
après analyse de risque et qu’on a trouvé une vulnérabilité ;
On peut classer les types d’attaque par quatre catégories :

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
22 /engine
88
Déni de service(DDoS) : Ce sont les attaque le plus difficile souvent
à rencontrer, car ce sont des attaques qui sont intrinsèquement liés au
fonctionnement des protocoles ;
Malwares : Les attaques par logiciels malveillants sont le type de
cyberattaque le plus courant
Injections SQL : Une attaque par injection SQL (Structured Query
Language) se produit lorsque des cybercriminels tentent d’accéder à la
base de données en téléchargeant des scripts SQL malveillants.
Exploitation de type "zero-day” : Une attaque de type "zero-day"
se produit lorsque la vulnérabilité d’un logiciel ou d’un matériel est
annoncée et que les cybercriminels exploitent cette vulnérabilité avant
qu’un correctif ou une solution ne soit mis en œuvre.
On pourra diviser la sécurité en quatre grand catégories :
L’analyse des risques(audit)
La définition d’une politique de sécurité(document écrit)
La mise en place de techniques de sécurité(Pare-feu, DMZ)
La mise en place de tests de vérification

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
23 /engine
88
Politique de sécurité
Une politique de sécurité informatique est une stratégie visant à
maximiser la sécurité informatique d’une entreprise.
Elle est matérialisée dans un document qui reprend l’ensemble des
enjeux, objectifs, analyses, actions et procédures faisant parti de
cette stratégie.

Sécurité du système d’information en général


La mise en place d’une politique de sécurité informatique n’est
que l’une des nombreuses mesures possibles pour assurer la
sécurité du système d’information de l’entreprise.
Voici quelques unes des meilleures pratiques en matière de sécurité
informatique pour une entreprise :
une bonne maintenance du parc informatique : des solutions
adaptées et évolutives ;
une responsabilisation du personnel ;
la formation du personnel aux bonnes pratiques informatiques ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
24 /engine
88
l’utilisation d’outils permettant d’être prêt face aux attaques
informatiques (tels que antivirus, antispam, pare-feux etc.) ;
le contrôle des accès Internet de l’entreprise ;
le contrôle des accès aux informations de l’entreprise, et
notamment aux informations sensibles ;
l’hébergement des données dans des environnements sécurisés et
monitorés ;
la mise en place de sauvegardes adaptées, sécurisées, redondées.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
25 /engine
88
Les 8 bonnes pratiques pour mettre en place une
politique de sécurité informatique

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
26 /engine
88
La politique de sécurité réseau vise à satisfaire les critères suivants :
Intégrité(garantie que les donner n’ont pas été modifier au cours de la
transaction ) ;
Confidentialité(garantie que seules les personnes autorisé peuvent
recéder aux ressources ) ;
Disponibilité(garantie que matériels et logiciels sont disponibles pour
les personne en cas des besoins et ressources ) ;
Non répudiation(garantie qu’une transaction ne peut pas être nié par
les deux entités ) ;
Authentification(garantie l’identité des entités communicantes) ;
Autorisation : Information permettant de déterminer quelles sont les
ressources de l’entreprise aux quelles l’utilisateur identifié et autorisé a
accès, ainsi que les actions autorisées sue ces ressources.
Ce la couvre toutes les ressources de l’entreprise
Objectifs de sécurité est de contrer des risques identifiés et/ou de
satisfaire à des politiques de sécurité organisationnelle.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
27 /engine
88
2. Cryptographie

• Cryptographie ou science du secret est l’art de rendre intelligible de


chiffrer, de coder un message à ceux qui ne sont pas habilité à en prendre
connaissance.
• Science existait depuis 3000 ans avant JC.
• Types de la cryptographie existant (Classique, Moderne, Quantique
et à base d’ADN)
• Cryptologie n’est pas la sécurité mais il n’ya pas de sécurité sans la
cryptologie
• Cryptographie est une science qui met en place des outils et techniques
pour participer à la sécurisation des données et des infrastructures afin de
construire des systèmes sûrs et sécurisés.
C’est dans ce cadre qu’une architecture de cryptographie appelé JCE fut
ajoutée au JDK de JAVA depuis la version 1.4

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
28 /engine
88
• Permettant l’implémentation de la plupart des primitives
cryptographiques au respect de certaines spécifications.

1 Avec java la sécurité revêt de nombreux aspect :


• API JCE permet d’utiliser des technologies de cryptographie
• API JSSE permet d’utiliser le réseau au travers des protocoles
sécurisés SSL ou TLS
• API JAAS propose un service pour gérer l’authentification et les
autorisations d’un utilisateur.
2 Java est un langage de programmation Orienté Objet simple,
distribué, sécurisé et trop technique.
3 La premier version est sortie en 1995 appelé Version alpha chez SUN
avec un projet dirigé par Jemes Gosling appelé projet OAK puis la
version 1.0 est sortie en 1996.
Sun est racheté par Oracle corporation le 20 avril 2009.
Depuis sa conception, la sécurité dans le langage java a toujours été
une grande préoccupation pour SUN et maintenant pour Oracle.
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
29 /engine
88
• Java utilise l’architecture des technologie suivante :
? Machine Virtuelle(JVM) ;
? Ramasse miette(Garbage collector) ;
? Evironnement d’execution Java(JRE) ;
? Application programming Interface(API) ;
? Outils de developpement Java(JDK).
• Différence entre le JDK et le JRE est :
JRE = JVM + bibliothèque de classe
JDK = JRE + outils de développement

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
30 /engine
88
API Java
• API est un acronyme qu’on trouve régulièrement dans le développement
qui veut dire en anglais Appliction Programming Interface, qui signifie
en français une Interface de programmation pour les applications.
• Java est un langage riche en classe prédéfini c’est à dire ce sont des
trousses pour créer des programmes très avancé.
• Classe sont regroupées en des catégories, ces catégories sont regroupés en
des bibliothèques ce qu’on appelle bibliothèque de classe ou bien API Java

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
31 /engine
88
API pour la sécurité
Un ensemble des packages qui permettent d’écrire des programmes
sécurisés en java
Exemple
1 java.security
2 Java. security.cert
3 java.security.interfaces
4 java.security.spec
5 javax.crypto
6 javax.crypto.interfaces
7 javax.crypto.spec

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
32 /engine
88
Classes et Interfaces de concepts cryptographiques
Clé 1 Chiffrement
1 java.security.Key javax.crypto.Cipher
2 java.security.PrivateKey 2 Génération des nombre
3 java.security.PublicKey aléatoire
4 javax.crypto.SecretKey java.security.SecureRandom
5 3 Condensé du texte
javax.crypto.SecretKeyFactory java.security.MessageDigest
6 4 Signature :
java.security.KeyPairGenerator java.security.Signature
7 javax.crypto.KeyGenerator 5 Certificat :
8 java.security.KeyFactory java.security.cert.Certificate
9 javax.crypto.KeyAgreement 6 Message d’authentification
Application javax.crypto.Mac

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
33 /engine
88
Java Cryptography Architecture(JCA) : Concept
• JCA est le nom de la conception interne de l’API de cryptographie Java.
• API JCA (Java Cryptography Architecture) a pour but de fournir des
fonctionnalités cryptographiques de base à la plate-forme Java.
• java.security est le package principal de JCA
• API JCA utiliser des services cryptographiques sans se préoccuper de
l’implémentation des algorithmes.
• Framework qui permet d’utiliser des fonctionnalités cryptographique
comprenant plusieurs services assuré par les algorithmes de :

1 Chiffrement (Sym/Asym, Bloc/Stream)


2 Génération de nombres aléatoires sûrs
3 Génération et management de clés
4 Message Disgest (MD)
5 Signature électronique
6 Gestion de certificats électroniques et Keystores
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
34 /engine
88
Java Cryptography Extension(JCE) : Concept
API JCE (Java Cryptography Extension) est un ensemble d’API
structuré suivant le package principale : javax.crypto pour :
1 Chiffrement (Sym/Asym, Bloc/Stream)
2 Création de clés à partir de mot de passe Password Based
Encryption(PBE)
3 Partage (Établissement commun) de clé sans échange de
données secrètes (Key Agreement)
4 Vérification de l’intégrité de données (MAC) HMAC =
SecretKey + Hash

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
35 /engine
88
Java Cryptography Extension(JCE) : Principe
• JCE a été développée comme une extension du JDK 1.2.
• JCE est intégré à Java SE à partir de la version 1.4.
• Il n’ya pas de veritable difference entre JCA et JCE depuis jdk1.4
• JCE a la même architecture et même principes que JCA, peut être vu
comme une partie de JCA.

Provider
• fournisseur des services ce qui fait qu’un provider cryptographique est
un ensemble de classes qui implémentent des algorithmes cryptographiques
offrant des services cryptographique.
• Structuré en un ou plusieurs packages(JAVA) qui implémentent
concrètement une ou plusieurs procédures cryptographiques.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
36 /engine
88
• Fournit les algorithmes pour les classes de concept cryptographique.
Exemples : SunJCE, Cryptix, IAIK, JSAFE, JCP ou Sun JCE est le
premier fournisseur dont il presente des nombreux extensions qu’on peut les
affricher dans le dossier d’installation de java.

Cryptographic Service Provier (CSP)


1 Provider étend la classe abstraite java.security.Provider
2 Avec les providers(fournisseur de service) On peut afficher ou donner :
Nom du provider en redéfinissant la méthode getName() ;
Version en redéfinissant la méthode getVerssion() ;
Tous les informations nécessaire du provider en redéfinissant la
méthode getInfo() ;
Tous les services qu’il prend en compte en redéfinissant la méthode
Méthode getService().

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
37 /engine
88
Cryptographic Service Provier : Concept
Jdk dispose par défaut plusieurs providers installés et enregistrés suivant un
ordre de préférence établis dans le fichier
< java - home >\ jre\ lib \ security \java :security
Exemple

1 security.provider.1=sun.security.provider.Sun
2 security.provider.2=sun.security.rsa.SunRsaSig
3 security.provider.3=com.sun.net.ssl.internal.ssl.Provider
4 security.provider.4=com.sun.crypto.provider.SunJCE

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
38 /engine
88
Accès aux Services implémentés du providre
Pour accéder aux services implémenter, on doit utiliser l’instance d’un
service ou engine :

1 Static ClassDuService getInstance(String algorithm)


2 Static ClassDuService getInstance(String algorithm, String
provider)
3 Static ClassDuService getInstance(String algorithm, Provider
provider)
Exemple
• MessageDigest md = MessageDigest.getInstance("MD5",
"SunJCE")
• MessageDigest md = MessageDigest.getInstance("MD5").
getInstance(String algorithm) recherche au niveau des providers une
implémentation de l’algorithme demandé en suivant l’ordre de référence
établi dans le fichier java.security.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
39 /engine
88
Installation et enregistrement du provider
1 Installation
2 possibilités pour installer un provider
• Déposer le jar du provider dans un répertoire et le préciser dans le
classpath
• Déposer le jar du provider dans le répertoire d’extension du jre :
< java - home >/jre/lib/ext.
Le provider sera considérer comme une extension du jre
2 Enregistrement(Activation)
Définir un ordre de préférence pour le provider dans le fichier
< java - home > /jre/lib/security/java :security
security.provider.n=Classe.principale.du.provider
Exemple :
security.provider.4=com.sun.crypto.provider.SunJCE

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
40 /engine
88
Résume
• JCE/JCA = Java Cryptographie Extension 1 Java Cryptographie
Architecture
• Un Provider implémente les interfaces spécifiées par les packages
JCE/JCA
• Javax.crypto. fournit les classes et les interfaces pour effectuer des
opérations cryptographiques sur les algorithmes symétriques
• Java.security. fournit les classes et les interfaces pour le framework de
sécurité Java. Elles permettent entre autres de faire :
? La génération de nombres aléatoire
? Le calcul de digests
? des signatures à l’aide d’algorithmes asymétriques

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
41 /engine
88
Figure – Design Principe

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
42 /engine
88
Génération des clés

Interface
java.security.Key
L’interface qui encapsule une clé cryptographique.
java.security.PrivateKey
L’interface qui encapsule une clé privée
java.security..PublicKey
L’interface qui encapsule une clé publique
javax.crypto.SecretKey
L’interface qui encapsule une clé secrète

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
43 /engine
88
Méthodes à implémenter pour l’interface Key

getAlgorithm() : retourne un String représentant le nom de


l’algorithme utilisé pour la génération de la clé.
getFormat() : retourne un String représentant le nom du format de la
clé
getEncoded() : retourne un tableau de byte représentant la valeur de
la clé codée suivant le format précisée.

Exemple de format d’une clé


X.509 : Standard de syntaxe d’information de clé publique conçu par
l’Union internationale des télécommunications pour les
infrastructures à clé publique.
PKCS : Standard de syntaxe d’information de clé privée conçu par les
laboratoires RSA.
RAW : Standard de syntaxe d’information de clé secrète.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
44 /engine
88
Génération d’une clé Secrète

Figure – Génération des clé

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
45 /engine
88
Générateur de nombres pseudo-aléatoires
cryptographiquement sécurisé

Engine : KeyGenerator
1 Récupération d’une instance de KeyGenerator
getInstance(String algorithm)
getInstance(String algorithm, Provider provider)
getInstance(String algorithm, String provider)
2 Initialisation du KeyGenerator (Facultative mais intéressante)
init(int keysize)
init(SecureRandom random)
init(int keysize, SecureRandom random)
3 Génération de la SecretKey
public final SecretKey generateKey()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
46 /engine
88
Interface : SecretKey
1 Méthodes de SecretKey
String getAlgorithm()
String getFormat()
byte[] getEncoded()
2 Sérialisation : L’interface SecretKey est sérialisable.
Enregistrer la SecretKey dans un fichier à l’aide d’un
ObjectOutputStream
Plus tard récupérer la SecretKey à l’aide d’un ObjectInputStream

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
47 /engine
88
PBE : SecretKey à partir de mot de passe

Password Based Encryption : PBE


Objectif
Créer une clé cryptographiquement sure à partir de mot de passe.
Réduire l’efficacité d’une attaque par dictionnaire

1 Spécification de clé PBE


password en char [ ]
salt en byte [ ] : donnée de préférence aléatoire concaténée au password
un nombre d’itérations : nombre d’application d’un MD sur password +
salt
2 Une Factory de SecretKey PBE
Engine : SecretKeyFactory
Instance : 1 des 3 getInstance(· · · )
Methode : SecretKey generateSecret(KeySpec keySpec)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
48 /engine
88
PBE : SecretKey à partir de mot de passe

1 Spécification de clé PBE


PBEKeySpec aPBEKeySpec = new PBEKeySpec(password, salt,
iteration) ;
2 Une Factory de SecretKey SecretKeyFactory
aSecretKeyFactory =
SecretKeyFactory.getInstance("PBEWITHSHAAND256BITAES-CBC-
BC") ;
SecretKey aSecretKey =
aSecretKeyFactory.generateSecret(aPBEKeySpec) ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
49 /engine
88
Générateur de paire de clés(Clé privée et clé
publique)
java.security.KeyPairGenerator
Une instance de cette classe est créée à l’aide de l’une des méthodes de
factory suivantes :
public static KeyPairGenerator getInstance( String algorithm ) throws
NoSuchAlgorithmException
public static KeyPairGenerator getInstance(String algorithm, Provider
provider) throws NoSuchAlgorithmException
public static KeyPairGenerator getInstance(String algorithm, String
provider) throws NoSuchAlgorithmException,
NoSuchProviderException
Le paramètre "algorithm" peut être remplacer par :
"RSA" exemple de provider "SUN"
"DH" exemple de provider "SunJCE"
"DSA" exemple de provider "SUN"
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
50 /engine
88
CHIFFREMENT SYMÉTRIQUE

Bloc
Chiffre ou déchiffre par bloc de bits de taille fixe Exemple : DES,
SERPENT, AES, BLOWFISH · · ·

Flux
Chiffre ou déchiffre des flux de bits. Opère par 1 bit ou 1 byte Exemple :
RC4, A5, ORYX, SEAL · · ·

NB
En mode CFB et OFB le chiffrement par blocs peut opérer comme un
chiffrement de flux

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
51 /engine
88
Block cipher : Mécanismes de padding

La JCA supporte les mécanismes de padding suivant :


NoPadding : Pas de padding
ISO10126Padding : Définit par le W3C
OAEPPadding (Optimal Asymmetric Encryption Padding) : définit
dans PKCS1*
PKCS1Padding : définit dans PKCS1

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
52 /engine
88
Block cipher : Mécanismes de padding

PKCS5Padding : Généralement utilisé pour le Chiff. Sym. définit


dans PKCS5
SSL3Padding : Définit pour le protocole SSL V3

NB
Quelque soit le mécanisme de padding, l’information sur le nombre de byte
ajouté doit être incluse dans le padding
*PKCS : Public-Key Cryptography Standards. RSA Laboratories

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
53 /engine
88
Block cipher : Mécanismes de padding
PKCS5Padding
Généralement utilisé pour le chiffrement symétrique
Code le nombre de bytes ajoutés dans les padding bytes

Figure – Pading

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
54 /engine
88
Bloc Cipher : Modes d’opération

La JCA supporte les modes d’opération suivant :


NONE
Electronic Codebook (ECB)
Cipher Block Chaining (CBC)
Cipher Feedback (CFB)
Output Feedback (OFB)
Counter (CTR)
Cipher Text Stealing (CTS)
Propagating Cipher Block Chaining (PCBC)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
55 /engine
88
Bloc Cipher : Modes d’opération

Electronic Codebook (ECB)

Figure – ECB

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
56 /engine
88
Bloc Cipher : Modes d’opération

Cipher Block Chaining (CBC)

Figure – CBC

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
57 /engine
88
Bloc Cipher : Modes d’opération

Cipher Feedback (CFB)

Figure – CFB

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
58 /engine
88
Bloc Cipher : Modes d’opération

NB
En mode CFB et OFB l’algorithme de chiffrement peut opérer sur un
nombre de bits inférieur à la taille normale de bloc
Pour cela spécifier CFBn à la place de CFB Avec n représentant le nombre
de bits à traiter à la fois

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
59 /engine
88
Engine Cipher

Récupération d’une instance de Cipher


1 des 3 méthodes getInstance(String transformation, · · · ) Avec
transformation :
”algorithm”
”algorithm/mode/padding”

Exemple
Cipher aCipher = Cipher.getInstance("AES") ;
Cipher aCipher = Cipher.getInstance("AES/ECB/PKCS5Padding") ;
Cipher aCipher = Cipher.getInstance("AES/OFB8/NoPadding") ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
60 /engine
88
Engine Cipher

Initialisation du Cipher (Obligatoire)


init(int opmode, Key)
opmode : ENCRYPT MODE , DECRYPT MODE, WRAP MODE,
UNWRAP MODE
init(int opmode, Key, SecureRandom)
init(int opmode, Key, AlgorithmParameters)
init(int opmode, Key, AlgorithmParameters, SecureRandom)
init(int opmode, Key, AlgorithmParameterSpec)
init(int opmode, Key, AlgorithmParameterSpec, SecureRandom)
AlgorithmParameterSpec : PBEParameterSpec, IvParameterSpec

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
61 /engine
88
Engine Cipher

Chiffrer et déchiffrer
Petit volume de données
Traiter d’un seul coup
public final byte[] doFinal(byte[] input)
Grand volume de données
Traiter en plusieurs coups
public final byte[] update(byte[] input)
Finir avec
public final byte[] doFinal()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
62 /engine
88
Classes utilitaires : CipherInputStream

Utilité
Chiffrer ou déchiffrer des fichiers

Utilisation de CipherInputStream
FileInputStream fis = new FileInputStream("fichier ini") ;
FileOutputStream fos = new FileOutputStream("fichier final") ;
CipherInputStream cis = new CipherInputStream(fis, aCipher) ;
byte[] buffer = new byte[16] ; int nbBytesLu = 0 ;
while ((nbBytesLu = cis.read(buffer)) != -1) fos.write(buffer, 0,
nbBytesLu) ;
fis.close() ;
fos.close() ;

NB
fichier final est la transformation à l’aide de aCipher de fichier ini
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
63 /engine
88
Classes utilitaires : CipherOutputStream

Utilité
Chiffrer ou déchiffrer des fichiers

Utilisation de CipherOutputStream
FileInputStream fis = new FileInputStream("fichier ini") ;
FileOutputStream fos = new FileOutputStream("fichier final") ;
CipherOutputStream cos = new CipherOutputStream(fos, aCipher) ;
byte[] buffer = new byte[16] ; int nbBytesLu = 0 ;
while ((nbBytesLu = fis.read(buffer)) != -1) cos.write(buffer, 0,
nbBytesLu) ;
fis.close() ;
fos.close() ;

NB
fichier final est la transformation à l’aide de aCipher de fichier ini
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
64 /engine
88
Protection de la SecretKey

Protéger la SecretKey en chiffrant son contenu


Cipher : WRAP MODE
Initialisation d’un cipher en WRAP MODE
Appel à : public final byte[] wrap(Key key)
Cipher : UNWRAP MODE
Initialisation d’un cipher en UNWRAP MODE
Appel à : public final Key unwrap(byte[] wrappedKey, String
wrappedKeyAlgorithm, int wrappedKeyType)
wrappedKeyAlgorithm : Algorithme de la SecretKey
wrappedKeyType : Cipher.SECRET KEY

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
65 /engine
88
SealedObject

Sceller une SecretKey en la chiffrant


Sceller la SecretKey avec un SealedObject
Enregistrer la SecretKey Scellée dans un fichier avec
unObjectOutputStream
Plus tard récupérer la SecretKey Scellée avec un ObjectInputStream
Retrouver la SecretKey à partir de SecretKey Scellée

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
66 /engine
88
SealedObject

Scellement
SealedObject sealedSK = new SealedObjec(aSecretKey, aCipher) ;
ObjectOutputStream aOOS = new ObjectOutputStream(aFOS) ;
aOOS.writeObject(sealedSK) ;
aOOS.close() ;

Récupération
ObjectInputStream aOIS = new ObjectInputStream(aFIS) ;
SealedObject sealedSecretKey = (SealedObject) aOIS.readObject() ;
aOIS.close() ;
SecretKey aSecretKey = (SecretKey)sealedSK.getObject(aCipher) ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
67 /engine
88
Générateur de paire de clés

Initialisation
On peut initialiser l’objet KeyPairGenerator pour régénérer une paire de
clés d’une longueur keysize à l’aide de la méthode :
public void initialize ( int keysize ) ;
On peut aussi introduire une source d’aléatoire :
public void initialize ( int keysize , SecureRandom random ) ;
Ces deux méthodes rejettent une exception InvalidParameterException si le
keysize choisi n’est pas supporté par l’objet KeyPairGenerator.
Pour le "DSA" et le "DH" le Keysize est un multiple de 64 compris entre
512 et 1024.
Pour le "RSA", c’est un multiple de 8 supérieur ou égal à 512.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
68 /engine
88
Générateur de paire de clés

1 Finalement on récupérer la paire de clés KeyPair à l’aide de la


méthode suivante :
public KeyPair generateKeyPair()
2 Pour extraire la clé publique ou privée de l’objet KeyPair, on utilise les
deux méthodes suivantes :
public PrivateKey getPrivate()
public PublicKey getPublic()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
69 /engine
88
Générateur de paire de clés

Exemple
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DH", "SunJCE") ;
kpg.initialize(704, new SecureRandom()) ;
KeyPair kp = kpg.generateKeyPair() ;
DHPrivateKey privatekey = (DHPrivateKey) kp.getPrivate() ;
DHPublicKey publickey = (DHPublicKey)kp.getPublic() ;

Les objets Key, PrivateKey, PublicKey, RSAPrivateKey, RSAPublicKey,


DSAPrivateKey,.... ont une représentation opaque : l’accès à leur structures
est limité.
L’utilisateur ne peut pas les créer avec ses propres données.

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
70 /engine
88
CHIFFREMENT ASYMETRIQUE
RSA : Chiffrement - Déchiffrement

JCE Engine : Cipher Récupération d’une instance de Cipher


1 des 3 méthodes getInstance(String transformation, · · · ) Avec
transformation :
”RSA”
”RSA/ECB/padding”
et padding :
”NOPADDING”
”PKCS1PADDING”
”OAEPWITHhashANDMGF1PADDING”
avec hash = MD5, SHA1, SHA-1, SHA-256, SHA-384, SHA-512

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
71 /engine
88
RSA : Chiffrement - Déchiffrement

Initialisation du Cipher
init(int opmode, Key)
init(int opmode, Key, SecureRandom)
opmode : ENCRYPT MODE , DECRYPT MODE, WRAP MODE,
UNWRAP MODE

Chiffrer ou déchiffrer
public final byte[] doFinal(byte[] input)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
72 /engine
88
Diffie - Hellman

Diffie - Hellman
Protocole d’établissement de clé
Permet à 2 ou plusieurs parties d’établir de manière sûre une clé
secrète commune
La clé peut être utilisée pour chiffrer une future communication entre
les parties

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
73 /engine
88
Diffie - Hellman
Diffie - Hellman entre 2 parties A et B
Modulo : nombre premier p
Générateur : nombre entier g tel que 0 < g < p
En option : un entier l : taille de la clé privée tel que 2l < p

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
74 /engine
88
DH : Génération de paire de clés

DH : Génération de paire de clés


1 Récupération d’une instance de KeyPairGenerator
1 des 3 méthodes getInstance("DH"· · · )
2 Initialisation du KeyPairGenerator
initialize(AlgorithmParameterSpec)
initialize(AlgorithmParameterSpec, SecureRandom)
initialize(keysize)
initialize(keysize, SecureRandom)
AlgorithmParameterSpec : DHParameterSpec
3 Génération de la paire de clés
public KeyPair generateKeyPair()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
75 /engine
88
DH : Paire de clés

JCE : Clé publique


Récupération : aKeyPair.getPublic()
Type : DHPublicKey
Format : X509

JCE : Cléprivée
Récupération : aKeyPair.getPrivate()
Type : DHPrivateKey
Format : PKCS8

NB
DHPublicKey et DHPrivateKey sont encodées avec les paramétres
Diffie-Hellman correspondants

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
76 /engine
88
DH : KeyAgreement

KeyAgreement engine
1 Récupération d’une instance de KeyAgreement
1 des 3 méthodes getInstance("DH"· · · )
2 Initialisation du KeyAgreement
init(Key)
init(Key, AlgorithmParameterSpec)
AlgorithmParameterSpec : DHParameterSpec
3 Exécution d’une étape intermédiaire du DH
public final Key doPhase(Key key,boolean lastPhase)
4 Génération du secret partag
byte[] generateSecret()
SecretKey generateSecret(String algorithm)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
77 /engine
88
Mask Generation Function (MGF)
Mask Génération Function (MGF)
Fonction MGF (seed , l )
Input : seed : chaine d’octets, l : entier positif
Output : Chaine d’octets de taille l

MGF1 : algorithme
MGFParameters : fonction Hash

MGF1(seed, l)
n = ceil(l/hash.len)
soit r une chaine d’octets vide
for i = 0 to k - 1 do
r = r ||hash(seed ||I 2OSP (0, 4)) ;
end
return l premiers octets de r
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
78 /engine
88
Mask Generation Function (MGF)

MGF1 avec BC provider


MGFParameters mgf = new MGFParameters(chaineByte) ;
MGF1BytesGenerator mgfgen = new MGF1BytesGenerator(new
SHA1Digest()) ;
mgfgen.init(mgf) ;
byte[] s = new byte[16] ;
mgfgen.generateBytes(s, 0, s.length) ;

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
79 /engine
88
Message Digest - Fonctions de hachage

Objectif
Détecter les modifications frauduleuses de données
Intégrité des données

Caractéristiques
Compression de données
quelques soit la taille du input, la taille du output est inférieur et fixe
Transformation à sens unique
facile à compresser, impossible(complexité) à décompresser
Résistance aux collisions
inputs : x = y , output h(x ) = h(y )

Faiblesse
Ne résiste pas à l’attaque ”man in the middle”
M. Remane NIZAR PhD student in Coding, Cryptology,
Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
80 /engine
88
JCA : Message digest

Récupération d’une instance de MessageDigest


1 des 3 méthodes getInstance("algorithme"· · · ) algorithme : MD2,
MD5, SHA-1, SHA-256, SHA-384, SHA-512

Calcul du digest
Traiter d’un seul coup public byte[] digest(byte[] input)
Traiter en plusieurs coups public void update(byte input) public byte[]
digest()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
81 /engine
88
Message Authentication Code (MAC)

Objectif
Intégrité et authenticité des données
Détecter les modifications frauduleuses de données
Vérifier l’authenticité des données

Caractéristiques
Basé sur un message digest : HMAC
Utilise une clé secrète

Faiblesse
Ne garantit pas la non-répudiation

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
82 /engine
88
JCA : Message Authentication Code

Récupération d’une instance de Mac


1 des 3 méthodes getInstance("algorithme"· · · )
algorithme : HmacMD5, HmacSHA1, HmacSHA256, HmacSHA384,
HmacSHA512

Initialisation du Mac
init(key)
init(key, AlgorithmParameterSpec)
AlgorithmParameterSpec : HMACParameterSpec

Calcul du mac
Traiter d’un seul coup public final byte[] doFinal(byte[] input)
Traiter en plusieurs coups public void update(byte[] input) public final
byte[] doFinal()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
83 /engine
88
DSA avec JCE : Génération des paramétrés de
domaine

Classe : org.bouncycastle.crypto.generators.
DSAParametersGenerator
1 Création d’une instance de DSAParametersGenerator
new DSAParametersGenerator()
2 Initialisation du DSAParametersGenerator
init(keysize, int certitutePrime, secureRandom)
512 < keysize < 1024 et keysize = 512+ n.64
3 Génération des paramètres de domaine

public DSAParameters generateParameters()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
84 /engine
88
DSA avec JCE : Génération d’une paire de clés

JCE engine : KeyPairGenerator


1 Récupération d’une instance de KeyPairGenerator
1 des 3 méthodes getInstance("DSA" · · · )
2 Initialisation du KeyPairGenerator
initialize(AlgorithmParameterSpec)
initialize(AlgorithmParameterSpec, SecureRandom)
initialize(keysize)
initialize(keysize, SecureRandom)
AlgorithmParameterSpec : DSAParameterSpec
3 Génération de la paire de clés
public KeyPair generateKeyPair()

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
85 /engine
88
DSA avec JCE : Paire de clés

JCE : Clé publique


Récupération : aKeyPair.getPublic()
Type : DSAPublicKey
Format : X509

JCE : Clé privée


Récupération : aKeyPair.getPrivate()
Type : DSAPrivateKey
Format : PKCS8

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
86 /engine
88
Signature avec JCE

1 Récupération d’une instance de Signature


1 des 3 méthodes getInstance("algorithme"· · · )
2 Initialisation de Signature
initSign(privateKey)
initSign(privateKey, secureRandom)
initVerify(publicKey)
3 Génération de la signature
update(byte[] input)
public final byte[] sign()
4 Vérification de la signature
public void update(byte[] input)
public final boolean verify(byte[] signature)

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
87 /engine
88
Algorithme de signature JCE

Algorithme signature RSA


NONEwithRSA, MD2withRSA, MD5withRSA, SHA1withRSA,
SHA256withRSA, SHA384withRSA, SHA512withRSA

Algorithme signature DSA


NONEwithDSA, SHA1withDSA

Algorithme signature ECDSA


NONEwithECDSA, SHA1withECDSA, SHA256withECDSA,
SHA384withECDSA, SHA512withECDSA

M. Remane NIZAR PhD student in Coding, Cryptology,


Sécurité Algebra
des Systèmes etand application
Réseaux avancéofChapitre
UCAD Data
0 Introduction
science,
3 mai 2023
IA and IOT
88 /engine
88

Vous aimerez peut-être aussi