赞
踩
本篇会对比三种加密方案,同时每种方案配置三种参数。即九种情况下的各个操作的性能差异,为大家选择合适的方案和合适的参数提供参考。表格中所有时长的单位均为微妙,即 。
当然数据量比较大,为了方便大家查找,按照不同级别标题进行了区分,便于跳转。
注意:
本篇所写的测试数据,仅具有相对意义(即不同性能的计算机跑出来时长有差异),不能简单的作为衡量标准。同时,不同的加密参数导致的性能差异较大,加密的数据不同也会影响操作的性能,所以具体情况还是要自己进行实验。
示例中所有操作,均为执行了十次后取的平均值。并且主要会对比不同方案,不同 poly_modulus_degree 下的性能差异,但是 coeff_modulus 的设置也是适当匹配 poly_modulus_degree 大小的。即不同参数设置差异较大,变量不是唯一的。
不同例子中,密钥产生的时长首先是需要考虑的。尤其是Galois密钥,可能会占用大量内存,这在受限系统中可能是个问题,应该尝试一些更大的测试运行,并观察它们对内存池分配大小的影响。
下面比较时长差异较大的 relinearization keys 和 Galois keys。
4096 | 8192 | 16384 | |
BFV | 22359 | 131629 | 880082 |
BGV | 24174 | 144649 | 977182 |
CKKS | 23205 | 135087 | 893252 |
4096 | 8192 | 16384 | |
BFV | 471257 | 3229431 | 23322354 |
BGV | 517306 | 3592576 | 25117895 |
CKKS | 478956 | 3142806 | 23158120 |
编码这里 BFV 和 BGV 采用的都是 Batch Encoder,CKKS采用的是CKKSEncoder。
4096 | 8192 | 16384 | |
BFV | 562 | 1198 | 2513 |
BGV | 551 | 1226 | 2687 |
CKKS | 3970 | 11097 | 35688 |
4096 | 8192 | 16384 | |
BFV | 694 | 1217 | 2591 |
BGV | 604 | 1219 | 2683 |
CKKS | 6840 | 23391 | 86703 |
4096 | 8192 | 16384 | |
BFV | 28807 | 90978 | 325499 |
BGV | 33401 | 111285 | 398689 |
CKKS | 26394 | 82988 | 297074 |
4096 | 8192 | 16384 | |
BFV | 8155 | 28594 | 111851 |
BGV | 5887 | 21645 | 83201 |
CKKS | 2234 | 8185 | 34076 |
加法这里只统计了密文加密文的加法函数,因为和明文加密文函数的差异不大,并且和乘法相比,加法时间更短,也基本没有噪声损失。故选择算法时,尽量用加法来减少乘法次数。
4096 | 8192 | 16384 | |
BFV | 1907 | 7648 | 31280 |
BGV | 1992 | 7760 | 30592 |
CKKS | 1976 | 7850 | 30895 |
4096 | 8192 | 16384 | |
BFV | 7859 | 32869 | 142946 |
BGV | 3970 | 15894 | 63479 |
CKKS | 2254 | 8668 | 34371 |
4096 | 8192 | 16384 | |
BFV | 105631 | 392150 | 1626688 |
BGV | 5489 | 21526 | 85366 |
CKKS | 5420 | 21829 | 86503 |
4096 | 8192 | 16384 | |
BFV | 73187 | 272906 | 1137618 |
BGV | 4646 | 17319 | 68582 |
CKKS | 4342 | 17133 | 68566 |
4096 | 8192 | 16384 | |
BFV | 21078 | 111939 | 718794 |
BGV | 28039 | 138755 | 791834 |
CKKS | 22252 | 117407 | 726842 |
这里用随机函数,生成一个步数,旋转记录时长,即十次旋转的都不同,最后取平均。当然只是为了比对单步的行旋转,说明多步需要更多的时间。
4096 | 8192 | 16384 | |
BFV | 86387 | 390785 | 2855098 |
BGV | 116092 | 536996 | 3550023 |
CKKS | 83390 | 517397 | 3339613 |
4096 | 8192 | 16384 | |
BFV | 21112 | 390785 | 2855098 |
BGV | 27963 | 137158 | 789150 |
4096 | 8192 | 16384 | |
BFV | 21106 | 111579 | 715234 |
BGV | 27121 | 134387 | 775288 |
CKKS | 21871 | 115797 | 726314 |
因为 rescale 操作只在CKKS方案中进行,这里虽然不比较,但是列出来供大家参考:
4096 | 8192 | 16384 | |
CKKS | 3713 | 19017 | 79439 |
这里简单总结几点我发现的规律:
总结就是,用同态加密实现功能不难,但是在保证正确性的前提下提高效能是个要具体情况具体设计的问题,需要花功夫花时间取钻研的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。