CRYPTOGRAPHIE C.D.P.

Chiffrage-Déchiffrage en Phase

Code secret !

Auteur: Philippe Lheureux

PROTECTIONS POUR LES CLONES DE CDP en 16x16

histoire de répondre aux trois attaques

visibles sur le site

http://perso.wanadoo.fr/antmonni/cdpsid

7

53

89

108

65

27

202

74

81

109

13

75

96

129

22

130

90

179

5

189

229

54

142

97

127

234

116

41

42

207

4

23

38

107

178

98

37

188

17

203

170

40

143

186

144

128

145

95

157

66

88

28

220

171

187

55

230

102

233

185

18

24

117

193

52

141

64

219

51

137

26

62

204

221

12

205

104

167

192

21

8

115

243

105

228

122

99

235

169

61

136

232

3

191

76

168

126

125

6

87

63

148

172

173

56

222

57

195

206

94

153

77

67

91

147

244

39

218

1

25

100

101

146

190

110

118

19

154

36

177

16

158

50

174

73

248

86

79

217

135

78

231

34

131

227

49

176

159

29

215

138

80

236

216

134

241

163

152

132

20

92

245

68

226

123

72

249

112

149

2

242

43

111

239

58

133

200

106

124

160

175

214

30

250

223

121

150

44

237

33

240

60

69

155

48

35

140

253

256

45

103

252

208

151

247

59

164

194

199

70

255

182

246

213

139

113

254

224

31

251

114

209

119

11

14

198

71

183

47

93

46

9

225

120

211

83

238

166

210

85

156

201

15

197

181

161

212

132

32

180

82

196

184

10

84

165

Exemple de grille CDP- Les numéros correspondent aux codes ASCII des caractères.

PROTECTION DE LA GRILLE (Empêche l'attaque PLT)

Afin d'éviter que quelqu'un puisse se faire passer pour vous en utilisant votre grille sur votre ordinateur ou sur une carte bancaire , il faut la rendre inutilisable en la chiffrant. Toutes les grilles doivent êtres stockées chiffrées .

Le principe de chiffrage est le suivant .

Il suffit de définir un code constitué de 5 numéros.

exemple : 47-15-07-98-27 (*) chacun des 5 numéros pouvant prendre une valeur entre 1 et 256

et de s'en servir comme un masque négatif par rapport à des codes ascii qui peuvent aller de 1 à 256.

Voici ce que cela donne pour la premiere ligne de la grille. Si la soustraction donne un nombre négatif , on le déduit de 256.

Exemple 7-47=-40 puis 256-40=216

La grille utilisable - Le Masque - La grille masquée

7

53

89

108

65

27

202

74

81

109

13

75

96

129

22

130

-47

-15

-07

-98

-27

-47

-15

-07

-98

-27

-47

-15

-07

-98

-27

-47

216

38

82

10

38

236

187

67

239

82

222

60

89

31

251

83

Vous pouvez remarquer la présence de 2 chiffres 82 dans le résultat chiffré. La grille ainsi obtenue n'est plus compatible avec CDP , elle ne peut donc pas être intérrogée correctement .

Pour reconstituer la grille il suffit de faire la démarche inverse. Cette fois ci , on ajoute le masque. Tout ce qui dépasse 256 repart de 0.

Exemple 216+47=263 puis 263-256=7

216

38

82

10

38

236

187

67

239

82

222

60

89

31

251

83

+47

+15

+07

+98

+27

+47

+15

+07

+98

+27

+47

+15

+07

+98

+27

+47

7

53

89

108

65

27

202

74

81

109

13

75

96

129

22

130

 Etant donné qu'un même chiffre du code se répète toutes les 5 cases , un éventuel attaquant pourrait se servir de cette propriété pour réduire le nombre d'essais nécessaires à la reconstitution de la grille . Il faut donc mélanger les cases pour eviter de lui faciliter la tâche.

Pour ce faire , on utilise toujours le même code que celui qui a servi de masque mais on définit 10 permutations différentes

Permutation 0 échange colonnes impaires 1 avec 3 , 5 avec 7 etc ...

Permutation 1 échange lignes impaires 1 avec 3 , 5 avec 7 etc ...

Permutation 3 échange colonnes paires 2 avec 4 , 6 avec 8 etc ...

Permutation 4 échange lignes paires 2 avec 4 , 6 avec 8 etc ...

Permutation 5 échange demi table gauche avec demi table droite

Permutation 6 échange demi table haute avec demi table basse

Permutation 7 échange en croix A1-B2 C1-D2 E1-F2 etc ....

Permutation 8 échange en croix A2-B1 C2-D1 E2-F1 etc ...

Permutation 9 on tire une ligne de la case 1 a la case 256 et on échange symétriquement les valeurs au dessus et en dessous de la ligne.

Le code 47-15-07-98-27 correspond donc a l'action des permutations 4,7,1,5,0,7,9,8,2,7 sur la grille ! Le mélange des cases ainsi réalisé finira de protéger correctement la grille. Pour déchiffrer , il suffira de relire les permutations à l'envers .

PROTECTION CONTRE LES ATTAQUES A CLAIR CONNUS ET CHIFFRE SEUL

Il s'agit ici de proteger le chiffre produit par CDP quand on utilise des dizaines de milliers de fois la même grille. Il n'existe pour l'instant pas d'attaques connues si l'on utilise pour chaque caractère une grille différente.

Voici le résumé des deux principales attaques visibles sur le site CDPSID

Attaque du lutin ( clairs connus )

Cette attaque est basée sur la constatation que les deux premiers caractères du chiffré sont toujours situés sur la ligne ou sur la colonne du premier caractère du clair.

Attaque heureuse ( chiffrés seuls )

On prend une collection d'environ 50_000 chiffrés de CDPSID de longueur au moins 2, chiffrant des messages quelconques et distincts, et utilisant la même grille. On ne considère en fait que les 2 premiers octets des chiffrés....

Une faiblesse existe donc dans ce cas précis . Le fait de posseder des dizaines de milliers de premiers couples du chiffré permet de reconstituer la grille.

Pour y rémédier il suffit donc de faire en sorte que les deux premiers octets du chiffré ne puissent en aucun cas renseigner sur la grille. L'idée est la suivante :

On prend le chiffre produit par CDP pour chiffrer un message.

2i:y,Wd%GëO>ç"wR7[2rjxb.e#ré1vX&oS@#ùlw]qéçjpMJg_réi3ëO>è#XpHfm@x7QcxG'y&KxQP:&;x7bNb%n@v7)ruYC!é<1GAwaz.0?&1:?F]ù6v!rHGQRî5@!l88.+Iw\f0.(uP_$L{acpY&J0Hçb.H-ë>^aéPk=q?KV2EE+ldqë.aîgk&?TgdD]TS2êdScdu6i.9j7è8sv'U,H^=6éj,I[2"<T7,I{cTEoéF4K/6nO(J}+mCQ'_<e&{<CN11çU{(3<"ù\Q{p,àQg$*.Hb7}5c/^C.èënq=é0tWh8vCîw>I2y,9àRFGxb*5&/l8qèO_G0YqGv&$wVkDQ)1mkU*$wTmé->t(S1"YS"àRPo)=sxDbMtêy!Gé6FQ^^k<TuWwu&gH9èZyxCMNIUt

Afin d'éviter que 2i renseigne sur la grille nous allons nous servir de la grille pour modifier les lettres obtenues lors de ce premier chiffrage . L'idée est de se servir de la grille comme un masque et d'ajouter la valeur de ce masque au chiffre. Le masque de la grille est constitué de 256 numéros ( 7-53-89-108 jusqu'a 184-10-84-165 )

A la valeur de 2 je rajoute 7

A celle de i je rajoute 53

A celle de : je rajoute 89

A celle de y je rajoute 108

et ainsi de suite et si le chiffre est plus long que 256 , je repars au début de la grille.

Le masque étant les valeurs ASCII des caractères de la grille , seuls ceux qui ont la bonne grille ont le bon masque. Les caractères ainsi transformés par le masque ne renseignent plus l'attaquant sur la position des lettres dans la grille.

Pour déchiffrer , il suffit de faire l'opération inverse

On a le chiffre !

A partir de la grille on en déduit le masque et on en soustrait sa valeur du chiffre pour obtenir un chiffre traditionnel CDP parfaitement déchiffrable.

Certains pourraient penser qu'il est dangereux d'utiliser la grille comme masque car celui qui trouve le masque trouve la grille alors pour éviter toute attaque sur ce point nous allons modifier la position des caractères obtenus.

voici le chiffre après la premiere passe si dessus

?wO>k?'hWéUB56>ê?N{iwRè%'1A61D1vECZJ0EUNJdWaë,.3ëEO>#1pl5xcx4hm%A+A+jx+(bKLNtP.ùt8,'o)}R=AN)0Z?&#èMohV6*lB5>P*6EKbgîGMé(_wac',k}0Hb18ZXpën>\x^aùu@6êcqëç}JVr2lëE+Kj$îg4[,q{KD]JdlNQKîC,I9jXfQj'3Bxql9a6nKdéj*,c{zKS5EjU*42E+oé^>KLakJ}I"eJc%jL8GêN1t1çKugQ(5jR3gpé,6,Bî={=GqB,d87}MS=ç2E8v69Aw3#qMd,B,I2Jy,ëù9w$çRFséVb*'wl+8qèOxy0YQgs6%[)1mk4&à9o5(S)v*$$wPV7z^gEf0x_Ybetêyf-PXT.g^AmM7=u*t&m]èZyxC}gK#bU(^^k<TuWw

L'idée est de scinder le chiffre en tronçons de 256 caractères et de se servir de la grille pour changer la position des caractères.

Si la grille commence par 7-53-89-108 cela veut dire que le caractère 1 (?) se retrouve en position 7

le caractère 2 ( w) en position 53

le caractère 3 (O) en position 89

le caractère 4 (>) en position 108

et ainsi de suite jusqu'au caractère 256.

Si la partie finale comporte moins de 256 caractères , elle n'est pas chiffrée avec cette méthode.

Tous les couples seront ainsi completement modifiés et il faudra la bonne grille pour remettre les lettres a leurs place en effectuant la démarche inverse.

On prend le 7 eme caractère et on le remet en position 1

on prend le 53 eme caractère et on le remet en position 2

on prend le 89 eme caractère et on le remet en position 3

on prend le 108 eme caractère et on le remet en position 4 etc .... jusqu'a ce que les 256 caractères soient remis en place.

Je pense que cela devrait suffir amplement pour empecher toute tentative de cryptanalyse de milliers de chiffres produits par la même grille.

Qu'en pensez vous ?

J'attends vos remarques !

 

VOIR LA PAGE DES CLONES DE CDP

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

Retour a la page sur la cryptographie CDP !