CRYPTOGRAPHIE C.D.P.

Chiffrage-Déchiffrage en Phase

Code secret !

Auteur: Philippe Lheureux

ALGORITHME DE CHIFFRAGE

La phrase à coder est "Quelle merveille ce logiciel :-)"

Table de base correspondant à la clé publique ( les clés privées sont liées à des permutations de cette table )

a

x

1

v

o

P

6

*

H

g

&

é

A

 _

è

+

d

r

/

ê

m

j

#

T

F

@

5

Z

s

I

y

Y

U

B

\

c

q

)

à

ç

-

0

b

Q

n

M

G

7

J

"

k

2

.

3

;

(

î

[

t

ù

?

C

w

R

S

N

%

e

^

]

D

i

 

'

h

4

,

$

!

}

l

z

V

O

>

:

ë

8

f

u

X

W

=

<

E

p

L

{

9

K

Commençons par écrire Q

a

x

1

v

o

P

6

*

H

g

&

é

A

 _

è

+

d

r

/

ê

m

j

#

T

F

@

5

Z

s

I

y

Y

U

B

\

c

q

)

à

ç

-

0

b

Q

n

M

G

7

J

"

k

2

.

3

;

(

î

[

t

ù

?

C

w

R

S

N

%

e

^

]

D

i

 

'

h

4

,

$

!

}

l

z

V

O

>

:

ë

8

f

u

X

W

=

<

E

p

L

{

9

K

Repérer dans quelle rangée et dans quelle colonne se trouve la lettre Q . Ici en R5 -C4

Générer un nombre aléatoire qui choisira un cas parmi les 5 cas de chiffrage.

Si cas 1 choisi ( Intersection LR-LC Lettre sur une rangée avec lettre sur une colonne. )

Générer toutes les possibilités de chiffrage suivant cette méthode . Pour cette grille cela donne

-v -_ -T -B -3 -R -' -O -<0v0_0T0B030R0'0O0<bvb_bTbBb3bRb'bOb<nvn_nTnBn3nRn'nOn<MvM_MTMBM3MRM'MOM<GvG_GTGBG3GRG'GOG<7v7_7T7B737R7'7O7<JvJ_JTJBJ3JRJ'JOJ<"v"_"T"B"3"R"'"O"<

Analyser la longueur de la chaine et se servir d'une génération aléatoire pour prendre un groupe de deux lettres commencant par une position impair ( exemple 15et16 ) La première lettre correspond toujours à une lettre sur une rangée et la deuxième à une lettre sur une colonne.

 

Si cas 2 choisi ( Intersection CR-CC Lettre sur une rangée avec lettre sur une colonne. )

Générer toutes les possibilités de chiffrage suivant cette méthode.

-0v_ -0_T -0TB -03R -0R' -0'O -0O<0bv_0b_T0bTB0b3R0bR'0b'O0bO<nMv_nM_TnMTBnM3RnMR'nM'OnMO<MGv_MG_TMGTBMG3RMGR'MG'OMGO<G7v_G7_TG7TBG73RG7R'G7'OG7O<7Jv_7J_T7JTB7J3R7JR'7J'O7JO<J"v_J"_TJ"TBJ"3RJ"R'J"'OJ"O<

Analyser la longueur de la chaine et se servir d'une génération aléatoire pour prendre un groupe de quatres lettres commencant par une position impair ( exemple 5 et 6,7,8 ) Les deux premières lettres choisies correspondent toujours à deux lettres contigües sur une rangée et les deux dernières à deux lettres contigües sur une colonne.

Si cas 3 choisi ( L-E-L Lettre comprise entre deux autres lettres )

Générer toutes les possibilités de chiffrage suivant cette méthode.

bnB3

Se servir d'une génération aléatoire pour choisir entre les deux premières lettres ( horizontal ) ou les deux dernières lettres ( vertical ) .

Si cas 4 choisi ( L-E-C Lettre comprise entre chaines de deux lettres )

Générer toutes les possibilités de chiffrage suivant cette méthode.

0bnMTB3R

Se servir d'une génération aléatoire pour choisir entre les quatres premières lettres ( horizontal ) ou les quatres dernières lettres ( vertical ) . Rejeter les cas ou les lettres se trouvent trop près des bords de la grille.

Si cas 5 choisi ( *) ( L-D-C Lettre de début de chaine )

Générer toutes les possibilités de chiffrage suivant cette méthode

QnM Q3R

Se servir d'une génération aléatoire pour choisir entre les trois premières lettres ( horizontal ) ou les trois dernières lettres ( vertical ) . Rejeter les cas ou les lettres se trouvent trop près des bords de la grille ( ici f u 9 et K )

Attention , ce système utilisant la lettre a chiffrer dans le chiffre doit voir son apparition réglée correctement. En fait , il faut chiffrer un gros fichier contenant toujours la meme lettre avec les 4 permiers systemes et analyser la fréquence de sortie de chaque caractere. Prendre la moyenne entre le caractère le plus sorti et celui qui est le moins sorti et regler l'apparition du système 5 pour qu'il apparaisse dans cette moyenne.

 

Trouver maintenant le numéro de la case dans laquelle se trouve la lettre Q ( ici c'est la case 44 ) La permutation de la table qui suivra correspondra donc à la permutation 44. Voici l'exemple de la permutation 44 , il y en a 200 différentes dans CDP réparties sur 100 cases . ( 2 par cases . Une pour faire bouger la lettre chiffrée et l'autre pour créer une modification de la grille ) Si vous untilisez une grille plus grande , genre matrice 16x16 vous pouvez augmenter le nombre de permutations .

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

24

28

29

30

31

32

33

34

34

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

 

ElseIf numcase = 44 Then 'P31 échange L5,C4 avec L6,C7 ( ici on voit l'échange entre 31 et 32 )

swapcase(1) = grille(5, 4)

grille(5, 4) = grille(6, 7)

grille(6, 7) = swapcase(1)

'echange L 4 avec L 7 ( pour brouiller des cases supplémentaires à chaque lettre chiffrée )

For i = 1 To 10

swapcase(i) = grille(4, i)

grille(4, i) = grille(7, i)

grille(7, i) = swapcase(i)

Next i

swapcase est un tableau parrallèle qui permet de stocker les données avant de les remplacer par d'autres.

Voici en image le code ci dessus ! Admettons que la lettre Q se trouve sur la case 44 qui correspond a la case 31 du tableau ci dessous , si on la répète plusieurs fois elle passera donc en 32 puis en 33 etc. jusqu'a 100 pour revenir à 1 puis 2 puis 3 etc.

 

1

21

25

85

89

93

97

41

37

13

22

6

46

69

73

77

81

51

16

38

26

45

2

54

61

65

57

11

52

42

100

84

60

9

29

34

20

55

70

86

96

80

68

31

3

18

36

62

74

90

92

76

64

35

19

10

32

66

78

94

88

72

56

15

33

30

4

58

82

98

43

50

12

59

67

63

53

7

48

27

39

14

49

83

79

75

71

47

5

23

17

40

44

99

95

91

87

28

24

8

 Ce passage de 31 à 32 est associé à une permutation de rangées ( échange lettres bleues avec lettres grises ) mais certaines permutations peuvent aussi être associées à des permutations de colonnes , de demi rangées ou de demi colonnes. La liste complete des permutations que j'ai utilisé est dans la source de CDP.

a

x

1

v

o

P

6

*

H

g

&

é

A

 _

è

+

d

r

/

ê

m

j

#

T

F

@

5

Z

s

I

y

Y

U

B

\

c

q

)

à

ç

-

0

b

Q

n

M

G

7

J

"

k

2

.

3

;

(

î

[

t

ù

?

C

w

R

S

N

%

e

^

]

D

i

 

'

h

4

,

$

!

}

l

z

V

O

>

:

ë

8

f

u

X

W

=

<

E

p

L

{

9

K

Voici l'état de la table après cette permutation

a

x

1

v

o

P

6

*

H

g

&

é

A

 _

è

+

d

r

/

ê

m

j

#

T

F

@

5

Z

s

I

?

C

w

R

S

N

%

e

^

]

-

0

b

î

n

M

G

7

J

"

k

2

.

3

;

(

Q

[

t

ù

y

Y

U

B

\

c

q

)

à

ç

D

i

 

'

h

4

,

$

!

}

l

z

V

O

>

:

ë

8

f

u

X

W

=

<

E

p

L

{

9

K

 

La lettre Q a changé de place et certaines lettres de la table ont subit une permutation . Plus vous pouvez permuter de lettres , plus le principe sera résistant . Voici par exemple ce que donne une suite du genre

QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ codée suivant ce principe.

-T.3q,;hC#R<B'<,*vJàeg>&2(#A1HDgZ?1Oë=?<O}I#f]z:îBbVîl,H^!TFp+oShE'._îT#0-B?v.TI=EL0Dy-X.FTjp4zVDbB-sFT<Km4n_LCWDL!f}cYçSDKg<T^tV6<>b=AM^tSm"W>S_wYç9!sCj'èob.@jj'r*S.çssç38JS6="s>y=à+"ê*JSBço5y.Grî@<[\VV"WKKm'B

Comme la position de la lettre Q varie constamment , son codage est toujours différent !

Voici le tableau des déplacements de lettres de CDP.

1

21

25

85

89

93

97

41

37

13

22

6

46

69

73

77

81

51

16

38

26

45

2

54

61

65

57

11

52

42

100

84

60

9

29

34

20

55

70

86

96

80

68

31

3

18

36

62

74

90

92

76

64

35

19

10

32

66

78

94

88

72

56

15

33

30

4

58

82

98

43

50

12

59

67

63

53

7

48

27

39

14

49

83

79

75

71

47

5

23

17

40

44

99

95

91

87

28

24

8

C'est ainsi que fonctionne CDP et voila pourquoi il est aussi résistant aux méthodes de cryptanalyse. Les lettres n'arretent pas de bouger de place du fait des permutations qui les décalent en tout sens. Un A situé en case 9 peut très bien se trouver en case 27 , 3 lettres plus tard .

Celui qui n'a pas la bonne grille de déchiffrage ne peut rien faire avec le code de CDP .

Le code produit n'est jamais le même , même pour une même phrase . Même sa longueur varie constamment !

Voici la Phase "Ce système de chiffrage permet de chiffrer des 1111111 et des 0000000." chiffrée 4 fois de suite à partir de la grille publique.

1,

Né[$1w#=!9BmA2;à{iTçy&iùu4n91ës8YBy+XaVz4}1Gs8:m2MvgG]0nQxv<Tè7GfHNI\GT?<:h,>u0i&[h,\/îOwX@&?C/Dfq'ç"=s}@(10O=^u$*&P-&RèWFE9c;E#%Oë8T,îG^4@MXt=O*/l;)XwiZKêQ^4x-kB:}aRjIPuv}(nù(yZX)P(B9GXëêxi{lQqb%

2,

?wN%^]1w#=TàB\-aC+ij3;/fw0t?RO-^Cw)1kYB\;3apçYpN:4?w8[z:umySG]0nQxv<#à!yH+\)T}i>0nXgè2/YàJè74xT?,$Ob,"is"=s}l0=ê#çazXNIMRb!It>1ê'E],F[gilaE)^gK:à"R!W)r\s}B(^47%<SByjQgMPZv}êyYlKc!xtpd(bQIBç)PZ2!,\BdWb[%

3,

RSjYwR7[1w#=#fY&C+jW2.H^RîX-RObQHjwR)1kw2.+XçY4:z:<FC1à^2SG]Q+PKXHGJR!O@iX\CFvihu^0ngi{z/YàJî%?'/D,$fB'_IegP(lî]%o$*NIDBW\UF.E9^c;#T%OF[)gîGN;ZX6<_yùlG]^4\èbtêî&R^%W\KskBl/yt@;P_u^qg:#ù(yZ{p!xtpëP1L4îLJ^>j\;wbM/e

4,

2i[$1w#=qI\DC+zY39wRitT&iùERQn/"ës\cA#3P\BN4z:<F?8lVumy2g4&[nQ7SXTnJ!y@fPMk\Fvih>unQ&îU=]ih,î+ET4ù/,flbQ,"is%ZlG%d#l-&PàRè=QBWhUE9;kO=U$_,îGwIZ6_y9(r\î=5'k:kyyfI@_Ju^/6'ê3)ù.Lcb83QIgNxké

Il s'agit bien de la même phrase et le déchiffrage se fera aussi facilement pour l'une ou l'autre des phrases ! Il suffit d'avoir la bonne grille de départ !

CRYPTANALYSE

Il n'est vraiment pas simple de s'attaquer à un tel chiffre . On ne sait jamais si les deux premières lettres correspondent aux cas 1,2,3,4 ou 5 et même si on pouvait le deviner , comment placer les lettres sur la grille pour essayer de déterminer à quelle lettre elles correspondent et quelle permutation a été activée ? Les espaces n'apparaissent pas , les suites de lettres sont codées toujours différemment etc ...

Faute de prise , la seule méthode restante consiste à essayer toutes les combinaisons possibles de la grille de 10x10. Bonne chance et rendez vous dans plusieurs milliers d'années . J'attends avec impatience les remarques des cryptanalystes sur ce genre de chiffre .. vulnérable ou invulnérable . Quelqu'un a t'il une idée géniale pour s'attaquer facilement à ce genre de chiffrement ?

J'attends vos remarques !

 

VOIR LE LOGICIEL QUI EXPLOITE CETTE METHODE

RETOUR A LA PAGE SUR LA CRYPTOGRAPHIE C.D.P.

Retour a la page sur la cryptographie CDP !