Brevet FR2857811A1 — publié le 20050121

METHODE DE CHIFFRAGE D'UN FLUX AUDIO OU VIDEO COMPRESSE A TOLERANCE D'ERREURS La présente invention est relative à une méthode de traitement de données compressées, et à des appareils et supports pour sa mise en oeuvre. Le domaine technique de l'invention est celui de la fabrication de codeurs de données audio et/ou vidéo. L'invention est plus particulièrement relative à une méthode de chiffrage sélectif (partiel) de données audio ou vidéo par un algorithme de chiffrement, les données étant compressées et organisées selon un format standardisé, et pouvant comporter des mots codés de longueur variable. La distribution sécurisée de documents vidéo est aujourd'hui limitée à la diffusion de télévision" à péage" par câble ou satellite ; la sécurité est assurée par des systèmes de chiffrement" propriétaires" , qui sont définis, mis en #uvre et contrôlés par un prestataire unique : le diffuseur. Les nouveaux standards de vidéo à faible débit, l'Internet haute vitesse et les terminaux portables en réseau sans fil, de type téléphone 3G ou assistant personnel, devraient bientôt permettre la distribution de documents vidéo : téléconférence, messages multimédias, bandes annonces de films, actualités sportives en direct, vidéo à la demande, notamment. Des besoins de sécurité apparaissent, qui ne peuvent être satisfaits par les solutions actuelles. Les contraintes sont les suivantes : a- la syntaxe du flux chiffré doit rester le plus conforme possible au standard de codage, afin de faciliter le transport en réseau ; la méthode de traitement de données doit assurer une transparence au transcodage et aux changements de débit, ainsi qu'une transparence aux routeurs et serveurs pour des raisons de confiance ; la méthode doit permettre l'accès aléatoire et d'autres traitements vidéo sans déchiffrage du flux complet, et doit permettre le transport par des protocoles prévus pour de la vidéo standard ; b- l'efficacité de compression ne doit pas être dégradée du fait de la sécurisation des données par chiffrage ; c- la sécurisation doit être compatible avec divers outils prévus par les standards de compression (MPEG4, H264) de données vidéo, en particulier la résistance aux erreurs, pour la transmission sans fil et les pertes de paquets IP (protocole Internet), ainsi que le codage multi niveaux, pour les terminaux clients à bande passante hétérogène ; d- le niveau de sécurité et de masquage visuel doit être adapté à l'application: robustesse aux attaques spécifiques à la vidéo ; e- la puissance de calcul requise doit rester compatible avec des terminaux embarqués, pour des applications telles que la transmission sans fil en flux continu ("streaming") de documents multimédias. Selon la norme MPEG, une séquence vidéo est constituée d'une suite de groupes d'images, chaque groupe d'image consistant en une suite d'images de type I (intrinsèque), P (prédite) et B (bidirectionnelle) ; chaque image de type I est découpée en macroblocs ; chaque macro bloc est converti en quatre blocs de luminance et en deux blocs de chrominance, cette conversion entraînant une première perte d'information. Chaque bloc de 64 pixels est converti en une table de 64 coefficients par une transformation DCT ("discrete cosine transform") ; cette table est compressée par quantification ("quantization") puis ordonnée et codée ("zig-zag ordering" et "run-length coding") en fonction du nombre de coefficients de valeur nulle rencontrés lors d'un balayage en zig-zag de la table; les données compressées résultantes sont codées en mots de longueur variable ("Huffman coding") ; ces transformations entraînent également une perte d' information. Diverses méthodes de chiffrement d'un flux de données vidéo standardisé - en particulier d'un flux au standard MPEG - ont été proposées en vue de satisfaire certaines des contraintes énoncées ci avant. Lorsque l'on chiffre entièrement un mot codé ("codeword") faisant partie d'une table de mots codés de différentes longueurs, il en résulte généralement un codeword qui n'appartient pas à cette table (mot "non conforme") ; par conséquent, un décodeur qui analyse les codewords bit à bit et prend des décisions à chaque bit, ne pourra pas reconnaître la frontière du codeword chiffré, se "perdra" et ne saura plus quel champ de données il est en train d'analyser ; cet inconvénient provient du fait que les codewords sont de longueur variable. Le document "A fast MPEG video encryption algorithm", Changgui Shi et al, ACM Multimedia 98, décrit une méthode de chiffrement de données vidéo compressées au format MPEG, par une clé secrète ; les bits de signe des coefficients (AC et DC) de Huffman - qui sont des mots codés de longueur variable - sont "XORés" bit à bit avec une clé de longueur déterminée (c'est-à-dire combinés bit à bit avec les bits de la clé au moyen de portes logiques XOR, soit OU EXCLUSIF), et sont respectivement remplacés - dans le flux de données vidéo - par la valeur de bit résultant de cette opération ; dans ce document, il est proposé d'utiliser une ou plusieurs clé(s) longues ; une clé de 128 bits est utilisée à titre d'exemple. Selon ce document, on chiffre seulement les bits de signe des codewords, et seulement pour les codewords qui représentent des données utiles (vecteurs de mouvement et coefficients DCT représentant la texture), ce qui résulte en un codeword conforme. Si l'on chiffrait les codewords représentant autre chose, comme par exemple le nombre de blocs codés, même en obtenant après chiffrage des codewords conformes, le décodeur se perdrait. Cette méthode de chiffrage sélectif, qui opère sur une faible partie du flux de données, nécessite des ressources de calcul moindres que celles nécessitées par les méthodes de chiffrage intégral du flux ; en contrepartie, l'obscurcissement des images chiffrées est relativement faible. Selon le document Changgui Shi et al, susmentionné, des points de synchronisation, qui sont ajoutés au flux de données, permettent à un décodeur disposant de la clé de savoir à partir de quelle position dans le flux chiffré, il doit recommencer à utiliser la clé de déchiffrage ; ces points de synchronisation sont ajoutés au début de chaque groupe d'images, au début de chaque image de type I ou au début d'un nombre prédéterminé d'images. L'annexe E de la norme ISO 14496-2 définit plusieurs outils ou modes utiles pour minimiser les conséquences négatives d'erreurs dans la transmission d'un flux de données compressées : i) les marques de synchronisation ; ii) la séparation entre les données de texture d'une part, les données d'en-tête et de mouvement d'autre part ; iii) l'utilisation de codes de longueur variable réversibles pour le codage des données de texture. Dans un mode "video packet synchronisation", une marque de synchronisation périodique peut être créée à la fin d'un macrobloc lorsque le nombre de bits depuis la marque précédente est supérieur à un certain seuil ; un paquet vidéo (partie du flux comprise entre deux marques successives) présente ainsi un nombre variable de macro blocs. Lorsque le flux de données est partiellement chiffré avec un algorithme de chiffrement par bloc, tel que les standards DES (bloc de 64 bits) et à fortiori AES (128 bits), le nombre de bits de données à chiffrer à l'intérieur d'un tel paquet vidéo, peut être inférieur au nombre de bits du bloc de chiffrage, notamment lorsque le paquet contient les vecteurs de mouvement associés aux images de type P et B; un tel paquet sera dans ce cas transmis sans chiffrement, et l'obscurcissement de la séquence sera diminué. Le brevet US-6,505,299-B1 (Zeng et al) décrit différentes méthodes de chiffrage de données vidéo quantifiées (partiellement compressées) avant leur codage par des tables de Huffman, par encodage RLE, codage arithmétique ou autre codage d'entropie : une transformation espace-fréquence est appliquée à l'image, ce qui génère une carte de coefficients de transformation ; ces coefficients sont ensuite chiffrés, soit par brouillage de leurs bit de signe, soit par brouillage de leurs bits les moins significatifs, soit par mélange de blocs de la carte, soit par mélange de coefficients correspondant à une bande de fréquence spatiale de la carte. Ce document propose par ailleurs de chiffrer les vecteurs de mouvement des images de type P et B ; ceci augmente l'obscurcissement des images chiffrées. Un inconvénient de ces méthodes de chiffrage est qu'elles réduisent l'efficacité de la compression des données obtenue par quantification ; un autre inconvénient est qu'elles nécessitent des moyens de calcul plus importants que ceux nécessaires à un chiffrage après codage de Huffman ou équivalent. La demande de brevet US-2002/0018565 (Luttrell et al) décrit une méthode de chiffrage sélectif d'un flux de données MPEG4 préservant la syntaxe de codage ; selon cette méthode, on chiffre les index (de longueur fixe égale à n) d'une table de 2n mots de longueur variable, et on remplace, pour chaque index de la table, le mot (en clair) correspondant à cet index par le mot (en clair) correspondant à l'index chiffré ; cette méthode ne permet pas de conserver la relation de la table en clair entre la longueur d'un mot codé et la fréquence d'apparition du symbole correspondant dans un flux de données ; elle dégrade par conséquent la compression de données par codage à l'aide de la table chiffrée. Certaines des méthodes connues de chiffrage d'un flux de données vidéo sont insensibles à la perte d'un paquet de données ; par contre, ces méthodes sont sensibles à la perte isolée d'un ou plusieurs bits de données, ce qui se produit fréquemment dans les systèmes de transmission sans fil notamment. Par ailleurs, ces méthodes connues sont incompatibles avec les méthodes d'adaptation du flux à une bande passante variable prévues par la norme MPEG4FGS ("fine granularity scalability", MPEG-4 Video Vérification Model version 18. 0, January 2001), dans lesquelles, pour adapter un flux de données à un canal de transmission de bande passante réduite, on tronque le flux de données à des positions arbitraires, dès que le nombre de bits alloués au canal est atteint, au milieu d'une image par exemple. La présente invention a pour objet de proposer une méthode améliorée de chiffrage d'un flux standardisé de données compressées. La présente invention a également pour objet de proposer une telle méthode qui remédie - en partie au moins - aux inconvénients des méthodes connues de chiffrage de flux de données audio et vidéo compressées. Au sens de la présente demande, les termes et expressions "mot codé", "mot de code" et "codeword" sont employés indifféremment pour désigner un mot d'une table de mots de différentes longueurs. Selon un premier aspect, l'invention propose une méthode de chiffrage d'un flux standardisé de données audio ou vidéo compressées, dans laquelle on chiffre par un flux pseudo aléatoire au moins une partie des bits d'un paquet de données délimité par deux marques de synchronisation successives. Le chiffrement par flux s'effectuant bit à bit, la position dans un paquet de données chiffrées d'un bit chiffré est la même que celle qu'occupait le bit de données correspondant dans le paquet de données, avant chiffrage ; en outre, l'état d'un bit chiffré (ou respectivement non chiffré) n'influence pas les bits voisins ; cette méthode de chiffrement est compatible avec les variations du nombre de bits à chiffrer, d'un paquet à un autre paquet ; aucun bit de donnée à chiffrer n'est donc laissé en clair ; en outre, le déchiffrement d'un paquet chiffré par flux peut être fait à rebours en partant de la marque de synchronisation initiale du paquet suivant; l'invention permet d'éviter que le chiffrement ne propage des erreurs isolées causées par la transmission et affectant seulement un ou plusieurs bits à l'intérieur d'un paquet de données chiffrées, ce que ne permet pas un chiffrement par bloc ; l'invention permet également de déchiffrer un paquet tronqué pour adapter le flux à une bande passante réduite. Pour prévenir les tentatives de déchiffrement frauduleux, on utilise un flux pseudo aléatoire différent (unique) pour chaque paquet du flux de données : à chaque marque de synchronisation du flux de données, on génère un nouveau flux pseudo aléatoire que l'on "XORe" bit à bit avec les bits de données à chiffrer (c'est à dire que l'on applique à des portes "OU" exclusif), et on replace dans le flux les bits de données chiffrés à la place qu'ils occupaient respectivement avant chiffrage. De préférence, on génère un flux de chiffrage d'un paquet déterminé par traitement d'une donnée non chiffrée du paquet déterminé, dite seconde donnée non chiffrée, par traitement d'une donnée non chiffrée du flux de données n'appartenant pas au paquet déterminé, dite première donnée non chiffrée, et par traitement d'une clé unique secrète et de préférence caractéristique du flux. De préférence encore, la donnée non chiffrée du paquet déterminé est une donnée d'entête du paquet, et la donnée non chiffrée du flux de données n'appartenant pas au paquet déterminé, est une marque temporelle du flux ou "time stamp". Selon un mode préféré de mise en #uvre, pour générer un flux pseudo aléatoire unique (différent des autres flux pseudo aléatoires) pour chaque paquet du flux de données, on utilise une ou plusieurs données d'entête du paquet et/ou du flux de données considéré, en particulier une marque temporelle ("time stamp") du groupe d'images dont fait partie le paquet considéré, qui peu(ven)t être associée(s) à un index tel que l'index du premier macrobloc du paquet considéré, pour former une combinaison de données qui est spécifique au paquet considéré. De préférence, en outre, on chiffre par bloc, à l'aide d'une clé secrète, les première et seconde données non chiffrées ; à cet effet, on utilise de préférence un algorithme de chiffrement par bloc de 64 bits, de 128 bits, de 192 bits, ou de 256 bits pour générer, pour chaque paquet de données, un flux pseudo aléatoire à partir d'une clé et de données caractéristiques du paquet considéré. Afin d'augmenter le niveau de résistance du chiffrage à des "attaques" (tentatives frauduleuses de déchiffrage) utilisant la connaissance de portions non chiffrées (en clair) du flux de données, on utilise en outre de préférence un algorithme de hachage pour produire le flux de chiffrage des données du paquet déterminé, à partir du résultat du chiffrement par bloc des première et seconde données non chiffrées. Lorsque, comme c'est le cas pour la norme MPEG4, une partie au moins des données du flux ont été codées en des mots de longueur variable, on ne chiffre que les bits de ces mots codés qui, après chiffrement et replacement dans le mot codé, respectent la structure de mots codés du flux de données à chiffrer ; de préférence, à cet effet, pour des mots codés d'une table de mots codés ne présentant pas tous la même longueur, on chiffre, de préférence pour chaque mot codé de la table, au moins une partie des bits - et de préférence tous les bits - qui, après changement aléatoire de leur(s) valeur(s) et après remplacement bit à bit dans le mot codé à chiffrer des bits non chiffrés par les bits chiffrés, aboutit à la formation d'un second mot codé de la table de mots codés; la longueur du mot codé est ainsi invariante lors de ce chiffrage ; en d'autres termes, on mélange (on permute) les mots codés d'au moins un groupe de plusieurs mots codés (et de préférence de tous les groupes de plusieurs mots codés) de la table qui présentent la même longueur. Selon un mode préférentiel de réalisation de l'invention, on ajoute à la table de mots codés de différentes longueurs, un index d'identification de chaque mot codé de la table, ainsi qu'au moins un paramètre définissant, pour chaque mot codé de la table, le nombre - et éventuellement la position dans le mot codé - du ou des bit(s) à chiffrer. Pour chiffrer une suite de mots codés d'un paquet du flux de données, on détermine pour chaque mot codé, à l'aide de cette table, le nombre et la position des bits à chiffrer du mot ; on extrait du mot le(s) bit(s) à chiffrer et on le (s) place dans un tampon en concaténant dans ce tampon les bits à chiffrer extraits des mots codés de la suite des mots codés ; lorsque ce tampon est plein ou lorsqu'une marque de synchronisation de début du paquet suivant est atteinte, on chiffre la chaîne de bits présents dans le tampon et on replace chacun des bits chiffrés à la place qu'ils occupaient respectivement avant chiffrage dans le mot codé correspondant de la suite de mots codés du paquet; on obtient ainsi après chiffrage, un flux de données conforme au standard de compression. Pour déchiffrer une suite de mots codés ainsi chiffrés, on effectue les opérations inverses : on extrait de chaque mot du flux les bits chiffrés que l'on place dans un tampon ; lorsque ce tampon est plein ou lorsqu'une marque de synchronisation du paquet suivant est atteinte, on déchiffre la série de bits qu'il contient, puis on remplace dans le flux respectivement chaque bit chiffré extrait par le bit déchiffré de même position dans le tampon ; on vide ensuite le tampon avant de traiter de la même façon les mots du paquet suivant. Alternativement, on chiffre en continu ("au fil de l'eau") chaque bit à chiffrer du flux de données, après l'avoir extrait du flux, à l'aide d'une opération XOR avec le bit correspondant d'un bloc du flux pseudo aléatoire de chiffrement, puis on le remet à la place qu'il occupait précédemment dans le flux de données. Le suivi, dans le bloc du flux pseudo aléatoire de chiffrement, du numéro du bit à utiliser pour le XOR, peut être effectué avec un compteur qui est incrémenté à chaque nouveau bit chiffré. Cette méthode supprime le besoin de stocker les bits à chiffrer dans un tampon, ainsi que le reste du paquet en attente des bits manquants ; elle réduit donc à la fois le coût en mémoire et les délais de traitement induits par ces mémorisations. Les avantages de cette méthode de chif f rement continu par flux pseudo aléatoire sont particulièrement importants pour le déchiffrage, qui a généralement lieu sur des plateformes matérielles dont la capacité de calcul et la mémoire sont restreintes. Pour déchiffrer un flux de données chiffré avec cette méthode, on opère de la même façon que pour le chiffrage : on déchiffre continûment ("au fil de l'eau") chaque bit à déchiffrer du flux de données chiffrées, après l'avoir extrait du flux, à l'aide d'une opération XOR avec le bit correspondant du bloc pseudo aléatoire de déchiffrement Selon un autre aspect, l'invention propose un support lisible par un ordinateur sur lequel est enregistré un code de programme mettant en #uvre les opérations définies ci avant, pour permettre à l'ordinateur de chiffrer un flux de données compressées, ou inversement de déchiffrer un flux de données compressées chiffrées conformément à l'invention. L'invention permet de chiffrer des flux de données codées avec des mots de code de longueur variable, réversibles ou non, signés ou non signés, en préservant la syntaxe de codage du flux. L'invention permet également, dans le cas de tables de mots codés signés, d'obtenir un brouillage plus complet des données (images ou sons en particulier), par comparaison avec les méthodes chiffrant seulement le bit de signe. Selon un autre aspect, l'invention propose un codeur (ou un décodeur) de données audio ou vidéo formatées et compressées, qui comporte : - une table de mots codés de différentes longueurs, la table comportant pour chaque mot un index et un paramètre définissant les bits du mot à (dé) chiffrer, - un premier tampon prévu pour recevoir temporairement les bits de données sélectionnés en vue de leur (dé)chiffrage, - des moyens de (dé)chiffrement par flux aptes à (dé)chiffrer les bits stockés dans le tampon, qui comportent de préférence: * un second tampon de stockage de données (Dl, D2) caractéristiques d'un paquet de données à (dé) chiffrer ; * des moyens de (dé)chiffrement par une clé des données caractéristiques de paquet, dont les données résultantes sont traitées par des moyens de hachage pour produire un flux pseudo aléatoire de chiffrage caractéristique du paquet ; * un troisième tampon de stockage temporaire du flux pseudo aléatoire, en vue de son application à des portes "OU exclusif" pour chiffrer les bits de données du premier tampon ; - des moyens pour actionner les moyens de (dé)chiffrement par flux, pour provoquer le (dé)chiffrement des bits stockés dans le premier tampon lorsque le premier tampon est plein ou lorsqu'une marque de synchronisation de début du paquet suivant le paquet considéré est atteinte, pour remplacer les bits sélectionnés dans le paquet de données par les bits stockés et (dé)chiffrés, et pour vider les tampons. D'autres caractéristiques et avantages de l'invention apparaissent dans la description suivante, qui se réfère aux dessins annexés, et qui illustre sans aucun caractère limitatif des modes préférés et exemples de réalisation de l'invention. Les figures la et 1b représentent une table utilisée conformément à l'invention, qui incorpore la table B-12 de l'annexe B de la norme MPEG4 (ISO 14496-2) ainsi qu'une colonne d'index respectivement associés à chaque mot, et qu'une colonne de paramètres indiquant le nombre de bits chiffrables de chaque mot. La figure 2 est une partie de la table B-23 de l'annexe B de cette norme. La figure 3 est un schéma illustrant le chiffrage d'une suite de mots d'un paquet d'un flux de données, conformément à l'invention. Par référence à la figure 3, les bits chiffrables de la partie codée en RVLC ("reversible variable length coding") d'un paquet MPEG4 sont chiffrés non avec un chiffrement par bloc, mais par flux ("stream cipher") FC, ce qui laisse les bits chiffrés en place. Ceci permet d'éviter que le chiffrement propage des erreurs aléatoires causées par la transmission (type "wireless"). Le paquet P comporte une série de macroblocs MB1,..., MB3 de données de mouvement, une marque de séparation MM, suivis d'une série de macroblocs MB4,..., MB6,... de données de texture. A chaque marque de synchronisation initiale MSI1 d'un paquet P du flux 10 de données vidéo, on génère un nouveau flux pseudo aléatoire FC qui est utilisé par XOR bit à bit avec chacun des bits de données utiles à chiffrer qui ont été préalablement extraits du flux 10 et placés dans un registre ou tampon 11. Les bits ainsi chiffrés sont ensuite remis à leur place ; on ne chiffre que les bits qui permettent de garder la conformité à la norme de compression, c'est à dire les bits de signe et quelques bits additionnels, comme décrit ci après. Pour assurer la sécurité, alors que le chiffrage par blocs est réputé plus sûr, il faut que chaque flux pseudo aléatoire de chiffrage des paquets tels que P (limité par deux marques de synchronisation MSI1 et MSI2 successives) soit unique. Pour assurer la tolérance d'erreur, il faut que le flux pseudo aléatoire FC puisse être transmis secrètement du codeur au décodeur, et sans erreur, même si le flux 10 de données vidéo est sujet à des erreurs. Pour assurer l'adaptabilité à la bande passante variable, il faut que, si seul le début du paquet P chiffré est reçu, le début du paquet P puisse néanmoins être déchiffré. Cela est assuré par le fait que chaque bit chiffré est indépendant des autres bits chiffrés, et est situé à la place du bit clair correspondant. Le flux pseudo aléatoire est généré par une clef unique C, liée par exemple au document vidéo à chiffrer, et par des données qui changent souvent, qui sont protégées des erreurs, et ne se reproduisent jamais ; dans un flux MPEG, après les marques de début d'image ("VOP start code") telles que IMT (figure 3), il existe généralement une marque temporelle ou "time stamp" : dans un même film, la marque temporelle n'est jamais la même ; un flux de chiffrage calculé à partir de ces marques ne se répétera donc jamais ; dans un autre film ou flux de données, on pourra retrouver les mêmes marques temporelles mais, la clef C du document étant différente, les flux de chiffrage FC seront différents. La clef est transmise au décodeur indépendamment du flux, par exemple par un protocole à clef publique. Si une marque temporelle IMT n'est présente qu'au début de chaque image (ou "video object plane"), on peut assembler la donnée Dl correspondant à cette marque avec une seconde donnée D2 telle que l'index I1M de premier macrobloc du paquet vidéo P à chiffrer. Cet assemblage est ainsi unique dans tout le film. Pour assembler la clef C et les données Dl et D2 de manière à générer un flux pseudo aléatoire FC très différent d'un autre flux pseudo aléatoire généré avec la même clef et une donnée Dl (marque temporelle) très peu différente de la première marque temporelle du paquet précédent, on chiffre les données combinées Dl et D2 (complémentées à 64 ou 128 bits par exemple par des "0") avec un algorithme de chiffrage par bloc ACB tel que DES, la clef C étant la clef secrète unique pour l'ensemble des paquets du flux. Le résultat est passé dans un algorithme de hachage (tel que le standard SHA1), qui a pour but d'une part de donner en sortie un message FC de longueur fixe, par exemple 160 bits pour SHA1, et d'autre part de donner un message très différent en sortie si l'entrée varie peu, même d'un seul bit. Un tel algorithme SHA1 délivre en sortie 160 bits utilisés par XOR avec les bits utiles à chiffrer. Si entre deux marques de synchronisation successives (telles que MSI1 et MSI2 pour le paquet P), il y a moins de 160 bits à chiffrer, on n' utilisera que les premiers bits de la sortie de SHA1 ; s'il y en a au contraire plus de 160, il suffit de générer un autre bloc de flux de chiffrage FC de 160 bits, à l'aide de la clef unique C, des même données Dl et D2, et d'un index D3 que l'on incrémente ; ainsi, dans le cas où un seul bloc du flux de chiffrage FC n'est pas suffisamment grand pour chiffrer tous les bits du paquet P considéré, on génére un ou plusieurs blocs FC supplémentaires, dont le dernier peut ne pas être utilisé entièrement. Pour assurer l'unicité de chaque bloc du flux de chiffrage, on ajoute un index supplémentaire D3 dans le bloc d'entrée que l'on incrémente à chaque nouveau bloc du flux de chiffrage utilisé pour un paquet déterminé. Ainsi, on peut obtenir le flux de chiffrage FC des bits de données du paquet vidéo par l'une des formules : FC = SHA1(DESclef unique((marque temporelle)& index & [complément à 64 bits] ) ) , ou bien FC = SHA1(AESclef unique((marque temporelle)& index & [complément à 128 bits] ) ) , suivant que l'on utilise un chiffrage DES ou AES pour produire le flux de chiffrage FC. Il est possible d'utiliser des variantes de cette méthode combinant une clef unique et une marque temporelle. Pour obtenir un flux de chiffrage composé d'une suite de blocs de taille fixe, on peut utiliser divers algorithmes de chiffrage symétrique par bloc tels que "twofish", "serpent", ou les variantes d'AES à 192 ou 256 bits pour les données et/ou la clef. Pour diminuer la prédictabilité des données d'entrée de l'algorithme ACB de chiffrage par bloc utilisé pour produire le flux de chiffrage, on peut inclure une seconde clé (C2 figure 3) dans ces données d'entrée ; cette clef peut être changée pour chaque flux de données (tel qu'un film) à chiffrer, ou bien peut être changée à intervalles de temps réguliers (toutes les minutes ou secondes par exemple) pour un flux de données (film) déterminé), afin d'augmenter le niveau de sécurité ; cette seconde clef peut être transmise séparément du flux de données, en provoquant un accroissement minime du débit de données à transmettre, ou bien peut être calculée par un algorithme pseudo aléatoire connu du décodeur, à partir de la première clef (ou clef principale). S'il y a des erreurs de transmission du flux de données 10, le flux pseudo aléatoire FC peut être régénéré par le décodeur, de la même façon que décrit ci avant pour le chiffrage, à condition que les données en clair Dl et D2 n' aient pas été affectées par les erreurs (la clef principale C étant transmise au décodeur séparément du flux 10) ; cela sera généralement le cas, étant donné qu'une marque temporelle représente une vingtaine de bits par paquet, alors que les données utiles d'un paquet peuvent représenter plusieurs milliers de bits. Cette méthode est donc compatible avec les outils de la norme MPEG4 permettant de remédier aux erreurs de paquets et aux erreurs isolées. L'utilisation d'une fonction de hachage pour produire chaque bloc du flux de chiffrage permet d'augmenter le niveau de résistance du chiffrage aux attaques basées sur la connaissance de portions non chiffrées du flux de données. De telles portions non chiffrées peuvent être constituées par une ou plusieurs images entièrement noires, ou bien par une ou plusieurs images portant la marque du producteur d'un film vidéo, telles que celles généralement présentes dans le générique d'un film ; la connaissance de ces images non chiffrées et des données chiffrées correspondantes du flux permet à un "attaquant" de déterminer plusieurs blocs du flux de chiffrage, en appliquant les données chiffrées et les données non chiffrées correspondantes aux entrées de portes "OU "exclusif ; si ces blocs n'ont pas subi un hachage, il est alors possible de déterminer tout ou partie de la clé ; à contrario, grâce à la propriété de diffusion des algorithmes de hachage, il est difficile - voire impossible - de déterminer la clé à partir de la connaissance de blocs du flux de chiffrage, dès lors que ces blocs ont été hachés. La sélection des bits de données utiles à chiffrer, qui sont extraits des macro blocs MB1 à MB3 de données de mouvement et des macro blocs MB4 à MB6 (et suivants) de données de texture, est maintenant décrite par référence aux figures la, lb et 2. L'exemple suivant, décrit par référence aux figures la et 1b, porte sur la table B-12 de codewords pour le codage des vecteurs de mouvement. Par référence aux figures la et lb, la table 1 comporte quatre colonnes 4, 3, 2, 5 comportant respectivement : - des valeurs V, en l'occurrence des valeurs de différences de vecteurs de mouvement, telles que VI et V2 ; - des mots codés M respectivement associés aux différentes valeurs V à coder, tels que Ml, M2, M3, M4, M33, M65 ; - des index I allant de 1 à 65 pour identifier respectivement chaque mot M de la table, tels que Il, 12, 133, 165 ; - des paramètres NBC respectivement associés à chaque mot M de la table, tels que NBC1, NBC2, NBC3, NBC33, pour définir le nombre de bit du mot considéré dont le remplacement par le bit complémentaire produit un autre mot de la table 1. On voit sur cette figure que la plupart des mots codés M de huit bits au moins comportent un nombre NBC de bits chiffrables égal à deux, trois ou quatre ; en particulier, dans le groupe des quatre mots codés de treize bits, dont fait partie le mot M33, deux bits de chaque mot peuvent être complémentés (inversés). Comme décrit ci avant, les bits chiffrables de cette table sont les bits groupés à droite de chaque mot codé ; si tel n'est pas le cas, la table doit contenir en outre, pour chaque mot codé M, l'information de position de chaque bit chiffrable de ce mot. Pour chiffrer une suite de mots M codés formant un des macroblocs MB1,..., MB3 de données de mouvement du paquet de données, on lit dans la table 1 le nombre NBC de bits chiffrables du 1er mot M ; on transfère les bits chiffrables du mot M dans le tampon 11 (figure 3); on répète l'opération pour les mots suivants du flux 10 à chiffrer, et on concatène au fur et à mesure les bits chiffrables extraits de ces mots dans le tampon 11, jusqu'au remplissage de celui-ci ou jusqu'à la fin du paquet ; à ce moment on chiffre les bits du tampon 11 en les présentant, ainsi que le flux FC de chiffrage aux entrées de 160 portes "OU exclusif" ; les bits chiffrés délivrés en sortie sont replacés - bit à bit - dans le flux de mots, aux positions respectives des bits extraits du flux 10, de façon à former un flux chiffré. Alternativement, on peut chiffrer les bits chiffrables en continu ("au fil de l'eau"), tel que décrit ci avant. Pour déchiffrer un paquet-ou une portion d'un paquet tronqué - d'un flux de données chiffré selon l'invention, l'analyse du flux est faite de gauche à droite ; quand un mot de code est analysé par un décodeur MPEG, une décision est prise à chaque bit ; après lecture du dernier bit non chiffré d'un mot chiffré, le décodeur détermine le groupe de mots chiffrés de la table correspondant aux bits non chiffrés déjà lu et détermine en conséquence le nombre de bits chiffrés suivant le dernier bit "en clair"; lorsque, par exemple, la séquence de bits "en clair" est "000010" , la lecture de la table 1 permet de déterminer que le mot chiffré comporte deux bits chiffrés, qui suivent ces bits non chiffrés. Le traitement de ces bits est alors identique à celui utilisé pour le chiffrage : les bits à déchiffrer sont concaténés dans un tampon, jusqu'à son remplissage ou la fin du paquet ; contenu du tampon peut être appliqué bit à bit aux entrées de portes XOR avec un flux de déchiffrage généré de la même façon qu'indiqué précédemment pour le chiffrage; les bits déchiffrés sur les sorties des portes sont replacés dans le flux à déchiffrer, bit à bit, aux positions qu'occupaient les bits chiffrés. Un traitement de données identique ou similaire à celui qui vient d'être décrit peut être utilisé pour les données compressées par les mots codés réversibles de la table B-23 dont les 11 premiers codes apparaissent figure 2 : sur un fond gris foncé apparaissent les bits de signe, que l'on peut chiffrer ; sur un fond gris clair apparaissent ceux qu'on peut aussi chiffrer conformément à la méthode décrite ci-dessus pour la table B-12. REVENDICATIONS 1. Méthode de chiffrage d'un flux (10) standardisé de données audio ou vidéo compressées, dans laquelle on chiffre par flux pseudo aléatoire (FC) au moins une partie des bits de paquets (P) de données délimités par deux marques de synchronisation (MSI1, MSI2) consécutives. 2. Méthode selon la revendication 1, dans laquelle les données compressées sont en partie codées par des tables (1) de mots codés de longueur variable réversibles et de mots codés de longueur variable non réversibles, qui sont signés ou non signés. 3. Méthode selon la revendication 1 ou 2, dans laquelle on chiffre au moins une donnée (Dl, D2) du flux (10) et/ou du paquet (P) par un algorithme de chiffrage symétrique par bloc, et dans laquelle on utilise un algorithme de hachage pour produire au moins un bloc du flux de chiffrage (FC) à partir du résultat du chiffrement par bloc de la (des) donnée(s) (Dl, D2). 4. Méthode selon l'une quelconque des revendications 1 à 3, dans laquelle on utilise au moins un bloc de flux pseudo aléatoire différent pour chaque paquet du flux de données : à chaque marque de synchronisation initiale (MSI1, MSI2) d'un paquet de données, on génère un nouveau flux pseudo aléatoire (FC) de chiffrage que l'on applique bit à bit, avec les bits de données à chiffrer, aux entrées de portes "OU" exclusif, et on replace dans le flux de données (10) les bits de données chiffrés à la place qu'ils occupaient respectivement avant chiffrage, de façon à permettre un troncage du flux de données pour sa transmission par un canal de bande passante réduite. 5. Méthode selon l'une quelconque des revendications 1 à 4, dans laquelle on génère plusieurs blocs de flux pseudo aléatoire pour un paquet déterminé, qui se différencient par au moins un index (D3). 6. Méthode selon l'une quelconque des revendications 1 à 5 dans laquelle on génère un flux de chiffrage (FC) caractéristique d'un paquet (P) déterminé par traitement d'une donnée (D2) non chiffrée du paquet déterminé, dite seconde donnée non chiffrée. 7. Méthode selon l'une quelconque des revendications 1 à 6, dans laquelle on génère un flux de chiffrage d'un paquet déterminé par traitement d'une donnée (Dl) non chiffrée du flux de données n'appartenant pas au paquet déterminé, dite première donnée non chiffrée, et d'une clé (C) secrète, de préférence unique et caractéristique du flux. 8. Méthode selon les revendications 6 et 7, dans laquelle la donnée non chiffrée du paquet déterminé est une donnée d'entête du paquet, et dans laquelle la donnée non chiffrée du flux de données n'appartenant pas au paquet déterminé, est une marque temporelle d'une partie du flux incluant le paquet considéré, dite "time stamp". 9. Méthode selon les revendications 6 et 7 ou 8, dans laquelle on chiffre par bloc, à l'aide d'une clé (C), les première et seconde données non chiffrées pour produire le flux de chiffrage des données du paquet déterminé. 10. Méthode selon la revendication 9, dans laquelle on utilise un algorithme de hachage pour produire le flux de chiffrage (FC) à partir du résultat du chiffrement par bloc des première et seconde données non chiffrées. 11. Méthode selon l'une quelconque des revendications 7 à 10 dans laquelle on combine aux données (Dl, D2) une seconde clé (C2) calculée à partir de la première clé (C) par un algorithme pseudo aléatoire. 12. Méthode selon l'une quelconque des revendications 2 à 11, dans laquelle on chiffre tous les bits du paquet qui, après changement aléatoire de leur(s) valeur (s) et après remplacement bit à bit dans le mot codé à chiffrer des bits non chiffrés par les bits chiffrés, provoquent la formation d'un mot codé de la table de mots codés. 13. Méthode selon l'une quelconque des revendications 2 à 12 dans laquelle on ajoute à la table (1) de mots codés de différentes longueurs, un index (I) d'identification de chaque mot codé de la table, ainsi qu'au moins un paramètre (NBC) définissant, pour chaque mot codé de la table, le nombre et la position, dans le mot codé, du ou des bit (s) à chiffrer. 14. Méthode selon l'une quelconque des revendications 2 à 13 dans laquelle, pour chiffrer une suite de mots codés d'un paquet de données déterminé: - on détermine pour chaque mot codé, à l'aide de la table, le nombre et la position des bits à chiffrer du mot ; - on extrait du mot le (s) à chiffrer et on le(s) place dans un tampon (11) en concaténant dans ce tampon les bits à chiffrer extraits des mots codés du paquet déterminé ; - lorsque ce tampon (11) est plein ou lorsque tous les bits chiffrables ont été extraits du paquet de données déterminé, on chiffre la chaîne de bits présents dans le tampon par un flux de chiffrage (FC) unique et on replace chacun des bits chiffrés à la place qu'ils occupaient respectivement dans le paquet avant chiffrage. 15. Méthode selon l'une quelconque des revendications 3 à 14 dans laquelle on utilise un algorithme de chiffrement par bloc (ACB) de 64 bits, de 128 bits, de 192 bits, ou de 256 bits, pour générer un flux pseudo aléatoire de chiffrage (FC) . 16. Flux compressé de données chiffrées obtenu indirectement par une méthode selon l'une quelconque des revendications 1 à 15. 17. Codeur ou décodeur de données audio ou vidéo formatées et compressées pour la mise en #uvre des opérations d'une méthode selon l'une ,quelconque des -.revendications 1 à 15, caractérisé en ce qu'il comporte : - une table (1) de mots codés de différentes longueurs, la table comportant pour chaque mot un index (I) et un paramètre (NBC) définissant les bits du mot à (dé)chiffrer, - des moyens (Dl, D2, D3, C, C2, ACB, FC, XOR) de (dé)chiffrement par flux aptes à (dé) chiffrer lesdits bits. 18. Codeur ou décodeur MPEG4 selon la revendication 17, comportant en outre : - un tampon (11) prévu pour recevoir temporairement les bits de données sélectionnés en vue de leur (dé)chiffrage, - des moyens pour actionner les moyens de (dé)chiffrement par flux, pour provoquer le (dé)chiffrement des bits stockés dans le tampon lorsque le tampon est plein ou lorsqu'une marque de synchronisation (MSI2) d'un paquet (P) de données suivant a été atteinte, pour remplacer les bits sélectionnés dans le flux de données par les bits stockés et (dé)chiffrés, et pour vider le tampon. 19. Support lisible par un ordinateur, sur lequel est enregistré un code de programme mettant en #uvre les opérations définies à l'une des revendications 1 à 15, pour permettre à l'ordinateur de chiffrer un flux de données compressées, ou inversement de déchiffrer un flux de données compressées chiffrées.