CEH pseudo code -

Le
Philippe Lheureux
1 - Création d'une première partie de clé

L'intervalle général de travail à prendre en compte se situe entre 100000 et
999999 compris. Ce qui fait 999999-100000‰9999 possibilités d'utiliser un
chiffre compris entre 100000 et 999999 pour coder l'ensemble des 256
caractères ASCII.

La moyenne par caractères ASCII est donc de 899999/256 515.62
possibilités de chiffrage différents.

Le premier but à atteindre est la création d'un tableau à deux dimensions
faisant coïncider chacun des caractères ASCII avec un intervalle bien
précis.

Afin de compliquer la cryptanalyse, les intervalles doivent être variables
et les cases du tableau des caractères ASCII remplis avec un ordre
ALEATOIRE.

La variabilité d'un intervalle est de 515 numéros.

Remplir le tableau de 0 a 255 avec un algorithme fixant la valeur BORN_MAX
de chaque intervalle.

La valeur de départ étant : 100000

BORN_MAX(0)= 100000 + 3000 + (un chiffre pris au hasard entre 0 et 515)
BORN_MAX(1)= BORN_MAX(0) + 3000 + (un chiffre pris au hasard entre 0 et 515)
Et ainsi de suite
Jusqu'à BORN_MAX(254)
La 256 eme case du tableau (qui va de l'indice 0 à l'indice 255) contiendra
donc plus de 3515 possibilités de chiffrage.
BORN_MAX(255)= forcement 999999

En ce qui concerne la répartition des caractères ASCII affectés à chaque
intervalles, il faut aussi que les cases soient remplies au hasard

Exemple :
CARACTERE(0)5 ( 195 est le code du caractère ASCII )
CARACTERE(1)b
CARACTERE(2)i
CARACTERE(3)G

Et ainsi de suite jusqu'à ce que les 256 cases soient remplies avec des
valeurs différentes.

Pour remplir le tableau de manière aléatoire, utilisez la méthode qui vous
semblera la plus appropriée.
En général on fait deux boucles, une avance dans l'indice du tableau et l'autre
sélectionne aléatoirement un numéro qui n'a pas déjà été pris précédemment.

Dans notre exemple, le caractère ASCII 195 pourra être écrit de
BORN_MAX(0) -100000 manières différentes.

Une fois le tableau crée, n'importe quel caractère ASCII pourra être chiffré
par une des valeurs prise au hasard entre les BORN_MAX .

Admettons que le caractère B corresponde a un indice du tableau situé entre
258967 et 262367 , tous les chiffres compris entre 258697 et 262367-1
pourront servir pour le chiffrer.

Si c'est compréhensible pour vous , je continu.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe Lheureux
Le #22492361
CRYPTOGRAPHIE
PAR
ENCAPSULATION HASARDEUSE
(CEH)

Une idée de Philippe Lheureux


1 – Création d’une première partie de clé

L’intervalle général de travail à prendre en compte se situe entre 100000 et
999999 compris. Ce qui fait 999999-100000‰9999 possibilités d’utiliser un
chiffre compris entre 100000 et 999999 pour coder l’ensemble des 256
caractères ASCII.

La moyenne par caractères ASCII est donc de 899999/256 515.62
possibilités de chiffrage différents.

Le premier but à atteindre est la création d’un tableau à deux dimensions
faisant coïncider chacun des caractères ASCII avec un intervalle bien
précis.

Afin de compliquer la cryptanalyse, les intervalles doivent être variables
et les cases du tableau des caractères ASCII remplis avec un ordre
ALEATOIRE.

La variabilité d’un intervalle est de 515 numéros.

Remplir le tableau de 0 a 255 avec un algorithme fixant la valeur BORN_MAX
de chaque intervalle.

La valeur de départ étant : 100000

BORN_MAX(0)= 100000 + 3000 + (un chiffre pris au hasard entre 0 et 515)
BORN_MAX(1)= BORN_MAX(0) + 3000 + (un chiffre pris au hasard entre 0 et 515)
Et ainsi de suite
Jusqu'à BORN_MAX(254)
La 256 eme case du tableau (qui va de l’indice 0 à l’indice 255) contiendra
donc plus de 3515 possibilités de chiffrage.
BORN_MAX(255)= forcement 999999

En ce qui concerne la répartition des caractères ASCII affectés à chaque
intervalles, il faut aussi que les cases soient remplies au hasard

Exemple :
CARACTERE(0)5 ( 195 est le code du caractère ASCII )
CARACTERE(1)b
CARACTERE(2)i
CARACTERE(3)G

Et ainsi de suite jusqu'à ce que les 256 cases soient remplies avec des
valeurs différentes.

Pour remplir le tableau de manière aléatoire, utilisez la méthode qui vous
semblera la plus appropriée.
En général on fait deux boucles, une avance dans l’indice du tableau et l’autre
sélectionne aléatoirement un numéro qui n’a pas déjà été pris précédemment.

Dans notre exemple, le caractère ASCII 195 pourra être écrit de
BORN_MAX(0) -100000 manières différentes.

Une fois le tableau crée, n’importe quel caractère ASCII pourra être chiffré
par une des valeurs prise au hasard entre les BORN_MAX .

Admettons que le caractère B corresponde à un indice du tableau situé entre
258967 et 262367, tous les chiffres compris entre 258697 et 262367-1
pourront servir pour le chiffrer.


2- Brouillage du numéro extrait dans l’intervalle.

Le numéro à 6 chiffres (extrait le plus possible au hasard dans l’intervalle
des 3000 numéros minimum possibles correspondants au caractère ASCII à
chiffrer ) va maintenant subir une série de transformations destinées a
brouiller les pistes.

Le principe de base consiste à mélanger l’ordre des 6 chiffres extraits puis
d’incorporer ceux-ci dans un numéro aléatoire composé de 16 chiffres.

Exemple de transformation du numéro 548973


A : Création d’une clé de 16 caractères montrant l’ordre et la position de
la séquence de chiffres du numéro extrait a l’intérieur d’un numéro
aléatoire

XX5XX43XX6X1XX2X

Les X sont destinés à être remplacés par des chiffres aléatoires entre 0 et
9

1 correspond a la position du 1 er chiffre du numéro extrait (5)
2 correspond a la position du 2 ème chiffre du numéro extrait (4)
3 correspond a la position du 3 ème chiffre du numéro extrait (8)
4 correspond a la position du 4 ème chiffre du numéro extrait (9)
5 correspond a la position du 5 ème chiffre du numéro extrait (7)
6 correspond a la position du 6 ème chiffre du numéro extrait (3)

B : incorporation

XX5XX43XX6X1XX2X

Devient donc après injection des chiffres du numéro extrait

XX7XX98XX3X5XX4X

C : masquage aléatoire

Puis

4770698113450747

Ou

1578198473950040

En remplaçant les X par de l’aléatoire. Bien entendu, celui qui a la clé
pourra facilement extraire puis remettre en ordre les chiffres du numéro
extrait dans l’intervalle.

Sans la clé, XX5XX43XX6X1XX2X l’opération s’avère délicate 

Cette clé sera bien sur rajoutée a la clé 1 contenant la position des
caractères ASCII et les intervalles.

A ce stade, il reste encore une petite faiblesse liée au fait que compte
tenu des numéros extraits dans les intervalles, presque 3 ou 4 chiffres sur
6 restent identiques pour un même caractère chiffré en continu. Même
incorporés dans de l’aléatoire , on pourrait finir par les repérer
statistiquement. Cela ne donnerait pas l’ordre pour autant mais autant ne
laisser aucune trace exploitable.


3 – Masquage définitif

Afin d’éviter de pouvoir repérer les 3 ou 4 chiffres qui restent identiques
à chaque même caractère chiffré, il suffit d’appliquer deux principes
complémentaires.

A : Premier principe

A chaque caractère chiffré, il faut décaler le tableau de base pour que le
caractère qui vient d’être chiffré saute d’un intervalle.
Au bout de 256 caractères, il revient en position d’origine.

Le but est de faire en sorte que les premiers chiffres des numéros extraits
dans les intervalles varient constamment.

Ceci dit, on pourrait encore repérer statistiquement cet accroissement
progressif de certains numéros

B : Deuxième principe

Au lieu de générer une simple clé de 16 caractères gérant l’ordre et la
position des chiffres incorporés, on va fabriquer une clé de X fois 16
caractères

X en fonction du degré de sécurité choisi.

Admettons que vous mettiez X à 21, cela créera une clé comportant 21
séquences différentes de 16 positions + ordre.

XX5XX43XX6X1XX2X ( clé 1)
156XXXXXXXXX342X ( clé 2)
XX216XXXXXXXX543 (clé 3)
Etc ..

Le premier caractère chiffré utilise la clé 1, le deuxième la clé 2, le 21
ème , la clé 21 et le 22 ème , la clé 1

C’est ce changement de clé permanent associé au décalage de la table qui va
engendrer la sécurité du chiffre produit.

La clé de déchiffrage se composera donc de la table des intervalles et des
caractères ASCII associés + la clé a X fois 16 caractères.
Publicité
Poster une réponse
Anonyme