Brevet FR2927209A1 — publié le 20090807

Protection d'un contenu, notamment multimédia La présente invention vise la protection d'un contenu, notamment multimédia, contre une reproduction illégale. Il a été observé que les systèmes de protection contre la reproduction non autorisée d'un contenu ont connu tout d'abord un grand succès (au cours des années 1990), pour susciter actuellement moins d'effort en développement. Cette observation peut s'expliquer notamment : - par le fait que beaucoup de systèmes de protection ont été successivement "cassés", c'est-à-dire désactivés par des indélicats pour avoir accès au contenu, - par le fait que la plupart des utilisateurs veulent pouvoir faire une duplication "raisonnable"(dans le cadre familiale ou pour un simple prêt à un tiers ou encore pour une restitution audiovisuelle sur un dispositif de leur choix), - par le fait que la gestion des droits numériques ou � DRM � (pour "Digital Rights Management") nécessite un budget plus grand que prévu (certains diffuseurs indiquant par exemple que trois appels sur quatre à leur plate-forme (ou "hotline") sont liés à des problèmes de DRM). Beaucoup de systèmes de protection ont été cassés vraisemblablement pour la raison suivante : l'approche classique de protection consiste à prévoir une clé secrète à insérer dans un média supportant le contenu multimédia, cette clé secrète permettant à un dispositif de lecture du média de vérifier si le contenu est copié légalement. Elle représente donc un droit qui est fourni par le diffuseur, lequel peut normalement vérifier le nombre d'exemplaires en circulation. En effet, un dispositif standard est dans l'incapacité de copier cette clé si elle est placée dans un réceptacle inaccessible (par exemple recourant à un système de fichier non standard où seraient stockées des informations propres à cette clé). Ce système est sécurisé par un accord commercial entre un fabriquant de dispositifs de lecture adaptés et un fabricant de médias (ou leur représentants). Il s'est avéré toutefois possible de contourner une telle protection, notamment dans le cas de disques DVD cryptés et pouvant être lus par exécution d'un programme nommé � DeCSS �. Une variante d'utilisation d'une clé secrète consiste à vérifier le droit de l'utilisateur à partir d'un site en ligne (par exemple tel que � iTunes ��). Dans cette réalisation, un serveur distant dispose d'un contenu protégé par droits d'auteur. Le client est le logiciel et/ou le périphérique qui permet de lire ce contenu (par exemple un lecteur multimédia ou un baladeur numérique). Lorsqu'un utilisateur souhaite télécharger un fichier, le client fournit un identifiant unique au serveur. Le serveur chiffre le fichier demandé spécifiquement pour ce client. Ce fichier chiffré est ensuite transféré du serveur vers le client, via un réseau étendu tel que l'Internet. Lorsque l'utilisateur souhaite jouer le contenu qu'il a ainsi téléchargé, sur un lecteur équipé du logiciel et/ou relié au périphérique autorisé(s), le lecteur établit d'abord une connexion avec le serveur, qui s'assure que l'utilisateur au nom de qui les droits sont enregistrés dispose bien d'une licence valide à cet instant. Si tel est le cas, le serveur transmet au client le code de déchiffrement du fichier, ainsi que la liste des droits de l'utilisateur vis-à-vis de ce fichier. La vérification du droit peut imposer à l'utilisateur de posséder une clé supplémentaire (par exemple une clé matérielle telle qu'un "dongle" à brancher sur un port d'ordinateur de type PC), ce qui limite fortement les possibilités de duplication et de restitution sur tout support. Cette technique n'est pas très répandue notamment à cause des coûts induits et de son manque de souplesse : il est en effet difficile de prêter un contenu et/ou d'utiliser cette technique en dehors du monde de l'ordinateur personnel. Des diffuseurs de contenus ont tenté d'installer et mettre en oeuvre des logiciels de lecture ad-hoc sur des ordinateurs PC personnels de leurs clients, modifiant profondément leur fonctionnement (� rootkit � de la marque Sony�). Cette approche a suscité beaucoup de méfiance, voire une méfiance vis-à-vis de ces diffuseurs.30 Une autre possibilité consiste à rendre l'outil d'accès au contenu sensible à une politique de DRM (ce que permet très récemment par exemple Microsoft Vista). Une autre possibilité consiste à rendre accessible sans condition une partie du contenu et soumettre à certaines conditions l'accès à une partie complémentaire. Là encore, le recours à un accès en ligne est nécessaire. Une solution prometteuse est le tatouage de contenus numériques ou � watermarking �. Le contenu ne semble pas protégé, mais, en réalité, comporte des "marques" indécelables par nos sens. La valeur légale de ces marques semble toutefois difficile à établir dans la mesure où il est toujours possible, techniquement : - d'ajouter un watermarking, ou - de supprimer ou camoufler un watermarking. La présente invention vient améliorer la situation. Elle propose à cet effet de faire en sorte que les utilisateurs puissent faire une duplication "raisonnable" des contenus dont ils ont acquis régulièrement les droits. Un utilisateur titulaire légal d'un contenu doit pouvoir : - "prêter" le contenu à un tiers, - l'utiliser sur le dispositif de leur choix, sans être limité à du matériel propriétaire, - utiliser les DRM facilement sans qu'ils ne soient source de coûts supplémentaires. Préférentiellement, l'acte de copie est et doit rester réglementé. A cet effet, une entité B (fournisseur de contenu) doit pouvoir identifier au moins une autre entité A (recevant une copie du contenu) de façon à comptabiliser le nombre de copies effectuées. Ainsi, la présente invention vise tout d'abord un procédé de communication d'une première entité informatique à une deuxième entité informatique d'un fichier comportant un contenu destiné à être lu par un programme prédéterminé, lecteur de ce contenu. Dans le procédé au sens de l'invention, avant communication à la deuxième entité : - le contenu et le programme lecteur du contenu sont fusionnés dans un même programme global, que comporte ledit fichier, l'exécution dudit programme global menant à la lecture du contenu, - un identifiant de la deuxième entité est enregistré en tant que donnée dudit programme global, et - une routine de vérification dudit identifiant est ajoutée audit programme global, Ainsi, l'exécution du programme global par la deuxième entité précitée comporte : - une exécution de la routine de vérification d'identifiant pour contrôler l'identifiant de la deuxième entité, - et, en cas de contrôle positif de l'identifiant, une lecture dudit contenu. Préférentiellement, il doit être possible aussi à l'utilisateur de bien différencier un contenu piraté d'un contenu "non piraté". Le but n'est pas d'empêcher un pirate déterminé de faire une copie d'un contenu semblable à l'original, mais plutôt de rendre difficile cette copie. Ainsi, dans une réalisation, une routine de complication de la structure du programme global est en outre appliquée, et la deuxième entité exécute alors le programme global sous sa forme compliquée. On entend par "forme compliquée" le fait que la routine de vérification de l'identifiant, d'une part, et la routine de lecture du contenu dans le programme global, d'autre part, sont imbriquées et mélangées, de sorte qu'il est difficile pour un pirate d'accéder en un temps raisonnable : - à la routine de vérification de l'identifiant, - et/ou à la donnée de l'identifiant insérée dans le programme global, - et/ou aux données du contenu. Le contenu, lui-même, peut être un contenu multimédia, un texte, ou autre, ou simplement un identifiant pour un contrôle d'accès sécurisé. A titre d'exemple, une telle complication (ou une simplification) de la structure du programme global peut être menée par une technique informatique dite d"'obfuscation" (ou respectivement par "désobfuscation"), laquelle technique sera décrite plus loin dans un exemple illustratif. L'obfuscation vise à rendre une information difficile à comprendre. Le programme global, sous sa forme initiale non compliquée, comporte alors les données numériques du contenu, ainsi qu'un programme lecteur (ou "player") de ces données, de telle sorte que son exécution (moyennant un contrôle positif de l'identifiant) revient à lire le contenu et jouer par exemple un film ou une musique, si la deuxième entité est reliée à un dispositif de restitution. On comprendra alors que la deuxième entité peut être un dispositif de restitution audio ou vidéo, ou plus généralement un terminal, relié éventuellement à un réseau étendu, par exemple pour télécharger de la première entité le programme global sous forme obfusquée. Ainsi, la première entité peut être, quant à elle, un serveur diffusant initialement le contenu, sous la forme d'un programme global obfusqué, pour des "deuxièmes" entités qui peuvent être des dispositifs de restitution et/ou des terminaux. La présente invention vise alors une entité informatique, telle qu'un serveur de diffusion du type précité, et comportant des moyens pour être capable de mettre en oeuvre le procédé ci-avant, en tant que "première entité informatique" intervenant dans le procédé. On relèvera que cette "première" entité informatique peut mettre en oeuvre un programme d'ordinateur comportant des instructions pour générer le programme global, pour la mise en oeuvre du procédé au sens de l'invention, lorsque ce programme d'ordinateur, est exécuté par un processeur d'une telle "première" entité informatique. A ce titre, l'invention vise aussi ce programme d'ordinateur. Toutefois, la première entité informatique précitée peut aussi être un terminal et/ou un dispositif de restitution communiquant le programme global à un autre terminal et/ou dispositif de restitution. Ainsi, en reprenant l'énoncé du procédé ci-avant, la deuxième entité (un terminal par exemple) peut décider de communiquer le contenu sous forme de programme global à une troisième entité informatique (un autre terminal par exemple). Dans ce cas, la deuxième entité, préférentiellement : -simplifie le programme global, - insère, en tant que donnée, un identifiant de la troisième entité dans le programme global simplifié, et - complique le programme global comportant l'identifiant de la troisième entité. La présente invention vise alors aussi une entité informatique, telle qu'un terminal et/ou dispositif de restitution du type précité, et comportant des moyens pour mettre en oeuvre le procédé ci-avant, en tant que "deuxième entité informatique" intervenant dans le procédé. On relèvera ici que l'insertion de l'identifiant de la troisième entité en tant que donnée dans le programme global peut consister en l'ajout de cet identifiant à l'identifiant de la deuxième entité, ou, en variante, à une insertion par remplacement de l'identifiant de la deuxième entité par l'identifiant de la troisième entité. On comprendra alors que l'insertion d'identifiant permet de contrôler la circulation des copies du contenu et, en particulier, de savoir exactement si un terminal, comportant son propre identifiant a eu accès ou non au contenu protégé au sens de l'invention. On peut d'ailleurs prévoir une autorité de gestion de la diffusion du contenu, distante, pour : -recevoir de la deuxième entité l'identifiant de la deuxième entité et l'identifiant de la troisième entité, et stocker en mémoire ces identifiants, et - communiquer à la deuxième entité : o une première clé pour lancer, auprès de la deuxième entité, une routine de simplification du programme global et d'insertion de l'identifiant de la troisième entité dans le programme global, o et une deuxième clé pour lancer ensuite, auprès de la deuxième entité, une routine de complication du programme global, avant communication du programme global sous forme compliquée à la troisième entité. La présente invention vise, à ce titre, une entité informatique comportant des moyens pour mettre en oeuvre cette réalisation, en tant qu'autorité de gestion. A titre d'exemple, il peut s'agir à nouveau d'un serveur distant, gérant une liste des terminaux qui ont eu accès au contenu. En particulier, ce serveur peut être identique et remplir les mêmes fonctions que le serveur de diffusion initiale du contenu (qui peut être la "première" entité précitée). Dans la réalisation où à chaque copie du contenu à destination d'une nouvelle entité, on prévoit l'ajout par insertion de l'identifiant de cette nouvelle entité dans le programme global, le contenu peut alors être transféré plusieurs fois entre plusieurs entités, et un identifiant de chaque entité de cette pluralité d'entités est enregistré en tant que donnée du programme global, lequel comporte alors une liste des identifiants des terminaux ayant eu accès au contenu. Dans le cas où l'on prévoit une autorité de gestion, cette dernière tient à jour une liste homologue. A titre d'exemple, un identifiant d'entité informatique peut être le numéro de série de l'entité informatique, ou encore simplement un code confidentiel choisi par le propriétaire de l'entité informatique ou encore des données personnelles relatives au propriétaire. Ainsi, la lecture du contenu dont les données sont des données du programme global ne s'exécute que si l'identifiant lu en tant que donnée supplémentaire du programme global correspond au numéro de série lu dans une mémoire de l'entité informatique, ou à un code confidentiel entré par le propriétaire. On relèvera que le programme global possède une structure avantageuse dès lors qu'il comporte les données du contenu (et les données d'identifiants éventuels) en tant que données du programme global, ces données étant obfusquées (donc difficilement retrouvables dans la structure globale du programme) avant une communication à un terminal ou un dispositif de restitution. A ce titre, la présente invention vise aussi un programme d'ordinateur, stocké en mémoire d'une entité informatique ou téléchargeable via un site distant pour être stocké au moins temporairement en mémoire de ladite entité informatique, formant un tel programme global pour la mise en oeuvre du procédé au sens de l'invention, lorsque ce programme est exécuté par un processeur de l'entité informatique. Le programme global comporte ainsi des instructions pour : -mener un contrôle de vérification de l'identifiant de l'entité informatique, - et, en cas de contrôle positif de l'identifiant, lire le contenu dont les données sont des données du programme global. Ainsi, dans les systèmes classiques de protection, une utilisation classique des principes de cryptographie est mise en oeuvre où une entité B (� Bob �) communique un secret à une entité A (� Alice �, où Alice et Bob sont tous deux habilités). Il est alors souhaité d'empêcher totalement une entité C (� Eve �, non habilitée) d'accéder à leur communication. Tel n'est pas le but de l'invention qui, au contraire, autorise la copie contrôlée. De même, l'invention se distingue d'une utilisation classique des droits DRM : - il n'est pas nécessaire de protéger les échanges entre Alice et Bob mais simplement un seul échange initial, - dans l'exemple ci-avant, Alice et Eve seraient complices dès lors qu'Alice dupliquerait sans autorisation son contenu pour Eve. D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description détaillée ci-après, et des dessins annexés sur lesquels : - la figure 1 illustre schématiquement une première diffusion de contenu protégé par la mise en oeuvre de l'invention, à partir d'un serveur S en tant que "première entité informatique", dans un exemple de réalisation de l'invention, - la figure 2 illustre les étapes mises en oeuvre par le serveur S pour générer le programme global comportant notamment les données de contenu et destiné à l'entité informatique Dl de la figure 1, - la figure 3 illustre les échanges entre l'entité informatique Dl et le serveur S pour pourvoir "copier le contenu" (c'est-à-dire adapter le programme global) pour une autre entité D2, - la figure 4 illustre schématiquement les opérations réalisées par l'entité Dl pour pouvoir adapter le programme global pour la deuxième entité D2, - la figure 5 illustre schématiquement les étapes d'exécution du programme global auprès d'une entité informatique Dl ou D2. En référence à la figure 1, une entité informatique Dl (telle qu'un terminal ou un dispositif de restitution) envoie tout d'abord une requête à un serveur distant S, diffuseur de contenus, pour qu'il lui soit téléchargé un contenu prédéterminé. En particulier, la requête REQ (Id-l) comporte un identifiant (par exemple un numéro de série) de l'entité informatique Dl ou de son propriétaire (par exemple un code personnel). Le terminal Dl envoie aussi dans la requête un identifiant du contenu souhaité (non représenté). Dans la réalisation où l'identifiant est un numéro de série, il peut être prévu une routine automatique : - apte à lire dans une mémoire de l'entité Dl ce numéro de série - et à le communiquant au serveur S. Le serveur S mémorise l'identifiant Id-1 de l'entité Dl (étape MEM Id-1 de la figure 1) dans une base de données. Ensuite, le serveur S constitue, en fonction de l'identifiant Id-1 de l'entité Dl, un programme global au sens de l'invention, en vue de la communication à l'entité Dl du contenu, sous la forme de ce programme global PG(Id-1). En référence à la figure 2, ce programme global est constitué comme suit. Les données de contenu 20 sont importées en tant que données d'un programme de lecture (un "player" portant la référence 21 dans la figure 2, avec éventuellement un programme additionnel de type "plugin" pour la vérification d'identifiant). Avantageusement, il est ajouté la routine de vérification de l'identifiant des entités informatiques à qui est destiné le contenu, portant la référence 23 dans le figure 2, et, en particulier, l'identifiant Id-1 de l'entité informatique Dl est ajouté en tant que donnée 22 du programme global, pour former à l'étape 24 le programme global contenant alors : - les données du contenu 20 ; - la routine de lecture de ces données 21 ; - l'identifiant Id-1 de l'entité Dl à qui est destiné le contenu, en tant que donnée 22 du programme ; et - une routine de vérification 23 de cette identifiant Id-l. Le programme global obtenu à l'étape 24 est de structure simple. Il est ensuite obfusqué à l'étape 25 pour former le programme global obfusqué PG(Id-1), à l'étape 26. Ce programme global obfusqué PG(Id-1) est ensuite communiqué alors directement du serveur à l'entité informatique Dl pour une restitution d'un contenu multimédia, par exemple, si cette entité informatique Dl est reliée à un dispositif de restitution. En référence maintenant à la figure 3, il est décrit une situation dans laquelle l'entité informatique Dl souhaite communiquer le contenu à une autre entité informatique D2 (un autre terminal ou un autre dispositif de restitution sonore ou vidéo). Les entités Dl, D2 sont, bien entendu, reliées au serveur S par un réseau étendu, par exemple via Internet, comme le sont l'entité Dl et le serveur S de la figure 1. Dans l'exemple décrit, le terminal Dl envoie une requête au serveur S comportant l'identifiant Id-1 du terminal Dl et l'identifiant Id-2 du terminal D2. Bien entendu, le terminal Dl envoie aussi un identifiant du contenu souhaité. Le serveur S, sur la base de cette requête, retrouve l'identifiant Id-1 du terminal Dl dans sa base de données et traite alors la requête du terminal Dl. Le serveur S mémorise ensuite dans sa base de données le nouvel identifiant Id-2 du terminal D2 et envoie au terminal Dl une clé de désobfuscation DES(Id-l) du programme global PG(Id-1) que possède actuellement le terminal Dl, ainsi qu'une clé d'obfuscation OBS(Id-2) du programme global de structure simplifiée pour ajouter l'identifiant Id-2 du deuxième terminal D2 et obfusquer le résultat pour constituer le programme global PG(Id-2). Le programme ainsi obfusqué PG(Id-2), que détient le terminal Dl, est finalement communiqué au deuxième terminal D2. Plus précisément, en référence à la figure 4, le programme global initial PG(Id-1) que détient l'entité Dl est préférentiellement transformé comme suit. En partant de ce programme global PG(Id-1), à l'étape 40, que peut lire l'entité Dl puisque son numéro de série correspond à l'identifiant Id-1, subit d'abord une désobfuscation, à l'étape 41, grâce à la clé DES(Id-l) que transmet le serveur S. Le programme obtenu à l'étape 42 est alors de structure simplifiée : il correspond sensiblement au programme qui était obtenu à l'étape 24 de la figure 2. Il y est ajouté l'identifiant Id-2 (à l'étape 43) du terminal D2 et le programme global est obfusqué à l'étape 44 pour constituer ainsi le programme global PG(Id-2) qui est destiné au terminal D2, à l'étape 45. On comprendra alors que, si le programme PG(Id-1) est de forme compliquée (par obfuscation), une routine qui se déclenche par vérification de l'identifiant Id-1 du terminal Dl vise à simplifier la structure de ce programme PG(Id-1) lors de l'étape de désobfuscation 41. A l'inverse, après insertion de l'identifiant Id-2 du deuxième terminal D2 (à l'étape 43), une routine d'obfuscation 44 est exécutée pour compliquer à nouveau la structure du programme PG(Id-2) qui est destinée au terminal D2. En référence à la figure 4, on comprendra en particulier que les opérations de désobfuscation 41 et d'obfuscation 44 sont préférentiellement menées sensiblement simultanément, à la volée. En tout état de cause, il sera évité d'offrir la possibilité à un utilisateur malveillant d'exécuter la routine de désobfuscation 41 et d'interrompre la routine d'obfuscation 44 à son début (par exemple par une mise hors tension), ce qui permettrait à cet utilisateur malveillant d'avoir accès aux données du contenu qui apparaîtraient sous forme simple. Il est donc préféré que les étapes 41 et 44 soient mises en oeuvre quasi-simultanément. Il convient d'indiquer que ces routines d'obfuscation et de désobfuscation sont connues en soi dans la technique des traitements informatiques. Une obfuscation n'empêche pas un programme d'être exécuté mais, en revanche, complique considérablement sa structure pour un intrus qui aurait accès au code et qui essaierait de le comprendre. Par exemple, les données du contenu et/ou de l'identifiant peuvent être obfusquées en premier lieu. Une routine d'obfuscation qu'il est possible de mettre en oeuvre dans le cadre de la présente invention sera décrite plus loin et elle consiste, dans l'exemple décrit, en une décomposition binaire des données et d'une complication de l'expression des exposants de la puissance 2, de cette décomposition binaire. Préférentiellement, l'obfuscation qu'effectue le serveur S à l'étape 25 de la figure 2 mène avantageusement à un programme global différent de celui obtenu par l'obfuscation qu'effectue le terminal Dl à l'étape 44 de la figure 4. Ainsi, on comprendra qu'un programme global est différent d'une copie PG(Id-1) à l'autre PG(Id-2). On relèvera dans l'exemple des figures 1 et 3 que le serveur S qui diffuse le contenu, d'une part, et le serveur qui tient à jour la liste des identifiants des terminaux ayant eu accès au contenu, d'autre part, sont un même et unique serveur. Bien entendu, il peut être prévu deux serveurs distincts. On relèvera que le procédé illustré sur la figure 2 est mis en oeuvre par le serveur de diffusion des contenus S, tandis que le procédé illustré sur la figure 4 est mis en oeuvre par l'entité informatique Dl (telle qu'un terminal), laquelle est alors équipée d'un programme de copie approprié. A ce titre, la présente invention vise aussi un tel programme de copie. Comme vu précédemment en référence à la figure 4, chaque programme global PG(Id-2) qui est destiné à une entité D2, est généré spécifiquement pour cette entité D2 sous le contrôle du serveur S et au moyen du programme de copie précité. Bien entendu, il peut être prévu de limiter le nombre de copies possibles, par exemple en imposant un nombre fini d'identifiants dans la liste tenue par le serveur S, ou encore dans la liste des identifiants ajoutés successivement en tant que données du programme global. On relèvera aussi que le serveur S, tenant une liste des identifiants des terminaux, peut refuser la communication d'un contenu si une requête fait apparaître un identifiant de terminal non autorisé. Il convient de noter que le terminal Dl, une fois que le programme global PG(Id-2) est transformé pour être destiné à l'entité D2, ne peut plus utiliser ce programme global PG(Id-2) puisque son exécution est conditionnée par la vérification de l'identifiant Id-2 (et non pas Id-l) auprès de l'entité Dl. Il peut alors être prévu plusieurs options. Selon une première option, le programme copieur de l'entité Dl peut librement copier autant de fois que souhaité le programme global PG(Id-1) et une version de ces copies peut être transformée pour une communication à l'entité D2, sous la forme du programme global PG(Id-2). Selon une autre option où il peut être préféré de "prêter" le contenu de l'entité Dl à l'entité D2, il peut être interdit la simple recopie du programme PG(Id-1) auprès de l'entité Dl, de sorte que la transformation de ce programme global en un programme adapté à l'entité D2 ne peut plus être utilisée par l'entité Dl. Dans ce cas, le propriétaire du terminal Dl réclamera au propriétaire du terminal D2 le contenu pour qu'il lui soit restitué. En tout état de cause, dans cette deuxième option, on comprendra qu'il n'est pas nécessaire de tenir à jour une liste d'identifiants, mais simplement de garder en mémoire l'identifiant du dernier terminal D2 à avoir eu accès au contenu (programme PG(Id-2)). Il convient aussi de noter que le programme global destiné à une entité informatique peut comporter d'autres routines, non décrites ci-avant. Par exemple, selon les informations que peut donner l'entité Dl au serveur S sur l'entité D2 (d'identifiant Id-2), le serveur S peut ajouter une donnée, dans la clé d'obfuscation OBF(Id-2), pour valider une routine de temporisation dans le programme global PG(Id-2), laquelle peut consister à autoriser l'exécution du programme global pendant une période choisie (par exemple de 7 jours). Au-delà de cette période, l'exécution du programme global PG(Id-2) peut être inhibée. On notera aussi que l'entité Dl, en référence à la figure 1, lorsqu'elle communique une requête pour obtenir un contenu, peut déclarer initialement plusieurs identifiants de terminaux, de manière à ce que le programme global PG(Id-1) soit lisible par un nombre restreint de terminaux dont le propriétaire de l'entité Dl est aussi propriétaire (par exemple plusieurs "lecteurs MP3"). On comprendra alors que le programme global peut inclure en outre des routines définissant des règles de sa propre exécution (plusieurs identifiants autorisés en même temps, routine de temporisation, ou autre). En référence à la figure 5, on a illustré, pour rappel, les opérations qui se déclenchent lorsqu'est exécuté le programme global auprès d'une entité informatique de type terminal ou dispositif de restitution. L'exécution du programme commence par la routine de vérification 50 de l'identifiant de l'entité informatique qui accueille le programme global. Si l'identifiant est conforme (par exemple au numéro de série de l'entité informatique), au test 51 (flèche O), alors, la lecture des données du contenu peut être lancée à l'étape 52. Sinon (flèche N en sortie du test 51), la lecture du contenu n'est pas exécutée et il peut être transmis au serveur S une information d'incident d'utilisation, par exemple, accompagnée du numéro de série effectivement lu par le programme global. On ajoute ici que l'identifiant d'une entité informatique peut être par exemple son adresse MAC, un identifiant de disque dur que comporte cette entité informatique, ou autre.30 Ainsi, la présente invention autorise la copie pour un prêt du contenu, alors que dans le cas classique d'une gestion DRM, il est impossible de copier un contenu quand bien même la copie de ce contenu resterait dans un cadre familial. Par ailleurs, l'invention permet d'utiliser le contenu sur un dispositif au choix de son propriétaire. En effet, dès lors que le programme lecteur (ou "player") est fourni dans le programme global, ce programme global peut s'exécuter sur tout type de terminal ayant suffisamment de mémoire et un processeur suffisamment moderne, selon un autre avantage que procure la présente invention. On relèvera en outre qu'il n'est pas nécessaire pour une entité informatique Dl ou D2 de rester connectée au serveur S pour pouvoir lire le contenu. En effet, dès lors que le contenu a été transféré vers une entité informatique, celle-ci peut le lire autant de fois que souhaité, sans intervention nécessaire du serveur S. On décrit maintenant, ci-après, le mécanisme d'obfuscation qui peut être utilisé pour compliquer la structure du programme global au sens de l'invention. Tout contenu numérique peut être représenté par un polynôme de la forme : 20 a*2^n + b*2^m+....+x*2^1+y*2^0 où a, b, x et y sont des constantes binaires et où n, m, ..., sont des nombres entiers positifs. Il s'agit d'une décomposition binaire. Ce polynôme peut être implémenté sous une forme binaire habituelle en listant les coefficients a,b,x,y suivant un ordre arbitraire (exemple le bit de poids le plus fort à 25 gauche ou à droite). Ainsi, le chiffre 23 s'écrit par exemple 23 = 1 *2A4 + 0*2^3 + 1 *2^2 + 1 *2^1 + 1 *2^0 Il est possible d'utiliser un programme qui va générer cette décomposition et lister ces coefficients précités. Un exemple de pseudo-code peut être celui illustré en annexe 1. 30 Dans ce pseudo-code, si la boucle "while" est réécrite plusieurs fois, sous la forme d'un grand nombre d'opérations séquentielles, alors le contenu numérique est totalement déstructuré de sorte que les tables "coeff' et "expos" de l'annexe 1 ne sont plus utilisées. On a représenté ce cas dans l'annexe 2 où l'opération "contenu" est reprise plusieurs fois dans le même exemple de la décomposition du chiffre 23. Le contenu, sans les coefficients apparents, est beaucoup plus difficile à retrouver que dans le cas d'un cryptage par une clé secrète. Il convient de rappeler que le programme global est différent pour chaque copie, alors qu'un contenu protégé par une clé secrète possède un format standardisé d'une copie à l'autre. Dans le cas d'un programme protégé par une clé secrète, le contenu de la clé doit être retrouvé. Or, comme le lecteur qui est autorisé à lire le contenu possède cette clé par définition, il "suffit" de retrouver cette clé et de l'utiliser pour décrypter le contenu et le distribuer sous forme non cryptée. On notera que la compréhension d'un programme est habituellement difficile à réaliser car : - non seulement il faut connaître les manipulations effectuées au niveau du langage binaire (désassemblage), ce qui peut toujours être faisable, - mais il faut aussi comprendre ce que ces manipulations signifient. En général, le lien entre le langage assembleur (ou "langage décompilé") et sa signification est très difficile à retrouver. Ici, le programme en langage assembleur peut lui-même être "obfusqué", c'est-à-dire que la structure du programme est altérée pour rendre son désassemblage particulièrement difficile. Un exemple de complication est illustré en annexe 3 où il est posé initialement a =4 ; b=3 ; c=2 ; d = 1, toujours pour l'exemple de l'écriture de la donnée "contenu" = 23. Dans cet exemple, il est impossible pour un pirate (ou "hacker") de retrouver une donnée d'un contenu de grande taille dans un temps raisonnable. La tâche de désobfuscation quand elle est bien réalisée ne peut pas actuellement être automatisée pour tout programme, mais il faut avoir une clé de désobfuscation, en connaissance du programme initial. L'exemple de l'annexe 3 est trivialement compréhensible et simplement illustratif. Toutefois, il sera avantageux de compliquer ainsi tout ou partie des données du contenu et, en tout état de cause, les données d'identifiants des entités. ANNEXE 1 int index = a lot - 1 ; Big Number contenu ; large integer coeff[a lot], expos[a lot] ; while(index > -1) { contenu = contenu + (coeff [index] * (2^expos [index]) � index ; Index-- ; } 15 ANNEXE 2 Big Number contenu ; contenu = (2^4) � 4 ; contenu = contenu +(2^2) � 2 ; 20 contenu = contenu +(2^1) � 1 ; contenu = contenu +1 ; ANNEXE 3 25 Big Number contenu ; large integer a, b, c, d ; contenu = (2^ (b+d)) � (2*c) ; contenu = contenu + ((a-4) ^a � (b-d) ; 30 contenu = contenu -c * (d-d) ; contenu = contenu + (a-b) ; 10 REVENDICATIONS 1. Procédé de communication d'une première entité informatique à une deuxième entité informatique d'un fichier comportant un contenu destiné à être lu par un programme prédéterminé, lecteur dudit contenu, dans lequel, avant communication à la deuxième entité : - le contenu (20) et le programme lecteur du contenu (21) sont fusionnés dans un même programme global, que comporte ledit fichier, l'exécution dudit programme global menant à la lecture du contenu, - un identifiant de la deuxième entité (22) est enregistré en tant que donnée dudit programme global, et - une routine de vérification (23) dudit identifiant est ajoutée audit programme global, et dans lequel l'exécution du programme global par la deuxième entité comporte : - une exécution de la routine de vérification d'identifiant (50) pour contrôler l'identifiant de la deuxième entité, -et, en cas de contrôle positif de l'identifiant (51), une lecture (52) dudit contenu. 2. Procédé selon la revendication 1, dans lequel une routine de complication (25) de la structure dudit programme global est en outre appliquée, et la deuxième entité exécute ledit programme global sous forme compliquée. 3. Procédé selon la revendication 2, dans lequel, pour une communication du contenu de la deuxième entité (Dl) à une troisième entité (D2), la deuxième entité : - simplifie le programme global (41), - insère, en tant que donnée, un identifiant (43) de la troisième entité dans le programme global simplifié, et - complique (44) le programme global comportant l'identifiant de la troisième entité. 19 4. Procédé selon la revendication 3, dans lequel on prévoit une autorité de gestion distante (S) pour : - recevoir de la deuxième entité au moins l'identifiant de la deuxième entité et l'identifiant de la troisième entité (REQ(Id-1,Id-2)), et stocker en mémoire au moins l'identifiant de la troisième entité (Id-2), et - communiquer à la deuxième entité : o une première clé (DES(Id-l)) pour lancer, auprès de la deuxième entité, une routine de simplification du programme global et d'insertion de l'identifiant de la troisième entité dans le programme global, o et une deuxième clé (OBF(Id-2)) pour lancer ensuite, auprès de la deuxième entité, une routine de complication du programme global, avant communication du programme global sous forme compliquée (PG(Id-2)) à la troisième entité. 5. Procédé selon la revendication 2, dans lequel une complication/simplification de la structure du programme global est menée par obfuscation/désobfuscation. 6. Procédé selon la revendication 1, dans lequel le contenu est transféré une pluralité de fois entre une pluralité d'entités (Dl, D2), et un identifiant (Id-1, Id-2) de chaque entité de ladite pluralité d'entités est enregistré en tant que donnée dudit programme global. 7. Programme d'ordinateur comportant des instructions pour générer le programme global, pour la mise en oeuvre du procédé selon l'une des revendications 1 et 2, lorsque ce programme d'ordinateur est exécuté par un processeur. 8. Entité informatique (S), comportant des moyens pour exécuter le programme d'ordinateur selon la revendication 7, en vue de la génération dudit programme global. 9. Entité informatique, comportant des moyens pour mettre en oeuvre le procédé selon la revendication 4, en tant qu'autorité de gestion (S). 10. Programme d'ordinateur (PG(Id-1), PG(Id-2)), stocké en mémoire d'une entité informatique ou téléchargeable via un site distant pour être stocké au moins temporairement en mémoire de ladite entité informatique, formant le programme global pour la mise en oeuvre du procédé selon la revendication 1, lorsque ce programme est exécuté par un processeur de ladite entité informatique, et comportant des instructions pour : - mener un contrôle de vérification (50) de l'identifiant de ladite entité informatique, - et, en cas de contrôle positif de l'identifiant (51), lire ledit contenu (52). 11. Entité informatique (Dl, D2), comportant des moyens pour exécuter le programme d'ordinateur selon la revendication 10, en tant que deuxième entité informatique. 12. Entité informatique (Dl), comportant des moyens pour mettre en oeuvre le procédé selon la revendication 3, en tant que deuxième entité informatique (Dl).