安全规约第二讲:Preliminaries
安全规约主目录博客链接:https://blog.csdn.net/qq_43479839/article/details/117249715
目录@xyi
1、Finite Field
1.1 Definition of Finite Field[又称Galois field 伽罗瓦域]
- 下面0F和1FF都是单位元,0是加法的单位元,1是乘法的单位元。
- 加法和乘法上都有逆元,加法一定有逆元,但是在某些域上,不是所有的乘法运算都有逆元,
1.2 Field Operations【俩个最基本的运算 扩展到4种运算】
1.3 Definition Explanations[对有限域的解释]
- q是一个素数,被称为特性值
1.4 Special Finite Field :Prime Field Fq【素数域】
- 在这个里面定义的加法是模加,定义的乘法是模乘。
- 第三个式子:是求u的加法逆元。
- 第四个式子:是求u的乘法逆元。
2、Cyclic Group[循环群:群的名称]
- 1、 阿贝尔群【交换群】
- 2、阿贝尔循环群
- 3、素数阶的阿贝尔循环群
2.1 Definition and Description
2.1.1 Definition of Group[阿贝尔群的定义:]
- 这个群的定义和上面有限域的定义是差不多的,就只是将俩种运算减成了一种运算。
- 其中也包含单位元和逆元的定义
2.1.2 Definition of Group(2)[群的定义:阿贝尔循环群以及素数阶的阿贝尔循环群]
为什么需要循环群和素数阶?
- 因为在这样的群G上面是不存在confinement attack的,
- 这样的群有一个很特别的地方:就是除了g0外,其他所有的群元素都是G的生成元。
- 第三条自己看:
Zp*表示的Zp中所有的可逆元素集合。【是Zp中所有满足gcd(x,p)=1的元素组成的集合;】
2.1.3 Cyclic Group in Description[循环群的描述]:要给出其基本的描述
**下面(G,g,p)这是描述群的最基本的描述。**如果当我们使用特殊群的时候,我们可能需要一些特殊的参数来进行描述。
2.1.4 Size of Group Element【群元素的大小:当设计到效率问题的时候会关注】
p个群元素。一个群元素需要用几个bit来进行表达?
其它如下看:
- 每个群元素都可以被编码成为一个比特串。
- 每个群元素都必须被不同的比特串代表。
- 为了去表示p=2160个元素,我们需要至少160个比特串(表示可能出现的群元)。
- 这样的最佳size是很难达到的。
128bit安全。(安全等级)
2.2 Easy Problem and Hard Problem
- 一些简单的计算是必须需要的,不然密码就会很不实用,比如:验证者去验证的时候,必须是简单的计算,不然就不能验证。
- 然后有一些计算必须是困难的,不然这个密码就会很不安全。比如:没有私钥去解密。
2.2.1 Easy:Group Exponentiation【群指数运算:可能使用重复平方算法【a repeated squaring algorithm】】
square-and-multiply algorithm:这好像跟重复平方算法的内容好像很像,可以去了解一下
square-and-multiply algorithm:
2.2.2 Hard:Discrete Logarithm【离散对数问题:算出这个离散对数是一个困难问题】
- 这里值得注意的一个问题就是:为什么说之前需要一个素数阶的群?;离散对数x一定是存在的。
下面这个ppt大概的就是说:要计算出这个离散对数问题是很难的。具体可以看
2.3 Two Group Choices
2.3.1 Cyclic Groups and Finite Fields【从有限域到群】
- 对于有限域(Fqn,+,)意味着俩个群,(Fqn,+)和(Fq^n^)
- 我们还有很多需要其它更高级的群的各种原因。
- 比如:对群元素更短的表示。
我们现在已经知道了循环群,但是我们还需要更高级的群。
2.3.2 Group Choice 1:Multiplicative Group[乘法群或者叫做模乘群]
一个乘法群被定义为(G,g,q,p)
- 群元素:如下
- 群生成元:
- 群阶:p满足p|(q-1)
- 群操作:u * v = u x v mod q
- Note:关于q的选择,在这个特殊的架构中q很影响DLP的困难程度,q至少是1024 bit。否则,解决DLP是少于280步。
2.3.3 Group Choice 2:Elliptic Curve Group[椭圆曲线群]
一个椭圆曲线群被定义作为(G,g,p):其中
- 群元素:一个群元素是一个在椭圆曲线上的点(x,y)。当曲线被给定,我们使用x和多一位仅代表一个群元素。
- 群生成元:p是一个素数阶
- 群操作:我们有u*v被椭圆曲线定义。
- Note:群元素的大小应该和群阶一样短,因为当|g|=|p|=160,解决DLP需要280步。
2.4 Computations Over Group[基于群上的运算]
- 群计算:
- 群的逆计算:
- 群除法:
- 群指数:
3、Bilinear Pairings[双线性对]
- 双线性对:将在椭圆曲线群中的俩个元素映射到第三个群元素中,在一个乘法群众不会失去它的同构性质。
- 双线性对原本被引入去解决椭圆曲线群中的困难问题,通过映射它的问题实例到乘法群的问题实例上。
- homomorphism:同态
3.1 Symmetric and Asymmetric
3.1.1 Sysmetric Pairing:Definition[对称双线性对]
定义PG=(G,GT,g,p,e)是一个对称对群,在这里G是一个椭圆曲线群,GT是一个乘法群的子群,|G|=|GT|=p,其中g是G的生成元,
e是满足下面三个性质的映射:
- 对于所有的u,v∈G; a,b∈ZP; e(ua,vb)=e(u,v)ab.
- 其中e(g,g)是GT的生成元。
- 对于所有的u,v,存在一个有效的算法去计算e(u,v)
3.1.2 Sysmetric Pairing(Size)
有俩种类型的DLP:
- 从g和gx那儿计算x。
- 从e(g,g)和e(g,g)x那么计算x。
- 为了确保解决DLP问题是至少在280步,我们需要
3.1.1 ASysmetric Pairing:Definition[非对称双线性对]
3.2 Computational Over Pairing
4、Hash Functions
4.1 Security-Based Classification[基于安全的分类]
4.1.1 One-way and Collision-Resistant[单向和抗碰撞]
4.2 Application-Based Classification[基于应用的分类]
4.2.1 hash输出的空间:可以被分为下面三类
其中hash函数的输入都是任意字符串
- 输出空间为n-bits的字符串,
- 输出空间为Zp:{1,2,……p-1},这种hash函数经常被嵌入hash到群指数上,例如:gH(m)
- 输出空间为G:循环群,
5、(Pseudo)Random Number Generator[(伪)随机数生成器]
5.1 (Pseudo)Random Number Generator(1)(伪)随机数生成器
5.2 (Pseudo)Random Number Generator(2)
在方案中算法中是真正的random数据,但是在真实世界中,算法选择的是有伪随机生成器生成的伪随机数
6、Insecure Schemes