信息安全系列04-安全启动介绍

news2024/11/18 19:55:59

本文框架

  • 1. 基本概念
    • 1.1 基本概念回顾
    • 1.2 数字签名及验签流程
  • 2. 安全启动实施
    • 2.1 信任根选择
      • 2.1.1 使用HSM作为信任根
      • 2.1.2 使用最底层Bootloader作为信任根
    • 2.2 校验方法确认
      • 2.2.1 基于非对称加密算法(数字签名)
      • 2.2.2 基于对称加密算法
    • 2.3 安全启动方案
      • 2.3.1 HSM+对称加密/非对称加密
      • 2.3.2 最底层Bootloader+对称加密/非对称加密

安全启动(Secure Boot)是软件启动前,通过层层校验对软件完整性(Integrity)及可信度(Authentication)两项指标验证的过程,属于信息安全部分非常重要的一部分内容,本文对基本概念及常见的方案进行介绍,大纲如下:

在这里插入图片描述

1. 基本概念

1.1 基本概念回顾

在系列文章《信息安全系列02-基本概念介绍》中已对信息安全中的常见名词进行介绍,在安全启动中会涉及到的名词如下:

哈希函数:哈希函数加密是将数据通过哈希算法将任意长度的数据作为输入转换成固定长度的字符串;
对称及非对称加密算法;
数字签名:一种基于哈希函数及非对称加密算法,利用公钥加密技术为数据提供一个独特的签名来验证数据完整可信的技术;
信任根:是安全启动过程的基础,它是系统中最先被信任的元素,可以是一个硬件设备或者一段固化在只读存储器中的程序。这个元素必须具有高度的安全性,以确保整个系统的启动过程可以信赖。
信任链:基于信任根,系统会通过一系列的校验和认证步骤来构建信任链。信任链是指一系列经过验证的软件组件,它们相互认证,形成一个从信任根开始的受信任的软件链条。这个过程确保了系统启动时所加载的每一个软件组件都是可信的。

1.2 数字签名及验签流程

[图片]
数字签名的生成过程:
1)生成消息摘要:使用哈希函数对原始信息进行运算,生成固定长度的消息摘要(或称为信息摘要)。
2)生成签名:发送者使用自己的私钥通过非对称加密算法对消息摘要进行加密,形成数字签名。

数字签名解密过程
1)接收者使用发送者的公钥对收到的数字签名解密,获得消息摘要(哈希值);
2)接收者也对收到的原始信息采用同样的哈希函数生成一个新的消息摘要(哈希值);
3)如果两个摘要相同,就说明信息在传输过程中没有被篡改,且确实来自于声称的发送者。

2. 安全启动实施

安全启动(secure boot)主要检查启动后程序的完整性(Integrity)及可信度(Authentication)两项指标。通过启动时对软件进行验证来保证启动时的软件是合法且未经篡改的。

2.1 信任根选择

目前很多车规级MCU都继承了硬件安全模块,如ST的SPC58,英飞凌Tc3xx,瑞萨的RH850等,提供了集成的HSM模块,这些模块利用独立的核来保证可信,属于硬件上的信任根。另外也可以使用软件的最底层BootLoader作为信任根,这是一种成本较低的软件解决方案。

2.1.1 使用HSM作为信任根

在安全启动过程中,HSM Bootloader作为整个系统的信任根(RoT)。HSM Bootloader在启动时首先校验HSM Application的状态,确保其完整性后,HSM Application再校验其他软件模块,如BM(Bootloader Manager)的完整性。这种层级的校验确保了系统的可信启动。

2.1.2 使用最底层Bootloader作为信任根

基于软件的信任根方案虽然不如硬件信任根那样在物理层面上安全,但通过合理的设计和严格的流程控制,也能够提供一定程度的安全保障。然而,这需要得到OEM的认可,并且在整个系统的设计和维护过程中要非常小心,以防止潜在的安全风险。

2.2 校验方法确认

安全启动有两种不同类型的加密方法:基于对称密钥和非对称密钥加密的解决方案。

2.2.1 基于非对称加密算法(数字签名)

非对称加密的签名及验签流程如下:
[图片]

2.2.2 基于对称加密算法

对称加密算法流程如下:
[图片]

2.3 安全启动方案

可以有HSM/无HSM参与来进行划分,同时可以根据使用的加密算法是对称加密/非对称加密进一步划分:

2.3.1 HSM+对称加密/非对称加密

相对于对称密钥方案,对称加密方案校验时只需要重新计算一次MAC值并与原来存储的MAC对比即可。但需要特别注意MAC值存储在一个安全区域(HSM)
非对称加密方案只需要保证公钥存储在OTP区域不被修改即可。

2.3.2 最底层Bootloader+对称加密/非对称加密

使用最底层Bootloader作为信任根,对于无HSM参与时,由于MCU算例有限,加密时间可能会比较长,此时可以通过并行校验的方式即程序可以不等待校验完成就跳转,但当校验出程序被篡改后程序则停止执行,并对相关信息进行记录。
Bootloader+对称加密(适用于高性能MCU)及Bootloader+非对称加密除信任根选择与2.3.1章节不同外,其余基本一致,在此不再赘述。

写在最后,本文属于本人在学习过程中的总结,难免会有理解偏差的地方,欢迎大家随时指正,谢谢。

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

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

相关文章

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H,这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽,并拥有36GB的存储容量,相较于之前的8层堆叠HBM3 8H,在带宽和…

Java代码审计安全篇-常见Java SQL注入

前言: 堕落了三个月,现在因为被找实习而困扰,着实自己能力不足,从今天开始 每天沉淀一点点 ,准备秋招 加油 注意: 本文章参考qax的网络安全java代码审计,记录自己的学习过程,还希望…

怎么把一段音频的人声和背景音乐分开?3种方法分享

怎么把一段音频的人声和背景音乐分开?随着技术的不断发展进步,将音频中的人声和背景音乐分离已成为现实。这种技术不仅提升了音频编辑的效率和准确性,更为我们提供了无限的可能性。例如,音乐制作人可以更容易地提取出纯净的人声或…

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据】操作批量新增、分页查询(四)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据 环境: idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本编码方式mybatis☑️☑️3.5.4lambda xml 优化sq…

SAR ADC学习笔记(3)

一、SAR ADC采样电路 1.采样网络的时域响应:采保信号 2.采样网络的KT/C噪声 3.采样抖动 采样开关的种类 1.单MOS管开关 2.传输门开关 3.栅极自举(Bootstrap)开关 结论:M4的衬底需要和B点短接,保证B点能够到达高压&…

Linux系统的服务/进程

系统守护进程(服务) •服务就是运行在网络服务器上监听用户请求的进程 •服务是通过端口号来区分的 常见的服务及其对应的端口 1.ftp:21 FTP指的是文件传输协议,它是用于在计算机网络上进行文件传输的标准网络协议。通过FTP&am…

为什么MySQL中多表联查效率低,连接查询实现的原理是什么?

MySQL中多表联查效率低的原因主要涉及到以下几个方面: 数据量大: 当多个表通过连接查询时,如果这些表的数据量很大,那么查询就需要处理更多的数据,这自然会降低查询效率。 连接操作复杂性: 连接查询需要对参与连接的每个表中的数…

ES入门三:全文搜索Api实践

ES是一个强大的搜索引擎,它提供了非常丰富的数据检索Api来满足用户各种各样的需求。我们今天要介绍的是部分非常基础的全文搜索Api,这部分Api我们会在日常使用中经常用到。 在我们查询一些文本内容的时候,一般不会做精确匹配,一来…

Docker Compose实战指南:让容器管理变得简单而强大

🧨个人主页:明明跟你说过 🚩欢迎🎗️点赞😸关注❤️分享 😸希望本文能够对您有所帮助,如果本文有不足之处,或您有更好的建议、见解,欢迎在评论区留下您的看法&#xff0c…

界面控件DevExpress WinForms 2024产品路线图预览(一)

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

用Java在Spring Boot项目中,如何传递来传递一个对象(多个参数??

前言: 在前面我们已经了解到,Spring Boot项目中,可以传递一个参数,或者多个参数,但是,随着参数的增加,咱们总不能每增加一个参数,就重新写一段代码吧??这样显…

剑指offer》15--二进制中1的个数[C++]

1. 题目描述 输入一个整数&#xff0c;输出该数二进制表示中 1 的个数。 2. 解题思路 如果对负数直接右移&#xff0c;会导致最高位一直补1&#xff0c;最终变成0xFFFF死循环。 常规做法&#xff1a; 3. 代码实现 #include<iostream> #include<vector> using…

Express学习(一)

Express Express简介 什么是Express 官方给出的概念&#xff1a;Express是基于Node.js平台&#xff0c;快速、开放、极简的web开发框架。 通俗的理解&#xff1a;Express的作用和Node.js内置的http模块类似&#xff0c;是专门用来创建Web服务器的。进一步理解Express 不使用E…

GIS之深度学习10:运行Faster RCNN算法

&#xff08;未完成&#xff0c;待补充&#xff09; 获取Faster RCNN源码 &#xff08;开源的很多&#xff0c;论文里也有&#xff0c;在这里不多赘述&#xff09; 替换自己的数据集&#xff08;图片标签文件&#xff09; &#xff08;需要使用labeling生成标签文件&#xf…

Spring MVC 面试题及答案整理,最新面试题

Spring MVC中的DispatcherServlet是什么&#xff0c;它如何工作&#xff1f; DispatcherServlet是Spring MVC中的核心组件&#xff0c;负责协调不同的请求处理器。它的工作流程包括&#xff1a; 1、请求接收&#xff1a; 接收HTTP请求&#xff0c;并将其转发到相应的处理器。…

14:Hadoop数据分析|节点管理|搭建NFS网关服务

数据分析&#xff5c;节点管理&#xff5c;搭建NFS网关服务 HDFS文件系统的使用调用Hadoop集群分析数据Hadoop集群的维护增加修复节点删除节点 搭建NFS网关服务创建账户并授权在nfsgw上运行网关服务NFSGW测试 HDFS文件系统的使用 访问文件系统的两种方式&#xff1a; web页面…

Java Swing游戏开发学习8

内容来自RyiSnow视频讲解 上一节提到的bug&#xff0c;不知道有没有人发现&#xff1f; 在播放音乐和音效的时候使用的是同一个clip对象&#xff0c;播放背景音乐在前&#xff0c;后续播放音效&#xff0c;clip对象就被覆盖了&#xff0c;因此导致调用停止播放背景音乐的时候&a…

大厂大面积裁员,计算机专业还香吗?

对比大部分专业&#xff0c;计算机专业肯定还是香的啊 近些年&#xff0c;随着计算机行业薪资的提高&#xff0c;成为了热门专业。 还有不少人通过考研转向计算机类的专业&#xff0c;足见其还是很香的。 计算机类考研需要准备的内容很多&#xff0c;其中408是必考的科目&am…

PyTorch搭建LeNet神经网络

函数的参数 1、PyTorch Tensor的通道排序 [batch, channel, height, width] batch: 要处理的一批图像的个数 channel: 通道数&#xff08;一般是R G B 三个通道&#xff09; height: 图像的高度 width: 图像的宽度 2.Conv 2d 卷积层的参数 [in_channels, out_channels, ke…

从零开始学习PX4源码2(PX4姿态误差计算)

目录 文章目录 目录摘要1.源码1.1源码路径1.2源码程序1.3源码功能 2.源码分析 摘要 本节主要记录PX4姿态误差计算过程&#xff0c;欢迎批评指正。 1.源码 1.1源码路径 PX4-Autopilot/src/modules/mc_att_control/AttitudeControl/AttitudeControl.cpp1.2源码程序 matrix::…