begin process at 2012 02 11 22:05:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > CRYPTAGE ASYMÉTRIQUE SIMPLE

CRYPTAGE ASYMÉTRIQUE SIMPLE


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité Niveau :Initié Date de création :06/10/2004 Vu / téléchargé :7 890 / 548

Auteur : vlad2i

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Après avoir quelque peu critiqué les codes sur le cryptage, on m'a demandé de faire un exemple ... le voici

Un cryptage asymétrique utilise deux clés (ou plus, peu importe) : une privée et une publique

La clé privée est détenue par le receptionneur du message qui pourra ainsi décrypter le message que l'emmeteur à codé avec une autre clé, dite publique.

La clé publique est calculée a partir de la clé privée, et on ne peut pas retrouver la clé privée a partir de la clé publique. C'est le principe de RSA par exemple.

En dehors de la sécurité accrue par rapport a un cryptage "simple" ou symétrique, il y a, du fait meme de cet algorithme, et aussi a cause du VB, des limites a ce programme... Je les met de suite :
- chaque message crypté a environ 8× la taille du message d'origine
- j'ai mis une séparation claire (le petit ; ) entre les lettre cryptées, ce qui permettrais de faciliter une eventuelle tentative de décodage
- le programme est limité a de petits nombres (or plus les nombres sont grands, plus la sécurité augmente) a cause du type Long de VB (limité à 32 bits)

Tout ca pour dire...ce n'est pas RSA, ce n'est pas infaillible. Mais par rapport au XOR ou autres, y'a pas photo :)


 Conclusion

Le principe mathématique pour ceux que ca intéresse :

soit une suite b(b0, b1, b2, b3, ..., b6, b7) de nombres entiers tels que b(i) soit supérieur à la somme de ses prédécesseurs

P doit etre plus grand que la somme de tous les b. Q doit etre premier avec P.

P, Q et b constituent la partie privée du code.

soit a(a0, a1, a2, a3, ..., a6, a7) de nombres entiers tels que a(i) = kP +Qb(i) avec k un entier quelconque.

a consitue la clé privée.

On transmet donc uniquement la clé publique, qui permet de crypter, et on garde (précieusement :P) la clé privée et le couple P, Q

Pour crypter, on décompose un nombre K en binaire (ex "A" = 41 = 0101001) puis on crée le code R tel que R = K(0)a(0) + K(1)b(1) ....

R représente donc le chiffre (ou la lettre) K codé avec la clé publique.

Pour décrypter, il faut donc le message crypté R, la clé privée b et le couple P, Q

On calcule u et v tels que Pu + Qv = 1.
On calcule H, reste de la division Rv/P

On a alors H = K(0)b(0) + K(1)b(1) + ...
Et b(i)> a tous ses prédecesseurs

Si H - b(7) > 0 alors c(7) = 1
Si H - b(6) > 0 alors c(6) = 1 ...

On finit par obtenir c(c0, c1, c2, c3, ...) qui est la représentation binaire du message d'origine, dans notre exemple, 0101001 = "A"...

C'est assez simple, rapide, et relativement sûr :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip ATTRACTEURS DE CLIFFORD
Source avec Zip Source avec une capture LE CHATEAU DE SABLE
Source avec Zip IMPORTER DU TGA
Source avec Zip Source avec une capture COURBE D'ATTRACTEURS CHAOTIQUES :)
Source avec Zip Source avec une capture COMPRESSION / DECOMPRESSION LZW

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CHIFFREMENT XOR PLUS ROBUSTE par dheroux
Source avec Zip CRYPTAGE MARANT par alpha5
Source avec Zip ACCÈS PAR MOT DE PASSE À FEUILLE EXCEL par mimiZanzan
Source avec Zip CRYPTER-DÉCRYPTER UN TEXTE - TEXTE CRYPTÉ UNIQUEMENT EN MAJ... par Saintache
Source avec Zip Source avec une capture FOLDER PROTECTION par hackoo

Commentaires et avis

Commentaire de sunny le 07/10/2004 09:27:55

Pas mal, mais tout n'est pas clair, par ex :
Pour crypter, on décompose un nombre K en binaire (ex "A" = 41 = 0101001) puis on crée le code R tel que R = K(0)a(0) + K(1)b(1) ....et la suite K(2)a(2) ou b(2)

Ensuite on a Pu + Qv = 1 , pas assez d'info pour résoudre l'équation à moins de choisir u ou v au hasard.
( si v=0 est-ce que cela marche ?)
u sert à quoi car il n'apparait pas dans la suite des explications

Je vais regarder le code pour voir !!

Commentaire de tbbuim1 le 07/10/2004 16:00:56

Bien, mais tu n'as fait qu'appliquer un principe mathématique. Hors dans mon cas, j'avais fait ce programme exclusivement pour crypter mes messages sous msn. Ce que tu auras du mal à faire car ton programme augmente de trop la taille du message d'origine et tu seras donc limité par msn qui coupera ton message! >:(  Et ce dernier sera donc perdu en partie ou en totalité :'( En revanche, tu y gagnes en sécurité, point très positif.
Pas mal, pas mal, tu as bien retenu tes courts de maths ^^ je te mets 8 car ce n'est pas parfait, mais c pas du kk non plus :p

Commentaire de vlad2i le 07/10/2004 18:45:05

tbbuim1> C'est effectivement une simple démonstration technique, je ne cherches pas a te concurrencer, ni d'ailleurs à l'utiliser pour msn !

sunny>"A" = 65 en ASCII = 41 en hexadecimal = 00101001 en binaire
Alors R = K(0)×a(0) ... = (le dernier chiffre binaire)×a(0) +(l'avant dernier)×a(1) ...

Pu + Qv = 1 ... c'est le théorème de Bezout, utilisé dans mon programme :) donc il y a assez d'informations (c qd meme pas des maths de niveau sup c une simple equation du premier degré !)

Valà
Vlad

Commentaire de echoupe le 27/10/2004 11:10:50

Votre code est très intéressant et assez robuste à mon avis. Toutefois, J'aimerais savoir au cas où on éliminerais le caractère <;> lors du cryptage, comment faudrait-il modifier le code du décrypteur? et aussi quel traitement préalable peut-on appliquer au texte crypté afin de s'assurer de sa validité lors du décryptage?
En attendant je vous donnerais bien un 8/10.

Commentaire de vlad2i le 27/10/2004 18:26:16

Tout premièrement, la représentation que j'ai faite de la sortie (xxxxxx; xxxxxx; xxxxxx ....) est une représentation hexadécimale, donc 255 serait FF, 65535 FFFFF ... si j'ai mis les <;> c'est pour séparer les différents "chiffres" du code. Dans une implémentation plus "professionelle", on aurait plutot tendance a encoder ce chiffre sous forme d'un entier binaire (65534 = chr$(255) & chr(254)) qui réduit de beaucoup la taille et a l'avantage de séparer plus discrètement (par exemple si tu utilises toujours 4 octets pour encoder un chiffre, plus besoin de mettre explicitement un <;>)

Donc pour répondre clairement à la question, avant de modifier le décrypteur, il faut déjà que je sache comment se présente la sortie de l'encrypteur. Si le nombres de caractères est fixe pour chaque chiffre, alors on pourra se passer des <;> dans le cas contraire je ne vois pas comment :)

Pour s'assurer de la validité du message, on peut placer un MD5 (crypté il assurerait une validité totale, décrypté il peut etre un risque si on connait la taille du message) je peux te donner des exemples.

Robuste, on peut le supposer, étant donné que l'on travaille avec des chiffres, des combinaisons de grands chiffres - la faillibilité du programme réside justement dans la taille des chiffres. Ici, bridé par le type Long de Visual Basic , j'ai du me contenter de "petits" entiers et il s'avère que, meme si le code ici est plus robuste (a coup sur) qu'un Vigenère, XOR (voire DES :P) il n'en reste pas moins discutable face à Rijndael, RSA ...

Dans la théorie, tu peux utiliser de très grands entiers. RSA multiplie des facteurs premiers, et la difficulté pour le casser tient dans la factorisation de grands nombres, forcément d'autant plus longue que le nombre est grand. Mon code additionne plusieurs grands entiers en combinaison. On ne peut pas retrouver directement le code comme avec RSA, mais mon code aurait peut etre, je le suppose, une faiblesse face aux attaques différencielles (cad si on connait un message et sa forme cryptée en ayant le crypteur en libre accès)

Une réponse un peu complexe mais la plus complète possible je l'espère.

Vlad

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales