PROCÉDÉ DE CHIFFREMENT DE DONNÉES NUMÉRIQUES
Domaine de l'invention
La présente invention concerne un procédé de chiffrement de données numériques, au moyen d'un algorithme de chiffrement par blocs de longueur fixe prédéfinie.
Art antérieur
Lorsque l'on souhaite transmettre des données numériques, ces données sont échangées sous forme de flux. Selon la norme de transmission utilisée, ce flux doit être formé de paquets pour pouvoir être transmis. Ceci est notamment le cas de la norme MPEG 2 (Motion Picture Expert Groupe version 2).
Lorsque les données doivent être chiffrées, certains algorithmes de chiffrement utilisés doivent scinder les paquets en blocs de longueur fixe prédéfinie de façon à pouvoir procéder au chiffrement en utilisant une clé de chiffrement. La longueur des blocs dépend de l'algorithme de chiffrement choisi.
Généralement, la longueur d'un message ou d'un paquet de données n'est pas un multiple de la longueur de blocs prédéfinie. La scission des paquets en blocs génère donc un bloc résiduel de longueur inférieure à la longueur prédéfinie. Dans de nombreuses situations et en particulier dans le cas d'un flux MPEG 2, le bloc résiduel ne peut pas être rempli de façon à l'agrandir artificiellement jusqu'à la longueur prédéfinie, et le chiffrement de ce dernier ne peut pas se faire de manière naturelle.
Le brevet américain US 5,684,876 décrit un procédé permettant de chiffrer le bloc résiduel d'un message de longueur supérieure à ladite longueur prédéfinie. Dans ce procédé, le dernier bloc complet obtenu
après avoir scindé le message ou le paquet de données en blocs de longueur prédéfinie est tout d'abord chiffré. Une partie de ce message, ayant la longueur du bloc résiduel, est prélevée et constitue une partie du message chiffré. La partie restante est combinée au bloc résiduel de façon à former un bloc ayant la longueur prédéfinie. Celui-ci peut donc être chiffré de façon conventionnelle. Ce procédé est compatible avec des normes telles que MPEG 2, puisque, dans toutes les étapes, la longueur du paquet reste la même.
Ce procédé implique nécessairement l'existence d'au moins un bloc complet, faute de quoi il ne peut être appliqué. Dans le cas où un paquet aurait une longueur inférieure à ladite longueur prédéfinie, il ne peut donc pas être utilisé.
Buts de l'invention
La présente invention se propose de pallier les inconvénients des procédés de l'art antérieur en fournissant un procédé de chiffrement par blocs qui peut être utilisé quelle que soit la longueur du message à transmettre.
Ce but est atteint par un procédé tel que défini en préambule et caractérisé en ce qu'il comporte les étapes consistant à définir un bloc résiduel d'une longueur inférieure à la longueur fixe prédéfinie, à former un bloc de combinaison ayant ladite longueur fixe prédéfinie, ce bloc de combinaison ayant une valeur connue prédéfinie et indépendante des données à chiffrer, à chiffrer ce bloc de combinaison pour former un bloc de combinaison chiffré, à prélever une partie utile du bloc de combinaison chiffré, cette partie utile ayant une longueur égale à celle du bloc résiduel original, et à combiner ladite partie utile du bloc de combinaison chiffré avec ledit bloc résiduel de façon à obtenir un bloc résiduel chiffré ayant la longueur du bloc résiduel original.
Brève description des figures
La présente invention et ses avantages seront mieux compris en référence à la description de modes de réalisation de l'invention et aux dessins annexés dans lesquels :
- la figure 1 illustre un premier mode de réalisation de l'invention,
- la figure 2 représente un deuxième mode de réalisation de cette invention,
- la figure 3a représente schématiquement un bloc de combinaison chiffré ;
- la figure 3b représente une partie utile du bloc de combinaison chiffré de la figure 3a, prélevée à gauche de ce bloc ;
- la figure 3c représente une partie utile du bloc de combinaison chiffré de la figure 3a, prélevée avec un décalage défini dans ce bloc de combinaison ;
- la figure 3d représente une partie utile du bloc de combinaison chiffré de la figure 3a, prélevée à droite de ce bloc ; et
- la figure 4 représente la manière de déchiffrer le message obtenu par le premier mode de réalisation du procédé selon l'invention.
Meilleures manières de réaliser l'invention
Les figures 1 et 2 illustrent des données numériques 10 à chiffrer. Ces données numériques peuvent par exemple être un message à transmettre ou un paquet de données provenant du découpage d'un flux de données. Dans le procédé selon l'invention, ces données sont tout d'abord séparées en blocs Mi, M2, ... ayant une longueur prédéfinie d, par exemple 8 octets. Si « par hasard », la longueur des données est
un multiple de la longueur fixe prédéfinie, l'algorithme de chiffrement est utilisé sur chaque bloc de façon conventionnelle. Il est à noter que, sur les dessins, un mode de chiffrement connu sous l'acronyme ECB (Electronic Code Book) est représenté. D'autres modes de chiffrement pourraient tout aussi bien être utilisés, et en particulier un mode connu sous l'acronyme CBC (Cypherblock Chaining), sans que le procédé ne soit limité à ces deux modes. Pour le chiffrement, on utilise une clé de chiffrement, comme cela est bien connu de l'homme du métier. Si la longueur des données est inférieure à la longueur prédéfinie, il y aura un seul bloc non complet et aucun bloc ayant ladite longueur fixe prédéfinie. Si la longueur des données est supérieure à la longueur prédéfinie d, mais n'est pas un multiple de d, après la séparation en blocs, un bloc incomplet, de longueur e inférieure à la longueur d sera formé. Ce bloc est dénommé par la suite « bloc résiduel » (BR). Il peut donc y avoir un bloc résiduel avec ou sans bloc complet.
Comme mentionné précédemment, certaines normes imposent que le message ou les paquets gardent la même longueur à chaque étape de leur chiffrement. Toutefois, les algorithmes de chiffrement par blocs ne fonctionnent qu'avec des blocs de longueur fixe prédéfinie. Le procédé selon l'invention comprend notamment une étape consistant à combiner le bloc résiduel (BR) avec un autre bloc, dénommé « Bloc de combinaison (BC) » dont les caractéristiques sont détaillées ci-dessous, de façon à obtenir un bloc résultant chiffré.
La figure 1 décrit une première forme de réalisation du procédé dans lequel le bloc de combinaison (BC) est formé de d octets ayant une structure connue. Selon une variante de réalisation avantageuse, ce bloc est formé de d octets tous identiques, ayant par exemple la valeur Ox FF.
Le bloc de combinaison (BC) est tout d'abord chiffré, dans une étape du procédé référencé par CFR sur les figures 1 , 2 et 4, de façon à obtenir un bloc de combinaison chiffré (BC) ayant ladite longueur fixe prédéfinie d. Une partie du bloc de combinaison chiffré (BC) est prélevée. Cette partie, nommée « partie utile » (PU) est choisie de façon à avoir une longueur (e) égale à la longueur du bloc résiduel (BR). Le prélèvement de la partie utile peut se faire généralement en tronquant le bloc de combinaison soit à droite, soit à gauche. Toutefois, d'autres modes de prélèvement de la partie utile peuvent être envisagés, comme cela est décrit ci-dessous en référence aux figures 3b à 3d.
La partie utile (PU) du bloc de combinaison chiffré (BC) est ensuite introduite, en même temps que le bloc résiduel (BR), dans une fonction OU EXCLUSIF (XOR). Cette fonction délivre un bloc résiduel chiffré (BR') ayant la longueur (e) du bloc résiduel (BR), contenant les informations provenant du bloc résiduel (BR), sous une forme chiffrée.
Le bloc (BR') sortant de la fonction OU EXLCUSIF (XOR) peut donc être transmis sans que l'information qu'il contient ne soit accessible à un tiers non autorisé, malgré le fait que la valeur du bloc de combinaison (BC) peut être connue. Par contre, un tiers ayant accès à la clé ayant conduit au chiffrement du bloc de combinaison pourra connaître le contenu de ce bloc et en déduire le contenu du bloc résiduel initial (BR).
Comme cela peut être déduit de la figure 1 , les blocs Mi, M2)... ayant ladite longueur fixe prédéfinie d et provenant de la décomposition d'un paquet de données 10, sont chiffrés de façon conventionnelle, par exemple selon le mode « ECB » et aboutissent à des blocs chiffrés C-i, C ,..-. La longueur du message chiffré est bien la même que celle du message initial, conformément à l'exigence mentionnée précédemment.
Une deuxième forme de réalisation du procédé est illustrée par la figure 2 et s'applique lorsque le message 10 à transmettre ou chaque paquet de données est précédé d'un en-tête (header) (H). L'en-tête contient généralement une partie fixe, identique pour chaque paquet, et une partie variable telle que par exemple un numéro d'identification du paquet (Packet identifier PID). Le bloc de combinaison (BC) est formé de tout ou partie de l'en-tête (H) auquel est ajouté un vecteur de remplissage (VR).
La totalité de l'en-tête (H) peut être utilisée si sa longueur est inférieure ou égale à la longueur fixe prédéfinie d. Sinon, l'en-tête peut être tronqué de façon à correspondre à cette longueur.
Il est également possible de n'utiliser qu'une partie de l'en-tête, en particulier sa partie variable. Lorsque le choix de la partie de l'en-tête a été effectué, cette partie est combinée, généralement au moyen d'une fonction OU EXCLUSIF (XOR), au vecteur de remplissage (VR) de façon à former ledit bloc de combinaison (BC). Ainsi, chaque fois qu'un bloc résiduel est transmis, il sera chiffré à partir d'un bloc de combinaison (BC) différent. Ceci augmente encore la sécurité de transmission, tout en permettant un déchiffrement par tout tiers qui connaît le contenu de l'en-tête (H) et la clé ayant servi au chiffrement. Il est à noter que l'en-tête est généralement transmis sans chiffrement et sans modification de son contenu.
Le vecteur de remplissage (VR) peut par exemple être formé d'un bloc contenant des valeurs constantes toutes identiques, par exemple la valeur Ox FF. Il sert uniquement à compléter l'en-tête ou la partie d'entêté choisie, de façon à former un bloc de combinaison (BC) ayant la longueur fixe prédéfinie d.
Comme dans le mode de réalisation précédent, lorsque le bloc de combinaison (BC) est formé, il est tout d'abord chiffré avant d'être
tronqué de façon à en extraire une partie utile (PU) qui est combinée avec le bloc résiduel à transmettre.
Le prélèvement de la partie utile (PU) du bloc de combinaison chiffré peut se faire de différentes manières, telles qu'illustrées par les figures 3b à 3d. Il peut se faire par exemple en prélevant la partie gauche du bloc, comme cela est illustré par la figure 3b, ou la partie droite comme sur la figure 3d.
Ce prélèvement peut également se faire selon une règle qui dépend du contenu de l'un des blocs, tels que l'en-tête (H), le bloc de combinaison chiffré (BC) ou un autre bloc connu aussi bien de celui qui chiffre le message que de celui qui doit le déchiffrer. A titre d'exemple, il est possible de déterminer une valeur de l'en-tête et de choisir un décalage Δ par rapport à la droite du bloc de combinaison chiffré, qui dépende de cette valeur. Ce cas est illustré par la figure 3c où le décalage Δ vers la gauche est représenté schematiquement comme ayant une valeur de deux octets. La valeur du décalage pourrait également être déterminée sur la base de la valeur du bloc de combinaison chiffré modulo une valeur fixe déterminée. Toute règle permettant de déterminer un décalage de façon univoque et qui soit connue de la partie qui doit déchiffrer le message pourrait être utilisée.
Ce mode de réalisation particulier permet d'améliorer la sécurité du chiffrement puisque la manière de prélever la partie utile entraîne que le résultat du chiffrement change régulièrement, ce qui complique le piratage. Toutefois, ce procédé n'entraîne pas d'erreur « en chaîne », c'est-à-dire que si une erreur se produit, elle n'aura aucune conséquence sur la suite du chiffrement.
Le déchiffrement du message se fait en appliquant les opérations inverses du chiffrement. Ceci est illustré en détail par la figure 4. La partie ou le dispositif qui reçoit le message le sépare en blocs de
longueur fixe prédéfinie d, de façon conventionnelle. Comme dans le message d'origine, il reste un bloc résiduel BR' de longueur e<d. Sur chaque bloc C^ C2l... de longueur d, on applique un algorithme de déchiffrement conventionnel et l'on obtient les blocs initiaux M-i, M2,...On applique ensuite l'algorithme de chiffrement sur le bloc de combinaison (BC), comme dans le cas du chiffrement. On prélève ensuite la partie utile (PU) du bloc de combinaison chiffré (BC), en utilisant la même règle que pour le chiffrement. En appliquant une fonction logique OU EXCLUSIF (XOR) sur le bloc résiduel chiffré (BR') et la partie utile (PU) du bloc de combinaison chiffré, on obtient le bloc résiduel (BR) initial. Le message complet peut donc être reformé.
Dans le cas où le bloc de combinaison comporte un en-tête, on peut également reconstituer le message de la même manière que décrite ci- dessus, puisque l'en-tête utilisé ici est transmis sans chiffrement et sans modification de son contenu.
Selon la présente invention, le bloc de combinaison (BC) peut être invariable au cours du temps, mais il peut également être modifié. Ces modifications peuvent être quelconques pour autant que la règle donnant lieu à ces changements soit connue de celui qui chiffre le message et de celui qui doit le déchiffrer. Dans le cas où le bloc de combinaison varie, il est particulièrement complexe de pirater le bloc résiduel.
Cette invention offre les avantages de pouvoir chiffrer un message quelle que soit sa longueur et en particulier, même si sa longueur est inférieure à la longueur fixe prédéfinie d. Tous les éléments sont chiffrés, ce qui assure une protection optimale contre la lecture non autorisée du message. Elle permet également de ne mettre en œuvre qu'un type de chiffrement, ce qui évite de devoir utiliser un chiffrement par blocs (rapide) et un chiffrement en continu (pour le bloc résiduel).
En outre, le procédé de chiffrement est particulièrement simple à mettre en œuvre tout en offrant une excellente sécurité contre le piratage.