WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Intégration de protocoles de sécurité pour la communication inter-agents dans la plate-forme Aglets

( Télécharger le fichier original )
par Manel Sekma
Institut Supérieur d'Informatique et de Mathématiques de Monastir - Maitrise 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Annexe A

Annexes

- Annexe 4.1

La stéganographie

Exemple

Considérons l'image suivante :

000

000

000

000

000

001

001

000

001

111

111

111

Chaque entrée de ce tableau représente un pixel couleur, nous avons donc une toute petite image 2*2. Chaque triplet de bits (0 ou 1) code la quantité de l'une des trois couleurs primaires du pixel (une image couleur aura dans presque tous les cas des groupes de 8 bits, octets, mais on n'utilise que 3 bits pour clarifier l'exemple). Le bit le plus à droite de chaque triplet est le fameux bit de poids faible LSB. Si on souhaite cacher le message 111 111 101 111, l'image est modifiée de la façon suivante : le bit de poids faible du ie octet est mis à la valeur du ie bit du message; ici on obtient :

001

001

001

001

001

001

001

000

001

111

111

111

- Annexe 4.2

IDEA (International Data Encryption Algorithm) :

L'algorithme est basé sur le mélange d'opérations de différents groupes algébriques. Il y a trois groupes algébriques dont les opérations sont mélangées, et toutes ces opérations sont facilement réalisables à la fois en logiciel et en matériel :

· OU exclusif,

· addition modulo 216,

· multiplication modulo 216+1.

Toutes ces opérations manipulent des sous-blocs de 16 bits. Cet algorithme est ainsi efficace même sur des processeurs 16 bits.

Le bloc de données de 64 bits est divisé en 4 sous-blocs de 16 bits : X1, X2, X3 et X4. Ces quatre sous-blocs deviennent les entrées de la première ronde de l'algorithme. Il y a huit rondes au total. À chaque ronde, les 4 sous-blocs sont combinés par OU exclusif, additionnés, multipliés entre eux et avec 6 sous-blocs de 16 bits dérivés de la clé. Entre chaque ronde, le deuxième et le troisième sous-bloc sont échangés. Enfin, les quatre sous-blocs sont combinés avec les quatre sous-clefs dans une transformation finale.

A chaque ronde, la séquence d'évènements est la suivante :

1. multiplier X1 et la première sous-clef;

2. additionner X2 et la deuxième sous-clef;

3. additionner X3 et la troisième sous-clef;

4. multiplier X4 et la quatrième sous-clef;

5. combiner par OU exclusif les résultats des étapes (1) et (3);

6. combiner par OU exclusif les résultats des étapes (2) et (4);

7. multiplier le résultat de l'étape (5) avec la cinquième sous-clef;

8. additionner les résultats des étapes (6) et (7);

9. multiplier le résultat de l'étape (8) par la sixième sous-clef;

10. additionner les résultats des étapes (7) et (9);

11. combiner par OU exclusif les résultats des étapes (1) et (9);

12. combiner par OU exclusif les résultats des étapes (3) et (9);

13. combiner par OU exclusif les résultats des étapes (2) et (10);

14. combiner par OU exclusif les résultats des étapes (4) et (10);

La sortie de la ronde est constituée des 4 sous-blocs produits par les étapes (11), (13), (12) et (14). Changez les deux blocs intérieurs (sauf lors du dernier rond) et cela donne l'entrée de la ronde suivante.

Après la huitième ronde, il y a une transformation finale :

1. multiplier X1 et la première sous-clef;

2. multiplier X2 et la deuxième sous-clef;

3. multiplier X3 et la troisième sous-clef;

4. multiplier X4 et la quatrième sous-clef;

Enfin les 4 sous-blocs sont réassemblés pour former le texte chiffré.

- Annexe 4.3

RSA (Rivest, Shamir et Adleman) Exemple :

Commençons par créer notre paire de clés :

Prenons 2 nombres premiers au hasard: p = 29, q = 37

On calcule n = pq = 29 * 37 = 1073

On doit choisir e au hasard tel que e n'ai aucun facteur en commun avec (p-1)(q-1) : (p-1)(q-1) = (29-1)(37-1) = 1008

On prend e = 71

On choisit d tel que 71*d mod 1008 = 1

On trouve d = 1079

On a maintenant nos clés:

· La clé publique est (e,n) = (71,1073) (=clé d'encryptage)

· La clé privée est (d,n) = (1079,1073) (=clé de décryptage)

On va encrypter le message 'HELLO'. On va prendre le code ASCII de chaque caractère et on les met bout à bout :

Ensuite, il faut découper le message en blocs qui comportent moins de chiffres que n. n comporte 4 chiffres, on va donc découper notre message en blocs de 3 chiffres :

Ensuite on encrypte chacun de ces blocs :

726^71 mod 1073 = 436 976^71 mod 1073 = 822 767^71 mod 1073 = 825 900^71 mod 1073 = 552 Le message encrypté est 436 822 825 552. On peut le décrypter avec d :

436^ 1079 mod 1073 = 726 822^ 1079 mod 1073 = 976 825^ 1079 mod 1073 = 767 552^ 1079 mod 1073 = 900 C'est à dire la suite de chiffre 726976767900.

On retrouve notre message en clair 72 69 76 76 79 : 'HELLO'.

- Annexe 4.4

MD5 (Message Digest version 5) Notations :

Les registres sont A,B,C,D. Le bloc de 512 bits est scindé en 16 mots de 32 bits, et stockés dans M[0],...,M[15].

On définit une table T[i] de 64 éléments, à partir de la fonction sinus. T[i] vaut la partié entière de 4294967296 * abs(sin(i)).

X <<< s est la rotation à gauche de X par s bits.

Une étape de calcul:

Pour j = 0 à 15 faire

Initialiser X[j] à M[j].

Fin pour.

/* Sauvegarde des registres */

AA=A BB=B CC=C DD=D

/* Premier tour. */

/* Soit [abcd k s i] notant l'opération

a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */

/* On fait les 16 opérations. */

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] /* Deuxième tour. */

/* Soit [abcd k s i] l'opération

a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */

/* On fait les 16 opérations. */

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] /* Etape 3. */

/* Soit [abcd k s t] l'opération

a = b + ((a + H(b,c,d) + X[k] + T[i]) <<<s). */

/* On fait les 16 opérations. */

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] /* Etape 4. */

/* Soit [abcd k s t] l'opération

a = b + ((a + I(b,c,d) + X[k] + T[i]) <<<s). */

/* On fait les 16 opérations. */

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] /* On réécrit dans les registres !*/

A=A+AA

B=B+BB

C=C+CC

D=D+DD

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy