商用密码产品认证中的随机数(二)

news/2024/7/7 20:09:49

商用密码产品认证中的随机数(二)

  • 1 随机数相关规范概述
  • 2 随机数生成
    • 2.1 随机数发生概述
    • 2.2 编程语言自带的标准库
    • 2.3 操作系统提供的随机数
    • 2.4 第三方库
    • 2.5 使用符合密码行业要求的随机数发生器
    • 2.6 自行设计的随机数发生器

1 随机数相关规范概述

现行密码标准体系中包括三类随机数相关标准:框架类标准、设计类标准和检测类标准。

  1. 框架类标准为GM/T 0103《随机数发生器总体框架》
  2. 设计类标准为用于指导随机数发生器的技术设计,包括GM/T 0078《密码随机数生成模块设计指南》、《物理混沌随机数发生器设计指南》和GM/T 0105《软件随机数发生器设计指南》。
  3. 检测类标准包括随机性检测类标准和产品应用检测类标准。

随机性检测标准是对随机数进行统计检测类标准GB/T 32915《信息安全技术 二元序列随机数检测方法》。该标准由GM/T 0005《随机性检测规范》升级而来。

产品应用检测类标准是密码产品中随机数检测的标准,规定了密码应用中随机性检测指标和要求。目前已经发布的标准为GM/T 0062《密码产品随机数检测要求》。

后面的文章我们以上述标准为基础依次展开描述随机数发生器的设计和测试方式。
如果商用密码产品认证中遇到任何问题,欢迎加微信symmrz或13720098215沟通。

2 随机数生成

2.1 随机数发生概述

上一篇文章中提到了在产品设计时需要频繁使用随机数。根据产品需求和应用场景不同,获取随机数的方式也不尽相同。
A、 对于普通的商用产品,不涉及社会秩序、公共利益和国家安全的,其随机数仅满足统计学的伪随机性即可。例如,某公司开发的卡牌游戏需随机从卡包中选择一张卡牌,此时对随机数发生器无特殊要求。
B、 对于涉及社会秩序和公共利益的产品,其使用的随机数应至少为密码学安全的伪随机数。例如,某银行开发的网上银行软件系统,其保证交易安全的签名密钥应至少同时满足伪随机性和密码学安全。
C、 对于涉及威胁GJ安全的产品,随机数应由硬件随机数发生器实现的真随机数。

随机数的选择和实现方式对应关系如下表所示。“核准”代表的是需符合国家密码主管部门的认可,通常指的是通过商用密码产品认证。

产品安全等级随机数应满足要求随机数实现方式说明
被破坏后不危害国家安全、社会秩序和公共利益的产品统计学的伪随机性标准库、操作系统提供的随机数API、第三方库等方式推荐使用openssl提供的随机数接口
被破坏后严重危害社会秩序和公共利益的产品统计学的伪随机性、密码学安全“核准”的随机数发生器可以使用软件随机数发生器,但需通过商用密码产品认证
被破坏后严重危害国家安全的产品统计学的伪随机性、密码学安全、真随机数“核准”的硬件随机数发生器仅能使用通过商用密码产品认证的硬件随机数发生器

2.2 编程语言自带的标准库

通常编程语言都具备常用的随机数相关的标准库。例如C语言<stdlib.h> 头文件中定义了int rand(void)接口。Python自带的random库中也提供random.random()和random.uniform()等方法供获取随机数。

这些随机数获取方式简单易用,且具备极高的生成速度,但缺点是难以达到密码学的安全要求

2.3 操作系统提供的随机数

现代操作系统考虑到应用获取高质量随机数的需求,提供了基于运行环境的传感器作为随机熵源的随机数接口。例如,在CentOS和Ubuntu操作系统中,可以访问 /dev/random 和 /dev/urandom两个文件获取随机数。其中:
1) /dev/random 是阻塞的随机数发生器,读取有时需要等待。存储着系统当前运行环境的实时数据,如 CPU、内存、电压、物理信号等
2) /dev/urandom 是非阻塞随机数发生器,读取操作不会产生阻塞。
操作系统提供的随机数质量一般比标准库高,但同样无法证明其满足密码学的安全要求。同时,因为随机数文件是公开的,无法确保随机数的保密性。

2.4 第三方库

几乎所有接触密码产品的研发人员都绕不开OpenSSL,无论是实际应用或代码框架都值得我们深入学习。使用OpenSSL等第三方密码学支持库是实践中最推荐的生成随机数的方式。OpenSSL在rand.h文件中定义了随机数相关接口:
int RAND_bytes(unsigned char *buf,int num);
void seed(const void *buf, int num);
int status(void);
void RAND_screen();

实际应用中,OpenSSL提供的随机数已经足够满足伪随机性的要求。但遗憾的是,该方案未满足主管部门对随机数发生器的要求,即不是“核准”的。如需使用密码学安全的随机数,可以按照GM/T 0078或GM/T 0105自行设计随机数发生器,也可以使用”已核准”的随机数发生器。

2.5 使用符合密码行业要求的随机数发生器

多数情况下,已经获取商用密码产品认证证书的产品都具备随机数功能。例如:
1) 符合GM/T 0018规范的密码机提供了SDF_GenerateRandom接口供应用程序使用;
2) 符合GM/T 0016接口的智能密码钥匙提供了SKF_GenRandom接口供应用程序使用;
3) 安全芯片一般提供真随机数发生器供固件使用,固件可以直接调用芯片供应商提供的库;
4) 硬件产品设计时也可以直接使用专用的随机数安全芯片产生随机数;

需要注意的是,上述密码机、智能密码钥匙、安全芯片应已经获得商用密码产品认证证书,否则会被视为“非核准的随机数发生器”。

2.6 自行设计的随机数发生器

在部分情况下,我们可能需要自行设计随机数发生器。例如,在设计符合GM/T 0028要求的软件密码模块时,产品可能需要使用SM2算法或使用随机数参与SSL通道建立,此时需要我们设计符合GM/T 0105《软件随机数发生器设计指南》的随机数发生器。

下一篇文章开始会详细讲解软件密码模块的随机数发生器设计方式。


http://lihuaxi.xjx100.cn/news/1126332.html

相关文章

【华为OD机试python】异常的打卡记录【 2023 Q1 A卷 |100分】

华为OD机试- 题目列表 2023Q1 点这里!! 2023华为OD机试-刷题指南 点这里!! ■ 题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据, 为了正确地计算职工工资和监督工资基金使用情况, 公司决定对员工的手机打卡记录进行异常排查…

ChatGPT入门到高级【第四章】

第一章&#xff1a;Chatgpt的起源和发展 1.1 人工智能和Chatbot的概念 1.2 Chatbot的历史发展 1.3 机器学习技术在Chatbot中的应用 1.4 Chatgpt的诞生和发展 第二章&#xff1a;Chatgpt的技术原理 2.1 自然语言处理技术 2.2 深度学习技术 2.3 Transformer模型 2.4 GPT模型 第…

算法修炼之练气篇——练气十八层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

数据库分区;pgAdmin操作pgsql分区;修改pgsql数据库名字

目录 分区 什么是分区 分区的优势 pgAdmin操作pgsql分区 创建父表 创建分区 数据入库分区 扩展&#xff08;按天创建分区脚本&#xff09; 修改数据库名字 链接 分区 什么是分区 指将一个大的表或索引分成多个小的、独立的部分&#xff0c;每个部分称为一个分区&#x…

【MyBaits】SpringBoot整合MyBatis之动态SQL

目录 一、背景 二、if标签 三、trim标签 四、where标签 五、set标签 六、foreach标签 一、背景 如果我们要执行的SQL语句中不确定有哪些参数&#xff0c;此时我们如果使用传统的就必须列举所有的可能通过判断分支来解决这种问题&#xff0c;显示这是十分繁琐的。在Spring…

延迟消息解决方案总结(含源码)

目录 前言什么是延迟队列可以实现的途径关于上述几种方案的对比解决方案 前言 先讲一下我们最近的两个业务场景&#xff1a; 稿件定时签发。用户可以指定每篇稿件的签发时间&#xff0c;达到时间点将稿件签发。稿件发布超时触发失败。由于下游系统的一些不确定性&#xff0c;…

2直接连接的网络与VLAN划分-2.3【实验】【计算机网络】

2直接连接的网络与VLAN划分-2.2-2.3【实验】【计算机网络】 前言推荐2直接连接的网络与VLAN划分2.1共享式以太网和交换式以太网2.2交换机MAC地址表建立与帧转发2.3 STP工作过程实验目的实验内容及实验环境实验原理物理环路引发的问题1:广播风暴物理环路引发的问题2:MAC地址表翻…

【Redis】数据类型及应用场景

文章目录 常用数据类型1.字符串String1.1特点1.2使用场景1.2.1分布式锁1.2.2点赞功能 2.列表List2.1特点2.2使用场景2.2.1订阅消息 3.哈希Hash3.1特点3.2使用场景3.2.1购物车 4. 集合Set4.1特点4.2使用场景4.2.1共同朋友、可能认识的人、猜你喜欢 5.有序集合ZSet &#xff08;S…