【IoT】加密与安全:ECC 算法基础原理浅析

1、初始 ECC 算法

1.1、用户 A 密钥生成

1)用随机数发生器产生随机数 k∈[1,n-1];

2)计算椭圆曲线点 PA=[k]G,为公钥,k 为用户 A 私钥;

1.2、 用户 B 加密算法及流程

设需要发送的消息为比特串 M,klen 为 M 的比特长度。

为了对明文 M 进行加密,作为加密者的用户 B 应实现以下运算步骤:

1)用随机数发生器产生随机数 r∈[1,n-1] (随机数 r 为用户 B 的私钥);

2)计算椭圆曲线点 C1=[r]G=(x1,y1),,将 C1(用户 B 的公钥)的数据类型转换为比特串;

3)计算椭圆曲线点 C2=[r]=(x2,y2),将 C2 的数据类型转换为比特串;

4)计算 C3= M*x2(modp)

扫描二维码关注公众号,回复: 5006902 查看本文章

5)输出密文 C=(x1,y1,C3)

一个 M 对应一个 C;

1.3、 用户 A 解密算法及流程

1)从密文 C 中取出 C1(x1,y1)。

2)使用私钥 k 计算点 C4(x2,y2)=k C1=k ( x1,y1)。

3)在中计算。

4)最后计算明文 P = C3,解密完成。

2、明文嵌入 ECC 算法

2.1、密钥生成用户 A

1)用随机数发生器产生随机数 k∈[1,n-1];

2)计算椭圆曲线点=[k]G,为公钥,k 为用户 A 私钥;

2.2、 用户 B 加密算法及流程

设需要发送的消息为比特串 M,klen 为 M 的比特长度。

为了对明文 M 进行加密,作为加密者的用户 B 应实现以下运算步骤:

1)用随机数发生器产生随机数 r∈[1,n-1](随机数 r 为用户 B 的私钥);

2)计算椭圆曲线点 C1=[r]G=(x1,y1),,将 C1(用户 B 的公钥)的数据类型转换为比特串;

3)计算椭圆曲线点 C2=[r]=(x2,y2),将 C2 的数据类型转换为比特串;

4)将明文 M 表示成一个域元素,即将明文转换成椭圆曲线上的点

5)计算 C3=  C2

6)输出密文 C=(x1,y1,C3)

一个 M 对应一个 C

2.3、用户A解密算法及流程

1)从密文 C 中取出 C1(x1,y1);

2)使用私钥 k 计算点 C4(x2,y2)=k C1=k (x1,y1);

3)从密文 C 中取出 C3;

4)最后计算明文 P = C3- C4,解密完成。

3、SM2 算法

RSA 算法的危机在于其存在亚指数算法,对 ECC 算法而言一般没有亚指数攻击算法。

SM2 椭圆曲线公钥密码算法:

我国自主知识产权的商用密码算法,是 ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。

ECC 算法描述:

1)用户 A 选定一条适合加密的椭圆曲线 Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点 G;

2)用户 A 选择一个私有密钥 k,并生成公开密钥(公钥 PB)K=kG;

3)用户 A 将 Ep(a,b)和点(公钥)K,G 传给用户 B;

4)用户 B 接到信息后 ,将待传输的明文(M)编码到 Ep(a,b)上一点 M,并产生一个随机整数 r(r<n),加密开始;

5)用户 B 计算点 C1=M+rK,C2=rG;

6)用户 B 将 C1、C2 传给用户 A;

7)用户 A 接到信息后,计算 C1-kC2,结果就是点 M,因为 C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M 再对点M进行解码就可以得到明文。

密码学中,描述一条 Fp 上的椭圆曲线,常用到六个参量:

T=(p,a,b,G,n,h)

p、a、b 用来确定一条椭圆曲线,G 为基点,n 为点 G 的阶,h 是椭圆曲线上所有点的个数 m 与 n 相除的整数部分。

这几个参量取值的选择,直接影响了加密的安全性。

参量值一般要求满足以下几个条件:

1)p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
2)p≠n×h;
3)pt≠1 (mod n),1≤t<20;
4)4a3+27b2≠0 (mod p);
5)n 为素数;
6)h≤4。

refer:

https://www.cnblogs.com/smy87/p/7919208.html

https://www.cnblogs.com/smy87/p/8039038.html

猜你喜欢

转载自blog.csdn.net/liwei16611/article/details/85211494