Le démonstrateur
Cas d’usage
Le chiffrement homomorphe est une solution pour résoudre les principaux problèmes de l’IoT :la securité, le stockage et les calculs délégués surle cloud. Dans l’IoT, des dispositifs matériels détectent des phénomènes physiques tels que la lumière,la chaleur,le mouvement,l’humidité ou la pression et envoient généralement des signaux qui sont convertis en affichage lisible par l’homme sur le dispositif lui-même ou transmit électroniquement sur un réseau pour traitement ultérieur. C’est dispositifs sont appelés des capteurs.
Le démonstrateur
Considérons un Cas d’usage dans l’IoToù différents capteurs envoientd es données au cloud à traversplusieurs passerelles.Le butde l’utilisation du cloudest de stockerlesdonnées etfaire des traitements dessus.Àchaque fois quelapasserelle reçoit des messages des capteurs, elle les chiffre de façon homomorphe et les envoieaucloud.Pournotrecas,lecloudestenmesurede stockerlesdonnées eteffectue quelquescalculs baséssurl’additionetlamultiplicationdesdonnées collectées àdiff ts moments et dans divers contextes géographiques. Le protocole utilisé pourl’envoi de messagesdes capteurs aux passerelles est LORA [2] (Long Range Wireless Protocol). Le cloud comprend un serveur MQTT(publish/subscribe) [1],ainsi pour stockerunedonnée dans lecloud,la passerelle envoie une commande « publish » pour publier la donnée dans le cloud etpourrécupérerunedonnée ducloud,lamachinede l’administrateur envoie une commande « subscribe »pour se souscrire à un sujet.Ce scénario est illustré par la Figure 4.1. FIGUR E 4.1 – Cas d’usage IoT
Cas d’usage des images
Le chiffrement homomorphe peut être utilisé pour assurer la sécurité et le traitement d’image dans le cloud tels que la transformation de couleur, la modification de la saturation et le changement de luminosité. Dans notre modéle, chaque image est représentée par une matrice de pixels, et chiffrer une image revient à chiffrer l’ensemble des pixels. De plus, les opérations du traitement d’image sont basées sur des produits et des sommes de matrices. Prenons l’exemple d’une image de 1024 × 1024 pixels, l’utilisateur envoi l’image à lapasserelle qui chiffre chaque pixel parle cryptosystème homomorphe FV. Chaque chiffré depixel estde taille 32 koctets,donc la taille globale de l’image chiffrée est 32 Goctets. Si nous utilisons un Ethernet de 0.1Moctes/s nous aurons besoinde 100heurespourenvoyerl’image chiffréede lapasserelle vers le Cloud. Ce cas d’usage n’est pas très efficace et c’est pour cette raison qu’on va se contenterdedécrire des Cas d’usage où la taille desdonnées à chiffrer est pluspetite etplusadaptées auxcontraintesdelacryptographiehomomorphe.
Cas d’usage plus réalistes
Imaginons unCas d’usage dansunportmaritimedans lequel il esttrèsutile d’accélérerles expéditions deproduits, ce besoinpeutêtre résolu enprévoyant suffisamment de camions pour transporter la marchandise. Les compagnies maritimes doivent vérifier en temps réel la marchandise transportée sans révéler des informations surles clients. D’autant plus que les armateurs sont engagés pour protéger le secret professionnel. Les entreprises vérifient la valeur de marchandises, leur coût global, leur contenu et leur poids afin d’anticiper leurarrivée au port maritime, en prévoyantdes camions oudes trains pour le transport des marchandises et le passage des douanes. Dans ce Cas d’usage, chaque compagnie possède plusieurs navires etplusieurs conteneurs.Deplus, chaque navire possède unepasserelleet chaque conteneur possède un capteur. Les conteneurs envoient des données à la passerelle du navire qui les chiffre avant de les envoyer au cloud. En pratique, lorsque le cloud reçoit les données il peut effectuer des calculs surles données chiffrées sans avoiràlesdéchiffrer comme c’estdécrit dans laFigure 4.2, ilpeut calculer la somme des conteneurs détenant les produits de certaines entreprises dans le port maritime en augmentant le nombre de conteneurs. Nous pouvons aussi calculerlavaleurdesmarchandisesdans ces conteneurs etlasommedes poids de conteneurs avant de les charger sur les navires en faisant plusieurs additions.Deplus,nouspouvonseffectuerune conversiondesdevisesdesprix desproduits en calculantleproduitdu prix de chaque produit et la devise du pays.Ce calcul nécessite unniveaude multiplication. FIGUR E 4.2 – Application de la cryptographie homom orph e dans un port maritim e Onpeutaussidécrire unscénariodans lequeldifférentssupermarchésdedifférentes entreprises ontbesoinde stockeret de calculerle nombredes ventes de produitsdans le cadre de lagestiondes stocks.L’objectifde ces entreprises est de stockerdans le cloudle chiffrementde cesdonnées sans révélerleuridentité en raison de la concurrence. Dans le cloud, nous pouvons calculerla somme de ventede chaque produitafind’approvisionnerle stockdes supermarchés si nécessaire. Prenons l’exemple d’unautre Cas d’usage dans le transportetenparticulier dans les trains. Ce cas d’usage va nous permettre de vérifierle niveau d’eau dans les toilettes. Supposons que plusieurs trains de plusieurs entreprises possèdent une passerelle partrain et plusieurs capteurs pour chaque wagon, chaque passerelle reçoit des messages des capteurs, les chiffre et ensuite les envoie vers le Cloud, celui-ci regroupe les données et effectue des calculs dessus. Le cloud détient un secure element qui permet de prendre des décisions et en particulierfairedes comparaisons surlesdonnées chiffrées surlesdonnées regroupées, en déchiffrant les données et en comparant les textes en clairs. La méthode de comparaison dans un secure element est décrite en détail dans la Section 4.3. Les appareils envoient systématiquement le niveau d’eau au cloud via la passerelle et à l’intérieur du cloud, ensuite le secure element compare le niveau d’eau au niveau minimum acceptable et par conséquent envoie des alertes àl’administrateur encasde manqued’eau dans les toilettes. Le chiffrement homomorphe garantit la confidentialité, le respect de la vie privée et l’anonymisation de l’origine des conteneurs, tout en permettant le traitementetle stockagedesdonnéesdansuncloudpublique. Nous avons choisi d’utiliserle systèmede cryptographie homomorphe FV dans les cas d’usage décrit ci-dessus, parce qu’il le plus adapté aux circuits de petite profondeur. De nombreuses bibliothèques [43], [31] implémentent le cryptosystème FV, mais elles ne sont pas portables dans la passerelle. La taille de la bibliothèque SEAL est 5 Moctets et la taille de la bibliothèque FV-NFLIB plus la bibliothèque NFLIB nécessaire pour la faire tourner est 5 Moctets aussi. Nous avons choisi de mettre en œuvre notre propre API pour l’intégrerdans lapasserelle,lecloudetdans lamachine administrateur. 4.2 Implémentation Nous avons implémenté le cryptosystème FV en langage C. Il a été intégré dans lesmodules IoTsuivants :la passerelle,le cloudetla machine de l’administrateur. Il s’agit d’un code portable, autonome et indépendant des autres bibliothèques. Cette implémentationpeutêtre considérée comme unepreuve de concept où nous n’utilisons que la bibliothèque mathématique standard « math.h » sansparallélisme SIMDet sans traitementmulti-coeur.Nous utilisons unensemble deparamètrespermettantd’évaluerdescircuitsd’unseule niveau de multiplication, avec un niveau de sécurité de 128 bits, un degré 2048 pour le polynôme cyclotomique et 56 bits pour les coefficients polynômes, on a choisi l’anneau R2 comme distribution de clé secrète χkey , σ= 3.1, et χerr une distributiongaussienne bornée parB=31pourchoisirlescoefficientsdubruit. Nous avons choisi ces paramètres parce qu’ils sont les pluspetits permettant de construire un schéma capable d’évaluer des circuits d’une multiplication avecun niveau de sécurité correct. Ce schéma permet d’évaluer unniveau de multiplicationet chiffre desplaintextsde 16bits.Le code est intégré etexécuté surune machined’administrateur quidétientunprocesseurIntel Core i5 à 2,4 GHz, une passerelle avec un processeurIntel Atom à 1,91 GHz, et une machinevirtuelleutilisantunprocesseurIntelXeonà2,40GHzauniveauducloud.
Description de l’implémentation
Nous avons implémenté notre propre code à partir de zéro afin d’obtenir une implémentation homogène, et portable dans la passerelle. Dans cette implémentation, les coefficients des polynômes sont calculés modulo q et stockés dans une structure de type long long capable de contenir 64 bits. Si q estunepuissance de 2,parexemple q= 2 56 ,le calcul demodulo q correspondà une opération AND. Soit N et k deux entiers où q= 2 k , l’opération de module vérifie l’équation suivante : N mod2 k = N & 2 k − 1. Dansnotre code,nous avonsdéveloppénotre propre arithmétique 128bits afin de permettre le stockage du résultat d’une multiplication de deux long long. Soit A et B deux entiers de 64 bits, de type long long, on note A = A1|A2 et B= B1|B2 oùA1,A2,B1,B1,B2 sontdes entiersde 32bits chacun. Pourcalculer leproduitde A et B nousutilisons l’Algorithme 52. Algorithme 52 L’arithmétique 128 bits Entrées A = A1|A2 and B = B1|B2. Sortie LeproduitA×B. fonction MULTIP LIER DEUX LONG LONG(A,B) Calculer A2 ·B2 = r1|r2. Calculer A1 ·B2 = r3|r4. Calculer A2 ·B1 = r5|r6. Calculer A1 ·B1 = r7|r8. Calculer S1 = r1 ∗2 32 +r4 + r6. 7: CalculerM1 =(r1∗2 32+r4+r6) mod2 32 . Calculer S2 = r4 ∗2 32 + r5 ∗2 32 + r8 +M1. CalculerM2 =(r4∗2 32+r5∗2 32+r8+M1) mod2 32 . Calculer S3 = r7 ∗2 32 +M2. retourner A·B = S3|S2|S1|r2. fin fonction Dans cette implémentation on a repris l’algorithme de Fan et Vercauteren enomettantl’étape de larelinéarisation,parce que nous avonsbesoind’assurer une seule multiplication. Autrement dit, le résultat de la multiplication des chiffrés est un texte chiffré de trois éléments, et nous pouvons facilement faire des additions entre des textes chiffrés de trois éléments et des additions entre un texte chiffré de trois éléments et un texte chiffré de deux éléments. La relinéarisation augmente le niveau du bruit dans le chiffré à cause de la multiplication par la clé de relinéarisation, et donc nous ne pouvons même pas effectuer une seule multiplication avec les paramètres choisis (λ = 128, d = 2048, |q| = 56). Par conséquent, il faut augmenter les paramètres pour pouvoir déchiffrer correctement. En revanche, en augmentant les paramètres les coefficients despolynômes nepeuventplus être stockésdansune structure long long. Donc on a choisi de garder les chiffrés tels qu’ils sont, avec trois éléments, après lamultiplicationetimplémenterle cryptosystème FV avec les paramètres : λ= 128, d = 2048, et|q| =56.Onprésente ci-dessous les fonctions de l’algorithme de FV quenous avonsimplémenté.