辽宁建设培训网站,网站建设及应用实施方案,制作网站入门,中国核工业二三建设有限公司招聘信息本篇会对比三种加密方案#xff0c;同时每种方案配置三种参数。即九种情况下的各个操作的性能差异#xff0c;为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙#xff0c;即 。 当然数据量比较大#xff0c;为了方便大家查找#xff0c… 本篇会对比三种加密方案同时每种方案配置三种参数。即九种情况下的各个操作的性能差异为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙即 。 当然数据量比较大为了方便大家查找按照不同级别标题进行了区分便于跳转。
注意 本篇所写的测试数据仅具有相对意义即不同性能的计算机跑出来时长有差异不能简单的作为衡量标准。同时不同的加密参数导致的性能差异较大加密的数据不同也会影响操作的性能所以具体情况还是要自己进行实验。 示例中所有操作均为执行了十次后取的平均值。并且主要会对比不同方案不同 poly_modulus_degree 下的性能差异但是 coeff_modulus 的设置也是适当匹配 poly_modulus_degree 大小的。即不同参数设置差异较大变量不是唯一的。
一、加密参数展示
1.1 三种 BFV 方案参数 1.2 三种 BGV 方案参数 1.3 三种 CKKS 方案参数 二、产生密钥效能对比 不同例子中密钥产生的时长首先是需要考虑的。尤其是Galois密钥可能会占用大量内存这在受限系统中可能是个问题应该尝试一些更大的测试运行并观察它们对内存池分配大小的影响。 下面比较时长差异较大的 relinearization keys 和 Galois keys。
2.1 relinearization keys
4096819216384BFV22359131629880082BGV24174144649977182CKKS23205135087893252
2.2 Galois keys
4096819216384BFV471257322943123322354BGV517306359257625117895CKKS478956314280623158120
三、编解码
编码这里 BFV 和 BGV 采用的都是 Batch EncoderCKKS采用的是CKKSEncoder。
3.1 编码
4096819216384BFV56211982513BGV55112262687CKKS39701109735688
3.2 解码
4096819216384BFV69412172591BGV60412192683CKKS68402339186703
四、加解密
4.1 加密
4096819216384BFV2880790978325499BGV33401111285398689CKKS2639482988297074
4.2 解密
4096819216384BFV815528594111851BGV58872164583201CKKS2234818534076
五、加法 加法这里只统计了密文加密文的加法函数因为和明文加密文函数的差异不大并且和乘法相比加法时间更短也基本没有噪声损失。故选择算法时尽量用加法来减少乘法次数。
4096819216384BFV1907764831280BGV1992776030592CKKS1976785030895
六、乘法
5.1 明文乘密文
4096819216384BFV785932869142946BGV39701589463479CKKS2254866834371
5.2 密文乘密文
4096819216384BFV1056313921501626688BGV54892152685366CKKS54202182986503
5.3 平方
4096819216384BFV731872729061137618BGV46461731968582CKKS43421713368566
七、旋转
6.1 行旋转 - 一步
4096819216384BFV21078111939718794BGV28039138755791834CKKS22252117407726842
6.2 行旋转 - 随机步长 这里用随机函数生成一个步数旋转记录时长即十次旋转的都不同最后取平均。当然只是为了比对单步的行旋转说明多步需要更多的时间。
4096819216384BFV863873907852855098BGV1160925369963550023CKKS833905173973339613
6.3 列旋转
4096819216384BFV211123907852855098BGV27963137158789150
八、重新线性化
4096819216384BFV21106111579715234BGV27121134387775288CKKS21871115797726314
九、Rescale
因为 rescale 操作只在CKKS方案中进行这里虽然不比较但是列出来供大家参考
4096819216384CKKS37131901779439
十、总结
这里简单总结几点我发现的规律
同一方案下操作的时长并不是跟着 poly_modulus_degree 的倍数成倍数增长故槽的数量大了虽然一次能处理的数据更多时间代价会更大CKKS 和 BFV 方案相比编解码时间长了但是乘法时间更短尤其是密文乘密文直接旋转 n步长 的时间是快于一次转一个转 n次的密文乘密文 的时间成本要明显大于 明文乘密文故尽量采用明文乘法重新线性化的时间成本并不低虽然减少了密文长度但是其代价也是要纳入考量的这里的参数大小配置是相适应的但是要想获得最优性能还是应该根据自己的数据和算法定制一个合理的噪声预算和算法顺序。 总结就是用同态加密实现功能不难但是在保证正确性的前提下提高效能是个要具体情况具体设计的问题需要花功夫花时间取钻研的。