椭圆曲线在SM2加解密中的应用(三)

一、SM2加密运算

1.1加密原始数据

SM2加密运算首先是用户A对数据加密,用户A拥有原始数据

  • 椭圆曲线系统参数
  • 长度为klen比特的消息M
  • 公钥Pb

椭圆曲线系统参数,已经在 椭圆曲线参数(二)中详细介绍;M就是需要加密消息,长度为klen;

1.1.1 公钥Pb的计算方式

公钥Pb=dBG,其中dB是私钥,是256bit的随机数(1

1.2 SM2加密步骤

  • 选取一个随机数k,计算C1=kG,k此时为用户A的临时私钥,是为了和解密用户B进行密钥交换。(解密用户B拿到C1,会进行s=dB C1=dB k G)
  • 判断 S=hPb结果是否为无穷远点, 该步骤的意义是如果S 的结果不是无穷远点,后续步骤 kPb 就不可能是无穷远点。具体的详细证明见G点的选择
  • kPb=k dB G,密钥交换,后续的密钥派生和异或操作,就是将用户A的临时密钥k和用户B的密钥dB 对消息进行加密。
  • 最后的hash操作是防止在信息传递的过程中,数据被篡改。
  • C1 将自己的临时密钥k传递给解密用户B
  • C2 就是把自己临时密钥k的解密用户B的dB和消息一起加密起来,传递给解密用户B
  • C3 就是防止C1,C2在传递到解密用户B的过程中信息被篡改。

二、SM2解密运算

2.1解密拥有的数据

  • 椭圆曲线系统参数
  • 加密用户A传递过来的信息C1,C2,C3
  • 解密用户B的私钥dB

2.2解密步骤

  • dB C1就是密钥交换,要将C2中的消息解密出来,必须要有加密用户A的临时密钥k和机密用户B的私钥dB。
  • 密钥派生和异或操作就是将C2中的消息解密出来
  • 哈希运算就是确定在信息的传递过程中,没有人篡改数据

椭圆曲线在SM2加解密中的应用(三)_第1张图片

你可能感兴趣的:(算法,学习)