2021—研一实习笔记-2
2021-3-10 第二天
一、问题:
√1、表示形式为何要分为:未压缩、压缩、混合?
√2、点的不同表示形式在应用时主要应用在数据类型的转换过程中,转换过程具体是什么样的?
3、何时需要进行数据转换?
4、私钥dB和随机数rB,在哪些算法下是一致的?哪些情况下是不一致的?
5、生成算法和验证算法的推导和证明是什么样的?
6、其他基于椭圆曲线的算法(包括数字签名、密钥交换、公钥加密)(除了SM2外)的流程是什么样的?这些不同的流程如何设计的如此恰到好处?怎样从理论上去判别它们的性能好坏?
二、规则:
有限域为素域Fp时,要求p>2^191且p为素数
有限域为扩域F_(2^m )时,要求m>192且m为素数
椭圆曲线上的点均采用仿射坐标表示
必须选择安全的椭圆曲线
禁止使用弱椭圆曲线(包括超奇异曲线和异常曲线)
数据转换规则椭圆曲线系统参数符合要求,能通过全部验证
生成的椭圆曲线可以抗MOV攻击和异常曲线攻击(包含在第4点中)
生成的密钥对(主要是公钥P)参数符合要求,能通过全部验证
三、学习内容:
F_(2^m )上椭圆曲线的运算规则(包括求逆、加法、倍点)
椭圆曲线方程:
y2+xy=x3+〖ax〗2+b,其中a,b∈F_(2m ),且b≠0
加法规则:
(a) O+O=O, P+O=O+P=P,
(b) P=(x,x+y), P+(-P)=O
© P_3=(x_3,y_3)〖=P〗_1+P_2,
其中 λ=(y_1+y_2)/(x_1+x_2),
x_3=λ^2+λ+x_1+x_2+a, y_3=λ^2+λ(x_1+x_3 )+x_3+y_1
倍点规则:
P_3=(x_3,y_3 ) 〖=P〗_1+P_1=2P_1
其中 λ=x_1+y_1/x_1,
x_3=λ^2+λ+a, y_3=〖x_1〗^2+(λ+1) x_3
F_(2^m )中元素表示方法:m长比特串、多项式基(PB)、正规基(NB)
F_(2^m )={a_(m-1) x^(m-1)+a_(m-2) x^(m-2)+⋯+a_1 x+a_0 |a_i∈F_2,i=0,1,…,m-1}
多项式基(PB):{x(m-1),x(m-2),…,x,1}
记为:α=(a_(m-1) a_(m-2)…a_1 a_0)
正规基(NB):α=a_0 β(20 )+a_1 β(21 )+⋯+a_(m-1) β(2(m-1) )
记为:α=(a_0 a_1 a_2…a_(m-2) a_(m-1))
两种表示都是比特串的形式,但是顺序不同。
#正规基表示的比特排序是从小到大的:0 1 2…m-1
#多项式基表示的比特排序是从大到小的:m-1…2 1 0
3、数据类型的转换(比特串、字节串、域元素、点、整数)
椭圆曲线上点的三种表示形式(压缩、未压缩、混合)以及单一字节PC
域元素:q为奇素数时,域元素可看作整数;q=2^m时,域元素可看作比特串。
Fp上椭圆曲线点的压缩和解压缩:
#椭圆曲线上,x确定时,对应两个y值,一定为一奇一偶,因此y_P的值为0或1
压缩:(y_P ) ̃取为y_P的最右边一比特(0或1)
解压缩:根据xP和椭圆曲线公式,计算y_P’。
若(y_P ) ̃与y_P最右边一比特一致,则〖y_P=y〗_P’;否则,〖y_P=p-y〗_P’。
#PC为02或06时,y_P为偶数
#PC为03或07时,y_P为奇数
#PC为00时,表示P为无穷远点O
#PC为04时,表示未压缩,y_P的值从Y中获得
4、系统参数验证
参数:
a)域的规模q=p
b)(选项)一个长度至少为192的比特串SEED
c)Fp中的两个元素a和b,它们定义椭圆曲线E的方程,y2=x3+ax+b
d)基点G=(xG,yG)∈E(Fp),G≠O
e)基点G的阶n
f)(选项)余因子h=#E(Fp)/n
验证:
椭圆曲线系统参数生成者应验证下面的条件
a)验证q=p是奇素数
b)验证a、b、Xg和yG是区间[0,p-1]中的整数
c)若按照附录D描述方法拟随机产生椭圆曲线,验证SEED是长度至少为192的比特串,且a,b由SEED派生得到
d)验证(4a3+27b2)mod p ≠ 0
e)验证yG2=xG3+axG+b(mod p)
f)验证n是素数,n>2191且n>4*p(1/2)
g)验证[n]G=O
h)计算 h’=⌊〖(p(1/2)+1)〗2/n⌋,并验证〖h=h〗’
i)验证抗MOV攻击条件和抗异常曲线攻击条件成立
j)若以上任何一个验证失败,则输出“无效“
5、选择安全的椭圆曲线
ECDLP现有攻击方法:
Pohlig-Hellman方法
BSGS方法
Pollard方法
并行Pollard方法
MOV-方法
异常曲线离散对数求解方法
GHS-方法
#一般的离散对数问题,求解方法都为指数级复杂度
#某些特殊曲线的离散对数问题,存在多项式级或亚指数级复杂度的算法
安全椭圆曲线满足的条件
抗MOV攻击
一些约化攻击:将有限域F_q上的椭圆曲线离散对数问题,约化为F_(q^B )。
#这种攻击方法只有在B较小时实用,大多数椭圆曲线不符合
抗MOV攻击条件,确保一条椭圆曲线不易受此约化方法攻击。
MOV阈:一个正整数B,使得求取F_(q^B )上离散对数问题至少与F_q上的椭圆曲线离散对数问题同样困难。
对于q>2^191,要求B≥27
2)抗异常曲线
在素域上的椭圆曲线〖E(F〗_q),若〖#E(F〗_q)=p,则〖E(F〗_q)为异常曲线。
#经证明可在多项式时间内求解异常曲线的离散对数。
抗异常曲线条件:〖#E(F〗_q)≠p
F_q上绝大多数椭圆曲线满足抗异常曲线攻击条件
3)其他条件
为避免Pohlig-Hellman方法和Pollard方法的攻击,基点的阶n需要是足够大的素数。
为避免GHS方法的攻击,F_(2^m )中的m应选择素数。