FR 3011654 A1 20150410 FR 1359732 A 20131008 3011654 PROCEDE ET DISPOSITIF D'AUTHENTIFICATION ET D'EXECUTION SECURISEE DE PROGRAMMES Domaine de l'invention L'invention concerne le domaine de la virtualisation et en particulier concerne l'authentification et l'exécution sécurisée de programmes. Etat de la Technique Un enjeu majeur pour les infrastructures utilisant l'informatique en nuage ou « Cloud Computing » selon l'anglicisme consacré, est la sécurité et la confidentialité des données. Le Cloud Computing offre un environnement de sauvegarde de données sur des serveurs distants, et est basé sur trois couches de services. La couche basse est la couche d'infrastructure en tant que service ou « Infrastructure-as-a-service » (laas) en anglais qui offre les éléments informatiques matériels comme les serveurs, les routeurs, les disques de stockage. La couche intermédiaire est la couche de plate- forme en tant que service ou « Platform-as-a-service » (Paas) en anglais, qui offre les environnements d'exploitation (systèmes d'exploitation et applications associées). La couche supérieure est la couche de logiciel en tant que service ou « Software-as-a-service » (Saas) en anglais, qui offre des applications hébergées à distance et constituant le nuage. Dans le cadre d'un service d'Iaas, le matériel informatique pour un client (entreprise ou particulier) utilisateur du service, est hébergé et géré par un fournisseur d'Iaas. Pour le partage les ressources informatiques entre les clients, le fournisseur d'Iaas a généralement recours à des techniques de virtualisation utilisant des machines virtuelles ou « Virtual 2 3011654 Machines » (VM) en anglais incluant des moniteurs ou hyperviseurs de VM. Le fournisseur d'Iass est alors responsable de la sécurité des machines virtuelles, de la sécurité et de l'intégrité des données contenues sur les machines. Les programmes doivent s'y exécuter de manière 5 sécurisée. Or, l'hyperviseur est une couche logicielle entre le matériel et le système d'exploitation qui quand il y a des attaques peut se comporter de manière malicieuse. Ainsi, l'exécution sécurisée de programmes est un besoin qui a donné lieu à de nombreuses approches. Certaines solutions sont décrites 10 ci-après. La demande de brevet U.S. 201 2/01 73866 Al de R. Ashok et al. intitulé « System for securing virtual machine disks on a remote shared storage subsystem » propose une solution logicielle de stockage et 15 d'exécution de VM chiffrées au sein du modèle de Cloud Computing où l'hyperviseur du cloud se charge de sélectionner une machine virtuelle à activer et d'établir une clé de déchiffrement. Dans le brevet U.S. 6,895 ,506 de L. Abu-Husein, intitulé « Secure 20 storage and execution of processor control programs by encryption and a program loader/decryption mechanism », une solution uniquement à base de logiciel est présentée pour l'exécution de programmes chiffrés. Des instructions du programme forment des blocs de programme chiffrés. Lors de son exécution, le programme est déchiffré et placé dans une mémoire 25 temporaire. A la fin de l'exécution, la mémoire est effacée. Un inconvénient de cette approche est que le programme placé en mémoire temporaire est stocké en clair et laisse alors la possibilité d'attaques par une couche logicielle bas niveau devenue malicieuse. L'article de A. Averbuch et al. « An efficient VM-based software protection » 121-128, 2011, présente un système qui permet l'exécution 3 3011654 de programmes chiffrés. Les programmes sont chiffrés et déchiffrés à l'aide d'un « framework » qui est aussi l'entité qui gère les accès en mémoire. L'inconvénient de cette approche est qu'elle est entièrement logicielle. 5 D'autres solutions basées sur de l'encryption homomorphique de circuits existent, mais présentant l'inconvénient d'introduire de la charge supplémentaire qui impacte considérablement les performances globale de l'infrastructure. 10 Ainsi, les solutions connues ne répondent pas au besoin d'une exécution sécurisée de programmes dans un environnement de machines virtuelles, et en particulier dans le contexte d'une infrastructure en tant que service du modèle de l'informatique en nuage. L'invention proposée 15 permet de répondre à ce besoin. Résumé de l'invention Un objet de la présente invention est de proposer un système et un 20 procédé pour chiffrer une machine virtuelle par chiffrement et déchiffrement à la volée de la mémoire. Avantageusement la solution de l'invention qui comprend des éléments matériels et logiciels ne nécessite pas que le processeur du 25 serveur qui exécute les chiffrements/déchiffrement soit modifié. Ainsi avantageusement, un seul composant, le module qui exécute le chiffrement/déchiffrement à la volée, a accès à la mémoire chiffrée. 30 Avantageusement, le code du programme exécuté n'est pas visible pour l'hyperviseur. 4 3011654 Le dispositif de l'invention permet de protéger des attaques par relocations ainsi que des attaques à clairs connus qui pourraient se produirent, en effet la probabilité que deux clairs identiques aient le même 5 chiffré étant négligeable grâce au format des blocs chiffrés. Un autre objet de la présente invention est de proposer un procédé permettant l'authentification et l'exécution sécurisées de programmes dans le contexte de la couche d'infrastructure en tant que service (laas) 10 du modèle de Cloud Computing. Le procédé permet de faire le lien entre la sécurité physique des serveurs du nuage informatique et la sécurité système. L'utilisateur a ainsi la garantie que son image mémoire, incluant les instructions et les données sur le nuage, est protégée contre toute corruption logicielle de la couche hypervision. 15 Selon l'invention, chaque programme chiffré va établir une clé de chiffrement/déchiffrement spécifique à chaque machine virtuelle, clé qui est chargée dans le module de chiffrement. 20 Toujours selon l'invention, l'hyperviseur exécute une interruption temporelle avant de restaurer le contexte d'une machine virtuelle. Pendant l'interruption, l'hyperviseur donne la main à une VM. Ainsi, avantageusement, le procédé selon l'invention permet d'effectuer des entrées/sorties sous interruption sans aucune modification du processeur 25 utilisé. L'invention s'applique dans un environnement d'informatique en nuage composé d'une pluralité de serveurs et de terminaux clients aptes à se connecter au nuage. L'un des serveurs comprend un processeur et 30 une mémoire principale permettant l'exécution d'un logiciel d'hypervision pour affecter des machines virtuelles aux terminaux clients. Le dispositif 5 3011654 comprend : - un module de génération d'image mémoire chiffrée pour générer, en réponse à une requête de connexion au nuage d'un terminal utilisateur, une image mémoire chiffrée d'une machine virtuelle assignée 5 au terminal client ; - un serveur de stockage pour stocker l'image mémoire chiffrée ; et - un module de sécurité couplé au serveur de stockage et audit l'un des serveurs, pour exécuter en réponse à des requêtes de 10 lecture/écriture de données reçues du processeur dudit l'un des serveurs, des opérations de chiffrement et déchiffrement à la volée du flot de données associé à la dite image mémoire chiffrée. Dans une implémentation particulière, le module de génération 15 d'image mémoire chiffrée comprend des moyens pour : - recevoir une requête de connexion au nuage d'un terminal client ; - établir une connexion bilatéralement authentifiée entre le terminal client et le nuage ; 20 - générer une clé de chiffrement privée pour assigner une image mémoire virtuelle au terminal client ; - télécharger sur le terminal client l'image mémoire virtuelle assignée ; - chiffrer l'image mémoire virtuelle assignée ; et 25 - télécharger l'image mémoire virtuelle assignée et chiffrée sur le nuage. Avantageusement, les moyens pour établir la connexion authentifiée entre le terminal client et le nuage comprennent des moyens 30 de type lecteur de carte à puce couplé au terminal client pour calculer une clé de chiffrement en fonction d'un code personnel stocké sur la carte à 6 3011654 puce et des moyens couplé à un serveur d'authentification du nuage pour opérer une authentification à réception du code personnel. Avantageusement, le code personnel est un secret à long terme de 5 128 bits. Toujours avantageusement, la clé de chiffrement privée générée pour une machine virtuelle est fonction du code personnel. Elle est avantageusement stockée sur le serveur d'authentification. 10 Dans un mode opératoire particulier, l'exécution d'une opération de chiffrement ou déchiffrement à la volée opérée en réponse à une requête de lecture d'un mot à une adresse claire de la mémoire de l'un des serveurs consiste à: 15 - recevoir du serveur d'authentification la clé de chiffrement privée ; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à lire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée ; 20 - extraire le mot à lire dans le bloc déchiffré ; et - envoyer le mot extrait au processeur dudit l'un des serveurs. Dans un autre mode opératoire particulier, l'exécution d'une opération de chiffrement ou déchiffrement à la volée opérée en réponse à 25 une requête d'écriture d'un mot à une adresse claire dans la mémoire dudit l'un des serveurs consiste à : - recevoir du serveur d'authentification la clé de chiffrement privée ; - récupérer dans l'image mémoire chiffrée un bloc de données 30 chiffré contenant l'adresse claire du mot à écrire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée; et 7 3011654 - écrire le mot à l'adresse claire dans le bloc déchiffré. Avantageusement, les opérations d'entrées/sorties sont réalisées sous interruption, et le dispositif comprend un module de gestion des 5 interruptions. L'invention a aussi pour objet une méthode opérée dans un environnement d'informatique en nuage composé d'une pluralité de serveurs et de terminaux clients aptes à se connecter au nuage. L'un des serveurs com- 10 prend un processeur et une mémoire principale permettant l'exécution d'un logiciel d'hypervision pour affecter des machines virtuelles aux terminaux clients, et la méthode comprend les étapes de : - en réponse à une requête de connexion au nuage d'un terminal client, générer une image mémoire chiffrée d'une machine virtuelle assi- 15 gnée au terminal client; - stocker sur un serveur de stockage l'image mémoire chiffrée ; et - en réponse à des requêtes de lecture/écriture de données reçues du processeur dudit l'un des serveurs, exécuter des opérations de chiffrement et déchiffrement à la volée du flot de données associé à la dite 20 image mémoire chiffrée. Avantageusement, l'étape de génération d'une image mémoire chiffrée comprend de plus les étapes : - recevoir une requête de connexion au nuage d'un terminal client ; 25 - établir une connexion bilatéralement authentifiée entre le terminal client et le nuage ; - générer une clé de chiffrement privée pour assigner une image mémoire virtuelle au terminal client ; - télécharger sur le terminal client l'image mémoire virtuelle assi30 gnée; - chiffrer l'image mémoire virtuelle assignée ; et 8 3011654 - télécharger l'image mémoire virtuelle assignée et chiffrée sur le nuage. Dans un mode opératoire particulier, l'étape pour établir la con- 5 nexion authentifiée entre le terminal client et le nuage comprend une étape de calcul d'une clé de chiffrement en fonction d'un code personnel stocké sur une carte à puce lue par des moyens de type lecteur de carte à puce couplé au terminal client et une étape d' authentification du code personnel à réception du code par le serveur d'authentification. 10 Dans un autre mode particulier, l'exécution d'une opération de chiffrement ou déchiffrement à la volée est opérée en réponse à une requête de lecture d'un mot à une adresse claire de la mémoire dudit l'un des serveurs et comprend les étapes de : 15 - recevoir du serveur d'authentification une clé de chiffrement privée; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à lire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée ; - extraire le mot à lire dans le bloc déchiffré ; et 20 - envoyer le mot extrait au processeur dudit l'un des serveurs. Dans une variante opératoire, l'exécution d'une opération de chiffrement ou déchiffrement à la volée est opérée en réponse à une requête d'écriture d'un mot à une adresse claire dans la mémoire dudit l'un des 25 serveurs et comprend les étapes de : - recevoir du serveur d'authentification une clé de chiffrement privée; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à écrire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée; et 30 - écrire le mot à l'adresse claire dans le bloc déchiffré. 9 3011654 L'invention peut opérer sous la forme d'un produit programme d'ordinateur qui comprend des instructions de code permettant d'effectuer les étapes du procédé revendiqué lorsque le programme est exécuté sur un ordinateur. 5 Description des figures Différents aspects et avantages de l'invention vont apparaitre en appui de la description d'un mode préféré d'implémentation de l'invention 10 mais non limitatif, avec référence aux figures ci-dessous où : La figure 1 illustre schématiquement un environnement de nuage informatique dans lequel implémenter avantageusement l'invention ; La figure 2 est un schéma des composants du dispositif de la présente 15 invention ; La figure 3 montre la procédure exécutée pour le chiffrement d'une image mémoire lors de la création d'une machine virtuelle ; La figure 4 montre la procédure exécutée lors d'un changement de machine virtuelle dans le processeur selon le principe de l'invention ; 20 La figure 5 montre la procédure exécutée lors d'un changement de machine virtuelle lors d'une interruption au niveau de l'hyperviseur selon le principe de l'invention ; La figure 6 montre la procédure exécutée lors du traitement d'une interruption utilisateur selon le principe de l'invention. 25 Description détaillée de l'invention La figure 1 illustre schématiquement un environnement de nuage 30 informatique 100 dans lequel implémenter avantageusement l'invention. Il 10 3011654 doit être compris que l'environnement montré est illustratif d'un exemple d'une infrastructure en tant que service dans un modèle de nuage informatique propre à permettre la compréhension de l'invention, mais que tous les éléments d'un tel environnement ne sont pas 5 nécessairement illustrés. A la lecture de la description, il deviendra apparent à l'homme du métier que des variantes peuvent être apportées à l'implémentation décrite. La figue 1 montre l'infrastructure en tant que service (laas) d'un nuage informatique 102 par lequel un utilisateur ou souscripteur peut 10 accéder à des services et applications. L'utilisateur se connecte au nuage via un terminal 104 communément appelé hôte ou terminal client et équipé d'un dispositif 106 permettant de réaliser des opérations cryptographiques de façon sécurisée. Un tel dispositif peut par exemple être une carte à puce. 15 L'accès du client au nuage informatique peut passer par un réseau non sécurisé 108 tel le réseau public internet. L'utilisateur s'authentifie par la carte à puce par un mécanisme de mot de passe comme une identification par numéro d'identifiant personnel ou code PIN par exemple. La carte à puce est utilisée pour réaliser des 20 opérations où la notion de sécurité est primordiale telle que le stockage d'un secret à long terme (LTS pour Long Term Secret en anglais) qui est unique pour chaque carte à puce ou pour réaliser des opérations algorithmiques telles que de l'authentification par challenge/réponse et de l'établissement de clés. De plus, la carte à puce peut embarquer un 25 générateur de nombres pseudo-aléatoire. Une telle carte à puce peut être fournie et maintenue par l'opérateur de l'informatique en nuage. Le nuage 102 comprend un ou plusieurs routeurs 110 tels que des relais ou passerelles, un ou plusieurs serveurs d'authentification 112, noté 'AuS' pour 'Authentification Server', et un ensemble de machines ou 30 serveurs VM 114 permettant d'opérer des machines virtuelles. Chaque serveur peut être équipé d'un processeur simple ou multi-coeur. Chaque 11 3011654 coeur de processeur est associé, au moins fonctionnellement, à un module de sécurité 116, noté 'HSM' pour 'Hardware Security Module'. Le routeur 110 propose une interface entre le nuage informatique 102 et le réseau externe non sécurisé 108 auquel le client se connecte 5 pour accéder au nuage. Le serveur d'authentification 112 (AuS) est une base de données critique en termes de sécurité qui contient entre autre les secrets à long terme (LTS) associés à chaque client. Le serveur d'authentification fournit aussi toute l'algorithmique permettant d'établir des clés d'authentification 10 pour les procédures de challenge/réponse. Les serveurs VM 114 sont les machines sur lesquelles vont s'exécuter les machines virtuelles associées aux utilisateurs. Chaque serveur VM (114) exécute un logiciel d'hypervision ou hyperviseur pour partager efficacement les ressources entre les différentes machines 15 virtuelles (VM). Chaque serveur VM est couplé à un module de sécurité 116 dont le contenu et les fonctions ne sont pas accessibles physiquement par le processeur. Le module de sécurité HSM agit comme un proxy et est responsable des déchiffrements/chiffrements à la volée des données et 20 des instructions qui entrent et sortent du processeur. Le module HSM a une relation privilégiée avec le serveur d'authentification 112, comme étant le seul composant d'un serveur ayant les droits pour envoyer des requêtes au serveur d'authentification. Deux réseaux indépendants (118, 120) opèrent au sein du nuage 25 informatique. Un premier réseau utilisateur 118 permet une interconnexion entre une interface réseau utilisateur d'un serveur (110) et l'ensemble de l'infrastructure du nuage. Un second réseau de contrôle 120 permet l'interconnexion des modules HSM avec le serveur d'authentification via une interface de réseau contrôlée dédiée. 30 La figure 2 montre schématiquement les composants du dispositif 12 301 16 54 de la présente invention. Il est à noter que les composants décrits en relation à la figure 1 sont désignés par les mêmes références. Un module de sécurité 116 est couplé d'une part au processeur 206 d'un serveur VM et d'autre part à la mémoire principale 204 du 5 serveur VM. Le module de sécurité est en communication avec le serveur d'authentification 112 pour envoyer des requêtes via le réseau de contrôle 120. Dans une implémentation préférentielle, le processeur utilisé est un processeur de type 'RISC' (Reduced Instruction Set Computer en 10 anglais), et plus particulièrement un processeur de 32 bits de type `PMIPS32' (Microprocessor without Interlocked Pipeline Stages en anglais). Les bus de communication sont de 32-bits, et la mémoire principale opère sur une plage allant de 0 à Oxffffffff. Le module de sécurité HSM est une mémoire de type MMC (Memory Model Component 15 en anglais). La figure 3 montre les procédures exécutées pour le chiffrement d'une image mémoire lors de la création d'une machine virtuelle pour un terminal client. L'empreinte mémoire de la VM est définie statiquement 20 lors sa création. Selon le procédé de l'invention, la création d'une VM chiffrée pour un client se fait selon les étapes suivantes : 302: Établissement d'une connexion bilatéralement authentifiée et privée entre le client et le nuage ; 25 304: Téléchargement sur le poste client d'une image mémoire virtuelle vide à partir du nuage ; 306 : Chiffrement de l'image mémoire virtuelle sur le poste client ; et 308 : Téléchargement de l'image mémoire virtuelle chiffrée dans le nuage sur la machine virtuelle associée au client. 30 13 3011654 Dans une variante, le chiffrement de l'image mémoire virtuelle peut se faire au niveau du nuage sur le serveur d'authentification. Il est à noter que la clé de chiffrement d'une machine virtuelle est propre à chaque machine virtuelle. 5 Quand une machine virtuelle a été créée, l'utilisation de celle-ci se fait selon les étapes suivantes : - Établissement d'une connexion bilatéralement authentifiée et privée avec le nuage ; 10 - Sélection et connexion à la machine virtuelle existante pour obtenir la clé de chiffrement ; et - Interaction avec la machine virtuelle sélectionnée. L'étape d'établissement de la connexion authentifiée au nuage est 15 optionnelle si la connexion a déjà été établie lors d'une opération précédente. L'étape d'authentification bilatérale a pour but de fournir aux deux parties, le client et le nuage, la garantie qu'ils communiquent avec la bonne entité. Elle fournit aussi une clé de session pour créer un tunnel de communication privé (VPN) utilisant des algorithmes symétriques. 20 Dans une implémentation préférentielle, la connexion au nuage se fait avec une carte à puce qui contient un code personnel pour le demandeur de préférence une clé secrète à long terme (LTS) de 128 bits. Cette clé unique à chaque client est seulement connue par le nuage via le 25 serveur d'authentification (AuS) et est utilisée lors de l'établissement des clés de chiffrement et de déchiffrement. Dans un mode préféré, l'étape d'authentification 302 est réalisée par un échange selon le principe du challenge/réponse qui se déroule 30 selon les étapes connues suivantes : 14 3011654 - Le nuage et le client s'envoient un challenge de 128 bits d'aléas : RANDcloup pour le nuage, RANDclienT pour le client ; - Le nuage et le client calculent la réponse: REScioup=furs(RANDclienT) pour le nuage, REScHent-r=furs(RANDcD) pour le 5 client ; - Le nuage et le client s'envoient leur réponse : REScioup, REScHenT ; et - Le nuage et le client effectuent respectivement un même calcul et vérifient si la valeur reçue est bien celle calculée, garantissant ainsi 10 l'authentification. Avantageusement, l'étape 306 de chiffrement de l'image mémoire de la VM se fait durant la souscription du client au nuage. Lors de la connexion au nuage, un jeton Tvm est généré à partir des deux aléas de 15 128 bits qui ont été générés pour le challenge. Ce jeton de valeur Tvm= RANDwORANDu est unique et associé uniquement à la machine virtuelle assignée à l'utilisateur. Avantageusement, le jeton Tvm n'a pas besoin d'être secret car la 20 clé de chiffrement Kvm utilisée pour la mémoire virtuelle est calculée en fonction du secret et du jeton de la façon suivante : Kvm=f LTS(TVM) - 25 Chaque fois que cela est nécessaire, la clé peut être recalculée. Pour illustrer sur un exemple d'une implémentation préférentielle, les données de l'image mémoire de la machine virtuelle associée à une plateforme d'exécution d'une machine de 32 bits, sont chiffrées de la 30 façon suivante : 15 3011654 Soit wo, w1, w2N-1, la séquence de 21\1232 mots de 32 bits constituant l'image mémoire de la VM. Les 64 bits des couples (w2i, w2i+1)(i=0...N-1) sont remplacés par un bloc de 128 bits 'Bi' calculé comme suit : 5 13;=AESkvm(w2i I 1w2i-o110x000011R16112i) où II est l'opérateur de concaténation et R16 est un nombre aléatoire de 16 bits. Le couple (w2illw2i-o) représente la charge utile de données ou 10 d'instructions du bloc de 128 bits. Les 64 bits restants fournissent les propriétés de sécurité adéquates. Ainsi, la probabilité pour qu'une tierce personne forge un bloc valide sans connaitre Kvm est au mieux de 2-48 puisque déchiffrer un bloc Bi' revient à retrouver 128 bits d'aléa qui possèdent 16 bits de zéro et 32 15 bits de décalage correspondant au format du bloc en clair. Toujours avantageusement, la présence d'un nombre aléatoire R16 empêche qu'une même charge utile claire successivement à la même position ait deux blocs chiffrés de 128 bits identiques. Par ailleurs, le champ 2i représente l'adresse du bloc relativement 20 par rapport au début de l'image mémoire de la VM. Ceci garantit que deux blocs identiques en charge utile, n'ont pas le même chiffré même si les 16 bits d'aléa sont identiques. Ainsi un algorithme de chiffrement connu comme l' « Advanced Encryption Standard » (AES) en anglais, peut être utilisé en mode « Electronic Code Book » (ECB) en anglais, afin de 25 pouvoir accéder à la mémoire de façon aléatoire. Cependant, d'autres algorithmes de chiffrement peuvent être utilisés, comme l'algorithme CAST-128 par exemple. Un avantage supplémentaire de la présence du champ 2i est d'assurer qu'un bloc chiffré valide appartenant à une VM ne puisse pas 30 être déplacé au sein de l'image mémoire de la même VM. Ainsi, les attaques par relocalisations sont évitées puisque le champ 2i obtenu 16 3011654 après le déchiffrement du bloc ne correspondra plus à l'adresse relative à laquelle le bloc chiffré à été réécrit. En termes d'efficacité, l'empreinte mémoire de la VM est augmentée d'un facteur 2. Dans une variante opératoire, seule la partie initialisée de l'image 5 mémoire de la VM peut être envoyée au client pour être chiffrée afin d'éviter de gros transferts de données entre le nuage et le client. La partie non initialisée de l'image mémoire de la VM est alors constituée de blocs de 128 bits prédéfinis, par exemple fdfd...fd. 10 La figure 4 illustre les étapes opérées lors du basculement d'une machine virtuelle dans le processeur. Comme décrit précédemment, l'exécution d'une machine virtuelle chiffrée est rendue possible grâce à l'ajout du module HSM de chiffrement/déchiffrement qui opère entre le processeur et la mémoire externe. 15 Lorsqu'une VM doit être lancée et exécutée par le processeur, l'hyperviseur commence à l'étape 402 par configurer le module HSM en lui fournissant le jeton Tvm de la VM. Ce jeton est présent comme préambule dans le programme qui représente l'image mémoire virtuelle chiffrée. 20 L'étape suivante 404 consiste pour le module HSM à récupérer la clé Kvm de chiffrement/déchiffrement. Soit, elle est disponible dans une mémoire cache du module HSM, soit le jeton Tvm est envoyé au serveur d'authentification AuS pour en retour recevoir la clé de chiffrement/déchiffrement Kvm qui y est stockée. 25 A réception de la clé, le module HSM peut activer (406) le chiffrement/déchiffrement à la volée pour le flot d'instructions et de données provenant de la VM. Ainsi, le processeur et donc l'hyperviseur ne peuvent envoyer que deux types de requêtes de configuration au module HSM : 17 3011654 - des requêtes de passage en mode chiffré : « cipher_mode(basevm, Tvm) » pour réaliser des échanges chiffrés avec la mémoire avec la clé Kvm=f LTS(TVM) ; - des requêtes de passage en mode clair : « clear_mode » pour 5 réaliser des échanges clairs avec la mémoire, échanges particulièrement réservés pour du code système. Tel qu'il est détaillé plus bas, lors de l'exécution d'une requête, le contexte qui est stocké en zone chiffrée va être restauré (étape 408) avant de permettre la reprise de l'exécution du code applicatif de la tâche 10 qui a été interrompue (étape 410). Sur l'exemple pris précédemment pour des mots de 32 bits, si le processeur doit faire une opération de lecture à l'adresse claire `ptr d'un mot de données ou d'instructions lors d'une requête de type chiffré, le module HSM récupère les 128 bits du bloc chiffré correspondant, à 15 l'adresse physique suivante dans la VM: basevm+(ptr&Oxfffffffe)«1 où basevm est l'adresse physique du début de la VM. Puis le module HSM déchiffre avec la clé Kvm le bloc de 128 bits 20 chiffré. C'est l'opération de déchiffrement à la volée. Il récupère les 128 bits de clair et vérifie l'intégrité des données. Il est à noter que le cinquième mot de 16 bits doit être nul et le quatrième mot de 32 bits doit être égal à ptr&Oxffiffffe. Le HSM envoie au processeur soit le premier mot si l'adresse clair 25 est paire ou le deuxième mot si l'adresse clair est impaire. De façon similaire, si le processeur doit écrire en mémoire un mot de 32 bits à l'adresse clair `ptr', le module HSM récupère les 128 bits du bloc chiffré correspondant à l'adresse physique suivante : 30 basevm+(ptr&Oxfffffffe)«1 où basevm est l'adresse physique du début de la VM. 18 3011654 Le module HSM déchiffre le bloc chiffré avec la clé Kvm, puis vérifie l'intégrité des données. Il remplace ensuite le premier mot si l'adresse clair est paire ou le deuxième mot si l'adresse clair est impaire avec le mot de 32 bits à écrire. 5 Puis le module HSM chiffre le nouveau clair de 128 bits, c'est l'opération de chiffrement à la volée. Le bloc chiffré est envoyé à la mémoire VM pour être écrit à l'adresse indiquée plus haut. Ainsi, le module HSM de chiffrement/déchiffrement permet un chiffrement ou un déchiffrement à la volée d'un flot de données ou 10 d'instructions relative à une machine virtuelle qui est sollicitée. La figure 5 montre les procédures exécutées lors du changement d'une machine virtuelle hors du processeur, déclenché par une interruption au niveau de l'hyperviseur. 15 Avant que l'hyperviseur ne reprenne la main, un handler d'interruptions stocké dans de la ROM est exécuté pour partiellement réinitialiser le processeur. Dans une première étape (502) le contexte d'exécution de la machine virtuelle est sauvegardé à une adresse relative dans l'espace 20 mémoire chiffré de la VM. Puis à l'étape suivante (504), les registres utilisés par cette VM sont remis à zéro et le cache du processeur est vidé (506). L'étape suivante (508) consiste à désactiver le chiffrement/déchiffrement à la volée pour passer le module HSM en mode 25 clair, et éviter que l'hyperviseur n'ait accès à des données non chiffrées de la VM. Ensuite, l'hyperviseur peut rependre la main pour exécuter le code en cours (étape 510). 30 La figure 6 illustre les opérations exécutées lors du traitement d'une interruption utilisateur. C'est par exemple le cas où pendant 19 3011654 l'exécution d'une image mémoire chiffrée, le programme demande une intervention de la machine client, correspondant par exemple à une entrée sur le clavier ou un affichage sur une console, alors qu'une interruption est déjà effective. 5 D'une manière générale, les chiffrements et les déchiffrements de la mémoire sont réalisés du côté client, ainsi la clé Kvm est calculée à partir du jeton Tvm à l'aide de la carte à puce. Le client maintient une image mémoire locale du buffer d'entrées/sorties. L'image mémoire locale est déchiffrée/chiffrée à la volée sur la machine client quand l'utilisateur 10 entre ou sort du nuage. Ainsi, les entrées/sorties sont toutes réalisées sous interruption, c'est-à-dire qu'une partie de la mémoire ROM contient des données en clair qui fournissent un mécanisme de gestion des interruptions. L'interruption se déroule selon les étapes suivantes : 15 602 : les registres qui définissent les paramètres de l'interruption (type de l'interruption, adresse de l'écriture ou de la lecture) sont chargés dans le programme chiffré. 604: le contexte (registres, compteur) est sauvegardé dans l'image mémoire chiffrée ; 20 606 : l'ensemble des registres est mis à zéro excepté les registres utilisés par l'interruption ; 608 : le cache du processeur est vidé ; 610 : le module HSM est basculé en mode clair ; 612 : l'hyperviseur procède aux entrées/sorties et envoie/reçoit les 25 données au/du client. Les entrées/sorties s'effectuent plus précisément de la manière suivante : Le client reçoit le type de l'interruption (lecture ou écriture) ainsi 30 que l'adresse claire au sein de l'image mémoire chiffrée et le bloc chiffré. 20 301 16 54 Le client déchiffre le bloc de 128 bits reçu avec la clé Kvm et teste son intégrité. Si le test d'intégrité échoue, le client renvoit un signal d'erreur. Si le test d'intégrité réussit, le client agit en fonction du type de l'interruption : 5 - si l'interruption correspond à un affichage, le client affiche le premier mot si l'adresse claire est paire ou le deuxième mot si l'adresse claire est impaire ; - si l'interruption correspond à une écriture, le client modifie dans le bloc de 128 bits clair, le premier mot de 32 bits si l'adresse claire 10 est paire ou modifie le deuxième mot de 32 bits si l'adresse claire est impaire. Puis le client chiffre le nouveau bloc modifié de 128 bits avec la clé Kvm et envoie les 128 bits chiffrés au nuage. Après la fin de l'interruption, le système retourne en mode nominal. 15 Ainsi, le procédé selon l'invention permet les changements et la sauvegarde de contextes lors de tâche, le passage d'un mode chiffré en mode clair, et inversement, les entrées/sorties sous interruption. 20 L'homme de l'art appréciera que des variations peuvent être apportées sur la méthode telle que décrite de manière préférentielle, tout en maintenant les principes de l'invention. La présente invention peut s'implémenter à partir d'éléments matériel et/ou logiciel. Elle peut être disponible en tant que produit programme d'ordinateur sur un support 25 lisible par ordinateur. Le support peut être électronique, magnétique, optique, électromagnétique ou être un support de diffusion de type infrarouge. De tels supports sont par exemple, des mémoires à semiconducteur (Random Access Memory RAM, Read-Only Memory ROM), des bandes, des disquettes ou disques magnétiques ou optiques 30 (Compact Disk - Read Only Memory (CD-ROM), Compact Disk - Read/VVrite (CD-R/VV) and DVD). 21 REVENDICATIONS1. Dans un environnement d'informatique en nuage composé d'une pluralité de serveurs et de terminaux clients aptes à se connecter au nuage, l'un des serveurs comprenant un processeur et une mémoire principale permettant l'exécution d'un logiciel d'hypervision pour affecter des machines virtuelles aux terminaux clients, un dispositif comprenant : - un module de génération d'image mémoire chiffrée pour générer, en réponse à une requête de connexion au nuage d'un terminal client, une image mémoire chiffrée d'une machine virtuelle assignée au terminal client ; - un serveur de stockage pour stocker l'image mémoire chiffrée ; et - un module de sécurité couplé au serveur de stockage et audit l'un des serveurs, pour exécuter en réponse à des requêtes de lecture/écriture de données reçues du processeur dudit l'un des serveurs, des opérations de chiffrement et déchiffrement à la volée du flot de données associé à la dite image mémoire chiffrée. 2. Le dispositif selon la revendication 1 dans lequel le module de génération d'image mémoire chiffrée comprend des moyens pour : - recevoir une requête de connexion au nuage d'un terminal client ; - établir une connexion bilatéralement authentifiée entre le terminal client et le nuage ; - générer une clé de chiffrement privée pour assigner une image mémoire virtuelle au terminal client ; - télécharger sur le terminal client l'image mémoire virtuelle assignée ; 22 3011654 5 3. 10 4. 15 5. 206. 7. 25 30 - chiffrer l'image mémoire virtuelle assignée ; et - télécharger l'image mémoire virtuelle assignée et chiffrée sur le nuage. Le dispositif selon la revendication 2 dans lequel les moyens pour établir la connexion authentifiée entre le terminal client et le nuage comprennent des moyens de type lecteur de carte à puce couplé au terminal client pour calculer une clé de chiffrement en fonction d'un code personnel stocké sur la carte à puce et des moyens couplé à un serveur d'authentification du nuage pour opérer une authentification à réception du code personnel. Le dispositif selon la revendication 3 dans lequel le code personnel est un secret à long terme de 128 bits. Le dispositif selon l'une quelconque des revendications 1 à 4 dans lequel la clé de chiffrement privée générée pour une machine virtuelle est fonction du code personnel. Le dispositif selon l'une quelconque des revendications 2 à 5 dans lequel la clé de chiffrement privée est stockée sur le serveur d'authentification. Le dispositif selon la revendication 6 dans lequel l'exécution d'une opération de chiffrement ou déchiffrement à la volée opérée en réponse à une requête de lecture d'un mot à une adresse claire de la mémoire dudit l'un des serveurs consiste à : - recevoir du serveur d'authentification la clé de chiffrement privée ; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à lire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée ; 23 3011654 - extraire le mot à lire dans le bloc déchiffré ; et - envoyer le mot extrait au processeur dudit l'un des serveurs. 8. Le dispositif selon la revendication 6 dans lequel l'exécution d'une 5 opération de chiffrement ou déchiffrement à la volée opérée en réponse à une requête d'écriture d'un mot à une adresse claire dans la mémoire dudit l'un des serveurs consiste à: - recevoir du serveur d'authentification la clé de chiffrement privée ; 10 - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à écrire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée; et - écrire le mot à l'adresse claire dans le bloc déchiffré. 15 9. Le dispositif selon l'une quelconque des revendications 1 à 8 comprenant de plus un module de gestion des interruptions. 10. Dans un environnement d'informatique en nuage composé d'une pluralité de serveurs et de terminaux clients aptes à se connecter 20 au nuage, l'un des serveurs comprenant un processeur et une mémoire principale permettant l'exécution d'un logiciel d'hypervision pour affecter des machines virtuelles aux terminaux clients, une méthode comprenant les étapes de : 25 - en réponse à une requête de connexion au nuage d'un terminal client, générer une image mémoire chiffrée d'une machine virtuelle assignée au terminal client; - stocker sur un serveur de stockage l'image mémoire chiffrée ; et 30 - en réponse à des requêtes de lecture/écriture de données reçues du processeur dudit l'un des serveurs, exécuter des opérations de chiffrement et déchiffrement à la volée du flot de 24 3011654 données associé à la dite image mémoire chiffrée. 11. La méthode selon la revendication 10 dans laquelle l'étape de génération d'une image mémoire chiffrée comprend de plus les 5 étapes : - recevoir une requête de connexion au nuage d'un terminal client ; - établir une connexion bilatéralement authentifiée entre le terminal client et le nuage ; 10 - générer une clé de chiffrement privée pour assigner une image mémoire virtuelle au terminal client ; - télécharger sur le terminal client l'image mémoire virtuelle assignée ; - chiffrer l'image mémoire virtuelle assignée ; et 15 - télécharger l'image mémoire virtuelle assignée et chiffrée sur le nuage. 12. La méthode selon la revendication 11 dans laquelle l'étape pour établir la connexion authentifiée entre le terminal client et le nuage 20 comprend une étape de calcul d'une clé de chiffrement en fonction d'un code personnel stocké sur une carte à puce lue par des moyens de type lecteur de carte à puce couplé au terminal client et une étape d' authentification du code personnel à réception du code par le serveur d'authentification. 25 13. La méthode selon la revendication 10 dans laquelle l'exécution d'une opération de chiffrement ou déchiffrement à la volée est opérée en réponse à une requête de lecture d'un mot à une 30 adresse claire de la mémoire dudit l'un des serveurs et comprend les étapes de : 25 3011654 - recevoir du serveur d'authentification une clé de chiffrement privée ; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à lire ; 5 - déchiffrer le bloc chiffré avec la clé de chiffrement privée ; - extraire le mot à lire dans le bloc déchiffré ; et - envoyer le mot extrait au processeur dudit l'un des serveurs. 14.La méthode selon la revendication 10 dans laquelle l'exécution 10 d'une opération de chiffrement ou déchiffrement à la volée est opérée en réponse à une requête d'écriture d'un mot à une adresse claire dans la mémoire dudit l'un des serveurs et comprend les étapes de : - recevoir du serveur d'authentification une clé de chiffrement 15 privée ; - récupérer dans l'image mémoire chiffrée un bloc de données chiffré contenant l'adresse claire du mot à écrire ; - déchiffrer le bloc chiffré avec la clé de chiffrement privée; et - écrire le mot à l'adresse claire dans le bloc déchiffré. 20 15. Un produit programme d'ordinateur, ledit programme d'ordinateur comprenant des instructions de code permettant d'effectuer les étapes de la méthode selon l'une quelconque des revendications 10 à 14, lorsque ledit programme est exécuté sur un ordinateur. 25