LWN: 如何更好地支持在内存中存放秘密信息?

ARMV8架构之memory管理与模型(一) 一个典型系统的memory map会被分隔成不同的逻辑区域,每个区域都要求有不同的memory属性,比如说: Access Permission属性定义的在User/Privileged模式下的读写权限. Caching属性定义了该memory空间是否会有副本存在于cache中. Buffering属性定义了访问该memory空间的操作是否能支持提前返回写response.等等. 如图1所示,操... 阅读详情

点击上方蓝色“Linux News搬运工”关注我们~

Keeping memory contents secret

By Jonathan Corbet
November 15, 2019

原文来自:https://lwn.net/Articles/804658/

操作系统的众多职责之一,就是帮助确保进程之间的信息要隔离好,不要泄漏。不过很多时候操作系统在这方面做的并不好,原因有很多,例如硬件bug,或者user-space的漏洞等,这些都超出了操作系统的直接控制了。因此,不出意料,越来越多的人在想办法能改善数据安全性,甚至连操作系统本身都不希望它知道。Mike Rapoport提出的MAP_EXCLUSIVE patch set就是一个例子,不过也揭示了一个事实:开发社区其实还没有想清楚应该如何使用这类功能。

MAP_EXCLUSIVE是mmap()系统调用的一个新增flag,目的是要求对这块memory区域映射出来后只允许调用者进程访问,绝不允许其他任何人访问,kernel也不行。这个patch是目前对内存管理子系统进行的地址空间隔离工作的一部分,因为攻击者很难访问到那些未映射过的memory。

使用MAP_EXCLUSIVE来映射一块内存区域的话,会有多方面的影响。首先它隐含了MAP_LOCKED和MAP_POPULATE这两个flag,意味着这块memory会马上触发page fault来映射到RAM并且lock(锁定)住——也就是说绝对不会进入交换区域(swap area)。并且还需要有MAP_PRIVATE和MAP_ANONYMOUSE flag,而不允许使用MAP_HUGETLB。如此映射过的page页面在进程fork的时候不会被复制。并且这块区域会从kernel的direct mapping(指对全部物理内存进行的线性映射)中拿掉,使得大多数情况下kernel也无法访问到这块内存。

社区里面都比较赞同新增MAP_EXCLUSIVE的这个目标,不过等这部分代码真正实现出来了,却引起了很多关于这个功能如何工作的疑问。有些人担心从kernel direct mapping中去除这些page会有问题。kerne对这类mapping都是使用huge page(巨页)方式,因为这样映射毕竟能降低TLB的压力,对性能有好处。如果要把这部分区域从direct mappping中拿掉的话,就需要把huge page分割成normal page,从而导致系统里面所有进程的性能都会下降。Alexei Starovoitov在10月份的时候分享过Facebook的一个按理,当时因为另一个原因把direct mapping改成normal page,就导致了2%的性能损失。

Elena Reshetova提出,她之前曾经开发过一个类似的功能,当时没有修改mmap,而是新增了一个madvise() flag,并且要求这块需要保密的内存区域要是page size的整数倍。她实现的代码里面,每当把这块保密内存区域还给系统的时候还会把这些数据全部覆盖掉,以备调用者进程本身没有做这个操作。

Reshetova还建议要把这块memory映射成uncached形式。好处是可以避免近年来泛滥的speculative-execution attach(执行预测攻击),无论是已知的攻击方式还是一些未公开的攻击方式。此外,它带来的对application的性能影响确实有不少(painful),不过还不至于达到完全影响功能(crippling)的程度,这取决于对这块memory的访问频率了。有些用户需要这个更多保护,而很多其他用户却不愿意为了这个功能而损失性能。Andy Lutomirski认为只有在application明确要求uncached memory的时候才配成uncached,不过Alan Cox则指出用户通常其实并不知道是否该用uncached memory。

Cox还指出,系统为了保护这些保密数据内存区域,会采用很多手段,并且不同的系统上采取的措施都可能不一样,用户完全不了解他的系统上会采用什么方式,因此,我们更加需要把MAP_EXCLUSIVE flag的效果定义得更加明确一些:“在我看来,这里真正的问题是我们需要一个明确的语义定义。你们到底是要什么?是愿意付出任何代价吗?需要100%保证可靠还是统计意义上可靠就好?保证到什么程度可以接受?什么情况下应该返回-EOPNOTSUPP之类的返回值?”

James Bottomley在此基础上也发挥了一下,他认为MAP_EXCLUSIVE有一个“可用性问题”。在某些系统上,要想保护保密数据,会需要利用一些硬件技术,例如TME和SEV。不过开发者通常不清楚这里有区别。Bottomley建议,kernel应该想些方法来选择最合适的硬件机制从而更好的保护保密内存。比如可以只在那些没有堵上speculative-execution漏洞的系统上把这块memory映射为uncached。Lutomirski担心这种方法没法实现,毕竟这里有太多变数了,很难保证不出错。

这一轮讨论只有一个真正达成的结论:确实有需求来让某块内存有更高的保密性,不过开发社区还不清楚究竟应该如何实现,以及怎样让用户来使用。这也意味着这个功能不会很快出现在mainline kernel里。如果设计得不好的话,可能会使社区又要背负一个有设计缺陷的接口,也有可能导致应用程序开发者没能得到应有的安全保护。我们应该慢慢来,确保做最正确的事情。

全文完

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

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议修改再创作~

长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~

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... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

AI大模型医学影像诊断智能识别应用方案.pptx

AI大模型医学影像诊断智能识别应用方案.pptx

深入理解计算机基础——virtual memory

页表 页表:记录虚拟地址到物理地址的映射 unallocated:未分配的 cached:缓存在内存中的(有效位=1) uncached:未缓存在内存中的 page hit:查找的页存在于cache中 page fault:查找的页不在cache中 内存保护 通过permission bits进行保护 虚拟地址翻译 1.CPU向MMU请求虚拟地址对应的物理地址 2.MMU查找cache中有没有对应的page table entry 3.如果page hit,则返回对应的page table en

I_ren的博客 629

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

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

Linux内存管理(3):内存探测与初始化

1、内存探测     linux在被bootloader加载到内存后, cpu最初执行的内核代码是arch/x86/boot/header.S汇编文件中的_start例程,设置好头部header,其中包括大量的bootloader参数。接着是其中的start_of_setup例程,这个例程在做了一些准备工作后会通过call main跳转到arch/x86/boot/main.c:main()函数

Jack Zhou的专栏 5828

概率神经网络的分类预测-基于PNN的变压器故障诊断(Matlab代码实现)

内容概要:本文系统阐述了基于概率神经网络(PNN)的变压器故障诊断方法,结合Matlab代码实现分类预测。通过提取变压器运行过程中的关键特征参数,构建PNN模型以实现对正常状态与典型故障状态(如绕组短路、铁芯故障等)的高效分类识别。文章深入剖析了PNN的网络结构、概率密度估计原理、训练机制及分类决策过程,并通过仿真实验验证了该方法在故障诊断任务中具备较高的准确率与鲁棒性,展现了其在电力系统状态监测与智能运维中的良好应用前景。; 适合人群:具备一定机器学习理论基础和Matlab编程能力的电气工程、自动化、智能电网等相关领域的研究生、科研人员以及从事电力设备状态监测与故障诊断工作的工程技术人员。; 使用场景及目标:①实现变压器早期故障的智能化诊断与预警,提升电力系统运行安全性;②为基于神经网络的工业设备故障分类任务提供可复现的算法实现范例与技术验证平台; 阅读建议:建议读者结合文中提供的Matlab代码,动手复现实验流程,深入理解PNN在实际分类问题中的参数配置、训练策略、性能评估方法,并鼓励将该方法迁移至其他电力设备或机电系统的故障诊断场景中进行拓展研究与优化改进。

优快云首页 发布文章 优快云同步助手 多无人机面向城市空中交通的多无人机路径规划研究(Matlab代码实现) 37 100 摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,系统阐述了该领域的核心挑战与关键技术。文章首先定义了多无人机路径规划的问题,明确了包括飞行安全、避障、协同效率在内的多项约束条件与性能指标。随后,重点介绍了三大类路径规划方法:基于改进RRT算法和图论的全局路径规划方法,用于构建初始可行路径;基于动态风险场的模型预测控制和动态窗口法(DWA)的动态避障方法,以应对环境中的突发障碍;以及多无人机协同规划策略和分布式协同控制算法构成的局部协同调整方法,确保多机间的飞行安全与任务协同。研究通过搭建Matlab仿真实验平台,设计了多种复杂城市飞行场景,对所提方法进行了全面的仿真验证与结果对比分析,展示了各方法在不同场景下的有效性与优劣。; 适合人群:具备一定自动化、计算机或航空航天领域基础知识,从事无人机、智能交通、路径规划等相关方向研究的研发人员和研究生。; 使用场景及目标:①为城市空中交通管理系统(UATM)的设计与开发提供理论基础和技术参考;②应用于物流配送、城市巡检、应急救援等多无人机协同任务的路径规划算法设计与仿真验证;③作为相关领域科研工作的技术参考资料,推动多智能体协同决策与控制技术的发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,通过复现仿真结果加深对各类算法原理与实现细节的理解。在学习过程中,应重点关注全局规划与局部避障的结合机制,以及多机协同策略中的冲突消解逻辑。

VideoMemory, SystemMemory And AGPMemory

原帖在下文,笔记:DxFlag:像D3DUSAGE_DYNAMIC, D3DPOOL_DEFAULT, D3DPOOL_MANAGED, D3DPOOL_SYSTEMMEM这些都是给driver一些提示说我们想这样用这些资源(静态的,动态的。。。),到底这些资源会被如何管理还是driver来说了算。一些倾向是:D3DPOOL_DEFAULT:会根据usage来放置资源AGP memory是bios来决定分配的,这里有一个查看器,http://developer.nvidia.com/object/agp_m

安柏霖的专栏 3106

Unity 接入HybridCLR的点点滴滴,亲测三平台(PC、Android、WebGL)妥妥的。-问题分享

一入热更深似海啊,没有热更是真恼火啊,干啥啥不方便,动不动就得重新发包;说实在的,也是工作之余研究这个,在原有框架基础上接入这个热更,既要保持原有功能,还要支持热更,实实在在、断断续续搞了这么久,终于是接入并测通了,这一路是坎坎坷坷,下面把走过的弯弯绕绕记录下,希望对后来想接入的小伙伴有帮助吧。

GarFe的博客 1万+

关于 Cached Physical Memory 和 Uncached Physical Memory

摘至:http://techpubs.sgi.com/library/dynaweb_docs/0640/SGI_Developer/books/DevDrvrO2_PG/sgi_html/ch01.html Cached Physical Memory—kseg0 When address bits 31:29 contain 100, access is directed to phy

闲云孤鹤 2740

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘

小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。

engchina的专栏 1万+

分布式推理服务(策略:数据并行、张量并行、流水线并行、专家并行)技术分析

摘要:分布式推理突破单GPU内存和算力限制,支持大模型部署。四种核心策略包括: 数据并行:复制模型拆分数据,提升吞吐但内存效率低; 流水线并行:模型分阶段执行,支持超大模型但存在计算气泡; 张量并行:拆分层内矩阵运算,延迟低但通信开销大; 专家并行:动态激活MoE模型专家,计算高效但路由复杂。实际应用中常组合策略(如3D并行),需权衡模型规模、硬件条件与性能目标。

技术引领业务创新 940

cached地址和uncached地址的区别

     cached地址和uncached地址的区别是,对cached地址的访问是委托给CPU进行的,也就是说你的操作到底是提交给真正的外设或内存,还是转到CPU缓存,是由CPU决定的。CPU有一套缓存策略来决定什么时候从缓存中读取数据,什么时候同步缓存。对unchached地址的访问是告诉CPU忽略缓存,访问操作直接反映到外设或内存上。 对于IO设备一定要用uncached地址访问,是因为你的

lovelfy的专栏 1105

《UE4游戏开发》之 《查cook资源失败,问题记录》

当项目打包时,cook出错,但是从原始引擎提供的信息中,没有提示具体的那个资源出错,要查到出错资源,还是非常麻烦。 下面就材质cook出错,增加一些日志,方便查找问题做简单记录 材质cook的一个阶段,是收集MaterialShaderMap,如果在这个阶段收集的信息出错,将会在FShaderMapContent::GetOutdatedTypes函数中,因为Shaders指针指向的内存有问题而出错,通过断点发现,FShaderMapContent这个类对象指针为null,而这个类对象的来源于AllMat.

qq_21919621的博客 2580

noncached memory

allocnone-cached memory in uboot. 1. API arch\arm\include\asm\system.h void noncached_init(void); phys_addr_t noncached_alloc(size_t size, size_t align); 2. implementation arch/arm/lib/cache.c #ifdef CONFIG_SYS_NONCACHED_MEMORY /* * R...

ARM-Linux 856

基于深度学习的火焰检测系统:YOLOv8 + UI界面 + 数据集详解

YOLO(You Only Look Once)是一种端到端的目标检测算法,其最大优势在于将目标检测任务转化为一个回归问题,可以在一次前向传播中同时完成目标定位和分类。YOLOv8是YOLO系列中的最新版本,相比之前的版本,YOLOv8在精度和推理速度上都做了显著提升,特别是在小物体检测方面表现更加优秀。实时性:YOLOv8具有较高的推理速度,适用于实时火焰检测。高精度:相较于YOLOv7,YOLOv8在精度和小物体检测上有所改进。简单易用:YOLOv8的API简单直观,易于集成和使用。

YOLO 660

【AI大模型应用开发】【LlamaIndex教程】2. 存储模块:如何在 LlamaIndex 中使用自定义的向量数据库?(附代码)

前面文章两行代码就实现了文档的切分和向量化存储以及持久化存储。如果我们想用自定义的向量化数据库呢?

同学小张的博客 2116

LWN:近期在讨论的一些内存管理相关patch!

关注了就能看到更多这么棒的文章哦~Some upcoming memory-management patchesBy Jonathan CorbetNovember 12, 2021Dee...

Linux News搬运工 404

Vue3 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)完美兼容

vue3,nuxt3,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,office,文档,文件,查看预览,弹框预览,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,vue在线预览

🏆 前端领域优质创作者 1万+

memory 子系统

内核对一致和非一致内存访问使用相同的数据结构。首先,内存划分为结点:每个结点关联到系统中的一个处理器,在内核中用pg_data_t 表示。各个结点又划分为内存域,一个结点最多由3个内存域组成,用3个常量来表示:ZONE_DMA、ZONE_NORMAL、ZONE_HIGHMEM,此外内核还定义了一个伪内存域 ZONE_MOVABLE 用于防止物理内存碎片,ZONE_NR_ZONES 为结束标记。

嵌入式技术博客 3144

大疆 2021 嵌入式笔试题

在深圳做嵌入式,大疆公司绝对是 Top 级别的,大疆的技术栈也很深。

qq_38769551的博客 2495

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

linux内核 将数据保存在内存,内存 – 保留一部分SDRAM以在U-Boot和Linux内核之间传递数据...

如何保留SDRAM的一部分,比如4个字节,在U-Boot和Linux内核之间传递一个标志,以便链接器不会初始化这个保留的内存位置,并在热启动后保留该值?我试图避免使用bootargs来最小化嵌入式应用程序中使用的NAND闪存的磨损.我的问题可以被认为是对解决方案的扩展:How to detect cold boot versus warm boot on an ARM processor?我用下面...

weixin_28736355的博客 274

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

(转)Linux 释放 cached memory(缓存内存)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://duyongguang.blogbus.com/logs/125261454.html 原文地址:http://www.truevue.org/en/linux/cache-memory linux与windows不同,会存在缓存内存,通常叫做Cache Memory。有些时候你会发现没有什么程序在运行,但是使用...

weixin_30587927的博客 162

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Camera2Demo

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

上一篇: LWN: Rust语言写的微内核操作系统Redox
下一篇: LWN: arm64架构上最新的安全机制!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值