Définition de la Cryptologie
La cryptologie est une science mathématique qui regroupe deux branches : d’une part ,la cryptographie qui permet de coder des messages et d’autre part, la cryptanalyse qui permet de les décoder.Le mot cryptographie est un terme générique désignant l’ensemble des techniques permettant de chiffrer des messages, c’est-à-dire permettant de les rendre inintelligibles sans une action spécifique. Le verbe crypter est parfois utilisé mais on lui préférera le verbe chiffré. La cryptanalyse, à l’inverse, est l’étude des procédés cryptographiques dans le but de trouver des faiblesses, en particulier, de pouvoir décrypter des messages chiffrés. Le décryptement est l’action consistant à trouver le message en clair sans connaitre la clef de déchiffrement.
Définition de la Cryptographie
La cryptographie est la «science du secret », une discipline consistant à concevoir des mécanismes cryptologique afin de transmettre, en sécurité, des informations secrètes et sensible . La cryptographie informatique professionnelle est un phénomène récent, rendu indispensable du fait que les informations sont accessibles pratiquement à tous par des réseaux publics où chaque message peut être facilement intercepté ou altéré. Elle permet d’assurer la confidentialité, authenticité et l’intégrité et la non-répudiation. Il existe trois types de cryptographies a savoir la cryptographie symétrique , la cryptographie asymétrique et la cryptographie hybrite.[w3][6]
Usage de la cryptographie
La cryptographie est traditionnellement utilisée pour dissimuler des messages aux yeux de certains utilisateurs. Cette utilisation a aujourd’hui un intérêt d’autant plus grand que les communications via internet circulent dans des infrastructures dont on ne peut garantir la fiabilité et la confidentialité. Désormais, la cryptographie sert non seulement à préserver la confidentialité des données mais aussi à garantir leur intégrité et leur authenticité.
• La confidentialité : consiste à rendre l’information intelligible à d’autres personnes que les acteurs de la transaction.
• L’intégrité : consiste à déterminer si les données n’ont pas été altérées durant la communication.
• L’authentification : consiste à assurer l’identité d’un utilisateur, c.-à-d de garantir à chacun des correspondants que son partenaire est bien celui qu’il croit être.
Un contrôle d’accès peut permettre(par exemple par le moyen d’un mot de passe qui devra être chiffré) l’accès à des ressources uniquement aux personnes autorisées.
• La non répudiation : permet de garantir qu’aucun des correspondants ne pourra nier la transaction. C’est-à-dire l’origine et le destinataire du messaage .
— d’origine : L’émetteur ne peut nier avoir écrit le message et il peut prouver qu’il ne l’a pas fait si c’est le cas
— de destination : Le receveur ne peut nier avoir reçu le message et il peut prouver qu’il ne l’a pas reçu si c’est effectivement le cas.
Différents types de chiffrements
Le chiffrement est un procédé cryptographique qui consiste à protéger des données en leurs rendant incompréhensibles pour celui qui ne dispose pas de la clef de chiffrement. En informatique, le chiffrement des données a pour objectif de garantir la confidentialité des données stockées sur des Systèmes Informatiques (SI) ou en transit. Les données sont chiffrées à l’aide d’un algorithme et d’un jeu de clefs de chiffrement.
Le chiffrement apporte aux données une valeur
De confidentialité : les données ne peuvent pas être volées D’intégrité : les données ne peuvent pas être modifiées et des données supplémentaires ne peuvent pas être insérées.
Il existe deux grandes familles Systèmes Cryptographiques : le Système Cryptographique symétrique et le Système Cryptographique asymétrique. [w7]
Chiffrement Symétrique
Le chiffrement symétrique est un système de chiffrement cryptographie qui utilise la même clé secrète pour le chiffrement et le déchiffrement. C’est un type de chiffrement particulièrement utile pour chiffrer de grandes quantités de données. En effet, il est très rapide et consomme peu de ressources.
Chiffrement Hybride
La cryptographie hybride est un système de cryptographie faisant appel aux deux grandes familles de systèmes cryptographiques : la cryptographie asymétrique et la cryptographie symétrique. La cryptographie asymétrique est intrinsèquement lente à cause des calculs complexes qui y sont associés, alors que la cryptographie symétrique brille par sa rapidité. Toutefois, cette dernière souffre d’une grave lacune, on doit transmettre les clés de manière sécurisée (sur un canal authentifié). Pour pallier ce défaut, on recourt à la cryptographie asymétrique qui travaille avec une paire de clés : la clé privée et la clé publique.
La cryptographie hybride combine les deux systèmes afin de bénéficier des avantages (rapidité de la cryptographie symétrique pour le contenu du message) et utilisation de la cryptographie lente uniquement pour la clé.
Algorithmes de chiffrements
Algorithmes de Chiffrement Symétrique
Avec les algorithmes à clés symétriques, la même clé est utilisée pour les opérations de chiffrement et de déchiffrement.
Ce type d’algorithme porte aussi le nom d’algorithme à clé secrète. La taille de la clé influe sur la robustesse de l’algorithme.L’émetteur et le récepteur doivent partager la même clé.
Son grand intérêt est d’être rapide lors de l’exécution des opérations car les algorithmes mathématiques sont relativement simples.
L’algorithme peut s’appliquer selon deux approches :
Bloc (Block cipher)
Chiffre ou déchiffre par bloc de bits de taille fixe Exemple : DES, SERPENT, AES, BLOWFISH [1].
Explication
Ce schéma illustre la démarche de l’une des opérations d’itérations. On les 4 mots A, B, C, D et la fonction F qui prend en entrée les mots B, C, D. On addition F avec le mot A et le résultat est additionné avec Mi un sous-bloc de 32 bits et le résultat on l’additionne avec l’une des 64 constantes ki. Puis on prend un décalage ou un round à gauche et on l’additionne avec le block B. A la fin on a un désordre un peu des mots existants pourgénérer un nouveau mot qui sera l’entrée de la prochaine itération ou du prochaine tour.
Algorithme SHA-2
• versions : 224, 256, 384 et 512 bits
• Publiée en 2001
• Non affectée par les vulnérabilités SHA-1 !
• MITM (man-in-the-middle) attaque en 2008 brise la resistance de la preimage pour SHA-512 et SHA-256.
• SHA-256 vulnerable aux collisions
Comme toutes les fonctions de hachages, les fonctions SHA-2 prennent en entrée un message de taille arbitraire, avec une borne (toute théorique) pour celle-ci, et produisent un résultat (appelé haché, condensé ou encore empreinte. . . ) de taille fixe. La taille du haché est indiquée par le suffixe : 224 bits pour SHA-224, 256 bits pour SHA-256, 384 bits pour SHA-384 et 512 bits pour SHA-512.
Les algorithmes de la famille SHA-2 sont très semblables, il y a essentiellement deux fonctions différentes, SHA-256 et SHA-512, les autres étant des variantes de l’une ou l’autre. Les fonctions SHA-256 et SHA-512 ont la même structure mais diffèrent par la taille des mots et des blocs utilisés. Elles suivent un schéma itératif sans opération de finalisation.
Définition de la Signature numérique
Une signature est un procédé, qui, appliqué à un message, garantit la non répudiation par le signataire et donc réalise les deux objectifs suivants : Identification unique du signataire,et preuve d’accord sur le contenu du document.[9]
La signature numérique permet de s’assurer que le document n’a pas, et ne peut pas être modifié à mon insu.[w41]
Elle doit posséder les propriétés suivantes :
• Authentique : L’identité du signataire doit pouvoir être retrouvée de manière certaine.
• Infalsifiable : On ne peut pas « imiter » la signature de quelqu’un d’autre.
• Non réutilisable : On ne peut pas « copier/coller » la signature d’un document à un autre.
• Inaltérable : Un document signé est inaltérable, ou du moins, toute altération, si minime soit elle, doit pouvoir être détectée.
• Irrévocable : La personne qui a signé ne peut le nier.
KeyPairGenerator
Cette classe est utilisée pour générer des paires de clés publiques et privées. La classe KeyPairGenerator fournit la méthode getInstance () qui accepte une variable String représentant l’algorithme de génération de clé requis et renvoie un objet KeyPairGenerator qui génère la pair de clés créer un objet KeyPairGenerator pour la génération de la clé comme suit :
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(« algo ») ; algo peut êtres remplacer par RSA ou DSA ou DH
La classe KeyPairGenerator fournit une méthode nommée initialize () cette méthode est utilisée pour initialiser le générateur de paires de clés. Cette méthode accepte une valeur entière représentant la taille de la clé.
Chiffrement
Vous pouvez crypter des données à l’aide de la classe Cipher du package javax.crypto créer un objet Cipher pour chiffré des données comme suit :
Cipher cipher = Cipher.getInstance(« Algo/Modechiffrement/Padding ») ; Algo peut êtres remplacer par AES ou DES ou RSA ou DSA ou DH ModeChiffrement peut êtres remplacer par ECB ou CBC ou OFB ou CFB ou CTR ou CTS …
La méthode init () de la classe Cipher accepte deux paramètres : un paramètre entier représentant le mode de fonctionnement (chiffrer / déchiffrer) comme suit : cipher.init(Cipher.ENCRYPTMODE, publicKey) ; pour le chiffrement asymétriquecipher.init(Cipher.ENCRYPTMODE, secretKey) ; pour le chiffrement symétrique cipher.init(Cipher.DECRYPTMODE, secretKey) ; pour le chiffrement symétrique cipher.init(Cipher.DECRYPTMODE, privateKey) ; pour le chiffrement asymétrique.
Chiffrement Symétrique
Définition : Algorithme de Chiffrement par blocs
Un algorithme de chiffrement par bloc est un algorithme de chiffrement élémentaire permettant de traiter des données de tailles fixes, appelées blocs à l’aide d’un paramètre, appelé clé. Lorsque la clé considérée est fixe, l’opération de chiffrement des blocs est inversible et l’opération inverse est appelée opération de déchiffrement. On note n et k respectivement les tailles en bits des blocs et des clés de l’algorithme.