Page 442 - 《软件学报》2025年第10期
P. 442
龚子睿 等: FBS-uBlock: 灵活的 uBlock 算法比特切片优化方法 4839
表 9 PL/PR 模块相对于整个加密过程的运算指令条数占比 (%)
算法 r=1 r=2 r=4 r=8 r=16 r=32
uBlock-128/128 0 24.8 23.8 9.2 7.9 -
uBlock-128/256 0 26.9 25.4 9.7 8.2 -
uBlock-256/256 0 26.1 53.9 25.4 9.7 8.2
5 测试和分析
为了探究本文提出的 FBS-uBlock 优化方法在速率、访存上的效果, 本文在 x86 平台基于 AVX2 指令集使用
FBS-uBlock 优化方法分别实现了 uBlock-128/128、uBlock-128/256 和 uBlock-256/256, 并完成了性能测试和访存
指令条数的统计分析. 测试使用的处理器平台是 Intel(R) Core(TM) i9-10900X, 基准频率 3.70 GHz, 最大睿频频率
4.50 GHz. 操作系统是 Ubuntu-20.04.2, 编译器选择 gcc 9.4.0, 开启编译器的 O3 优化.
5.1 性能测试
首先, 本文测试了 uBlock 算法在不同比特切片表示法下加密相同长度数据的速率, 数据大小是 16 384 字节,
使用相同的密钥循环加密 10 万次, 测试结果如表 10 所示, 对应的折线图如图 9 所示. 算法的参数 r 越大, 寄存器
的数量越少. 从表 10 中可以看出, uBlock 算法的加密性能随寄存器数量的减少遵循先降低后增高的趋势. 对于
uBlock-128/128 和 uBlock-128/256 算法, 在 r=8 (或 r=16) 时的速率较高; 对于 uBlock-256/256 算法, 在 r=16 (或
r=32) 的速率较高. 此时需要的寄存器个数恰好都是 n/r=16 个 (或 8 个).
表 10 uBlock 算法不同切片表示下的加密性能测试 (Mb/s)
算法 r=1 r=2 r=4 r=8 r=16 r=32
uBlock-128/128 6 855 6 189 9 282 12 612 12 758 -
uBlock-128/256 5 059 4 475 6 583 8 944 8 834 -
uBlock-256/256 4 468 3 952 3 571 6 437 8 984 8 811
14 000
12 000
加速速率 (Mb/s) 8 000
10 000
6 000
4 000
2 000
0
r=1 r=2 r=4 r=8 r=16 r=32
切片表示
uBlock-128/128 uBlock-128/256 uBlock-256/256
图 9 uBlock 算法不同切片表示下的加密性能
接着, 本文测试了 uBlock 算法在不同切片表示法下不同工作模式的速率, 分别测试了 ECB、CTR 和 CBC 工
作模式, 加密的数据大小是 16 384 字节, 使用相同的密钥循环加密/解密 10 万次. 测试结果如表 11 所示.
对于 uBlock-128/128 算法和 uBlock-128/256 算法, 选择表 10 中性能表现较好的 r=8 和 r=16 的切片表示法进
行测试; 对于 uBlock-256/256 算法, 选择表 10 中性能表现较好的 r=16 和 r=32 的切片表示法进行测试. 由表 11 可
知, 本文的比特切片优化方法和设计文档中的实现相比有明显优势, ECB 和 CBC (解密) 模式下提升 4 倍, CTR 模
式因为存在计数器自增模块所以提升幅度只有 2–3 倍.

