当前位置: 首页 > article >正文

Secure boot入门-1基本概念和框架

Secure boot说是为了防止黑客篡改系统窃取你的数据。但是你的数据一般值得黑客窃取么我想更重要的原因是商业利益防止水货和自己偷偷升级不给服务费占据垄断地位防止黑客二次加工卖钱防止搞破坏产品不能用。所以厂商为了商业利益都要上Secure boot。特别是跨国贸易中的水货。保障自己的嵌入式商品上的软件不被篡改几乎各个公司都有这样的需求不然就像卖DIY产品了也需要大量的工程师来去做这个事情。所以Secure boot的目的只有一个防止刷机篡改程序。整体来说需要关注两件事怎么从ROM开始构建image的信任链使用什么加解密算法校验不会被破解这个其实跟特工组织一样有一个领头人发展下线下线再发展下线相邻两个级别之间有暗号不同级别之间互不认识。这样敌人抓到某一个级别的人也破解不了全局。1. 固件加载信任链之前介绍过ATF的文章ATF入门-1qmeu搭建ARM全套源码学习环境中用过上面的一幅图ARM的启动图从下到上进行启动的顺序为BL33就是uboot之后就会启动linux内核了。每一个阶段上一阶段都会对下一个阶段的镜像进行校验发现有改动就终止启动了主打一个防篡改。ATFArm Trusted FirmwareARM安全固件运行在EL3异常级别ATF为Armv7-A 和 Armv8-A提供了一些安全可信固件。具体包括上面说的ATF BL1、BL2、BL31、BL32、BL33其中BL33有就是U-Boot。都运行在EL3模式。具体为BL1也叫bootromrom的意思就是只读的具有最高的执行权限EL3在 CPU 出厂时就被写死了。为什么要写死这里有一个安全驱动概念Secure Boot。CPU上电启动的时候加载镜像的顺序为BL1 -》 BL2 -》 BL31 -》 BL32 -》BL33uboot-》OSLinux但是如果其中的一个镜像被换掉了怎么办这里不是说网络攻击换掉就是物理上拿到电路板然后把存储SD卡拔掉换了自己的OS那不是想干啥就干啥完全控制了硬件设备俗称“越狱”。答案就是对每一个镜像进行签名校验。例如BL33加载OS需要OS镜像算出hash利用私钥加密然后BL31在加载OS的时候会读取这个加密的Hash利用自己的公钥解密解密后的hash是对的就进行加载。那么这么一级一级按照加密向前传递那第一个根BL1如果可以在SD卡上伪造那校验就没用了。所以BL1需要只读并且作为只读硬件直接搞进到CPU里面你从板子上也拆不下来更替换不了。因为要写死到CPU内部所以独立出来了也是其由来的原因。BL2BL2在flash中的一段可信安全启动代码主要完成一些平台相关的初始化比如对ddr的初始化等。因为BL31和BL32是一个runtime也就是上电后一直运行的程序那么需要加载到内存里面需要先初始化内存ddrBL2就干这个事情的。所谓的Loder。BL31作为EL3最后的安全堡垒它不像BL1和BL2是一次性运行的。如它的runtime名字暗示的那样它通过SMC指令为Non-SecureOS持续提供设计安全的服务在Secure World和Non-Secure World之间进行切换。是对硬件最基础的抽象对OS提供服务。例如一个EL3级别的特权指令比如关机、休眠等OS是无权处理的就会交给BL31来继续操作硬件处理。BL32是所谓的secure os运行在Secure mode。在ARM平台下是ARM 家的 Trusted Execution EnvironmentTEE实现。OP-TEE是基于ARM TrustZone硬件架构所实现的软件Secure OS。启动BL1BL2BL31BL32BL33Linux则是一个完整的ATF信任链建立流程ARM Trusted Firmware。并且负责加载镜像的BL1、BL2、BL33都不是runtime只要Linux系统启动是不可能再有加载镜像的机会了挺狠一个更通用不局限于ARM ATF的secure boot模型图如下2. 镜像加密算法基础说完了链式加载的信任链那么接下来就是对固件加密和解密的知识了因为这个被破解那也是搞不定这个流程的。2.1 消息摘要算法介绍为了防止数据被篡改就要保证数据的完整性一般做法是根据消息内容hash加密函数算出一个摘要接收者拿到消息后也按同样的算法算出摘要然后两个摘要对比就知道真假了。这个在消息传递的时候经常用到这里我们用在了固件bin文件数据上。数字指纹消息摘要采用单向Hash函数将需加密的明文摘要成一串固定位数如128bit的密文这一串密文亦称为数字指纹Finger Print它有固定的长度且不同的明文摘要成密文其结果总是不同的而同样的明文其摘要必定一致。不可逆消息摘要具有不可逆性在消息摘要生成过程中会丢失很多原文的信息而且无法找回。一个好的摘要算法是极难产生Hash碰撞的也就是找到另一段明文经计算后产生相同的摘要。消息摘要算法常用的有MD5SHAMAC等。在secure boot中一般使用sha128sha256、sha512等算法作为完整性算法。2.2 非对称加密算法-RSA什么是对称加密使用相同的密钥进行加密和解密。常见的算法有AESAdvanced Encryption Standard。如果密码被敌人获得那就完了。特别是现在的网络时代告诉对方密码也需要通过网络这就更加的难了。什么是非对称加密加密和解密不使用同样的密码和规则只要这两种规则之间存在某种对应关系即可这样就避免了直接传递密钥这就是非对称加密。使用非对称加密A要给B发消息B生成两把密钥公钥和私钥。公钥是公开的任何人都可以获得私钥则是保密的。A获取B的公钥然后用它对信息加密。B得到加密后的信息用私钥解密。如果公钥加密的信息只有私钥解得开那么只要私钥不泄漏通信就是安全的。1977年三位数学家Rivest、Shamir 和 Adleman设计了一种算法可以实现非对称加密。这种算法用他们三个人的名字命名叫做RSA算法。从那时直到现在RSA算法一直是最广为使用的非对称加密算法。毫不夸张地说只要有计算机网络的地方就有RSA算法。这种算法非常可靠密钥越长它就越难破解。根据已经披露的文献目前被破解的最长RSA密钥是768个二进制位。也就是说长度超过768位的密钥还无法破解至少没人公开宣布。因此可以认为1024位的RSA密钥基本安全2048位的密钥极其安全。下面我们来讲下RSA的原理。互质两个正整数除了1以外没有其他公因子例如15和32之间。互质的一些推理任意两个质数构成互质关系比如13和61。一个数是质数另一个数只要不是前者的倍数两者就构成互质关系比如3和10。如果两个数之中较大的那个数是质数则两者构成互质关系比如97和57。1和任意一个自然数是都是互质关系比如1和99。p是大于1的整数则p和p-1构成互质关系比如57和56。p是大于1的奇数则p和p-2构成互质关系比如17和15。欧拉函数φ(n)小于等于n的正整数之中与n构成互质关系的数的个数。在1到8之中与8形成互质关系的是1、3、5、7所以 φ(8) 4。ab-1/nM, M是整数正整数a和n互质则b就叫做a的模反元素或者说ab被n除的余数是1。如果b是a的模反元素则 bkn 都是a的模反元素。模反元素必然存在且不止一个a的 φ(n)-1 次方就是a的模反元素。比如3和11互质那么3的模反元素就是4因为 (3 × 4)-1 可以被11整除。显然模反元素不止一个 4加减11的整数倍都是3的模反元素 {…,-18,-7,4,15,26,…}即如果b是a的模反元素则 bkn 都是a的模反元素。加密也就是说RSA加密是对明文的E次方后除以N后求余数的过程。从通式可知只要知道E和N任何人都可以进行RSA加密了所以说E、N是RSA加密的密钥也就是说E和N的组合就是公钥我们用**(E,N**)来表示公钥解密也就是说对密文进行D次方后除以N的余数就是明文这就是RSA解密过程。知道D和N就能进行解密密文了所以D和N的组合就是私钥制造秘钥方法举例求N我们准备两个很小对质数p 17q 19N p q 323求LL lcmp1 q1 lcm(1618 144144为16和18对最小公倍数求E求E必须要满足2个条件1 E L gcdEL1即1 E 144gcdE144 1E和144互为质数5显然满足上述2个条件故E 5此时公钥(EN 5323求D求D也必须满足2个条件1 D LED mod L 1即1 D 1445 D mod 144 1显然当D 29 时满足上述两个条件1 29 144529 mod 144 145 mod 144 1此时私钥DN29323加密准备的明文必须时小于N的数因为加密或者解密都要mod N其结果必须小于N假设明文 123则 密文明文EmodN1235mod323225解密明文密文DmodN22529mod323123解密后的明文为123。为什么知道公钥EN不能破解公钥和私钥的纽带就是两个质数的成绩如果两个质数特别的大几百位那么很难因式分解到正确的值。RSA算法的安全性随着密钥长度的增加而增强。更长的密钥意味着更大的n值从而增加了分解的难度。例如1024位的RSA密钥被认为是基本安全的而2048位的密钥则被认为是极其安全的。迄今为止还没有公开宣布成功破解了长度超过768位的RSA密钥。详细的解释涉及到数学公式的证明具体参考https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.htmlhttps://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html3. Secure boot镜像校验应用如上图中两个要素1. 信任链 2.加解密算法在使用中某个两个节点的步骤为使用hash算法计算镜像的hash值1编译服务器上用私钥将hash值签名后将签名的结果一起打进镜像中存放在特定位置。运行时上电后拿到公钥将存储在镜像中特定位置的hash值1解密。将解密的hash值1与设备中当前镜像hash算法计算的hash值2做对比二者一致则校验通过。总结编译服务器上私钥签名hash值签名后的hash值和公钥和hash算法一并打包入镜像。启动的时候从镜像读hash值利用公钥解密解密后的hash值跟再重新算一遍hash的值是否一致。私钥在编译时使用编译服务器都是在公司里面的例如你不可能闯入苹果公司把私钥从编译服务器里面抢出来文明社会不能处处古惑仔。在物理机存储上的东西我们可以拆机利用特殊设备读出来物理机里面的存储的有公钥和hash算法以及加密后的hash值。黑客通过读二进制反编译等技术知道了这些没有私钥也破解不了。有一个天马行空的想法如果黑客在刚运行BL2的时候让CPU停止运行然后在内存里面找到BL2代码中去校验下一个image的代码进行修改不去校验然后继续运行感觉就可以破解了。上网搜了这个想法感觉让CPU停下来比较难运行代码的内存也是禁止写的看来还需要硬件工程师的深度配合才能进行破解了。总之感觉造软件的的自己没秘钥自己也破解不了造硬件的只要连接出来一些线应该能控制但是封装技术可能会阻碍。另外提醒下破解secure boot是非法的。另一个成熟的方法就是把芯片吹下来换一个不带BL1校验image的芯片去启动把信任根搞定就可以了。但是芯片厂商可能出厂的所有芯片rom都带校验这就麻烦了找不到芯片的替代了。另外efuse的熔断机制也可以去读芯片的型号进行破坏运行环境而无法正常校验通过而停止启动。后记安全是个挺有意思的话题有点hack的东西道高一尺魔高一丈总是伴随着技术的进步而进步可以深究的东西太多而且大多涉及到硬件的设计后续再慢慢阐述。“啥都懂一点啥都不精通干啥都能干干啥啥不是专业入门劝退堪称程序员杂家”。欢迎各位有自己公众号的留言申请转载纯干货持续更新欢迎分享给朋友、点赞、收藏、在看、划线和评论交流“那路谈OS与SoC嵌入式软件”欢迎关注个人文章汇总https://thatway1989.github.io

相关文章:

Secure boot入门-1基本概念和框架

Secure boot说是为了防止黑客篡改系统,窃取你的数据。但是你的数据一般值得黑客窃取么,我想更重要的原因是商业利益:防止水货和自己偷偷升级不给服务费占据垄断地位,防止黑客二次加工卖钱,防止搞破坏产品不能用。 所以…...

uboot入门-6移植要点

本篇作为结尾先对之前的文章进行下汇总: uboot入门-1简介和运行 uboot入门-2Makefile和编译 uboot-3链接脚本和第一阶段启动 uboot入门-4命令行和驱动管理 uboot入门-5linux启动前夜 uboot入门-6移植要点–本篇 对于uboot移植需要先搞清楚下面几个概念&#…...

哔哩下载姬:B站视频下载工具的专业解决方案与技术应用指南

哔哩下载姬:B站视频下载工具的专业解决方案与技术应用指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&a…...

K8s 1.36 新特性深度解析:服务网格与零信任集成(生产级配置)

K8s 1.36 新特性深度解析:服务网格与零信任集成(生产级配置) 前言:K8s 1.36 被称为“云原生安全网络里程碑”版本,核心突破集中在「服务网格原生化」和「零信任落地」两大板块——彻底解决了过去服务网格“资源占用高、…...

丹青幻境使用技巧:批量生成、种子控制、作品管理全攻略

丹青幻境使用技巧:批量生成、种子控制、作品管理全攻略 1. 丹青幻境核心功能概览 丹青幻境(Z-Image Atelier)是一款融合东方美学与先进AI技术的数字艺术创作工具。它基于Z-Image架构和Cosplay LoRA技术构建,为创作者提供了独特的…...

开箱即用!霜儿-汉服-造相Z-Turbo镜像部署及初体验报告

开箱即用!霜儿-汉服-造相Z-Turbo镜像部署及初体验报告 1. 镜像概述与核心价值 霜儿-汉服-造相Z-Turbo是一款专为古风汉服人像生成优化的AI模型镜像。基于Z-Image-Turbo架构并融合定制LoRA技术,它能将文字描述快速转化为精美的汉服少女图像。这个开箱即…...

智慧树刷课插件:3步实现自动化学习,告别手动刷课烦恼

智慧树刷课插件:3步实现自动化学习,告别手动刷课烦恼 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的网课学习而烦恼吗&…...

Hitboxer SOCD清理器架构解析:游戏按键重映射系统的深度优化

Hitboxer SOCD清理器架构解析:游戏按键重映射系统的深度优化 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏领域,操作精度往往决定胜负。传统键盘输入在同时按下相反方向键时…...

BKIN 完整链路评估

BKIN 完整链路评估(基于当前代码) 1. 结论摘要 当前工程已形成“硬件秒级切断 + 软件锁存 + 状态机收敛”的 BKIN 保护闭环。 硬件链路由 TIM0 BKIN 直接触发 BRK,会在硬件侧优先拉低主输出使能(MOE 关闭),具备最高优先级。 软件链路通过 TIMER0_BRK_IRQHandler 和 prot…...

Meta:AIRA2系统突破AI科研Agent瓶颈

📖标题:AIRA_2: Overcoming Bottlenecks in AI Research Agents 🌐来源:arXiv, 2603.26499v1 🌟摘要 现有的研究已经确定了人工智能研究代理中的三个结构性性能瓶颈:(1)同步单GPU执行…...

AI知识库集问答

框架图架构图(模块视角)当前真实生效路径(精简图)“知识库”模块,当前实现可以概括为:文档管理 上下文拼接式问答(非RAG检索库),主问答链路是 单智能体调用 DeepSeek。先…...

3步精通安卓虚拟定位:FakeLocation实现应用级位置模拟的终极指南

3步精通安卓虚拟定位:FakeLocation实现应用级位置模拟的终极指南 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在数字时代,位置信息已成为个人隐私的最后…...

终极NS-USBLoader使用指南:三分钟掌握Switch文件传输与RCM注入

终极NS-USBLoader使用指南:三分钟掌握Switch文件传输与RCM注入 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/…...

医疗用气电混合连接器:实现安全性与稳定性平衡的实用技巧

想必从事医疗设备开发的各位都有同感:如今的设备变得越来越复杂。尤其是在需要同时传输气体和电信号的场合,可以说一个小小的连接器就能左右整个设备的可靠性。请不要低估这个"配角"的作用。一旦出现问题,轻则导致设备错误或停机&a…...

NVIDIA Profile Inspector终极指南:解锁显卡隐藏设置,轻松提升游戏性能

NVIDIA Profile Inspector终极指南:解锁显卡隐藏设置,轻松提升游戏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款功能强大的显卡配置工具&…...

ViGEmBus终极指南:在Windows上免费实现完美虚拟手柄映射

ViGEmBus终极指南:在Windows上免费实现完美虚拟手柄映射 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款专业的Windows内核级虚拟…...

如何在Windows上解决游戏控制器兼容性问题:ViGEmBus虚拟驱动完全指南

如何在Windows上解决游戏控制器兼容性问题:ViGEmBus虚拟驱动完全指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 还在为Windows游戏控制器不…...

矽力杰 Silergy SY7066 同步升压转换器 规格书 佰祥电子

突破便携式设备低输入供电、大电流驱动、小型化集成痛点!SY7066:6A 峰值电流 同步整流升压的五大核心优势便携式单节锂电与双节电池供电设备普遍面临低输入电压下难以稳定启动、大电流输出工况转换效率偏低、芯片体积过大无法适配超薄便携产品设计三大行…...

华硕无畏Pro14 K6400ZC 原厂Win11 21H2系统分享下载

华硕无畏Pro14 K6400ZC配备了一键恢复功能,方便用户在系统异常或更换硬盘后轻松恢复出厂设置。该功能支持Windows 11 21H2家庭版系统,并通过原厂工厂文件和隐藏恢复分区实现。用户只需准备一个20G以上的U盘,按照提供的安装教程操作即可完成系…...

华硕ROG 超神2s G703 G7AI G703VI 原厂Win10系统分享下载

华硕ROG超神2s系列笔记本(包括G703、G7AI、G703VI型号)预装了Windows 10家庭版系统,并提供了一键恢复功能,便于用户在系统异常或更换硬盘后快速恢复出厂设置。若该功能失效,用户可使用原厂提供的工厂文件通过U盘进行恢…...

华硕灵耀X双屏Pro UX8402Z 原厂Win11 22H2系统分享下载

华硕灵耀X双屏Pro UX8402Z配备了一键恢复功能,即使系统出现异常或更换硬盘后,也能通过原厂工厂文件轻松恢复至出厂状态。该功能支持UX8402ZA和UX8402ZE型号,预装Windows 11 22H2家庭版。用户只需准备相应工具并按照安装教程操作即可。这一便捷…...

MySQL 自增列的分布式实现

MySQL自增列的分布式实现:突破单机限制的解决方案 在分布式系统中,MySQL自增列的单机实现面临严峻挑战。传统的自增ID依赖于单机序列,难以满足高并发、高可用的分布式场景需求。如何实现全局唯一、有序递增的ID,成为架构设计的关…...

OBS多平台直播插件:如何一次性解决多平台直播的三大痛点

OBS多平台直播插件:如何一次性解决多平台直播的三大痛点 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经为了在不同直播平台同步直播而手忙脚乱?你是否…...

Java 后端完整成长路线(含项目)

下面这份路线是我按真实公司后端成长路径给你设计的,不是培训班那种“技术名词堆砌版”,而是一步一步把你从“会写 Java”带到“能做后端项目”。我会分 阶段 目标 你该干什么 典型产出 来讲。一、你的专属起点定位(先对齐)✅ …...

FlowState Lab在农业科技的应用:基于环境时序数据的作物生长预测

FlowState Lab在农业科技的应用:基于环境时序数据的作物生长预测 1. 农业科技的新机遇 最近几年,农业领域正在经历一场数字化转型。传统"靠天吃饭"的种植方式逐渐被数据驱动的精准农业所取代。在这个过程中,如何利用农田里产生的…...

双膜气柜:生物质燃气存储的柔性恒压方案

在绿色发展与循环经济成为主流的当下,沼气等生物质燃气的高效、安全储存,是打通废弃物处理与清洁能源利用的关键纽带。双膜气柜作为柔性储气解决方案,凭借恒压稳定、防腐耐用、低维护等优势,已广泛应用于市政污水处理、农业沼气工…...

2026会话存档是什么?新版会话存档有什么功能?

一.概述会话内容存档产品——乐聊会话助手plus是由贵州遐宇科技服务有限公司与企业微信合作产品。此产品是基于企业微信会话存档API接口进行二次开发的监管系统,2024年1月登记为软件作品正式发行。该系统提供企业会话内容存档管理、超时回复提醒、员工客户互动过程合…...

基于RVC模型的实时合唱系统:单人模拟多人合唱效果

基于RVC模型的实时合唱系统:单人模拟多人合唱效果 你有没有想过,一个人也能唱出气势磅礴的合唱效果?以前这可能需要一个录音棚和一群专业歌手,但现在,借助AI技术,一个人、一台电脑就能轻松实现。今天要聊的…...

大模型提取结构化JSON——生产级

目录 输出结构化符合预期的Json Phase 1: 提示工程约束 (Prompt Engineering) Phase 2: 原生协议控制 (Native Protocol Control) 深入浅出:如何用 Function Calling 提取结构化数据 第一步:把“提取动作”包装成一个“函数说明 (Schema)” 第二步:向大模型发起对话请…...

吉林周边陶粒仓库现货

《【吉林周边陶粒仓库现货】哪家好:排名前五专业深度测评》开篇:定下基调在吉林周边,陶粒仓库现货的需求日益增长,为了帮助对吉林周边陶粒仓库现货感兴趣的人群挑选到合适的产品,我们开展了本次测评。本次测评旨在通过…...