/ / Використання реалізації AES на HElib; Помилка функції addCtxt - c ++, шифрування, криптографія, aes

Використання реалізації AES на HElib; провал функції addCtxt - c + +, шифрування, криптографія, AES

В даний час я граю з гомоморфною бібліотекою HElib, і у мене є проблема з реалізацією AES.

Однією рукою мені вдається зробити простий ВІНшифрування у відкритому тексті та виконайте певні дії над зашифрованим текстом. Це добре працює. З іншого боку, я використовував реалізацію AES над HElib для шифрування даних та їх розшифровки, і це теж добре працює.

Тепер я хочу мати можливість використовувати всю потужність цієї реалізації: виконайте деякі операції з ВІН над даними, зашифрованими цим AES.

При простому шифруванні ВІН виконуються операціїнад об'єктом Ctxt, але коли ми використовуємо реалізацію AES, весь текст шифру є вектором Ctxt, і я не можу зрозуміти, як я можу обробити ці вектори.

Я взяв як приклад Test_AES.cpp, і я використовую однакові параметри для створення контексту та генерування ключа. (Тут я розміщу лише ті частини, які, на мою думку, є важливими, і припускаю, що ви трохи знаєте цю бібліотеку, але якщо вам потрібен весь код, я можу Напиши це)

Отже, спочатку я шифрую простий вектор 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

Отож, як бібліотека каже нормально, ми отримали doublyEncrypted = Enc_HE (Enc_AES (myvector)).

Тепер розшифровка

hAES.homeAESdec(doublyEncrypted,encryptedAESkey);

Тепер наш doublyEncrypted - це Enc_HE (myvector). На цьому етапі я мав би змогу зробити якусь операцію над своїм зашифрованим вектором. Оскільки doublyEncrypted є вектором Ctxt, я спробував щось на зразок:

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

Але коли я розшифрую його за допомогою секретного ключа ірозшифрувати все, що я отримав - це вектор 0 (я повинен отримати вектор 2). Я також намагався додати інший зашифрований вектор, але там я отримав вектор з деяким випадковим шістнадцятковим значенням.

Отже, моє запитання полягає в тому, чи можливо з цією реалізацією AES через HElib зробити якусь операцію з текстом шифру і чи хтось використовує цю бібліотеку, достатньо для такої думки.

Спасибі заздалегідь!

Відповіді:

1 для відповіді № 1

На випадок, якщо хтось коли-небудь зіткнеться з цим:

Плакат, очевидно, неправильно зрозумівяк працює гомоморфне шифрування. У прикладі коду вони спочатку гомоморфно шифрують відкритий текст за допомогою HElib. Потім цим зашифрованим текстом маніпулюють за допомогою гомоморфних властивостей у зашифрований текст, який представляє AES-шифрування відкритого тексту. Додавання чогось до цього шифрування AES, очевидно, дасть безглуздий результат. HElib магічним чином не перетворює AES на гомоморфну ​​криптосистему.