J'ai fini de rédiger les spécifications (complètes je l'espère)
de TAZ version 1.0.
J'ai fini de rédiger les spécifications (complètes je l'espère)
de TAZ version 1.0.
J'ai fini de rédiger les spécifications (complètes je l'espère)
de TAZ version 1.0.
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 67 68 71 72 73 7C 7D,
ces octets forment 6 "segments" de 2 ou 3 octets dans les
deux moitiés.
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 67 68 71 72 73 7C 7D,
ces octets forment 6 "segments" de 2 ou 3 octets dans les
deux moitiés.
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 67 68 71 72 73 7C 7D,
ces octets forment 6 "segments" de 2 ou 3 octets dans les
deux moitiés.
Toujours à propos de TAZ 1.x
http://perso.numericable.fr/~cgonzale/taz/taz-fr.html
Je refais des essais de recherche de collision dans
la phase de compression.
Les octets du message sont traités dans l'ordre (hex)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15* 16* 17* 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38* 39* 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73* 74* 75 76 77 78 79 7A 7B 7C 7D 7E 7F
00 23 46 69 0C 2F 52 75 18 3B 5E 01 24 47 6A 0D
30 53 76 19 3C 5F 02 25 48 6B 0E 31 54 77 1A 3D
60 03 26 49 6C 0F 32 55 78 1B 3E 61 04 27 4A 6D
10 33 56 79 1C 3F 62 05 28 4B 6E 11 34 57 7A 1D
40 63 06 29 4C 6F 12 35 58 7B 1E 41 64 07 2A 4D
70 13 36 59 7C 1F 42 65 08 2B 4E 71 14 37 5A 7D
20 43 66 09 2C 4F 72 15* 38* 5B 7E 21 44 67 0A 2D
50 73* 16* 39* 5C 7F 22 45 68 0B 2E 51 74* 17* 3A 5D
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 15 16 17 38 39 73 74
que j'ai repéré par 14 étoiles, ces octets forment 6 "segments"
de 2 ou 3 octets dans les deux moitiés.
On peut donc au moins espérer que la variable j ne propage pas
de changement de segment en segment; et par exemple on peut
choisir les octets en (hex) 17 39 et 74 pour forcer cela dans
les 3 premiers segments. Pour les 3 autres, il faut être plus
habile, ou compter sur la force brute (2^24 essais en moyenne).
On a beaucoup de liberté pour le reste, ce qui permet de
manipuler pas mal les S[] avant les 6 segments; il faut
cette liberté, pour faire en sorte que les octets permutés ne
se propagent pas via les autres octets du message, et que les
permutations causées par les 7 octets modifiés dans les 6
segments se compensent d'une manière ou d'une autre.
Je ne dis pas que c'est facile, mais c'est loin d'être désespéré,
comme mission.
A nouveau: la différence fondemmentale entre TAZ et RC4, c'est
que dans RC4 la permutation est présumée secrète, alors que
dans TAZ elle est connue de l'attaquant, ce qui constitue pour
lui un avantage décisif.
François Grieu
Toujours à propos de TAZ 1.x
http://perso.numericable.fr/~cgonzale/taz/taz-fr.html
Je refais des essais de recherche de collision dans
la phase de compression.
Les octets du message sont traités dans l'ordre (hex)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15* 16* 17* 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38* 39* 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73* 74* 75 76 77 78 79 7A 7B 7C 7D 7E 7F
00 23 46 69 0C 2F 52 75 18 3B 5E 01 24 47 6A 0D
30 53 76 19 3C 5F 02 25 48 6B 0E 31 54 77 1A 3D
60 03 26 49 6C 0F 32 55 78 1B 3E 61 04 27 4A 6D
10 33 56 79 1C 3F 62 05 28 4B 6E 11 34 57 7A 1D
40 63 06 29 4C 6F 12 35 58 7B 1E 41 64 07 2A 4D
70 13 36 59 7C 1F 42 65 08 2B 4E 71 14 37 5A 7D
20 43 66 09 2C 4F 72 15* 38* 5B 7E 21 44 67 0A 2D
50 73* 16* 39* 5C 7F 22 45 68 0B 2E 51 74* 17* 3A 5D
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 15 16 17 38 39 73 74
que j'ai repéré par 14 étoiles, ces octets forment 6 "segments"
de 2 ou 3 octets dans les deux moitiés.
On peut donc au moins espérer que la variable j ne propage pas
de changement de segment en segment; et par exemple on peut
choisir les octets en (hex) 17 39 et 74 pour forcer cela dans
les 3 premiers segments. Pour les 3 autres, il faut être plus
habile, ou compter sur la force brute (2^24 essais en moyenne).
On a beaucoup de liberté pour le reste, ce qui permet de
manipuler pas mal les S[] avant les 6 segments; il faut
cette liberté, pour faire en sorte que les octets permutés ne
se propagent pas via les autres octets du message, et que les
permutations causées par les 7 octets modifiés dans les 6
segments se compensent d'une manière ou d'une autre.
Je ne dis pas que c'est facile, mais c'est loin d'être désespéré,
comme mission.
A nouveau: la différence fondemmentale entre TAZ et RC4, c'est
que dans RC4 la permutation est présumée secrète, alors que
dans TAZ elle est connue de l'attaquant, ce qui constitue pour
lui un avantage décisif.
François Grieu
Toujours à propos de TAZ 1.x
http://perso.numericable.fr/~cgonzale/taz/taz-fr.html
Je refais des essais de recherche de collision dans
la phase de compression.
Les octets du message sont traités dans l'ordre (hex)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15* 16* 17* 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38* 39* 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
70 71 72 73* 74* 75 76 77 78 79 7A 7B 7C 7D 7E 7F
00 23 46 69 0C 2F 52 75 18 3B 5E 01 24 47 6A 0D
30 53 76 19 3C 5F 02 25 48 6B 0E 31 54 77 1A 3D
60 03 26 49 6C 0F 32 55 78 1B 3E 61 04 27 4A 6D
10 33 56 79 1C 3F 62 05 28 4B 6E 11 34 57 7A 1D
40 63 06 29 4C 6F 12 35 58 7B 1E 41 64 07 2A 4D
70 13 36 59 7C 1F 42 65 08 2B 4E 71 14 37 5A 7D
20 43 66 09 2C 4F 72 15* 38* 5B 7E 21 44 67 0A 2D
50 73* 16* 39* 5C 7F 22 45 68 0B 2E 51 74* 17* 3A 5D
Si l'on construit des blocs de 128 octets de message différents
dans les 7 octets aux indices (hex) 15 16 17 38 39 73 74
que j'ai repéré par 14 étoiles, ces octets forment 6 "segments"
de 2 ou 3 octets dans les deux moitiés.
On peut donc au moins espérer que la variable j ne propage pas
de changement de segment en segment; et par exemple on peut
choisir les octets en (hex) 17 39 et 74 pour forcer cela dans
les 3 premiers segments. Pour les 3 autres, il faut être plus
habile, ou compter sur la force brute (2^24 essais en moyenne).
On a beaucoup de liberté pour le reste, ce qui permet de
manipuler pas mal les S[] avant les 6 segments; il faut
cette liberté, pour faire en sorte que les octets permutés ne
se propagent pas via les autres octets du message, et que les
permutations causées par les 7 octets modifiés dans les 6
segments se compensent d'une manière ou d'une autre.
Je ne dis pas que c'est facile, mais c'est loin d'être désespéré,
comme mission.
A nouveau: la différence fondemmentale entre TAZ et RC4, c'est
que dans RC4 la permutation est présumée secrète, alors que
dans TAZ elle est connue de l'attaquant, ce qui constitue pour
lui un avantage décisif.
François Grieu
Il y a peut-être une raison toute bête pour que ça ne marche pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
Il y a peut-être une raison toute bête pour que ça ne marche pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
Il y a peut-être une raison toute bête pour que ça ne marche pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
Dans l'article
,
a écrit:Il y a peut-être une raison toute bête pour que ça ne marche
pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
D'accord, si il faut corriger tout S[] et aussi j. Mais deux
objections indépendantes:
1) Si on préfére des segments de 3, j'ai
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66* 67* 68* 69 6A 6B 6C 6D 6E 6F
70 71* 72* 73* 74 75 76 77 78 79 7A 7B 7C* 7D* 7E* 7F
00 0B 16 21 2C 37 42 4D 58 63 6E 79 04 0F 1A 25
30 3B 46 51 5C 67* 72* 7D* 08 13 1E 29 34 3F 4A 55
60 6B 76 01 0C 17 22 2D 38 43 4E 59 64 6F 7A 05
10 1B 26 31 3C 47 52 5D 68* 73* 7E* 09 14 1F 2A 35
40 4B 56 61 6C 77 02 0D 18 23 2E 39 44 4F 5A 65
70 7B 06 11 1C 27 32 3D 48 53 5E 69 74 7F 0A 15
20 2B 36 41 4C 57 62 6D 78 03 0E 19 24 2F 3A 45
50 5B 66* 71* 7C* 07 12 1D 28 33 3E 49 54 5F 6A 75
2) si on considère 2 segments de 2 octets pas trop éloignés,
il est assez probable sans rien faire de spécial que ce qu'il
y a entre les deux n'agrave pas la différence causée par le
premier; et je ne vois rien qui empêche les 2 segments de
se compenser, comme pourrait (je crois) le faire un segment
de 4 octets.
Note: un autre multiplicateur que 11 pourrait améliorer un peu
les choses SUR CE CRITERE; de mémoire, je crois qu'on démontre
que pour de grands n, si on prend k = l'entier premier avec n
le plus proche de n/phi avec phi = (racine(5)+1)/2, la
progression arithmétique par k, modulo n, est une permutation
qui sépare bien les points d'arrivée les uns des autres;
ça donnerais 79, au lieu de 11.
Au risque qu'on remarque que je me répète: le fait que l'adversaire
conaisse S[] et j lui est TRES favorable (par rapport à RC4), et
il n'est pas sur que rentrer chaque octet 2 fois dans le hash soit
suffisant pour compenser cela.
Bon, j'arrête d'en parler tant que j'ai pas quelque chose de
plus abouti, comme attaque.
François Grieu
Dans l'article
<1112822237.231564.239250@f14g2000cwb.googlegroups.com>,
cgonzale@numericable.fr a écrit:
Il y a peut-être une raison toute bête pour que ça ne marche
pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
D'accord, si il faut corriger tout S[] et aussi j. Mais deux
objections indépendantes:
1) Si on préfére des segments de 3, j'ai
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66* 67* 68* 69 6A 6B 6C 6D 6E 6F
70 71* 72* 73* 74 75 76 77 78 79 7A 7B 7C* 7D* 7E* 7F
00 0B 16 21 2C 37 42 4D 58 63 6E 79 04 0F 1A 25
30 3B 46 51 5C 67* 72* 7D* 08 13 1E 29 34 3F 4A 55
60 6B 76 01 0C 17 22 2D 38 43 4E 59 64 6F 7A 05
10 1B 26 31 3C 47 52 5D 68* 73* 7E* 09 14 1F 2A 35
40 4B 56 61 6C 77 02 0D 18 23 2E 39 44 4F 5A 65
70 7B 06 11 1C 27 32 3D 48 53 5E 69 74 7F 0A 15
20 2B 36 41 4C 57 62 6D 78 03 0E 19 24 2F 3A 45
50 5B 66* 71* 7C* 07 12 1D 28 33 3E 49 54 5F 6A 75
2) si on considère 2 segments de 2 octets pas trop éloignés,
il est assez probable sans rien faire de spécial que ce qu'il
y a entre les deux n'agrave pas la différence causée par le
premier; et je ne vois rien qui empêche les 2 segments de
se compenser, comme pourrait (je crois) le faire un segment
de 4 octets.
Note: un autre multiplicateur que 11 pourrait améliorer un peu
les choses SUR CE CRITERE; de mémoire, je crois qu'on démontre
que pour de grands n, si on prend k = l'entier premier avec n
le plus proche de n/phi avec phi = (racine(5)+1)/2, la
progression arithmétique par k, modulo n, est une permutation
qui sépare bien les points d'arrivée les uns des autres;
ça donnerais 79, au lieu de 11.
Au risque qu'on remarque que je me répète: le fait que l'adversaire
conaisse S[] et j lui est TRES favorable (par rapport à RC4), et
il n'est pas sur que rentrer chaque octet 2 fois dans le hash soit
suffisant pour compenser cela.
Bon, j'arrête d'en parler tant que j'ai pas quelque chose de
plus abouti, comme attaque.
François Grieu
Dans l'article
,
a écrit:Il y a peut-être une raison toute bête pour que ça ne marche
pas.
Il me semble qu'il faut au minimum un segment de 3 octets pour
corriger les permutations faites via les octets de ce segment.
D'accord, si il faut corriger tout S[] et aussi j. Mais deux
objections indépendantes:
1) Si on préfére des segments de 3, j'ai
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66* 67* 68* 69 6A 6B 6C 6D 6E 6F
70 71* 72* 73* 74 75 76 77 78 79 7A 7B 7C* 7D* 7E* 7F
00 0B 16 21 2C 37 42 4D 58 63 6E 79 04 0F 1A 25
30 3B 46 51 5C 67* 72* 7D* 08 13 1E 29 34 3F 4A 55
60 6B 76 01 0C 17 22 2D 38 43 4E 59 64 6F 7A 05
10 1B 26 31 3C 47 52 5D 68* 73* 7E* 09 14 1F 2A 35
40 4B 56 61 6C 77 02 0D 18 23 2E 39 44 4F 5A 65
70 7B 06 11 1C 27 32 3D 48 53 5E 69 74 7F 0A 15
20 2B 36 41 4C 57 62 6D 78 03 0E 19 24 2F 3A 45
50 5B 66* 71* 7C* 07 12 1D 28 33 3E 49 54 5F 6A 75
2) si on considère 2 segments de 2 octets pas trop éloignés,
il est assez probable sans rien faire de spécial que ce qu'il
y a entre les deux n'agrave pas la différence causée par le
premier; et je ne vois rien qui empêche les 2 segments de
se compenser, comme pourrait (je crois) le faire un segment
de 4 octets.
Note: un autre multiplicateur que 11 pourrait améliorer un peu
les choses SUR CE CRITERE; de mémoire, je crois qu'on démontre
que pour de grands n, si on prend k = l'entier premier avec n
le plus proche de n/phi avec phi = (racine(5)+1)/2, la
progression arithmétique par k, modulo n, est une permutation
qui sépare bien les points d'arrivée les uns des autres;
ça donnerais 79, au lieu de 11.
Au risque qu'on remarque que je me répète: le fait que l'adversaire
conaisse S[] et j lui est TRES favorable (par rapport à RC4), et
il n'est pas sur que rentrer chaque octet 2 fois dans le hash soit
suffisant pour compenser cela.
Bon, j'arrête d'en parler tant que j'ai pas quelque chose de
plus abouti, comme attaque.
François Grieu
J'estime la probabilité d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait à
peine 8 fois plus rapide que l'attaque des anniversaires ...
J'estime la probabilité d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait à
peine 8 fois plus rapide que l'attaque des anniversaires ...
J'estime la probabilité d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait à
peine 8 fois plus rapide que l'attaque des anniversaires ...
Dans l'article ,
a ?crit:J'estime la probabilit? d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait ?
peine 8 fois plus rapide que l'attaque des anniversaires ...
Probl?mes
- la s?curit? conjectur?e pour TAZ ?tait 2^128 (voire 2^800),
et 2^77 c'est trop faible pour un hash qui produit 256 bits.
- rien n'oblige l'adversaire ? "chercher au hasard", puisqu'il
connais chaque donn?e manipul?e; on ne peut valablement
parler de probabilit? que si l'adversaire essaye au hasard,
ou si une inconnue de l'attaquant est choisie au hasard,
et aucune des deux hypoth?ses n'est garantie.
Dans les constructions "modernes" de hash, on essaye de pouvoir
montrer que si l'adversaire parvient ? trouver une collision,
alors ils sait aussi faire quelque chose d'autre qui semble
improbable. Avec TAZ, il me semble sans espoir de d?montrer que
trouver une collision implique une faiblesse de RC4 qui ne soit
d?j? bien connue.
Fran?ois Grieu
Dans l'article <1113059040.950467.241980@l41g2000cwc.googlegroups.com>,
cgonzale@numericable.fr a ?crit:
J'estime la probabilit? d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait ?
peine 8 fois plus rapide que l'attaque des anniversaires ...
Probl?mes
- la s?curit? conjectur?e pour TAZ ?tait 2^128 (voire 2^800),
et 2^77 c'est trop faible pour un hash qui produit 256 bits.
- rien n'oblige l'adversaire ? "chercher au hasard", puisqu'il
connais chaque donn?e manipul?e; on ne peut valablement
parler de probabilit? que si l'adversaire essaye au hasard,
ou si une inconnue de l'attaquant est choisie au hasard,
et aucune des deux hypoth?ses n'est garantie.
Dans les constructions "modernes" de hash, on essaye de pouvoir
montrer que si l'adversaire parvient ? trouver une collision,
alors ils sait aussi faire quelque chose d'autre qui semble
improbable. Avec TAZ, il me semble sans espoir de d?montrer que
trouver une collision implique une faiblesse de RC4 qui ne soit
d?j? bien connue.
Fran?ois Grieu
Dans l'article ,
a ?crit:J'estime la probabilit? d'une collision , en cherchant au hasard:
P = P1.P2.P'1.P'2 ~ 2^-31.2^-47 ce qui donne 2^-78.
Cela donne une attaque en o(2^77) paire de blocs. Dans cette
construction, avec un hash de 160 bits, la meilleure attaque serait ?
peine 8 fois plus rapide que l'attaque des anniversaires ...
Probl?mes
- la s?curit? conjectur?e pour TAZ ?tait 2^128 (voire 2^800),
et 2^77 c'est trop faible pour un hash qui produit 256 bits.
- rien n'oblige l'adversaire ? "chercher au hasard", puisqu'il
connais chaque donn?e manipul?e; on ne peut valablement
parler de probabilit? que si l'adversaire essaye au hasard,
ou si une inconnue de l'attaquant est choisie au hasard,
et aucune des deux hypoth?ses n'est garantie.
Dans les constructions "modernes" de hash, on essaye de pouvoir
montrer que si l'adversaire parvient ? trouver une collision,
alors ils sait aussi faire quelque chose d'autre qui semble
improbable. Avec TAZ, il me semble sans espoir de d?montrer que
trouver une collision implique une faiblesse de RC4 qui ne soit
d?j? bien connue.
Fran?ois Grieu