Cryptographie Java
Chapitre1: Architecture de la cryptographie java
M. Remane NIZAR
PhD student in Coding, Cryptology, Algebra and Application at UCAD
Information Systems Security and Cybersecurity engineer at ESP
[Link]@[Link] remanenizar@[Link]
Licence 3 Cybersécurité
Istitut Superieur Informatique(ISI) 2024 - 2025
19 novembre 2024
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
1 / 21and
Plan
1 Introduction
Historique de la cryptographie
JCA dans JDK
Historique de Java
API de sécurité ajouté sur java
Technologie de java
2 Architecture de la cryptographie Java
API Java
API Java pour la sécurity
Classes et Interfaces de concepts cryptographiques
Java Cryptography Architecture(JCA) : Concept
Java Cryptography Architecture : Principes
Installation et enregistrement du provider
Résume
3 TP 1 : Installation et enregistrement de provider BouncyCastle
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
2 / 21and
Introduction
Cryptographie ou science du secret est l’art de rendre un message
inintelligible à ceux qui ne sont pas habilité à en prendre connaissance
en le chiffrant ;
Science existait depuis 3000 ans avant JC ;
Types de la cryptographie existant (Classique, Moderne,
Post-Quantique et cryptographie d’ADN) ;
Cryptographie joue un rôle fondamental dans le renforcement de la
sécurité des systèmes informatiques.
Elle fournit les moyens nécessaires pour protéger les données et la
communication, résister aux diverses menaces auxquelles les systèmes
informatiques peuvent être confrontés. ;
C’est dans ce cadre qu’une architecture de cryptographie appelé JCA
fut ajoutée au JDK de JAVA pour fournir des services de sécurité, y
compris des API pour les fournisseurs de services de sécurité et des
interfaces pour divers algorithmes cryptographiques.
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
3 / 21and
Java est un langage de programmation Orienté Objet simple,
distribué, sécurisé et trop technique.
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.
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.
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
4 / 21and
Technologie de java
Java utilise l’architecture des technologie suivante :
Outils de développement Java (JDK)
Code intermédiaire entre les instructions machines et le code source,
qui n’est pas directement exécutable(bytecode)
Environnement d’exécution Java(JRE) ;
Machine Virtuelle(JVM) ;
Application programming Interface(API) ;
Ramasse miette(Garbage collector) ;
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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
5 / 21and
Architecture de la cryptographie Java
• Cadre permettant d’accéder et de développer des fonctionnalités
cryptographiques pour la plate-forme Java.
• Étudier l’architecture java consiste à savoir comment java est organisé en
paquetage
• Paquetage ou paquet est une archive comprenant les fichiers
informatiques, les informations et procédures nécessaires à l’installation
d’un logiciel sur un système d’exploitation.
paquetage en java est un ensemble des classes ou les programmeurs l’utilise
pour les servir dans leurs applications, l’ensemble des classes peut aussi
appelé bibliothèque de classe ou API.
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
6 / 21and
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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
7 / 21and
API pour la sécurité
Un ensemble des packages qui permettent d’écrire des programmes
sécurisés en java
Exemple
1 [Link]
2 Java. [Link]
3 [Link]
4 [Link]
5 [Link]
6 [Link]
7 [Link]
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
8 / 21and
Classes et Interfaces de concepts cryptographiques
Clé 1 Chiffrement
1 [Link] [Link]
2 [Link] 2 Génération des nombre
3 [Link] aléatoire
4 [Link] [Link]
5 3 Condensé du texte
[Link] [Link]
6 4 Signature :
[Link] [Link]
7 [Link] 5 Certificat :
8 [Link] [Link]
9 [Link] 6 Message d’authentification
Application [Link]
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
Information
19 novembre
Systems
java
2024 Security
9 / 21and
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.
• [Link] 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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
10 / 21and
Java Cryptography Architecture : Principes
JCA a été conçu pour suivre plusieurs objectifs :
1 Indépendance de l’implémentation :
• Applications n’ont pas besoin d’implémenter les algorithmes
cryptographiques.c’est à la plateforme java de les récupérer à partir
d’un (des) provider(s) pour les fournir sous formes de service.
• Le remplacement d’un provider par une nouvelle version de ce
provider ne doit pas affecter l’exécution des applications déjà
compilées.
2 Interopérabilité de l’implémentation :
• Une application peut faire appel à des services cryptographiques
implémentés dans différents providers de manières implicite ou
explicite, et un provider peut fournir des services à différents types
d’applications
3 Extensibilité des algorithmes :
• Possibilité de greffer facilement des nouveaux services(ajout,
remplacement) sans affecter l’execution des applications deja
compilées.
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
11 / 21and
Java Cryptography Extension(JCE) : Concept
API JCE (Java Cryptography Extension) est un ensemble d’API
structuré suivant le package principale : [Link] 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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
12 / 21and
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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
13 / 21and
• 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.
• API JCA et JCE doivent être implémentée par des fournisseurs
(Cryptographic Service Providers). Chaque fournisseur doit implémenter le
SPI qui définit les fonctionnalités à proposer.
JCA
1 SignatureSpi JCE
2 MessageDigestSpi 8 CipherSpi
3 KeyStoreSpi
4 KeyPairGeneratorSpi
9 KeyAgreementSpi
5 KeyFactorySpi 10 KeyGeneratorSpi
6 AlgorithmParametersSpi 11 MacSpi
7
AlgorithmParameterGeneratorSpi12 SecretKeyFactorySpi
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
14 / 21and
Cryptographic Service Provier (CSP)
1 Provider étend la classe abstraite [Link] et
implémente par chaque CSP
• getName(), getVersion(), getlnfo()
• getServices()
2 Structuré en un ou plusieurs packages qui implementent concretement
un ou plusieurs services cryptographiques
3 Avec les providers(fournisseur de service) on peut afficher le nom du
provider en redéfinissant la méthode getName(), on peut aussi
afficher ou donner la version en redéfinissant la méthode
getVerssion() puis on peut aussi afficher tous les informations
nécessaire du provider en redéfinissant la méthode getInfo() .
4 Méthode getService(). permet au proveder de donner tous les
services qu’il prend en compte
5 Organisation en package peut être différente d’un provider à un autre
mais l’interface pour accéder aux services implémentés est la même.
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
15 / 21and
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 [Link].1=[Link]
2 [Link].2=[Link]
3 [Link].3=[Link]
4 [Link].4=[Link]
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
16 / 21and
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 = [Link]("MD5",
"SunJCE")
• MessageDigest md = [Link]("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 [Link].
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
17 / 21and
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
[Link].n=[Link]
Exemple :
[Link].4=[Link]
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
18 / 21and
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
• [Link]. fournit les classes et les interfaces pour effectuer des
opérations cryptographiques sur les algorithmes symétriques
• [Link]. 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, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
19 / 21and
Figure – Design Principe
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
20 / 21and
TP 1 : Installation et enregistrement de provider
BouncyCastle
1 Installer en utilisant deux méthodes différentes et enregistrer le
provider BouncyCastle
2 Écrivez un programme permettant :
Afficher le nom des provider
Version des provider
Informations des provider
Services des provider
M. Remane NIZAR PhD student in Coding, Cryptology, Java
Cryptographie Algebra
Chapitre1:
and Application
Architecture
at UCAD
de la cryptographie
19
Information
novembreSystems
2024
java Security
21 / 21and