Vous êtes sur la page 1sur 17

BLOC ADMINISTRATION DU SYSTEME

D’INFORMATION

Prosit 4

Mouanou Mitori guichel


30 novembre 2023

1
TABLE DES MATIERES
 Introduction .................................................................................................................................... 4
 Contexte ...................................................................................................................................... 4
 Problématique ............................................................................................................................ 4
 Généralisation ............................................................................................................................. 5
 Pistes de solution ........................................................................................................................ 5
 Mots Clés......................................................................................................................................... 5
 Recherches et Approfondissements : ............................................................................................. 6
 Hachage....................................................................................................................................... 6
 Qu'est-ce que le Hachage ?..................................................................................................... 6
 Objectifs du Hachage .............................................................................................................. 6
 Fonctions de Hachage Couramment Utilisées : ...................................................................... 7
 Applications du Hachage : ....................................................................................................... 8
 Techniques de Salage : ............................................................................................................ 8
 Conclusion : ............................................................................................................................. 9
 Langage Java ............................................................................................................................... 9
 Qu'est-ce que Java ? ............................................................................................................... 9
 Historique de Java : ................................................................................................................. 9
 Structure d'un Programme Java :............................................................................................ 9
 Variables et Types de Données ............................................................................................. 10
 Opérateurs : .......................................................................................................................... 10
 Structures de Contrôle : ........................................................................................................ 10
 Classes et Objets : ................................................................................................................. 10
 Héritage : ............................................................................................................................... 10
 Interfaces : ............................................................................................................................ 10
 Packages : .............................................................................................................................. 11
 Gestion des Exceptions ......................................................................................................... 11
 Programmation Multithread................................................................................................. 11
 Entrée/Sortie (E/S) ................................................................................................................ 11
 Programmation Réseau ........................................................................................................ 11
 Développement d'Applications Graphiques ......................................................................... 11

2
 Accès aux Bases de Données ................................................................................................ 12
 Conclusion ............................................................................................................................. 12
 Réalisation ................................................................................................................................. 12
 Reponse à la problematique ......................................................................................................... 16
 Piste des solutions......................................................................................................................... 17
 Synthèse des connaissances ......................................................................................................... 17
 Réferences .................................................................................................................................... 17

3
 Introduction

Au sein de la société avant-gardiste ABSTERGO, un enjeu majeur


émerge alors que des connexions suspectes sont détectées sur les
serveurs de la Zone Démilitarisée (DMZ), laissant craindre une
usurpation d'identité compromettant la sécurité du Système
d'Information (S.I.). L'énigme s'épaissit avec l'intervention de César Hill,
un stagiaire passionné par la sécurité informatique, qui défie l'équipe
ANIMUS avec une phrase codée et une signature hexadécimale. Cette
épreuve met en lumière la vulnérabilité du S.I. d'ABSTERGO, exigeant
une collaboration intensive pour décoder les mystères laissés par César
et renforcer les protocoles de sécurité. Dans cette quête, la résolution
de l'énigme devient cruciale, révélant des défis internes à surmonter
pour préserver l'intégrité des données et assurer un avenir sécuritaire à
l'entreprise.

 Contexte

Suite à la configuration de notre DMZ et de certains services, nous


constatons des cas d'usurpation de comptes et des connexions
anormales. Le stagiaire apporte son assistance de manière
particulière à son équipe

 Problématique

Mettre en place un système pour assurer la confidentialité des


informations de connexion

4
 Généralisation
Cryptographie en entreprise

 Pistes de solution
 Utilisation du langage Java
 Utilisation du code de César
 Utilisation de hachage

Mots Clés

 Usurper :

Le terme "usurper" fait référence à l'action d'occuper illégitimement


une position, un pouvoir, ou un statut au détriment de la personne
ou de l'entité légitime. Dans le contexte de la sécurité informatique,
l'usurpation pourrait impliquer la prise non autorisée d'identités ou
de privilèges au sein d'un système, mettant ainsi en péril sa sécurité.

 Signature :

En informatique, une "signature" peut avoir plusieurs significations.


Dans le contexte de la sécurité, une signature peut désigner une
empreinte numérique ou un code unique associé à un fichier, un
programme, ou un utilisateur. Elle est souvent utilisée dans la
détection d'intrusions pour identifier des modèles ou
comportements suspects.

 Langage C :

5
Le langage de programmation C est un langage impératif qui a été
largement utilisé dans le développement logiciel. Connu pour sa
flexibilité et son efficacité, le langage C est souvent utilisé pour des
applications système et des logiciels embarqués. Il est également
pertinent dans le contexte de la sécurité informatique, étant donné
qu'il offre un contrôle de bas niveau sur le matériel, permettant la
mise en œuvre précise de protocoles de sécurité.

 Mot de passe :

Un "mot de passe" est une séquence de caractères, généralement


confidentielle, utilisée pour vérifier l'identité d'un utilisateur lors de
l'accès à un système informatique, un compte en ligne, ou d'autres
ressources sécurisées. La sécurité d'un mot de passe repose souvent
sur sa complexité et sa confidentialité, afin de prévenir tout accès
non autorisé à des informations sensibles.

 Recherches et Approfondissements :

 Hachage

 Qu'est-ce que le Hachage ?

Le hachage est un processus algorithmique qui prend en entrée des


données de taille variable et génère une sortie de longueur fixe, appelée
empreinte ou hash. Cette empreinte est unique pour des données
différentes (dans l'idéal), mais une petite modification des données
entraîne une modification significative de l'empreinte. Les algorithmes de
hachage sont utilisés pour diverses applications, notamment la sécurité
informatique.

 Objectifs du Hachage :

6
Intégrité des données : Le hachage est utilisé pour vérifier si des
données ont été altérées en comparant les empreintes avant et après une
transmission ou un stockage.

Stockage sécurisé des mots de passe :

Les mots de passe ne sont pas stockés en texte brut, mais plutôt
sous forme de hachage, ce qui protège les informations en cas de
violation de la sécurité.

Accélérer la recherche de données :


Les fonctions de hachage sont utilisées dans les tables de hachage
pour une recherche rapide.

Générer des clés de hachage : Utilisé dans des contextes


cryptographiques pour générer des clés à partir de données.

 Fonctions de Hachage Couramment Utilisées :

 MD5 (Message Digest Algorithme 5) :

MD5 produit une empreinte de 128 bits et était populaire, mais des
vulnérabilités aux attaques par collision ont été découvertes, ce qui
signifie qu'il est possible de trouver deux entrées différentes
produisant la même empreinte.

 SHA-1 (Secure Hash Algorithme 1) :

SHA-1 produit une empreinte de 160 bits et a également été jugé


vulnérable aux attaques. Il est déconseillé pour des applications
sécurisées.

 SHA-256 et SHA-3 :

Partie de la famille des algorithmes SHA-2, SHA-256 produit une


empreinte de 256 bits et est considéré comme plus sécurisé. SHA-3
est une alternative.

 bcrypt et scrypt :

7
spécifiquement pour stocker de manière sécurisée les mots de
passe, ces algorithmes incluent des mesures anti-brute-force et sont
plus résistants aux attaques par force brute.

 Applications du Hachage :

 Stockage de Mots de Passe :

Les mots de passe sont hachés avant d'être stockés, ce qui empêche
la récupération des mots de passe en cas de violation de la sécurité.

 Vérification de l'Intégrité des Données :

Les empreintes sont utilisées pour vérifier si des données ont été
altérées lors de la transmission ou du stockage.

 Tables de Hachage :

Utilisation de fonctions de hachage dans des structures de données


comme les tables de hachage pour des opérations de recherche
efficaces.

 Techniques de Salage :

 Qu'est-ce que le Salage ?

Le salage consiste à ajouter des données aléatoires (sel) aux


données avant le hachage. Cela rend les attaques par tables arc-en-
ciel plus difficiles.

 Avantages du Salage :

Prévention des attaques par tables arc-en-ciel.


Amélioration de la sécurité des mots de passe, même si les mots de
passe sont faibles.

Sécurité et Considérations :

Attaques par Collision :

8
Explication des attaques qui cherchent à trouver deux entrées
différentes produisant la même empreinte.

Utilisation Responsable :

Choisir des algorithmes de hachage robustes en fonction des


exigences spécifiques de sécurité et des meilleures pratiques en
vigueur.

 Conclusion :

Récapitulation des concepts clés du hachage, de l'importance de


choisir des algorithmes sécurisés et des applications pratiques dans
la sécurité informatique. Ce cours fournit une base solide pour
comprendre les concepts de hachage, de leurs applications et des
considérations de sécurité associées. Pour des informations plus
approfondies, des exemples pratiques et des détails sur les
implémentations spécifiques, une étude plus approfondie serait
nécessaire.

 Langage Java

 Qu'est-ce que Java ?

 Java est un langage de programmation polyvalent et orienté objet.


 Conçu pour être portable, sécurisé et facilement compréhensible.

 Historique de Java :

 Développé par Sun Microsystems en 1995.


 Acquis par Oracle Corporation en 2010.
 Populaire pour son utilisation dans le développement de logiciels
d'entreprise, d'applications mobiles (Android), et plus encore.

 Structure d'un Programme Java :

9
 Un programme Java est composé de classes.
 Chaque classe contient des méthodes et des variables.

 Variables et Types de Données :

 Déclaration et utilisation des variables.


 Types de données : entiers, décimaux, chaînes, etc.

 Opérateurs :

 Utilisation des opérateurs arithmétiques, relationnels et logiques.


 Opérateurs spéciaux comme l'opérateur ternaire.

 Structures de Contrôle :

 Les instructions conditionnelles (if, else, switch).


 Les boucles (for, while, do-while).

 Classes et Objets :

 Compréhension du concept de classe et d'objet.


 Encapsulation : utilisation de l'encapsulation pour protéger les
données.

 Héritage :

 Utilisation de l'héritage pour créer des relations entre les classes.


 Polymorphisme : compréhension des concepts de surcharge et de
redéfinition de méthodes.

 Interfaces :
10
 Définition et implémentation d'interfaces.
 Utilisation des interfaces pour atteindre une abstraction.

 Packages :

 Structuration du code avec des packages.


 Importation et utilisation de classes à partir d'autres packages.

 Gestion des Exceptions

 Utilisation des blocs try, catch et finally.


 Création de classes d'exceptions personnalisées.

 Programmation Multithread

 Compréhension des threads et de la programmation multithread.


 Utilisation de la synchronisation pour éviter les problèmes de
concurrence.

 Entrée/Sortie (E/S)

 Manipulation des fichiers en utilisant les classes d'E/S.


 Lecture et écriture dans des fichiers texte et binaires.

 Programmation Réseau

 Communication à l'aide de sockets.


 Utilisation des classes Java pour la programmation réseau.

 Développement d'Applications Graphiques

11
 Création d'interfaces utilisateur graphiques avec JavaFX ou Swing.

 Accès aux Bases de Données

 Utilisation de JDBC pour la connexion et la manipulation des bases


de données.

 Conclusion

 Récapitulation des Concepts Clés :

 Classes, objets, héritage, interfaces, exceptions, etc.

 Réalisation

Dans cette parti on va détailler le processus d’authentification des donnés


de connexion

Voici le processus de connexion sans algorithme de Hachage :

 Saisie des identifiants :

L'utilisateur entre son nom d'utilisateur et son mot de passe


dans le formulaire de connexion.

 Envoi des identifiants au serveur :

Les identifiants (nom d'utilisateur et mot de passe en texte brut)


sont envoyés au serveur.

 Vérification des identifiants :

Le serveur compare les identifiants fournis avec ceux stockés


dans sa base de données. Si les identifiants correspondent,
l'utilisateur est considéré comme authentifié.

12
 Création d'une session :

Une session est créée côté serveur pour suivre l'authentification


de l'utilisateur. Un identifiant de session peut être généré et
associé à l'utilisateur.

 Stockage de la session (le cas échéant) :

Côté client, un cookie peut être renvoyé par le serveur,


contenant l'identifiant de session. Ce cookie est stocké
localement sur le navigateur de l'utilisateur.

 Accès aux ressources protégées :

L'utilisateur, muni de l'identifiant de session, peut désormais accéder


aux ressources protégées sur le serveur.

 Expiration de la session :
La session a généralement une durée de validité limitée. Après
cette période, l'utilisateur doit se reconnecter.

 Déconnexion (le cas échéant) :

L'utilisateur peut choisir de se déconnecter, ce qui invalide la


session côté serveur et peut également entraîner la suppression
du cookie de session côté client.

En mettant l’algorithme de hachage la procédure devient :

 Enregistrement de l'utilisateur :

Lorsqu'un utilisateur crée un compte ou modifie son mot de


passe, le système génère un sel aléatoire unique pour cet
utilisateur. Le mot de passe de l'utilisateur est ensuite haché à
l'aide de l'algorithme de hachage choisi, et le résultat (le haché
du mot de passe ) est stocké dans la base de données.

 Connexion de l'utilisateur :

13
Lorsqu'un utilisateur tente de se connecter, le mot de passe
saisi par l'utilisateur est haché à l'aide de l'algorithme de
hachage, et le résultat est comparé au haché stocké dans la base
de données. Si les hachages correspondent, l'utilisateur est
considéré comme authentifié.

 Vérification des identifiants :

La vérification des identifiants consiste à comparer le haché du


mot de passe fourni par l'utilisateur avec le haché stocké dans la
base de données. Cette comparaison doit être constante en
termes de temps pour éviter les attaques par timing.

 Répétition du processus lors de chaque connexion :

Lorsque l'utilisateur se connecte à nouveau, le processus est


répété. le mot de passe fourni, haché, et le résultat est comparé
au haché stocké.

 Renforcement de la sécurité avec des itérations :

Pour renforcer la sécurité, on peut introduire des itérations lors


du hachage. Cela signifie que le processus de hachage est
répété un certain nombre de fois. Cela rend les attaques par
force brute plus difficiles et ralentit considérablement les
attaques par dictionnaire.

 Mise en œuvre de politiques de sécurité :

En plus de l'utilisation de l'algorithme de hachage, les


systèmes de gestion d'authentification peuvent mettre en
œuvre d'autres politiques de sécurité, telles que la
vérification à deux facteurs (2FA) ou des règles de complexité
de mot de passe.

Voici l’algorithme de Hachage SHA-256 :



import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashingExample {

public static String hashWithSHA256(String input) {


try {
MessageDigest digest = MessageDigest.getInstance("SHA-
256");

14
byte[] hash = digest.digest(input.getBytes());

// Conversion du tableau de bytes en une


représentation hexadécimale
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}

return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}

Voice l’explication, en effet la classe HashingExample contient une


méthode statique hashWithSHA256 qui prend une chaîne de caractères
en entrée et retourne le haché SHA-256 de cette chaîne.
À l'intérieur de la méthode, une instance de MessageDigest est créée avec
l'algorithme de hachage SHA-256.
La méthode digest est utilisée pour appliquer la fonction de hachage sur
la chaîne d'entrée, produisant ainsi un tableau de bytes représentant le
haché.
Ce tableau de bytes est ensuite converti en une représentation
hexadécimale et retourné.

Voila un test

15
 Réponse à la problématique

Il est important de noter que SHA-256 est seulement l'un des nombreux
algorithmes de hachage disponibles, et le choix de l'algorithme peut
dépendre des exigences spécifiques de sécurité de votre application.
D'autres algorithmes populaires incluent MD5, SHA-1, SHA-512, etc.
Cependant, MD5 et SHA-1 sont maintenant considérés comme faibles en
raison de vulnérabilités connues, et SHA-256 est celle que nos allons
mettre en place pour des raisons de sécurité accrue.

16
Piste des solutions

Langage Java
Code césar
Algorithme de Hachage SHA-256

Synthèse des connaissances

Durant ce prosit j’ai découvert l’intérêt de pour connaitre les algorithmes de


hachage

Réferences

https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html

https://www.baeldung.com/java-md5

https://www.baeldung.com/sha-256-hashing-java

17

Vous aimerez peut-être aussi