<Desc/Clms Page number 1>
Système cryptographique par bloc de données binaires.
La présente invention est relative à un système cryptographique du type permettant de convertir un vecteur de données de n bits en un vecteur chiffré de n bits sous le contrôle d'une clef cryptographique k formée d'un vecteur également de n bits, n étant un nombre entier plus grand que 2, de préférence un nombre de Mersenne.
La méthode la plus sûre pour encrypter un texte consiste à additionner modulo-2 une séquence strictement aléatoire au texte clair. La même séquence, additionnée au texte encrypté, permet à la réception de restituer le texte original. Cette procédure implique de faire parvenir à l'avance au correspondant une clef aléatoire aussi longue que le message lui-même et qui ne sera utilisée qu'une seule fois. Ceci constitue une contrainte pratiquement inacceptable pour de longs messages dans la cryptographie à usage civil.
Toutefois, il est possible de générer une séquence pseudo-aléatoire à l'aide d'une clef d'initialisation introduite dans un circuit électronique spécialement congu pour une telle application. Pour que cette méthode puisse être valable, il importe que cette séquence ne puisse être reconstituée, même en connaissant l'algorithme qui l'a générée et une correspondance de texte chiffré à texte clair. Celle-ci doit être non linéaire, de longueur pratiquement infinie et présenter toutes les caractéristiques propres aux séquences aléatoires. La difficulté majeure de cette méthode d'encryptage est de réaliser un parallélisme correct entre la génération des séquences pseudo-aléatoires à l'émission et à la réception.
Pour s'affranchir de cette contrainte, certaines méthodes ont été proposées. Elles visent à encrypter chaque bloc de
<Desc/Clms Page number 2>
n bits à l'aide d'un algorithme réversible. Ces algorithmes doivent être conçus de manière à ne pas pouvoir reconstituer la clef d'encryptage lorsque l'on dispose d'un texte clair et d'un texte encrypté correspondant, l'un des deux pouvant être choisi.
Actuellement il existe surtout deux méthodes d'encryptage par bloc, à savoir la méthode dite"DES" (Data Encryption Standard, NBS FIPS PUB 46,17, jan. 1977) et la méthode dite uRSA" proposée par Rivest, Shamir et Adleman (A method for obtaining Digital Signatures and Public-key Cryptosystems, Rivest, Shamir and Adleman, MIT/LCS/TM-82, April 1977).
L'algorithme DES est utilisé mondialement et de nombreux circuits intégrés réalisant cette fonction sont proposés par différentes firmes. Bien que cet algorithme fasse appel à des transformations tant linéaires que non linéaires, celles-ci ont été agencées de manière à pouvoir effectuer tout le cheminement de l'encryptrage en sens inverse lorsque l'on dispose de la clef d'encryptage.
La seconde méthode concerne l'algorithme RSA. Celui-ci permet d'utiliser le même algorithme à l'encryptage et au déchiffrage avec des clefs conjuguées et, de plus, la connaissance d'une clef ne permet pas la reconstitution de l'autre clef. Cette dernière caractéristique toute spéciale a donné naissance à la cryptographie à clef publique. C'est une nouvelle méthode fort attrayante pour certaines applications propres à la cryptographie à usage civil.
Le standard DES présente de sérieux inconvénients : à savoir avant tout son manque de transparence. En effet, il fait appel à de nombreux tableaux de valeurs spéciales dont aucune théorie ne prouve que les valeurs adoptées constituent le meilleur choix. En l'absence d'explications valables, le doute subsiste que l'algoritme ne puisse receler un cheval de Troie. D'autre part, il est bien connu qu'il existe bien des entraves administratives à
<Desc/Clms Page number 3>
l'obtention des circuits DES à des fins civiles.
Le standard RSA convient spécialement pour procéder à l'échange des clefs secrètes à l'initialisation d'une liaison DES entre correspondants ne disposant pas de clef secrète commune. Pour ce faire, la clef secrète temporaire est encryptée à l'aide de la clef secrète de l'expéditeur, puis avec la clef publique du destinataire. A la réception, le message sera restitué par l'encryptage à l'aide de la clef secrète du destinataire, suivi de l'encryptage avec la clef publique de l'expéditeur. Le volume de calculs à effectuer pour l'encryptage et le déchiffrage est assez important et, de ce fait, le standard RSA est relativement très lent et ne convient pas pour une utilisation massive.
Un des buts essentiels de la présente invention est de proposer une solution alternative aux systèmes cryptographiques existants.
A cet effet, le système cryptographique, suivant l'invention, appelé système SED ("Secure European Device"), comprend des moyens permettant, en faisant usage d'un algorithme SED, à partir d'un vecteur d'entrée Es, appelé vecteur de source, correspondant aux données à chiffrer, de calculer un vecteur de sortie Ed, correspondant au texte chiffré qui est égal à l'état d'un registre à décalage linéaire correspondant à un registre composé de n éléments et d'au moins une boucle de contre-réaction, ces dernières étant formées de circuits ou-exclusif dont les entrées et les sorties sont en liaison avec les sorties et les entrées des éléments du registre à décalage de manière à obtenir pour ce registre à décalage la longueur maximun possible de 2exp (n)-l pour la séquence des états consécutifs, appelée séquence linéaire,
chaque état de ce registre représentant un saut dont l'origine est un vecteur de référence, appelé''origine-zéro", et dont la valeur du saut est le numéro d'ordre de cet état dans la séquence linéaire, ces moyens étant encore tels pour que chaque
<Desc/Clms Page number 4>
saut puisse être exprimé sous forme d'une relation linaire REL-S en fonction des n premiers états de la séquence linéaire à partir de
EMI4.1
l'état "origine-zéro", les n états pouvant être groupés sous forme de n colonnes pour réaliser une matrice carrée, appelée MAT-0, laquelle matrice contenant implicitement tous les éléments caractérisant le registre à décalage, ladite relation REL-S constituant un invariant pour un saut comprenant un même nombre d'états consécutifs de la séquence linéaire entre l'origine et la destination du saut,
l'origine du saut correspondant au premier vecteur d'un ensemble de n états consécutifs de la séquence linéaire, groupés en colonnes pour réaliser une matrice carrée MATS, le produit matriciel de cette matrice par le vecteur REL-S donnant la destination du saut, l'algorithme SED permettant de rechercher le vecteur de sortie précité, en faisant état de cette relation linéaire, lequel état de la séquence linéaire étant défini par un saut compté à partir du vecteur de référence "origine-zéro" égal à k fois le saut modulo-2exp (n)-l caractérisant le vecteur de source, le saut correspondant au vecteur de sortie de l'algorithme SED étant obtenu par une succession de sauts mis bout-à-bout et commençant à ce vecteur de référence, ces sauts étant de deux types,
un premier type de saut égal au saut du vecteur de référence jusqu'au vecteur de source et un second type de saut égal au saut du vecteur de référence jusqu'à la destination du saut effectué en dernier lieu.
Avantageusement, le système cryptographique suivant l'invention comprend des moyens pour effectuer, dans un ordre bien défini, une succession d'opérations, chacune de ces opérations transformant un vecteur d'entrée en un vecteur de sortie, ce dernier vecteur servant de vecteur d'entrée dans l'opération suivante, l'ensemble de ces opérations comportant une ou plusieurs applications de l'algorithme SED se rapportant à des algorithmes SED dont les séquences linéaires sont égales ou différentes,
<Desc/Clms Page number 5>
lesdites applications étant suivies ou/et précédées d'autres opérations de brouillage, telles que la multiplication arithmétique modulaire, le coefficient multiplicateur étant égal ou différent de la clef utilisée, ou encore une suite de n opérations telles que des permutations,
des substitutions ou des additions modulo-2 opérées sur les bits du vecteur concerné, le choix de ces opérations étant déterminé par la valeur 1 ou 0 du nième bit d'un vecteur secret, la clef par exemple, l'ordre de succession de toutes ces opérations pouvant être l'ordre direct ou l'ordre inverse suivant une commande externe au système.
D'autres détails et particularités de l'invention ressortiront de la description donnée ci-après à titre d'exemple non limitatif de quelques formes de réalisation particulières du système cryptographique suivant l'invention avec référence aux dessins annexés.
La figure 1 montre un bloc diagramme de l'algorithme SED.
Les figures 2,3 et 4 concernent certains détails de réalisation hardware de l'algorithme SED.
Des travaux de recherche dans le domaine des logarithmes discrets ont été publiés ces dernières années (Discret logarithms in finite fields and their cryptographie significance, A. M. Odlyzko, Eurocrypt 1984). Ces travaux qui sont à la base des études de cryptanalyse appliquées au système SED, ont mis en évidence la possibilité de calculer les logarithmes discrets correspondants à des vecteurs donnés dans une certaine base, mais cette recherche ne peut s'effectuer que par le biais d'une recherche semi-exhaustive.
Le système SED fait appel principalement à un algorithme simple, appelé SED, qui permet de calculer rapidement le vecteur de sortie dont le logarithme discret dans une base logarithmique donnée est égal au produit du nombre représentant la
<Desc/Clms Page number 6>
clef d'encryptage par le logarithme discret du vecteur d'entrée. Avec le produit des logarithmes, l'algorithme SED s'inspire en cela des travaux de W. Diffie et M. E. Hellman (New directions in cryptography IEEE Trans. Inform. Theory vol. IT-22, pp 644-654, 1976). L'application unique de cet algorithme ne présente aucune sécurité cryptographique car la recherche possible des logarithmes discrets des vecteurs d'entrée et de sortie permettrait de recalculer aisément la clef d'encryptage (Fast evaluation of logarithms in fields of characteristic of two, Don Coppersmith, IEEE trans. inform. theory vol.
IT-30, pp 587-594).
La présente invention est basée sur le fait qu'une double application de l'algorithme SED, dans laquelle le vecteur de sortie de la première application aura été transformé par une fonction de brouillage avant de servir comme vecteur d'entrée pour la seconde application, peut présenter les garanties de sécurité pour autant que la mise en place de cette fonction de brouillage ne puisse pas être assimilée à une application de l'algorithme SED dont le coefficient pourrait être déterminé. En effet, dans cette hypothèse, le vecteur de sortie de la première application qui n'est pas connu, peut être n'importe quel vecteur des 2exp (n)-2 vecteurs possibles et de ce fait, la recherche de la clef nécessiterait une recherche exhaustive au niveau maximun.
Il importe de remarquer qu'une double application de l'algorithme SED sans aucune transformation du vecteur intermédiaire équivaudrait à une seule application mais dont le coefficient k serait égal à kl*k2.
La multiplication modulaire, fonction aisément réversible, peut jouer le rôle de fonction de brouillage entre les deux applications de l'algorithme SED. En effet, une suite de multiplications arithmétiques modulaires effectuées en cascade génère une séquence qui n'est pas de même nature que celles générées par des fonctions linéaires d'additions modulo-2. Le
<Desc/Clms Page number 7>
coefficient multiplicatif peut être égal à la clef d'encryptage utilisée dans l'algorithme SED. En procédant de la sorte, on lie le vecteur de sortie de la première application de l'algorithme SED au vecteur d'entrée de la seconde application par une relation non linéaire où chaque bit d'un des vecteur est fonction de plusieurs bits de l'autre vecteur.
Des fonctions réversibles simples telles que la permutation, la substitution ou l'addition modulo-2 des bits d'un vecteur, utilisées comme fonction de brouillage, sont équivalentes, du moins dans leurs effets, à une application de l'algorithme SED mais dont le coefficient multiplicateur peut adopter plusieurs valeurs possibles. La mise en oeuvre de n fonctions simples, effectuées en cascade, avec le choix possible de chacune d'elles suivant la valeur 1 ou 0 du nième bit d'un vecteur secret, la clef par exemple, pourrait introduire des incertitudes de l'ordre 2exp (n). Le recours aux fonctions biunivoques simples semble fort attractif car il facilite la réalisation hardware et ne donne pas lieu à des reports dans les additions arithmétiques.
Néanmoins, à cause de la nécessité de devoir réaliser la réversibilité de la fonction de brouillage pour effectuer le déchiffrage, le système d'encryptage doit contenir deux vecteurs de clef de n bits. De plus, la plus grande prudence s'impose pour vérifier le degré reel d'incertitude.
L'ensemble du système cryptographique SED peut être implanté aisément dans un circuit intégré. La taille des blocs de données sera choisie suffisamment grande pour exclure toute possibilité de cryptanalyse par recherche exhaustive.
L'algorithme SED est avant tout transparent : il permet aisément de comprendre la succession et la signification des opérations à effectuer. Contrairement au standard DES, la probabilité de retrouver le vecteur initial en effectuant des encryptages en cascade avec la même clef est pratiquement nulle.
<Desc/Clms Page number 8>
En vue de permettre une approche plus aisée de l'aspect théorique de l'algorithme SED, on exposera cette étude en termes de registre à décalage où les numéros d'ordre des vecteurs dans une séquence linéaire jouent le rôle de logarithmes discrets et où les structures des registres à décalage correspondent aux bases des systèmes logarithmiques.
Considérons un registre à décalage composé de n éléments et ayant une séquence d'états de longueur maximum égale à 2exp (n)-l. Comme ces états sont reliés entre eux par des relations linéaires, on appellera cette séquence la SEQUENCE LINEAIRE. Par convention, on désigne, suivant une forme de réalisation particulière, l'état du registre à décalage où tous les n éléments sont égaux à 1 comme étant l'état ORIGINE-ZERO de la séquence linéaire. Chaque état du registre à décalage peut être désigné par son numéro d'ordre dans la séquence, l'état ORIGINE-ZERO ayant le numéro d'ordre ZERO.
A partir des relations caractérisant une séquences linéaire, on a développé une méthode permettant d'établir l'état du registre dont le numéro d'ordre dans cette sequence linéaire est égal à la somme des numéros d'ordre de deux états donnés, les numéros d'ordre de ceux-ci n'étant pas connus. Cette méthode permet aussi de déterminer l'état du registre qui a le numéro d'ordre double du numéro d'ordre d'un état donné, le numéro d'ordre de ce dernier n'étant pas connu. Elle permet également de calculer l'état ayant le numéro d'ordre (k*s) modulo-2exp (n)-l dans la séquence linéaire, k étant un nombre donné sous la forme d'un développement binaire et s le numéro d'ordre d'un état donné appelé SOURCE, ce numéro d'ordre n'étant pas connu.
Dans l'algorithme SED, l'état du registre à décalage ayant le numéro d'ordre s correspond au texte SOURCE à encrypter, tandis que le nombre k joue le rôle de la clef d'encryptage. Le résultat de l'encryptage est donné par l'état du registre ayant le
<Desc/Clms Page number 9>
numéro d'ordre k*s modulo-2exp (n)-l. L'on démontre qu'en effectuant deux encryptages consécutifs avec des clefs ke et kd, qui vérifient la relation ke*kd = 1 modulo-2exp (n)-l, on retrouve le texte initial. Le calcul des clefs conjuguées est exposé dans les travaux de Rivest (A method for obtaining signatures and publics-key cryptosystems ; Rivest, Shamir and Adleman, MIT/LCS/TM 82, april 1977). Les fonctions d'encryptage et de déchiffrage font appel au même algorithme mais utilisent des clefs conjuguées.
Suivant une forme de réalisation particulière de l'invention, le nombre de Mersenne 89 a été adopté comme valeur pour le nombre n de bits d'un bloc de données binaires de sorte que 2exp (89)-l est un nombre premier.
Il est intéressant de voir que 2exp (89)-2 contient un grand facteur premier : 2931542417. En effet, 2exp (89)-2 = 61897009642690137449562110 = 2*3*5*17*23*89*353*397*683*2113*2931542417.
Il existe deux structures de registre à décalage avec une seule boucle de contre-réaction donnant lieu à une séquence maximum. Les explications qui suivent concernent la structure basée sur le polynôme caractéristique PO + P51 + P89 = 0 (version SED-51) et sont facilement transposables pour le polynôme PO + P38 + P89 = 0 (version SED-38). Dans la première structure, l'élément 51 est additionné modulo-2 à l'élément 89 pour fournir l'élément 1 de l'état suivant de la séquence linéaire, tandis que tous les autres éléments sont décalés d'une position vers la droite. Une préférence a été donnée à la première structure, car elle est légèrement plus avantageuse en ce qui concerne sa réalisation hardware.
Chaque état Es appartenant à la séquence linéaire du registre à décalage peut être considéré comme étant la destination d'un saut prenant origine à l'état ORIGINE-ZERO, la valeur de ce saut étant le numéro d'ordre de l'état Es dans la séquence lineaire. La relation linéaire qui lie l'état Es en fonction des 89
<Desc/Clms Page number 10>
premiers états de la séquence linéaire générée à partir de l'ORIGINE-ZERO, peut s'écrire sous la forme du produit matriciel
Es =MAT-0 * REL-S (1) MAT-0 étant la matrice carrée formée des 89 premiers états et REL-S le coefficient de linéarité. Les vecteurs Es et REL-S sont appelés respectivement SAUT et RELATION LINEAIRE.
Pour établir cette relation, il y a lieu de considérer la matrice carrée 89*89 formée par 89 colonnes correspondantes aux 89 premiers états de la séquence linéaire comptés à partir de l'état ORIGINE-ZERO. Tous les éléments m (i, l) de la première colonne, i allant de 1 à 89, sont égaux à 1. Dans la colonne 2, seul l'élément m (l, 2) est égal à 0, tandis que tous les autres sont égaux à 1. A chaque colonne i suivante, l'élément m (i-l, i) ainsi que ceux situés plus haut dans la colonne sont nuls pour toutes les valeurs de i allant de 2 à 52. A la colonne 53, l'élément m (l, 53) prend la valeur de la somme modulo-2 des éléments m (51,52) et m (89,52) c'est à dire 1. Toutes les valeurs 1 ou 0 des éléments de la matrice glissent suivant des diagonales descendantes.
La structure de la matrice est représentée partiellement au tableau 1 donné ci-après.
La matrice MAT-0 n'est pas singulière et elle possède une matrice inverse représentée au tableau 2, également repris-ciaprès. Il est à remarquer que la matrice inverse comporte une majorité de zéros, tandis que les éléments non nuls sont répartis suivant un arrangement très systématique composé principalement de quatre diagonales. Reprenons la relation (1) et calculons REL-S. On obtient aisément ce qui suit :
REL-S = (MAT-O) exp (-l) * Es (2)
Le vecteur REL-S est donc égal au produit matriciel de la matrice inverse (MAT-O) exp (-l) par le vecteur Es. La relation (2) établit une relation biunivoque entre les vecteurs REL-S et Es qui caractérisent un saut.
On démontre facilement que le vecteur REL-S
<Desc/Clms Page number 11>
EMI11.1
<tb>
<tb> 0000000001.... <SEP> 55555555556.... <SEP> 8888888888
<tb> 1234567890.... <SEP> 01234567890.... <SEP> 0123456789
<tb> 01 <SEP> 1000000000.... <SEP> 00011111111.... <SEP> 1111111111
<tb> 02 <SEP> 1100000000.... <SEP> 00001111111.... <SEP> 1111111111
<tb> 03 <SEP> 1110000000.... <SEP> 00000111111.... <SEP> 1111111111
<tb> 04 <SEP> 1111000000.... <SEP> 00000011111.... <SEP> 1111111111
<tb> 05 <SEP> 1111100000.... <SEP> 00000001111.... <SEP> 1111111111
<tb> 06 <SEP> 1111110000.... <SEP> 00000000111.... <SEP> 1111111111
<tb> 07 <SEP> 1111111000.... <SEP> 00000000011.... <SEP> 1111111111
<tb> 08 <SEP> 1111111100.... <SEP> 00000000001.... <SEP> 1111111111
<tb> 09 <SEP> 1111111110.. <SEP> .. <SEP> 00000000000.... <SEP> 1111111111
<tb> 10 <SEP> 1111111111.. <SEP> ..00000000000..
<SEP> ..1111111111
<tb> .. <SEP> ............ <SEP> ............... <SEP> ............
<tb>
.. <SEP> ............ <SEP> ............... <SEP> ............
<tb>
36 <SEP> 1111111111.. <SEP> ..00000000000.. <SEP> ..0000000011
<tb> 37 <SEP> 11111111111.. <SEP> ..00000000000.. <SEP> .. <SEP> 0000000001
<tb> 38 <SEP> 1111111111.... <SEP> 00000000000.... <SEP> 0000000000
<tb> 39 <SEP> 11111111111.. <SEP> ..00000000000.. <SEP> ..0000000000
<tb> .. <SEP> ............. <SEP> ............... <SEP> ............
<tb>
.. <SEP> ............. <SEP> ............... <SEP> ............
<tb>
50 <SEP> 1111111111.. <SEP> ..10000000000.. <SEP> ..0000000000
<tb> 51 <SEP> 1111111111.... <SEP> 11000000000.... <SEP> 0000000000
<tb> 52 <SEP> 1111111111.... <SEP> 11100000000.... <SEP> 0000000000
<tb> 53 <SEP> 11111111111.. <SEP> ..10000000000.. <SEP> .. <SEP> 0000000000
<tb> 54 <SEP> 1111111111.... <SEP> 11111000000.... <SEP> 0000000000
<tb> 55 <SEP> 1111111111.... <SEP> 11111100000.... <SEP> 0000000000
<tb> 56 <SEP> 1111111111.... <SEP> 11111110000.... <SEP> 0000000000
<tb> 57 <SEP> 1111111111.... <SEP> 11111111000.... <SEP> 0000000000
<tb> 58 <SEP> 1111111111.... <SEP> 11111111100.... <SEP> OOOOOOOOOJ)
<tb> 59 <SEP> 1111111111.... <SEP> 11111111110.... <SEP> 0000000000
<tb> 60 <SEP> 11111111111.. <SEP> ..11111111111.. <SEP> ..0000000000
<tb> .. <SEP> ............. <SEP> ............... <SEP> ............
<tb>
.. <SEP> ............. <SEP> ............... <SEP> ............
<tb>
80 <SEP> 11111111111.. <SEP> ..11111111111.. <SEP> ..1000000000
<tb> 81 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> .. <SEP> 1100000000
<tb> 82 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> .. <SEP> 1110000000
<tb> 83 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> ..1111000000
<tb> 84 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> ..1111000000
<tb> 85 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> ..1111000000
<tb> 86 <SEP> 1111111111.... <SEP> 111111111111.. <SEP> .. <SEP> 1111111000
<tb> 87 <SEP> 1111111111.. <SEP> ..11111111111.. <SEP> ..1111000000
<tb> 88 <SEP> 11111111111.. <SEP> ..11111111111.. <SEP> ..1111111110
<tb> 89 <SEP> 1111111111.... <SEP> 11111111111.. <SEP> .. <SEP> 1111111111
<tb>
EMI11.2
TABLEAU 1. Matrice MAT-O formée des 89 premiers vecteurs états du registre à décalage à partir du vecteur ORIGINE-ZERO (11111111...
... 1111111111)
<Desc/Clms Page number 12>
EMI12.1
<tb>
<tb> 0000000001.... <SEP> 5555555556.... <SEP> 888888888
<tb> 1234567890.... <SEP> 1234567890.... <SEP> 123456789
<tb> 01 <SEP> 1000000000.... <SEP> 0100000000.... <SEP> 000000001
<tb> 02 <SEP> 1100000000.... <SEP> 0110000000.... <SEP> 000000000
<tb> 03 <SEP> 0110000000.... <SEP> 0011000000.... <SEP> 000000000
<tb> 04 <SEP> 0011000000.... <SEP> 0001100000.... <SEP> 000000000
<tb> 05 <SEP> 0001100000.... <SEP> 0000110000.... <SEP> 000000000
<tb> 06 <SEP> 0000110000.... <SEP> 0000011000.... <SEP> 000000000
<tb> 07 <SEP> 0000011000.. <SEP> .. <SEP> 0000001100.... <SEP> 000000000
<tb> 08 <SEP> 0000001100.... <SEP> 0000000110.... <SEP> 000000000
<tb> 09 <SEP> 0000000110.... <SEP> 0000000011.... <SEP> 000000000
<tb> 10 <SEP> 0000000011.. <SEP> ..0000000001.. <SEP> ..000000000
<tb> .. <SEP> ............
<SEP> .............. <SEP> ...........
<tb>
.. <SEP> ............ <SEP> .............. <SEP> ...........
<tb>
36 <SEP> 0000000000.. <SEP> ..0000000000.. <SEP> ..000001100
<tb> 37 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000000110
<tb> 38 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000000011
<tb> 39 <SEP> 0000000000.. <SEP> ..0000000000.. <SEP> ..000000000
<tb> .. <SEP> ............ <SEP> .............. <SEP> ...........
<tb>
.. <SEP> ............ <SEP> .............. <SEP> ...........
<tb>
51 <SEP> 0000000000.. <SEP> ..1000000000.. <SEP> ..000000000
<tb> 52 <SEP> 0000000000.... <SEP> 1100000000.... <SEP> 000000000
<tb> 53 <SEP> 0000000000.... <SEP> 0110000000.... <SEP> 000000000
<tb> 54 <SEP> 0000000000.... <SEP> 0011000000.... <SEP> 000000000
<tb> 55 <SEP> 0000000000.... <SEP> 0001100000.... <SEP> 000000000
<tb> 56 <SEP> 0000000000.... <SEP> 0000110000.... <SEP> 000000000
<tb> 57 <SEP> 0000000000.... <SEP> 0000011000.... <SEP> 000000000
<tb> 58 <SEP> 0000000000.... <SEP> 0000001100.... <SEP> 000000000
<tb> 59 <SEP> 0000000000.... <SEP> 0000000110.... <SEP> 000000000
<tb> 60 <SEP> 00000000000.. <SEP> ..0000000011.. <SEP> ..000000000
<tb> .. <SEP> ............. <SEP> .............. <SEP> ...........
<tb>
.. <SEP> ............. <SEP> .............. <SEP> ...........
<tb>
80 <SEP> 0000000000000 <SEP> ..0000000000.. <SEP> ..000000000
<tb> 81 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 100000000
<tb> 82 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 110000000
<tb> 83 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 011000000
<tb> 84 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 001100000
<tb> 85 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000110000
<tb> 86 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000011000
<tb> 87 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000001100
<tb> 88 <SEP> 0000000000.. <SEP> .. <SEP> 0000000000.... <SEP> 000000110
<tb> 89 <SEP> 0000000000.... <SEP> 0000000000.... <SEP> 000000011
<tb>
EMI12.2
TABLEAU 2.
Représentation partielle de la matrice inverse (MAT-O) exp (-l) de celle du tableau 1.
<Desc/Clms Page number 13>
constitue un invariant propre au nombre d'états que caractérisent le saut et qu'il est indépendant de l'origine utilisée dans la formulation de la relation (2).
Notons que ce produit matriciel peut s'effectuer en hardware par le réseau appelé LINEAIRE formé à l'aide de 127 circuits du type OU-EXCLUSIF alors que la version SED-38 nécessitrait 141 circuits. La figure 2 donne ce réseau linéaire : - le lier élément du vecteur REL-S est égal à la somme modulo-2 des éléments 1,52 et 89 ; - les éléments d'indice i, i allant de 2 à 38, sont égaux à la somme modulo-2 des quatre éléments i-l, i, i+50 et i+51 du vecteur SAUT ; - les éléments d'indice i, i allant de 39 à 89, sont égaux à la somme modulo-2 des deux éléments i-l et i du vecteur SAUT.
Le vecteur REL-S permet de définir un saut comprenant un nombre d'états égal au nombre d'états compris entre le vecteur ORIGINE-ZERO et le vecteur SAUT. La prochaine étape consiste à rechercher le vecteur appelé vecteur DESTINATION appartenant à la même séquence linéaire et caractérisé par le même saut mais effectué à partir d'un état ORIGINE quelconque. Le vecteur DESTINATION Ed est obtenu par le produit matriciel
Ed = MAT-S * REL-S (3) où MAT-S désigne la matrice carrée formée des 89 états consécutifs appartenant à la séquence linéaire, la première colonne étant le vecteur ORIGINE du saut.
Il importe de se rendre compte que tous les éléments de la première ligne et de la première colonne de MAT-S se reproduisent tout au long des diagonales descendantes prenant naissance à ces éléments. Les 89 éléments de la colonne de gauche sont donnés par le vecteur ORIGINE du saut. Tous les éléments
<Desc/Clms Page number 14>
m (i, j) de la matrice MAT-S sont égaux aux éléments m (i-l, j-1), i et j allant de 2 à 89. Les éléments de la première ligne m (l, j), j allant de 2 à 89, sont égaux à la somme modulo-2 des éléments m (51, j-l) et m (89, j-l) pour la version SED-51, ce qui nécessite l'utilisation de 88 circuits OU-EXCLUSIF. Tous les éléments de la matrice MAT-S sont donc déterminés par le vecteur ORIGINE.
Le produit matriciel MAT-S * REL-S pourra donc être réalisé en hardware par 7921 (=89*89) mailles agencées suivant une structure matricielle. Cette structure sera commandée verticalement par le vecteur REL-S et diagonalement par le vecteur ORIGINE. Le résultat est appelé vecteur DESTINATION. Chaque élément de ce vecteur sera obtenu par la somme modulo-2 des signaux de sortie des 89 mailles appartenant à la ligne correspondante au rang de cet élément. En vue de réaliser le minimum de retard dû à la propagation du signal de sortie dans les circuits OU-EXCLUSIF, il importe que ceux-ci soient connectés suivant une structure en arbre de Noël renversé. Ceci nécessite 88 circuits OU-EXCLUSIF à deux entrées par ligne de la matrice.
Tout saut est caractérisé par deux éléments : son origine et sa valeur. L'origine est un état de la séquence linéaire, alors que la valeur d'un saut est exprimée sous la forme de l'état correspondant à ce saut à partir de 1'ORIGINE-ZERO. L'introduction d'un vecteur état représentant la valeur d'un saut à l'entrée du réseau LINEAIRE et d'un autre vecteur état représentant un vecteur ORIGINE dans la colonne de gauche de la matrice MAT-S donne lieu à la formation du vecteur DESTINATION correspondant au saut modulo- (2exp (89)-l) effectué partir du vecteur ORIGINE.
L'apparition du vecteur DESTINATION se fera avec un certain retard dû à la propagation des signaux dans les divers circuits électroniques. Comme le vecteur DESTINATION sert d'origine pour le calcul du saut suivant, ce vecteur devra être échantillonné dans le délai minimum après l'introduction des deux vecteurs aux entrées du
<Desc/Clms Page number 15>
réseau linéaire et de la matrice MAT-S. C'est ce laps de temps qui conditionne la vitesse d'encryptage du système SED.
L'application de l'algorithme SED consiste en la réalisation d'une succession de sauts, le premier partant de l'état ORIGINE-ZERO et le résultat se retrouvant dans le registre DESTINATION du dernier saut. L'origine d'un saut étant toujours la destination du saut précédent (ou l'ORIGINE-ZERO pour le premier saut), la première colonne de la matrice MAT-S est raccordée à la sortie du registre DESTINATION.
Il est proposé d'effectuer un saut égal à k (l (k < 2exp (89) -1) fois le saut de l'ORIGINE-ZERO jusqu'à un vectrtir d'entrée quelconque mis dans un registre appelé SOURCE, lequel correspond au texte à encrypter. A cet effet, un ensemble d'opérations sera effectué sous le contrôle d'un circuit PROGRAMMATEUR. Supposons que le registre CLEF contienne le nombre k sous forme binaire. A l'initialisation, tous les bits du registre DESTINATION sont mis à 1 car la succession de tous les sauts débute au vecteur ORIGINE-ZERO. Un circuit SCRUTATEUR, couplé avec un compteur pouvant être incrémenté de 0 à 90, examinera chaque bit du registre clef en commengant par le bit le plus significatif. L'état 0 du compteur correspond à la position d'attente.
Au moment de la commande de l'encryptage, des impulsions horloge régulièrement espacées sont transmises vers la commande de l'échantillonnage du registre DESTINATION. Ces impulsions servent également à l'incrémentation du compteur du circuit SCRUTATEUR. Deux cas peuvent alors se présenter : - si le bit du registre CLEF désigné par le compteur est égal à 0, le circuit PROGRAMMATEUR a pour mission d'échantillonner le vecteur de la séquence linéaire de numéro d'ordre 2*nO qui est formé à l'entrée du registre DESTINATION, le vecteur de sortie de ce registre ayant le numéro d'ordre nO.
A cet
<Desc/Clms Page number 16>
effet, une même impulsion horloge incrémentera le compteur et effectuera l'échantillonnage du registre DESTINATION, l'entrée du réseau LINEAIRE étant raccordée à la sortie du registre DESTINATION ; - si le bit du registre CLEF désigné par le compteur est égal à 1, la même opération exposée ci-dessus a lieu, mais de plus, elle est suivie d'une autre opération effectuant le raccordement de l'entrée du réseau LINEAIRE au registre SOURCE et l'échantillonnage du registre DESTINATION, ce qui a pour effet d'obtenir à la sortie de ce dernier registre, lors de l'examen du bit concerné, le vecteur de numéro d'ordre 2*nO+s.
Lorsque le compteur du circuit SCRUTATEUR a atteint le nombre 90, l'encryptage est terminé et le résultat se trouve dans le registre DESTINATION. En effet, si la clef k correspond au développement binaire : k = k89 * 2exp (88) + k88 * 2exp (87) +.... + k2 * 2 + kl où les bits k89, k88,...., k2 et kl adoptent les valeurs 1 ou 0, le produit : s * k = ( (.. ( (s*k89) *2 + s*k88) *2 + s*k87) *2 +.... +s*k2) *2 + s*kl peut être effectué par une série d'opérations de deux types : il y a 88 opérations de multiplication par 2 et, si le ième bit ki n'est pas nul, une opération d'addition. L'encryptage de l'algorithme SED peut être réalisé par 135 sauts en moyenne et la vitesse d'encryptage est égal au 2/3 de la fréquence horloge.
L'application du système cryptographique suivant l'invention sera décrite plus en détail ci-après.
Deux correspondants qui n'ont pas de clefs secrètes communes, peuvent se procurer une clef temporaire ou définitive par l'intermédiaire d'un organisme agréé pour la distribution des clefs. Au départ, chaque titulaire d'un terminal équipé d'un système encrypteur SED, est identifié par un numéro officiel, au même titre que les abonnés du réseau téléphonique ont chacun un numéro d'appel attribué par les soins de la régie des téléphones.
<Desc/Clms Page number 17>
Après sa sortie d'usine, le circuit intégré SED est mis à la disposition de l'organisme agréé, lequel y introduit une clef secrète propre au titulaire du système SED. Cette clef est le résultat de l'encryptage du numéro d'identification du titulaire à l'aide de la clef secrète de l'organisme agréé. La clef conjuguée à la clef calculée est également introduite dans le circuit intégré SED. Dans un souci de sécurité, le système SED est agencé de manière à ne pas permettre l'extraction des clefs hors du circuit intégré.
Avant de commencer une liaison encryptée, le correspondant A communique en clair à l'organisme agréé son numéro d'identification, ainsi que le résultat de l'encryptage du numéro d'identification du correspondant B à l'aide de sa clef secrète. A partir de ces deux informations, l'organisme agréé est en mesure d'établir un jeu de clefs faisant référence à trois paramètres : les numéros d'identification de A et B et le moment de la demande de la clef. Cette clef personnalise la liaison de A vers B. L'organisme agréé retourne à A un message qu'il déchiffre à l'aide de sa clef secrète. Deux des blocs déchiffrés concernent la clef temporaire de A et ainsi que les paramètres en clair de la liaison A vers B. Deux autres blocs, également déchiffrés par A, sont transmis à B qui les déchiffre à son tour à l'aide de sa clef secrète.
Ces deux blocs donnent la clef conjuguée temporaire destinée à B ainsi que les trois paramètres en clair de la liaison chiffrée B vers A. Dans la procédure exposée ci-dessus, les clefs temporaires pour la liaison de A vers B et vice-versa, ne peuvent être extraites des circuits intégrés. Néanmoins, il est toujours possible à A et B de réencrypter d'anciens messages réalisés par l'organisme agréé pour rétablir les clefs d'une nouvelle liaison de A vers B.
En procédant de la sorte, A et B auront authentifié leur correspondant sans possibilité de fraude. Ce scénario implique une parfaite intégrité de l'organisme agréé. Pour accepter ce
<Desc/Clms Page number 18>
scénario, il est absolument nécessaire que le matériel informatique de cet organisme, qui procède au calcul des clefs, soit entièrement inclus dans un circuit intégré et dont les informations traitées ne sont pas accessibles extérieurement. Remarquons que si l'organisme agréé est reconnu comme tel aux yeux de la loi, le scénario susmentionné pourrait, moyennant quelques adaptations, présenter toutes les caractéristiques nécessaires pour pouvoir revendiquer d'une manière irréfutable devant une instance judiciaire qu'un tel message a bien été transmis de A à B, et a été réalisé à l'aide d'une clef créée à une certaine date.
Le scénario exposé ci-dessus peut être étendu au cas spécial d'un correspondant A en présence d'un grand nombre de correspondants B, ces derniers recevant tous le même message encrypté émis par A. Toujours en procédant par l'intermédiaire de l'organisme agréé, A peut distribuer à chaque correspondant Bi une clef qui lui est propre pour décrypter le message commun. La clef pour le correspondant Bi ne peut convenir pour le correspondant Bj. Un exemple concret de ce scénario est illustré par le cas d'un satellite météorologique émettant régulièrement des images des configurations nuageuses terrestres. Seules les stations bai qui auront acquitté le montant des redevances pour recevoir les signaux du satellite A seront en mesure de déchiffrer ces images météo.
Les figures qui ont été mentionnées ci-dessus seront décrites plus en détail ci-après.
La figure 1 exprime en hardware ce qui a été exposé précédemment sous l'aspect mathématique et illustre le cheminement de l'information entre les différents éléments du bloc diagramme de l'algorithme SED. Le circuit programmateur 1 assure la gestion des entrées 2 et sorties 3 des données via les registres SOURCE 4, CLEF 5 et DESTINATION 6. Il effectue la scrutation des bits du registre CLEF 5 et la commande de l'aiguillage de l'information venant soit du registre DESTINATION 6, soit du registre source 4, et allant à
<Desc/Clms Page number 19>
l'entrée du réseau LINEAIRE 7. La matrice MAT-S est commandée verticalement par la sortie du réseau LINEAIRE 7 et diagonalement par la sortie du registre DESTINATION 6. L'information de sortie de la matrice MAT-S est échantillonnée dans le registre DESTINATION 6.
Le circuit programmateur 1 est également en liaison avec le circuit multiplicateur modulaire 8 qui effectue le brouillage du vecteur intermédiaire aux deux applications de l'algorithme SED.
La figure 2 donne la structure du réseau LINEAIRE 7 formé de 127 circuits OU-EXCLUSIF. Les 89 entrées du réseau sont représentées partiellement du côté gauche de la figure. Ces entrées proviennent des 89 signaux de sortie, soit du registre SOURCE 4, soit du du registre DESTINATION 6. Les sorties là 89 du réseau LINEAIRE 7 figurent à droite de la figure et correspondent aux 89 signaux de commande du réseau vertical ou colonnes de la matrice MAT-S, l'élément 1 correspond à la première colonne de gauche et l'élément 89 correspond à la dernière colonne de droite. A titre d'exemple, on remarquera dans cette figure que le signal de sortie 1 est égal à la somme modulo-2 des signaux d'entrée l, 2,52 et 53.
Les éléments non nuls de la matrice inverse du tableau 2 indiquent quels sont les signaux d'entrée qui interviennent dans--la somme modulo-2 des signaux de sortie.
La figure 3 montre les connexions aux deux entrées a et b des portes ET situées aux trois premières lignes et aux colonnes j-1, j et j+1 de la MAT-S. Les commandes verticales sont données par les sorties du réseau LINEAIRE 7, tandis que la commande de la diagonale descendante qui prend naissance à l'entrée b de la porte ET de la colonne j de la première ligne est réalisée par la somme modulo-2 des signaux des deux commandes diagonales passant par les mailles 51 et 89 de la colonne j-1.
La structure des deux réseaux de commande de la matrice MAT-S est illustrée par les relations ... = ET-INa (i-1, j) = ET-INa (i, j) = ET-INa (i+l, j) =... et
<Desc/Clms Page number 20>
... = ET-INb (i-l, j-l) = ET-INb (i, j) = ET-INb (i+l, j+l) =.. pour les commandes verticales et diagonales.
La figure 4 illustre la structure en arbre de Noël renversé des connexions des circuits OU-EXCLUSIF (i, j) en ce qui concerne les 8 premières mailles de la ligne 89. Le circuit OUEXCLUSIF de la colonne 8 reçoit les signaux des colonnes 4 et 12.
Le circuit 16 reçoit les signaux 12 et 24. Le circuit 32 regroupe les signaux 16 et 48. Le signal venant du circuit 64 constitue le signal de sortie de la ligne 89 de la matrice MAT-S et est introduit à l'entée 89 du registre DESTINATION 6. Ne sont pas représentés à la figure 4, le circuit 80 qui reçoit les signaux venant des circuits 72 et 84 ainsi que le circuit 88 recevant les signaux du circuit 80 et de la sortie du circuit ET (89, 89).
Un exemple de l'utilisation du système SED est donné par les résultats suivants :
EMI20.1
<tb>
<tb> Clef <SEP> d'encryptage <SEP> 103DDCFE682C3200D75076F
<tb> Clel <SEP> de <SEP> déchiffrage <SEP> 0891D608FFF6B717CD0621A
<tb> Il
<tb> Message <SEP> 1234567890ABCDEF1234567
<tb> Résultat <SEP> première <SEP> application <SEP> ODC6B3C9EE901586D3ADB95
<tb> Résultat <SEP> multiplication <SEP> modulaire <SEP> l1AC6E1807ClOOE7F5CA291
<tb> Résultat <SEP> seconde <SEP> application <SEP> 0020A6E36F842ACA668D3AB
<tb>