PROCEDE DE TRANSMISSION- SECURISEE DE MESSAGES OU DE DONNEES ENTRE DEUX ENTITES
DESCRIPTION
DOMAINE TECHNIQUE
La présente invention concerne un procédé de transmission sécurisée de messages ou de données entre deux entités, à savoir -un émetteur et un récepteur.
ETAT DE LA TECHNIQUE ANTERIEURE
Pour sécuriser la transmission de messages ou de données entre deux entités, à savoir un émetteur et un récepteur, il est connu de réaliser deux types d'opérations : - une première opération qui concerne l'authentification. Cette première opération vise à offrir au récepteur la capacité d'authentifier les messages qu'il reçoit. Elle lui permet ainsi de s'assurer, d'une part, que les messages reçus proviennent bien d'un émetteur autorisé et, d'autre part, que les messages reçus sont intègres, c'est-à- dire qu'ils n'ont pas été altérés durant la transmission entre l'émetteur et le récepteur. Cette opération peut être réalisée par une fonction dite «de Hash». Une telle fonction est mise en œuvre par un algorithme qui associe au message, ou aux données, à transmettre une signature qui est fonction du contenu du message ou des données. Le message, ou les données, et la signature sont alors émis. Le récepteur, après réception du message, ou des données, et de la
signature, génère une signature locale en fonction du message, ou des données, reçu et vérifie que la signature reçue est identique à la signature générée localement. Si tel est le cas, le message est accepté pour un traitement ultérieur. Dans le cas contraire, le message n'est pas considéré comme fiable, et n'est donc pas pris en compte pour un tel traitement ultérieur,
- une seconde opération qui concerne le chif rage/cryptage. Cette seconde opération vise à rendre le message, ou les données, illisibles en cas d'interception de celui-ci durant la transmission entre l'émetteur et le récepteur. Une telle opération fait appel à des traitements connus de chi frage/cryptage.
Une fonction de Hash est une transformation qui reçoit une entrée et délivre une chaîne de taille fixée, qui est appelée valeur de Hash h (h = H (m)) . La valeur de Hash représente de manière concise un message, ou document, plus long à partir duquel elle a été calculée. Une fonction de Hash peut être définie en termes de fonction de compression. Une fonction de compression reçoit une entrée de longueur fixée et délivre une sortie de longueur fixée plus courte.
Une fonction de Hash peut être définie par des applications répétées d'une telle fonction de compression jusqu'à ce que le message entier ait été traité. Dans un tel cas, un message de longueur déterminée est découpé en blocs dont la longueur dépend de la fonction de compression, et complétée, pour des raisons de sécurité, de sorte que la taille du message soit un multiple de la taille d'un bloc. Les blocs sont alors traités séquentiellement, en recevant en entrée
le résultat actuel de la fonction de Hash et le bloc de message courant, la sortie finale étant la valeur de Hash pour le message, comme illustré sur la figure 1.
Les procédés de transmission de l'art connu présentent comme inconvénient un risque de piratage. En effet, dans certains messages, par exemple ceux du type utilisé en télévision numérique (messages EMM ou «entitlement management messages», ou ECM ou «entitlement control messages») , les messages ont des parties importantes identiques. Un message peut, en effet, inclure une grande partie formant l'adresse du terminal destinataire et une petite partie définissant les droits, autorisation, période de validation etc.. alloués à un terminal considéré. L'adresse du terminal restant toujours la même, cette grande partie reste donc identique .
Dans les fonctions de Hash et/ou dans les fonctions de chiffrage par blocs, telles que schématisées sur la figure 1, il est évident que si un grand nombre de premiers blocs restent identiques et que seul changent quelques derniers blocs, le piratage est rendu plus facile. En effet, le résultat du traitement associé à ces fonctions, qui précède le traitement associé aux derniers blocs reste toujours le même, ce qui réduit la difficulté d'une crypto-analyse.
L'invention a pour objet de pallier un tel inconvénient en proposant un procédé de transmission sécurisée de messages, ou de données, entre deux entités qui rende plus difficile une crypto-analyse.
EXPOSE DE L'INVENTION
L' invention concerne un procédé de transmission sécurisée de messages, ou de données, entre deux entités qui est un procédé de codage par blocs de messages, dans lequel un premier message est décomposé en un nombre entier N de blocs, chaque bloc étant appliqué à une unité élémentaire de codage d'une pluralité N d'unités de codage en cascade, caractérisé en ce qu'on génère un second message comprenant les N blocs du premier message disposés dans un ordre différent, et en ce qu'on applique les 2N blocs desdits premier et second messages à 2N unités de codage en cascade pour générer la valeur codée associée au premier message.
Avantageusement, les blocs du second message sont les blocs du premier message disposés dans un ordre inverse.
Les unités de codage peuvent être des unités de chiffrement, ou des unités de génération de- signature, ou des unités d'encryptage, ou des unités de codage. Elles peuvent ainsi appliquer chacune une fonction de Hash et/ou de chiffrement.
Le procédé de l'invention permet d'éviter un risque de piratage par remplacement ou substitution de plusieurs blocs du message. Il s'agit d'un procédé de codage à double passe, contrairement aux procédés de l'art connu qui ne sont réalisés que sur une passe.
Un tel procédé se prête tout à fait au chiffrement des messages EMM et ECM en télévision numérique.
BREVE DESCRIPTION DES DESSINS
La figure 1 illustre un procédé de l'art connu.
La figure 2 illustre le procédé de l'invention.
EXPOSÉ DÉTAILLÉ DE L'INVENTION
Dans les procédés de l'art connu le calcul de la valeur de Hash commence à une extrémité du message à authentifier et se termine à l'autre extrémité de celui-ci, la valeur de Hash résultante étant alors disposée comme un supplément au corps de ce message.
La figure 1 illustre un tel procédé de l'art connu, dans lequel chaque bloc d'un message de N blocs est appliqué à une unité de codage F, appliquant une fonction de Hash, d'une pluralité de N unités de codage en cascade. La première de ces unités de codage reçoit une valeur d'amorçage. La sortie délivre la valeur de Hash du message. La sortie de chacune de ces unité de codage correspond à la valeur de bloc de rang i correspondant codée par les données reçues sur son autre entrée .
Il existe un problème dans de tels procédés lorsque deux messages, ou plus, ont le même champ de données au début et seulement quelques différences à la fin. Il est alors possible de mélanger les blocs correspondants et de les interchanger sans entraîner aucune différence dans la fonction de Hash du message, ceci étant dû au fait que la fonction de Hash temporaire est la même pour les deux messages.
Pour protéger un message à transmettre de ce type d'attaque, le procédé de l'invention a pour objet de préserver ce message de toute modification ; un message codé devant être totalement différent extérieurement même si seulement un bit a été modifié.
Le procédé de l'invention propose d'opérer la fonction de codage, par exemple une fonction de Hash et/ou une fonction de chiffrement, non pas seulement dans un sens du message mais dans les deux sens. Ainsi, la partie variable du message est positionnée à différents endroits du traitement par blocs, rendant beaucoup plus difficile une cryptoanalyse.
La figure 2 illustre ainsi le procédé de l'invention. Le premier message correspond au message de la figure 1. Les N blocs du second message sont les N blocs du premier message dans un ordre, inverse. Comme sur la figure 1, chaque bloc et relié à une unité de codage d'une pluralité 2N d'unités de codage en cascade . Ainsi à partir d'un premier message
(10101000011110000111100001111) , on génère le message (0101000011110000111100001111.1111000011110000111100001010) , combinaison du premier message initial et d'un second message correspondant à ce premier message inversé. On découpe l'ensemble en blocs : (0101-0000-1111-0000-1111-
0000-1111-1111-0000-1111-0000-1111-0000-1010) , et on applique un traitement tel que celui représenté sur la igure 2.
Ainsi dans la mise en œuvre du procédé de l'invention avec utilisation d'une fonction de Hash, la fonction de Hash du premier message peut être calculée de la fin au début de ce premier message. En position 0
le résultat temporaire initialise le mécanisme de codage du premier message. Le calcul de la fonction de Hash continue alors, en tant que seconde passe, du début du premier message jusqu'à la fin, attachant alors la valeur de Hash au message traité avec la fonction de Hash.
La fonction de Hash peut être connectée directement à une fonction de chiffrement et être traitée au même moment. Dans ce cas le message doit être chiffré deux fois :
- de la droite à la gauche (première passe)
- de la gauche à la droite (seconde passe, exécutée uniquement après la première passe) .
La première passe est ici définie comme étant réalisée de la fin au début du message. Mais elle peut également être réalisée du début à la . fin.
L'important est que la première passe aille dans la direction opposée à celle de la seconde passe.
Dans le procédé de l'invention, l'ordre des N blocs du second message peut également correspondre à un ordre aléatoire ou pseudo-aléatoire des N blocs du premier message.
Les unités de codage peuvent être des unités appliquant une fonction de Hash et/ou de chiffrement, mais elles peuvent également être des unités de chiffrement, des unités de génération de signature, des unités d'encryptage ou des unités de crypt ge .