素域和扩域
素域(prime field)#
有限域也叫伽罗瓦域(galois field),指的是由有限个元素组成的集合,在这个集合内可以执行加、减、乘和逆运算。
而在密码学中,我们只研究拥有有限个元素的域,也就是有限域。
-
域中包含元素的个数称为域的阶。
-
只有当
是一个素数幂时,即 (其中 为正整数是 的次数, 为素数),阶为 的域才存, 称为这个域的特征。
也就是说,有限域中元素的个数可以是11(p=11是一个素数,n=1)、可以是81(p=3是一个素数,n=4)、也可以是256(p=2是一个素数,n=8).....但有限域的中不可能拥有12个元素,因为
有限域中最直观的例子就是阶为素数的域,即
域的两种操作就是整数加法(模p)和整数乘法(模p),
所以总结:素域就是有素数个元素的有限域,即阶为素数的有限域。
-
中所有的非零元素都存在逆元 -
内所有的运算都是模 实现的。
素域内的算数运算规则如下:
-
加法和乘法都是通过模
实现的; -
任何一个元素
的加法逆元都是由 得到的; -
任何一个非零元素
的乘法逆元定义为 。
例:在素域
在很多地方a的加法逆元用
表示,a的乘法逆元用 表示
注:
加法:
乘法:
另外素域
举例:
13是
扩域(extension field)#
如果有限域的阶不是素数,则这样的有限域内的加法和乘法运算就不能用模整数加法和整数乘法模p表示。
阶数不是素数,且大于1的有限域被称为扩展域
为了处理扩展域,我们就要使用不同的符号表示扩展域内的元素,使用不同的规则执行扩展域内元素的算术运算。
设
给定这样的一组基,就可以由向量
⚠️:这里一个元素可以由一个向量表示,在同态加密的SIMD中有用到!
(1)多项式基
-
不可约多项式
可以取首一多项式 (其中 ) -
中的元素由多项式环 中所有次数低于 的多项式构成,即 -
多项式集合
是 作为向量空间在 上的一组基,称为多项式基 -
当
含有因子 时, 可以由 扩张生成, 从 中选取一个合适的 次不可约多项式作为 在 上的不可约多项式, 可以由塔式扩张方法 (towering method) 得到, 这种扩张的基本形式仍是由 中元素组成的向量 -
例如当
时, 可以先由 经过 3 次扩张得扩域 ,再由 经过 2 次扩张得到扩域 ; 也可以先由 经过 2 次扩张得扩域 , 再由 经过 3 次扩张得到扩域
(2)正规基
- 对于任意有限域
及其扩域 , 这样的基总是存在的。
⚠️:常用的是多项式基表示,以下都是以多项式基表示!
例如在扩展域
注意:在域
扩域
- 加减法
例如在AES算法中的密钥加法层中就使用了这部分的知识,但是不是很明显,因为我们通常把扩展域中的加法当作异或运算进行处理了,因为在扩展域
两个元素之差的计算公式就是:
注:在减法运算中减号之所以变成加号,这就和二进制减法的性质有关了,从上述两个公式中我们发现在扩展域中加法和减法等价,并且与XOR等价(异或运算也被称作二进制加法)。
二进制减法:
- 乘法
例如扩展域的乘法主要运用在AES算法的列混淆层(Mix Column)中,也是列混淆层中最重要的操作。
我们想将扩展域中的两个元素用多项式形式展开,然后使用标准的多项式乘法规则将两个多项式相乘:
注:通常在多项式乘法中
举例:
参考#
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16540779.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-08-01 mysql数据库备份