Brevet FR3098953A1 — publié le 20210122

Description Titre de l'invention : « Procédé de stockage sécurisé de données et système de mise en oeuvre du procédé » DOMAINE DE L'INVENTION [0001] La présente invention se rapporte à un procédé de stockage sécurisé de données et un système de mise en oeuvre de ce procédé. ETAT DE LA TECHNIQUE [0002] 11 existe de multiples façons de stocker des données après les avoir cryptées. [0003] Toutefois les techniques actuelles pour le cryptage des données en vue du stockage et pour la récupération des données stockées et les décrypter, sont des opérations d'autant plus complexes que la sécurité doit être élevée. [0004] En outre le code de cryptage/décryptage est toujours susceptible d'être cassé. [0005] BUT DE L'INVENTION [0006] La présente invention a pour but de développer des moyens simples et particu- lièrement efficaces pour sécuriser le stockage de données. [0007] EXPOSE ET AVANTAGES DE L'INVENTION [0008] A cet effet, l'invention a pour objet un procédé de stockage sécurisé d'une donnée source (DS) d'un détenteur (To) avec la participation de tiers (Tx (x=1...m)) ayant chacun une clé publique (Kj) et une clé privée (Kj), constituant les participants Pj (To, Tx) (j=o...m) [0009] procédé caractérisé en cc qu'il comprend les étapes consistant à [0010] -obfusquer (Ob) la donnée source (DS) [0011] - fractionner (M) la donnée obfusquée [Ob (MS)] en miettes (Mi) (i = 0...n) [0012] - attribuer un groupe (Gj) à chaque participant (Pj) [0013] - répartir les miettes (Mi) sauf la miette Mo en groupes Gj (j=1...m), chaque miette (Mi) (i = 1...n) étant présente dans au moins deux groupes Gj, dont le groupe (Go) du détenteur (To) contenant au moins la miette (Mo) qui ne se trouve dans aucun des autres groupes (Gj (j=1...m)) destinés aux autres participants (Pj, j=1...m) [0014] - cryptcr (K) les miettes (Mi) de chaque groupe (Gj) avec la clé publique (Kj) du par- ticipant (Pj) attributaire du groupe (Gj) pour obtenir les groupes cryptes Kj (Gj) [0015] - regrouper (1) les groupes cryptes (Kj (Gj) pour obtenir les groupes de miettes concaténées I Kj (Gj) (j=o...m) [0016] - hacher (H) la donnée source (DS) par le détenteur (To) [0017] - crypter le hash H (DS) de la donnée source (DS) par une fonction de cryptage avec la miette cryptée (KoGo) du titulaire (To) pour obtenir un hash crypte HX (DS), [0018] - composer (C) la donnée transformée comme message (MC) combinant le hash 2 crypté HX (DS) et les miettes cryptécs (Kj (Gj)) concaténées. [0019] Cc procédé de stockage sécurisé et son inverse pour la récupération de la donnée sont des procédures particulièrement sûres puisque certains éléments de cryptage/décryptage sont répartis entre des détenteurs (tiers/participants) et ne peuvent être découverts par aucune procédure qui permettrait de casser un code de cryptage unique. Cette répartition de fractions de données (miettes) et leurs cryptages séparément augmente considérablement la sécurité du stockage puisqu'en l'absence de l'intervention d'un participant le message ne pourra être récupéré dans sa forme obfusquée que de façon partielle. En outre la présence parmi les participants du titulaire qui est le participant prioritaire, ne permet pas de récupérer la donnée source autrement que par le titulaire de la donnée source qui a été stockée. [0020] Un même participant ne peut être utilisé pour crypter toutes les miettes et donc au final on ne pourra jamais reconstituer les miettes avec le procédé inverse. Aucun participant ne doit pouvoir décrypter l'ensemble des miettes. [0021] Dans ce procédé/système, toutes les opérations s'effectuent chez le détenteur de la donnée source ; les tiers n'ont jamais accès à la donnée source ni aux miettes en clair, c'est-à-dire les miettes qui sont toujours obfusquées dans le sens du cryptage. [0022] De façon générale, la demande de décryptage peut provenir à priori de n'importe quel participant et celui-ci pourrait demander aux autres participants de lui renvoyer les miettes qu'ils peuvent décrypter pour que lui seul puisse les recombiner et désobfusquer le résultat pour obtenir la donnée décryptée car cela ne peut se faire que par le détenteur. [0023] Ainsi le procédé de récupération de la donnée s'effectue dans un premier temps sur les machines des participants qui sont les seuls à détenir leurs clés privées. Le procédé se finit sur la machine du demandeur de la donnée qui en général est normalement le détenteur. [0024] Selon une caractéristique particulièrement intéressante, on crypte le hash H (DS) avec la miette cryptée (KoGo) par la fonction XOR pour obtenir le hash crypté H (DS). [0025] Suivant une caractéristique avantageuse, selon le procédé on répartit les miettes cryptées en groupes dont un groupe destiné au détenteur et contenant au moins une miette qui ne se trouve dans aucun des autres groupes destinés aux autres participants. [0026] Suivant une caractéristique très avantageuse, on découpe (M) le message obfusqué (Ob (DS)) en un nombre de miettes (Mi) correspondant au nombre de participants (Pj (j=0,1...m)), et on répartit les miettes (Mi) : [0027] a) en formant des groupes (Gj) avec une paire de miettes (Mi) dont la première miette est la seconde miette de la paire du groupe (Gj-1) précédant de cette suite [0028] b) le titulaire (To) conserve une miette (Mo) non répartie avec les autres miettes (Mi=1...m) du découpage dans les autres groupes (Gj) j=1...m). 3 [0029] Selon une caractéristique avantageuse, pour obfusquer la chaîne de caractères constituant la donnée source DS on la complète pour avoir un nombre pair de caractères et on obfusque par un réseau de Feistel en appliquant à chaque tour une clé intermédiaire. [0030] Les clés utilisées dans le réseau Feistel sont des clés du titulaire ce qui augmente d'autant la sécurité. [0031] Selon l'invention le procédé de récupération de la donnée source provenant du stockage sécurisé comprend les étapes suivantes consistant à [0032] - séparer (C) le message combiné MC avec son hash HX (DS) et ses groupes de miettes cryptécs I Kj (Gj) [0033] - décrypter (K ) les miettes récupérées par les participants (Pj), avec leur dé privée Kj) respective 100341 - recombiner (M) les miettes décryptées Mi (i=1...n) et ajouter la miette (Mo) pour obtenir la donnée obfusquée 10b (DS1 100351 - désobfusquer (Ob) cette donnée obfusquée OB (DS) récupérée [0036] - vérifier (VF) l'intégrité de la donnée récupérée en comparant le hash HX(DS) extrait du message combiné MC et le hash H(DS) conservé par le détenteur To. [0037] L'invention a également pour objet un système de stockage/déstockage sécurisé d'une donnée source pour la mise en oeuvre du procédé. [0038] Ce système comprend [0039] - une fonction d'obfuscation (Ob) de la donnée source (DS) et sa fonction réciproque (Ob) pour désobfusquer la données obfusquée. [0040] - une fonction d'émiettage (M) pour fractionner la donnée obfusquée en miettes (Mi) et sa fonction inverse (M) pour recomposer la donnée obfusquée à partir des miettes. [0041] - une fonction de groupement (G) pour composer des groupes (Gj) de miettes (Mi) contenant un nombre déterminé de miettes et sa fonction inverse G [0042] -une fonction de concaténation (I) pour regrouper les miettes cryptées et sa fonction inverse / [0043] - une fonction dc hachage (H) pour hacher la donnée source (DS). [0044] - une fonction dc combinaison (C) pour combiner à la concaténation des groupes de miettes cryptécs, le hash crypte HX(Ds) de la donnée source (DS) et sa fonction inverse ((2.) de séparation (r) pour séparer le hash HX(DS) et les groupes de miettes cryptées Kj (Gj) [0045] - des paires de clés publique/privées Kj, Kj. (j=o...m) 100461 - une fonction de vérification (VF) pour comparer le hash HX(DS) récupéré du message combiné (MC), le décrypter et le comparer à la donnée source (DS) conservée par le titulaire To. Brève description des dessins [0047] La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'exemple du procédé et système de stockage sécurisé selon l'invention représentés dans les dessins annexés clans lesquels : [0048] [fie.11 Schéma de base du procédé de stockage sécurisé [0049] [fig.21 Schéma de base du procédé de récupération d'une donnée d'un stockage sécurisé [0050] [fig.31 Schéma du système pour la mise en oeuvre du procédé [0051] DESCRIPTION D'UN MODE DE REALISATION [0052] La présente invention a pour objet un procédé de stockage sécurisé d'une donnée DS d'un détenteur To avec l'intervention de ni tiers Tx (x=1...m) disposant chacun d'une paire de clés (clé publique Kj, clé privée Ki), et formant ainsi les participants Pj (j=o...m) composé du détenteur To et des tiers Tx. 100531 Le détenteur To de la donnée est, selon le cas, une personne physique ou une personne morale (entreprise) à laquelle sera confiée la donnée ou réciproquement. 100541 Le détenteur peut également être une ou plusieurs personnes physiques ou morales, de même que les personnes auxquelles sera confiée la donnée. Mais cela ne modifie pas le principe de stockage/déstockage sécurisé, décrit ci-après, dans un but de simplification, dans le cas d'un titulaire To unique. 100551 A titre d'exemple dans un cas qui se produira fréquemment, il y a deux détenteurs, celui auquel appartient la donnée et celui auquel elle est destinée pour être traitée ainsi que trois tiers de confiance participant au procédé de stockage sécurisé et de dé-stockage. 100561 Le détenteur To et les tiers Tx forment les participants Pj (j=p...m) au procédé de stockage/déstockage (procédé inverse) de la donnée. 100571 Selon la figure I, le procédé de stockage sécurisé consiste pour le détenteur To de la donnée source DS, dans une première étape à obfusquer Ob L donnée DS pour obtenir une donnée ohfusquée Oh (DS). Puis dans une deuxième étape le détenteur To fractionne M (découpe ; émiettage) cette donnée ohfusquée Oh (DS) en miettes Mi (i=o...n). 100581 De manière avantageuse mais non impérative, le nombre de miettes Mi est égal au nombre de participants Pj. [0059] Le nombre de participants est choisi librement. Pour le fonctionnement optimal, le système utilise au moins trois tiers T en plus du détenteur To qui lui est en situation prioritaire et le destinataire de la donnée Ds qui est l'homologue en sécurité du titulaire. [0060] Le défaut d'un tiers est compensé automatiquement par la présence des deux autres, ce qui permet soit de remplacer le tiers défaillant soit de réparer. [0061] Le défaut du détenteur To protège définitivement la donnée stockée car on ne peut plus appliquer le procédé inverse comme cela sera vu ensuite. [0062] Dans l'étape suivante, les miettes Mi sont réparties en autant de groupes Gj qu'il y a de participants Pj, y compris le détenteur. [0063] Les miettes Mi sont réparties dans les groupes Gj de façon que chaque miette Mi soit présente dans au moins deux groupes sauf la miette Mo réservée au titulaire To. [0064] En respectant cette condition et en fonction du nombre (n) de miettes Mi et du nombre (m) de participants Pj, les groupes Gj contiennent un nombre variable, identique ou différent de miettes Mi. [0065] Selon les exigences de sécurité, le titulaire To s'attribue un groupe Go qui contient une ou plusieurs miettes Mo qui ne se trouvent dans aucun autre groupe Gj (jo). [0066] Après l'attribution des groupes Gj aux participants Pj, les miettes Mi du groupe Gj de chaque participant (K) avec la clé publique Kj de ce participant. [0067] Gj (Mi) -> Kj (Gj) (j=o...m) [0068] Ainsi une ou plusieurs miettes Mi des groupes sont cryptées avec la clé publique Kj du participant Pj. [0069] Après le cryptage, on regroupe (I) tous les groupes de miettes cryptécs Kj (Gj) [0070] Kj (Gj)1! kj (Gj)- (j=o...m) [0071] En parallèle, le détenteur To hache (H) la donnée source (DS) [0072] (DS) -> H (DS) [0073] et ensuite la crypte par la fonction XOR avec sa miette Mo cryptée KoGo pour obtenir le hash spécial HX(DS). [0074] Puis on forme le message combiné MC en combinant (C) par concaténation le hash HX(DS) et les groupes de miettes cryptées Kj (Gj) (j=o...m) [0075] MC = HX(DS), I Kj (Gj) [0076] Le message combiné MC peut ensuite être sauvegardé sans risque par un service quelconque puisqu'il est indéchiffrable. [0077] Le détenteur To conserve le hash H (DS) de la donnée source pour pouvoir vérifier l'authenticité de la donnée qui sera récupérée. Pour cela, à la récupération, il compare son hash H (DS) au HX (DS) récupéré de la donnée combinée C. [0078] Dans les différentes étapes de formation du message MC, aucun participant Pj, l'exception du détenteur To, n'a connaissance de la donnée source DS. [0079] La première étape est celle de l'obfuscation (Ob) qui constitue une première sécurité. [0080] L'obfuscation (Ob) transforme la donnée DS en une suite de caractères de même longueur mais ne permettant plus d'en comprendre le sens directement, c'est-à-dire sans désobfuscation. [0081] L'obfuscation utilise l'implémentation du réseau de Feistel, nécessitant que la taille 6 de la donnée DS source se compose d'un nombre pair de caractères. Si tel n'est pas le cas, la donnée DS est complétée par rembourrage (padding) pour ajouter un caractère à la chaîne de taille impaire. [0082] L'ohfuscation Oh s'effectue comme suit : [0083] - vérification de la taille de la donnée source DS [0084] - ajout d'un caractère spécial à gauche (« left padding ») si la taille est impaire [0085] - application d'une implémentation du réseau de Feistel : [0086] * pour chaque tour, la donnée est découpée en deux parties égales [0087] * la partie de droite est chiffrée par une clé intermédiaire dans un algorithme de hachage (SHA-256 en l'occurrence). [0088] * les deux parties sont combinées par la fonction XOR puis concaténées à l'envers (la gauche à droite et la droite à gauche) pour donner naissance à une nouvelle chaîne de caractères de longueur identique [0089] * cette opération est répétée x tours (x étant paramétrable et fixé par exemple à 10). [0090] * la chaîne de caractères ainsi obtenue forme la donnée ohfusquée Oh (DS). [0091] Les clés utilisées dans le réseau de Feistel sont des clés dont seul le titulaire To est détenteur. [0092] Le découpage (M) (encore appelé émiettage) de la donnée ohfusquée Ob(DS), en miettes Mi (i=1...n) confiées aux participants Pj qui les cryptent avec leur clé publique Kj constitue une barrière supplémentaire car aucun des participants Pj ne peut lire les miettes cryptées par les autres participants. [0093] Il est rappelé qu'une miette Mo est réservée au titulaire To et ne sera pas combinée aux miettes Mi (i=1...n) dans les groupes Gj formés ensuite. [0094] La donnée ohfusquée Ob (DS) est découpée en miettes de longueur aléatoire. Le nombre de miettes dépend du nombre de participants Pj. Pour n participants Pj, il y aura n miettes ; n devant être strictement supérieur à 1 (n 3 2). [0095] La variation de longueur de chaque miette Mi dépend du nombre de miettes à obtenir. Un facteur d'aléa (deltaMax) est appliqué à la longueur moyenne des miettes (égale à la longueur de la chaîne Ob(DS) divisée par le nombre de miettes n). Ce facteur DeltaMax doit être inférieur ou égal à la taille moyenne -1, une miette ne pouvant être de longueur nulle. Il peut être égal à O. A titre d'exemple on utilise la valeur la plus élevée possible compte tenu de la longueur de la taille de la chaîne Ob(DS) et d'une taille minimale de miette (TAILLE_MINI fixée à 2) : [0096] deltaMax - max (0,2 (floor (length Ob(DS) / n) - TAILLE-MINI)) [0097] On prend en compte la longueur de la miette la plus grande par exemple 16 ca- ractères et on applique le rembourrage à gauche (« left padding ») sur chacune des miettes, en utilisant au minimum deux caractères de rembourrage. Ainsi, si la plus grande miette étant de longueur 16 caractères, toutes les miettes rembourrées finales 7 seront longues de 18 caractères. [0098] Le rembourrage/ »padding » s'effectue en ajoutant un caractère spécial en en-tête/à gauche de la chaîne de caractères de manière récursive jusqu'à obtenir une chaîne de la longueur souhaitée. [0099] La valeur de cc caractère spécial dépend de la valeur des deux premiers caractères de la chaîne à rembourrer. Par défaut, il s'agit du caractère unicode \u0002, mais si la valeur du premier ou du dernier caractère de la chaîne à rembourrer est égale à ce caractère au niveau binaire, on utilise une valeur alternative, qui doit elle aussi, être différente du premier et du dernier caractère de la chaîne à rembourrer. [0100] La miette (Mi) ainsi obtenue dans le groupe Gj sera de longueur identique à la longueur avant cryptage. [0101] La répartition dédoublée (RD) des miettes Mi en groupes Gj constitue une sécurité supplémentaire car en cas de disparition d'un tiers Tx, les miettes Mi de son groupe Gx sont, par définition, contenues dans au moins deux autres groupes et donc elles peuvent être récupérées séparément chez les tiers auxquels les groupements contenant ces miettes ont été attribués. [0102] La dernière étape consiste à créer un hash HX (DS) unique de la donnée source DS objet de l'opération, puis à concaténer cc hash crypté avec tous les groupes de miettes cryptée Kj (Gj) ; le hash HX(DS) est placé en tête de la chaîne de caractères ainsi constituée. [0103] La génération du hash crypté HX (DS) s'effectue comme suit : [0104] - la donnée source DS est hachée avec un algorithme de hachage utilisant par exemple SHA-256 donnant le hash H (DS). [0105] - le hash obtenu est découpé en deux parties égales [0106] - la deuxième partie (celle de droite) est combinée par une fonction XOR avec la concaténation des miettes cryptées, rendant le résultat obtenu unique à l'opération puisque dépendant de l'opération de cryptage qui génère des miettes uniques par traitement [0107] - la partie de gauche inchangée et la nouvelle partie de droite sont concaténées pour former le hash crypté unique HX (DS). [0108] Ce hash crypté HX (DS) est ensuite concaténé avec la concaténation des groupes de miettes cryptés IKj(Gj) sous leur référence simplifiée M[1, P1]... [0109] Ainsi, on a : [0110] représenté schématiquement que chaque miette Mi est attribuée ici à deux par- ticipants Pj [0111] MC -= HX (DS)1 MI(P1) Ml(P2) Mn(Pj-1) I Mn (Pj1) [0112] Cette chaine de caractères MC peut dès lors être stockée pour une utilisation future par tous ou certains des participants, voire par un autre tiers ne disposant d'aucune clé. 8 [0113] La donnée MC est indécryptable sans la présence d'au moins deux participants (à priori un tiers de confiance et le détenteur initial de la donnée). [0114] Le hash HX(DS) placé en en-tête servira à l'indexation de la donnée dans une hase de données ainsi qu'à la vérification de la conformité de la donnée décryptée avec la donnée source DS : le hash déchiffré dc la donnée décryptée doit être égal au hash de la donnée source. [0115] La situation du détenteur To vis-à-vis des tiers T1 ...Tm peut être de même niveau ou être prioritaire. [0116] Dans ce cas, si le détenteur To est sur le même niveau que les tiers Tj, les miettes Mi de son groupe Go se trouvent également dans deux ou plusieurs groupes Gj de tiers. Les miettes Mi peuvent être récupérées par les tiers Tl...Tin sans intervention du détenteur To. Mais les miettes Mi ne seront disponibles que dans cet état de miettes. [0117] Si le détenteur To conserve une situation prioritaire selon laquelle il se réserve au moins une miette Mo dans son groupe Go et qui ne se trouve dans aucun des autres groupes Gj, cette miette Mo sera cryptée par le seul détenteur. En son absence la totalité des miettes Mi ne pourra être décryptée par les tiers Ti ...Tj avec leur clé privée Ki et la donnée obfusquée Ob (DS) ne pourra être reconstituée. La donnée source DS reste protégée à cc niveau. [0118] La figure 2 montre la partie réciproque du procédé dc stockage sécurisé pour récupérer la donnée stockée sous sa forme combinée MC. [0119] En particulier la donnée combinée MC est vérifiée en fin de décryptage par la fonction de vérification VF qui vérifie l'intégrité dc cette donnée en comparant son hash HX(DS) au hash H (DS) conservé par le détenteur To. L'identité du hash de la combinaison MC avec le hash du détenteur To prouve que la donnée DS n'a pas été modifiée pendant son stockage. [0120] Avant cette vérification et pour permettre de la faire, la partie I Kj (Mi) c'est-à-dire la concaténation des groupes Gj de miettes cryptés est séparée (fonction de séparation ( (/) inverse de la fonction de combinaison (C)) puis les miettes sont décryptées avec les clés privées Kj des participants respectifs Pj. Les miettes des groupes décryptés Kj (Gj) sont recombinées par la fonction inverse de fractionnement M pour obtenir la donnée obfusquée Ob (DS) qui peut être traitée par la fonction de désobfuscation pb par le détenteur To ou le destinataire et obtenir alors la donnée desobfusquée qui est la donnée source DS. [0121] En résume, le décryptage effectue les différentes étapes dans le sens inverse : [0122] - extraction du hash crypte HX (DS) et des miettes Mi (i=1...n) et récupération du hash décrypté [0123] - décryptage des miettes par chacune des parties prenantes [chaque tiers de confiance 9 prenant soin d'enregistrer - dans un fichier de log - le fait que l'un des propriétaires de la donnée (généralement l'entreprise qui souhaite en jouir) demande ce décryptage] [0124] - dé-rembourrage des miettes [0125] - concaténation des miettes déscmhourrécs [0126] - désohfuscation des miettes [0127] - vérification de la conformité de la donnée DS par le hash de vérification HX(DS) et le hash HX(DS) récupéré de la combinaison. [0128] Le système de mise en oeuvre du procédé (figure 3) se compose d'un ensemble de fonctions de traitement de données appliquant un traitement aux données et des fonctions réciproques qui effectuent un traitement inverse de celui des fonctions directes. [0129] Le système englobe également un ensemble de clés publiques/clés privées Kj, Ki utilisées par les tiers Tj. [0130] Les fonctions du système sont appliquées par le détenteur To de la donnée source DS ou son mandataire. [0131] Ainsi le système S comprend : [0132] -une fonction d'ohfuscation (Oh) de la donnée source DS et sa fonction réciproque Ob) pour désohfusqucr la données ohfusquéc. [0133] - une fonction d'émicttagc (M) pour fractionner la donnée ohfusquéc en miettes Mi. Le nombre de miettes et le contenu des miettes dépendent des paramètres réglables de cette fonction M. [0134] - une fonction inverse (M) qui permet, à partir des miettes, de recomposer la donnée obfusquée. [0135] - une fonction de groupement (G) consistant à composer des groupes Gj de miettes Mi contenant un nombre déterminé de miettes. Cette répartition en groupes dépend également des paramètres de cette fonction selon le nombre de miettes, le nombre de tiers Tj englobant ou non le détenteur To est le nombre identifié ou différent de miettes placées dans les groupes Gj. [0136] -une fonction de concaténation (1) pour regrouper les miettes cryptées par les tiers Tj avec leur clé publique Kj. [0137] - une fonction de hachage (H) pour hacher la donnée source (DS). [0138] - une fonction de combinaison (C) pour combiner à la concaténation des miettes cryptées, le hash H (DS)1 de la donnée source (DS). [0139] - des paires de clés publiques/privées Kj, Kj à la disposition des participants Pj du traitement de la donnée DS, y compris le détenteur To qui dispose d'une paire de clés Ko, Ko [0140] - une fonction de vérification VF pour contrôler la donnée retournée après le stockage et vérifier son intégrité par comparaison du hash H (DS)1 extrait du message combiné MC et du hash H (DS)2 conservé par le du titulaire To. [0141] NOMENCLATURE DES ELEMENTS PRINCIPAUX [0142] DS Donnée source [0143] Oh Fonction "ohfusquer" [0144] Ob Fonction « désobfusquer » [0145] Oh (DS) Donnée source obfusquée [0146] M Fonction « découper en miettes [0147] M Fonction « recombiner les miettes [0148] Mi [Oh (DS)] Miette de la donnée source obfusquée [0149] Mi Miette de la donnée source obfusquée (référence simplifiée) [0150] G Fonction "répartir les miettes en groupes" [0151] Gj (Mi) Groupe de miettes Mi [0152] Go Groupe du titulaire contenant la miette Mo [0153] Kj (Gj) Groupe crypte avec la clé publique Kj [0154] Fonction « concaténer les groupes de miettes cryptes [0155] [Kj (Gj)] Concaténation des groupes cryptes [0156] H Fonction « hacher » (Fonction Flash) [0157] H (DS) Donnée source DS hachée [0158] HX(DS) Donnée source DS hachée et cryptée par la fonction XOR avec la miette cryptée KoGo [0159] KA Fonction « crypter » [0160] KA Fonction « décrypter » [0161] Kj Clé publique du participant Pj [0162] Kj Clé privée du participant Pj [0163] MC Message combiné [0164] To Détenteur de la donnée source [0165] Tj Tiers [0166] Pj Participant au traitement [0167] VF Fonction « vérifier » 11 [Revendication 1] [Revendication 2] [Revendication 3] REVENDICATIONSProcédé de stockage sécurisé d'une donnée source (DS) d'un détenteur (To) avec la participation de tiers (Tx (x=1 ...m)) ayant chacun une dé publique (Kj) et une clé privée (Kj), constituant les participants Pj (To, Tx) (j=o...m) procédé caractérisé en ce qu'il comprend les étapes consistant à -ohfusquer (Oh) la donnée source (DS) - fractionner (M) la donnée ohfusquée [Oh (MS)[ en miettes (Mi) (i = o...n) - attribuer un groupe (Gj) à chaque participant (Pj) - répartir les miettes (Mi) sauf la miette Mo en groupes Gj (j=1 ...m), chaque miette (Mi) (i = 1...n) étant présente dans au moins deux groupes Gj, dont le groupe (Go) du détenteur (To) contenant au moins la miette (Mo) qui ne se trouve dans aucun des autres groupes (Gj (j=1...m)) destines aux autres participants (Pj, j=1...m) - crypter (K) les miettes (Mi) de chaque groupe (Gj) avec la clé publique (Kj) du participant (Pj) attributaire du groupe (Gj) pour obtenir les groupes cryptes Kj (Gj) - regrouper (/) les groupes cryptes (Kj (Gj) pour obtenir les groupes de miettes concatenees F Kj (Gj) (j=o...m) - hacher (H) la donnée source (DS) par le détenteur (To) - crypter le hash H (DS) de la donnée source (DS) par une fonction de cryptage avec la micttc cryptee (KoGo) du titulaire (To) pour obtenir un hash crypte HX (DS), - composer (C) la donnée transformée comme message (MC) combinant le hash crypte HX (DS) et les miettes cryptées (Kj (Gj)) concatenees. Procédé selon la revendication 1, caractérisé en ce que on crypte le hash H (DS) avec la miette cryptee (KoGo) par la fonction XOR pour obtenir le hash crypte fiX (DS). Procédé selon la revendication 1, caractérisé en ce qu' on découpe (M) le message obfusqué (Ob (DS)) en un nombre de miettes (Mi) correspondant au nombre de participants(Pj (j=0,1...m)), et on répartit les miettes (Mi) : a) en formant des groupes (Gj) avec une paire de miettes (Mi) dont la première miette est la seconde miette de la paire du groupe (Gj-1) 12 [Revendication 4] [Revendication 5] [Revendication 6] précédant de cette suite h) le titulaire (To) conserve une miette (Mo) non répartie avec les autres miettes (Mi=1...m) du découpage dans les autres groupes (Gj) j=1... m). Procédé selon la revendication 1, caractérisé en ce que pour obfusquer la chaîne de caractères constituant la donnée source (DS), on la complète pour avoir un nombre pair de caractères et on ohfusque par un réseau de Feistel en appliquant à chaque tour une clé intermédiaire. Procédé de récupération de la donnée source (DS) du procédé de stockage sécurisé selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend les étapes suivantes consistant à : - séparer (C) le message combiné MC avec son hash HX(DS) et ses groupes de miettes cryptées Kj (Gj) - décrypter (K ) les miettes récupérées par les participants (Pj), avec leur clé privée (Kj) respective - recombiner (M) les miettes décryptées Mi (i=1...n) et ajouter la miette (Mo) pour obtenir la donnée obfusquée [Ob (DS] - désobfusquer (Ob) cette donnée obfusquée Ob (DS) récupérée - vérifier (VF) l'intégrité de la donnée récupérée en comparant le hash HX(DS) extrait du message combiné MC et le hash H(DS) conservé par le détenteur To Système de stockage/destockage sécurisé d'une donnée source (DS) pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 5, système comprenant : -une fonction d'obfuscation (Ob) de la donnée source (DS) et sa fonction réciproque (Ob) pour désobfusquer la données obfusquée. - une fonction d'émiettage (M) pour fractionner la donnée obfusquée en miettes (Mi) et sa fonction inverse (M) pour recomposer la donnée obfusquée à partir des miettes. - une fonction de groupement (G) pour composer des groupes (Gj) de miettes (Mi) contenant un nombre déterminé de miettes et sa fonction inverse 6 -une fonction de concaténation (1) pour regrouper les miettes cryptées et sa fonction inverse r - une fonction de hachage (I-1) pour hacher la donnée source (DS). 13 - une fonction de combinaison (C) pour combiner à la concaténation des groupes de miettes cryptées, le hash crypte HX(Ds) de la donnée source (DS) et sa fonction inverse ((2) de séparation (t) pour séparer le hash HX(DS) et les groupes de miettes cryptécs Kj (Gj) - des paires de clés publique/privées Kj, Ki. (j=o...m) - une fonction de vérification (VF) pour comparer le hash 1-1X(DS) récupéré du message combiné (MC), le décrypter et le comparer à la donnée source (DS) conservée par le titulaire To.