FR3050554A1 - Procede d'encodage d'un ensemble de bits - Google Patents
Procede d'encodage d'un ensemble de bits Download PDFInfo
- Publication number
- FR3050554A1 FR3050554A1 FR1653557A FR1653557A FR3050554A1 FR 3050554 A1 FR3050554 A1 FR 3050554A1 FR 1653557 A FR1653557 A FR 1653557A FR 1653557 A FR1653557 A FR 1653557A FR 3050554 A1 FR3050554 A1 FR 3050554A1
- Authority
- FR
- France
- Prior art keywords
- bits
- subset
- phase
- computer program
- integer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004364 calculation method Methods 0.000 claims abstract description 21
- 238000000638 solvent extraction Methods 0.000 claims abstract description 4
- 238000006243 chemical reaction Methods 0.000 claims abstract description 3
- 238000004590 computer program Methods 0.000 claims description 18
- 230000001143 conditioned effect Effects 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 7
- 238000000926 separation method Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 2
- 230000003252 repetitive effect Effects 0.000 description 59
- 238000005192 partition Methods 0.000 description 50
- 238000004422 calculation algorithm Methods 0.000 description 46
- 230000015654 memory Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
L'invention concerne un procédé d'encodage d'un ensemble de N1 bits, le nombre N1 étant un nombre entier, le procédé comprenant : - une phase de calcul comprenant la mise en œuvre d'au moins deux opérations de conversion d'un ensemble de N1 bits en un autre ensemble de N1 bits, les opérations de la phase de calcul étant itérées tant que le produit du nombre d'itération de la phase de calcul par le reste de la division euclidienne de k par N1 est strictement supérieur au nombre N1, et - une phase de partitionnement de l'ensemble de bits calculé en P éléments, P étant un nombre entier.
Description
Procédé d’encodage d’un ensemble de bits
DOMAINE DE L’INVENTION L’invention concerne un procédé d’encodage d’un ensemble de bits. L’invention se rapporte également à produit programme d’ordinateur et un support associé.
ARRIERE-PLAN DE L’INVENTION
De nombreuses méthodes de cryptographie sont connues pour sécuriser l’accès à un document ainsi qu’assurer la confidentialité du document.
Toutefois, ces méthodes sont difficiles à mettre en œuvre et requiert un temps calculatoire importante.
Une autre limitation de ces méthodes est relative au fait qu’est généralement requise la sauvegarde d’une information (un « secret ») sous forme de clé de cryptage ou autres. Une telle sauvegarde est indispensable pour la lecture des données traitées.
De plus, dans de nombreuses applications, le niveau de sécurité d’une méthode de cryptographie n’est pas requis.
RESUME DE L’INVENTION
Ainsi, il existe un besoin pour un procédé d’encodage d’un ensemble de bits qui soit de mise en œuvre plus aisée que les méthodes de cryptographie classiques.
La présente description décrit un procédé d’encodage d’un ensemble de N1 bits, le nombre N1 étant un nombre entier, le procédé comprenant une phase de calcul comprenant la mise en œuvre d’au moins deux opérations de conversion d’un ensemble de N1 bits en un autre ensemble de N1 bits. La première opération comprenant les étapes de séparation de l’ensemble de N1 bits en X sous-ensembles de bits contiguës et éventuellement un X+1-ième sous-ensemble des bits restants, chaque sous-ensemble comportant N2 bits, N2 étant un entier strictement inférieur à l’entier N1, et X étant égal à [N1/N2], d’obtention, pour chaque sous-ensemble des X sous-ensembles, d’un sous-ensemble modifié par modification de la valeur de bits d’au moins [N2/2] bits ayant un emplacement prédéfini dans le sous-ensemble considéré, la modification étant conditionnée à la valeur prise par des bits du sous-ensemble considéré et de reconstitution éventuelle d’un nouvel ensemble de bits à partir de chacun des X sous-ensemble modifié et du X+1-ième sous-ensemble des bits restants lorsque le X+1-ième sous-ensemble existe. La deuxième opération comprenant une étape de décalage de k bits de l’ensemble des N1 bits, pour obtenir un nouvel ensemble, k n’étant pas multiple de N1. Les opérations de la phase de calcul sont itérées tant que le produit du nombre d’itération de la phase de calcul par le reste de la division euclidienne de k par N1 est strictement supérieur au nombre N1. Le procédé d’encodage comprend également une phase de partitionnement de l’ensemble de bits calculé en P éléments, P étant un nombre entier.
Suivant un mode de réalisation particulier, le procédé comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - les [N2/2] bits ayant un emplacement prédéfini sont contiguës. - N2 est égal à 4. - lors de l’étape d’obtention, la modification est une permutation entre les [N2/2] bits et les autres bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente. - lors de l’étape d’obtention, la modification est un ou exclusif entre les [N2/2] bits et les autres bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente. - lors de l’étape d’obtention, la modification est un échange des positions des [N2/2] bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente. - le nombre d’itérations est supérieur ou égal à 10. - la phase de calcul comporte une troisième opération, la troisième opération étant une opération de calcul déterministe et inversible. - la troisième opération comporte des étapes de séparation de l’ensemble de bits en sous-ensembles de Y bits et éventuellement un N+1 sous-ensemble des bits restants, chaque étape de séparation étant mise en œuvre pour tous les nombres Y qui sont des nombres premiers compris entre 3 et 31 inclus. - le nombre d’itérations est égal au nombre de nombres Y distincts.
Il est aussi proposé un produit programme d’ordinateur comportant un support lisible d’informations, sur lequel est mémorisé un programme d’ordinateur comprenant des instructions de programme, le programme d’ordinateur étant chargeable sur une unité de traitement de données et adapté pour entraîner la mise en œuvre d’un procédé tel que précédemment décrit lorsque le programme d’ordinateur est mis en œuvre sur l’unité de traitement des données.
Il est également proposé un support d’information comprenant le produit programme d’ordinateur tel que précédemment décrit.
BREVE DESCRIPTION DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui suit de modes de réalisation de l'invention, donnée à titre d'exemple uniquement et en référence aux dessins qui sont : - figure 1, une vue schématique d’un exemple de système permettant la mise en œuvre d’un procédé d’encodage, - figure 2, un ordinogramme d’un exemple de mise en œuvre d’un procédé d’encodage, - figure 3, un ordinogramme d’un autre exemple de mise en œuvre d’un procédé d’encodage, et - figure 4, un exemple de mise en œuvre d’un procédé d’encodage spécifique.
DESCRIPTION DETAILLEE DE MODES DE REALISATION DE L’INVENTION
Un système 10 et un produit programme d’ordinateur 12 sont représentés à la figure 1. L’interaction du produit programme d’ordinateur 12 avec le système 10 permet de mettre en œuvre un procédé d’encodage d’un ensemble de N1 bits.
Le nombre N1 est un nombre entier.
Le système 10 est un ordinateur.
Plus généralement, le système 10 est un calculateur électronique propre à manipuler et/ou transformer des données représentées comme des quantités électroniques ou physique dans des registres du système 10 et/ou des mémoires en d’autres données similaires correspondant à des données physiques dans des mémoires, des registres ou autres types de dispositifs d’affichage, de transmission ou de mémorisation.
Le système 10 comporte un processeur 14 comprenant une unité de traitement de données 16, des mémoires 18 et un lecteur 20 de support d’informations. Le système 10 comprend un clavier 22 et une unité d’affichage 24.
Le produit programme d’ordinateur 12 comporte un support lisible d’informations 20.
Un support lisible d’informations 20 est un support lisible par le système 10, usuellement par l’unité de traitement de données 14. Le support lisible d’informations 20 est un médium adapté à mémoriser des instructions électroniques et capables d’être couplé à un bus d’un système informatique. A titre d’exemple, le support lisible d’informations 20 est une disquette ou disque souple (de la dénomination anglaise de « floppy disk »), un disque optique, un CD-ROM, un disque magnéto-optique, une mémoire ROM, une mémoire RAM, une mémoire EPROM, une mémoire EEPROM, une carte magnétique ou une carte optique.
Sur le support lisible d’informations 20 est mémorisé un programme d’ordinateur comprenant des instructions de programme.
Le programme d’ordinateur est chargeable sur l’unité de traitement de données 14 et est adapté pour entraîner la mise en œuvre d’un procédé d’encodage lorsque le programme d’ordinateur est mis en œuvre sur l’unité de traitement des données 14.
Le fonctionnement du système 10 en interaction avec le produit programme d’ordinateur 12 est maintenant décrit en référence à la figure 2 qui illustre un exemple de mise en œuvre d’un procédé d’encodage d’un ensemble de N1 bits.
Le procédé comporte deux phases P1 et P2.
La première phase P1 est une phase de calcul.
Lors de la première phase P1, au moins deux opérations sont mises en œuvre pour convertir l’ensemble de N1 bits en un autre ensemble de N1 bits.
Selon l’exemple particulier de la figure 2, la première phase P1 comporte une première opération 01 et une deuxième opération 02.
La première opération 01 comporte trois étapes, une étape de séparation 100, une étape d’obtention 102 et une étape de reconstitution 104.
Lors de l’étape de séparation 100, l’ensemble de N1 bits est séparé en X sous-ensembles de bits contiguës et éventuellement un X+1-ième sous-ensemble des bits restants.
Chaque sous-ensemble comporte N2 bits. N2 est un nombre entier strictement inférieur à l’entier N1.
Selon un mode de réalisation, le nombre N2 est égal à 4.
De ces différentes propriétés, il résulte que le nombre X est égal à la partie entière de N1 sur N2, ce qui signifie que X = [N1/N2].
Lors de l’étape d’obtention 102, pour chacun des X sous-ensembles, la valeur de bits d’au moins [N2/2] bits ayant un emplacement prédéfini dans le sous-ensemble considéré est modifiée sous condition.
La modification est conditionnée à la valeur prise par les autres bits du sous-ensemble considéré.
Selon un exemple spécifique, les [N2/2] bits ayant un emplacement prédéfini sont contigus. A titre d’illustration, la modification est une permutation entre les [N2/2] bits et les autres bits, l’opération étant conditionnée au fait que les autres bits aient une même valeur.
Lors de l’étape de reconstitution 104, il est reconstitué un nouvel ensemble de bits à partir de chacun des X sous-ensemble modifié et du X+1-ième sous-ensemble des bits restants lorsque le X+1 -ième sous-ensemble existe.
La deuxième opération 02 est une opération de calcul comporte une étape de décalage 106.
Lors de l’étape de décalage 106, il est effectué un décalage de l’ensemble de N1 bits de k bits. k est un nombre entier. L’entier N1 n’est pas multiple de l’entier k.
De préférence, pour simplifier les calculs, l’entier k est strictement inférieur à N1.
Selon un exemple particulier, lors de l’étape de décalage 106, il est mis en œuvre une permutation circulaire de l’ensemble de N1 bits de k bits.
Les opérations 01 et 02 de la phase de calcul étant itérées tant que le produit du nombre d’itération de la phase de calcul par le reste de la division euclidienne de k par N1 est strictement supérieur au nombre N1.
Cela assure que l’opération de décalage permet de faire au moins un tour complet de l’ensemble des N1 bits.
Selon un exemple particulier, le nombre d’itérations est supérieur ou égal à 10.
Les opérations 01 et 02 sont propre à être envoyées à des processus, les processus pouvant être exécutés sur des serveurs distincts.
Selon un mode de réalisation le nombre de processus est proportionnel au nombre d’éléments.
La deuxième phase P2 est une phase de partitionnement de l’ensemble de bits obtenu à l’issue de la mise en œuvre de la première phase P1 de calcul. L’ensemble de bits calculé est partitionnée en P éléments.
Par exemple, P est un nombre entier supérieur à 2, de préférence supérieur à 15.
Le procédé présente l’avantage d’être aisé à mettre en œuvre.
De plus, le procédé garantit une certaine offuscation des données qui s’avère utile dans certains cas d’usage particulier.
Typiquement, un document de type .doc ou autre qui serait mémorisé en plusieurs parties grâce au procédé ne serait pas lisible pour la personne qui volerait l’ordinateur de l’utilisateur. De fait, l’ordinateur ne mémoriserait dans ce cas qu’une seule partie du document.
Un autre exemple est le cas où le fichier est divisé en deux parties mémorisées dans deux fournisseurs de stockage appartenant à des nuages différents. Si les deux fournisseurs ne collaborent pas entre eux (par exemple, pour s’échanger les parties), il n’est pas possible de lire le fichier.
Selon un autre mode de réalisation illustrée par la figure 3, le procédé d’encodage diffère du procédé selon la figure 2 en ce que la phase de calcul P1 comporte une troisième opération 03.
Selon l’exemple illustré par la figure 3, la troisième opération 03 est mise en œuvre après la mise en œuvre de l’opération 01 et avant la mise en œuvre de l’opération 02.
Selon l’exemple illustré, la troisième opération 03 est une opération de calcul déterministe et inversible.
Une opération est déterministe dès lors que le nombre d’états possibles accessibles est fini par mise en œuvre de l’opération.
Une opération inversible est une opération pour laquelle une opération inverse existe.
Selon un cas particulier, la troisième opération 03 est une permutation de bits.
Une telle permutation est inversible et le nombre de combinaison pouvant résulter d’une telle permutation est finie.
Le procédé selon la mode présente les mêmes avantages que dans le mode de réalisation précédent.
En outre, dans ce mode de réalisation, le procédé est un procédé d’encodage sans clé de chiffrement.
Selon un cas particulier, la phase de calcul est illustrée par l’exemple de la figure 4.
Dans le cas illustré, la troisième opération comporte des étapes de séparation de l’ensemble de bits en N sous-ensembles de Y bits et éventuellement un N+1 sous-ensemble des bits restants, chaque étape de séparation étant mise en œuvre pour tous les nombres Y qui sont des nombres premiers compris entre 3 et 31 inclus.
De plus, le nombre d’itérations est égal au nombre de nombres Y distincts. Dans cet exemple, le procédé a l’avantage de cacher des modifications éventuellement présentes.
Pour mieux comprendre cet exemple, nous allons discuter plus précisément les travaux effectués par la demanderesse dans le paragraphe qui suit intitulé « mise en œuvre expérimentale dans un cas particulier»
MISE EN ŒUVRE EXPERIMENTALE DANS UN CAS PARTICULIER
Introduction
Dans un travail précédent, nous avions présenté le Light Blind (littéralement en français « aveugle léger >>), un système qui réalise la confidentialité des données par division du texte original (texte en clair) en de multiples partitions qui sont ensuite stockées sur différents hébergeurs sur le cloud.
Le processus de génération des partitions dans le Light Blind est composé de trois étapes : • générer une clé aléatoire de correspondance servant à affecter des bits à des partitions, • diviser les données d’entrée en bloc de la taille de la clé générée à l’étape de génération et découpler chaque bloc à la clé de correspondance pour obtenir les partitions, et • mixer les bits des partitions dans le but de masquer une éventuelle séquence. Cette étape de mixage est faite à travers l’algorithme Cut-And-Shuffle (littéralement « couper et mélanger »). Cet algorithme est appelé algorithme CAS dans la suite
Cette invention vise à renforcer le Light Blind et l’algorithme CAS dans le but de de se débarrasser de l’utilisation de toute clé de chiffrement (soit être totalement déterministe) et de rendre difficile, en prenant une partition sans avoir accès aux autres, de retrouver la position originale des bits dans le texte en clair.
Dans le but d’atteindre ces buts, nous laissons tomber la première phase du processus de génération des partitions dans le Light Blind pour éviter l’utilisation d’une clé, mais par contre, nous ajoutons deux phases supplémentaires au niveau de l’algorithme CAS dans le but de le rendre non réversible : c’est-à-dire éviter qu’à partir d’une partition mémorisée sur le nuage informatique (« cloud »), il soit possible de connaître la position initiale des bits composant la partition. La version améliorée de l’algorithme CAS est appelé SCASS. L’acronyme SCASS renvoie à « Swap, Cut-And-Shuffle then Shift » qui signifie littéralement « permuter, couper et mélanger et ensuite décaler ». L’algorithme SCASS produit des partitions qui sont non intelligibles seules, soit construites de façon à ce qu’un adversaire ne puisse pas retrouver l’entrée originale ou une partition de celle-ci à partir d’une simple partie résultant de la partition.
Analyse de l’algorithme CAS
Nous considérons l’algorithme CAS détaillé plus précisément dans la partie annexe. L’entrée I est divisée en lignes selon la formule Rpos = {Ri,R2, ,Rn}· Chaque ligne R a une taille identique Rs qui correspond à la taille de l’entrée ls divisée par le nombre de lignes Rn. Si le nombre de bits d’entrée n’est pas divisible par le nombre de lignes soit si ls mod (Rs) Φ 0, les premières lignes ls mod Rs contiendront un bit supplémentaire.
Pour faciliter la lecture, le tableau 1 donne les symboles utilisés dans l’analyse de l’algorithme.
Le tableau 1 est ci-après reproduit :
Tableau 1 : Symboles utilisés et leur signification L’algorithme CAS étant déterministe, pour une taille d’entrée et un nombre de lignes donnés, un bit dans une certaine position dans l’entrée évoluera toujours dans la même position en sortie.
Par exemple, les trois premiers bits de l’entrée finiront toujours en position 1, 2, 3 de la première partition en sortie. Cela s’explique parce qu’ils sont toujours dans la première colonne de l’algorithme CAS.
En donnant la position (soit le nombre de bits qui précédent), sa ligne (la ligne comme on l’entend dans l’algorithme CAS) et le nombre total de lignes, nous pouvons prédire la nouvelle position et la nouvelle ligne que le bit va occuper après une itération de l’algorithme CAS. Nous identifions l’itération de l’algorithme CAS par le nombre premier qu’il utilise. Nous rappelons que la première itération utilise le nombre premier 3, la seconde itération le 5, puis le 7, 11, 13 et ainsi de suite.
Plus formellement, pour un bit b à une position donnée bp, à l’itération de nombre premier p, avec le nombre total de lignes Rn et à une position de ligne Rpos, L’équation 1 définit Bprev comme le nombre de blocs de taille p qui précède b (en excluant le bloc de b). L’équation 1 s’écrit :
L’équation 2 définit bB comme le nombre de bits qui précède b dans le bloc (B) dans sa rangée brpos :
L’équation 3 définit Rnext comme le numéro de la ligne que le bit b va occuper après l’itération. L’équation 3 s’écrit :
L’équation 4 définit RBprev comme les blocs précédents Bprev qui seront sur la même ligne que le bit après l’itération. L’équation 3 s’écrit :
L’équation 5 définit Pnext comme la nouvelle position du bit b dans la ligne Rnext après l’itération. L’équation 5 s’écrit :
Comme expliqué précédemment, avec une partition donnée, le déterminisme de l’algorithme CAS rend facile la reconstruction de la position d’origine de chaque bit. Une autre faiblesse de l’algorithme CAS est qu’il ne décale aucun bit : à chaque phase de l’algorithme CAS, les bits du début d’une ligne vont se mouvoir au début de la nouvelle ligne, les bits du milieu de la ligne vont se mouvoir au milieu de la ligne nouvelle et les bits en fin de la ligne vont se mouvoir en fin de la ligne nouvelle. Ces deux problèmes rendent de l’algorithme facilement réversible. Ces deux problèmes sont surmontés par la permutation et par le décalage des bits à chaque itération.
Le mécanisme de partition irréversible : SCASS
Dans le but d’empêcher de renverser l’algorithme CAS sans avoir toutes les partitions, nous allons mixer l’ordre des bits à chaque étape des itérations de l’algorithme CAS. L’idée est de permuter des bits de telle façon que la position originale d’un bit ne peut pas être découverte sans avoir au moins deux partitions. Nous appelons ces mécanismes, la phase de permutation. De plus, nous introduisons une phase de décalage pour éviter que des bits à une certaine position (par exemple au début de l’entrée) demeurent dans cette position.
Dans l’invention, il s’agit d’un cas particulier des opérations 01, 02 et 03 dans laquelle, l’opération 01 est la permutation, l’opération 02 est le décalage et l’opération 03 l’algorithme CAS. L’idée de la phase de permutation est de déplacer des paires de bits selon une propriété impliquant plusieurs partitions de telle façon que connaître une partition ne suffit pas à renverser l’algorithme. A cette fin, nous ajoutons la phase de permutation avant l’opération de découpage à chaque itération de l’algorithme CAS. Dans la phase de permutation, nous prenons des blocs de quatre bits contigus et nous analysons d’abord les deux premiers bits. S’ils sont égaux alors on permute la deuxième paire. Puis, nous analysons la deuxième paire et si les bits sont égaux alors on permute la première paire.
Après les 10 phases de l’algorithme SCASS, il est obtenu n partitions Si, S2, S3, ...,Sn à télécharger sur les hébergeurs du nuage en prenant les bits k, k+n, k+2n, k+3n où k est l’index de la partition (k=1 pour Si, k=2 pour S2, k=n pour Sn).
Grâce à la phase de permutation, il n’est pas possible de déduire la position initiale d’un bit (soit la position des données en clair) sans connaître le bit suivant (dans le cas d’une position paire) ou le bit précédent (dans le cas d’une position impaire).
Comme chaque hébergeur du nuage reçoit une série de bits non contigus, il ne peut pas déduire avec certitude la position initiale des bits dans sa partition sans accointance avec un autre hébergeur pour obtenir la prochaine partition (ou la partition précédente dans le cas d’une position impaire). Ces éléments sont détaillés plus précisément dans la suite.
Comme discuté précédemment à propos de l’algorithme CAS, des bits à une certaine position dans les partitions ne changent pas leur position. Ceci est dû au fait que l’algorithme CAS mixe entre eux les blocs adjacents. L’algorithme SCASS surmonte ce problème en décalant sur la droite les bits à chaque phase. Dans la phase de décalage, les bits dans chaque partition sont décalés sur la droite de k bits, avec k = Ss/#lter où Ss est la taille de la partition et #lter est le nombre d’itérations de l’algorithme (voir table 1 pour la description des symboles et des variables).
Nous choisissons Ss/#lter parce que nous voulons que les bits se déplacent sur toute la longueur de l’entrée. Dans la discussion suivante, nous considérons 10 itérations du SCASS, donc nous considérons k = Ss/10.
Analyse du SCASS
Avec la phase de permutation à chaque itération de l’algorithme SCASS , chaque bit a 50% de chance d’être permuté. Sa nouvelle position (variable Pnext de l’équation 4) dépend de la permutation (si elle est effective ou pas) et s’il se déplace vers la place du bit suivant (bits en position paire) ou vers la place du bit précédent (bits en position impaire). Avec la phase de décalage, chaque bit se déplace à droite de k positions où k = [Ss/10]) et Ss est le nombre de bits dans la partition. L’équation 5 devient :
La première équation correspond au cas où il n’y a pas eu d’opération de permutation, la deuxième équation au cas où il y a eu une permutation un nombre pair de fois et la troisième équation au cas où il y a eu permutation un nombre impair de fois.
Si un adversaire veut renverser l’algorithme SCASS bit par bit sans avoir accès à d’autres partitions, il doit considérer à chaque phase 2 positions possibles : soit la position supposant qu’une opération de permutation a été faite, soit la position supposant que la permutation n’a pas été faite. (Nous supposons prudemment que l’adversaire sait si les bits sont en position paire ou impaire). Cela donne 210 combinaisons : à la dernière itération, chaque bit est susceptible d’être à 210 positions différentes.
ANNEXE
Dans le but d’assurer la confidentialité de données, le Light Blint utilise l’algorithme CAS pour mixer l’entrée de façon à ce qu’aucune séquence répétitive potentielle du texte en clair ne puisse se refléter dans le texte chiffré.
Cet algorithme est ici détaillé en référence à la figure 4.
La figure 4 montre un exemple de séquence répétitive au niveau des blocs d’entrée qui est reflétée dans les partitions générées pour une clé donnée. Dans l’exemple, les trois partitions possèdent chacune une séquence différente qui est répétée tous les quatre bits. Pour résoudre ce problème de répétition, on ne va pas stocker les partitions dans les hébergeurs du nuage juste après leur génération mais on va ajouter une étape supplémentaire de découpage des data contenues dans les partitions, puis de battage. On découpe d’abord les lignes des partitions pour former des colonnes composées de séquences libres, puis on rebat ces colonnes pour former de nouvelles partitions. Si une partition possède une séquence répétitive de n bits et si on découpe la partition en blocs de k bits avec k< n et k premier avec n, les premiers n blocs de k bits chacun ne contiendront alors aucune séquence répétitive.
Phase de découpage
Dans la phase de découpage, on aligne les partitions en lignes, puis on découpe chaque ligne en bloc de k bits. Le premier bloc de chaque ligne constitue la première colonne, le second bloc de chaque ligne constitue la deuxième colonne et ainsi de suite (lignes rouge verticales dans la figure 3).
Remarquez que les n premières colonnes générées par la phase de découpage ne contiennent aucune séquence répétitive issue du texte en clair grâce à l’hypothèse que la longueur k du découpage est première avec la longueur n de la séquence répétitive du texte en clair.
Phase de battage
Dans la phase de battage, on associe la première colonne au premier hébergeur du nuage, la seconde colonne au deuxième hébergeur du cloud et ainsi de suite. Quand il n’y a plus d’hébergeur, on redémarre l’association avec le premier hébergeur de façon circulaire. Cette nouvelle association entre colonnes et hébergeurs génère un nouveau jeu de partitions qui ne contiennent aucune séquence répétitive du texte en clair.
Le problème de l’algorithme CAS est que de nouvelles séquences répétitives apparaissent : dans la phase de découpage d’une séquence répétitive de longueur n, les n premières colonnes sont uniques. Mais après la nlème, les colonnes se répètent : la colonne numéro n+1 est égale à la colonne 1, la colonne n+2 est égale à la colonne 2, etc.
Considérons l’exemple de la figure 3. Il y a trois partitions qui contiennent chacune une séquence répétitive de longueur 4 (0110 pour l’hébergeur c1, 1110 pour l’hébergeur c2 and 1001 pour l’hébergeur c3). Dans la phase de découpage (lignes rouge verticales de la figure 3), on découpe la séquence de longueur n=4 en blocs de longueur k=3 (remarquez que 3 est plus petit que 4 et premier avec lui), les séquences répétitives initiales (0110, 1110 et 1001) sont cassées et aucun des blocs de 3 bits générés ne contient de séquence répétitive.
On associe chaque colonne à une nouvelle partition de façon circulaire. La figure montre les premières 4 colonnes nommées « a », « b », « c » et « d ». Chaque colonne contient 9 bits et est unique. Le problème survient après la quatrième colonne : le découpage d’une séquence répétitive de longueur 4 en colonnes de longueur 3, implique que le découpage est répété toutes les 4 colonnes, ainsi la colonne 5 sera égale à la colonne 1, la colonne 6 égale à la colonne2 et ainsi de suite. De façon générale, ce qui arrive est que, lorsque l’on découpe une séquence répétitive de n bits en blocs de k bits, le découpage va générer une répétition tous les n*k bits soit tous les n blocs. Cela implique que la colonne i sera la même que la colonne i mod n.
Dans le bas de la figure 3, nous avons nommé les 4 colonnes a, b, c et d et nous montrons, pour l’hébergeur c1, qu’une nouvelle séquence répétitive apparaît : a-b-c-d
Puisque les hébergeurs sont associés aux colonnes de façon circulaire, l’hébergeur c1 va recevoir les mêmes colonnes a, b, c et d dans cet ordre, de façon répétitive. Cela signifie que l’hébergeur c1 observera une nouvelle séquence répétitive composée par la concaténation des colonnes a-b-c-d. Dans l’exemple de la figure 3, la nouvelle séquence répétitive a une longueur de 4 colonnes de 9 bits chacune (soit 36 bits). Plus généralement, en utilisant cette technique, la partition contiendra une séquence qui se répétera tous les k*#of rows(clouds)*n. C’est la propriété clé de l’algorithme CAS : après une opération de CAS, l’algorithme mixe ensemble un nombre de bits, cassant toute séquence répétitive qu’ils peuvent contenir.
Le problème de la séquence répétitive peut être atténué en découpant les lignes des partitions en colonnes et en assignant les colonnes à une nouvelle série de partitions. Les problèmes de cette technique sont que i) elle ne cache pas complètement les séquences répétitives, mais il les rend en quelque sorte plus grandes et ii) elle nécessite de connaître la longueur de la séquence répétitive pour trouver un nombre plus petit que la longueur de la séquence répétitive et premier avec elle. Dans la pratique, nous résolvons les problèmes, en itérant notre algorithme plusieurs fois et en utilisant à chaque fois un nombre premier différent.
La figure 4 montre comment les séquences répétitives de 4 bits sont mélangées pour former des séquences répétitives de 36 bits en découpant la partition initiale en colonnes de 3 bits. L'idée est d’itérer plusieurs fois la même procédure de CAS afin d’augmenter la taille de bits mixés à une dimension qui permet de masquer tous les séquences répétitives possibles.
Dans notre algorithme, nous répétons l'étape le découpage et le battage dix fois. On utilise la séquence des 10 premiers nombres premiers impairs (3, 5, 7, 11, 13, 17, 19, 23, 29 et 31) pour choisir la taille du bloc à chaque étape. Par souci de simplification, nous supposons tout d'abord que l'entrée ne contient pas de séquences répétitives multiples de l'un des nombres premiers utilisés dans l'étape de découpage afin d’éviter de démentir l'hypothèse que la longueur de la coupure est première avec la longueur de la séquence répétitive. Ensuite, nous généralisons notre description en considérant ces cas.
Nous appelons taille de la séquence répétitive ou d'une colonne le nombre de ses bits. La première itération génère une colonne de 3 bits, les deuxièmes de 5 bits, puis de 7 bits, etc., jusqu'à la dernière itération qui découpe une colonne de 31 bits. L'algorithme CAS casse les séquences répétitives en regard de leur taille: la première itération cache toutes les séquences répétitives possibles ayant une taille non multiple de trois dans de grandes séquences répétitives de taille (3 * Rn * n) bits où n est la taille de la séquence répétitive.
Après la première itération, la nouvelle partition a des séquences répétitives de taille 36. Dans la deuxième itération, toutes les séquences répétitives (nous supposons qu'elles ne sont pas multiples de 5) sont cachées dans des séquences plus grandes de taille 5 * Rn * n où n est la taille de la séquence répétitive générée dans l'itération précédente (36 dans l'exemple).
Après la deuxième itération, la nouvelle taille de la séquence répétitive est de 180 (= 36x5) bits.
Après chaque étape de l'algorithme CAS, la taille d’une séquence répétitive potentielle dans la partition en sortie est augmentée par un facteur égal au nombre utilisé dans la phase de découpe. À la fin de la 10eme transformation, toute séquence répétitive dans la partition de sortie ne peut pas être plus petite que le modèle initial multiplié par 1.0028x1011 (soit 3*5*7*11*13*17*19*23*29*31). Ceci est équivalent à mélanger ensemble des blocs de 1.0028x1011 bits, permettant à l’algorithme de cacher chaque séquence répétitive plus petite que cette taille. Ça peut être vu comme un classique
Electronic Code Book (ECB) avec une taille de bloc (et donc une taille de clé) de 1.0028x1011 bits.
Si on découpe une partition contenant une séquence répétitive de taille n en blocs de k bits et si k est premier avec n, alors les n premiers blocs de k bits sont uniques (càd, ils ne contiennent pas de séquence répétitive). Plus généralement, en découpant une séquence répétitive de taille n en blocs de taille k, les blocs générés se répètent tous les n/k blocs si n est divisible par k, ou tous les n blocs sinon. Plus le nombre de blocs uniques générés par les découpes est important, mieux les séquences répétitives sont cachées. Intuitivement, une séquence de blocs uniques de taille s, mixe toutes les séquences répétitives potentielles dans les s bits correspondant à l'entrée. Puisque nous ne connaissons pas à l'avance la taille des séquences répétitives qui peuvent être contenues dans le texte en clair, dans l'algorithme CAS, nous avons utilisé une séquence de nombres premiers pour, concernant la taille de bloc, minimiser la probabilité que la taille de la séquence répétitive soit divisible par le taille du bloc.
En outre, les nombres premiers ne partagent aucun diviseur, donc une séquence répétitive peut être divisible par (ou multiple de) un seul nombre premier. Ceci implique que, dans le pire des cas, au plus l'une des dix itérations de l'algorithme CAS n’est pas perspicace. L'impact d'avoir une séquence répétitive multiple de l'un des dix nombres premiers est négligeable parce que, dans le pire des cas, l'algorithme mixe ensemble 3.2348 x 109 (3*5*7*11*13*17*19*23*29) bits au lieu de 1.0028x1011 (3*5*7*11*13*17*19*23*29*31) bits. Mixer 3.2348 109 bits est plus que suffisant pour cacher toutes les séquences répétitives possibles dans le monde réel (et peut-être aussi dans le monde imaginaire).
Par souci de simplicité, dans la discussion précédente, nous avons considéré que les séquences répétitives émanant du texte en clair et se retrouvant dans les partitions ont la même taille. Ce n'est pas nécessairement le cas. Il est possible qu’une séquence répétitive dans le texte en clair puisse donner différentes séquences répétitives de longueur différente dans les partitions. Dans ce cas, le CAS est encore plus efficace dans le fait de cacher les séquences répétitives car les colonnes se répètent avec une fréquence plus basse. Intuitivement, dans l'étape de découpe de l'algorithme CAS, si toutes les lignes (soit les partitions) ont une séquence répétitive de la même taille n, la séquence répétitive se répète toutes les n colonnes, tandis que si une ligne a une séquence répétitive de taille n et une autre a une séquence répétitive de taille n’, alors la séquence répétitive se répète toutes les k colonnes, k étant le plus petit dénominateur commun de n et n’. Nous rappelons que moins les colonnes se répètent mieux de l'algorithme CAS fonctionne.
Claims (10)
- REVENDICATIONS1. - Procédé d’encodage d’un ensemble de N1 bits, le nombre N1 étant un nombre entier, le procédé comprenant : - une phase de calcul comprenant la mise en œuvre d’au moins deux opérations de conversion d’un ensemble de N1 bits en un autre ensemble de N1 bits, la première opération comprenant les étapes de : - séparation de l’ensemble de N1 bits en X sous-ensembles de bits contiguës et éventuellement un X+1-ième sous-ensemble des bits restants, chaque sous-ensemble comportant N2 bits, N2 étant un entier strictement inférieur à l’entier N1, et X étant égal à [N1/N2], - obtention, pour chaque sous-ensemble des X sous-ensembles, d’un sous-ensemble modifié par modification de la valeur de bits d’au moins [N2/2] bits ayant un emplacement prédéfini dans le sous-ensemble considéré, la modification étant conditionnée à la valeur prise par des bits du sous-ensemble considéré, - reconstitution éventuelle d’un nouvel ensemble de bits à partir de chacun des X sous-ensemble modifié et du X+1-ième sous-ensemble des bits restants lorsque le X+1-ième sous-ensemble existe, la deuxième opération comprenant une étape de: - décalage de k bits de l’ensemble des N1 bits, pour obtenir un nouvel ensemble, k n’étant pas multiple de N1, les opérations de la phase de calcul étant itérées tant que le produit du nombre d’itération de la phase de calcul par le reste de la division euclidienne de k par N1 est strictement supérieur au nombre N1, - une phase de partitionnement de l’ensemble de bits calculé en P éléments, P étant un nombre entier.
- 2. - Procédé selon la revendication 1, dans lequel les [N2/2] bits ayant un emplacement prédéfini sont contiguës.
- 3. - Procédé selon la revendication 1 ou 2, dans lequel N2 est égal à 4.
- 4. - Procédé selon l’une quelconque des revendications 1 à 3, dans lequel lors de l’étape d’obtention, la modification est une permutation entre les [N2/2] bits et les autres bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente.
- 5. - Procédé selon l’une quelconque des revendications 1 à 3, dans lequel lors de l’étape d’obtention, la modification est choisie parmi dans le groupe constitué de : • un ou exclusif entre les [N2/2] bits et les autres bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente, et • un échange des positions des [N2/2] bits, l’opération étant conditionnée à l’accomplissement d’une condition, la condition étant que les autres bits aient une même valeur ou que les autres bits aient une valeur différente.
- 6. - Procédé selon l’une quelconque des revendications 1 à 5, dans lequel le nombre d’itérations est supérieur ou égal à 10.
- 7. - Procédé selon l’une quelconque des revendications 1 à 6, dans lequel la phase de calcul comporte une troisième opération, la troisième opération étant une opération de calcul déterministe et inversible.
- 8. - Procédé selon la revendication 7, dans lequel la troisième opération comporte des étapes de séparation de l’ensemble de bits en sous-ensembles de Y bits et éventuellement un N+1 sous-ensemble des bits restants, chaque étape de séparation étant mise en oeuvre pour tous les nombres Y qui sont des nombres premiers compris entre 3 et 31 inclus.
- 9. - Procédé selon la revendication 8, dans lequel le nombre d’itérations est égal au nombre de nombres Y distincts.
- 10. - Produit programme d’ordinateur comportant un support lisible d’informations, sur lequel est mémorisé un programme d’ordinateur comprenant des instructions de programme, le programme d’ordinateur étant chargeable sur une unité de traitement de données et adapté pour entraîner la mise en oeuvre d’un procédé selon l’une quelconque des revendications 1 à 9 lorsque le programme d’ordinateur est mis en oeuvre sur l’unité de traitement des données. 11Support d’information comprenant le produit programme d’ordinateur selon la revendication 10.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1653557A FR3050554B1 (fr) | 2016-04-21 | 2016-04-21 | Procede d'encodage d'un ensemble de bits |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1653557A FR3050554B1 (fr) | 2016-04-21 | 2016-04-21 | Procede d'encodage d'un ensemble de bits |
FR1653557 | 2016-04-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3050554A1 true FR3050554A1 (fr) | 2017-10-27 |
FR3050554B1 FR3050554B1 (fr) | 2018-05-18 |
Family
ID=56990493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1653557A Active FR3050554B1 (fr) | 2016-04-21 | 2016-04-21 | Procede d'encodage d'un ensemble de bits |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3050554B1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004057461A2 (fr) * | 2002-12-19 | 2004-07-08 | Ntt Communications Corporation | Procede et dispositif de division de donnees dans lesquels on utilise un calcul ou exclusif |
EP2887575A1 (fr) * | 2013-12-18 | 2015-06-24 | Laurenz Vorderwülbecke | Procédé et appareil permettant de stocker un fichier de données de façon distribuée |
-
2016
- 2016-04-21 FR FR1653557A patent/FR3050554B1/fr active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004057461A2 (fr) * | 2002-12-19 | 2004-07-08 | Ntt Communications Corporation | Procede et dispositif de division de donnees dans lesquels on utilise un calcul ou exclusif |
EP2887575A1 (fr) * | 2013-12-18 | 2015-06-24 | Laurenz Vorderwülbecke | Procédé et appareil permettant de stocker un fichier de données de façon distribuée |
Non-Patent Citations (1)
Title |
---|
CINCILLA PIERPAOLO ET AL: "Light blind: Why encrypt if you can share?", 2015 12TH INTERNATIONAL JOINT CONFERENCE ON E-BUSINESS AND TELECOMMUNICATIONS (ICETE), SCITEPRESS, vol. 4, 20 July 2015 (2015-07-20), pages 361 - 368, XP032927687 * |
Also Published As
Publication number | Publication date |
---|---|
FR3050554B1 (fr) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | An image encryption scheme using reverse 2-dimensional chaotic map and dependent diffusion | |
EP0202989B1 (fr) | Dispositif de chiffrement par substitutions-permutations | |
Holden | The mathematics of secrets: cryptography from caesar ciphers to digital encryption | |
Ravichandran et al. | Encrypted biography of biomedical image-a pentalayer cryptosystem on FPGA | |
US11616635B2 (en) | Recursive algorithms with delayed computations performed in a homomorphically encrypted space | |
Zhang et al. | A Novel Chaotic Map and an Improved Chaos‐Based Image Encryption Scheme | |
CN110493201B (zh) | 一种数据的处理方法、装置和系统 | |
RU2698764C2 (ru) | Электронное вычислительное устройство для выполнения замаскированных арифметических действий | |
CN112235111B (zh) | 密钥生成方法、装置、设备及计算机可读存储介质 | |
Bao et al. | Research on the avalanche effect of image encryption based on the Cycle-GAN | |
Huang et al. | A new two‐dimensional mutual coupled logistic map and its application for pseudorandom number generator | |
US10476661B2 (en) | Polynomial-based homomorphic encryption | |
Chen et al. | A novel image encryption scheme based on PWLCM and standard map | |
US10778644B2 (en) | Determining security features for external quantum-level computing processing | |
Deshpande et al. | Security enhancement and analysis of images using a novel Sudoku-based encryption algorithm | |
Geetha et al. | Multiple share creation based visual cryptographic scheme using diffusion method with a combination of chaotic maps for multimedia applications | |
US11755287B2 (en) | Random number generator | |
FR3050554A1 (fr) | Procede d'encodage d'un ensemble de bits | |
Kutade et al. | A survey on various approaches of image steganography | |
Veera et al. | Modified Caesar Cipher and Card Deck Shuffle Rearrangement Algorithm for Image Encryption | |
Hussein et al. | Encryption of Association Rules Using Modified Dynamic Mapping and Modified (AES) Algorithm | |
Chuengsatiansup et al. | Row, Row, Row your boat: How to not find weak keys in pilsung | |
EP2936302A1 (fr) | Generateur de sequences chaotiques | |
Zhang et al. | Image encryption using random sequence generated from generalized information domain | |
FR3035293A1 (fr) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20171027 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |