LWN:RDRAND的后续进展!

如何利用CPU生成随机数 最近碰到一个问题,就是在没有函数库或者API支持的情况下怎么生成随机数。 请教了一下别人,发现对于X86处理器来说,处理器的指令集里面就有生成随机数的指令--RDRAND,该指令利用的是x86 CPU上自带的随机数生成器,对于Intel x86处理器来说,该指令从Ivy Bridge开始支持,而AMD则从2015年起也添加了对这个指令的支持,所以老一点的处理器可能没法支持这个指令。 因为没有A 阅读详情

关注了就能看到更多这么棒的文章哦~

A RDRAND followup

By Jonathan Corbet
February 26, 2024
Zhipu translation
https://lwn.net/Articles/963281/

在最近的一篇文章《Pitchforks for RDSEED》中,我们了解到关于 x86 CPU 上的基于硬件的随机数生成器是否可能失败,是存在一些不确定性的。由于在某些情况下(具体是机密计算应用)出现失败的影响可能是灾难性的,因此人们对这一前景及其应对措施感到担忧。自那时起,情况变得更加明朗,人们似乎已经达成了共识,要在内核中进行更改。

在上篇文章的最后,提到 CPU 供应商之间仍在讨论 RDRAND 和 RDSEED 指令是否可能无法生成真正的随机数。毕竟,如果没有对硬件有一个彻底的了解的话,很可能会获得错误的随机结果。2 月 14 日,Elena Reshetova 总结了英特尔在这个问题上的立场:

无故障的设备上的 RdRand 从设计上确定比总线更快,因此当 core 访问 DRNG 的输出时,它总会得到一个随机数。因此,很难想象一个完全正常工作的设备的 RdRand 会下溢(underflow)。

换句话说,=RDRAND= 总是可以预期会成功的。而更底层的 RDSEED 指令则更直接地消耗熵,正如讨论参与者已经展示的那样,在压力过大的情况下会失败。

机密计算应用的安全模型核心需要的是不受主机系统(或任何人)控制的真实随机数据。只有内置在 CPU 本身的随机数生成器才能满足这一要求;其他任何东西都可能受到外部操纵。然而,有一个普遍的共识,即来自 RDRAND 的数据即使对于机密计算也是足够好的,因此没有必要使用 RDSEED 。因此,这些应用应该在英特尔系统上是安全的—至少在随机数泄露这个方面。

内核随机数生成器的维护者 Jason Donenfeld 回应了一系列简短的 patch,做了一些更改。一个是如果尝试使用 RDRAND 失败,立即给出 warning,这是按照上述假设,任何这样的失败都指示了一个硬件问题。该补丁还删除了循环,原本的循环会尝试操作十次,因为即使一次失败也表明硬件已经损坏,重试也不太可能解决问题。然而,这个更改有一个小问题,正如 Tom Lendacky 指出的:关于 RDRAND 的鲁棒性的说法适用于当前的 CPU。较老的处理器可能会有不同的行为,也可能有 cases 需要进行重试。因此,这个补丁目前看起来已经被放弃了。

另一个改动是在机密计算支持代码,试图在启动时间用 256 位的 RDRAND 输出来对内核的随机数生成器播种。如果尝试失败的话就会让系统立即 panic。任何此类失败都将表明机密计算虚拟机缺乏一个可靠的随机数源,因此,无法实现所需的机密性。在这种情况下,最好是立即停止,而不是以可能被泄露的方式运行。

后一个 patch 已经在稍微调整后重新发布了,并获得了几位相关开发者的 Reviewed-by 标签。所以,看来这个具体的故事的结局已经不远了—直到如往常一样有一天有人发现随机数生成器中的其他问题。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

9e8753181a77d715cbeaa0bbe325e261.jpeg

易语言中使用汇编实现高效随机数生成 CPU指令集是计算机硬件架构的核心组成部分,它定义了计算机处理器所能理解和执行的一系列基本指令。这些指令包括数据处理、逻辑运算、内存管理、输入输出等操作。CPU指令集的设计对于计算机的性能、功耗、编程模型和兼容性等方面都有重要影响。在随机数生成的上下文中,CPU指令集中的特定指令能够影响到随机数生成的质量和效率。例如,RDRAND指令就是专门设计用来高效生成高质量随机数的指令。理解CPU指令集的作用和意义对于编写高效且安全的随机数生成代码至关重要。 阅读详情

相关推荐

e语言-汇编RdRand/RdSeed指令生成随机数

Intel在IVB架构的第三代CPU酷睿处理器(2012年开始生产)内置了一个利用电阻热噪声取得硬件真随机数的功能。如果打算用来作为其它伪随机数生成器的种子的时候那么就可以考虑RDSEED,不然就使用RNRAND。简单来说:RDRAND适用三代以后的Intel处理器及2015年以后的AMD处理器RDSEED适用五代以后Intel处理器及AMD Zen架构以后的处理器判断方法CPUID.01H:ECX.RDRAND[bit 30] = 1CPUID.(EAX=07H, ECX=0H):EBX.RDSEED[bit 18] = 1我重新整理并把RdSeed指令和CPU是否支持RdRand/RdSeed指令的判断程序写全了可以说比较完善,大家来进行测试新: 我对判断程序重新写了,目前可以正常判断CPU是否支持RdRand/RdSeed这两个指令了??可以测试下判断得是否正确,欢迎大家提问题???,回复时请说明CPU型号

(二)随机性与伪随机数发生器

RNG、PRNG、随机数发生器、伪随机数发生器

qq_32076957的博客 2103

汇编RdRand/RdSeed指令生成随机数-易语言

引用RDRAND is available in Ivy Bridge processorsand is part of the Intel 64 and IA-32 instruction set architectures.AMD added support for the instruction in June 2015.RDSEED is similar to RDRAND and provides higher level access to the entropy hardware.The RDSEED generator and processor instruction rdseed are available with Intel Broadwell CPUs and AMD Zen CPUs. Intel在IVB架构的第三代CPU酷睿处理器(2012年开始生产)内置了一个利用电阻热噪声取得硬件真随机数的功能。如果打算用来作为其它伪随机数生成器的种子的时候那么就可以考虑RDSEED,不然就使用RNRAND。简单来说:RDRAND适用三代以后的Intel处理器及2015年以后的AMD处理器RDSEED适用五代 以后 Intel处理器及AMD Zen架构以后的处理器 判断方法CPUID.01H:ECX.RDRAND[bit 30] = 1CPUID.(EAX=07H, ECX=0H):EBX.RDSEED[bit 18] = 1我重新整理并把RdSeed指令和CPU是否支持RdRand/RdSeed指令的判断程序写全了可以说比较完善,大家来进行测试新: 我对判断程序重新写了,目前可以正常判断CPU是否支持RdRand/RdSeed这两个指令了

ERROR: This system does not support “RDRAND“ 问题解决

DPDK程序运行报错

分享空间 2394

汇编RdRand/RdSeed指令生成随机数

Intel在IVB架构的第三代CPU酷睿处理器(2012年开始生产)内置了一个利用电阻热噪声取得硬件真随机数的功能。如果打算用来作为其它伪随机数生成器的种子的时候那么就可以考虑RDSEED,不然就使用RNRAND。简单来说:。RDRAND适用三代以后的Intel处理器及2015年以后的AMD处理器。RDSEED适用五代以后Intel处理器及AMD Zen架构以后的处理器。判断方法。CPUID.01H:ECX.RDRAND[bit 30] = 1。CPUID.(EAX=07H, ECX=0H):EBX.RDSEED[bit 18] = 1。我重新整理并把RdSeed指令和CPU是否支持RdRand/RdSeed指令的判断程序写全了。可以说比较完善,大家来进行测试。新: 我对判断程序重新写了,目前可以正常判断CPU是否支持RdRand/RdSeed这两个指令了??。可以测试下判断得是否正确,欢迎大家提问题???,回复时请说明CPU型号。@abc2330292。Tags:汇编RdRand。

YOLO26算法水面与液体识别+训练好的模型+393张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 52 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.8528** mAP50-95 | 0.3441 Precision | 0.7729 Recall | 0.8354 train/box_loss | 1.5367 train/cls_loss | 1.0228 val/box_loss | 1.6809 val/cls_loss | 1.1758 【训练过程分析】 我这次训练了52个周期,模型在训练初期确实收敛速度很快,前20个周期mAP50从0.74逐步提升至0.82,这说明模型开始适应数据集,学习到一些关键特征。但到第30个周期后,提升速度逐渐放缓,到了40个周期时,mAP50达到0.85,这个阶段的曲线走势有些像磨砂玻璃,平滑且不规则,后期更是趋于平缓,表明模型可能已经达到最优解,再继续训练可能会有少量提升但代价较大。整体而言,从loss曲线来看,训练集的box_loss和cls_loss在52个周期内分别从1.80和1.25降到1.54和1.02,下降曲线较为稳定,但到了后期,这两项指标下降幅度逐渐减缓,尤其cls_loss下降至1.10左右后趋于稳定,这可能是模型对训练数据已有了较强的泛化能力,但也提示我们分类的稳定性可能还欠些火候。 至于验证集的表现,box_lo... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

史上最全C/C++ 真随机数生成方法详述

如果现有的方法无法满足特定需求,可以考虑自定义真随机数生成器。例如,可以利用环境噪声、摄像头和麦克风等物理过程生成随机数。

极客代码 5317

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

LWN:RDSEED 引入的危机!

关注了就能看到更多这么棒的文章哦~Pitchforks for RDSEEDBy Jonathan CorbetFebruary 8, 2024Gemini translationhttps://lwn.net/Articles/961121/随机数(或者说是不可预测的数字序列)的生成是很多安全技术的关键。因此,这些年来,CPU 要能够提供随机数据这一个特性,引起了很多关注。一个合适的基于硬件的随...

Linux News搬运工 636

3D Slicer中文教程(三)—数据加载及保存方式

1.打开数据与保存数据 (1)打开数据 ——可以将数据拖拽到3D Slicer应用窗口或者从菜单栏工具栏打开。 ——多种方式加载大量数据。 有关DICOM数据,请参阅DICOM模块文档。 对于几乎所有其他(包括场景),您可以使用添加数据对话框。 有关支持的数据格式的列表,请参阅此列表。 请注意,仅部分支持列出的某些格式。 ——对于一些更复杂的格式(特别是DWI),建议首先使用DICOM到n...

weixin_33676492的博客 5534

数字摄影与摄像中的图像信号处理器(ISP):流程与经典算法详解

图像信号处理器(Image Signal Processor, ISP)是现代数字成像系统(如智能手机、数码相机、网络摄像头等)中的核心组件,扮演着将图像传感器(如CMOS或CCD)捕获的原始光电信号转换为高质量、可供观看或进一步处理的数字图像的关键角色。在数字摄影和摄像的整个链路中,光线首先通过镜头(Lens)聚焦到图像传感器上,传感器将光信号转换为模拟电信号,随后经过模数转换(A/D转换)变为原始的数字图像信号。

qq_44682523的博客 3722

LWN: 修复getrandom()

点击上方蓝色“Linux News搬运工”关注我们~Fixing getrandom()ByJake Edge内核5.3版本里面有人报出一个启动过程中死机问题,最终演化...

Linux News搬运工 2631

智能制造 | 如何快速自动生成站位表及自动与BOM校验?

一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理

vayoinfo111的博客 4942

海光服务器因CPU模式不一致导致虚拟化场景下无法热迁移虚拟机问题

本文主要介绍因服务器CPU模式不一致导致虚拟化场景下无法热迁移虚拟机问题的原因及解决方法

qq_27815483的博客 2105

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

工业异常检测评价指标(I-AUROC、PRO等)

模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等

qq_1532145264的博客 7431

C/C++中产生随机数

C/C++中产生随机数 可以使用srand()函数和rand()函数来产生随机数,其中srand()用来初始化随机数种子,rand()用来产生随机数。因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不...

dichuangheng8094的博客 898

【GD32F407】i2c主机发送,从机中断接收

前言 现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送,中断接收,这就需要支持i2c主机模式和从机模式,先查看原理图 这里我们用到了两条i2c总线进行数据的交替传输,避免在使用一条总线是发送数据和接收数据冲突 初始化i2c控制器 s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus) { //PCLK = 36000000 BOOL retFlg = FALSE; int I2xSCL = pTI2cBus->byFastMode ?

Enosji的博客 6245

llvm生成rdrand指令

问题在做一个project的时候需要使用llvm的pass对函数进行插桩,在每一个函数头之前插入一条指令 rdrand %rax,在寻找llvm基本指令之后发现并没有生成随机数的指令,这时就想到了llvm中intrinsic函数中是否有关于rdrand指令的函数,在对llvm整个源码进行扫描之后,发现有x86的rdrand的intrinsic函数: X86_INTRINSIC_DATA(rdra

pang241的专栏 1796

renderdoc的使用

renderdoc可以用来捕获帧渲染情况,排查一些GPU渲染、资源规格等问题。 下面讲述一些该软件连接真机调试使用。 一、下载安装renderdoc 软件的下载地址:https://renderdoc.org/可直接点击下载即可。该软件是开源免费的,不用破解。 下载后直接安装即可使用。 二、打开使用renderdoc 打开界面后,默认的界面布局如下图所示,(这里我已经设置了黑色主题,可以忽略这点),renderdo中主要的窗口有Texture Viewer(纹理查看器)、Event B.

x_xingduo_2315的博客 2万+

python实现带符号的二进制数转换十进制数 (附完整源码)

python实现带符号的二进制数转换十进制数 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 554

Intel 第三代CPU酷睿处理器内置硬件随机数的获取方法

Intel在IVB架构的第三代CPU酷睿处理器(2012年开始生产)内置了一个利用电阻热噪声取得硬件真随机数的功能。 关于真随机数和伪随机数的区别,以及世上是否存在真随机数等哲学争论不在本文讨论范围。 下面给出delphi代码,一共4个函数,具体使用的是两个函数: RdRand_isSupported 判断当前cpu是否支持该功能, rdrand_16 取得16位随机数到aex寄存器,(看...

ufo2006的专栏 6716

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

openssl:获取openssl版本号

openssl获取版本号 openssl 1.1.0 获取版本号 openssl 废弃 SSLeay_version

test1280 9398

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (20) - IvyBridge微架构

Intel® Ivy Bridge Microarchitecture 第三代Intel Core处理器是基于Ivy Bridge微架构的。上述的Sandy Bridge微架构的特性也都适用于Ivy Bridge微架构。本节概述与Sandy Bridge不同的特性,可能会影响到程序的编码与性能。 Ivy Bridge微架构支持的新指令包括: 半精度浮点值与其他类型的相互转换指令 基于硬件的...

一凡stkeke 2201

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: LWN:像对代码一样处理文档!
下一篇: LWN:Forgejo跟Gitea分手了!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值