Brevet FR3024007A1 — publié le 20160122

Procédé d'accès à un contenu multimédia protégé par un terminal [1] L'invention concerne un procédé d'accès à un contenu multimédia protégé, par un terminal comportant un désembrouilleur, un décodeur et une mémoire partagée. L'invention concerne également un terminal et un support d'enregistrement d'informations 5 pour ce procédé d'accès à un contenu multimédia protégé. [2] Le procédé considéré peut être mis en oeuvre après obtention du contenu multimédia protégé auprès de tout service de fourniture en ligne de contenus multimédias protégés, dans tout système de fourniture en ligne de contenus multimédias protégés dans lequel une tête de réseau assure la protection des contenus et leur transmission à 10 une pluralité de terminaux. [3] Un terminal est alors utilisé par un utilisateur du système pour accéder à un contenu protégé en vue de le jouer. Accéder à un contenu multimédia protégé, signifie ici : - le charger en mémoire, puis - en lever la protection, à la volée alors qu'on le reçoit, ou sur un support d'enregistrement 15 sur lequel il a préalablement été enregistré, puis - le décoder, puis - le transmettre à un appareil multimédia apte à le jouer, l'enregistrer, ou en faire toute autre utilisation offerte par le service de fourniture de contenus multimédias protégés. [4] Ici, par « lever la protection à la volée », on désigne le fait que des fragments du 20 contenu multimédia sont traités au fur et à mesure de leur réception, sans attendre que le contenu multimédia complet, c'est-à-dire l'ensemble de ses fragments, ait été complètement entièrement reçu. [5] A cet effet, le terminal comporte un désembrouilleur, un décodeur, et une mémoire partagée par les précédents. 25 [006] Les contenus fournis sont : - des contenus audiovisuels, par exemple des programmes de télévision, - des contenus audio seulement, par exemple un programme radiophonique, ou - plus généralement, tout contenu numérique contenant de la vidéo et/ou de l'audio tel qu'une application informatique, un jeu, un diaporama, une image ou tout ensemble de 30 données. [7] Parmi ces contenus, on considérera plus particulièrement dans la suite des contenus dits temporels. Un contenu multimédia temporel est un contenu multimédia dont le jeu est une succession dans le temps de sons, dans le cas d'un contenu temporel audio, ou d'images, dans le cas d'un contenu temporel vidéo, ou de sons et d'images 35 temporellement synchronisés entre eux dans le cas d'un contenu multimédia temporel audiovisuel. Un contenu multimédia temporel peut également comporter des composantes temporelles interactives temporellement synchronisées avec les sons ou les images. [8] Pour être fourni, un tel contenu est d'abord codé, c'est-à-dire compressé, de façon à ce que sa transmission requière moins de bande passante. [009] A cet effet, la composante vidéo du contenu est codée selon un format vidéo, tel que MPEG-2. Le lecteur intéressé pourra trouver une présentation complète de ce format dans le document publié par l'Organisation internationale de normalisation sous la référence ISO/IEC 13818-2:2013 et le titre « Technologies de l'information - Codage 5 générique des images animées et du son associé - Partie 2: Donnée vidéo ». De nombreux autres formats, tels que MPEG-4 ASP, MPEG-4 Part 2, MPEG-4 AVC (ou Part 10), HEVC (High Efficiency Video Coding), ou WMV (Windows Media Video) peuvent alternativement être utilisés, et reposent sur les mêmes principes. Ainsi, tout ce qui suit s'applique également à ces autres formats vidéo qui reposent sur le même principe que le 10 codage MPEG-2. [0010] Le codage MPEG-2 fait appel à des procédés généraux de compression de données. Pour les images fixes, elle exploite notamment la redondance spatiale interne à une image, la corrélation entre les points voisins et la moindre sensibilité de l'oeil aux détails. Pour les images animées, elle exploite la forte redondance temporelle entre 15 images successives. L'exploitation de cette dernière permet de coder certaines images du contenu, ici dites déduites, en référence à d'autres, ici dites sources, par exemple par prédiction ou interpolation, de sorte que leur décodage n'est possible qu'après celui desdites images sources. D'autres images, ici dites initiales, sont codées sans référence à de telles images sources, c'est-à-dire qu'elles contiennent chacune, lorsqu'elles sont 20 codées, l'ensemble des informations nécessaires à leur décodage et donc qu'elles peuvent être complètement décodées indépendamment des autres images. Les images initiales sont ainsi le point d'entrée obligatoire lors de l'accès au contenu. Le contenu codé résultant ne comporte donc pas les données nécessaires au décodage de chacune des images indépendamment des autres, mais est constitué de « séquences » selon la 25 terminologie MPEG-2. Une séquence réalise la compression d'au moins un « groupe d'images » (ou GOP, pour Group Of Pictures, dans MPEG-2). [0011] Un groupe d'images est une suite d'images consécutives dans laquelle chaque image est : - soit initiale et source pour au moins une image déduite contenue dans la même suite 30 d'images consécutives, - soit déduite et telle que chacune des images sources nécessaires à son décodage appartient à la même suite d'images consécutives. [0012] Un groupe d'images ne contient pas de suite d'images consécutives plus petite et possédant les mêmes propriétés que ci-dessus. Le groupe d'images est ainsi la plus petite 35 partie de contenu à laquelle on peut accéder sans avoir à décoder au-préalable une autre partie de ce contenu. [0013] Une séquence est délimitée par une « en-tête » et une « fin », chacune identifiée par un premier code spécifique. L'en-tête comporte des paramètres qui caractérisent des propriétés attendues des images décodées, telles que les tailles horizontales et verticales, 40 ratio, fréquence. Le standard recommande de répéter l'en-tête entre les groupes d'images de la séquence, de façon à ce que ses occurrences successives soient espacées d'environ quelques secondes dans le contenu codé. [0014] Par exemple, un groupe d'images comporte le plus couramment plus de 5 à 10 images et, généralement, moins de 12 ou 20 ou 50 images. Par exemple, dans un système à 25 images par seconde, un groupe d'images, représente typiquement une durée de jeu supérieure à 0,1 ou 0,4 seconde et, généralement, inférieure à 0,5 ou 1 ou 10 secondes. [0015] Un contenu multimédia temporel peut comporter plusieurs composantes vidéo. Dans ce cas, chacune de ces composantes est codée comme ci-dessus décrit. [0016] La composante audio du contenu est par ailleurs codée selon un format audio tel que MPEG-2 Audio. Le lecteur intéressé pourra trouver une présentation complète de ce format dans le document publié par l'Organisation internationale de normalisation sous la référence ISO/IEC 13818-3:1998 et le titre « Technologies de l'information - Codage générique des images animées et des informations sonores associées - Partie 3: Son ». De nombreux autres formats, tels que MPEG-1 Layer III, mieux connu sous l'appellation MP3, AAC (Advanced Audio Coding), Vorbis ou WMA (Windows Media Audio), peuvent alternativement être utilisés, et reposent sur les mêmes principes. Ainsi, tout ce qui suit s'applique également à ces autres formats audio qui reposent sur les mêmes principes que le codage MPEG-2 Audio. [0017] Le codage MPEG-2 Audio obéit aux mêmes principes ci-dessus décrits pour celle d'un contenu temporel vidéo. Le contenu codé résultant est donc, de façon analogue, constitué de « trames ». Une trame est l'analogue, en audio, d'un groupe d'images en vidéo. La trame est donc notamment la plus petite partie de contenu audio à laquelle on peut accéder sans avoir à décoder une autre partie de ce contenu audio. La trame contient en outre l'ensemble des informations utiles à son décodage. [0018] Une trame comporte typiquement plus de 100 ou 200 échantillons codant chacun un son et, généralement, moins de 2000 ou 5000 échantillons. Typiquement, lorsqu'elle est jouée par un appareil multimédia, une trame dure plus de 10 ms ou 20 ms et, généralement, moins de 80 ms ou 100 ms. Par exemple, une trame comporte 384 ou 1152 échantillons codant chacun un son. Selon la fréquence d'échantillonnage du signal, cette trame représente une durée de jeu de 8 à 12, ou 24 à 36 millisecondes. [0019] Un contenu multimédia temporel peut comporter plusieurs composantes audio. Dans ce cas, chacune de ces composantes est codée comme ci-dessus décrit. [0020] Les composantes codées du contenu, également qualifiées de trains élémentaires 35 de données, sont ensuite multiplexées, c'est-à-dire, notamment, synchronisées temporellement, puis combinées en un seul train, ou flux, de données. [0021] Un tel contenu, notamment lorsqu'il est l'objet de droits tels que des droits d'auteur ou des droits voisins, est fourni protégé par un système de protection de contenus multimédias. Ce système permet d'assurer le respect de conditions d'accès au contenu 40 qui découlent de ces droits. [0022] Il est alors typiquement fourni chiffré au titre de sa protection par un système de gestion de droits numériques, ou DRM, pour Digital Rights Management, en anglais. Ce chiffrement est généralement réalisé au moyen d'une clé de chiffrement, par un algorithme symétrique. Il s'applique au flux résultant du multiplexage ou, avant multiplexage, aux composantes du contenu codé. [0023] Un système de DRM est en effet un système de protection de contenus multimédias. La terminologie du domaine des systèmes de gestion de droits numériques est ainsi utilisée dans la suite de ce document. Le lecteur intéressé pourra par exemple en trouver une présentation plus complète dans le document : DRM Architecture, Draft version 2.0, OMA-DRM-ARCH-V2_0-20040518-D, Open Mobile Alliance, 18 mai 2004. [0024] Dans un tel système de gestion de droits numériques, l'obtention d'une licence permet à un terminal d'accéder au contenu multimédia protégé. [0025] De structure bien connue, une telle licence comporte au moins une clé, dite de contenu, nécessaire au déchiffrement du contenu multimédia protégé par un algorithme de 15 chiffrement symétrique. [0026] La clé de contenu est généralement insérée dans la licence sous forme d'un cryptogramme obtenu par chiffrement de la clé de contenu avec une clé de chiffrement, dite « de terminal », propre au terminal ou connue de lui. [0027] Pour accéder au contenu, le terminal extrait de la licence la clé de contenu, en 20 déchiffrant son cryptogramme au moyen de sa clé de terminal. [0028] Ensuite, le désembrouilleur du terminal désembrouille, c'est-à-dire déchiffre, le contenu au moyen de la clé de contenu ainsi extraite de la licence, en levant ainsi la protection. Le désembrouilleur génère ainsi un contenu multimédia en clair comportant au moins une suite temporelle de séquences vidéo ou de groupes d'images, ou de trames 25 audio. Ce contenu multimédia est apte à être joué par un appareil multimédia raccordé au terminal. Ici, par « en clair », on désigne le fait que le contenu multimédia n'a plus besoin d'être déchiffré pour être joué, par un appareil multimédia, de façon directement perceptible et intelligible par un être humain. Par « appareil multimédia », on désigne en outre tout dispositif apte à jouer le contenu multimédia en clair, tel par exemple qu'un 30 téléviseur ou un lecteur multimédia. [0029] Puis le désembrouilleur transfère ensuite le contenu en clair dans la mémoire partagée. [0030] Ensuite, le décodeur du terminal lit le contenu en clair dans la mémoire partagée, et le décode. 35 [0031] Enfin, le terminal transmet le contenu ainsi décodé à un appareil multimédia. [0032] Plus précisément, dans le cas d'un contenu multimédia temporel, la réception, le traitement, puis la transmission à un appareil multimédia, par le terminal, du contenu, tels que ci-dessus décrits se font par fragment. Un fragment est une partie restreinte du flux multimédia en clair dont le jeu a une durée inférieure à celle du jeu du flux multimédia en 40 entier. Un fragment comporte donc une partie restreinte de chaque composante vidéo et audio du flux multimédia en clair, dont le jeu a une même durée inférieure à celle du jeu du flux multimédia en entier. Ces parties restreintes de composantes sont synchronisées dans le flux pour être jouées simultanément. Un fragment comporte donc la partie restreinte de la suite temporelle de séquences vidéo ou de groupes d'images, ou de trames audio réalisant le codage de cette partie restreinte de composante du flux multimédia en clair. Cette partie restreinte est constituée, typiquement, d'une pluralité de séquences vidéos ou de groupes d'images, ou de trames audio successives. [0033] Dans le mode d'accès au contenu par le terminal tel que ci-dessus décrit, le contenu désembrouillé est transféré dans la mémoire partagée du terminal par son désembrouilleur, pour ensuite y être lu par son décodeur. Le contenu en clair est donc présent dans cette mémoire, au moins entre l'instant où il y est déposé par le désembrouilleur et celui où il y est lu par le décodeur. Il est alors facile, dans un tel environnement ouvert, d'y lire le contenu désembrouillé, et d'obtenir ainsi un accès illégitime au contenu. Une protection supplémentaire du contenu au cours de sa présence en mémoire partagée est donc nécessaire. [0034] Des solutions cryptographiques à ce problème sont connues, qui reposent sur le partage de clés par le désembrouilleur et le décodeur. Dans ces solutions, le désembrouilleur chiffre le contenu désembrouillé, avant de le transférer dans la mémoire partagée. Ensuite, le décodeur lit le contenu ainsi chiffré dans la mémoire partagée, puis le déchiffre et, avant qu'il ne soit éventuellement enregistré dans une mémoire du terminal, le décode, et le transmet à un appareil multimédia apte à le jouer. Ces solutions cryptographiques sont sures mais ont pour inconvénient d'être complexes et d'exiger des ressources informatiques importantes pour mener à bien les calculs cryptographiques mis en jeu. [0035] D'autres solutions sont connues qui partagent cet inconvénient, consistant par 25 exemple en la traduction du contenu en d'autres formats de contenu. [0036] Des solutions consistant en la mise en oeuvre de mécanismes de sécurité tels que la vérification, par le module de DRM du terminal, de l'application de destination du contenu en clair, sont également connues. Ces solutions présentent l'inconvénient selon lequel cette mise en oeuvre est peu sûre dans des milieux ouverts tels que des terminaux. 30 [0037] Le brevet EP2268020 protège une solution alternative consistant en une altération de bits du contenu désembrouillé. Cette solution est décrite comme requérant de réaliser un compromis entre les ressources de calcul requises par sa mise en oeuvre, et sa sécurité. Pour présenter un gain substantiel en termes de ressources de calcul requises, elle doit donc s'accompagner par une perte notable en termes de sécurité. 35 [0038] La présente invention vise à offrir une solution alternative plus sûre que celle de la demande EP2268020 et au moins aussi économique en temps de calcul. [0039] L'invention a ainsi pour objet un procédé d'accès à un contenu multimédia protégé, par un terminal comportant un désembrouilleur, un décodeur et une mémoire partagée, dans lequel : 40 - lors d'une phase de désembrouillage, le désembrouilleur : a) reçoit un fragment chiffré du contenu multimédia et une clé de déchiffrement de ce fragment chiffré, b) déchiffre le fragment reçu avec la clé de déchiffrement reçue pour obtenir un fragment en clair, c) remplace des bits d'origine du fragment en clair par des bits substitués différents pour obtenir un fragment modifié, puis d) mémorise le fragment modifié dans la mémoire partagée, - lors d'une phase de décodage, le décodeur : e) extrait le fragment modifié de la mémoire partagée, f) remplace les bits substitués du fragment modifié extrait par les bits d'origine pour reconstruire le fragment en clair, g) décode le fragment en clair reconstruit pour obtenir un fragment décodé, puis h) transmet le fragment décodé à un appareil multimédia apte à jouer ce fragment décodé du contenu multimédia, dans lequel : - lors de l'étape c), une suite de M bits d'origine consécutifs du fragment en clair est remplacée par une suite de N bits substitués consécutifs, où N est strictement supérieur à M et la suite de N bits substitués est différente pour chaque suite différente de M bits d'origine, et - lors de l'étape f), la suite de N bits substituée est remplacée par la suite de M bits d'origine. [0040] Dans le procédé ci-dessus, le remplacement, à l'étape c), d'une suite de M bits d'origine par une suite de N bits substitués, où N est strictement supérieur à M, permet d'augmenter la sécurité du procédé, en rendant plus difficiles les tentatives de cryptanalyse. En effet, ne connaissant pas N, l'observateur de la mémoire partagée du terminal ne sait pas, à priori, délimiter un fragment modifié. De plus, même si l'observateur arrivait à délimiter les fragments modifiés, cela ne lui donnerait aucune information sur la valeur de M de sorte qu'il est très difficile de reconstruire les fragments en clair à partir des fragments modifiés. En particulier, on notera que le chiffré est classiquement de même taille que le clair dans un procédé cryptographique, ce qui est faux dans le cas présent. [0041] En outre, N étant supérieur à M, le nombre des valeurs possibles des suites de N bits substitués est très supérieur à celui des valeurs possibles de M bits d'origine. Ce qui rend plus difficile toute tentative de cryptanalyse. De plus, ceci permet de varier ce remplacement réalisé de suites de M bits d'origine, par des suites de N bits substitués, en utilisant, par exemple, plusieurs suites différentes de N bits substitués déjà ou non précédemment utilisées pour remplacer une même suite de M bits d'origine. [0042] Les modes de réalisation de ce procédé d'accès à un contenu multimédia protégé peuvent comporter les caractéristiques suivantes : ^ avant l'exécution des étapes b), c), d), e) et f), le procédé comporte : - la mémorisation, par le terminal, d'une première table de correspondance comportant une ligne pour chaque suite possible de M bits d'origine, chaque ligne associant à une suite possible de M bits d'origine une suite de N bits substitués différente de celles associées aux autres suites possibles de M bits d'origine, les lignes de la première table étant classées par ordre de valeurs des suites possibles de M bits d'origine pour constituer un index de cette première table, et - l'étape c) comporte : la lecture dans la première table de correspondance de la suite de N bits substitués associée à la suite de M bits d'origine du fragment en clair, puis le remplacement de la suite de M bits d'origine du fragment en clair par la suite de N bits substitués ainsi sélectionnée pour obtenir le fragment modifié ; - avant l'exécution des étapes b), c), d), e) et f), le procédé comporte : la mémorisation, par le terminal, d'une seconde table de correspondance comportant une ligne pour chaque suite de N bits substitués, cette ligne associant à cette suite de N bits substitués la suite de M bits d'origine à laquelle cette suite de N bits substitués était associée par la première table, ces première et seconde tables étant dites « correspondantes » car la seconde table permet de reconstruire le fragment en clair à partir du fragment modifié obtenu à l'aide de la première table, l'étape f) comporte : la lecture dans la seconde table de correspondance, correspondant à la première table, de la suite de M bits d'origine associée à la suite de N bits substitués du fragment modifié, puis le remplacement de la suite de N bits substitués du fragment modifié par la suite de M bits d'origine ainsi lue pour reconstruire le fragment en clair ; - l'ensemble des valeurs de M bits d'indices donnés deux à deux distincts de chaque suite de N bits substitués est égal à l'ensemble des valeurs possibles des suites de M bits, et les lignes de la seconde table sont classées uniquement par ordre de valeurs de ces M bits d'indices donnés de chaque suite de N bits substitués, de sorte que ces M bits d'indices donnés constituent un index de cette seconde table ; - le procédé comporte : - avant l'exécution des étapes b), c), d), e) et f), la mémorisation, par le terminal, de plusieurs premières tables de correspondance différentes, puis - lors de l'exécution de l'étape c) suivante, la sélection de l'une de ces premières tables, puis l'utilisation de la première table sélectionnée, puis - lors de l'exécution de l'étape f) suivante, la détermination de la première table sélectionnée à l'étape c) ; ^ aux moins deux des premières tables de correspondance différentes mémorisées diffèrent entre elles au moins par la longueur M des suites de bits d'origine ou par la longueur N des suites de bits substitués ; ^ le procédé comporte, avant l'exécution des étapes b), c), d), e), et f), le tirage aléatoire ou pseudo-aléatoire d'un nombre, par le terminal, et sa mise à disposition du désembrouilleur et du décodeur, et la sélection, à l'étape c), d'une première table de correspondance, puis la détermination, à l'étape f), de la première table sélectionnée à l'étape c), sont faites en fonction de ce nombre tiré ; - le nombre des premières tables de correspondance différentes mémorisées ou le nombre d'octets du nombre aléatoirement ou pseudo-aléatoirement tiré, au moins, est pris égal à une puissance strictement positive de deux. [0043] Ces modes de réalisation de ce procédé d'accès à un contenu multimédia protégé 10 présentent en outre les avantages suivants : - L'utilisation d'une première table de correspondance permet de mettre en oeuvre une sélection de la suite de N bits substitués dans la première table plutôt que son calcul en fonction de la valeur de la suite de M bits d'origine. Cela présente un avantage supplémentaire en termes de sécurité, en rendant plus difficile la 15 cryptanalyse du procédé, et plus précisément en garantissant que l'observation extérieure, par exemple du temps de calcul ou de la consommation électrique, du système au cours de la mise en oeuvre du procédé, en regard des valeurs des suites de bits d'origine et substitués, ne donne pas d'information sur la nature de la substitution de bits réalisée pour obtenir le fragment modifié. De plus, la mise en 20 oeuvre d'une opération d'entrée-sortie dans la première table de correspondance plutôt qu'une opération de calcul, présente également l'avantage de réduire de façon importante le temps de calcul. - L'utilisation d'une seconde table de correspondance permet de mettre en oeuvre une sélection précédée de la recherche de la suite de N bits substitués dans la 25 seconde table plutôt qu'une recherche dans la première table de la suite de M bits d'origine à laquelle est associée la suite de N bits substitués du fragment modifié. Cela présente l'avantage de réduire la complexité de la recherche effectuée, et donc le temps de calcul. - Le classement des lignes de la seconde table de correspondance par ordre de 30 valeurs de M bits d'indices donnés, permet d'utiliser ces M bits comme index de la seconde table de correspondance, afin de sélectionner directement dans la seconde table de correspondance la suite de M bits d'origine associée à la suite de N bits substitués du fragment modifié. Cette mise en oeuvre d'une opération d'entrée-sortie dans la seconde table de correspondance plutôt qu'une opération de 35 recherche, présente comme plus haut l'avantage de réduire de façon importante le temps de calcul. - L'utilisation de plusieurs premières tables de correspondance différentes permet d'augmenter la sécurité du procédé en rendant plus difficile sa cryptanalyse. Plus précisément cela permet de varier les remplacements de bits réalisés pour produire 40 un fragment modifié et reconstruire le fragment en clair. - L'utilisation de premières tables de correspondance différant entre elles par la valeur de M ou par la valeur de N, permet d'augmenter la sécurité du procédé en rendant plus difficile sa cryptanalyse. Plus précisément, cela permet de varier les longueurs des suites de bits d'origine ou des suites de bits substitués. - Le tirage aléatoire ou pseudo-aléatoire d'un nombre permet d'augmenter la sécurité du procédé en rendant plus difficile sa cryptanalyse. Plus précisément, cela permet de varier aléatoirement la succession des remplacements de bits réalisés pour produire un fragment modifié et reconstruire le fragment en clair. - La prise égal à une puissance strictement positive de deux du nombre des premières tables de correspondance différentes ou des octets du nombre aléatoirement ou pseudo-aléatoirement tiré, permet de réduire le temps de calcul. Plus précisément, cela simplifie la sélection à l'étape c) et la détermination à l'étape f), dans lesquelles interviennent des divisions modulo ces nombres. En effet, ces divisions reviennent à des décalages de bits si ces nombres sont des puissances de deux. [0044] L'invention a également pour objet un support d'enregistrement d'informations comportant des instructions pour la mise en oeuvre du procédé ci-dessus d'accès à un contenu multimédia protégé, lorsque ces instructions sont exécutées par un calculateur électronique. [0045] L'invention a également pour objet un terminal comportant un désem brouilleur, un décodeur et une mémoire partagée, dans lequel ce terminal comporte un calculateur électronique programmé pour exécuter les étapes c) et f) du procédé ci-dessus d'accès à un contenu multimédia protégé. [0046] L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée 25 uniquement à titre d'exemple non limitatif, et faite en référence aux dessins sur lesquels : - La figure 1 est une représentation schématique d'un terminal comportant un désembrouilleur, un décodeur et une mémoire partagée, - La figure 2 est une représentation schématique partielle d'une première et d'une seconde tables de correspondance correspondantes, et 30 - La figure 3 est une représentation schématique d'un procédé d'accès à un contenu multimédia protégé à l'aide du terminal de la figure 1. [0047] Dans ces figures, les mêmes références sont données pour désigner les mêmes éléments. [0048] Dans la suite de cette description, les caractéristiques bien connues de l'homme du 35 métier ne sont pas décrites en détail. [0049] La figure 1 représente un terminal apte à accéder à un contenu multimédia protégé. A cet effet, ce terminal comporte un désembrouilleur 1, un décodeur 3, une mémoire 5 partagée par le désembrouilleur et le décodeur, un calculateur électronique 7 programmable, et une mémoire 9. 40 [0050] Le désembrouilleur 1 est apte à mémoriser des informations dans la mémoire 5 partagée et, comme le décodeur 3, à en extraire des informations. [0051] Le calculateur électronique 7 est apte à exécuter des instructions mémorisées dans la mémoire 9. La mémoire 9 comporte les instructions nécessaires à l'exécution du procédé de la figure 3. [0052] Les mémoires 5 partagée et 9 peuvent être indépendantes, comme sur la figure 1, 5 ou confondues, ou encore la mémoire 5 partagée peut être une partie de la mémoire 9. [0053] La figure 2 représente une partie d'une première table 12 de correspondance et une partie d'une seconde table 18 de correspondance. Sur cette figure, un octet est donné sous forme hexadécimale, et le symbole « I » représente l'opération de concaténation. [0054] La première table 12 comporte une ligne pour chaque valeur possible d'octet. Elle 10 comporte donc une première colonne contenant toutes les suites 14 possibles de huit bits d'origine. Le nombre de bits de la suite 14, noté M par la suite, est ici pris égal à huit. Il existe donc 2M suites 14 dont les valeurs sont comprises entre 0x01 et OxFF. Chaque ligne de la table 12 associe, à sa suite 14, une concaténation d'un premier et d'un second octets, c'est-à-dire une suite 16 de seize bits substitués. Le nombre de bits de la suite 16, 15 noté N par la suite, est ici pris égal à seize. Il existe donc 2" suites 16 possibles mais la table 12 n'en contient que 2M. Chaque suite 16 est différente des autres suites 16. Les suites 16 sont contenues dans une seconde colonne de la table 12. [0055] Les lignes de la table 12 sont classées par ordre de valeurs des suites 14 pour constituer un index de cette table. Cet index permet d'accélérer la recherche et la 20 sélection d'une ligne de la table 12 contenant une suite 14 donnée. De plus, la valeur de cet index varie d'un pas régulier d'une valeur à la suivante ce qui permet d'identifier directement la ligne de la table 12 contenant cet index sans avoir à lire le contenu d'autres lignes. Ici, la valeur de l'index est égale au numéro de la ligne de la table 12 contenant cette suite 14. Cela permet donc de rechercher plus rapidement une suite 14 donnée. 25 Pour simplifier l'illustration, la figure 2 ne représente que les huit lignes relatives aux suites 14 de valeurs, respectivement, OxAO à OxA7. Par exemple, la première ligne représentée de la table 12 associe la suite 16 de seize bits substitués OxD410x03 à la suite 14 de huit bits d'origine OxAO. La suite OxAO se trouve sur la ligne OxAO, c'est-à-dire la 160-ième ligne, de la table 12 en partant de la première ligne de cette table. 30 [0056] En outre, dans cette table 12, l'ensemble des valeurs des seconds octets parmi les octets concaténés, c'est-à-dire les huit bits d'indices 9 à 16 de chaque suite 16, est égal à l'ensemble des suites 14. Sur la figure 2, les seconds octets visibles des suites 16 sont compris entre 0x01 et 0x08. [0057] La seconde table 18 de la figure 2, comporte une ligne pour chaque suite 16 de 35 seize bits substitués. Chaque ligne associe, à cette suite 16, la suite 14 à laquelle cette suite 16 est associée par la table 12. Ces tables 12 et 18 sont ainsi dites « correspondantes ». Les suites 16 et 14 sont contenues, respectivement, dans les première et seconde colonnes de la table 18. La première ligne représentée de la table 18 associe par exemple la suite 14 de huit bits d'origine OxA4 à la suite 16 de seize bits 40 substitués Ox5BIOx01. [0058] De plus, les lignes de la table 18 sont classées par ordre de valeurs des seconds octets, c'est-à-dire les huit bits d'indices 9 à 16 de chaque suite 16. Les valeurs de ces seconds octets parcourent l'ensemble des valeurs possibles comprises entre 0x01 et OxFF. Ils constituent ainsi un index de cette seconde table. Comme précédemment, cet index permet d'accélérer la recherche et la sélection d'une ligne de la table 18 contenant une suite 16 donnée. En effet, puisque la valeur de cet index varie d'un pas régulier d'une valeur à la suivante, cela permet d'identifier directement la ligne de la table 18 contenant cet index sans avoir à lire le contenu d'autres lignes. Ici, la valeur de l'index est égale au numéro de la ligne de la table 18 contenant cette suite 16. En particulier, cela permet un gain de temps par rapport au cas où les valeurs de l'index ne sont pas uniformément réparties entre leurs valeurs extrémales. Sur la figure 2, les seconds octets représentés prennent les valeurs comprises entre 0x01 et 0)(08 et occupent, respectivement et dans l'ordre croissant, les lignes une à huit de la table 18. [0059] Le fonctionnement du terminal de la figure 1 va maintenant être décrit en référence 15 au procédé de la figure 3. [0060] Le procédé débute par une phase d'initialisation. Cette phase d'initialisation comporte : - des étapes 110 et 112 lors desquelles les tables 12, 18 sont construites et mémorisées, et 20 - une étape 114 de construction d'un nombre S d'initialisation. [0061] Cette phase d'initialisation est déclenchée, par exemple, à chaque démarrage du terminal. Dans ce cas, de préférence, les tables construites et le nombre S sont mémorisés dans une mémoire volatile, comme une RAM (Random Access Memory), pour être automatiquement effacés lorsque le terminal est éteint. 25 [0062] Plus précisément, lors de l'étape 110, le terminal construit et mémorise la table 12 dans une mémoire accessible au désembrouilleur 1. Cette mémoire peut être une mémoire propre à ce dernier, une partie de la mémoire 9, ou la mémoire 5 partagée. Par exemple, la table 12 est construite en réalisant les opérations suivantes pour chaque suite 14 possible : 30 a) le terminal tire aléatoirement une suite 16 dans l'ensemble des 2" suites 16 possibles, puis b) si la suite 16 ainsi tirée aléatoirement n'a pas déjà été associée à une autre suite 14, alors elle est associée dans la table 12 à cette suite 14 et, dans le cas contraire, on réitère les opérations a) et b). 35 [0063] Ensuite, lors d'une étape 112, le terminal construit et mémorise la table 18 correspondante dans une mémoire accessible au décodeur 3. Cette mémoire peut être une mémoire propre à ce dernier, une partie de la mémoire 9, ou la mémoire 5 partagée. Par exemple, lors de cette étape 112, la table 18 est construite à partir de la table 12 précédemment enregistrée lors de l'étape 110. Pour cela, par exemple, les contenus des 40 première et seconde colonnes de la table 12 sont permutés puis les lignes de cette nouvelle table sont classées par ordre croissant ou décroissant des valeurs des seconds octets de la première colonne. Dans ce mode de réalisation, les lignes sont classées par ordre croissant des valeurs des seconds octets. [0064] L'étape 110 est mise en oeuvre un nombre prédéterminé t1 de fois de façon à mémoriser t1 tables 12 différentes. De préférence, le nombre t1 est égal à une puissance strictement positive de deux. De même, l'étape 112 est exécutée t2 fois de façon à mémoriser t2 tables 18 différentes. t1 et t2 sont des nombres entiers positifs ou nuls, et t1 est supérieur ou égal à t2. Dans ce mode de réalisation, t1 et t2 sont égaux. Ici, lors de chaque exécution de l'étape 110, les nombres M et N sont modifiés en respectant toujours le fait que le nombre N est strictement supérieur au nombre M. Par exemple, à chaque itération de l'étape 110, le nombre M est tiré aléatoirement ou pseudo-aléatoirement dans une plage prédéterminée de valeurs possibles. Ensuite, on procède de même avec le nombre N. Typiquement, le nombre M varie entre 4 et 16 bits et le nombre N varie entre 8 et 24 bits. On obtient ainsi des tables 12 différant les unes des autres, en plus, par les valeurs des nombres M et N. [0065] Chacune des tables 12 mémorisées est identifiée au moyen d'un indice i compris entre 0 et t1-1. De même, chacune des tables 18 mémorisées est identifiée par un indice. L'indice des tables 18 est choisi de manière à ce que les tables 12 et 18 correspondantes portent le même indice i. Par la suite, on note T[i] et L[i], respectivement, les tables 12 et 18 correspondantes d'indice i. [0066] Lors de l'étape 114, le terminal tire, de façon aléatoire ou pseudo-aléatoire, un nombre entier strictement positif de k octets. Ce nombre entier constitue le nombre S. De préférence, ce nombre S est tiré aléatoirement ou pseudo-aléatoirement dans un ensemble contenant uniquement des puissances strictement positives de deux. Le nombre k est soit un nombre prédéterminé soit lui-même tiré aléatoirement ou pseudo- aléatoirement dans un ensemble prédéterminé de valeurs. De façon similaire, dans ce mode de réalisation, le terminal tire aussi de façon aléatoire ou pseudo-aléadoire un nombre entier u strictement positif. Ce nombre u représente un nombre d'utilisations consécutives d'une même table 12. Ensuite, les nombres S et u ainsi construits sont mis à disposition du désem brouilleur 1 et du décodeur 3. A cet effet, le terminal mémorise les nombres S et u ainsi que la longueur k en octets du nombre S dans la mémoire 5 partagée. De plus, dans ce mode de réalisation, le nombre t1 est également mémorisé dans la mémoire 5. [0067] Avant, en parallèle de, ou après la phase d'initialisation, lors d'une étape 100, le désembrouilleur 1 reçoit un fragment chiffré d'un contenu multimédia et une clé de déchiffrement de ce fragment chiffré. De façon connue de l'homme du métier, le fragment chiffré et la clé de déchiffrement peuvent être reçus conjointement, c'est-à-dire à un même moment et par l'intermédiaire d'un même réseau de communication ou d'un même support d'enregistrement interne ou externe au terminal. Le fragment chiffré et la clé de déchiffrement peuvent aussi être reçus séparément, c'est-à-dire à des moments distincts ou par l'intermédiaire de réseaux de communication ou de supports d'enregistrement, internes ou externes au terminal, distincts. Ici, comme cela a été décrit plus haut, la clé de déchiffrement du fragment chiffré est reçue par le terminal dans une licence de DRM. [0068] Après l'étape 100 et la phase d'initialisation, lors d'une étape 120, le désembrouilleur 1 déchiffre le fragment avec la clé de déchiffrement, tous deux reçus à 5 l'étape 100, obtenant ainsi un fragment en clair. [0069] Après l'étape 120, et avant que le fragment déchiffré ne soit enregistré dans la mémoire 5, lors d'une étape 130, le désembrouilleur remplace des bits d'origine du fragment en clair par des bits substitués différents pour obtenir un fragment modifié. [0070] Plus précisément, le désembrouilleur 1 remplace, par blocs constitués de proche en 10 proche, l'ensemble des bits d'origine du fragment en clair par des bits substitués. Chacun de ces blocs de bits sera dans la suite noté Px. L'indice « x » désigne le numéro d'ordre ou le rang du bloc Px. Ici, le numéro d'ordre du premier bloc de bits du fragment en clair est « 1 » et celui du dernier bloc de bits est un entier « X » à priori inconnu, et déterminé au terme de l'étape 130. L'indice « x » est donc compris entre 1 et X. La concaténation de 15 l'ensemble des blocs Px dans l'ordre des indices x est égale au fragment en clair. [0071] Pour cela, pour chacun de ces blocs Px, le désembrouilleur 1 met en oeuvre une opération 132, puis une opération 134. [0072] Lors de l'opération 132, le désembrouilleur 1 sélectionne d'abord l'une des tables 12 mémorisées lors de l'étape 110 en vue de l'utiliser pour remplacer les bits d'origine de 20 ce bloc Px par des bits substitués. [0073] A cet effet, ici, le désembrouilleur 1 extrait de la mémoire 5 le nombre S et sa longueur k en octets, le nombre u, ainsi que le nombre t1 de tables 12 mémorisées à l'étape 110. Ensuite, l'indice i de la table T[i] sélectionnée est déterminé à l'aide de la formule suivante : i = S[((x-1) div u) modulo k] modulo t1, où 25 - S[j] est la fonction qui retourne l'octet d'indice j dans le nombre S, - div désigne l'opération de division euclidienne. [0074] Une fois la table T[i] sélectionnée, le nombre M de bits des suites 14 contenues dans la première colonne de cette table T[i] est connu. [0075] Ensuite, lors de l'opération 134, le désembrouilleur 1 réalise le remplacement des 30 bits d'origine du bloc Px par des bits substitués au moyen de la table T[i] sélectionnée lors de la précédente exécution de l'opération 132. Plus précisément, s'il reste au moins M bits d'origine du fragment en clair à remplacer, le désembrouilleur 1 constitue le bloc Px à l'aide des M premiers bits du fragment en clair restant à remplacer. Ce bloc Px constitue donc une suite de M bits d'origine consécutifs du fragment en clair. Le remplacement consiste 35 ensuite : - à rechercher et à lire, dans la table 12 sélectionnée, la suite 16 associée à la suite 14 ayant la même valeur que ce bloc Px, et - à concaténer, dans l'ordre de lecture, cette suite 16 lue aux précédentes suites 16 lues. [0076] Dans ce mode de réalisation, la recherche est particulièrement simple et rapide car 40 le numéro de la ligne de la table T[i] contenant la suite 16 à lire peut directement être construit à partir de la valeur du bloc Px et sans consulter le contenu d'autres lignes de cette table. Par exemple, la suite 16 est lue sur la ligne de numéro Px de la table T[i]. [0077] En réitérant les opérations 132 et 134, on construit ainsi de proche en proche un fragment modifié dans lequel chaque bloc Px est remplacé par une suite 16 respective. [0078] S'il reste moins de M bits d'origine du fragment en clair à remplacer, les bits d'origine du fragment en clair restant à remplacer sont complétés arbitrairement par des bits supplémentaires pour constituer un bloc de M bits consécutifs à traiter comme les précédents. [0079] Par exemple, ici, si la table T[i] d'indice i est celle de la figure 2, et si le bloc Px du 10 fragment en clair est égal à la suite 14 de huit bits d'origine OxA4, alors le bloc d'indice x du fragment modifié est la suite 16 de seize bits substitués Ox5BIOx01. [0080] Ensuite, lorsque les opérations 132 et 134 ont été mises en oeuvre pour l'ensemble des blocs Px, lors d'une étape 140, le désembrouilleur 1 mémorise seulement le fragment modifié ainsi obtenu dans la mémoire 5 partagée. 15 [0081] Puis, lors d'une étape 150, le décodeur 3 extrait le fragment modifié de la mémoire 5 partagée. [0082] Ensuite, lors d'une étape 160, le décodeur 3 remplace les bits substitués du fragment modifié par les bits d'origine pour reconstruire le fragment en clair à partir du fragment modifié. 20 [0083] Plus précisément, le décodeur 3 remplace, par blocs constitués de proche en proche, l'ensemble des bits substitués du fragment modifié par les bits d'origine. Chacun de ces blocs de bits sera dans la suite noté Px*. L'indice « x » désigne le numéro d'ordre ou le rang du bloc Px*. Ici, le numéro d'ordre du premier bloc de bits du fragment modifié est « 1 » et celui du dernier bloc de bits est un entier « X » à priori inconnu, et déterminé 25 au terme de l'étape 160. L'indice « x » est donc compris entre 1 et X. La concaténation des blocs Px* dans l'ordre des indices x est égale au fragment modifié. [0084] Pour cela, pour chacun de ces blocs Px*, le décodeur 3 met en oeuvre une opération 162, puis une opération 164. [0085] Lors de l'opération 162, le décodeur 3 détermine d'abord l'indice i de la table T[i] 30 sélectionnée et utilisée lors de l'étape 130. Puis, il sélectionne la table L[i] qui forme avec la table T[i] une paire de tables correspondantes. [0086] A cet effet, ici, le décodeur 3 extrait de la mémoire 5 le nombre S et sa longueur k en octets, le nombre u ainsi que le nombre t1 de tables 12 mémorisées à l'étape 110. Ensuite, l'indice i de la table L[i] est déterminé à l'aide de la formule suivante : i = S[((x-1) 35 div u) modulo k] modulo t1, où x est le numéro d'ordre du bloc Px* qui va être traité lors de l'opération 164 suivante. Puis le décodeur 3 sélectionne la table L[i] d'indice i. A partir de ce moment, le nombre N de bits des suites 16 de la table L[i] est connu. [0087] Ensuite, lors de l'opération 164, le décodeur 3 réalise le remplacement des bits substitués du bloc Px* par des bits d'origine au moyen de la table L[i] sélectionnée lors de 40 la précédente exécution de l'opération 162. Pour cela, il constitue le bloc Px* avec les N premiers bits du fragment modifié restant à remplacer. Le bloc Px* est ainsi une suite de N bits substitués consécutifs. Le remplacement consiste ensuite : - à lire, dans la table L[i] sélectionnée, la suite 14 associée à la suite 16 dont la valeur est égale à celle du bloc Px*, et - à concaténer, dans l'ordre de lecture, cette suite 14 lue aux précédentes suites 14 lues. [0088] La lecture de la suite 14 dans la table L[i] est ici particulièrement rapide car le second octet de la suite 16 permet de construire directement le numéro de la ligne de la table L[i] contenant la suite 14 à lire sans consulter le contenu d'autres lignes de cette table. Par exemple, la suite 14 est lue sur la ligne de la table L[i] dont le numéro de ligne est égal à la valeur du second octet de la suite 16. [0089] En réitérant les opérations 162, 164, le décodeur reconstruit de proche en proche le fragment en clair. [0090] Lors de l'opération 164, si le décodeur 3 détecte qu'il s'agit du dernier bloc Px* à traiter du fragment modifié, alors le décodeur 3 remplace le dernier bloc Px* comme les précédents. Ensuite, il ne concatène, aux précédentes suites 14 lues, que les premiers bits utiles de la suite 14. Pour déterminer le nombre de bits utiles de cette suite 14, le décodeur 3 utilise, par exemple, une information de longueur contenue dans la partie du fragment en clair déjà obtenu. La position de cette information de longueur dans le fragment en clair est fixée par le format connu de codage utilisé pour les fragments en clair. Cette information de longueur peut aussi être une information prédéterminée, relative à la structure de chaque fragment et imposée par le format de codage utilisé. [0091] Par exemple, si la table L[i] est celle de la figure 2, et si le bloc Px* est la suite de seize bits substitués Ox5BIOx01, alors le bloc Px reconstruit du fragment en clair est la suite 14 de huit bits d'origine OxA4. [0092] Ensuite, lorsque les opérations 162 et 164 ont été mises en oeuvre pour l'ensemble des blocs Px*, et avant que le fragment en clair ne soit éventuellement enregistré dans une mémoire du terminal, lors d'une étape 170, le décodeur 3 décode le fragment en clair obtenu. Ici, le fragment en clair obtenu par le décodeur n'est jamais enregistré dans une mémoire partagée et, en particulier, dans la mémoire 5. [0093] Enfin, lors d'une étape 180, le décodeur 3 transmet le fragment décodé à un appareil multimédia apte à jouer ce fragment décodé du contenu multimédia de manière qu'il soit directement perceptible et compréhensible par un être humain. [0094] De nombreux autres modes de réalisation de l'invention sont possibles. Par exemple, le contenu multimédia est fourni protégé par un système d'accès conditionnel, ou CAS, pour Conditional Access System. La terminologie du domaine des systèmes d'accès conditionnel est alors utilisée. Le lecteur intéressé pourra par exemple en trouver une présentation plus complète dans le document : « Functional Model of a Conditional Access System », EBU Review, Technical European Broadcasting Union, Bruxels, BE, N° 266, le 21 decembre 1995. Dans ce cas, la clé de contenu est généralement désignée comme mot de contrôle, et reçue dans un message de contrôle des titres d'accès, ou ECM, pour Entitlement Control Message. [0095] Dans un autre mode de réalisation, le contenu multimédia est fourni protégé par tout autre type de système de protection de contenus, tel par exemple qu'un système de protection de données plus classique ne réalisant pas de gestion de droits d'accès. Dans ce cas, la clé de contenu peut être reçue dans tout autre type de message de transmission. [0096] La phase d'initialisation peut être déclenchée par d'autres événements. Par exemple, l'exécution des étapes 110 et 112 est déclenchée en réponse à l'exécution d'un module d'accès à un contenu protégé du terminal. Elle peut aussi être déclenchée périodiquement ou après un nombre prédéterminé d'utilisations des tables 12 et 18 ou du nombre S précédemment construits. [0097] En variante, lors des étapes 110 et 112, les tables 12 et 18 peuvent être pré-calculées, puis statiques et intégrées aux instructions mémorisées dans la mémoire 9 au titre du développement de ces instructions. [0098] En variante, les nombres M et N sont constants à chaque exécution de l'étape 110. 15 Par exemple, le nombre M est choisi égal à huit et le nombre N est choisi égal à un multiple entier de huit supérieur ou égal à seize. Dans une autre variante, seul le nombre N varie d'une exécution à l'autre de l'étape 110 tandis que le nombre M reste constant. [0099] Les M bits de chaque suite 16 des tables L[i] utilisés pour former l'index de cette table ne sont pas nécessairement les M derniers bits de chaque suite 16. En fait ces M 20 bits peuvent être situé à n'importe quel emplacement dans la suite 16 à partir du moment où l'emplacement de ces M bits est connu par le décodeur 3. Par exemple, ces M bits occupent seulement les positions d'indice pair dans la suite 16. [00100] Dans une autre variante, la première colonne de la table L[i] est simplement classée par ordre croissant ou décroissant des valeurs des suites 16 et aucun index tel 25 que celui précédemment décrit pour la table 18 n'est utilisé. [00101] Dans un autre mode de réalisation, après la mise en oeuvre de l'étape 110, l'étape 112 est omise. Seule les premières tables 12 sont mémorisées de manière à être à la disposition, non seulement du désembrouilleur 1, mais aussi du décodeur 3. Dans ce mode de réalisation, c'est donc la même table 12 qui est utilisée lors des opérations 134 et 30 164. Lors de l'opération 164, la valeur du bloc Px* est recherchée dans la seconde colonne de la table 12, par exemple, en consultant successivement dans un ordre prédéterminé les suites 16 présentent dans la seconde colonne de cette table. [00102] Dans un autre mode de réalisation, après la mise en oeuvre de l'étape 110, l'étape 112 est mise en oeuvre un nombre t2 de fois, strictement positif et strictement 35 inférieur à t1, de sorte que, seules t2 tables 18 sont mémorisées. Pa exemple, pour les valeurs de l'indice i comprises entre [0 ; t2-1], une table L[i] est construite pour chaque table T[i] construite. A l'inverse, pour les valeurs de l'indice i comprise entre [t2 ; ti-1], seule la table T[i] est construite. Dans ce dernier cas, la table T[i] est mémorisée de façon à être à la disposition, non seulement du désembrouilleur 1, mais aussi du décodeur 3. 40 Ultérieurement, si lors de l'étape 162 la valeur de l'indice i est comprise entre [0 ; t2-1], alors, lors de l'opération 164, la valeur du bloc Px* est recherchée dans la table L[i] correspondante à la table T[i]. Par contre, si lors de l'étape 162, la valeur de l'indice i est comprise entre [t2 ; t1-1], lors de l'opération 164, la valeur du bloc Px* est recherchée dans la seconde colonne la table T[i]. [00103] En variante, lors de l'étape 114, afin de mettre le ou les nombres S, k, u générés à la disposition du désembrouilleur 1 et du décodeur 3, le terminal les mémorise à la fois dans une mémoire propre au désembrouilleur 1 et dans une mémoire propre au décodeur 3. [00104] Dans un mode de réalisation simplifié, t1 est égal à un, c'est-à-dire qu'une seule table 12 est utilisée pour créer la totalité du ou des fragments modifiés. [00105] Les opérations 132 et 162 peuvent être réalisées différemment. Par exemple, l'utilisation du nombre u peut être omise. Dans ce cas, l'indice i de la table 12 ou 18 sélectionnée est déterminé à l'aide de la formule suivante : i = S[(x-1) modulo k] modulo tl. Il est aussi possible de déterminer l'indice i sans utiliser le nombre S. Par exemple, dans ce dernier cas, la formule suivante est utilisée : i = x modulo t1. Dans ce cas, lors de l'étape 114, les nombres S, u et k ne sont pas construits. [00106] Dans un autre mode de réalisation, les étapes 110, 112 et 114 sont omises. Ainsi, aucune table 12, 18 n'est mémorisée avant le début de l'étape 130. Dans ce cas, lors de l'opération 132, une table 12 est construite au fur et à mesure des exécutions de l'opération 132. Par exemple, on suppose ici que M et N sont des constantes connues et que la table 12 est vide initialement. Ensuite, si la valeur du prochain bloc Px du fragment en clair ne correspond à aucune suite 14 déjà contenue dans la table 12, une suite 16 est générée puis mémorisée dans la table 12 en association avec les bits d'origine du bloc Px. Par exemple, la suite 16 est générée : a) en tirant aléatoirement ou pseudo-aléatoirement une suite 16 dans l'ensemble des 2" 25 suites 16 possibles, puis b) si la suite 16 ainsi tirée aléatoirement n'a pas déjà été associée à une autre suite 14, alors elle est associée dans la table 12 à cette suite 14 et, dans le cas contraire, on réitère les opérations a) et b). [00107] De cette façon, on construit de proche en proche une table, dite dynamique. 30 Cette table dynamique ne diffère d'une table 12 qu'en ce qu'elle peut ne pas contenir toutes les suites 14 possibles. Ici, cette table dynamique contient seulement les suites 14 nécessaires pour traiter le fragment en clair. Ensuite, lors de l'étape 162, une table dynamique correspondante est construite, par exemple, comme décrit pour l'étape 112. [00108] Dans un autre mode de réalisation, l'utilisation des tables 12, 18 est 35 remplacée par l'utilisation d'une fonction F de chiffrement et d'une fonction F-1 de déchiffrement. Plus précisément, la fonction F exécute différentes opérations arithmétiques et logiques sur les bits d'une suite 14 pour générer la suite 16 qui lui est associée. La fonction F-1 est l'inverse de la fonction F. Elle retourne donc la valeur de la suite 14 associée à une suite 16. Les fonctions F et F-1 sont donc utilisées à la place des 40 tables 12, 18 lors de l'exécution, respectivement, des opérations 134 et 164. [00109] Dans un autre mode de réalisation, l'ensemble des bits d'origine ne sont pas remplacés par des bits substitués lors de l'étape 130. A cet effet, par exemple, lors de l'étape 134, seule une fraction prédéterminée des blocs Px font l'objet du remplacement décrit plus haut. Pour les autres blocs Px, les bits d'origine sont directement concaténés au résultat du traitement des blocs précédents. La fraction prédéterminée des blocs remplacés peut être modifiée pour chaque fragment en clair traité. Par exemple, pour les fragments en clair pairs, le procédé n'applique les opérations 132 et 134 qu'à un bloc Px sur deux et, pour les fragments impairs, qu'à un bloc Px sur trois. Lors de l'étape 160, le décodeur 3 réalise les remplacements réciproques de ceux réalisés lors de l'étape 130. Ainsi, si l'ensemble des bits d'origine ne sont pas remplacés par des bits substitués lors de l'étape 130, lors de l'étape 160, seule une fraction des blocs est identifiée comme des blocs de bits substitués Px*. Seuls ces blocs Px* identifiés font l'objet du remplacement décrit plus haut, les autres bits étant directement concaténés au résultat du traitement des blocs précédents. [00110] En variante, lors de l'étape 134, le désembrouilleur 1 constitue des blocs Px de longueur supérieure à M, et ne remplace qu'une suite de M bits d'origine de ce bloc Px par une suite 16. Cette suite de M bits d'origine est située à la même position prédéterminée dans chaque bloc Px. Par exemple, cette suite de M bits d'origine est située au début du bloc Px. Cela revient à intercaler, dans le fragment modifié, une suite de bits d'origine entre chaque suite 16. Lors de l'étape 164, le décodeur 3 constitue des blocs Px* de longueur prédéterminée supérieure à N, et il ne remplace que la partie prédéterminée de ces bits correspondant à la suite 16. Les bits restants du bloc Px* restent inchangés. La longueur du bloc Px, et la position dans le bloc Px de la suite de M bits d'origine remplacée, peuvent chacune être constante ou variable. [00111] En variante, également, lors de l'opération 134, lorsqu'il reste moins de M bits d'origine du fragment en clair à remplacer, ces derniers bits d'origine ne sont pas remplacés, mais directement concaténés aux précédentes suites 16 lues. Dans ce cas, lors de l'opération 164, le dernier bloc Px* compte moins de M bits, et ces bits ne sont pas remplacés, mais directement concaténés aux précédentes suites 14 lues. [00112] Dans une autre variante, lors de l'étape 140, le fragment modifié est mémorisé dans la mémoire 5, conjointement avec la longueur utile, en bits, du fragment en clair ou de son dernier bloc Px. Ensuite, le décodeur 3 extrait alors de la mémoire 5, lors de l'étape 150, le fragment modifié ainsi que cette longueur utile. Puis, lors de l'opération 164, le décodeur 3 remplace le dernier bloc Px* comme les précédents, mais ne concatène, aux précédentes suites 14 lues, que les premiers bits utiles de la suite 14 ainsi lue. Le nombre de premier bits utiles est déterminé à partir de la longueur utile extraite lors de l'étape 150. REVENDICATIONS1. Procédé d'accès à un contenu multimédia protégé, par un terminal comportant un désembrouilleur, un décodeur et une mémoire partagée, dans lequel : 5 - lors d'une phase de désembrouillage, le désembrouilleur : a) reçoit (100) un fragment chiffré du contenu multimédia et une clé de déchiffrement de ce fragment chiffré, b) déchiffre (120) le fragment reçu avec la clé de déchiffrement reçue pour obtenir un fragment en clair, 10 c) remplace (134) des bits d'origine du fragment en clair par des bits substitués différents pour obtenir un fragment modifié, puis d) mémorise (140) le fragment modifié dans la mémoire partagée, - lors d'une phase de décodage, le décodeur : e) extrait (150) le fragment modifié de la mémoire partagée, 15 f) remplace (164) les bits substitués du fragment modifié extrait par les bits d'origine pour reconstruire le fragment en clair, g) décode (170) le fragment en clair reconstruit pour obtenir un fragment décodé, puis h) transmet (180) le fragment décodé à un appareil multimédia apte à jouer ce fragment décodé du contenu multimédia, 20 caractérisé en ce que : - lors de l'étape c) (130), une suite (14) de M bits d'origine consécutifs du fragment en clair est remplacée par une suite (16) de N bits substitués consécutifs, où N est strictement supérieur à M et la suite de N bits substitués est différente pour chaque suite différente de M bits d'origine, et 25 - lors de l'étape f) (160), la suite de N bits substituée est remplacée par la suite de M bits d'origine. 2. Procédé selon la revendication 1, dans lequel : - avant l'exécution des étapes b), c), d), e) et f), le procédé comporte : 30 - la mémorisation (110), par le terminal, d'une première table (12) de correspondance comportant une ligne pour chaque suite possible de M bits d'origine, chaque ligne associant à une suite possible de M bits d'origine une suite de N bits substitués différente de celles associées aux autres suites possibles de M bits d'origine, les lignes de la première table étant classées par ordre de valeurs des suites possibles 35 de M bits d'origine pour constituer un index de cette première table, et - l'étape c) comporte :- la lecture dans la première table de correspondance de la suite de N bits substitués associée à la suite de M bits d'origine du fragment en clair, puis - le remplacement de la suite de M bits d'origine du fragment en clair par la suite de N bits substitués ainsi sélectionnée pour obtenir le fragment modifié. 3. Procédé selon la revendication 2, dans lequel : - avant l'exécution des étapes b), c), d), e) et f), le procédé comporte : - la mémorisation (112), par le terminal, d'une seconde table (18) de correspondance comportant une ligne pour chaque suite de N bits substitués, cette ligne associant à cette suite de N bits substitués la suite de M bits d'origine à laquelle cette suite de N bits substitués était associée par la première table, ces première et seconde tables étant dites « correspondantes » car la seconde table permet de reconstruire le fragment en clair à partir du fragment modifié obtenu à l'aide de la première table, - l'étape f) comporte : - la lecture dans la seconde table de correspondance, correspondant à la première table, de la suite de M bits d'origine associée à la suite de N bits substitués du fragment modifié, puis - le remplacement de la suite de N bits substitués du fragment modifié par la suite de M bits d'origine ainsi lue pour reconstruire le fragment en clair. 4. Procédé selon la revendication 3, dans lequel l'ensemble des valeurs de M bits d'indices donnés deux à deux distincts de chaque suite de N bits substitués est égal à l'ensemble des valeurs possibles des suites de M bits, et les lignes de la seconde table sont classées uniquement par ordre de valeurs de ces M bits d'indices donnés de chaque suite de N bits substitués, de sorte que ces M bits d'indices donnés constituent un index de cette seconde table. 5. Procédé selon l'une quelconque des revendications 2 à 4, dans lequel le procédé 30 comporte : - avant l'exécution des étapes b), c), d), e) et f), la mémorisation, par le terminal, de plusieurs premières tables de correspondance différentes, puis - lors de l'exécution de l'étape c) suivante, la sélection (132) de l'une de ces premières tables, puis l'utilisation de la première table sélectionnée, puis 35 - lors de l'exécution de l'étape f) suivante, la détermination (162) de la première table sélectionnée à l'étape c). 6. Procédé selon la revendication 5, dans lequel, aux moins deux des premières tables de correspondance différentes mémorisées diffèrent entre elles au moins par la longueur M des suites de bits d'origine ou par la longueur N des suites de bits substitués. 7. Procédé selon l'une quelconque des revendications 5 ou 6, dans lequel : - le procédé comporte, avant l'exécution des étapes b), c), d), e), et f), le tirage (114) aléatoire ou pseudo-aléatoire d'un nombre, par le terminal, et sa mise à disposition du désembrouilleur et du décodeur, et - la sélection, à l'étape c), d'une première table de correspondance, puis la détermination, io à l'étape f), de la première table sélectionnée à l'étape c), sont faites en fonction de ce nombre tiré. 8. Procédé selon l'une quelconque des revendications 5 à 7, dans lequel le nombre des premières tables de correspondance différentes mémorisées ou le nombre d'octets du 15 nombre aléatoirement ou pseudo-aléatoirement tiré, au moins, est pris égal à une puissance strictement positive de deux. 9. Support (9) d'enregistrement d'informations, caractérisé en ce qu'il comporte des instructions pour la mise en oeuvre d'un procédé conforme à l'une quelconque des 20 revendications précédentes, lorsque ces instructions sont exécutées par un calculateur (7) électronique. 10. Terminal comportant un désembrouilleur (1), un décodeur (3) et une mémoire (5) partagée, caractérisé en ce que ce terminal comporte un calculateur électronique 25 programmé pour exécuter les étapes c) et f) d'un procédé d'accès à un contenu multimédia protégé conforme à l'une quelconque des revendications 1 à 8.