Brevet FR2833787A1 — publié le 20030620

Domaine de l'invention La présente invention concerne un procédé et un dispositif pour fournir des champs de clefs de code à un module de cryptage/décryptage pour le cryptage en temps réel de données, notamment de données multimédia. Le cryptage de données audiovisuelles en première ligne pour protéger le contenu fourni par les serveurs en particulier pour éviter des copies non autorisées d'enregistrement DVD ou pour commander l'accès à un certain programme à un cercle limité d'abonnés payants dans le cas de la télévision payante, est une nécessité. Dans le cas des enregistrements DVD on utilise principalement deux procédés de cryptage : le procédé CSS (système de brouillage de contenu) sert à crypter les données sur le disque DVD ; l'autre procédé DTCP (protection du contenu de transmission numérique) utilise le cryptage du contenu du disque DVD lors de leur transmission par des systèmes de bus numériques. On utilise pour cela différents algorithmes cryptographiques par exemple des procédés de signature, des algorithmes de cryptage symétrique et asymétrique. Selon le procédé symétrique, la clef respective (secrète) ou le champ de clefs de code ou le procédé doit être connu à la fois du côté de l'émission et du côté de la réception pour générer en commun les clefs de code à partir des valeurs d'initialisation. Un problème que l'on rencontre alors est la nécessité de l'échange de ces clefs ce qui constitue un point faible potentiel pour de tels systèmes de cryptage symétrique. Pour augmenter la sécurité de ces systèmes et répondre aux conditions des nonnes modernes de distribution de données de multimédia, on peut renouveler les clefs de code dans certains intervalles. Ce changement de clefs de code doit alors être signalé. De plus, il faut soit une transmission sécurisée de la nouvelle clef ou (plus intéressant en pratique) le côté émission et le côté réception se sont entendus au préalable sur un algorithme qui génère une nouvelle clef (ou un nouveau champ de clefs de code) à partir de l'ancienne clef de code (ou ancien champ de clefs de code). Mais une difficulté dans ce cas est que la formation des nouveaux champs de clefs de code et le cryptage en temps réel des données audiovisuelles doivent se dérouler d'une manière totalement parallèle. La figure 3 montre un algorithme de cryptage habituel avec des clefs qui varient de manière cyclique comme par exemple dans le système DTCP. Les données exactes 1 sont appliquées à un circuit de cryptage 3 qui transmet les données cryptées 2 pour les décrypter à un circuit de décryptage 4 pour rétablir ainsi les données en texte clair 1. L'authentification et l'échange des clefs de code se font une fois au début de la transmission des données par la clef d'initialisation 5. A la fois le circuit de cryptage 3 et le circuit de décryptage 4 peuvent effectuer un nouveau calcul 7, de façon cyclique des clefs de code à la condition que du côté de l'émetteur on signale un changement des clefs de code dans le flux des données. Problèmes de l'invention La présente invention a pour but de développer un procédé pour générer des clefs de code pour le cryptage en temps réel de données, permettant d'éliminer les inconvénients et les points d'attaque des procédés actuels, décrits ci-dessus pour le calcul des clefs de code. Selon l'invention ce problème est résolu par un procédé du type défini ci-dessus, caractérisé par les étapes suivantes : - on fournit de manière alternée un champ de clefs de code respectif dans une première et une seconde zone d'un module de mémoire par un module de calcul de clefs de code, et - on accède de manière alternée au champ de clefs de code respectif dans la première et dans la seconde zone du module de mémoire par un module de cryptage ou de décryptage, en fournissant pendant l'accès au champ de clefs de code dans l'une des deux zones, le champ de clefs de code disponible dans l'autre des deux zones. L'idée de base de la présente invention consiste à séparer le cryptage proprement dit des données multimédia et le nouveau calcul des clefs de code dans différents modules. Grâce à cette séparation il est possible de faire en parallèle les deux travaux en les exécutant dans des unités de traitement distinctes. L'échange des champs de clefs de code entre le module responsable de la génération de ces champs de clefs de code et le module de cryptage proprement dit se fait par l'intermédiaire d'une zone de mémoire utilisée en commun. Dans la présente invention, le problème évoqué ci-dessus est résolu en particulier en ce qu'on effectue un cryptage des données multimédia et en parallèle à cette opération (et de façon totalement décou- plée) on modifie périodiquement les clefs de cryptage. Les champs de clefs de criptage générés à cet effet sont obtenus dans un module distinct. Si maintenant les deux unités de traitement qui effectuent le cryptage ou la génération du champ de clefs de cryptage, sont couplées par un moyen approprié ou un procédé approprié pour pouvoir échanger leurs données c'est-à-dire leurs clefs de code, alors l'une des unités de cryptage peut périodiquement et en temps réel commuter sur de nouvelles clefs générées par le module de calcul de clefs de code. Ce nouveau champ de clefs de code peut alors servir dans le module de cryptage à poursuivre le cryptage sans aide. Grâce au découplage de l'opération consistant à générer la clef de cryptage et le calcul de la clef de cryptage on a un cryptage sans interruption et ainsi un procédé appliqué en temps réel. Comme le calcul proprement dit des clefs se fait maintenant en parallèle à l'opération de cryptage, le calcul des clefs de code n'est pas critique dans le temps et cela permet d'utiliser les unités de traitement de moindre puissance. Ainsi le module de calcul de clefs de cryptage peut soit être supprimé, soit assurer des fonctions supplémentaires qu'il ne réalisait pas jusqu'alors. Le procédé pour générer des champs de clefs de code pour le cryptage de données se compose du calcul du champ de clefs de code dans un module de calcul de clefs de code, dans l'échange des champs de clefs de code entre le module de calcul de clefs de code et le module de cryptage par un module utilisé en commun et par le cryptage des données dans un module de cryptage. Selon un développement préférentiel, le calcul du champ de clefs de code et le cryptage des données s'effectuent en parallèle. Selon un autre développement préférentiel, le module utilisé en commun pour l'échange des champs de clefs de code est une zone de mémoire utilisée en commun. Avantageusement l'opération de cryptage se déroule sans interruption. Selon un autre développement, les données à crypter sont des données multimédia, en particulier des donnes vidéo et/ou des données audio. Selon un autre développement préférentiel, le procédé est exécuté essentiellement par des programmes et des circuits ou de façon mixte à l'aide de modules de programme et de circuits. On prévoit aussi que dans le module de cryptage ou de décryptage on effectue d'autres fonctions indépendantes du procédé de cryptage ou de décryptage. Selon un autre développement préférentiel, les données cryptées sont transmises par un système de bus électrique ou optique. L'invention concerne également un dispositif pour fournir des champs de clefs de code à une installation de cryptage ou de décryptage pour le cryptage en temps réel de données notamment de données multimédia comprenant : - une installation de calcul de clefs pour fournir de façon alternée un champ de clefs de code respectif à une première et une seconde zone d'une installation de mémoire, - une installation de cryptage et de décryptage pour accéder en alter- nance au champ crypté respectif dans la première et la seconde zone de l'installation de mémoire, - une installation de mémoire pour fournir le champ de clefs de code à l'une des zones pendant l'accès au champ crypté dans l'autre des deux zones. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'exemples de réalisation représentés dans les dessins annexés dans lesquels : - la figure 1 est un schéma de l'échange de données par l'intermédiaire d'un composant de mémoire à double port pour la description d'un premier exemple de réalisation de la présente invention, - la figure 2 est un schéma par blocs des modules participant au procédé pour décrire un mode de réalisation de la présente invention, - la figure 3 est un schéma par blocs d'un algorithme de cryptage habi- tuel avec des clefs de code variant de manière cyclique (par exemple un système DTCP. Description des modes de réalisation Dans les différentes figures on utilisera les mêmes références pour désigner des éléments identiques ou de même fonction. La figure 1 est un schéma d'un échange de données par un composant de mémoire à double port comme mode de réalisation de l'invention. Un échange de données tel que représenté à la figure 1 sera décrit à l'aide d'une succession chronologique d'états répétitifs (phases) d'un module d'échange de données 19. Ce module d'échange de données 19 doit être conçu pour que le module de calcul de clefs de code 13,21 puisse déposer d'un côté, peu à peu le nouveau champ de codes calculés 11 dans le module d'échange de données 19 et que l'algorithme de cryptage reste accessible de l'autre côté pour l'ancienne clef de code 10. Après que le module de calcul de clefs de code 13,21 ait calculé un nouveau champ de clefs de code 11, il le signale à une unité de cryptage 12,3. Cette unité de cryptage 12,3 est alors seule responsable pour la commutation sur le nouveau champ de code 11. En pratique cela peut se faire par exemple par la commutation des ensembles de mémoire 8,9 du composant de mémoire 19 à double port. Pendant la phase A de l'algorithme de cryptage il extrait ces codes du champ de code 10 enregistrés dans l'ensemble de mémoire 1,8 ; le module de calcul de clefs de code 13,21 enregistre les nouvelles clefs de code générées 11 dans le deuxième ensemble de mémoire 2,9. Après que le module de calcul de clefs de code 13,21 ait communiqué à l'algorithme de cryptage, le résultat du calcul du nouveau champ de clefs de code 11, l'algorithme de cryptage peut commencer à l'instant correct à commuter sur le deuxième ensemble de mémoire 2, 9 ; cela correspond au début d'une phase B. A partir de là, l'algorithme de cryptage extrait ces clefs de code du champ de clefs de code 10 enregistré dans le second ensemble de mémoire 2,9 ; le module de calcul de clefs de code inscrit le nouveau champ de clefs de code 11 dans le premier ensemble de mémoire 1, 8. Ensuite, on commute de nouveau sur le premier ensemble de mémoire 9. A ce moment la phase A recommence. Pendant que le module de cryptage 12,3 utilise le champ de clefs de code 10 enregistré dans un ensemble 8,9 du composant de mémoire à deux ports 19, le module de calcul de clefs de cryptage 13,21 est occupé par la formation du nouveau champ de clefs de cryptage 11 dans le second ensemble 8,9. Grâce à la mémoire 19 utilisée en commun, on peut commuter sur le nouveau champ de clefs de code 11 et le module de calcul de clefs de code 13,21 ainsi que le module de clefs de code 12,3 peuvent travailler en parallèle. La figure 2 montre un schéma par blocs des modules participant au procédé et leur relation selon un mode de réalisation préférentiel. Le procédé pour générer les champs de clefs de code selon la présente invention repose sur une répartition entre trois blocs fonctionnels. Par cette répartition en division, on peut arriver d'une part à une disponibilité du procédé en temps réel ; d'autre part, le calcul proprement dit (nouveau calcul) des clefs de code n'est pas critique dans le temps et peut ainsi être réalisé par exemple sous forme de programme dans un microprocesseur 21. Par une interface appropriée, le microprocesseur 21 reçoit du correspondant de communication, une clef de code d'initialisation 5. Partant de cette clef de code d'initialisation 5, on lance un algorithme de calcul de champ de clefs de code implémenté par des programmes dans le micro contrôleur 21. Cet algorithme de calcul des champs de clefs de code calcule un champ de clefs lia partir de la clef d'initialisation 5. Comme ce calcul est indépendant de l'opération de cryptage du fait de la partition des blocs, cette opération est non critique dans le temps dans certaines limites. Indépendamment du procédé de cryptage choisi et des temps qui en résultent entre un changement des clefs de code 10, 11 il faut que le calcul du nouveau champ de clefs 11 se termine simplement dans le temps compris entre deux changements de clefs de code. Les clefs de code 10, 11 calculées par programme par le module de calcul de clefs de code doivent alors être enregistrées dans le module 19 pour l'échange des données entre le module de calcul de clefs de code 13,21 et le module de calcul de clefs de code 12,3. Ce module d'échange de données 19 doit être conçu pour que le module de calcul de clefs de code 13,21 puisse enregistrer d'un côté, successivement, le nouveau champ de clefs de code 11 qui vient d'être calculé dans le module d'échange de données 19 et ainsi que l'algorithme de cryptage puisse de l'autre côté accéder aux anciennes clefs de code 10. Un type d'implémentation envisageable sous forme de programme est offert par un composant de mémoire à double port. Sous forme de programme, il faudrait une plage de mémoire utilisée en commun (mémoire partagée). Après que le module de calcul de clefs de code 13,21 ait calculé le nouveau champ de clefs de code 11, il signale cette situation au module de cryptage 12,3. Le module de cryptage 12,3 est ensuite seul responsable pour commuter sur le nouveau champ de clefs de code 11. Le flux de données dans le module de cryptage 3 dépend du flux de données d'entrée 16, d'une cadence d'entrée 14 et d'une cadence 18 pour l'algorithme de cryptage donnant le flux de données de sortie 17 et la cadence de sortie 15 correspondante. Le flux de données de sortie 17, crypté peut être transmis alors à un système de bus en particulier un bus de type électrique ou optique. Bien que la présente invention soit décrite à l'aide des exemples ci-dessus, elle n'est pas limitée à ceux-ci mais peut être modifiée de différentes manières. En particulier le procédé pour générer les champs de clefs de code servant à crypter des données en temps réel peut être réalisé totalement sous forme de programme par exemple déroulé sur un processeur d'usage général (par exemple un microprocesseur Pentium, marque déposée) ou être complètement exécuté dans un circuit ou comme dans le présent exemple de réalisation en partie dans un circuit et en partie par un programme. L'invention n'est pas non plus limitée aux applications indiquées ci-dessus. NOMENCLATURE 1. Données en texte clair 2. Données cryptées 3. Module de cryptage 4. Module de décryptage 5. Clef de code d'initialisation 6. Authentification et échange de clef de code (une fois au début de la transmission des données) 7. Nouveau calcul effectué de manière cyclique des clefs de code (le changement de clefs de code est signalé du côté de l'émetteur dans le flux de données) 8. Premier ensemble, banque 1-zone 9. Deuxième ensemble, banque 2 10. Champ de clefs de code ancien Il. Champ de clefs de code nouveau 12. Vers le module de cryptage 13. En provenance du module de calcul de clefs de code A Phase A B Phase B Il t Axe des temps t 14. Cadence d'entrée 15. Cadence de sortie 16. Données d'entrée 17. Données de sortie 18. Cadence pour l'algorithme de cryptage 19. Mémoire RAM à port double (module d'échange de clefs de cryptage) 20. Signaux d'accusé de réception 21. Génération des clefs de cryptage/calcul des clefs de cryptage. REVENDICATIONS 1 ) Procédé pour fournir des champs de clefs de code (10, 11) pour un module de cryptage ou de décryptage (3), pour le cryptage de données en temps réel notamment de données multimédia, caractérisé par les étapes suivantes : - on fournit de manière alternée un champ de clefs de code respectif (10, 11) dans une première et une seconde zone (8,9) d'un module de mé- moire (19) par un module de calcul de clefs de code (21), et - on accède de manière alternée au champ de clefs de code respectif (10, 11) dans la première et dans la seconde zone (8,9) du module de mé- moire (19) par un module de cryptage ou de décryptage (3), en fournis- sant pendant l'accès au champ de clefs de code (10, 11) dans l'une des deux zones (8,9), le champ de clefs de code (10, 11) disponible dans l'autre des deux zones (8,9). 2 ) Procédé selon la revendication 1, caractérisé en ce que le calcul du champ de clefs de code (10, 11) et celui du cryptage des données se fait en parallèle. 3 ) Procédé selon la revendication 1, caractérisé en ce que le module de mémoire (19) utilisé en commun est une zone de mémoire utilisée en commun, en particulier un composant de mémoire RAM à double port. 4 ) Procédé selon la revendication 1, caractérisé en ce que l'opération de cryptage se déroule sans interruption. 5 ) Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu' on crypte les données multimédia en particulier des données audio et/ou vidéo. 6 ) Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que dans le module de cryptage ou de décryptage (12,3) on effectue d'autres fonctions indépendantes du procédé de cryptage ou de décryptage. 7 ) Dispositif pour fournir des champs de clefs de code (10, 11) à une installation de cryptage ou de décryptage (9) pour le cryptage en temps réel de données notamment de données multimédia comprenant : - une installation de calcul de clefs (21) pour fournir de façon alternée un champ de clefs de code respectif (10, 11) à une première et une se- conde zone (8,9) d'une installation de mémoire (19), - une installation (3) de cryptage et de décryptage pour accéder en alter- nance au champ crypté respectif (10, 11) dans la première et la se- conde zone (8,9) de l'installation de mémoire (19), - une installation de mémoire (19) pour fournir le champ de clefs de code (10, 11) à l'une des zones (8,9) pendant l'accès au champ crypté (10, 11) dans l'autre des deux zones (8,9). 8 ) Dispositif selon la revendication 7, caractérisé en ce que l'installation de mémoire (19) est une zone de mémoire utilisée en commun en particulier un composant de mémoire RAM à double port. 9 ) Dispositif selon la revendication 7, caractérisé en ce que le dispositif évoqué ci-dessus crypte des données multimédia en particulier des données audio et/ou vidéo.