【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、初始 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)
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,作者:简一商业,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/liwei16611/article/details/85211494
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)