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

举报
产品人卫朋 发表于 2021/10/29 23:26:26 2021/10/29
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。