OVH Cloud OVH Cloud

Simple algo: 4e étape - la clef de session

32 réponses
Avatar
Raymond H.
Étape 4 du simple algo:

"Christophe HENRY" <forumslkm.sbgodin@nerim.net.sans_lkm> a écrit dans le
message de news: csc16i$31i4$1@biggoron.nerim.net...
> Le Sat, 15 Jan 2005 13:42:43 -0500, Raymond H. a écrit :
>
>> Dans ce cas ce ne serait pas vraiment sur l'algo de cryptage du clair
>> qu'il faudrait se pencher mais sur l'algo de prolongement d'une clef,
>
> C'est une erreur. Je vais faire description imagée. Imagine que la clé
> en question fasse deux caractères a et b, tu la prolonges de un
> caractère au moyen de l'opération c=a+b.
> La clé est ainsi (a,b,c). Question : (a,b,c) peut-il avoir toutes les
> combinaisons possibles de a,b et c ? Il s'agit de l'une des conditions
> draconiennes imposées à l'OTP auquel ton algo est, au mieux, équivalent.
>
> La réponse est non : le nombre de combinaisons ne sera que de 256², le
> troisième élément étant dépendant des deux autres. Or, la clé doit
> remplir entièrement les possibilités de combinaisons, soit 256**3, pour
> être correcte.
>
Il est presque certain qu'avec c=a+b ça ne tiendra pas. On suppose que
la clef doit avoir un minimum de caractères: 32 bits par exemple.

k = 1-2-3-4 (clef de session initiale créée aléatoirement)
m = 5-6-7-8-9-0 (clair)
x = 0 (au départ)
k5 = (((k2 + k3) xor m1) + k4) Modulo 256
c(x+1) = (((k1 + m(x+1) xor k2) + k1) Modulo 256 [Je simplifie ici]
x = x + 1

Dans notre exemple, on conserverait toujours 4 caractères dans notre
clef de session puisqu'elle avait 4 caractères lors de son initialisation.
donc k = 1-2-3-4
donc m = 5-6-7-8-9-0

1a- k5 = ((k2 + k3) xor m1) + k4
k5 = ((2 + 3) xor 5) + 4 = 4
donc k = 1-2-3-4-4

1b- k = k2, k3, k4, k5 = 2-3-4-4
donc k = 2-3-4-4

1c- c1 = ((k1 + m1) xor k2) + k1
c1 = ((2 + 5) xor 3) + 2 = 6
donc c = 6

2a- k5 = ((k2 + k3) xor m2) + k4
k5 = ((3 + 4) xor 6) + 4 = 5
donc k = 2-3-4-4-5

2b- k = k2, k3, k4, k5
donc k = 3-4-4-5

2c- c2 = ((k1 + m2) xor k2) + k1
c2 = ((3 + 6) xor 4) + 3 = 16
donc c = 6-16

3a- k5 = ((k2 + k3) xor m3) + k4
k5 = ((4 + 4) xor 7) + 5 = 20
donc k = 3-4-4-5-20

3b- k = k2, k3, k4, k5
donc k = 4-4-5-20

3c- c3 = ((k1 + m3) xor k2) + k1
c3 = ((4 + 7) xor 4) + 4 = 19
donc c = 6-16-19

4a- k5 = ((k2 + k3) xor m4) + k4
k5 = ((4 + 5) xor 8) + 20 = 21
donc k = 4-4-5-20-21

4b- k = k2, k3, k4, k5
donc k = 4-5-20-21

4c- c4 = ((k1 + m4) xor k2) + k1
c4 = ((4 + 8) xor 5) + 4 = 13
donc c = 6-16-19-13

5a- k5 = ((k2 + k3) xor m5) + k4
k5 = ((5 + 20) xor 9) + 21 = 37
donc k = 4-5-20-21-37

5b- k = k2, k3, k4, k5
donc k = 5-20-21-37

5c- c5 = ((k1 + m5) xor k2) + k1
c5= ((5 + 9) xor 20) + 5 = 31
donc c = 6-16-19-13-31

6a- k5 = ((k2 + k3) xor m6) + k4
k5 = ((20 + 21) xor 0) + 37 = 78
donc k = 5-20-21-37-78

6b- k = k2, k3, k4, k5
donc k = 20-21-37-78

6c- c6 = ((k1 + m6) xor k2) + k1
c6 = ((20 + 0) xor 21) + 20 = 21
donc c = 6-16-19-13-31-21

On conserve donc la clef de session finale 20-21-37-78 pour pouvoir
déchiffrer le cryptogramme 6-16-19-13-31-21
En résumé avec:
m = 5-6-7-8-9-0
k = 1-2-3-4

on produit:

k = 2-3-4-4
c = 6

k = 3-4-4-5
c = 6-16

k = 4-4-5-20
c = 6-16-19

k = 4-5-20-21
c = 6-16-19-13

k = 5-20-21-37
c = 6-16-19-13-31

k = 20-21-37-78
c = 6-16-19-13-31-21

La question est: 'Pouvons-nous trouver le clair à partir de l'algo et du
chiffré 6-16-19-13-31-21 ?
x = 0 (au départ)
k5 = (((k2 + k3) xor m1) + k4) Modulo 256
c(x+1) = (((k1 + m(x+1) xor k2) + k1) Modulo 256
x = x + 1

Ici, j'ai fait un peu vite la partie de l'algo pour le prolongement de
la clef de session; faudrait regarder la façon la plus sûre. Mais, on
pourrait faire les additions et les xor avec d'autres valeurs:
Par exemple, au lieu de faire
k5 = ((k2 + k3) xor m1) + k4

on pourrait faire (en ajoutant le modulo que je n'ai pas mis pour que ce
soit plus simple à l'oeil):
k5 =( ((k2 + m1) xor k3) + k4) Modulo 256

Bonne journée.
Raymond H.

=================
N.B.:
En transformant
c1=(((k1 + k2 + m1 + m2) xor k2) + k1) Mod 256
c2=(((k2 + k3 + m2 + m3) xor k3) + k2) Mod 256
c3=(((k3 + k4 + m3 + k4 ) xor k4) + k3) Mod 256 (k4 remplace aussi m4)

en

c1=(((k1 + m1) xor k2) + k1) Mod 256
c2=(((k2 + m2) xor k3) + k2) Mod 256
c3=(((k3 + m3) xor k4) + k3) Mod 256 (k4 remplace aussi m4)

? ? ? ? = k
8 12 21 = 1m
32 51 62 = 1c
donne 256 clefs au lieux de 640.
000-040-063-171
001-022-063-171
002-020-063-171
003-022-063-171
004-016-063-171
005-022-063-171
006-020-063-171
007-022-063-171
008-008-063-171
009-006-063-171
010-004-063-171
011-006-063-171
012-000-063-171
013-006-063-171
014-004-063-171
015-006-063-171
016-008-063-171
017-022-063-171
018-020-063-171
019-022-063-171
020-016-063-171
021-022-063-171
022-020-063-171
023-022-063-171
024-040-063-171
025-038-063-171
026-036-063-171
027-038-063-171
028-032-063-171
029-038-063-171
030-036-063-171
031-038-063-171
032-040-063-171
033-214-191-171
034-212-191-171
035-214-191-171
036-208-191-171
037-214-191-171
038-212-191-171
039-214-191-171
040-200-191-171
041-198-191-171
042-196-191-171
043-198-191-171
044-192-191-171
045-198-191-171
046-196-191-171
047-198-191-171
048-200-191-171
049-214-191-171
050-212-191-171
051-214-191-171
052-208-191-171
053-214-191-171
054-212-191-171
055-214-191-171
056-168-063-171
057-166-063-171
058-164-063-171
059-166-063-171
060-160-063-171
061-166-063-171
062-164-063-171
063-166-063-171
064-168-063-171
065-150-063-171
066-148-063-171
067-150-063-171
068-144-063-171
069-150-063-171
070-148-063-171
071-150-063-171
072-136-063-171
073-134-063-171
074-132-063-171
075-134-063-171
076-128-063-171
077-134-063-171
078-132-063-171
079-134-063-171
080-136-063-171
081-150-063-171
082-148-063-171
083-150-063-171
084-144-063-171
085-150-063-171
086-148-063-171
087-150-063-171
088-168-063-171
089-166-063-171
090-164-063-171
091-166-063-171
092-160-063-171
093-166-063-171
094-164-063-171
095-166-063-171
096-168-063-171
097-214-191-171
098-212-191-171
099-214-191-171
100-208-191-171
101-214-191-171
102-212-191-171
103-214-191-171
104-200-191-171
105-198-191-171
106-196-191-171
107-198-191-171
108-192-191-171
109-198-191-171
110-196-191-171
111-198-191-171
112-200-191-171
113-214-191-171
114-212-191-171
115-214-191-171
116-208-191-171
117-214-191-171
118-212-191-171
119-214-191-171
120-040-063-171
121-038-063-171
122-036-063-171
123-038-063-171
124-032-063-171
125-038-063-171
126-036-063-171
127-038-063-171
128-040-063-171
129-022-063-171
130-020-063-171
131-022-063-171
132-016-063-171
133-022-063-171
134-020-063-171
135-022-063-171
136-008-063-171
137-006-063-171
138-004-063-171
139-006-063-171
140-000-063-171
141-006-063-171
142-004-063-171
143-006-063-171
144-008-063-171
145-022-063-171
146-020-063-171
147-022-063-171
148-016-063-171
149-022-063-171
150-020-063-171
151-022-063-171
152-040-063-171
153-038-063-171
154-036-063-171
155-038-063-171
156-032-063-171
157-038-063-171
158-036-063-171
159-038-063-171
160-040-063-171
161-214-191-171
162-212-191-171
163-214-191-171
164-208-191-171
165-214-191-171
166-212-191-171
167-214-191-171
168-200-191-171
169-198-191-171
170-196-191-171
171-198-191-171
172-192-191-171
173-198-191-171
174-196-191-171
175-198-191-171
176-200-191-171
177-214-191-171
178-212-191-171
179-214-191-171
180-208-191-171
181-214-191-171
182-212-191-171
183-214-191-171
184-168-063-171
185-166-063-171
186-164-063-171
187-166-063-171
188-160-063-171
189-166-063-171
190-164-063-171
191-166-063-171
192-168-063-171
193-150-063-171
194-148-063-171
195-150-063-171
196-144-063-171
197-150-063-171
198-148-063-171
199-150-063-171
200-136-063-171
201-134-063-171
202-132-063-171
203-134-063-171
204-128-063-171
205-134-063-171
206-132-063-171
207-134-063-171
208-136-063-171
209-150-063-171
210-148-063-171
211-150-063-171
212-144-063-171
213-150-063-171
214-148-063-171
215-150-063-171
216-168-063-171
217-166-063-171
218-164-063-171
219-166-063-171
220-160-063-171
221-166-063-171
222-164-063-171
223-166-063-171
224-168-063-171
225-214-191-171
226-212-191-171
227-214-191-171
228-208-191-171
229-214-191-171
230-212-191-171
231-214-191-171
232-200-191-171
233-198-191-171
234-196-191-171
235-198-191-171
236-192-191-171
237-198-191-171
238-196-191-171
239-198-191-171
240-200-191-171
241-214-191-171
242-212-191-171
243-214-191-171
244-208-191-171
245-214-191-171
246-212-191-171
247-214-191-171
248-040-063-171
249-038-063-171
250-036-063-171
251-038-063-171
252-032-063-171
253-038-063-171
254-036-063-171
255-038-063-171
Fin

2 réponses

1 2 3 4
Avatar
Raymond H.
Bonjour,

Aie-je bien raison de penser que dans ces deux exemples le xor serait
moins difficiles à inverser (déchiffrer) que l'addition, même si le nombre
de possibilités du xor dépasse celui de l'addition?

(Var1 Xor Var2) Xor Var3 = 255 (donne 65536 possibilités)

Var1 + Var2 + Var3 = 255 (donne 32896 possibilités)


r.h.
Avatar
Christophe HENRY

Bonjour,

Aie-je bien raison de penser que dans ces deux exemples le xor serait
moins difficiles à inverser (déchiffrer) que l'addition, même si le nombre
de possibilités du xor dépasse celui de l'addition?


Aucune difficulté dans chacune des deux possibilités. Ce qui m'a ennuyé
(sans rendre l'algo plus fort) est le mélange du xor et de l'addition. On
reste dans le domaine des substitutions. La cryptanalyse est triviale.

--
Christophe HENRY
(sans lkm)
GnuPG : 3922239E60036EC86BF7268A877C52AC 4883C02A

1 2 3 4