-
-
[原创]S盒分量布尔函数ANF工具 | 常见对称加密算法(4比特到10比特)规模S盒查找表及其对应ANF
-
发表于: 2026-6-19 07:49 2179
-
S盒分量布尔函数ANF工具 | 常见对称加密算法(4比特到10比特)规模S盒查找表及其对应ANF
什么是布尔函数的ANF(代数正规型)?

为什么叫“正规型”?
因为它是代数攻击最直接面对的“正规”形式。在ANF中,每一项的次数(即乘法项中变量的个数,如xy次数为2)直接决定了函数运算的复杂度。最高次项的次数就是布尔函数f的代数次数,这是衡量密码安全性的核心基石。
为什么要了解了解S盒分量布尔函数的ANF?
了解S盒分量布尔函数的代数正规型(ANF),核心作用在于为密码分析(特别是代数攻击)提供关键数据,并量化S盒的核心安全指标。
在密码算法的工程实现中,S盒的分量布尔函数采用代数正规型(ANF)表示,相较于真值表、查找表或多项式基等其他常见形式,无论在软件的功能正确性验证层面,还是在运行时执行效率层面,均展现出显著的综合优势。从功能正确性看,ANF直接对应布尔函数的代数次数和单项式结构,便于形式化验证差分均匀性、非线性度等密码学指标,能有效避免因查表边界条件或存储截断引发的隐性错误;从执行效率看,ANF的求值可转化为位运算(与、异或)的固定短流水线,无需内存访问,在SIMD或寄存器级并行下可大幅减少时钟周期,且其系数稀疏性往往能进一步剪枝冗余计算。相比之下,传统查表法虽实现直观,却受限于缓存缺失、时序侧信道和规模扩展性;而多项式插值法又存在计算开销过大的问题。因此,综合功能安全性与速度鲁棒性,ANF表示的S盒分量函数无疑是当前软硬件协同设计中的更优选择。
简单来说,ANF是将布尔函数表示为关于输入比特的“异或和”(XOR)与“逻辑与”(AND)的多项式。这种表示是唯一的,它把复杂的密码部件转化为了具体的代数方程。
具体作用体现在以下几个方面:
(1)评估代数次数 (Algebraic Degree):ANF多项式中最高次项的次数。次数越低,S盒越容易被转化为低次方程,从而面临更严重的代数攻击威胁。
(2)发动代数攻击 (Algebraic Attacks):将整个密码系统表示为ANF方程组后,通过收集明文-密文对来求解密钥。例如,利用AES的ANF,已能在约2^33小时内恢复128比特密钥。
(3)衡量代数免疫度 (Algebraic Immunity):衡量抵御特定代数攻击的能力。这个关键指标必须通过分析ANF才能计算。
(4)分析算法结构与偏差:ANF能揭示算法与随机置换的潜在结构性偏差。例如研究发现AES轮函数的ANF项数(约496项)远少于随机函数(约2^31项),显示其存在非随机结构。
(5)优化硬件实现:由于ANF直接对应“异或”和“与”逻辑门,可直接用于优化FPGA等硬件电路的面积与功耗。
总而言之,ANF是连接“密码部件”与“代数方程”的桥梁。通过它,我们得以用数学工具量化分析S盒的安全性,并预测其抵抗代数攻击的能力。
以下我将给出常见对称加密算法中的(4X4到10X10)规模双射S盒查找表以及通过本人编写的”S盒分量布尔函数ANF”工具求解对应S盒的ANF。本工具” S盒分量布尔函数ANF”完美解决了”S盒密码指标自动评估软件sboxAssessment”这个软件存在的问题,修复了后者在代数次数和代数项数上计算不准确的问题。
PRESENT算法(分组加密算法,S盒规模:4X4)
该S盒的查找表为:
{0x0C,0x05,0x06,0x0B,0x09,0x00,0x0A,0x0D,0x03,0x0E,0x0F,0x08,0x04,0x07,0x01,0x02};
对应的S盒分量布尔函数ANF求解结果为:

SHA3算法(密码杂凑算法,S盒规模:5X5)
该S盒的查找表为:
{
0,9,18,11,5,12,22,15,10,3,24,1,13,4,30,7,20,21,6,23,17,16,2,19,26,27,8,25,29,28,14,31
};
对应的S盒分量布尔函数ANF求解结果为:

自创算法(分组加密算法,S盒规模:6X6)
该S盒的查找表为:
{
0x15, 0x35, 0x34, 0x0A, 0x36, 0x20, 0x2B, 0x18,
0x32, 0x3C, 0x1E, 0x1B, 0x08, 0x10, 0x0F, 0x33,
0x3A, 0x0E, 0x26, 0x2C, 0x03, 0x24, 0x09, 0x13,
0x2F, 0x29, 0x1F, 0x04, 0x21, 0x3E, 0x38, 0x0D,
0x2A, 0x05, 0x23, 0x3F, 0x12, 0x31, 0x06, 0x27,
0x39, 0x28, 0x16, 0x3D, 0x2D, 0x0B, 0x19, 0x30,
0x00, 0x1D, 0x0C, 0x07, 0x01, 0x3B, 0x37, 0x1A,
0x1C, 0x11, 0x22, 0x02, 0x2E, 0x17, 0x25, 0x14
};
对应的S盒分量布尔函数ANF求解结果为:

MISTY1算法(分组加密算法,S盒规模:7X7)
该S盒的查找表为:
{
0x1b,0x32,0x33,0x5a,0x3b,0x10,0x17,0x54,0x5b,0x1a,0x72,0x73,0x6b,0x2c,0x66,0x49,
0x1f,0x24,0x13,0x6c,0x37,0x2e,0x3f,0x4a,0x5d,0x0f,0x40,0x56,0x25,0x51,0x1c,0x04,
0x0b,0x46,0x20,0x0d,0x7b,0x35,0x44,0x42,0x2b,0x1e,0x41,0x14,0x4b,0x79,0x15,0x6f,
0x0e,0x55,0x09,0x36,0x74,0x0c,0x67,0x53,0x28,0x0a,0x7e,0x38,0x02,0x07,0x60,0x29,
0x19,0x12,0x65,0x2f,0x30,0x39,0x08,0x68,0x5f,0x78,0x2a,0x4c,0x64,0x45,0x75,0x3d,
0x59,0x48,0x03,0x57,0x7c,0x4f,0x62,0x3c,0x1d,0x21,0x5e,0x27,0x6a,0x70,0x4d,0x3a,
0x01,0x6d,0x6e,0x63,0x18,0x77,0x23,0x05,0x26,0x76,0x00,0x31,0x2d,0x7a,0x7f,0x61,
0x50,0x22,0x11,0x06,0x47,0x16,0x52,0x4e,0x71,0x3e,0x69,0x43,0x34,0x5c,0x58,0x7d
};
对应的S盒分量布尔函数ANF求解结果为:

AES算法(分组加密算法,S盒规模:8X8)
该S盒的查找表为:
{
0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
};
对应的S盒分量布尔函数ANF求解结果为:

KASUMI算法(分组加密算法,S盒规模:9X9)
该S盒的查找表为:
{
0x00a7, 0x00ef, 0x00a1, 0x017b, 0x0187, 0x014e, 0x0009, 0x0152, 0x0026, 0x00e2, 0x0030, 0x0166, 0x01c4, 0x0181, 0x005a, 0x018d,
0x00b7, 0x00fd, 0x0093, 0x014b, 0x019f, 0x0154, 0x0033, 0x016a, 0x0132, 0x01f4, 0x0106, 0x0052, 0x00d8, 0x009f, 0x0164, 0x00b1,
0x00af, 0x00f1, 0x01e9, 0x0025, 0x00ce, 0x0011, 0x0000, 0x014d, 0x002c, 0x00fe, 0x017a, 0x003a, 0x008f, 0x00dc, 0x0051, 0x0190,
0x005f, 0x0003, 0x013b, 0x00f5, 0x0036, 0x00eb, 0x00da, 0x0195, 0x01d8, 0x0108, 0x00ac, 0x01ee, 0x0173, 0x0122, 0x018f, 0x004c,
0x00a5, 0x00c5, 0x018b, 0x0079, 0x0101, 0x01e0, 0x01a7, 0x00d4, 0x00f0, 0x001c, 0x01ce, 0x00b0, 0x0196, 0x01fb, 0x0120, 0x00df,
0x01f5, 0x0197, 0x00f9, 0x0109, 0x0059, 0x00ba, 0x00dd, 0x01ac, 0x00a4, 0x004a, 0x01b8, 0x00c4, 0x01ca, 0x01a5, 0x015e, 0x00a3,
0x00e8, 0x009e, 0x0086, 0x0162, 0x000d, 0x00fa, 0x01eb, 0x008e, 0x00bf, 0x0045, 0x00c1, 0x01a9, 0x0098, 0x00e3, 0x016e, 0x0087,
0x0158, 0x012c, 0x0114, 0x00f2, 0x01b5, 0x0140, 0x0071, 0x0116, 0x000b, 0x00f3, 0x0057, 0x013d, 0x0024, 0x005d, 0x01f0, 0x001b,
0x01e7, 0x01be, 0x01e2, 0x0029, 0x0044, 0x009c, 0x01c9, 0x0083, 0x0146, 0x0193, 0x0153, 0x0014, 0x0027, 0x0073, 0x01ba, 0x007c,
0x01db, 0x0180, 0x01fc, 0x0035, 0x0070, 0x00aa, 0x01df, 0x0097, 0x007e, 0x00a9, 0x0049, 0x010c, 0x0117, 0x0141, 0x00a8, 0x016c,
0x016b, 0x0124, 0x002e, 0x01f3, 0x0189, 0x0147, 0x0144, 0x0018, 0x01c8, 0x010b, 0x009d, 0x01cc, 0x01e8, 0x01aa, 0x0135, 0x00e5,
0x01b7, 0x01fa, 0x00d0, 0x010f, 0x015d, 0x0191, 0x01b2, 0x00ec, 0x0010, 0x00d1, 0x0167, 0x0034, 0x0038, 0x0078, 0x00c7, 0x0115,
0x01d1, 0x01a0, 0x00fc, 0x011f, 0x00f6, 0x0006, 0x0053, 0x0131, 0x01a4, 0x0159, 0x0099, 0x01f6, 0x0041, 0x003d, 0x00f4, 0x011a,
0x00ad, 0x00de, 0x01a2, 0x0043, 0x0182, 0x0170, 0x0105, 0x0065, 0x01dc, 0x0123, 0x00c3, 0x01ae, 0x0031, 0x004f, 0x00a6, 0x014a,
0x0118, 0x017f, 0x0175, 0x0080, 0x017e, 0x0198, 0x009b, 0x01ef, 0x016f, 0x0184, 0x0112, 0x006b, 0x01cb, 0x01a1, 0x003e, 0x01c6,
0x0084, 0x00e1, 0x00cb, 0x013c, 0x00ea, 0x000e, 0x012d, 0x005b, 0x01f7, 0x011e, 0x01a8, 0x00d3, 0x015b, 0x0133, 0x008c, 0x0176,
[招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!