/ / Uso de la implementación de AES en HElib; Falla de la función addCtxt: c ++, cifrado, criptografía, aes

Uso de la implementación de AES en HElib; Fallo en la función addCtxt - c ++, encriptación, criptografía, aes

Actualmente estoy jugando con la biblioteca homomórfica HElib y tengo un problema con la implementación de AES.

Por un lado, logro hacer un simple HEcifrado en texto sin formato y realizar algunas operaciones en el texto cifrado. Esto funciona bien Por otro lado, utilicé la implementación de AES sobre HElib para cifrar datos y descifrarlos, y también funciona bien.

Ahora quiero poder utilizar todo el poder de esta implementación: realizar algunas operaciones HE en los datos cifrados por este AES.

En el cifrado HE simple, las operaciones se realizansobre el objeto Ctxt, pero cuando usamos la implementación de AES, todo el texto cifrado es un vector de Ctxt y no puedo entender cómo puedo manipular esos vectores.

Tomé como ejemplo el Test_AES.cpp y utilizo los mismos parámetros para crear el contexto y generar la clave. (Aquí pondré solo las partes que supongo que son importantes y supongo que conoces un poco esta biblioteca, pero si necesitas todo el código, puedo Escribelo)

Entonces, primero cifro un vector simple 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

Entonces, como la biblioteca dice normalmente, tenemos doublyEncrypted = Enc_HE (Enc_AES (myvector)).

Ahora el descifrado

hAES.homeAESdec(doublyEncrypted,encryptedAESkey);

Ahora nuestro doblemente encriptado es un Enc_HE (myvector). En este punto, debería poder realizar alguna operación en mi vector cifrado. Como doublyEncrypted es un vector de Ctxt, probé algo como:

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

Pero cuando lo descifro con la clave secreta ydecodificarlo todo lo que obtuve es un vector de 0 (debería obtener un vector de 2). También intenté agregar un vector cifrado diferente, pero allí obtuve un vector de algún valor hexadecimal aleatorio.

Entonces, mi pregunta es, ¿es posible con esta implementación de AES sobre HElib realizar alguna operación en el texto cifrado? ¿Alguien usa esta biblioteca lo suficiente como para pensarlo?

¡Gracias por adelantado!

Respuestas

1 para la respuesta № 1

En caso de que alguien se encuentre con esto:

El cartel obviamente parece haber entendido malcómo funciona el cifrado homomórfico. En el ejemplo de código, primero cifran un texto sin formato homomórficamente usando HElib. Este texto cifrado se manipula utilizando las propiedades homomórficas en un texto cifrado que representa un cifrado AES del texto sin formato. Agregar algo a este cifrado AES obviamente dará un resultado sin sentido. HElib no transforma mágicamente AES en un criptosistema homomórfico.