Want to make creations as awesome as this one?

Transcript

Création d'un système de messagerie crypté

projet s3Cr3t

Date 01-04-2022

éléves : Loqmann ; Abou-Bakr ; Madavan ; Mohammed-Amine
Professeur: Mme.Vezie ; M.Mollard

SOMMAIRE

03. Cryptage N°1

06. Interface

07. Réseaux

05. Cryptage N°3

09. Remerciements

01. Explications

08. Conclusion

02. Objectifs

04. Cryptage N°2

01.
explICATIONS

Quel est le but de notre projet ?

Tout d’abord notre projet consiste à créer une messagerie crypté avec une interface graphique.

Il y sera développé la partie de l'émetteur (celui qui envoi le message crypté) et celle du récepteur (celui qui doit décrypter le message pour le lire).

  • Chaque utilisateur a une interface
    • Envoyer un message (il sera crypté)
    • Recevoir un message (le décrypter)
    • Envoyer un fichier (il sera crypté)
    • Recevoir un fichier (le décrypter)

Le principe est simple...

02.
Objectifs

Etapes à réaliser

  • Créer l'interface graphique
  • Faire le lien entre 2 machines ( LAN )
  • Créer des programmes de dé/chiffrement

Détails

  • Une interface graphique ressemblant à une messagerie
  • LAN : Local Area Network
  • Trois programmes différents
    • Méthode XOR
    • Méthode César
    • Méthode Skez

Voici les grandes lignes de ce que nous devons faire :

03.
cryptage n°1

Méthode César

  • entrer texte à chiffrer
  • remplacer chaque lettre du texte à chiffrer par la lettre qui se situe n places plus loin dans l'alphabet.
  • renvoie le texte chiffré

Algorithme

03.
cryptage n°1

Méthode César

Programme

03.
Décryptage n°1

Méthode César

  • entrer texte à déchiffrer
  • remplacer chaque lettre du texte à déchiffrer par la lettre qui se situe n places avant dans l'alphabet.
  • renvoie le texte déchiffré

Algorithme

03.
Décryptage n°1

Méthode César

Programme

04.
Dé/cryptage n°2

Méthode XOR

  • Lire le fichier à chiffrer
  • Ouvrir le fichier final pour pouvoir écrire
  • Répéter tant que le dernier bit n’est pas crypté
  • Lire bit par bit le fichier à crypter en binaire
  • On fait un XOR entre le texte du fichier en binaire et la clé en binaire
  • Ecrire dans le fichier de sortie le message crypté


Tableau XOR

Algorithme

04.
Dé/cryptage n°2

Méthode XOR (pour fichier)

Tableau XOR

Programme

05.
Cryptage N°3

Cryptage de la clé de chiffrement

Et oui ! Plus de chiffrement rend l'accès aux données plus difficile pour tout individu externe. C'est pourquoi nous utilisons une méthode efficace pour rendre la clé illisible lors de l'envoi

05.
Cryptage N°3

Déroulement du programme

<Saisie du nom de la clé>

Fonction cryptage

0

1

2

a

b

c

A

B

...

table ascii (list)

#

Y

.

?

$

z

u

7

...

new table ascii (list)

#

Y

.

?

$

z

u

7

...

new chaine ascii (str)

#

Y

.

?

$

z

u

7

...

key (str)

<c0de clé> +

def creer_le_message

def convertir_cle

Entrée: code, list1, list2

Boucle autant de fois que de caractères dans code

Boucle autant de fois que de caractères dans list1

c

0

d

e

0

1

2

a

b

c

A

B

...

z

#

,

9

#

Y

.

?

$

z

u

7

...

return

05.
deCryptage N°3

Déroulement du programme 1/2

récupérer le texte chiffré

Fonction decryptage

0

1

2

a

b

c

A

B

...

ascii (list)

8

n

!

o

_

1

)

}

...

key (.txt)

z # , 9 # Y . ? $

def recuperer_le_texte

def separer_cle_liste

Taille: 104

Taille: 100

z

#

,

9

#

Y

.

?

...

chaine cle (str)

chaine_cle = key.read()

separation = len(cle)-len(ascii)

104

100

la_cle (str)

la_liste (str)

z

#

,

9

#

Y

.

?

$

z

u

7

...

retourne la cle et la chaine

05.
deCryptage N°3

Déroulement du programme 2/2

Fonction decryptage

def avoir_la_vraie_cle

0

1

2

a

b

c

A

B

...

ascii (str)

lien_2_chaines(dict)

liste_melange (str)

#

Y

.

?

$

z

u

7

...

# : 0 , Y : 1 , . : 2 , ? : a , $ : b , z : c , u : A , 7 : B , ... : ...

la_cle (str)

z

#

,

9

cle_finale (str)

c

0

d

e

Entrée: cle, liste_melange

05.
cryptage générale

Méthode skez/César

  • cryptage de la clé (methode skez)
  • crypter le message (César)
  • renvoyer le message crypté avec la clé crypté séparer à l'aide d'un séparateur


Programme

Algorithme

05.
Décryptage générale

Méthode skez/César

  • Sélectionner la partie gauche avant le séparateur et faire un decryptage de césar
  • Sélectionner la partie droite aprés le séparateur et faire un decryptage avce la méthode Skez
  • Renvoyer le message décrypté


Programme

Algorithme

06.
Interface

Rendu à l'image

Interface finale avec l'utilisation principale de Gui ainsi que d'autre bibliothèques comme pour la scrollbar

Programme Python

Nous avons utilisé la bibliothèque Gui

afin de créer une interface grafique où nous afficherons les messages envoyés et reçus


INTERFACE 6.1

Toutes les bibliothèques et les modules utilsés définit en haut de page

Début du programme :

Initialisation et connexion entre les deux PC qui communiquent

INTERFACE 6.2

La fonction qui met à jour le chat à chaque message envoyé

On discerne ici clairement deux partie dans le programme

- celle qui gère les fonctions
-celle qui gère la fenêtre

INTERFACE 6.3

Première Partie:

Toutes les fonctions appelées durant l'exécution du programme

Deuxième Partie:
L a partie du programme qui s'occupe purement du visuel et appelle les fonctions lorsque que l'on en a besoin

INTERFACE 6.4

Visuel finale avec la bibliohèque Gui

Interface finale avec les messages de 2 PC qui communiquent

INTERFACE 6.5

Choix de changement total de la bibliothèques qui nous a permis un meilleur rendu et qui es plus facil une fois comprise, on y retrouve des similitude avec Tkinter

  • Rendre plus attrayant visuellement
  • La fonction pour importer et crypter des fichier
  • Ajout de l'application dans le bureau avec un exécutable

Changement :

Améliorations possibles :

  • Beaucoup d'idée au départ très gourmant mais pas réussi a tout réaliser bien que il y a eu des problèmes on c'est remis en question et on les surmontés
  • Avec plus de temps on aurait pu réussir totalement tout ce qui était voulu et envisager

Conclusion :

07.Communication Reseaux

Comment va ce faire la communication entre reseaux ?

La communication va se faire par le module socket (Le module socket de Python permet de gérer les connexions, un socket est un objet qui permet d'ouvrir une connexion avec une machine, locale ou distante, et d'échanger avec elle.)

07.Communication Reseaux

def initialize_server():

s = socket(AF_INET,SOCK_STREAM)
host =
port =
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
return conn

server side

client side

Adresse IP - serveur

Port - serveur

Nombres de clients

def initialize_client():

s = socket(AF_INET,SOCK_STREAM)
host =
port =
s.connect((host, port))

return conn

Adresse IP - serveur

Port - serveur

07.Communication Reseaux

def send():

msg = textbox.get("0.0", END)
update_chat(msg, 0)
c_msg = crypt_general(msg)
conn.send(c_msg.encode('utf-8'))
textbox.delete("0.0", END)

return conn

envoyer le message

recevoir le message

def receive():

while 1:
try:
data = conn.recv(1024)
msg = data.decode('utf-8')
print("Message recu le ", {date}, " : \n", msg)
dc_msg = decrypt_general(msg)
if dc_msg != "":
update_chat(dc_msg, 1)

except:
pass

def press(event):
send()

07.Communication Reseaux


textbox.bind("<KeyRelease-Return>", press)
# lance le programme en mémoire (thread)
_thread.start_new_thread(receive, ())
# tkinter: boucle de la fenêtre
gui.mainloop()

Très Très Important !

08.
Conclusion

Plus de chiffrement -> Plus de sécurité

Ce projet nous permet de communiquer en sécurité à l'abris des hackeurs.

Nous mettons ainsi en relation deux machines connectés localement. Les messages qui transitent sont chiffrés et illisibles sans la fonction et la clé le permettant.

MERCI DE VOTRE ATTENTION

Avez-vous des questions?