SM9学习笔记与图解——第1章 整体结构
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章 整体结构相关推荐
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- Java NIO学习笔记之图解ByteBuffer
转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要 ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- MYSQL学习笔记(自用)第九章
MYSQL学习笔记(自用)第九章 第一节. 触发器 | Triggers DELIMITER $$CREATE TRIGGER payments_after_insertAFTER INSERT ON ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...
- VUEX源码学习笔记(第5~6章 共6章)
第五章 辅助函数 在第一章我们曾经说过: VUEX采用的是典型的IIFE(立即执行函数表达式)模式,当代码被加载(通过<script>或Vue.use())后,VUEX会返回一个对象,这个 ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- MYSQL学习笔记(自用)第一章
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MYSQL学习笔记 前言 学习资料下载 第一章 第一节:选择语句|The Select Statement(在单一表格中检索数据) 第 ...
- 电路学习笔记01——一到三章
电路学习笔记和总结 第一章 电路模型和电路定律 重难点一 参考方向 1 关联方向时 P = UI 结果大于零,则算得的是吸收功率 结果小于零,则算得的是发出功率 2 非关联方向时 直接当作是关联方向计 ...
最新文章
- 发送快递:配置静态路由
- mysql 5.7临时表空间_深度解析MySQL 5.7之临时表空间
- MXD文档保存和地图浏览
- 操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
- (软件工程复习核心重点)第六章实现和测试-第三节:单元测试
- python static 的用法_Python中static相关知识小结
- (02)System Verilog 程序块结束仿真
- python机器学习案例系列教程——支持向量机SVM、核函数
- 图文细谈远程桌面之3389
- intra调用order
- 模型预测控制的缺点_一个模型预测控制(MPC)的简单实现
- [English20071024]疯狂突破高中句型300句
- mysql front新建数据库_简述MySQL-Front数据库的具体操作
- python图片压缩算法_Python实现奇异值分解(SVD)压缩图片
- 根据时间段自动调节pulseaudio音量
- wav格式怎么转换成mp3
- php 将中文字符转英文字母_php中怎么将中文转换拼音
- 红外图像盲元检测matlab,红外焦平面阵列盲元类型与判别.pdf
- 统计表格中相同数据的出现个数
- python编程从入门到实践练习15-3:分子运动
热门文章
- pmp考试报名麻烦吗?
- 2017 Google 开发者大会全记录
- sscom5.13.1 串口调试工具下载
- 韵达小程序服务器异常,微信小程序快递助手服务端API接入韵达快递返回9300501错误...
- 360手机刷机包 360手机线刷包 360手机卡刷包
- python----将当前目录的所有扩展名为“html”的文件修改为扩展名为“htm”的文件。
- Vue之Vue的初体验
- AD10 PCB板的绘制步骤
- C++如何表示次方(尖号^不是次方的意思,e也不是次方的意思)
- JAVA实现100以内偶数和,奇数和,奇偶和