Шифрование с секретным ключом в HElib

Речь идет о шифровании с симметричным ключом в HElib и гомоморфном выполнении некоторых сложений и умножений.

В некоторых случаях мы ожидаем использовать секретный ключ для шифрования сообщения, а затем выполнять операции (открытый ключ не требуется). Однако дополнительной информации об этом в HElib почти нет.

Некоторые данные кода в HElib перечислены ниже:

      // Encryption using the secret key, this is useful, e.g., to put an
// encryption of the secret key into the public key.
long SecKey::skEncrypt(Ctxt& ctxt,
                       const NTL::ZZX& ptxt,
                       long ptxtSpace,
                       long skIdx) const
{....}

Для этой функции, когда я тестировал производительность между этими двумя реализациями, я обнаружил, что временные затраты на версию с секретным ключом почти равны стоимости версии с открытым ключом.

      HELIB_NTIMER_START(Enc_testSecKeyEnc);
//    Ctxt ctxt1(publicKey);
//    ea.encrypt(ctxt1, publicKey, cmsg1);
    Ctxt ctxt1(secretKey);
    EncodedPtxt eptxt;
    ea.encode(eptxt, cmsg1);
    secretKey.Encrypt(ctxt1, eptxt);
    HELIB_NTIMER_STOP(Enc_testSecKeyEnc);
    printNamedTimer(cout, "Enc_testSecKeyEnc");
    
    vector<long> res1(ea.size());
    
    HELIB_NTIMER_START(Dec_testSecKeyEnc);
    ea.decrypt(ctxt1, secretKey, res1);
    HELIB_NTIMER_STOP(Dec_testSecKeyEnc);
    printNamedTimer(cout, "Dec_testSecKeyEnc");

Полученные результаты;

      Public-Key:
Enc_testSecKeyEnc: 0.023451 / 1 = 0.023451   [/Users/qifanwang/code/ePPDSC/ePPDSC/tests/HEmatrix_test.cpp:102]
Dec_testSecKeyEnc: 0.115884 / 1 = 0.115884   [/Users/qifanwang/code/ePPDSC/ePPDSC/tests/HEmatrix_test.cpp:110]

Secret-Key:
Enc_testSecKeyEnc: 0.030688 / 1 = 0.026804   [/Users/qifanwang/code/ePPDSC/ePPDSC/tests/HEmatrix_test.cpp:102]
Dec_testSecKeyEnc: 0.114252 / 1 = 0.114252   [/Users/qifanwang/code/ePPDSC/ePPDSC/tests/HEmatrix_test.cpp:114]

Parameters:
m = 18944, p = 127, phi(m) = 9216
  ord(p) = 36
  normBnd = 1.27247
  polyNormBnd = 1.27247
  factors = [2 37]
  generator 3 has order (!= Z_m^*) of 64
  generator 1153 has order (== Z_m^*) of 4
r = 1
nslots = 256
hwt = 0
ctxtPrimes = [6,7,8]
specialPrimes = [9,10]
number of bits = 262
security level = 118.653

0 ответов

Другие вопросы по тегам