心智圖資源庫 数据结构与算法学习要点
这张由EdrawMind绘制而成的思维导图,对数据结构与算法的核心内容进行了系统梳理。涵盖了线性表、栈、队列、树、图等各类基础数据结构,还介绍了查找、排序等常见算法。各部分详细阐述了基本概念、操作及应用场景,为学习者提供了全方位的学习指引。是理解与掌握数据结构与算法的理想参考工具。
編輯於2023-05-25 09:46:18智能密码钥匙
GM/T 0027 智能密码钥匙技术规范
功能要求
初始化
出厂初始化
设备出厂时对设备认证密钥进行初始化
应用初始化
对设备进行发行时对设备认证密钥进行修改,并建立相应的应用
需要设置的参数包括: 管理员口令、用户口令、应用中容器个数、应用中密钥对最大个数、应用需要支持的最大证书个数、应用可创建的最大容器个数。
密码运算功能要求
分组密码算法
必须支持SM4算法,至少支持ECB和CBC两种模式
公钥密码算法
必须支持SM2算法
密码杂凑算法
必须支持SM3杂凑算法
消息鉴别码
符合GM/T 0017
密钥管理
密钥结构
设备认证密钥
用户密钥
会话密钥
密钥管理功能
对用户密钥和会话密钥的产生、存储、使用、导入、导出、协商等功能
密钥存储
密钥空间大小
2对RSA密钥对
2对SM2密钥对
1个设备认证密钥
1个会话密钥
随机数生成
随机数由多路硬件噪声源产生
设备管理
设备认证密钥的更新,应用的删除、创建等
设备自检
固件完整性、密码算法正确性、随机数发生器、算法协商处理器、存储密钥和数据的完整性
自检内容
设备上电时自检,或为上层应用提供相应功能服务时进行自检
其他功能
应用管理、容器管理、文件管理、访问控制、密码服务
硬件要求
接口
USB、SD、Dock、Lightning、Blue-tooth、NFC、音码、WiFi、ISO 7816、ISO 14443
芯片
经过国家密码管理部门的审批
线路传输
USB接口的线路传输协议符合GM/T 0017的要求
软件要求
支持的APDU命令符合GM/T 0017的要求
性能要求
RSA算法
SM2算法
SM3算法
SM4算法
安全要求
密码算法
配置和使用符合国家密码管理部门的相关规定,算法使用有效期
密钥管理
设备认证密钥修改
设备发行时必须进行
口令和对称密钥的存储使用
口令长度不小于6字符,登录失败次数不超过10次
存储在智能密钥钥匙内部的口令不能以任何形式输出
在管理终端和智能密码钥匙之间传输的所有口令和密钥,必须加密传输,注意防重放攻击
私钥生成、存储和使用
签名私钥在智能密钥钥匙内部生成,不能导出
加密私钥,密文方式导入,不能导出
不能固话密钥对和用于生成密钥对的素数
保证私钥的唯一性
安全存储和使用,使用过程中,不能以任何形式泄露私钥
签名操作前需进行客户身份鉴别,执行签名后清除相应的身份鉴别权限
应具备密钥保护机制
防止解剖
防止探测
防止非法读取
抵抗攻击的能力
能量分析攻击
简单能量分析、差分能量分析
电磁分析攻击
简单电磁分析、差分电磁分析
时间分析攻击
错误注入攻击
抵抗外部环境变化干扰能力
高低温
高低电压
强光干扰
电磁干扰
紫外线干扰
静电干扰
电压毛刺干扰
权限控制
防止内部存储的密钥被非法使用
多应用安全
支持创建多应用,但应用之间相互独立,防止跨应用非法访问
线路传输安全
设备发行阶段,管理终端与智能密码钥匙之间的敏感数据 密文方式传输
使用阶段,客户端程序与智能密钥钥匙之间不做要求
设备软件安全防护
固件接口符合 0017,软件接口符合 0016
采用安全机制,防范被恶意攻击、篡改、替换或反向工程分析
环境适应性要求
气候环境适应性
机械环境适应性
可靠性要求
平均无故障时间
大于1000h
文件写入次数
最低写入次数不低于5万次
掉电保护
密钥生成、密码运算、文件读写、口令验证和修改过程中的掉电保护
GM/T 0048 智能密码钥匙密码检测规范
检测环境
检测仪器
检测用PC
验证设备
检测软件
检测平台软件
操作系统
检测内容
功能检测
设备管理
设置设备标签
设备的别名,可以由用户进行设定并存储于设备内部
获取设备信息
设备特征信息(设备标签、厂商信息、支持的算法等)
访问控制
设备认证
对应用程序进行认证
修改设备认证密钥
获取PIN信息
获取指定应用下的PIN信息,包括最大重试次数、当前剩余重试次数、当前PIN是否为出厂默认PIN
修改PIN
管理员PIN和用户PIN
校验PIN
解锁PIN
清除应用安全状态
应用管理
创建应用
应用名称不能相同
枚举应用
删除应用
打开应用
关闭应用
文件管理
创建文件
删除文件
枚举文件
获取文件信息
读文件
写文件
容器管理
创建容器
打开容器
关闭容器
枚举容器
删除容器
获取容器信息
导入数字证书
导出数字证书
密码服务
生成随机数
RSA
生成RSA签名密钥对、导入RSA加密密钥对、RSA签名/验签、RSA生成并导出会话密钥、RSA导出会话密钥、RSA外来公钥计算
SM2
生成SM2签名密钥对、导入SM2加密密钥对、SM2签名/验签、SM2生成并导出会话密钥、SM2导出会话密钥、SM2外来公钥加密、SM2生成密钥协商参数并输出、SM2产生协商数据并计算会话密钥、SM2计算会话密钥
导出公钥
SM2和RSA
导入加密会话密钥
SM2和RSA
加密初始化
单组数据加密
选择至少10组
多组数据加密
结束加密
解密初始化
单组数据解密
多组数据解密
结束解密
密码杂凑初始化
单组数据密码杂凑
多组数据密码杂凑
结束密码杂凑
消息鉴别码运算初始化
单组数据消息鉴别码运算
多组数据消息鉴别码运算
结束消息鉴别码运算
销毁会话密钥
随机数质量检测
采集1000个随机数样本,每个样本长度选取1000000比特
素性检测
性能检测
文件读写性能
对称算法性能
非对称算法性能
密钥对≥500对
签名或验签操作≥1000次
加密或解密操作≥1000次
杂凑算法性能
安全性检测
检测方法
GM/T 0016 智能密码钥匙应用接口规范
结构模型
层次关系
应用接口位于智能密码钥匙应用程序与设备之间
设备的应用结构
一个设备中存在设备认证密钥和多个应用,应用之间相互独立
应用有管理员PIN、用户PIN、文件和容器组成,可以存在多个文件和多个容器
容器中存放加密密钥对、签名密钥对和会话密钥
加密密钥对用于保护会话密钥
外部产生并安全导入
签名密钥对用于数字签名和验证
内部产生
会话密钥用于数据加解密和MAC运算
可以内部产生也可以外部产生并安全导入
数据类型定义
算法标识
基本数据类型
采用高位字节在前方式存储和交换
接口函数
设备管理
访问控制
应用管理
文件管理
容器管理
密码服务
设备的安全要求
设备使用阶段
出厂阶段
预置设备认证密钥,只可以进行修改设备认证密钥或创建应用
应用阶段
可进行所有操作
权限管理
权限分类
设备权限
通过设备认证后获得
用户权限
通过用户PIN码验证后获得
管理员权限
通过管理员PIN码验证后通过
只作用于其所在的应用
权限使用
设备权限
创建应用、删除应用和修改设备认证密钥
用户权限
创建、删除容器
容器内私钥的使用
用户PIN码修改
管理员权限
用户PIN码解锁
管理员PIN码修改
其他
创建应用时指定 创建文件的权限
创建文件时指定 文件的读写权限
设备认证
使用分组密码算法和设备认证密钥进行设备认证
PIN码安全要求
长度不少于6个字节
在设备和接口之间的传输过程采用保护措施,防止PIN码泄露
在设备中安全存储,不可从设备中导出
密钥安全要求
设备内产生的随机数应为真随机数
设备内产生的会话密钥应使用随机数
设备内产生的非对称密钥使用的素数应满足素性要求
设备内的密钥应具备有效的密钥保护机制防止解剖、探测和读取
密钥应按权限要求使用
除公钥外的密钥不能以明文形式出现在设备外
签名私钥必须在设备内产生
容器内的私钥不能以任何形式导出设备
删除容器时,必须销毁容器内所有的密钥
抗攻击要求
具有抗侧信道、电压、频率、紫外线等攻击的能力
GM/T 0017 智能密码钥匙应用接口数据格式规范
结构模型
应用接口数据格式位于应用程序接口与设备之间
APDU报文结构
命令报文
必备的4字节命令头(CLA INS P1 P2)
有条件的可变长度主体
接口设备发送到密码钥匙
响应报文
有条件的可变长度主体
必备的2字节状态字(SW1-SW2)
密码钥匙发送到接口设备
命令响应对中都可以包含有数据
命令头、数据字段和响应状态字的编码约定
APDU指令
设备管理指令
只有SKF_SetLabel、SKF_GetDevInfo两个函数与设备之间进行APDU指令的交互操作 SetLabel=设置设备标签 GetDevInfo=获取设备信息
设置设备标签
标签数据长度小于等于32字节,不能为空
获取设备信息
设备信息包括设备标签、厂商信息、支持的算法等
访问控制指令
完成设备认证、PIN码管理和安全状态管理等
设备认证
设备对应用程序的认证
修改设备认证密钥
获取PIN信息
包括最大重试次数、当前剩余重试次数、当前PIN码是否为出厂默认PIN码
修改PIN
修改指定应用的管理员PIN或用户PIN
校验PIN
解锁PIN
清除应用安全状态
安全状态至少包括PIN码认证状态
应用管理指令
创建应用
同一个设备上不允许存在相同名称的应用
枚举应用
枚举设备上存在的所有应用
删除应用
打开应用
应用可被多次重复打开,设备厂商自行决定是否支持多应用的并发访问
关闭应用
文件管理指令
创建文件
删除文件
枚举文件
获取文件信息
读文件
写文件
容器管理指令
创建容器
容器名称长度不能超过34字节,同一应用下不允许存在相同的容器名
打开容器
允许重复打开容器
关闭容器
关闭容器只需调用一次
枚举容器
删除容器
获取容器信息
导入数字证书
导出数字证书
密码服务指令
生成随机数
生成外部RSA密钥对
设备生成,明文输出
生成RSA签名密钥对
应用和容器中生成,输出签名公钥
导入RSA加密密钥对
在应用的容器中导入加密公私钥对
RSA签名
RSA验签
RSA生成并导出会话密钥
生成会话密钥并用外部公钥加密输出
RSA导出会话密钥
利用外部公钥加密输出设备中的会话密钥
RSA外来公钥运算
RSA外来私钥运算
生成ECC签名密钥对
应用的容器中生成,输出签名公钥
导入ECC加密密钥对
ECC签名
ECC验签
ECC生成并导出会话密钥
容器中生成会话密钥,外部公钥加密导出
ECC导出会话密钥
利用外部公钥加密导出指定容器中的会话密钥
ECC外来公钥加密
ECC外来私钥解密
ECC外来私钥签名
ECC生成密钥协商参数并输出
ECC产生协商数据并计算会话密钥
ECC计算会话密钥
ECC密钥协商算法,使用自身协商句柄和响应方的协商参数计算会话密钥,同时返回会话密钥句柄
导出公钥
导入加密会话密钥
导入明文会话密钥
加密初始化
单组数据加密
多组数据加密
结束加密
结束一次加密操作,获取剩余加密结果
待加密数据长度必须为分组长度的整数倍,设备不对分组数据进行补位填充操作
解密初始化
单组数据解密
多组数据解密
结束解密
结束一次解密操作,获取剩余解密结果
待解密数据长度必须为分组长度的整数倍,设备不对补位填充的分组数据进行去填充操作
密码杂凑初始化
单组数据密码杂凑
多组数据密码杂凑
结束密码杂凑
消息鉴别码运算初始化
消息鉴别码计算采用CBC模式的分组密码算法
加密结果的最后一块作为计算结果
待计算的数据长度必须是分组加密算法块长的倍数,接口内部不做数据填充
单组数据消息鉴别码运算
多组数据消息鉴别码运算
结束消息鉴别码运算
销毁会话密钥
设备协议
至少支持USB、HID、CCID协议中的一种
GM/T 0063 智能密码钥匙应用接口检测规范
检测环境
检测内容
应用功能
证书申请
证书下载
证书更新
证书导入
数字签名
数字信封生成
数字信封解封
接口功能
设备管理
访问管理
应用管理
文件管理
容器管理
密码服务
安全性检测
权限分类
权限使用
设备认证
PIN码安全要求
密钥安全要求
随机数安全要求
兼容性检测
系统兼容性
交错兼容性
互操作性检测
检测方法
应用功能检测
接口功能检测
安全性检测
兼容性检测
互操作性检测