8 : ELEMENTS DE CRYPTOGRAPHIE

12
Informatique et Sciences du Numérique 1 8 : ELEMENTS DE CRYPTOGRAPHIE Représentation de l’information Algorithmique Langages et programmation Architectures matérielles CONNAISSANCES ABORDEES Numérisation : Coder un caractère sous forme d'un code standard ou d'une liste de valeurs numériques Persistance de l'information : Comprendre les principes généraux permettant de se comporter de façon responsable par rapport aux droits des personnes Algorithme simple : Programmer un algorithme Correction d'un programme : mettre un programme au point en le testant et l'instrumentant Supranationalité des réseaux : Prendre conscience des conséquences économiques, sociales et politiques … PROBLEMATIQUE Comment assurer la confidentialité d’un message ou d’un transfert de données dans un monde où la notion de réseau est devenu incontournable ? CONDITIONS DE DEROULEMENT DE L’ACTIVITE Phases de travail Objectifs Activités A) Mise en situation Comprendre les enjeux de la cryptographie Questions liés au transfert de données, la sécurité et la législation B) Activités Etre capable de crypter des données (texte) Etre capable de modifier un programme existant Tester la validité d’un programme Compléter un programme afin de réaliser un cryptage par substitution mono- alphabétique C) Synthèse Rendre compte de manière individuelle de la validité de son programme Décrypter, à partir du programme réalisé, un message codé par César à Cléopatre LOGICIEL UTILISE : - Compilateur C DevC++ 4.9.9.2 DUREE : 1 Séance Dessin : Simon « Gee » Giraudot, source : geektionnerd.net

Transcript of 8 : ELEMENTS DE CRYPTOGRAPHIE

Page 1: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

1

8 : ELEMENTS DE CRYPTOGRAPHIE

Représentation de l’information

Algorithmique

Langages et programmation

Architectures matérielles

CONNAISSANCES ABORDEES

Numérisation : Coder un caractère sous forme d'un code standard ou d'une liste de valeurs numériques

Persistance de l'information : Comprendre les principes généraux permettant de se comporter de façon

responsable par rapport aux droits des personnes

Algorithme simple : Programmer un algorithme

Correction d'un programme : mettre un programme au point en le testant et l'instrumentant

Supranationalité des réseaux : Prendre conscience des conséquences économiques, sociales et politiques …

PROBLEMATIQUE Comment assurer la confidentialité d’un message ou d’un transfert de données dans un monde où la notion de réseau est devenu incontournable ?

CONDITIONS DE DEROULEMENT DE L’ACTIVITE

Phases de travail Objectifs Activités

A) Mise en situation

Comprendre les enjeux de la cryptographie

Questions liés au transfert de données, la sécurité et la législation

B) Activités

Etre capable de crypter des données (texte) Etre capable de modifier un programme existant Tester la validité d’un programme

Compléter un programme afin de réaliser un cryptage par substitution mono-alphabétique

C) Synthèse

Rendre compte de manière individuelle de la validité de son programme

Décrypter , à partir du programme réalisé, un message codé par César à Cléopatre

LOGICIEL UTILISE :

- Compilateur C DevC++ 4.9.9.2

DUREE : 1 Séance

Dessin : Simon « Gee » Giraudot, source : geektionnerd.net

Page 2: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

2

1. MISE EN SITUATION :

- Un mathématicien est chercheur dans le domaine de la cryptographie. Il vient de mettre en place un

nouvel algorithme de cryptage. Peut-il le publier sans compromettre la sécurité des futurs utilisateurs ?

- Vous venez de recevoir un mail d’un vieil ami qui le supplie de lui envoyer de l’argent pour faire face à une

situation urgente. Pouvez-vous vous assurer de l’intégrité du message et de l’identité de l’émetteur ?

(notion de signature numérique d’un message).

- Deux enseignants collaborent pour préparer un sujet d’examen, mais n’habitent pas dans la même ville.

Comment peuvent-ils faire pour échanger leurs projets de sujets en toute sécurité ? (stratégie de

chiffrement des courriels).

- Deux amis se connaissent depuis longtemps et correspondent par courriel. L’un habite en France et

l’autre dans un pays où l’usage d’Internet est fortement encadré. Ont-ils intérêt à utiliser des courriels

chiffrés ? (ouverture vers la stéganographie).

- Deux employés sont dans la même entreprise. Ils échangent des courriels. Ont-ils le droit d’échanger des

courriels chiffrés ?

- Une famille dispose pour se connecter à Internet d’une box avec un accès wi-fi . L’accès nécessite une clé

WEP 128 bits. Cette clé garantit-elle une sécurité absolue

- Une personne souhaite faire des achats sur le web. Prend-il des risques en tapant le numéro de sa carte

bancaire ?

2. ACTIVITE : LE CRYPTOSYSTEME DE CESAR

PRINCIPE

Le code de César est la méthode de cryptographie la plus ancienne communément admise par l'histoire. Il

consiste en une substitution mono-alphabétique, où la substitution est définie par un décalage de lettres. Par

exemple, si on remplace A par D, on remplace B par E, C par F, D par G, etc... Donnons un exemple sur à partir de

ce décalage de 3 lettres :

Texte clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Texte codé D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Page 3: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

3

Par exemple, le texte à coder est le suivant :

JE LEVAI LES YEUX VERS LE SOLEIL IL ETAIT BAS ; DANS MOINS D'UNE HEURE IL ARRIVERAIT JUSTE AU-DESSUS DES

BRANCHES SUPERIEURES DU VIEUX CHENE.

Le texte codé est alors :

MH OHYDL OHV BHXA YHUV OH VROHLO LO HWDLW EDV ; GDQV PRLQV G'XQH KHXUH LO DUULYHUDLW

MXVWH DX-GHVVXV GHV EUDQFKHV VXSHULHXUHV GX YLHXA FKHQH.

Il n'y a que 26 façons différentes de crypter un message avec le code de César. Cela en fait donc un code très peu

sûr, puisqu'il est très facile de tester de façon exhaustive toutes les possibilités. Pourtant, en raison de sa grande

simplicité, le code de César fut encore employé par les officiers sudistes pendant la guerre de Sécession, et même

par l'armée russe en 1915.

OBJECTIF DE L’ACTIVITE

Réaliser un programme en langage C permettant de lire un fichier texte, le crypter selon le code de César et

générer un autre fichier texte crypté.

ETAPES A REALISER :

- Lire le fichier texte et mettre les caractères dans un tableau de caractères,

- Convertir les caractères en un entier (code ASCII équivalent),

- Demander à l’utilisateur la clé de cryptage,

- Crypter le texte,

- Ecrire le résultat du cryptage dans un nouveau fichier texte.

REMARQUES : On se limitera à crypter un texte uniquement composé de lettres minuscules.

AU TRAVAIL …

1. Ouvrir le bloc-note et saisir un petit texte (en minuscules). Enregistrer votre fichier sous test.txt

dans un répertoire dans lequel vous enregistrerez votre programme DevC++.

2. Ouvrir le fichier cryptage.txt et compiler le programme avec DevC++ :

#include <stdio.h> #include <stdlib.h> #include <string.h> #define TAILLE_MAX 1000 /****** FONCTION DE CONVERSION D'UN CARACTERE EN ENTIER (CODAGE ASCII) *************/ int char2ascii(char c) { return ((int) c); // convertit le caractère en entier (son code ASCII) } /****************** FONCTION PRINCIPALE ******************/ void main()

Page 4: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

4

{ int i,a; char chaine2[TAILLE_MAX] = ""; // Chaîne vide de caractères du texte initial de taille TAILLE_MAX char cryptee[TAILLE_MAX] = ""; // Chaîne vide de caractères du texte crypté de taille TAILLE_MAX int longueurChaine = 0; // entier pour récupérer la longueur de la chaine de caractères FILE* fichier = NULL; fichier = fopen("test.txt", "r"); // ouverture du fichier texte text.txt if (fichier != NULL) { fgets(chaine2, TAILLE_MAX, fichier); // On lit TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine2" printf("message initiale :\n%s\n", chaine2); // On affiche la chaîne "chaine2" à l'écran fclose(fichier); // On ferme le fichier } longueurChaine = strlen(chaine2); // On récupère la longueur de la chaîne "chaine2" dans longueurChaine /* A COMPLETER ICI ! */ for(i=0;i<longueurChaine;i++) { cryptee[i]= char2ascii(chaine2[i]); // On recopie chaine2[] dans cryptee[] /* A COMPLETER ICI ! */ } printf("message crypte :\n%s\n", cryptee); // On affiche la chaîne "cryptee" à l'écran FILE* fichier2 = NULL; fichier2 = fopen("testecriture.txt", "w"); // ouverture du fichier texte testecriture.txt pour écriture if (fichier2 != NULL) { fputs(cryptee, fichier2); // ecriture de la chaine "cryptee" dans testecriture.txt fclose(fichier2); // fermeture du fichier } system("PAUSE"); }

Vérifier qu’un fichier texte « testecriture.txt » a bien été crée.

3. Compléter le programme afin de :

- Demander à l’utilisateur son nombre de cryptage,

- Décaler chaque caractère de son nombre de cryptage sauf s’il s’agit d’un espace,

- Si le code ASCII du caractère cryptée dépasse le « z », penser à décaler vers de

début de l’alphabet

4. Tester et vérifier le résultat de votre cryptage.

5. Vous pouvez améliorer votre programme en créant une petite interface avec possibilité soit :

1. Possibilité pour l’utilisateur de saisir sa clé (nombre) de cryptage

2. Génération automatique et aléatoire de la clé de cryptage (inconnu pour l’utilisateur)

Page 5: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

5

3. POUR ALLER PLUS LOIN …

Réaliser un programme permettant de décrypter un message (fichier texte). Il faudra pour cela tester et

afficher les 26 combinaisons possibles.

DECRYPTER LE MESSAGE ENVOYE PAR CESAR A CLEOPATRE :

ZU CU IKYI CYI Q DK

QK REHT TU BQ WHQDTU RBUKU

Z'QY CYI CED SEUKH Q DK

UJ YB QLQYJ TUI RBUKI

4. ET ENCORE PLUS LOIN …

Etudier le cryptosystème de Vigenere et réaliser un programme qui prend en entrée une phrase en majuscules uniquement composée de lettres de l’alphabet (« A ».. »Z ») et d’espaces, une clé elle aussi en majuscules et qui retourne cette phrase chiffrée

Page 6: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

6

5. SITOGRAPHIE CLE WEP : http://fr.wikipedia.org/wiki/Wired_Equivalent_Privacy CODE DE CESAR : http://www.bibmath.net/crypto/substi/cesar.php3 STEGANOGRAPHIE : http://fr.wikipedia.org/wiki/St%C3%A9ganographie LE CRYPTAGE : http://www.evariste.org/yolin/2000/1-4-1-2-2.html QUAND ET POURQUOI CRYPTER SES CONNEXIONS : http://forum.malekal.com/quand-pourquoi-crypter-chiffrer-ses-connexions-t20071.html OU S’ARRETE LA VIE PRIVEE DES SALARIES : http://dfcg-blog.org/2012/01/24/informatique-ou-sarrete-la-vie-privee-du-salarie/

Page 7: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

7

ANNEXE 1 : ELEMENTS DE REPONSE DE LA MISE EN SITUATION

SOURCE : Wikipédia

SOURCE : Le Blog du directeur financier

Page 8: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

8

SOURCE : Wikipédia

SOURCE : Wikipédia SOURCE : Wikipédia

Page 9: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

9

ANNEXE 2 : TABLE DE CODAGE ASCII

Page 10: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

10

ANNEXE 3 : POURQUOI CRYPTER SES COURRIELS Extrait du site http://www.gbronner.net/mail/cryptoMail.html#accescourriels Gerard DONNER

Page 11: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

11

Page 12: 8 : ELEMENTS DE CRYPTOGRAPHIE

Informatique et Sciences du Numérique

12