PROCEDE ET SYSTEME DE SAUVEGARDE REPARTIE DYNAMIQUE METHOD AND SYSTEM FOR DYNAMICALLY DISTRIBUTED BACKUP
DOMAINE DE L'INVENTION FIELD OF THE INVENTION
La présente invention concerne le domaine informatique, et plus particulièrement un système et un procédé de stockage d'une donnée associée à un utilisateur dans un réseau informatique comprenant une pluralité de serveurs de stockage. En d'autres termes, il s'agit d'un stockage ou d'une sauvegarde distribuée ou répartie de données sur un réseau. The present invention relates to the computer field, and more particularly to a system and method for storing data associated with a user in a computer network comprising a plurality of storage servers. In other words, it is distributed or distributed storage or backup of data over a network.
CONTEXTE DE L'INVENTION BACKGROUND OF THE INVENTION
L'idée d'utiliser un réseau informatique étendu, tel l'Internet, pour sécuriser le stockage de données n'est pas nouvelle. Dans l'article journalistique « Utiliser Internet comme système de stockage réparti » (http://www.lemondeinformatique.fr/ actualites/lire-utiliser-internet-comme-systeme-de-stockage-reparti-22932.html), il était déjà indiqué que l'idée, aussi simple qu'ambitieuse d'une certaine société, consiste à découper en tranches un volume de données à archiver et de répartir leur stockage sur l'ensemble des ressources disponibles sur Internet. Cette approche, baptisée DSG (pour « dispersed storage grid ») repose sur un algorithme mis au point au MIT à la fin des années 70. Il permet de découper les données en tranche, et confère à chacune d'entre elle la possibilité de régénérer des segments perdus. La fiabilité du système lui conférerait une disponibilité record : moins d'une heure d'indisponibilité sur un million d'années. The idea of using a large computer network, such as the Internet, to secure data storage is not new. In the journalistic article "Using the Internet as a distributed storage system" (http://www.lemondeinformatique.fr/ actualites / lire-utilization-internet-comme-système-de-storage-reparti-22932.html), it was already indicated that the idea, as simple as it is ambitious of a certain society, is to slice a volume of data to be archived and to distribute their storage on all the resources available on the Internet. This approach, dubbed DSG (for "dispersed storage grid") is based on an algorithm developed at MIT in the late 70s. It allows to split the data slice, and gives each of them the ability to regenerate lost segments. The reliability of the system would give it record availability: less than an hour of unavailability over a million years.
Aujourd'hui, le stockage ou la sauvegarde de données sur le nuage (ou Today, the storage or backup of data on the cloud (or
« Cloud » selon la terminologie anglo-saxonne) est largement répandu. "Cloud" according to the English terminology) is widely used.
Pour autant, malgré de nombreuses techniques de chiffrement des données, le niveau de sécurité, en terme de confidentialité des données propres à un utilisateur, proposé par les solutions existantes peut s'avérer insatisfaisant. En particulier, une personne malveillante peut tenter de récupérer, sur les serveurs de stockage utilisés, les blocs de données formant une donnée secrète initiale, sans que des contremesures efficaces soient prises notamment parce que la récursivité d'accès à cette donnée peut permettre avec le temps et des dispositifs espions sophistiqués de déjouer les chiffrements de données.
Le document US 2007/073990 décrit un stockage distribué de blocs formant un fichier, sur des serveurs. Une liste de serveurs est déterminée à partir d'une graine associée au fichier. Lorsqu'un serveur est ajouté ou retiré, une nouvelle affectation des blocs aux serveurs disponibles est effectuée, en limitant une redistribution des blocs aux seuls blocs concernés par le serveur ajouté ou retiré selon cette nouvelle affectation. However, despite many data encryption techniques, the level of security, in terms of confidentiality of data specific to a user, proposed by existing solutions may be unsatisfactory. In particular, an attacker may attempt to recover, on the storage servers used, the data blocks forming an initial secret data, without effective countermeasures being taken in particular because the recursion of access to this data may allow with the time and sophisticated spy devices to thwart the data ciphers. Document US 2007/073990 describes distributed storage of blocks forming a file on servers. A list of servers is determined from a seed associated with the file. When a server is added or removed, a new assignment of the blocks to the available servers is performed, limiting a redistribution of the blocks to only blocks concerned by the server added or removed according to this new assignment.
RESUME DE L'INVENTION SUMMARY OF THE INVENTION
Un objectif de la présente invention est ainsi d'améliorer la sécurisation d'une donnée personnelle lors de son stockage réparti sur une pluralité de serveurs. An object of the present invention is thus to improve the security of a personal data during its storage distributed over a plurality of servers.
Dans ce dessein, un premier aspect de la présente invention concerne un procédé de stockage d'une donnée associée à un utilisateur dans un réseau informatique comprenant une pluralité de serveurs de stockage, le procédé comprenant les étapes suivantes : For the purpose of this invention, a first aspect of the present invention relates to a method of storing data associated with a user in a computer network comprising a plurality of storage servers, the method comprising the following steps:
diviser la donnée pour obtenir une pluralité de blocs de données ; déterminer, pour chaque bloc de données, un serveur respectif parmi la pluralité de serveurs de stockage ; et dividing the data to obtain a plurality of data blocks; determining, for each data block, a respective one of the plurality of storage servers; and
mémoriser chaque bloc de données au niveau du serveur de stockage respectif, store each block of data at the respective storage server,
caractérisé en ce que la détermination du serveur respectif est fonction d'un instant temporel courant. characterized in that the determination of the respective server is a function of a current time instant.
Notamment, la détermination du serveur respectif en fonction d'un instant temporel courant peut être réalisée pour chaque bloc de données, de sorte que le serveur de stockage utilisé pour mémoriser chaque bloc respectif de données varie périodiquement dans le temps. In particular, the determination of the respective server as a function of a current time instant can be carried out for each block of data, so that the storage server used to store each respective block of data varies periodically in time.
Corrélativement, l'invention concerne, selon un deuxième aspect, un système (qui peut être intégré dans un simple terminal utilisateur) de stockage d'une donnée associée à un utilisateur dans un réseau informatique comprenant une pluralité de serveurs de stockage, le système comprenant au moins un microprocesseur configuré pour exécuter, dans un environnement d'exécution du système, les étapes suivantes : Correlatively, the invention relates, according to a second aspect, to a system (which can be integrated into a simple user terminal) for storing data associated with a user in a computer network comprising a plurality of storage servers, the system comprising at least one microprocessor configured to execute, in a system execution environment, the following steps:
diviser la donnée pour obtenir une pluralité de blocs de données ; déterminer, pour chaque bloc de données, un serveur respectif parmi la pluralité de serveurs de stockage ; et
mémoriser chaque bloc de données au niveau du serveur de stockage respectif, dividing the data to obtain a plurality of data blocks; determining, for each data block, a respective one of the plurality of storage servers; and store each block of data at the respective storage server,
caractérisé en ce que la détermination du serveur respectif est fonction d'un instant temporel courant. characterized in that the determination of the respective server is a function of a current time instant.
Le procédé ou le système selon l'invention permet ainsi d'accroître la sécurisation de données personnelles, par exemple une donnée confidentielle, chiffrée ou non, ou des programmes personnels. The method or system according to the invention thus makes it possible to increase the security of personal data, for example confidential data, encrypted or not, or personal programs.
Cette sécurisation accrue est obtenue par la dépendance au temps du serveur de stockage utilisé pour stocker chaque bloc de donnée résultant de la division de la donnée personnelle. Il en résulte que le serveur de stockage utilisé pour mémoriser un bloc de données particulier peut varier dans le temps, c'est-à-dire qu'il est déterminé selon une ou plusieurs lois de répartition dynamique. La tâche de localisation et de récupération des blocs de données est ainsi largement complexifiée pour une personne malintentionnée. This increased security is obtained by the time dependency of the storage server used to store each block of data resulting from the division of the personal data. As a result, the storage server used for storing a particular data block may vary in time, i.e., it is determined according to one or more dynamic distribution laws. The task of locating and retrieving the blocks of data is thus greatly complexified for a malicious person.
Des caractéristiques optionnelles du procédé selon l'invention sont par ailleurs définies dans les revendications dépendantes. Le système selon l'invention peut également comprendre des moyens configurés pour mettre en œuvre ces caractéristiques optionnelles. Optional features of the method according to the invention are further defined in the dependent claims. The system according to the invention may also comprise means configured to implement these optional features.
Dans un mode de réalisation, un nouveau serveur de stockage respectif est déterminé, à chaque nouvel instant temporel, pour chaque bloc de données, de sorte à mémoriser le bloc de données au niveau d'un nouveau serveur de stockage à chaque nouvel instant temporel. In one embodiment, a new respective storage server is determined, at each new time instant, for each data block, so as to store the data block at a new storage server at each new time instant.
Cette disposition précise la dépendance, au temps, de la détermination du serveur à utiliser. This provision specifies the dependence, at the time, of the determination of the server to use.
Dans un mode de réalisation particulier, le procédé comprend, en outre, les étapes suivantes en réponse à une requête d'accès à la donnée associée à l'utilisateur : In a particular embodiment, the method further comprises the following steps in response to a request for access to the data associated with the user:
identifier des serveurs de stockage mémorisant, à un instant temporel donné, les blocs de données ; identify storage servers storing, at a given time point, the data blocks;
récupérer les blocs de données depuis les serveurs de stockage respectifs ainsi identifiés, pour reformer ladite donnée ; et retrieving the data blocks from the respective storage servers thus identified, to reform said data; and
en cas de détection d'une erreur sur la donnée reformée à partir des blocs de données récupérés, identifier de nouveaux serveurs de stockage mémorisant, à un instant temporel suivant (celle suivant immédiatement l'instant temporel donné), les
blocs de données, puis récupérer les blocs de données depuis les nouveaux serveurs de stockage respectifs ainsi identifiés, pour reformer ladite donnée. in the event of detection of an error on the data reformed from the recovered data blocks, identifying new storage servers storing, at a following time instant (the one immediately following the given time instant), the data blocks, then retrieve the data blocks from the respective new storage servers thus identified, to reform said data.
Cette disposition permet de traiter la discontinuité de stockage des blocs de données lors d'un changement d'instant temporel. En effet, selon que la requête d'accès à la donnée reçue aux environs de ce changement d'instant temporel soit traitée plus ou moins vite, les blocs de données peuvent avoir été déplacés d'un serveur à l'autre, selon le nouveau schéma de stockage réparti applicable à l'instant T+1 . This arrangement makes it possible to process the storage discontinuity of the data blocks during a change of time instant. Indeed, depending on whether the request for access to the data received in the vicinity of this change in time is processed more or less quickly, the data blocks may have been moved from one server to another, according to the new distributed storage scheme applicable at time T + 1.
Ainsi, la donnée est reconstituée en utilisant le schéma applicable à l'instant T, et si cette donnée est erronée (défaut de cohérence, erreur sur un critère d'identification comme par exemple une identité utilisateur dans la donnée reconstituée, etc.), on procède à une reconstitution en utilisant le schéma applicable à l'instant T+1. Thus, the data is reconstituted using the scheme applicable at time T, and if this data is erroneous (lack of coherence, error on an identification criterion such as a user identity in the reconstituted data, etc.), a reconstruction is performed using the scheme applicable at time T + 1.
Dans un autre mode de réalisation, la détermination du serveur respectif est en outre fonction d'une clé binaire privée associée à l'utilisateur. Il peut s'agir de n'importe quelle clé cryptographique associée à l'utilisateur, qui est utilisée dans sa forme binaire. In another embodiment, the determination of the respective server is further dependent on a private binary key associated with the user. It can be any cryptographic key associated with the user, which is used in its binary form.
Cette disposition permet de crypter le schéma de répartition des serveurs de stockage en fonction de chaque utilisateur, et ainsi complexifie, pour une personne malveillante, les opérations à mettre en œuvre pour identifier la localisation de stockage de chacun des blocs de données. This arrangement makes it possible to encrypt the distribution scheme of the storage servers according to each user, and thus makes it more difficult for an attacker to carry out the operations to be implemented to identify the storage location of each of the data blocks.
Selon un mode de réalisation particulier, l'étape de détermination des serveurs de stockage comprend une étape consistant à appliquer la clé binaire comme masque à une première table de répartition des serveurs pour identifier des serveurs de stockage à utiliser pour une partie des blocs de données respectifs, ladite première table de répartition des serveurs associant un serveur à chaque bloc de données. In a particular embodiment, the step of determining the storage servers includes a step of applying the binary key as a mask to a first server distribution table to identify storage servers to be used for a portion of the data blocks. respective server distribution table associating a server with each block of data.
La connaissance de la clé devient ainsi indispensable à l'identification de chaque serveur de stockage utilisé. The knowledge of the key thus becomes indispensable for the identification of each storage server used.
Selon une caractéristique particulière, l'étape de détermination des serveurs de stockage comprend en outre une étape consistant à appliquer un complémentaire de la clé binaire comme masque à une deuxième table de répartition des serveurs pour identifier des serveurs de stockage à utiliser pour les autres blocs de données respectifs. Notamment, ladite deuxième table de répartition des serveurs peut associer un serveur à chaque bloc de données et peut être formée à partir d'une même table élémentaire que la première table de répartition des serveurs. Par exemple, les
tables de répartition sont générées par répétition (et concaténation) de la table élémentaire, la deuxième table de répartition étant la continuité de la première table de répartition eu égard à la répétition de la table élémentaire. According to one particular characteristic, the step of determining the storage servers further comprises a step of applying a complementary bit key as a mask to a second server distribution table to identify storage servers to be used for the other blocks. respective data. In particular, said second server distribution table can associate a server with each data block and can be formed from the same elementary table as the first server distribution table. For example, Distribution tables are generated by repeating (and concatenating) the elementary table, the second distribution table being the continuity of the first distribution table with regard to the repetition of the elementary table.
Ces dispositions permettent de déterminer les serveurs de stockage à utiliser de façon très sécurisée. These provisions make it possible to determine which storage servers to use in a very secure manner.
Selon un mode de réalisation particulier, le masque formé de la clé binaire est décalé relativement à la première ou deuxième table de répartition des serveurs d'un nombre de positions fonction de l'instant temporel courant, avant d'être appliqué à la première ou deuxième table de répartition des serveurs. L'instant temporel courant est ainsi utilisé comme référence perturbatrice dans l'application du masque (clé binaire de l'utilisateur), augmentant la sécurisation du stockage réparti de la donnée personnelle. According to a particular embodiment, the mask formed by the binary key is shifted relative to the first or second distribution table of the servers by a number of positions depending on the current time instant, before being applied to the first or second second server distribution table. The current time instant is thus used as disturbing reference in the application of the mask (user's binary key), increasing the security of the distributed storage of the personal data.
Selon un autre mode de réalisation particulier, le masque est formé d'une répétition (éventuellement partielle) de la clé binaire de sorte à atteindre la taille de la première ou deuxième table de répartition des serveurs, c'est-à-dire le nombre de blocs de données à stocker. According to another particular embodiment, the mask is formed of a repetition (possibly partial) of the binary key so as to reach the size of the first or second distribution table servers, that is to say the number blocks of data to store.
Une personne malveillante devra donc connaître la clé de l'utilisateur pour tenter de localiser les serveurs où sont stockés chacun des blocs de données. An attacker will need to know the user's key to try to locate the servers where each block of data is stored.
Selon encore un autre mode de réalisation particulier, le procédé comprend en outre une étape de détermination d'une table élémentaire de répartition des serveurs par duplication de laquelle la ou les tables de répartition des serveurs sont obtenues, According to yet another particular embodiment, the method further comprises a step of determining a server distribution basic table by duplication of which the server distribution table or tables are obtained,
procédé dans lequel l'étape de détermination de la table élémentaire est fonction d'un indice de performance associé à chaque serveur de stockage et d'un indice de confiance associé à la localisation géographique de chaque serveur de stockage. method in which the step of determining the elementary table is a function of a performance index associated with each storage server and a confidence index associated with the geographical location of each storage server.
Ainsi, une stratégie de priorisation de l'utilisation de certains serveurs peut être mise en œuvre, afin par exemple de favoriser les serveurs performants et/ou localisés dans des zones à faible risque géographique (par exemple risque sismique ou risque géopolitique). Thus, a strategy for prioritizing the use of certain servers can be implemented, for example to favor efficient servers and / or located in areas with low geographical risk (eg seismic risk or geopolitical risk).
Selon une caractéristique particulière, la longueur de la table élémentaire est fonction de la somme de poids associés aux serveurs de stockage, le poids associé à un serveur de stockage étant déterminé à partir des indices de performance et de confiance du serveur de stockage considéré.
Selon une autre caractéristique particulière, l'étape de détermination de la table élémentaire comprend les étapes suivantes : According to one particular characteristic, the length of the elementary table is a function of the sum of weights associated with the storage servers, the weight associated with a storage server being determined from the performance and trust indices of the storage server considered. According to another particular characteristic, the step of determining the elementary table comprises the following steps:
déterminer, pour chaque serveur de stockage, une fréquence de répétition d'une occurrence (par exemple via un identifiant) du serveur de stockage dans la table élémentaire en fonction du poids associé audit serveur de stockage considéré ; determining, for each storage server, a frequency of repetition of an occurrence (for example via an identifier) of the storage server in the elementary table as a function of the weight associated with the said storage server;
remplir la table élémentaire en répétant, pour chaque serveur itérativement considéré et en fonction de sa fréquence de répétition déterminée, une occurrence du serveur au sein de la table élémentaire jusqu'à atteindre un nombre de répétition égal au poids associé au serveur considéré. filling the elementary table by repeating, for each iteratively considered server and according to its determined repetition frequency, a server occurrence within the elementary table until a repetition number equal to the weight associated with the server in question.
La table élémentaire permet ainsi d'obtenir une répartition complexe et entrelacée des serveurs, dans des proportions égales à leurs poids respectifs, c'est-à- dire à leurs indices de confiance et de performance. Aussi, une telle table élémentaire est complexe à recréer pour une personne malveillante, tout en garantissant une équité entre les serveurs compte tenu de leurs caractéristiques. The elementary table thus makes it possible to obtain a complex and interlaced distribution of the servers, in proportions equal to their respective weights, that is to say to their confidence and performance indices. Also, such an elementary table is complex to recreate for a malicious person, while ensuring equity between the servers given their characteristics.
A noter que lors de la formation de la table élémentaire, si une position Note that during the formation of the elementary table, if a position
(dans la table élémentaire) est déjà occupée par une occurrence d'un serveur de stockage lors d'une nouvelle répétition d'un autre serveur de stockage, on peut décider de décaler l'occurrence de cet autre serveur de stockage à la prochaine position libre, puis de recommencer la répétition à partir de cette nouvelle position. Pour atteindre le nombre de répétitions/occurrences souhaité alors que la fin de la table élémentaire est atteinte, il peut être prévu de poursuivre la répétition en bouclant à nouveau sur le début de la table élémentaire. Par exemple, si la longueur de la table élémentaire équivaut la somme des poids, il est nécessaire, pour remplir toute la table élémentaire, que chacun des serveurs soit présent dans un nombre d'occurrences égal à son propre poids. (in the elementary table) is already occupied by an occurrence of a storage server during a repeat of another storage server, we can decide to shift the occurrence of this other storage server to the next position free, then repeat the repetition from this new position. To achieve the number of repetitions / occurrences desired while the end of the elementary table is reached, it can be expected to continue the repetition by looping again on the beginning of the elementary table. For example, if the length of the elementary table equals the sum of the weights, it is necessary, to fill the whole elementary table, that each server is present in a number of occurrences equal to its own weight.
Dans un mode de réalisation de l'invention, l'étape de division de la donnée comprend les étapes suivantes : In one embodiment of the invention, the step of dividing the data comprises the following steps:
diviser la donnée en des blocs élémentaires de données ; dividing the data into elementary blocks of data;
dupliquer les blocs élémentaires en des blocs dupliqués ; duplicate the elementary blocks into duplicate blocks;
entrelacer les blocs dupliqués de sorte à obtenir ladite pluralité de blocs de données. interleaving the duplicate blocks to obtain said plurality of data blocks.
Cette disposition permet d'introduire une redondance des blocs élémentaires formant la donnée personnelle initiale, et par voie de conséquence permet d'améliorer la fiabilité de stockage dans le système.
BREVE PRESENTATION DES FIGURES This arrangement makes it possible to introduce a redundancy of the elementary blocks forming the initial personal data, and consequently makes it possible to improve the storage reliability in the system. BRIEF PRESENTATION OF FIGURES
D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après, illustrée par les dessins ci-joints, dans lesquels : Other features and advantages of the invention will become apparent in the description below, illustrated by the accompanying drawings, in which:
- la figure 1 illustre un exemple d'architecture matérielle dans laquelle la présente invention peut être mise en œuvre, notamment sous forme de programmes informatiques ; FIG. 1 illustrates an example of a hardware architecture in which the present invention can be implemented, notably in the form of computer programs;
- la figure 2 illustre un exemple de réseau informatique comprenant une pluralité de serveurs de stockage dans lequel l'invention peut être mise en œuvre ; FIG. 2 illustrates an example of a computer network comprising a plurality of storage servers in which the invention can be implemented;
- la figure 3 illustre, à l'aide d'un ordinogramme, des étapes générales d'un procédé de sauvegarde répartie d'une donnée selon des modes de réalisation de l'invention ; FIG. 3 illustrates, using a flow chart, the general steps of a method of distributed backup of a piece of data according to embodiments of the invention;
- la figure 4 illustre, sous forme d'ordinogramme, des étapes pour la détermination de serveurs de stockage du procédé de la figure 3 ; FIG. 4 illustrates, in the form of a flow chart, steps for the determination of storage servers of the method of FIG. 3;
- la figure 5 illustre un exemple de mise en œuvre des étapes de la figure 4 ; FIG. 5 illustrates an example of implementation of the steps of FIG. 4;
- la figure 6 illustre, sous forme d'ordinogramme, des étapes pour la détermination d'une table élémentaire du procédé de la figure 3 ; FIG. 6 illustrates, in the form of a flow chart, steps for determining an elementary table of the method of FIG. 3;
- la figure 7 illustre un exemple de mise en œuvre des étapes de la figure 6 ; et FIG. 7 illustrates an example of implementation of the steps of FIG. 6; and
- la figure 8 illustre, sous forme d'ordinogramme, un exemple d'étapes générales d'un procédé d'accès à une donnée sauvegardée selon le procédé de la figure 3. FIG. 8 illustrates, in the form of a flow chart, an example of general steps of a method of accessing a data item saved according to the method of FIG. 3.
DESCRIPTION DETAILLEE DE MODES DE REALISATION DE L'INVENTION La figure 1 illustre un exemple d'architecture matérielle dans laquelle la présente invention peut être mise en œuvre, notamment sous forme de programmes informatiques. A titre d'exemple, cette architecture matérielle peut faire partie d'un dispositif ou terminal utilisateur, tel qu'un ordinateur embarqué ou non, ordinateur portable, terminal mobile, une tablette mobile, ou faire partir d'un serveur offrant des services de sauvegarde répartie de données et d'accès à ces données. DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION FIG. 1 illustrates an example of a hardware architecture in which the present invention may be implemented, notably in the form of computer programs. For example, this hardware architecture can be part of a device or user terminal, such as an onboard computer or not, laptop, mobile terminal, a mobile tablet, or from a server offering services. distributed backup of data and access to this data.
L'architecture matérielle 10 comprend notamment un bus de communication 100 auquel sont reliées : The hardware architecture 10 comprises in particular a communication bus 100 to which are connected:
- une unité de traitement 1 10, notée CPU (pour Central Processing Unit), pouvant comporter un ou plusieurs processeurs ;
- au moins une mémoire non volatile 120 par exemple ROM (pour Read Only Memory), EEPROM (pour Electrically Erasable Read Only Memory) ou encore Flash, pour stocker des programmes informatiques pour la mise en œuvre de l'invention et d'éventuels paramètres utilisé pour celle-ci ; a processing unit 1 10, denoted CPU (for Central Processing Unit), which can comprise one or more processors; at least one non-volatile memory 120, for example ROM (for Read Only Memory), EEPROM (for Electrically Erasable Read Only Memory) or Flash, for storing computer programs for the implementation of the invention and possible parameters used for this one;
- une mémoire vive 130 ou mémoire cache ou mémoire volatile par exemple RAM (pour Random Access Memory), configurée pour stocker le code exécutable de procédés selon des modes de réalisation de l'invention, et pour stocker des registres adaptés à mémoriser, au moins temporairement, des variables et paramètres nécessaires à la mise en œuvre de l'invention selon des modes de réalisation ; a random access memory 130 or cache memory or volatile memory, for example RAM (for Random Access Memory), configured to store the executable code of methods according to embodiments of the invention, and to store registers adapted to memorize, at least temporarily, variables and parameters necessary for the implementation of the invention according to embodiments;
- une interface 140 d'entrées/sorties I/O (pour Input/Outpuf), par exemple un écran, un clavier, une souris ou un autre dispositif de pointage tel qu'un écran tactile ou une télécommande permettant à un utilisateur d'interagir avec le système via une interface graphique ; et an interface 140 of input / output I / O (for Input / Outpuf), for example a screen, a keyboard, a mouse or other pointing device such as a touch screen or a remote control enabling a user to interact with the system via a graphical interface; and
- une interface de communication COM 150 adaptée à échanger des données par exemple avec des serveurs de stockage via un réseau informatique ou de communication. a communication interface COM 150 adapted to exchange data for example with storage servers via a computer or communication network.
Les codes d'instructions du programme stocké en mémoire non-volatile 120 sont chargés en mémoire RAM 130 en vue d'être exécutés par l'unité de traitement CPU 1 10. The instruction codes of the program stored in non-volatile memory 120 are loaded into RAM 130 for execution by the processing unit CPU 1 10.
La mémoire non-volatile 120 stocke également des informations confidentielles de l'utilisateur, par exemple une clé privée sous forme binaire. Bien entendu, afin d'améliorer la protection d'une telle clé privée, celle-ci peut être stockée dans un élément sécurisé (SE pour Secure Elément) type carte à puce, équipant le système selon cette architecture matérielle ou encore sur un HSM (Hardware Security Module). The non-volatile memory 120 also stores confidential information of the user, for example a private key in binary form. Of course, in order to improve the protection of such a private key, it can be stored in a secure element (SE for Secure Element) type smart card, equipping the system according to this hardware architecture or on an HSM ( Hardware Security Module).
La présente invention s'inscrit dans le cadre de la sauvegarde (ou stockage) répartis de données sur des serveurs de stockage d'un réseau de communication, typiquement un réseau informatique étendu, tel que l'Internet. The present invention is part of the backup (or storage) distributed data on storage servers of a communication network, typically an extended computer network, such as the Internet.
La figure 2 illustre un exemple de réseau informatique 20 comprenant une pluralité de M serveurs de stockage Sx. Dans l'exemple non limitatif de la figure, quatre (M=4) serveurs de stockage Si , S2, S3 et S4 sont représentés. Les serveurs sont synchronisés sur une même horloge de référence. FIG. 2 illustrates an example of a computer network 20 comprising a plurality of M storage servers S x . In the nonlimiting example of the figure, four (M = 4) storage servers Si, S 2 , S 3 and S 4 are represented. The servers are synchronized on the same reference clock.
Un terminal utilisateur 21 , présentant l'architecture matérielle de la figure 1 , permet à un utilisateur de solliciter la sauvegarde d'une donnée personnelle, parfois
confidentielle, cryptée ou non, et d'accéder à cette donnée personnelle une fois celle-ci stockée de façon répartie dans le réseau 20. A user terminal 21, presenting the hardware architecture of FIG. 1, enables a user to request the safeguarding of personal data, sometimes confidential, encrypted or not, and access this personal data once it stored distributed in the network 20.
Le terminal utilisateur 21 peut mettre en œuvre la présente invention pour gérer le stockage réparti d'une telle donnée personnelle et son accès ultérieur. En variante, le terminal utilisateur 21 peut accéder à un service de sauvegarde distribuée d'une donnée et d'accès ultérieur à cette donnée, proposé par un serveur S du réseau 20. Dans les deux cas, l'ensemble des paramètres (indices de confiance et de performance, clés utilisateur, etc.) discutés par la suite peuvent être stockés sur un tel serveur S, et être récupérés, si nécessaire, par les terminaux utilisateurs. The user terminal 21 can implement the present invention to manage the distributed storage of such personal data and its subsequent access. Alternatively, the user terminal 21 can access a distributed data backup service and subsequent access to this data, proposed by a server S of the network 20. In both cases, all the parameters (indices of confidence and performance, user keys, etc.) discussed subsequently can be stored on such a server S, and be retrieved, if necessary, by the user terminals.
Les principes généraux de sauvegarde répartie d'une donnée incluent de diviser la donnée pour obtenir une pluralité de blocs de données ; de déterminer, pour chaque bloc de données, un serveur respectif parmi la pluralité de serveurs de stockage ; et de mémoriser chaque bloc de données au niveau du serveur de stockage respectif. The general principles of distributed data backup include dividing the data to obtain a plurality of data blocks; determining, for each data block, a respective one of the plurality of storage servers; and storing each block of data at the respective storage server.
Dans ce contexte, la présente invention prévoit d'accroître la protection, et donc la sécurité, de la donnée ainsi stockée selon ces solutions, en effectuant une détermination de chaque serveur respectif en fonction d'un instant temporel courant, c'est-à-dire en fonction du temps. In this context, the present invention provides for increasing the protection, and therefore the security, of the data thus stored according to these solutions, by making a determination of each respective server according to a current time instant, that is to say say according to time.
Il en résulte une localisation de chaque bloc de données qui peut varier dans le temps, rendant leur récupération par une personne malveillante plus difficile. The result is a location of each block of data that can vary over time, making recovery by an attacker more difficult.
La figure 3 illustre, à l'aide d'un ordinogramme, des étapes générales d'un procédé exemplaire selon des modes de réalisation de l'invention. Ces étapes sont mises en œuvre dans un système selon l'invention, lequel peut être le terminal utilisateur 21 ou le serveur S de la figure 2. FIG. 3 illustrates, using a flow chart, general steps of an exemplary method according to embodiments of the invention. These steps are implemented in a system according to the invention, which may be the user terminal 21 or the server S of FIG.
A l'étape 30, une requête de stockage d'une donnée personnelle DATA est reçue de l'utilisateur (via le terminal utilisateur 21 le cas échéant). In step 30, a request for storing a personal data DATA is received from the user (via the user terminal 21 if necessary).
Cette donnée est personnelle en ce qu'elle est attachée à un utilisateur ou groupe d'utilisateurs. Elle peut être constituée d'une pluralité de données élémentaires, par exemples confidentielles. Typiquement, la donnée personnelle est chiffrée. This data is personal in that it is attached to a user or group of users. It may consist of a plurality of elementary data, for example confidential. Typically, the personal data is encrypted.
La donnée personnelle DATA forme un fichier de taille LENGTH. The personal data DATA forms a file of size LENGTH.
A l'étape 31 , la donnée DATA est divisée pour obtenir une pluralité de blocs de données. Cette étape se décompose en trois sous-étapes : diviser la donnée DATA en des blocs élémentaires de données D DN ; dupliquer les blocs élémentaires en des blocs dupliqués DVD pour procurer un niveau de redondance suffisant ; et entrelacer les blocs dupliqués pour améliorer la fiabilité du mécanisme de stockage.
La donnée DATA peut être divisée en Nb blocs de taille constante Lfixe, applicable à toute donnée DATA dans le temps : Nb= Γ LENGTH / Lfixe 1, où Γ Ί est la fonction retournant la partie entière par excès. In step 31, the DATA data is divided to obtain a plurality of data blocks. This step is broken down into three sub-steps: dividing the data DATA into elementary blocks of data DD N ; duplicate the elementary blocks into duplicate DVD blocks to provide a sufficient level of redundancy; and interleaving the duplicate blocks to improve the reliability of the storage mechanism. The data DATA can be divided into Nb blocks of constant size Lfix, applicable to any data DATA in time: Nb = Γ LENGTH / Lfixe 1, where Γ Ί is the function returning the whole part by excess.
En variante, la donnée DATA peut être divisée en une pluralité de blocs de même taille Lvar, cette taille de bloc étant variable en ce qu'elle peut dépendre de un ou plusieurs paramètres, par exemple choisis parmi les paramètres suivants : la taille LENGTH de la donnée DATA, l'utilisateur, l'opérateur du service de sauvegarde répartie et d'accès aux données, etc. Le nombre de blocs obtenus est alors : As a variant, the data DATA can be divided into a plurality of blocks of the same size Lvar, this block size being variable in that it can depend on one or more parameters, for example chosen from the following parameters: the size LENGTH of the DATA data, the user, the operator of the distributed backup and data access service, etc. The number of blocks obtained is then:
Nb= T LENGTH / Lvar 1. Nb = T LENGTH / Lvar 1.
L'utilisateur de longueurs variables améliore encore la sécurisation de la donnée à sauvegarder. The user of variable lengths further improves the security of the data to be backed up.
A titre d'exemple, la variabilité de la taille du bloc en fonction de la taille LENGTH de la donnée DATA peut suivre l'une des formules suivantes : By way of example, the variability of the size of the block as a function of the LENGTH size of the data DATA can follow one of the following formulas:
Lvar = TLmin + (LENGTH/Nbmax)], Lvar = TLmin + (LENGTH / Nbmax)],
où Nbmax est une paramètre prédéfini et Lmin est une taille entière minimale prédéfinie. Dans ce cas, le nombre Nb de blocs de données obtenus tend vers Nbmax plus la donnée DATA est de grande taille ; where Nbmax is a predefined parameter and Lmin is a predefined minimum integer size. In this case, the number Nb of data blocks obtained tends to Nbmax plus the data DATA is large;
Lvar = V(LENGTH) pour LENGTH < Nbmax2 Lvar = V (LENGTH) for LENGTH <Nbmax 2
Lvar = LENGTH/Nbmax pour LENGTH≥ Nbmax2, Lvar = LENGTH / Nbmax for LENGTH≥ Nbmax 2 ,
auquel cas le nombre Nb de blocs de données obtenus vaut min(rV(LENGTH)1, Nbmax), et tend donc vers Nbmax plus la donnée DATA est de grande taille. in which case the number Nb of data blocks obtained is min (rV (LENGTH) 1, Nbmax), and therefore tends to Nbmax plus the DATA data is large.
A titre d'exemple, la variabilité de la taille du bloc en fonction de l'utilisateur peut consister à utiliser un identifiant unique ID de l'utilisateur (par exemple un numéro de sécurité sociale, un numéro de passeport ou carte d'identité, etc.) que l'on normalise dans un intervalle prédéfini [0 ;Nbmax], pour calculer cette longueur : For example, the variability of the block size according to the user may consist of using a unique identifier ID of the user (for example a social security number, a passport number or identity card, etc.) that one normalizes in a predefined interval [0; Nbmax], to calculate this length:
Nb = ID - Nbmax.LlD/NbmaxJ, où L J est la fonction retournant la partie entière par défaut, et du coup : Nb = ID - Nbmax.LlD / NbmaxJ, where L J is the function returning the integer part by default, and thus:
Lvar = TLENGTH/Nbl = rLENGTH/(ID-Nbmax.|_ID/Nbmax_|)1. Lvar = TLENGTH / Nbl = rLENGTH / (ID-Nbmax. | _ID / Nbmax_ |) 1.
En variante, un nombre entier de l'intervalle [0 ;Nbmax] peut être attribué de façon aléatoire à chaque utilisateur et servir à définir la valeur Nb. La taille variable découle alors directement : Lvar = TLENGTH/Nbl. Alternatively, an integer of the interval [0; Nbmax] can be randomly assigned to each user and used to define the value Nb. The variable size then flows directly: Lvar = TLENGTH / Nbl.
A titre d'exemple, la variabilité de la taille du bloc en fonction d'un opérateur peut consister à prévoir différents niveaux (valeur Nb) de division de la donnée en fonction d'options d'abonnement ou de performance. Le recours à une division en un
grand nombre de blocs s'avère plus sécuritaire, mais nécessite plus de calculs comme décrits par la suite. Aussi, un tel niveau de division peut être réservé aux abonnés premium. For example, the variability of the size of the block according to an operator may consist in providing different levels (value Nb) of dividing the data according to subscription options or performance. The use of a division into one large number of blocks is safer, but requires more calculations as described later. Also, such a level of division can be reserved for premium subscribers.
Bien entendu ces différents exemples peuvent être combinés entre eux pour produire des longueurs variables de découpage de la donnée DATA en blocs de données DrDMt,. Of course, these various examples can be combined with one another to produce variable lengths of division of the data DATA into data blocks DrDMt.
De façon optionnelle, ces blocs de données
peuvent être dupliqués pour fournir une redondance des données, fiabilisant la reconstitution de la donnée DATA. Dans un mode de réalisation, la loi de redondance peut être fixe, définissant le nombre de duplications RD par un nombre fixe, par exemple 3. Optionally, these blocks of data can be duplicated to provide data redundancy, making the reconstitution of DATA data more reliable. In one embodiment, the redundancy law can be fixed, defining the number of duplications RD by a fixed number, for example 3.
Selon un autre mode de réalisation, la loi de redondance appliquée peut être variable en ce qu'elle peut dépendre de un ou plusieurs paramètres, par exemple fonction d'indices de confiance CS, attribués aux M serveurs S,. A titre d'exemple, le nombre entier de duplications peut valoir : According to another embodiment, the applied redundancy law may be variable in that it may depend on one or more parameters, for example according to CS confidence indices, assigned to the M servers S ,. For example, the whole number of duplications can be:
RD = RDmax +
- L(∑CSi)/M + 1 J RD = RDmax + - L (ΣCSi) / M + 1 J
avec RDmin<RD≤RDmax# RDmin et RDmax étant deux valeurs prédéfinies ; et moy() étant la fonction qui retourne la valeur médiane ou moyenne. with RDmin <RD≤RDmax # RDmin and RDmax being two predefined values; and moy () being the function that returns the median or mean value.
Compte tenu du nombre RD de duplications, Nb'=RD.Nb blocs D'-i-D sont obtenus à partir des n blocs élémentaires D DN . Given the RD number of duplications, Nb '= RD.Nb D'-iD blocks are obtained from n elementary blocks DD N.
De façon optionnelle également, les m blocs DVD peuvent être entrelacés afin d'améliorer la fiabilité du système de sauvegarde eu égard à des erreurs se produisant dans le traitement des blocs DVD - Optionally also, the m DVD blocks can be interleaved to improve the reliability of the backup system with regard to errors occurring in the processing of DVD blocks.
A titre d'exemple, l'entrelacement des blocs de données DVD produits peut être monotone de profondeur P, signifiant que chaque groupe de P blocs élémentaire D, est dupliqué RD fois. Par exemple, pour RD=3 et P=4, on considère chaque groupe de 4 blocs successivement comme suit : For example, the interleaving of the produced DVD data blocks may be monotone of depth P, meaning that each group of P elementary blocks D, is duplicated RD times. For example, for RD = 3 and P = 4, we consider each group of 4 blocks successively as follows:
D1 D2D3D4 D1 D2D3D4 D1 D2D3D4 D5D6D7D8 D5D6D7D8 D5D6... D2D3D4 D1 D1 D1 D2D3D4 D2D3D4 D 5 D 6 D 7 D 8 D 5 D 6 D 7 D 8 D 5 D 6 ...
En variante, un entrelacement complexe de profondeur P peut être mis en œuvre, signifiant que pour chaque groupe de P blocs élémentaires, leurs duplications sont mélangées. Par exemple pour RD=3 et P=6 : As a variant, a complex interweaving of depth P can be implemented, meaning that for each group of P elementary blocks, their duplications are mixed. For example for RD = 3 and P = 6:
D1 D4D2D5D3D6 D5D2D4D1 D6D3 D6D1 D3D4D2D5 D8D10D7D9D11 D12... Suite à l'étape 31 , une table élémentaire de répartition des serveurs S,, notée TABLEE, est obtenue à l'étape 32. D1 D4D2D5D3D6 D5D2D4D1 D6D3 D6D1 D3D4D2D5 D 8 D 10 D 7 D 11 D 9 D 1 2 ... Following the step 31, a basic table of distribution servers S ,, denoted TABLE E, is obtained in step 32 .
La table élémentaire TABLEE consiste en une pluralité ordonnée de LTABLE entrées, chacune identifiant un des serveurs S,.
Cette table élémentaire TABLEE peut être une table prédéfinie récupérée en mémoire non volatile du système. En variante, elle peut être déterminée selon le procédé de la figure 6 décrite ci-après afin de notamment favoriser des serveurs de confiance et/ou performants. The elementary table TABLE E consists of an ordered plurality of L TAB LE entries, each identifying one of the servers S ,. This table elementary TABLE E can be a predefined table recovered in non-volatile memory of the system. As a variant, it can be determined according to the method of FIG. 6 described below in order, in particular, to favor trusted and / or efficient servers.
Un exemple de table élémentaire de longueur
est reproduit ici aux seules fins d'illustration, où seul est reporté l'indice i du serveur S, lorsque M=4 :
An example of a basic table of length is reproduced here for the purposes of illustration, where only the index i of the server S is reported, when M = 4:
Suite à l'étape 32, une clé privée de l'utilisateur est obtenue à l'étape 33. Il s'agit de préférence d'une clé cryptographique obtenue à partir d'une courbe elliptique. Cette clé, notée K, est mémorisée de façon sécurisée dans le système mettant en œuvre l'invention, par exemple à l'aide d'un élément sécurisé type carte à puce. Following step 32, a private key of the user is obtained in step 33. It is preferably a cryptographic key obtained from an elliptic curve. This key, noted K, is securely stored in the system embodying the invention, for example using a secure element type smart card.
Comme exposé par la suite, la clé privée K est utilisée pour déterminer les serveurs à utiliser pour mémoriser chaque bloc D',. As explained below, the private key K is used to determine the servers to be used to store each D 'block.
Puis à l'étape 34, un serveur de stockage respectif est déterminé, pour chaque bloc de données D',, parmi la pluralité de serveurs de stockage, en fonction d'un instant temporel courant Tu. L'instant temporel courant est défini avec une précision directement dépendante d'une unité temporelle choisie. Then in step 34, a respective storage server is determined, for each data block D ', among the plurality of storage servers, according to a current time instant Tu. The current time instant is defined with an accuracy directly dependent on a chosen time unit.
Par exemple, l'instant temporel peut être défini par l'heure courante s'il est choisi une unité temporelle de l'ordre de l'heure. Dans ce cas, la journée est découpée en 24 instants successifs, identifiés par leurs heures respectives Tu = 0 à 23. Comme le stockage selon l'invention dépend du temps, une telle unité temporelle permet de modifier la localisation de stockage des blocs D', vingt-quatre fois par jour. For example, the time instant can be defined by the current time if a time unit of the order of the hour is chosen. In this case, the day is divided into 24 successive instants, identified by their respective hours Tu = 0 to 23. Since the storage according to the invention depends on the time, such a temporal unit makes it possible to modify the storage location of the blocks D '. , twenty-four times a day.
En variante, on peut utiliser une unité temporelle de l'ordre du jour, de sorte à modifier la localisation de stockage des blocs D', trente ou trente et une fois par mois. Alternatively, a time unit of the agenda can be used, so as to modify the storage location of the blocks D ', thirty or thirty-one times a month.
Ces unités temporelles proposées offrent l'avantage d'être très longues par rapport au temps de traitement des étapes 31 à 35 permettant de déterminer de nouvelles localisations pour le stockage des blocs de données. En effet, un ratio supérieur à 1000 (un tel traitement par des moyens informatiques prenant généralement moins de quelques secondes) est ainsi obtenu, permettant de réduire les risques d'ambiguïté relatifs au passage d'une transition d'un instant temporel au suivant, lors de la réception d'une requête d'accès à la donnée DATA. These proposed time units have the advantage of being very long compared to the processing time of steps 31 to 35 for determining new locations for storing data blocks. Indeed, a ratio greater than 1000 (such processing by computer means generally taking less than a few seconds) is thus obtained, making it possible to reduce the risks of ambiguity relating to the passage of a transition from one time instant to the next, when receiving a request to access the data DATA.
Toutefois, des mécanismes permettant de gérer ces risques peuvent être mis en œuvre comme décrits par la suite en référence à la figure 8.
L'étape 34, dont un mode de réalisation est décrit plus en détails ci-après en référence à la figure 4, permet ainsi d'identifier un serveur de stockage pour chaque bloc de données D', issue de la division de la donnée initiale DATA, et ce en fonction de l'instant temporel courant Tu. However, mechanisms for managing these risks can be implemented as described later with reference to Figure 8. Step 34, an embodiment of which is described in greater detail hereinafter with reference to FIG. 4, thus makes it possible to identify a storage server for each data block D ', resulting from the division of the initial data. DATA, and this according to the current time instant Tu.
II s'ensuit, à l'étape 35, le stockage proprement dit de chaque bloc de données au niveau du serveur de stockage respectif ainsi déterminé. Des techniques classiques de communications sécurisées avec les serveurs de stockage S, sont préférentiellement mises en œuvre. It follows, in step 35, the proper storage of each block of data at the respective storage server and determined. Conventional secure communication techniques with the storage servers S are preferably implemented.
Le procédé se poursuit à l'étape 36 où le système attend le prochain instant temporel, par exemple le début de l'heure suivante ou du jour suivant. Lorsqu'un nouvel instant temporel est atteint, les étapes 31 à 35 sont réitérées pour déterminer un nouveau serveur de stockage respectif pour chaque bloc de données D'i, et ainsi mémoriser le bloc de données au niveau du nouveau serveur de stockage pendant ce nouvel instant temporel. De préférence, les blocs de données sont effacés des anciens serveurs de stockage sur lesquels ils étaient stockés pendant l'ancien instant temporel qui vient de se terminer. The method continues in step 36 where the system waits for the next time instant, for example the beginning of the next hour or the next day. When a new time instant is reached, steps 31 to 35 are reiterated to determine a new respective storage server for each data block D'i, and thus store the data block at the new storage server during this new time. time instant. Preferably, the data blocks are erased from the old storage servers on which they were stored during the old time instant just ended.
On voit ainsi que la sauvegarde répartie de la donnée DATA par blocs évolue dynamiquement, rendant la tâche de localisation des blocs de données D', difficile pour une personne malintentionnée. It can thus be seen that the distributed backup of the data DATA by blocks evolves dynamically, making the task of locating the data blocks D 'difficult for a malicious person.
A noter que la nouvelle exécution des étapes 31 , 32 et 33 peut simplement consister à récupérer le résultat d'une exécution précédente de ces étapes, lorsque celles-ci ne font pas intervenir l'instant temporel courant comme paramètre (par exemple la table élémentaire de répartition peut évoluer dans le temps). Note that the new execution of steps 31, 32 and 33 may simply consist in recovering the result of a previous execution of these steps, when these do not involve the current time instant as a parameter (for example the elementary table distribution can change over time).
L'étape 35 est, elle, dépendante de l'instant temporel courant, garantissant que les serveurs de stockage identifiés pour chaque bloc de données à sauvegarder évoluent dans le temps. Step 35 is itself dependent on the current time instant, ensuring that the storage servers identified for each block of data to backup evolve over time.
La figure 4 illustre une réalisation de l'étape 34 de détermination des serveurs de stockage pour sauvegarder les blocs de données D', à l'instant temporel courant Tu. Cette détermination tient compte, outre de l'instant temporel courant Tu, de la clé privée K, de la table élémentaire de répartition TABLEE et de la taille LENGTH de la donnée DATA à sauvegarder. FIG. 4 illustrates an embodiment of the step 34 of determining the storage servers for saving the data blocks D 'at the current time instant Tu. This determination takes into account, besides the current time instant Tu, the private key K, the elementary distribution table TABLE E and the size LENGTH of the data DATA to be saved.
Une première étape 40 consiste à obtenir une première table de répartition TABLE1 à partir de la table élémentaire TABLEE, par duplication de cette dernière afin d'obtenir une table TABLE1 de longueur égale à Nb' (c'est-à-dire une table TABLE1 de même longueur que le nombre de blocs de données D', à sauvegarder).
La figure 5 illustre un exemple de table élémentaire TABLEE et de la première table de répartition TABLE1 ainsi obtenue, pour M=4 (quatre serveurs), avec 41 blocs D A first step 40 consists in obtaining a first distribution table TABLE1 from the elementary table TABLE E , by duplication of the latter in order to obtain a table TABLE1 of length equal to Nb '(that is to say a table TABLE1 of the same length as the number of data blocks D ', to be saved). FIG. 5 illustrates an example of a TABLE E elementary table and of the first TABLE1 distribution table thus obtained, for M = 4 (four servers), with 41 D blocks.
Puis, l'étape suivante 41 consiste à obtenir un masque binaire MASK à partir de la clé privée K et de l'instant temporel courant Tu. Comme ce masque MASK sera appliqué à la première table de répartition TABLE1 , il présente la même taille Nb' que celle-ci. Then, the next step 41 is to obtain a MASK bit mask from the private key K and the current time instant Tu. Since this mask MASK will be applied to the first distribution table TABLE1, it has the same size Nb 'as this one.
Dans l'exemple de la figure 5, la clé privée K est utilisée sous sa forme binaire (suite de et de Ό'), ici une clé de 32 bits. Puis, le masque MASK est formé par la répétition de la clé binaire K, jusqu'à atteindre la taille Nb' de la première table de répartition des serveurs. Sur la figure, les neuf bits en gras sont issus d'une répétition de la clé K. In the example of Figure 5, the private key K is used in its binary form (continuation of and Ό '), here a 32-bit key. Then, the mask MASK is formed by the repetition of the binary key K, until reaching the size Nb 'of the first server distribution table. In the figure, the nine bolded bits are from a K key repetition.
Puis, à l'étape 42, le masque MASK est appliqué à la première table de répartition des serveurs TABLE1 pour identifier des serveurs de stockage à utiliser pour une partie des blocs de données respectifs D',. Selon des modes de réalisation, c'est à cette étape que l'instant temporel courant Tu est pris en compte pour perturber l'identification des serveurs de stockage à utiliser. Then, in step 42, the mask MASK is applied to the first distribution table TABLE1 servers to identify storage servers to use for a portion of the respective data blocks D ',. According to embodiments, it is at this stage that the current time instant Tu is taken into account to disturb the identification of the storage servers to be used.
Notamment, il peut être prévu de décaler le masque MASK relativement au début de la première table de répartition des serveurs TABLE1 d'un nombre de positions fonction de l'instant temporel courant Tu, avant d'être appliqué à cette table de répartition des serveurs. In particular, it may be provided to shift the mask MASK relative to the beginning of the first distribution table servers TABLE1 a number of positions according to the current time instant Tu, before being applied to this server distribution table .
Comme montré sur la figure 5, le masque MASK est décalé de Tu positions avant application à la table TABLE1 (décalage indiqué par K«Tu) ; et le résultat RESULT1 de cette opération de masquage (les du masque identifient les serveurs de la table TABLE1 à conserver) identifie seulement une partie des serveurs de stockage à utiliser. As shown in FIG. 5, the mask MASK is shifted from Tu positions before application to the TABLE1 (offset indicated by K "Tu); and the result RESULT1 of this masking operation (those of the mask identify the servers of the table TABLE1 to keep) identifies only a portion of the storage servers to use.
A l'étape 43, on obtient une deuxième table de répartition des serveurs In step 43, a second server distribution table is obtained
TABLE2 de taille Nb' à partir de la table élémentaire TABLEE par duplication de cette dernière. Afin d'obtenir une table TABLE2 différente de la première table TABLE1 , la deuxième table de répartition peut simplement être la continuité de la première table de répartition eu égard à la répétition de la table élémentaire, comme illustré sur la figureTABLE2 of size Nb 'from the table elementary TABLE E by duplication of the latter. In order to obtain a table TABLE2 different from the first table TABLE1, the second distribution table can simply be the continuity of the first distribution table with regard to the repetition of the elementary table, as illustrated in FIG.
5. 5.
Puis, à l'étape 44, un second masque MASK2 formé par exemple du complémentaire binaire (bit à bit) du premier masque MASK est obtenu. Le second masque a également une taille égale à Nb'.
A l'étape 45, le second masque MASK2 est appliqué à la deuxième table de répartition TABLE2 de la même façon qu'à l'étape 42, de sorte à identifier les serveurs de stockage à utiliser pour les autres blocs de données D', (ceux pour lesquels l'étape 42 n'a pas pu identifier de tels serveurs). En effet, l'utilisation du complémentaire du premier masque garantit qu'au final chacun des blocs D', se voit associé un serveur de stockage respectif. Then, in step 44, a second MASK2 mask formed, for example, of the binary (bit-to-bit) complement of the first mask MASK is obtained. The second mask also has a size equal to Nb '. In step 45, the second mask MASK2 is applied to the second distribution table TABLE2 in the same way as in step 42, so as to identify the storage servers to be used for the other data blocks D ', (those for which step 42 could not identify such servers). Indeed, the use of the complementary of the first mask ensures that ultimately each of the blocks D ', is associated with a respective storage server.
La figure 5 identifie le résultat de cette opération par la référence Figure 5 identifies the result of this operation by the reference
RESULT2. RESULT2.
Bien entendu, d'autres approches peuvent être mises en œuvre comme l'utilisation d'autres masques générés à partir de la clé privée K et de l'instant Tu, et la répétition d'opérations de masquage tant que l'ensemble des blocs de données D', ne s'est pas vu attribué des serveurs de stockage respectifs. Of course, other approaches can be implemented such as the use of other masks generated from the private key K and the instant Tu, and the repetition of masking operations as the set of blocks D data has not been assigned respective storage servers.
Le processus de la figure 4 se termine à l'étape 46 par la fusion des résultats RESULT1 et RESULT2 des opérations de masquage, de sorte à obtenir une grille RESULT de localisation des Nb' serveurs de stockage. The process of FIG. 4 ends at step 46 by merging the results RESULT1 and RESULT2 of the masking operations, so as to obtain a RESULT grid for locating the Nb 'storage servers.
Cette grille identifie donc le serveur de stockage S, à utiliser pour chacun des Nb' blocs de données D',. This grid thus identifies the storage server S to be used for each of the Nb 'data blocks D'.
On décrit maintenant, en référence à la figure 6, une réalisation de l'étape 32 de détermination de la table élémentaire de répartition des serveurs TABLEE par duplication de laquelle les tables de répartition des serveurs TABLE1 et TABLE2 sont obtenues. We will now describe, with reference to FIG. 6, an implementation of the step 32 for determining the distribution table of the TABLE E servers by duplication of which the distribution tables of the servers TABLE1 and TABLE2 are obtained.
Dans ce procédé, l'étape de détermination de la table élémentaire est fonction d'un indice de performance associé à chaque serveur de stockage et d'un indice de confiance associé à la localisation géographique de chaque serveur de stockage. In this method, the step of determining the elementary table is a function of a performance index associated with each storage server and a confidence index associated with the geographical location of each storage server.
Aussi, on suppose un ensemble de propriétés rattachées aux serveurs S, de la figure 2. Also, we assume a set of properties attached to the servers S, of Figure 2.
Chaque serveur S, est associé à une localisation géographique
Deux serveurs peuvent avoir la même localisation LSj, d'où N < M. Each server S, is associated with a geographical location Two servers can have the same location LS j , hence N <M.
Un indice de confiance CS, est associé à chaque localisation LSj. Cette indice de confiance est représentatif d'une stabilité locale eu égard à l'accessibilité de serveurs qui y sont localisés. Par exemple, cet indice de confiance peut être établi comme dans le brevet EP 2 433 216, par exemple sur une échelle de 0 (confiance faible) à CSmax=10 (confiance forte), tenant compte de risques sismiques, d'inondation,
géopolitiques, etc. pour la localisation considérée. Bien entendu, d'autres plages de valeurs sont possibles. A confidence index CS, is associated with each location LS j . This confidence index is representative of a local stability with regard to the accessibility of servers located there. For example, this confidence index can be established as in patent EP 2 433 216, for example on a scale of 0 (low confidence) to CS ma x = 10 (strong confidence), taking into account seismic risks, flooding , geopolitical, etc. for the location considered. Of course, other ranges of values are possible.
Chaque serveur de stockage S, se voit donc associé indirectement un indice de confiance CS, lié à sa localisation géographique. Each storage server S, is thus indirectly associated with a CS index of confidence, linked to its geographical location.
De plus, un indice de performance PS, est associé à chaque serveur de stockage S, en fonction par exemple de la performance d'accès à ce serveur et/ou de la performance du serveur lui-même. In addition, a performance index PS is associated with each storage server S, depending for example on the performance of access to this server and / or the performance of the server itself.
Il existe un grand nombre de techniques permettant d'évoluer les performances d'un serveur, notamment en termes de performances de stockage, performances de mémoire, performances de processeur, performances de réseau et performances de processus. Aussi elles ne seront pas décrites en détails par ici. There are a large number of techniques to scale server performance, including storage performance, memory performance, processor performance, network performance, and process performance. Also they will not be described in detail here.
L'indice de performance PS, est de préférence établi sur une échelle allant de 0 (peu performant) à PSmax=10 (très performant). Bien entendu, d'autres valeurs sont possibles. The PS performance index is preferably established on a scale ranging from 0 (poor performance) to PS ma x = 10 (high performance). Of course, other values are possible.
A noter que l'indice de performance PS, peut varier dans le temps : Note that the PS performance index can vary over time:
PSi=f(Tu), auquel cas par exemple l'étape 32 est re-exécutée entièrement à chaque nouvel instant temporel (après l'étape 36). PSi = f (Tu), in which case for example step 32 is re-executed entirely at each new time instant (after step 36).
Comme illustré sur la figure 6, l'étape de détermination de la table élémentaire de répartition des serveurs TABLEE débute par une étape 60 d'obtention d'un poids WS, associé à chaque serveur de stockage S,. Ce poids peut notamment être représentatif des confiance et performance associées. Aussi, le poids WS, associé à un serveur de stockage S, peut être déterminé à partir des indices de performance et de confiance du serveur de stockage considéré, par exemple par combinaison des indices CS, et PS, associés à S,. As illustrated in FIG. 6, the step of determining the elementary distribution table of TABLE E servers begins with a step 60 of obtaining a weight WS, associated with each storage server S 1. This weight can in particular be representative of the associated confidence and performance. Also, the weight WS, associated with a storage server S, can be determined from the performance and confidence indices of the storage server in question, for example by combining the indices CS, and PS, associated with S ,.
Par exemple : WS, = (CSi.PSi)/(CSmax.PSmax) pour un poids variant de 0 à 1.For example: WS = (CSi.PSi) / (CS max .PS max) for a weight ranging from 0 to 1.
En variante, pour obtenir un poids variant entre 0 et CSmax ou entre 0 et PSmax, on peut utiliser une des formules suivantes : As a variant, to obtain a weight varying between 0 and CS max or between 0 and PS max , one of the following formulas can be used:
WS; = (CSi.PSi)/PSmax, WS; = (CSi.PSi) / PS max,
WS; = (CSi.PSi)/CSmax. WS; = (CSi.PSi) / CS max .
En outre, si CSmax = PSmax, la formule suivante peut être utilisée pour définir une valeur moyenne entre performance et confiance des serveurs de stockage :In addition, if CS my x = PS my x, the following formula can be used to set an average value between performance and trust of storage servers:
Disposant des poids WS,, l'étape 61 consiste à déterminer la longueur LTABLE de la table élémentaire en fonction de la somme de poids associés aux serveurs
de stockage. Par exemple, LTABLE = ∑i=i..M(WSi). Si WS, prend valeur entre 0 et 10 (CSmax = Smax = 10), alors la longueur de table vaut au plus 10.M. Having the weights WS ,, step 61 consists in determining the LTABLE length of the elementary table according to the sum of weights associated with the servers storage. For example, L T ABLE = Σi = i..M (WSi). If WS is between 0 and 10 (CSmax = Smax = 10), then the table length is at most 10.M.
Puis, à l'étape 62 un index 'x' est initialisé à 1 . Cet index est utilisé dans la boucle de l'algorithme décrite après, pour traiter l'ensemble des serveurs de stockage : x=1 ...M. Then, in step 62 an index 'x' is initialized to 1. This index is used in the loop of the algorithm described after, to treat all the storage servers: x = 1 ... M.
Puis à l'étape 63, une fréquence de répétition Fx est déterminée pour chaque serveur de stockage en fonction du poids WSX associé au serveur de stockage Sx considéré. Comme utilisée par la suite, Fx est représentative d'une fréquence d'occurrence du serveur de stockage Sx dans la table élémentaire de répartition TABLEE, lorsqu'il s'agira de la créer. Then in step 63, a repetition frequency F x is determined for each storage server according to the weight WS X associated with the storage server S x considered. As used subsequently, F x is representative of a frequency of occurrence of the storage server S x in the elementary distribution table TABLE E , when it will be necessary to create it.
Ainsi, plus le poids WSX est élevé (serveur de confiance et/ou performant), plus la fréquence de répétition peut être choisie élevée afin de favoriser les serveurs de confiance et/ou performants. Thus, the higher the weight WS X is high (trusted server and / or performance), the higher the repetition frequency can be chosen to favor trusted servers and / or performance.
Par exemple, 1/FX = L(LTABLE / WSX)_|. En d'autres termes, on envisage de répéter le serveur S, toutes les L(LTABLE / WSX)J positions à l'intérieur de la table TABLEE. For example, 1 / F X = L (L T ABLE / WS X ) _ |. In other words, it is envisaged to repeat the server S, all L (L T ABLE / WS X ) J positions within the TABLET table.
Puis aux étapes suivantes, la table TABLEE est formée en répétant WSX fois chaque serveur Sx avec une fréquence Fx. Then in the following steps, TABLE table E is formed by repeating WS x times each server S x with a frequency F x .
Par exemple à l'étape 64, on initialisé le remplissage de TABLEE pour le serveur Sx par TABLEE(x) = x. La première position dans la table élémentaire TABLEE renseigne donc le serveur Si. For example, in step 64, the padding of TABLE E for the server S x is initialized by TABLE E (x) = x. The first position in the elementary table TABLE E therefore informs the server Si.
Si cette entrée de la table est déjà utilisée, on prend la première entrée disponible suivant TABLEE(x). If this entry of the table is already used, we take the first available entry following TABLE E (x).
La position de l'entrée renseignée est mémorisée dans une variable 'z'. En outre, on initialisé un compteur du nombre d'occurrences NBOCC à 1. The position of the input entered is stored in a variable 'z'. In addition, a counter of the number of NBOCC occurrences is initialized to 1.
Puis on vérifie à l'étape 65 si toutes les occurrences du serveur Sx ont été ajoutées à la table TABLEE : « NBOCC = WSX ? ». Then it is checked in step 65 if all the occurrences of the server S x have been added to the TABLE table E : "NBOCC = WS X ? ".
Dans la négative, l'étape 66 prévoit de renseigner l'occurrence suivante du serveur Sx dans la table TABLEE. If not, then step 66 provides for populating the next occurrence of the server S x in the TABLE E.
Pour ce faire, la position de l'entrée suivante est déterminée : To do this, the position of the next entry is determined:
z <- (z + 1/FX) mod(LTABLE). z <- (z + 1 / F X ) mod (L T ABLE).
Si l'entrée correspondante TABLEE(z) est déjà renseignée, à nouveau on prend la première entrée disponible suivante (en rebouclant au début de la table si nécessaire), auquel cas on mémorise son index dans la variable z.
Puis, l'entrée TABLEE(z) est renseignée pour indiquer le serveur de stockage Sx : TABLEE(z) = x, et la variable NBOCC est incrémentée. If the corresponding entry TABLE E (z) is already filled in, again we take the first available next entry (by looping back to the beginning of the table if necessary), in which case we memorize its index in the variable z. Then, the entry TABLE E (z) is filled in to indicate the storage server S x : TABLE E (z) = x, and the variable NBOCC is incremented.
Le procédé reboucle alors sur l'étape 65 permettant de remplir toutes les occurrences du serveur Sx dans la table élémentaire TABLEE. The method then loops back to step 65 making it possible to fill all the occurrences of the server S x in the elementary table TABLE E.
Lorsque toutes ces occurrences ont été renseignées (sortie 'oui' du test When all these occurrences have been filled in (exit 'yes' from the test
65), l'étape 67 détermine si tous les serveurs ont été traitées : « x=M ? », auquel cas le procédé de la figure 6 prend fin. Dans la négative, le serveur de stockage suivant est considéré en incrémentant l'index x (étape 68) avant de reboucler sur l'étape 63. 65), step 67 determines if all the servers have been processed: "x = M? In which case the process of Figure 6 is terminated. If not, the next storage server is considered by incrementing index x (step 68) before looping back to step 63.
Compte tenu de la définition de LTABLE, toutes les entrées de la table TABLEE renseignent au final un serveur de stockage. Given the definition of L TAB LE, all the entries in TABLE E finally inform a storage server.
La figure 7 illustre le processus de la figure 6 pour M=4 serveurs, avec les poids suivants WSi=4, WS2=3, WS3=8 et WS4=6. La table élémentaire TABLEE est remplie en répétant, pour chaque serveur S, itérativement considéré et en fonction de sa fréquence de répétition déterminée (F,), une occurrence du serveur au sein de la table élémentaire jusqu'à atteindre un nombre de répétition NBOCC égal au poids WS, associé au serveur considéré. Figure 7 illustrates the process of Figure 6 for M = 4 servers, with the following weights WSi = 4, WS 2 = 3, WS 3 = 8 and WS 4 = 6. The elementary table TABLE E is filled by repeating, for each server S, iteratively considered and according to its determined repetition frequency (F,), an occurrence of the server within the elementary table until reaching a number of repetition NBOCC equal to the weight WS, associated with the considered server.
L'étape 61 permet d'obtenir LTABLE = 4+3+8+6 = 21 Step 61 makes it possible to obtain L TA BLE = 4 + 3 + 8 + 6 = 21
La première boucle (x=1 ) des étapes 63 à 66 permet d'obtenir The first loop (x = 1) of steps 63 to 66 makes it possible to obtain
1/Fi = L(L TABLE / WSi)J = L21/4j = 5 1 / Fi = L (L TABLE / WSi) J = L21 / 4j = 5
Puis d'avoir TABLEE(1 )=1 , TABLEE(1 +5=6)=1 , TABLEE(6+5=1 1 )=1 etThen have TABLE E (1) = 1, TABLE E (1 + 5 = 6) = 1, TABLE E (6 + 5 = 1 1) = 1 and
TABLEE(1 1 +5=16)=1 . Comme à ce stade NBOCC=4=WSi, aucune autre occurrence du serveur Si n'est ajoutée à la table élémentaire de répartition TABLEE, et notamment au niveau de l'entrée TABLEE(16+5=21 ) identifiée, sur la figure, par le sigle '♦ '. TABLE E (1 1 + 5 = 16) = 1. As at this stage NBOCC = 4 = WSi, no other occurrence of the server Si is added to the elementary table of distribution TABLE E , and in particular at the level of the entry TABLE E (16 + 5 = 21) identified, on the figure, by the symbol '♦'.
Lors de la deuxième boucle (x=2), 1/F2 = L21/3J = 7, puis TABLEE(2)=2, TABLEE(2+7=9)=2. Comme l'entrée TABLEE(16) est déjà renseignée (pour le serveur Si), cette entrée est passée (puce '·' sur la figure) et l'entrée disponible suivante est choisie TABLEE(17)=3. A ce stade NBOCC atteint WS2=3, ce qui finit la boucle pour le serveur S2. On voit ici qu'il y a moins d'occurrences du serveur S2 comparé au serveur Si, en raison du fait que ce dernier présente un plus fort poids (4 contre 3). In the second loop (x = 2), 1 / F 2 = L21 / 3J = 7, then TABLE E (2) = 2, TABLE E (2 + 7 = 9) = 2. As the entry TABLE E (16) is already filled in (for the server Si), this entry is passed (chip '·' in the figure) and the next available input is chosen TABLE E (17) = 3. At this point NBOCC reaches WS 2 = 3, which ends the loop for the server S 2 . We see here that there are fewer occurrences of the server S 2 compared to the server Si, due to the fact that the latter has a higher weight (4 against 3).
Lors de la troisième boucle (x=3), 1/F3 = L21/8J = 2, puis TABLEE(3)=3,In the third loop (x = 3), 1 / F 3 = L21 / 8J = 2, then TABLE E (3) = 3,
TABLEE(5)=3, TABLEE(7)=3. Comme l'entrée TABLEE(9) est déjà renseignée (pour le serveur S2), l'entrée disponible suivante est choisie TABLEE(10)=3. Puis les occurrences selon 1/F3 sont reprises : TABLEE(12)=3, TABLEE(14)=3. Comme les entrées TABLEE(16) et TABLEE(17) sont déjà renseignées, l'entrée disponible suivante
est choisie TABLEE(18)=3. La dernière occurrence pour atteindre NBOCC=WS2=3 est renseignée : TABLEE(20)=3. TABLE E (5) = 3, TABLE E (7) = 3. As the entry TABLE E (9) is already filled in (for the server S 2 ), the following available input is chosen TABLE E (10) = 3. Then the occurrences according to 1 / F 3 are repeated: TABLE E (12) = 3, TABLE E (14) = 3. As the entries TABLE E (16) and TABLE E (17) are already filled in, the following available entry is chosen TABLE E (18) = 3. The last occurrence to reach NBOCC = WS 2 = 3 is given: TABLE E (20) = 3.
Enfin, lors de la quatrième boucle (x=4), 1/F4 = |_21/6j = 3, puis TABLEE(4)=4, TABLEE(8)=4 (puisque TABLEE(7) est déjà renseignée), TABLEE(13)=4 (puisque TABLEE(1 1 ) et TABLEE(12) sont déjà renseignées), TABLEE(19)=4 (puisque TABLEE(16) à TABLEE(18) sont déjà renseignées). Comme z+1/F4=22 est supérieur à ABLE, on reboucle sur le début de la table élémentaire TABLEE où l'on trouve la première entrée disponible TABLEE(15) pour y renseigner le serveur S4. Enfin, la dernière occurrence du serveur S4 est renseignée dans la dernière entrée disponible TABLEE(21 ). Finally, during the fourth loop (x = 4), 1 / F 4 = | _21 / 6j = 3, then TABLE E (4) = 4, TABLE E (8) = 4 (since TABLE E (7) is already filled in), TABLE E (13) = 4 (since TABLE E (1 1) and TABLE E (12) are already filled in), TABLE E (19) = 4 (since TABLE E (16) to TABLE E (18) are already filled in). Since z + 1 / F 4 = 22 is greater than A BLE , we loop back to the beginning of the elementary table TABLE E where we find the first available input TABLE E (15) to inform the server S 4 . Finally, the last occurrence of the server S 4 is indicated in the last available entry TABLE E (21).
On obtient ainsi la table élémentaire TABLEE entièrement remplie, laquelle peut être utilisée à l'étape 32 décrite ci-dessus. This gives the completely filled TABLEE elementary table E , which can be used in step 32 described above.
Le procédé d'accès à une donnée sauvegardée selon l'algorithme de la figure 3 est maintenant décrit en référence à la figure 8. Comme évoqué précédemment, cet algorithme comporte un mécanisme permettant de gérer les risques d'ambiguïté relatifs au passage d'une transition d'un instant temporel au suivant, lors de la réception d'une requête d'accès à la donnée DATA. The method of accessing a data item saved according to the algorithm of FIG. 3 is now described with reference to FIG. 8. As mentioned above, this algorithm includes a mechanism for managing the risks of ambiguity relating to the passage of a message. transition from one time instant to the next, upon receipt of a request to access the data DATA.
L'algorithme commence à l'étape 80 par la réception d'une requête d'accès à la donnée DATA par un utilisateur U. Si nécessaire, les mécanismes de division, redondance et entrelacement (étape 31 ) de la donnée DATA sont mis en œuvre aux fins notamment de connaître le nombre Nb' de blocs de données D', à récupérer. The algorithm starts at step 80 by receiving a request to access the data DATA by a user U. If necessary, the division, redundancy and interleaving mechanisms (step 31) of the data DATA are set to particularly for the purpose of knowing the number Nb 'of data blocks D' to be recovered.
Une variable Ίοορ' est initialisée à 0, pour servir de mécanisme de gestion des transitions temporelles. A variable Ίοορ 'is initialized to 0, to serve as a mechanism for managing temporal transitions.
L'instant temporel Tu de réception de la requête est mémorisé. Les étapes suivantes permettent d'identifier les serveurs de stockage mémorisant, à cet instant temporel, les blocs de données formant la donnée DATA à accéder. The temporal instant Tu of reception of the request is memorized. The following steps identify the storage servers storing, at this time, the data blocks forming the data DATA to access.
Notamment, à l'étape 81 , la table élémentaire TABLEE est obtenue de façon similaire à l'étape 32. Puis à l'étape 82, la clé privée K de l'utilisateur est obtenue de façon similaire à l'étape 33. Puis à l'étape 83, les serveurs de stockage des blocs de données D', sont déterminés de façon similaire à l'étape 34, pour l'instant temporel Tu. In particular, in step 81, the elementary table TABLE E is obtained in a manner similar to step 32. Then in step 82, the private key K of the user is obtained in a manner similar to step 33. Then at step 83, the data block storage servers D 'are determined similarly to step 34, for the time slot Tu.
A l'étape 84, les blocs de données D', sont récupérés de ces serveurs de stockage déterminés, par des mécanismes classiques (par exemple des requêtes
sécurisées). Puis, lors de l'étape 85, la donnée DATA est reformée à partir des blocs D', ainsi récupérés. In step 84, the data blocks D 'are recovered from these determined storage servers by conventional mechanisms (for example, requests secure). Then, during step 85, the data DATA is reformed from the blocks D ', thus recovered.
L'étape suivante, 86, consiste à vérifier la cohérence du résultat de l'étape 85. Plusieurs éléments peuvent être vérifiés afin d'identifier une éventuelle erreur. Par exemple, la vérification peut porter sur l'indentification de l'utilisateur U qui doit être identique à celle indiquée dans la donnée DATA reformée (par exemple si la donnée DATA est cryptée, l'utilisation d'une clé publique de l'utilisateur U permet de vérifier l'authenticité). Selon un autre exemple, une vérification de sommes de contrôle peut être menées (par exemple si la fin de la donnée DATA consiste en une somme de contrôle du reste de la donnée). D'autres vérifications peuvent être menées comme la datation du dernier stockage mémorisée par rapport à une traçabilité mémorisées des opérations effectuées pour cet utilisateur. The next step, 86, is to check the consistency of the result of step 85. Several elements can be checked to identify a possible error. For example, the verification may relate to the identification of the user U which must be identical to that indicated in the data reformed DATA (for example if the DATA data is encrypted, the use of a public key of the user U can verify the authenticity). According to another example, checksum verification may be carried out (for example if the end of the data DATA consists of a checksum of the rest of the data). Other checks can be carried out such as the dating of the last storage stored compared to a traceability stored operations performed for this user.
En cas d'incohérence ou d'erreur constatée sur la donnée reformée à partir des blocs de données récupérés (test 87), le procédé se poursuit au test 88 pour vérifier si l'on vient de tester les données à l'instant temporel Tu (loop=0) ou à l'instant temporel suivant Tu+1 (loop=1 ). Si loop=0, on incrémente l'instant temporel Tu : Tu -Tu+1 à l'étape 89 et on reboucle sur l'étape 83 de sorte à identifier de nouveaux serveurs de stockage mémorisant, à l'instant temporel suivant (celle suivant immédiatement l'instant temporel de réception de la requête d'accès), les blocs de données, puis à récupérer (étape 84) les blocs de données depuis les nouveaux serveurs de stockage respectifs ainsi identifiés, pour reformer (étape 85) ladite donnée. In case of inconsistency or error found on the data reformed from the recovered data blocks (test 87), the process continues to test 88 to check if we have just tested the data at the time instant Tu (loop = 0) or at the next time instant Tu + 1 (loop = 1). If loop = 0, the time instant Tu: Tu -Tu + 1 is incremented in step 89 and loops back to step 83 so as to identify new storage servers storing, at the next time instant (that immediately following the time of reception of the access request), the blocks of data, then to recover (step 84) the data blocks from the respective new storage servers thus identified, to reform (step 85) said data .
Si loop=1 (test 88), alors un message d'erreur est retourné à l'utilisateur en réponse à sa requête (étape 90). If loop = 1 (test 88), then an error message is returned to the user in response to his request (step 90).
En l'absence d'erreur au test 87, la donnée reformée est retournée à l'utilisateur en réponse à sa requête (étape 91 ). In the absence of error in the test 87, the reformed data is returned to the user in response to his request (step 91).
On voit que si la donnée DATA ne peut être correctement reconstituée à l'aide du schéma de répartition des blocs D', à l'instant temporel Tu, on la reconstitue à l'aide du schéma de répartition valable pour l'instant temporel suivant Tu+1 . Ainsi, même si la requête d'accès est reçue proche d'une transition temporelle par laquelle les blocs de données D', sont déplacés de serveurs, le procédé permet de récupérer de façon sécurisée ladite donnée DATA. It can be seen that if the data DATA can not be correctly reconstructed using the distribution scheme of the blocks D ', at the time instant Tu, it is reconstituted using the distribution scheme valid for the following time instant. Tu + 1. Thus, even if the access request is received close to a time transition by which the data blocks D 'are moved from servers, the method makes it possible to retrieve said DATA data in a secure manner.
Les modes de réalisation de l'invention qui viennent d'être décrits permettent de déterminer, dans un réseau étendu, des localisations virtuelles de sauvegarde répartie selon une ou plusieurs lois de répartition dynamiques. Cette approche offre un haut niveau de sécurisation d'une donnée sauvegardée de façon
répartie. Divers mécanismes permettent d'améliorer cette sécurisation, tels que la redondance de blocs de données, l'utilisation de l'identité de l'utilisateur pour faire varier certains paramètres. The embodiments of the invention which have just been described make it possible to determine, in a wide area network, distributed backup virtual locations according to one or more dynamic distribution laws. This approach offers a high level of security of data saved in a way distributed. Various mechanisms make it possible to improve this security, such as the redundancy of data blocks, the use of the user's identity to vary certain parameters.
Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas.
The foregoing examples are only embodiments of the invention which is not limited thereto.