FR 3050554 A1 20171027 FR 1653557 A 20160421 1 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 oeuvre 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 oeuvre 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 oeuvre 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 3050554 2 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. 5 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. 10 - 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 15 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 20 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. 25 - 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. - le nombre d'itérations est égal au nombre de nombres Y distincts. 30 II 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 oeuvre d'un procédé tel que précédemment décrit lorsque le programme d'ordinateur est mis en oeuvre sur l'unité de 35 traitement des données. 3050554 3 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 5 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 oeuvre d'un procédé d'encodage, 10 figure 2, un ordinogramme d'un exemple de mise en oeuvre d'un procédé d'encodage, figure 3, un ordinogramme d'un autre exemple de mise en oeuvre d'un procédé d'encodage, et figure 4, un exemple de mise en oeuvre d'un procédé d'encodage spécifique. 15 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 oeuvre un procédé d'encodage d'un ensemble de N1 bits. 20 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 25 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 30 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 35 est un médium adapté à mémoriser des instructions électroniques et capables d'être couplé à un bus d'un système informatique. 3050554 4 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. 5 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 oeuvre d'un procédé d'encodage lorsque le programme d'ordinateur est mis en oeuvre sur l'unité de traitement des données 14. 10 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 oeuvre 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. 15 Lors de la première phase P1, au moins deux opérations sont mises en oeuvre 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, 20 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. 25 N2 est un nombre entier strictement inférieur à l'entier Ni. 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 30 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 35 contigus. 3050554 5 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 5 à 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 10 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 oeuvre 15 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 20 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 25 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 oeuvre 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. 30 Le procédé présente l'avantage d'être aisé à mettre en oeuvre. 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 35 l'utilisateur. De fait, l'ordinateur ne mémoriserait dans ce cas qu'une seule partie du document. 3050554 6 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. 5 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 oeuvre après la mise en oeuvre de l'opération 01 et avant la mise en oeuvre de l'opération 10 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 oeuvre de l'opération. 15 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. 20 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 25 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 oeuvre pour tous les nombres Y qui sont des nombres premiers compris entre 3 et 31 inclus. 30 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 35 oeuvre expérimentale dans un cas particulier» 3050554 7 MISE EN OEUVRE 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 5 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 à 10 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 15 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 20 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 25 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-AndShuffle then Shift » qui signifie littéralement « permuter, couper et mélanger et ensuite 30 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 35 Nous considérons l'algorithme CAS détaillé plus précisément dans la partie annexe. 3050554 8 L'entrée I est divisée en lignes selon la formule Rpos = {R,,R2, .... ,Rn}. Chaque ligne R a une taille identique FI, qui correspond à la taille de l'entrée Is 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 Is mod (Ra) # 0, les premières lignes Is mod Rs contiendront un bit 5 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 : Symbole Signification I entrée (un fichier) Is taille de l'entrée (nombre de bits) R ligne R, nombre de ligne Rpos position dans la ligne (par exemple celle d'un bit) Rs taille de la ligne (nombre de bits) S un partage Ss taille du partage (nombre de bits) S, nombre de partages produits en sortie #Iter nombre d'itérations b un bit broc la position du bit bp la position du bit dans sa ligne bB la position du bit dans son bloc p nombre premier itératif k le décalage en position Bprev le nombre de blocs de taille p qui précède b Rnext numéro de la ligne que le bit b va occuper après l'itération RBprev les blocs précédents Bprev qui seront sur la même ligne que le bit après l'itération Pnext la nouvelle position du bit b dans la ligne Rnext après l'itération 10 Tableau 1 : Symboles utilisés et leur signification 3050554 9 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 5 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 10 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 Rp' , 15 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 : Bprev = [(bp -1)/p] 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 20 bB = ((bp-1) mod p) +1 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 : Rnext = (Bprev mod Rn) + 1 L'équation 4 définit RBprev comme les blocs précédents Bprev qui seront sur la 25 même ligne que le bit après l'itération. L'équation 3 s'écrit : RBprev = [Bprev /Rn] 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 : Pnext = (RBprev*p*Rn) + ((brpos-1) *p)+bB 30 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 35 en fin de la ligne vont se mouvoir en fin de la ligne nouvelle. Ces deux problèmes rendent 3050554 10 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. 5 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 10 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 15 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 20 à 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, 25 à 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). 30 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. 3050554 11 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 à 5 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 = Sseter où Ss est la taille de la partition et #Iter est le nombre d'itérations de l'algorithme (voir table 1 pour la description des symboles et des variables). Nous choisissons Ss/#1ter parce que nous voulons que les bits se déplacent sur 10 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 15 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. 20 L'équation 5 devient : Pnext ((RBprev * p * Rn) + (((bp - 1)bp mod p) + 1) + ((brpos - 1) * p + modRs (((RBprev + 1) * p * Rn) + (((bp - 1)bp mod p) + 1) + ((brpos - 1) * p + mod Rs (((RBprev - 1) * p * Rn) + (((bp - 1)bp mod p) + 1) + ((brpos - 1) * p + mod Rs 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 à 25 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. 30 3050554 12 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é. 5 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 10 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 15 partition en blocs de k bits avec k 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 oeuvre 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 3050554 17 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 5 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 10 - 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 15 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. 20 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 25 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. 30 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é 35 de traitement des données. 3050554 18 11.- Support d'information comprenant le produit programme d'ordinateur selon la revendication 10.