Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Comprendre le chiffrement et ses types
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Comprendre le chiffrement et ses types

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

La sécurité des données est une préoccupation croissante à l’ère numérique.

Sans chiffrement efficace, les informations sensibles risquent d’être exposées aux cyberattaques.

Cet article explore les types de chiffrement, symétrique et asymétrique, et l’utilisation des courbes elliptiques pour renforcer la sécurité cryptographique.

Table de matière
FAQConclusion

Formation Blockchain : Découvrir les Fondamentaux

Initiez-vous à la Blockchain et explorez ses principes fondamentaux.

Découvrir cette formation

Chiffrement

Le procédé par lequel on souhaite rendre la compréhension d’un document impossible à toute personne non autorisée à pouvoir le lire

Le process est le suivant on va avoir un algorithme de chiffrement (une fonction mathématique) qui est prouvé mathématiquement qu’il est sécurisé. On va injecter dans l’entrée un texte pour le chiffrer avec une certaine clé qui est doit être inconnu pour avoir le résultat qui est le texte chiffré .

Schéma montrant le processus de chiffrement cryptographique

Chiffrement symétrique

Ça veut dire quoi le chiffrement symétrique ?

Comme on a vu, dans le processus du chiffrement, on a une clé qui est inconnue, et donc Dans le chiffrement symétrique, la clé de chiffrement est la même que la clé de déchiffrement.

Par exemple si on a deux personnes Alice et Bob qui veulent communiquer d’une façon sécurisée et confidentielle. Alice va prendre le message, il va le chiffrer avec une clé secrète. Ensuite, il va avoir un texte chiffré. Le texte chiffré est envoyé à travers un canal de propagation. Bob, à son tour va prendre le texte chiffré et il va le déchiffrer avec la même clé. Cette clé est appelée la clé privée (exemple chiffre de César, est un algorithme de chiffrement symétrique).

Schéma de chiffrement symétrique avec Alice et Bob
  • Avantages

Rapide : Les algorithmes de chiffrement symétrique sont généralement beaucoup plus rapides que les algorithmes de chiffrement asymétrique. Ils sont donc souvent utilisés pour chiffrer de grandes quantités de données.

  • Inconvénients

Ne permet pas la signature électronique : Les algorithmes de chiffrement symétrique ne permettent pas la création de signatures numériques.

Problème de distribution de clés : Le principal problème du chiffrement symétrique est la gestion et la distribution des clés. Chaque paire de parties communicantes doit partager une clé secrète, ce qui peut être difficile à gérer en toute sécurité, surtout à grande échelle.

chiffrement asymétrique

Ça veut dire quoi le chiffrement asymétrique ?

La notion de clé va changer dans le chiffrement asymétrique, on aura à la place d’une clé, deux clés. La première clé va servir comme une clé publique et la deuxième, ça sera une clé privée . En général, pour la clé publique, c’est la clé qu’on utilise pour le chiffrement. Et la clé privée pour déchiffrer le message.

On a par exemple Alice et Bob et ils veulent échanger un ensemble de messages tout en éliminant le risque qu’un attaquant va intercepter le message et le lire.

Alice va prendre le texte, il va le chiffrer avec la clé publique de Bob .

La clé publique est connue et donc il n’y a pas de risque que le hacker va faire une grande chose avec cette clé.

Ensuite, on a le texte qui est chiffré. Ce texte est transmis dans un canal de propagation et Bob va avoir besoin de son clé privée, pour le déchiffrer.

On peut l’utiliser ce processus pour générer des signatures. Pour les signatures, on peut faire l’opération inverse. On va utiliser la clé privée pour le chiffrement, mais pour déchiffrer le message, on va avoir besoin de sa clé publique.

Diagramme des processus de chiffrement et signature
  • Avantages

Permet la signature électronique : Les algorithmes de chiffrement asymétrique permettent la création de signatures numériques, qui garantissent l’intégrité et l’authenticité des messages. Cela est essentiel pour les transactions électroniques et les communications sécurisées.

Utilise deux clefs distinctes : l’une ne permettant pas de retrouver l’autre.

  • Inconvénients

Trop lent pour une utilisation intensive en chiffrement : Les algorithmes de chiffrement asymétrique sont généralement beaucoup plus lents que les algorithmes de chiffrement symétrique. Ils ne sont donc pas idéaux pour chiffrer de grandes quantités de données.

Les courbes elliptiques

Les courbes elliptiques sont des outils mathématiques qui ont été introduits en 1985 par Neal Koblitz et Victor S. Miller . Elles sont utilisées en cryptographie pour améliorer les primitives cryptographiques existantes, par exemple en réduisant la taille des clés cryptographiques, ou de construire de nouvelles primitives cryptographiques qui n’étaient pas connues auparavant.

Ce que l’on peut faire avec les courbes elliptiques :

  • Échange de clés :Avec les courbes elliptiques, on peut réaliser un échange de clés de manière sécurisée entre deux parties.
  • Transmission de messages :Ces courbes permettent aussi de transmettre des messages chiffrés pour assurer leur confidentialité.
  • Signatures électroniques :On peut également s’en servir pour créer des signatures électroniques afin de vérifier l’authenticité et l’intégrité des documents.
  • Différence principale avec les algorithmes classiques (exemple :RSA):Ce qui distingue les algorithmes basés sur les courbes elliptiques des algorithmes classiques comme RSA, c’est qu’ici, il faut résoudre un logarithme discret, alors que les classiques reposent sur la factorisation des nombres premiers, un problème qui semble plus simple à traiter par rapport à celui des courbes elliptiques.
Illustration de courbes elliptiques avec secp256k1

implémentation

On va passer directement à un code où on va implémenter la notion de la courbe elliptique en Python.

				
					
 importrandom
defspecialdiv(x, y, n):
if(x % y) *10==0:
returnint(x / y)
else:
c = (y ** (n -2)) % n
returnx * cc

				
			

Importe le module random pour générer des nombres aléatoires après on a défini la fonction specialdiv cette fonction réalise une division spéciale dans le champ fini de modulo n. Si (x % y) * 10 == 0, elle effectue une division entière classique. Sinon, elle utilise l’inverse multiplicatif de y modulo n pour effectuer la division.

				
					
 class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def display(self):
print("(%d,%d)" % (self.x, self.y))

				
			

La classe Point représente un point sur la courbe elliptique avec des coordonnées x et y .

				
					
 def addition(self, Point2):
c = specialdiv(Point2.y - self.y, Point2.x - self.x, self.inthe.mod) % self.inthe.mod
x = (c ** 2 - self.x - Point2.x) % self.inthe.mod
y = (c * (self.x - x) - self.y) % self.inthe.mod
return Point(x, y)

				
			

Cette méthode additionne deux points sur la courbe elliptique. Elle utilise la fonction specialdiv pour calculer la pente c et ensuite calcule les nouvelles coordonnées x et y .

				
					
 def doubling(self):
if hasattr(self, 'inthe'):
c = specialdiv(3 * (self.x ** 2) + self.inthe.a, 2 * self.y, self.inthe.mod) % self.inthe.mod
x = (c ** 2 - 2 * self.x) % self.inthe.mod
y = (c * (self.x - x) - self.y) % self.inthe.mod
return Point(x, y)
else:
print( "The point is not in an Elliptic Curve!")
return Point(0, 0)

				
			

Cette méthode double un point sur la courbe elliptique . Elle vérifie d’abord si le point appartient à une courbe elliptique en vérifiant l’attribut inthe . Elle utilise ensuite la formule de doublement pour calculer les nouvelles coordonnées x et y .

				
					
 def nMulti(self, n):
if n == 1:
return self
elif n == 2:
return Point.doubling(self)
else:
return self.addition(Point.nMulti(self, n - 1))

				
			

Cette méthode multiplie un point par un scalaire n en utilisant une méthode récursive. Si n est 1 , elle retourne le point lui-même. Si n est 2 , elle retourne le double du point. Pour des valeurs plus grandes, elle utilise l’addition de points.

				
					
 class Elleptic:
def __init__(self, a, b, mod):
self.a = a
self.b = b
self.mod = mod
self.points = []
def insertPoint(self, Point1):
self.points.append(Point1)
Point1.inthe = self
return self
def calculY(elleptic, x):
return x ** 3 + elleptic.a * x + elleptic.b

				
			

La classe Elleptic représente une courbe elliptique définie par les paramètres a , b et un modulo mod . La méthode insertPoint ajoute un point à la courbe et attribue la courbe au point. La méthode calculY calcule la coordonnée y pour une donnée x sur la courbe elliptique.

(

				
					
 a = int(input('Give the a for elleptic curve: '))
b = int(input('Give the b for elleptic curve: '))
mod = int(input('Give the Prime mod for elleptic curve: '))
e1 = Elleptic(a, b, mod)
print("Elleptic Created with a = " + str(a) + " b = " + str(b) + " and Prime Modulo : " + str(mod))
x_base = int(input('Give the x for the base: '))
y_base = int(input('Give the y for the base: '))
ptBase = Point(x_base, y_base)
print("Point Base Created")
order = int(input('Give the order: '))
e1 = Elleptic(a, b, mod)
e1.insertPoint(ptBase)

				
			

Cette section initialise les paramètres de la courbe elliptique, crée un point de base, et insère ce point dans la courbe.

				
					
 pk = int(input('Give the Private key: '))
data = int(input('Give u r data : '))
pb = ptBase.nMulti(pk)
print("Public Key Generated x = " + str(pb.x) + " y = " + str(pb.y))

				
			

Cette section lit la clé privée et les données à signer, et génère la clé publique en multipliant le point de base par la clé privée.

				
					
 while(True):
tmp = 3
pt_tmp = ptBase.nMulti(tmp)
r = pt_tmp.x % order
if r != 0:
s = specialdiv(data + r * pk, tmp, order)
if s != 0:
sig = Point(r, s)
break
print("U r signature is done - x: " + str(sig.x) + " and y : " + str(sig.y))

				
			

Cette section génère une signature en choisissant un nombre aléatoire k et en calculant r et s pour former la signature.

				
					
 print( "~~~~ DECRYPTION ~~~~")
data = int(input('Give u r data : '))
x_sig = int(input('Give the x for the signature : '))
y_sig = int(input('Give the y for the signature : '))
sig = Point(x_sig, y_sig)
e1.insertPoint(sig)
x_pb = int(input('Give the x for the Public Key : '))
y_pb = int(input('Give the y for the Public Key : '))
pb = Point(x_pb, y_pb)
e1.insertPoint(pb)
if sig.x > 1 or sig.x < order - 1 or sig.y > 1 or sig.y < order - 1:
w = specialdiv(1, sig.y, order)
u = (data * w) % order
v = (sig.x * w) % order
uG = ptBase.nMulti(u)
vQ = pb.nMulti(v)
e1.insertPoint(uG)
e1.insertPoint(vQ)
pt_Final = uG.addition(vQ)
pt_Final.display()
if sig.x == pt_Final.x % order:
print("Signature Valide")
else:
print("Signature Invalide - Modulo Failed")
else:
print("Invalide Signature - Comparaison Failed")

				
			

Cette section vérifie la validité de la signature. Elle calcule w , u , et v , puis multiplie le point de base par u et la clé publique par v . Elle additionne les résultats et compare la coordonnée x de la somme avec r pour vérifier la signature.

Code cryptographique utilisant une courbe elliptique

Notre programme va nous dire de donner le paramètre a et b on va donner par exemple 1 a la variable a et 7 pour le b c’est ici parce qu’on va utiliser l’équation de la courbe elliptique du Bitcoin. Après, il va nous dire de donner un nombre premier. Donc, on a le choix de choisir n’importe quel nombre. Par exemple, on va choisir 67 . On va choisir un point, ou bien un x qui va se servir comme un point de référence. Le 2 . Le 22 pour le y . le point de base, il est créé. Ensuite, on va donner l’ordre 79 , c’est un paramètre aussi qui va être important dans le chiffrement elliptique. Et finalement, on va donner notre clé privée, donc c’est avec cette clé que la signature, ou bien le chiffrement va être fait. Dans notre cas, par exemple, on va mettre la clé privée 2 . Et finalement, on va donner notre donnée qu’on veut qui soit être chiffrée ou bien signée. Par exemple 152 . Donc ici, on va remarquer que la clé publique est générée. C’est un point avec les x et les y, mais aussi la signature qui est générée

Avec le x et le y. Vous remarquez que dans la logique cryptographie elliptique, tout est exprimé sous forme de points et de relations entre les points. Il faut d’abord convertir les données ou sous forme de nombres, ensuite les convertir sous forme de points pour ensuite faire la signature et faire la vérification.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce que le chiffrement et pourquoi est-il utilisé ?
Le chiffrement est un procédé visant à rendre la compréhension d’un document impossible pour les personnes non autorisées. Il utilise des algorithmes mathématiques pour transformer les données en un format illisible sans la clé appropriée. Ce mécanisme est essentiel pour assurer la sécurité et la confidentialité des communications numériques, en protégeant les informations sensibles des accès non autorisés.
Comment fonctionne le chiffrement symétrique ?
Le chiffrement symétrique utilise une seule clé pour chiffrer et déchiffrer les données. Cette clé doit être partagée secrètement entre les parties communicantes, ce qui peut poser des défis en termes de distribution sécurisée. Il est rapide et efficace pour chiffrer de grandes quantités de données, mais ne permet pas la création de signatures électroniques, limitant son utilisation dans certaines applications.
Quelles sont les différences entre le chiffrement symétrique et asymétrique ?
Le chiffrement symétrique utilise une seule clé partagée pour chiffrer et déchiffrer les données, tandis que le chiffrement asymétrique utilise une paire de clés, publique et privée. La clé publique chiffre les données et la clé privée les déchiffre, permettant des échanges sécurisés sans nécessité de partager la clé privée. Le chiffrement asymétrique est plus lent mais permet la création de signatures numériques.
Quels sont les avantages des courbes elliptiques en cryptographie ?
Les courbes elliptiques offrent des avantages notables en cryptographie, notamment la réduction de la taille des clés tout en maintenant un niveau de sécurité élevé. Elles permettent un échange de clés sécurisé et des signatures électroniques plus compactes par rapport aux méthodes classiques comme RSA. Elles sont aussi plus efficaces en termes de calcul, rendant la cryptographie plus rapide et moins gourmande en ressources.
Comment implémenter les courbes elliptiques en Python ?
L’implémentation des courbes elliptiques en Python nécessite de définir des classes pour les points et les courbes, ainsi que des fonctions pour les opérations arithmétiques sur les points. Le code doit gérer la création de clés privées et publiques, ainsi que la signature et la vérification des messages. L’utilisation de bibliothèques comme ‘random’ pour générer des valeurs aléatoires est également nécessaire pour simuler les opérations cryptographiques complexes.

Conclusion

Le chiffrement est fondamental pour la sécurité numérique moderne, avec des méthodes variées adaptées à différents besoins. Quel type de chiffrement trouvez-vous le plus pertinent pour vos applications ou recherches futures ?

ÉTIQUETÉ : Blockchain
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Comprendre le chiffrement et ses types

© Alphorm - Tous droits réservés