1. 整体架构

整体架构分三层(如图1):

l  接口层:提供对外接口以完成SM9功能。主要分为:

n  系统接口:主要完成KGC参与的工作。

n  功能接口:主要完成KGC不参与的工作。

l  SM9功能层:提供SM9的功能模块。主要分成:

n  主**生成:KGC公私钥的生成。

n  用户**生成:生成用户私钥,用户公钥任意设定。

n  加密和解密。

n  签名和验签。

n  **协商。

l  底层模块:为完成SM9功能所需的各种模块。

n  核心模块:大整数运算、椭圆曲线运算和配对运算是其中最重要也是最核心的模块,将是本次开发的难点和重点。特别是配对模块,是SM9的特色。

n  **导出函数KDFH1H2SM3为密码辅助函数。

n  随机数生成器PRN

SM9学习笔记与图解(合集)

整体架构

A.1. 系统基本功能

A.1.1 主**生成

主**生成

数字签名

**交换

加解密/封装

主私钥

s∈[1, N−1]

s∈[1, N−1]

s∈[1, N−1]

主私钥长

L

L

L

主公钥

Ppub=[s]P2G2

Ppub=[s]P1G1

Ppub=[s]P1G1

主公钥长

4LE(Fq2)点)

2LE(Fq)点)

2LE(Fq)点)

私钥生成函数识别符

hid,一个字节

hid,一个字节

hid,一个字节

调用库

EC- E(Fq2)

EC- E(Fq)

EC- E(Fq)

 

A.1.2 用户公私钥生成

用户公私钥生成

数字签名

**交换

加解密/封装

主私钥

s∈[1, N−1]

s∈[1, N−1]

s∈[1, N−1]

主私钥长

L

L

L

用户公钥

用户标识IDA

用户标识IDA

用户标识IDA

用户公钥长

任意长度

任意长度

任意长度

用户私钥

dAG1

t1=H1(IDA||hid, N)+s mod N,

t2=s×t1-1 mod N

dA=[t2]P1

dAG2

t1=H1(IDA||hid, N)+s mod N,

t2=s×t1-1 mod N

dA=[t2]P2

dAG2

t1=H1(IDA||hid, N)+s mod N,

t2=s×t1-1 mod N

dA=[t2]P2

用户私钥长

2LE(Fq)点)

4LE(Fq2)点)

4LE(Fq2)点)

 

 

A.2 第2部分——数字签名算法

A.2.1 签名(User A)

 

SM9学习笔记与图解(合集)

A.2.2 验签(User B)


SM9学习笔记与图解(合集) 

A.2.3 原理

关键是考虑签名时w的生成和验签时w的生成。

签名时:

SM9学习笔记与图解(合集)

验签时

SM9学习笔记与图解(合集)

由上面推导知,签名和验签计算的w相等,所以由w计算出来的h相等。

A.3 第3部分——**交换协议

A.3.1 **交换(User A & User B)

SM9学习笔记与图解(合集)

 

A.3.2 原理

首先,用户A(B)私钥的生成方式为

SM9学习笔记与图解(合集)

从以上推导可知,两个用户生成的g1,g2,g3相等,所以KDF计算出来的**相等。

可选步骤中的Hash比较,原理很简单。

A.4 第4部分——**封装和加解密

A.4.1 **封装(User A)

K是用户A的生成**,C是封装信息,用于对方解封得到相同的**K。

SM9学习笔记与图解(合集)

A.4.2 **解封(User B)

SM9学习笔记与图解(合集)

A.4.3 **封装原理

SM9学习笔记与图解(合集)

从以上推导可知,双方计算出来的w相等,C是一样的,所以KDF计算值相等

A.4.4 加密(User A)

SM9学习笔记与图解(合集)

 

流加密

分组加密

klen

k1长度+k2长度

k1长度+k2长度

k1长度

M长度

对称密码算法的**长度

k2长度

未定义,测试向量中为256

未定义,测试向量中为256

C2

C2=K1M

C2=Enc(K1M)


 

A.4.5 解密(User B)

SM9学习笔记与图解(合集) 

 

流加密

分组加密

klen

k1长度+k2长度

k1长度+k2长度

k1长度

C2长度

对称密码算法的**长度

k2长度

未定义,测试向量中为256

未定义,测试向量中为256

C2

M =K1C2

M=Enc(K1C2)





A.4.6 加解密原理

同**封装原理

 


A.4.6 加解密原理

同**封装原理

 

相关文章:

  • 2022-01-19
  • 2021-05-01
  • 2021-05-14
  • 2021-09-12
  • 2021-04-08
  • 2021-05-01
猜你喜欢
  • 2022-01-11
  • 2021-10-12
  • 2021-10-31
  • 2021-11-10
  • 2021-06-12
  • 2021-04-07
相关资源
相似解决方案