1. 整体架构

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

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

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

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

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

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

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

n  加密和解密。

n  签名和验签。

n  密钥协商。

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

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

n  密钥导出函数KDF、H1、H2、SM3为密码辅助函数。

n  随机数生成器PRN。

图1 整体架构

A.1. 系统基本功能

A.1.1 主密钥生成

主密钥生成

数字签名

密钥交换

加解密/封装

主私钥

s∈[1, N−1]

s∈[1, N−1]

s∈[1, N−1]

主私钥长

L

L

L

主公钥

Ppub=[s]P2∈G2

Ppub=[s]P1∈G1

Ppub=[s]P1∈G1

主公钥长

4L(E(Fq2)点)

2L(E(Fq)点)

2L(E(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

用户公钥长

任意长度

任意长度

任意长度

用户私钥

dA∈G1,

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

t2=s×t1-1 mod N

dA=[t2]P1

dA∈G2,

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

t2=s×t1-1 mod N

dA=[t2]P2

dA∈G2,

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

t2=s×t1-1 mod N

dA=[t2]P2

用户私钥长

2L(E(Fq)点)

4L(E(Fq2)点)

4L(E(Fq2)点)

 

SM9学习笔记与图解——第1章 整体结构相关推荐

  1. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  2. Java NIO学习笔记之图解ByteBuffer

    转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要 ...

  3. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  4. MYSQL学习笔记(自用)第九章

    MYSQL学习笔记(自用)第九章 第一节. 触发器 | Triggers DELIMITER $$CREATE TRIGGER payments_after_insertAFTER INSERT ON ...

  5. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...

  6. VUEX源码学习笔记(第5~6章 共6章)

    第五章 辅助函数 在第一章我们曾经说过: VUEX采用的是典型的IIFE(立即执行函数表达式)模式,当代码被加载(通过<script>或Vue.use())后,VUEX会返回一个对象,这个 ...

  7. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  8. MYSQL学习笔记(自用)第一章

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MYSQL学习笔记 前言 学习资料下载 第一章 第一节:选择语句|The Select Statement(在单一表格中检索数据) 第 ...

  9. 电路学习笔记01——一到三章

    电路学习笔记和总结 第一章 电路模型和电路定律 重难点一 参考方向 1 关联方向时 P = UI 结果大于零,则算得的是吸收功率 结果小于零,则算得的是发出功率 2 非关联方向时 直接当作是关联方向计 ...

最新文章

  1. 发送快递:配置静态路由
  2. mysql 5.7临时表空间_深度解析MySQL 5.7之临时表空间
  3. MXD文档保存和地图浏览
  4. 操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
  5. (软件工程复习核心重点)第六章实现和测试-第三节:单元测试
  6. python static 的用法_Python中static相关知识小结
  7. (02)System Verilog 程序块结束仿真
  8. python机器学习案例系列教程——支持向量机SVM、核函数
  9. 图文细谈远程桌面之3389
  10. intra调用order
  11. 模型预测控制的缺点_一个模型预测控制(MPC)的简单实现
  12. [English20071024]疯狂突破高中句型300句
  13. mysql front新建数据库_简述MySQL-Front数据库的具体操作
  14. python图片压缩算法_Python实现奇异值分解(SVD)压缩图片
  15. 根据时间段自动调节pulseaudio音量
  16. wav格式怎么转换成mp3
  17. php 将中文字符转英文字母_php中怎么将中文转换拼音
  18. 红外图像盲元检测matlab,红外焦平面阵列盲元类型与判别.pdf
  19. 统计表格中相同数据的出现个数
  20. python编程从入门到实践练习15-3:分子运动

热门文章

  1. pmp考试报名麻烦吗?
  2. 2017 Google 开发者大会全记录
  3. sscom5.13.1 串口调试工具下载
  4. 韵达小程序服务器异常,微信小程序快递助手服务端API接入韵达快递返回9300501错误...
  5. 360手机刷机包 360手机线刷包 360手机卡刷包
  6. python----将当前目录的所有扩展名为“html”的文件修改为扩展名为“htm”的文件。
  7. Vue之Vue的初体验
  8. AD10 PCB板的绘制步骤
  9. C++如何表示次方(尖号^不是次方的意思,e也不是次方的意思)
  10. JAVA实现100以内偶数和,奇数和,奇偶和