随机数发生器设计(一)

news2024/11/25 2:29:55

1 随机数发生器设计概述

密码行业的随机数发生器总体框架标准为GM/T 0103。随机数发生器可以分为硬件随机数发生器和软件随机数发生器。

硬件随机数发生器一般以组成部件的形式集成在安全芯片的内部,或者随机数发生器本身就是安全芯片。考虑到随机数发生器是密码产品必不可少的组成,一般的安全芯片都具备硬件随机数发生器。具备商用密码认证证书的安全芯片所使用随机数发生器都被认为是“核准”的随机数发生器。国内可供使用安全芯片产品众多,从物联网、IC卡、终端到密码卡均有覆盖,可以在这里查询信息:精准查询。
相比硬件随机数发生器,软件随机数发生器具备成本低、便携型好的优势,适应当前移动互联网的应用场景。但考虑到软件的运行环境复杂,熵源信息易受控,软件随机数发生器的设计应更全面考虑自身安全性。

无论是硬件或软件随机数发生器,均应考虑如下方面:
1) 熵评估。在随机数发生器的设计阶段,应“通过理论建模分析、统计检测等方法对随机源序列进行预测评估,得到熵估值”。熵估计不是随机数发生器的组件部件,但却是设计阶段必需步骤。熵估计可以参考NIST.SP.800-90B第6部分。
2) 随机数发生器的实现。随机数发生器的熵源可以是物理熵源,也可以是系统熵源,熵源输出经熵源健康测试后进行后处理。处理完成后输出随机数数据。硬件和软件随机数发生器的实现分别参考本文第2和第3部分。
3) 外界使用随机数发生器时需对输出的随机数进行使用自测试。自测试应符合GM/T 0062.
随机数发生器设计框架

2 硬件随机数发生器

硬件随机数发生器的设计参考GM/T 0078《密码随机数生成模块设计指南》。本文不再对该标准进行重复。
硬件随机数组成

物理随机源电路即为物理熵源,设计原理包括混动动力系统原理、相位抖动原理和热噪声直接放大原理。
物理随机源失效检测即为熵源健康测试。需要注意的是,除了健康测试,物理随机源电路输出的随机数应满足GM/T 0005的单比特频数检测、扑克检测、游程总数检测,测试数据长度为2*10^4,检测显著性水平为α=0.0001。

3 软件随机数发生器

软件随机数发生器的设计参考GM/T 0105《软件随机数发生器设计指南》。
软件随机数发生器的熵源一般为系统熵源,也可以引入物理熵源。引入物理熵源时需注意物理熵源数据的安全传输。
下图是一个典型的软件随机数发生器。来自系统熵源的输入数据经健康测试(包括上电健康测试和连续健康测试)后存入熵池,再经扩展后进入后处理阶段。后处理阶段的输出函数根据内部状态计算最终输出的随机序列,初始化函数和重播种函数则根据输入的熵数据更新内部状态。
软件随机数发生器组成

与硬件随机数发生器一样,软件随机数发生器也对外提供2个输出接口:
1)状态输出接口:当内部自测试未通过,通过状态输出接口提示外界自身错误状态。
2)随机数据输出接口:为外界提供可用的随机数据。需要注意的是,这些随机数也应按照GM/T 0062进行自测试后才能使用。

考虑到当前商用密码产品由硬件向软件应用转型,越来越多的软件产品面临软件随机数发生器的设计问题,后面的文章会详细介绍上述软件随机数发生器的各部分设计方式和源码。

如果商用密码产品认证中遇到问题,欢迎加微信symmrz或13720098215沟通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/552512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT 能自己跑代码了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! time leap, sci-fi, photorealistic, --niji 5 --ar 3:2 --s 1000 自 ChatGPT 发布以来,各行各业对其能力探索的举措一直没有停止。 很多大厂纷纷跟进,竞相推出自研…

Springboot +spring security,登录用户数据获取

一.简介 前面章节学习了登录表单的配置并且对源码进行了简单的分析,现在有个问题了,既然用户登录了,那么如何在接口中获取用户信息呢。这篇文章就来看下这个问题,代码中获取登录用户信息。 二.创建项目 如何创建一个SpringSecu…

笔记:BLIP源码之(1)数据集预处理【仅考虑Image-Text Retrieval on COCO】

BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generat 论文的两个贡献如下: 从模型的角度:提出了 Encoder-Decoder (MED) 的多模态混合 An MED can operate either as a unimodal encode…

Js常识三

文章目录 作用域GCclosure变量和函数提升函数参数 作用域 GC Js Gc 算法 引用计数(已淘汰)标记清除 closure 一句话:内层函数 外层函数的变量 闭包作用:私有化数据,or 私有化状态 变量和函数提升 Js 祖传var变…

C语言结构体初级

目录 一、为什么要用结构体 二、使用结构体的具体形式 1.结构体类型的声明(main函数外部) 2.结构体变量的定义(在main函数内或者外) 3.结构体变量的初始化 4.结构体成员的访问 5.结构体的传参 跑了这么久,再坚…

分布式软件架构——单体架构

序言 当一项大工程需要大量人员共同开发,并保证它们分布在网络中的大量服务器节点能够同时运行,那么随着项目规模的增大、运行时间变长,它必然会受到墨菲定律的无情打击。 Murphy’s Law:Anything that can go wrong will go wro…

Qt文件系统源码分析—第四篇QLockFile

深度 本文主要分析Windows平台,Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次,再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice Q…

法规标准-ISO 17361标准解读

ISO 17361是做什么的? ISO 17361全称为智能交通系统-车道偏离警告系统性能要求和测试程序,其中主要描述了LDWS系统的功能要求及测试要求 系统功能 车道偏离警告系统的功能元件应符合图中的要求,抑制请求、车速检测、驾驶员偏好和其他附加功…

[CTF/网络安全] 攻防世界 simple_js 解题详析

[CTF/网络安全] 攻防世界 simple_js 解题详析 代码分析代码漏洞姿势String[fromCharCode]总结 题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} ) 页面源代码: 代码分析 function dechiffre(pass_enc){…

StarRocks 集群模式搭建

一、StarRocks 集群模型搭建 上篇文章对 StarRocks 进行了简单的介绍及使用 Docker 进行了快速体验,本篇文章进行StarRocks 集群模型的搭建,下面是上篇文章的地址: StarRocks 极速全场景 MPP 数据库介绍及使用 部署规划 host主机名角色192.…

求解包含约束的最优化问题:拉格朗日乘子法和KKT条件

文章目录 无约束等式约束不等式约束KKT条件 无约束 之前梯度类算法中介绍的最速下降法、牛顿法和拟牛顿法,可以直接使用的条件之一为:决策变量都是无约束的。 用数学语言描述的话,可以表达为:决策变量为 x ( x 1 , x 2 , ⋅ ⋅…

LeetCode104. 二叉树的最大深度(递归非递归)

写在前面: 题目链接:LeetCode104.二叉树的最大深度 编程语言:C 题目难度:简单 一、题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子…

You Only Look Once:Unified,Real-Time Object Detection总结笔记

一、论文思想 1.将一个图像分成S*S个网格(grid cell),如果某个object的中心落在这个网格中,则这个网络就负责预测这个object。 2.每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要…

微服务技术(SpringCloud、Docker、RabbitMQ)

目录 一、微服务技术简介 二、服务拆分及远程调用 1.Eureka注册中心 2.Nacos注册中心 3.Nacos配置管理 4.http客户端Feign 三、统一网关Gateway 四、Docker 五、异步通信技术 六、ElasticSearch 一、微服务技术简介 微服务是分布式架构(分布式&#xff…

Lesson14---卷积神经网络

14.1 深度学习基础 14.1.1 深度学习的基本思想 特征工程:尽可能选择和构建出好的特征,使得机器学习算法能够达到最佳性能。是机器学习的上限,而算法就是逼近这个上限传统的机器学习特证工程 依靠人工方式提取和设计特征需要大量的专业知识…

低代码系统前端实践之vue-element-admin运行demo

文章目录 1、简介2、实践功能3、实践过程3.0 下载运行demo3.1.1 解决执行npm install或出现以下报错(删掉组件tui-editor相关即可)3.1.2 解决执行npm run dev或出现no module body-parser(安装body-parser即可)3.1.3 解决执行npm run dev或出现error:0308010C:digital envelope…

RK3568平台开发系列讲解(驱动基础篇)RK平台I2C的使用

🚀返回专栏总目录 文章目录 一、I2C 使用情况二、定义和注册 I2C 设备三、定义和注册 I2C 驱动3.1 I2C 驱动定义3.2 I2C 驱动注册3.3 通过 I2C 收发数据沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK I2C 的使用进行学习。 配置 I2C 可分为两大步骤: 定…

【Linux C】GCC编译 GDB调试 从入门到放弃 (gcc调试选项详解、gdb调试、条件断点、远程调试、脚本化调试)

阅读本文可能需要一些基础,比如:C语言基础、Linux基础操作、vim、防火墙等。篇幅有限,本文讲的“比较浅显”。 通过本文你将学会: gcc编译gdb调试 少年你渴望力量吗👇👇👇 一、使用GCC编译C程序…

Antd 下拉面板的位置计算错误

项目场景: 公司使用无界微前端集成ERP项目应用(可惜没跟着走一边无界,难受),某些子应用使用时,发现antd的弹窗弹出的位置不对。如下图: 问题描述 无界微前端嵌入的子应用中的antd的下拉框位置…

【谷粒商城笔记】基于docker的mysql、redis环境配置

0.系统 宝塔 v7.5.1 Centos v8.2 1. 安装Docker 直接yum install docker会提示找不到 > docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine Loaded plugins: fastestmirror No Match for argument: …