/ / Utilisation de la mise en œuvre AES sur HElib; Echec de la fonction addCtxt - c ++, chiffrement, cryptographie, aes

Utilisation de l'implémentation AES sur HElib; fonction addCtxt en échec - c ++, cryptage, cryptographie, aes

Actuellement, je joue avec la bibliothèque homomorphique HElib et j’ai un problème avec l’implémentation de AES.

Dans une main je réussis à faire un simple HEchiffrer le texte en clair et effectuer quelques opérations sur le texte chiffré. Ça marche bien. Par ailleurs, j’ai utilisé l’implémentation AES sur HElib pour chiffrer et déchiffrer des données, et cela fonctionne également.

Maintenant, je veux pouvoir utiliser toute la puissance de cette implémentation: effectuez une opération HE sur des données chiffrées par cette AES.

Sur le cryptage HE simple, les opérations sont effectuéessur l’objet Ctxt, mais lorsque nous utilisons l’implémentation d’AES, tous les textes chiffrés sont des vecteurs de Ctxt et je ne peux pas le comprendre, mais comment gérer ces vecteurs.

J'ai pris comme exemple le Test_AES.fichier cpp et j’utilise les mêmes paramètres pour créer le contexte et générer la clé (ici, je ne mettrai que les parties que j’assume sont importantes et supposons que vous connaissiez un peu cette bibliothèque, mais si vous avez besoin de tout le code, je peux écris le)

Je commence donc par chiffrer un simple vecteur de 1.

Vec<uint8_t> ptxt(INIT_SIZE,nBlocks*16); //Vector of 1
vector<Ctxt> doublyEncrypted;
hAES.homAESenc(doublyEncrypted,encryptedAESkey,ptxt); // Encryption of the vector store
//in doublyEncrypted

Donc, comme le dit la bibliothèque, nous avons doublementEncrypted = Enc_HE (Enc_AES (myvector)).

Maintenant le décryptage

hAES.homeAESdec(doublyEncrypted,encryptedAESkey);

Maintenant, notre code doublement crypté est un Enc_HE (myvector). À ce stade, je devrais pouvoir effectuer certaines opérations sur mon vecteur chiffré. Comme doublyEncrypted est un vecteur de Ctxt, j’ai essayé quelque chose comme:

for(long i=0;i<(long)doublyEncrypted.size();i++){
doublyEncrypted[i].addCtxt(doublyEncrypted[i]);
}

Mais quand je le déchiffre avec la clé secrète etdécoder tout ce que j'ai obtenu est un vecteur de 0 (je devrais obtenir un vecteur de 2). J'ai également essayé d'ajouter un vecteur crypté différent, mais j'ai obtenu un vecteur d'une valeur hexadécimale aléatoire.

Ma question est donc la suivante: est-il possible avec cette implémentation d’AES sur HElib d’effectuer quelques opérations sur le texte chiffré et est-ce que quiconque utilise cette bibliothèque suffisamment pour faire une telle réflexion?

Merci d'avance!

Réponses:

1 pour la réponse № 1

Au cas où quelqu'un rencontrerait ceci:

L'affiche semble évidemment avoir mal compriscomment fonctionne le cryptage homomorphique. Dans l'exemple de code, ils chiffrent d'abord un texte en clair de manière homomorphe à l'aide de HElib. Ce texte chiffré est ensuite manipulé en utilisant les propriétés homomorphes dans un texte chiffré qui représente un chiffrement AES du texte en clair. Ajouter quelque chose à ce cryptage AES donnera évidemment un résultat dénué de sens. HElib ne transforme pas comme par magie AES en un cryptosystème homomorphe.