分组密码性能魁首榜和7强的软件关键路径龙虎榜-创文002

原创

小马商密实验室
小马商密实验室

小马商密实验室

2026年4月2日 21:14
北京
标题已修改

在小说阅读器读本章

去阅读

在小说阅读器中沉浸阅读

2025 年 2 月 5 日，ICCS 面向全球启动新一代商用密码标准征集。期间，多位商密领域专家学者围绕杂凑密码、序列密码、对称密码等领域陈述观点，令我们收获颇丰。与此同时，小马商密实验室在分组密码设计和性能测试积累研究心得，公众号陈述技术事实、研究结论和观点理念，本期内容均为有实测数据与技术依据支撑的原创成果。

常言道 “不怕不识货，就怕货比货”，算法的功能与性能优劣，通过横向对比即可直观体现。小马商密实验室认为，分组密码的性能峰值至少包括5个赛道（见表1的第1列）软件关键路径、硬件关键路径、8位机性能、轮子密钥容量和单线程多路吞吐量。研制EWES的过程中需要调优参数，小马商密实验室力所能及地找到每个赛道的魁首，魁首表现和测试平台先汇总表1，欢迎各位读者品鉴指正、公开评议。

1. 性能六边形战士EWES（羊羊姐）正式亮相

EWES和Nano-EWES是我实验室设计的新一代自逆型分组密码，EWES 的设计目标是打造全面均衡的性能六边形战士。根据性能自评估和竞品分析结果，EWES的每个指标均表现卓越，有些指标还是引领者即魁首。

本次对比统一采用对标标准：所有参比算法均为 128bit 分组长度、128bit 安全等级。评测范围覆盖主流工业标准算法、OpenSSL 实现代码及中国密码学会官网公开的分组密码作品。其中，软件关键路径与多路吞吐量主要基于 X64 平台 C 语言实现评测，硬件关键路径标杆则采信近期密码芯片领域会议发布最新最好成果贾珂婷的低延迟分组密码uLBC。

表1 5个赛道的魁首及其性能指标

魁首     #

指标                              #

平台      #

1.软件关键路径魁首：

AES-10轮

8.5C/B+8.5C/B

AMD9700X处理器

C代码

挑战者:

EWES-128-7轮

11.72 C/B

2.硬件关键路径魁首：

uLBC-128-18轮

Enc-1clk 2.23ns 57.4Gps 78362µm2

Dec-1clk 2.34ns 54.7Gps 112811µm2

UMC55nm （采信论文）

挑战者:

AES-128-10轮

Enc-1clk 3.74ns 34.2245Gps

294367µm2

UMC55nm （采信论文）

挑战者:

EWES-128-7轮

3.5clk   4×1.63ns 19.63Gps  107765um2

TMSC90nm （dc软件自评估）

3.8位机性能指标魁首：

SM4和或EWES-Twins（羊羊妹）

125C/B

AVR 处理器

4.轮子密钥容量魁首：

EWES和SM4并列

8×128bit=32×32bit

5.多路吞吐量魁首：

暂定EWES

预计挑战者SM4

峰值5.1GB/s  --24路

AMD9700X处理器GFNI+AVX512

5.AESNi多路吞吐量

（列席参加,否则不公平）

AES-32连续加密

峰值62.5GB/s  --32路

AMD9700X处理器AESNI+AVX512

补充说明：轮子密钥容量指每个轮变换必须全新轮子密钥，反映对轮子密钥使用效率。密钥不扩展的或阉割使用不算在内，例如present和Nano-EWES。

软件关键路径按照编码器和解码器的平均值，硬件关键路径按最差的算。

以上是最新评估结果，如果有错误或新花魁，[email-masked]@qq.com，技术事实确认后,将更新魁首榜及龙虎榜并注明贡献。

2.   分组密码7强的软件关键路径测评综合结果

7强分别是，国际标准AES、Camellia，中国标准SM4,2019年竞赛前3名uBlock 、FESH、Ballet，挑战者EWES。初始源代码来自openssl1.1和密码学会官网，实际程序按照编译器最优+手工再调优原则选。

本实验室设计的测试方法:

1）编码器指标，明文为1G个count的CBC-MAC, 按最高性能指定count寄存器。

2）解码器指标，由MAC反向计算到IV。

3)关闭其他线程负载，在睿频下至少3次测试，取最好结果。

所述测试方法不选单路测试优选CBC-MAC峰值测试的原因，实测比CBC峰值快4%，因为高性能CPU自动分析数据相关性动态指令配对，当前明文块未处理完已经执行下一明文块的加密，，所以不是真实的软件关键路径，另外写内存会干扰峰值性能。

小马商密实验室认为，进入15C/B以内的分组密码设计都不简单，均属于顶级设计，不怕不服气就怕不争气，你设计并调优软件关键路径达到15C/B的作品，试试就知道竞品有多难多卷了，哈哈！甲级俱乐部的每个实现技巧实质都有自己的小道道，都值得琢磨学习。更多竞品设计做到20C/B都挺难的。以魁首AES128成绩的1/2至1/3为等级标杆，划分两级俱乐部，甲级俱乐部指标为小于15C/B，乙级俱乐部标准17C/B-25C/B，15C/B-17C/B待定准甲级。所以性能表现一目了然。

表2分组密码软件关键路径龙虎榜

CBC-MAC&MAC->IV

规格      #

性能      #

重要技巧            #

甲级俱乐部

AES-128-10轮

8.62C/B

0.638GB/S

查大表实现，线性盒子被查表一并实现，解密采用等价密钥策略。

AMD的并行查表又助力1把。厉害！

EWES-128-7轮

11.72C/B 0.469GB/S

X逻辑查表和计算并行，P和P-1逻辑需要指令配对。

uBlock-128-16轮

26.27C/B

0.2093GB/S

并置的s盒由1条pshufb实现，消耗SIMD指令，AMD处理器性能急剧变差。Intel处理器比EWES快1点点。

Ballet-128

Enc:9.23C/B 0.597GB/S

Dec:14.52 C/B

0.3786GB/S

ARX实现楷模，软件关键路径严重不对称。

暂定准甲级

Camellia-128-18轮

15.1C/B 0.3648GB/S

Feistel结构设计楷模，Feistel串行结构，所以串行瓶颈

FESH-128

16.11C/B 0.3412GB/S

4bitS盒切片实现楷模，经查关键路径稍微不对称，主要S盒关键路径不对称。

乙级俱乐部

SM4

23.18C/B 0.2373GB/S

对源码调优+0.5C/B，21C/B是不能突破的瓶颈，广义feistel等于串行计算结构。

3.   分组密码7强的软件关键路径测评的精确结果

压力测试平台为，AMD9700X睿频5.5G,Gcc-m64编译器 ，，源代码来自Openssl-1.1.1代码和密码学会官网代码。

[email-masked]

睿频5.5G

AES-128

EWES-128

uBlock

Balliet

CBC-MAC

计算

25.079秒

0.638GB/S

8.621C/B

34.094秒

0.469GB/S

11.72C/B

76.43秒

0.2093GB/S

26.27C/B

26.828秒

0.597GB/S

9.23C/B

解码器反向计算

25.156秒

8.647GB/S

0.636C/B

同上

76.44秒

0.210GB/S

26.27C/B

42.266秒

0.3786GB/S

14.52 C/B

[email-masked]

睿频5.5G

FESH

Camellia

SM4

CBC-MAC

计算

46.875秒

0.3412GB/S 16.11C/B

43.86秒

0.3648GB/S

15.1C/B

67.42秒

0.2373GB/S

23.18C/B

解码器反向计算

54.422秒

0.2940GB/S 18.71C/B

45.86秒

0.3556GB/S

15.4C/B

同上

[email-masked]

睿频3.8G

AES-128

EWES-128

uBlock

Balliet

CBC-MAC

计算

46.644秒

0.3430GB/秒

11C/B

59.795秒

0.293GB/秒

14.2C/B

54.522秒

0.2935GB/秒

12.97C/B

48.937秒

0.3270GB/秒

11.62C/B

解码器反向计算

46.520秒

0.3439GB/秒

11C/B

同上

54.632秒

0.2929GB/秒

12.97C/B

72.229秒

0.2215GB/秒

17.16 C/B

[email-masked]

FESH

Camellia

SM4

CBC-MAC

计算

74.896秒

0.2136GB/秒

17.8C/B

77.299秒

0.207GB/S

18.36C/B

99.731秒

0.160GB/S

23.8C/B

解码器反向计算

83.726秒

0.1911GB/秒

19.88C/B

81.120秒

0.198GB/S

19.2C/B

同上

4.   AES的编码器的解密器软件关键路径的峰值性能实测代码

针对单路测试不能真实反应软件关键路径的技术不足，本实验室研制以下对AES代码的测试方案。

程序功能：1.用CBC-MAC和MAC->IV分别测试AES的编码器的解密器软件关键路径的峰值性能。

2.通过IV++测试编码器和解码器的正确性互补性。

输出：编码和解密时间，相应的C/B值和GB/s值。

特点：精度极高，0.01C/B和0.01GB/S精度；不但能测分组密码性能，反过来通过对比试验可以测试编译器表现和CPU表现。

代码说明：AES的4个函数全部包含引用openssl1.1的AES源代码，AES_set_encrypt_key  AES_set_decrypt_key AES_encrypt AES_decrypt。

用户复现方法：call5_AES_CBC_MAC_16G(5.5,1); 其中，5.5是由cpu-Z实测的睿频5.5G，按照cpu-Z结果填写。

IV也是从0开始累积，通过观察IV判断编码器和解码器的正确性。

编译器优选GccVersion13.1， -m64  -O4  选项。

#define   uchar unsigned char

void   call5_AES_CBC_MAC_16G(double   RuiPin,const  int  count_add )

{

const int     bits=128;

uchar       x,pkey[64];

int          tt0,tt;

__int64     i,k;

int         bits2=bits;

__int64     ll0;

double      di2,di3;

int         *X=(int *)out;

int         count;

memcpy(pkey,"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",16);

AES_set_encrypt_key((const   unsigned char *)pkey, bits2,&key_enc);

AES_set_decrypt_key((const   unsigned char *)pkey, bits2,&key_dec);

printf("sizeof key=%d   (key->rounds=%d   bits2=%d\n",sizeof(key_enc),key_enc.rounds,bits2);

/* 字节反序器侦察   你看看 关闭GETU32   PUTU32性能正负0.5C/B左右抖动！

哥/姐？你能理解关闭的意义吗？

X[0]=X[1]=0x33221100;

X[1]=GETU32( ((unsigned char *)&X[1]));

PUTU32(  ((unsigned char   *)&X[2])     , X[0]);

printf("GETU32(X[1]);,   PUTU32()  ###  X[2]=%08x,X[1]=%08x ,X[0]=%08x  \n",X[2],X[1],X[0]);

*/

memset(out,0,16);

while(1)

{

printf("16G字节  估计   26秒 AMD9700X #time=   25015 haomiao   #time=  24844 haomiao\n");

count=0;

tt0=GetTickCount();

for(i=0;i<(__int64)16000*1000000;i+=4*16)

{

AES_encrypt(out, out, (const   AES_KEY *)(&key_enc));

*((u32 *)out)^=count;

count+=count_add;

AES_encrypt(out, out, (const   AES_KEY *)(&key_enc));

*((u32 *)out)^=count;

count+=count_add;

AES_encrypt(out, out, (const   AES_KEY *)(&key_enc));

*((u32 *)out)^=count;

count+=count_add;

AES_encrypt(out, out, (const   AES_KEY *)(&key_enc));

*((u32 *)out)^=count;

count+=count_add;

}

tt0=GetTickCount()-tt0;

di2=(double)((double)i*1.0)/(0.001*tt0);

di3=RuiPin*0.001/(16.0/tt0);

printf("time=%7d haomiao   %7.3fC/B  %8.4fGB/s    AES_encrypt   RuiPin=%6.3f #%x %x %x %x count_add=%d   count=%u\n",tt0,di3,16.0/(0.001*tt0),RuiPin,X[3],X[2],X[1],X[0],count_add,count);

tt0=GetTickCount();

while(1)

{

count-=count_add;

*((u32 *)out)^=count;

AES_decrypt(out, out, (const   AES_KEY *)(&key_dec));    //39268210365  clk cpu  23.406   (in out xing)C/B   144931029.72B/S  144.93103MB/S   #1000M 11.576 秒  精度?

i-=4*16;

count-=count_add;

*((u32 *)out)^=count;

AES_decrypt(out, out, (const   AES_KEY *)(&key_dec));    //38882067512  clk cpu  23.176 (展开循环) C/B   146525903.93B/S  146.52590MB/S   #1000M 11.450 秒   精度?

count-=count_add;

*((u32 *)out)^=count;

AES_decrypt(out, out, (const   AES_KEY *)(&key_dec));    //25680364763  clk cpu  15.307   C/B  221744858.58B/S  221.74486MB/S #1000M  7.566 秒  精度? X64-

count-=count_add;

*((u32 *)out)^=count;

AES_decrypt(out, out, (const   AES_KEY *)(&key_dec));    //36986220667  clk cpu  22.046   C/B  154074901.28B/S  154.07490MB/S #1000M 10.889 秒  精度? i386-

if(i<=0)break;

}

tt0=GetTickCount()-tt0;

di2=(double)((double)i*1.0)/(0.001*tt0);

di3=RuiPin*0.001/(16.0/tt0);

printf("time=%7d haomiao   %7.3fC/B  %8.4fGB/s    AES_decrypt   RuiPin=%6.3f #%x %x %x %x \n",tt0,di3,16.0/(0.001*tt0),RuiPin,X[3],X[2],X[1],X[0]);

X[0]++;  //

if('q'==getchar())break;

}

}

5.   结束语

对本次入选 7 强的算法开展编解码关键路径性能指标专项评测后，我们挖掘到不少值得深究的技术细节与反常现象：

1、比如Ballet和FESH的软件关键路径不对称是怎么被发现和分析，如何设计分割测试试验验证分析结果，在精确测算和评估组件的延迟。

2、根据测试结果研判AMD处理器和intel处理器的工作特点，又如何反向拆解 AMD 与 Intel 处理器的架构工作特性差异？是不是可以用某个测试平台对CPU的定点性能超标量性能考试，看看cpu的定点和超标量做的怎样，有没有AMD9700X好。

3、最难修改的程序是基于uBlock源代码改造；实施这个外科手术确实需要一点设计和编程的技巧。

上述技术细节与研究过程，我们将分批次在后续推文中逐步拆解公布，敬请持续锁定本号，与我们一同解锁这些密码学性能测试的技术奥秘！

2026年4月2日

请关注“小马商密实验室” 和或 官网 www.sjxb.com。小马商密实验室深耕商用密码学与区块链赛道，既要做原始创新的攻坚者，也要做硬核知识的科普员！「创」字头是原创技术干货，「普」字头是趣味科普内容。原创之路道阻且长，感恩你的赞赏与支持！这笔心意将投入专业资料购置、硬件平台搭建，帮我坚守创作初心。未来继续输出实用技术内容，与你一同成长，感谢陪伴

预览时标签不可点

微信扫一扫赞赏作者喜欢作者

关闭

1人喜欢

更多

正在加载...

正在加载...

关闭

更多

名称已清空

微信扫一扫赞赏作者
喜欢作者其它金额

赞赏后展示我的头像

作品

暂无作品

喜欢作者

其它金额

¥

最低赞赏 ¥0

确定

返回

其它金额

更多

赞赏金额

¥

最低赞赏 ¥0

1

2

3

4

5

6

7

8

9

0

.

修改于2026年4月4日

关闭

更多

搜索「」网络结果

关闭

调整当前正文文字大小

更多

100%

修改于

​

留言

暂无留言

1条留言

已无更多数据

发消息

写留言:

微信扫一扫
关注该公众号

继续滑动看下一个

轻触阅读原文

小马商密实验室

向上滑动看下一个

当前内容可能存在未经审核的第三方商业营销信息，请确认是否继续访问。

继续访问取消

微信公众平台广告规范指引

知道了

微信扫一扫
使用小程序

取消
允许

取消
允许

取消
允许

×
分析

微信扫一扫可打开此内容，
使用完整服务

小马商密实验室

已关注

赞

分享

推荐

写留言

：
，
，
，
，
，
，
，
，
，
，
，
，
。

视频
小程序

赞
，轻点两下取消赞
在看
，轻点两下取消在看
分享
留言
收藏
听过

可在「公众号 > 右上角 > 划线」找到划线过的内容

我知道了

,

,

选择留言身份

留言

暂无留言

1条留言

已无更多数据

发消息

写留言:

关闭

更多

关闭

确认提交投诉

你可以补充投诉原因（选填）

确定