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

Secure Boot(安全启动)

Secure Boot(安全启动)的原理基于链式验证,这是一种确保计算机在启动过程中只加载和执行经过认证的软件的机制。这个过程涉及到硬件、固件和操作系统的多个层面。以下是Secure Boot的基本原理:

  1. 密钥和证书:Secure Boot使用一组密钥和证书来验证启动过程中的软件。这些密钥通常存储在UEFI固件中,包括一个或多个密钥对(公钥和私钥)。

  2. 签名的启动加载程序:在启动过程中,UEFI固件会检查启动加载程序(如Windows的引导管理器)的数字签名。这个签名必须由受信任的证书颁发机构(CA)签发,以确保启动加载程序未被篡改。

  3. 链式验证:启动加载程序接着会验证操作系统内核和其他关键驱动程序的签名。这是一个连续的过程,每个组件都会验证下一个组件的签名,直到整个启动链被验证。

  4. 固件和硬件支持:Secure Boot需要UEFI固件的支持,以及硬件层面的安全特性,如可信平台模块(TPM)和一次性可编程存储器(eFUSE)。

Secure Boot与硬盘的关系主要体现在以下几个方面:

  • 启动加载程序的存储:启动加载程序通常存储在硬盘上的特定分区中,Secure Boot在启动时会从这些分区加载并验证它们。

  • 操作系统的安装在安装操作系统时,安装程序会将必要的密钥和证书嵌入到硬盘上的UEFI分区中,以便在启动时进行验证。

  • 安全性:Secure Boot通过确保只有经过验证的软件被加载,从而提高了系统的安全性。这包括防止恶意软件在启动过程中加载,这可能涉及到对硬盘上的操作系统和启动文件的保护。

总的来说,Secure Boot是一种多层次的安全机制,它确保了从硬件到操作系统的每个组件都是可信的。硬盘在这个过程中扮演了存储关键启动文件和密钥的角色,但Secure Boot的实施和管理主要发生在UEFI固件层面。

=====================================

在安装操作系统时,生成的密钥通常会存储一份在UEFI固件中。这个过程是Secure Boot机制的一部分,确保了启动过程中的安全性。以下是这个过程的一般步骤:

  1. 密钥生成:在安装操作系统的过程中,会生成一对密钥,通常包括一个公钥和一个私钥。这些密钥用于对启动文件进行签名和验证。

  2. 密钥存储:生成的公钥会被嵌入到操作系统的启动文件中,而私钥则被安全地存储在UEFI固件的非易失性存储区域。这个区域通常是只读的,以防止未授权的访问和修改。

  3. 签名验证:在启动过程中,UEFI固件会使用存储的私钥来验证启动文件(如启动加载程序)的签名。如果签名有效,说明启动文件未被篡改,系统可以继续启动。

  4. 信任链建立:操作系统的启动文件(如Windows的引导加载程序)会包含一个由操作系统发布者签名的证书。UEFI固件中的密钥会用来验证这个证书,从而建立起一个信任链,确保只有经过验证的软件被加载。

  5. 安全启动:一旦验证通过,UEFI固件会将控制权交给启动加载程序,启动加载程序接着会验证操作系统内核和其他关键组件的签名,确保整个启动过程的安全性。

这种密钥存储和管理机制是Secure Boot的核心部分,它确保了即使在硬件级别,启动过程也得到了保护。通过这种方式,Secure Boot能够有效地防止恶意软件在系统启动时加载,提高了系统的安全性。

==========================================

当UEFI安全模式下提示"verification failed: (0x1a) security violation"错误时,这通常意味着启动过程中遇到了安全策略的违反。要解决这个问题,可以尝试以下步骤:

  • 关闭安全启动模式:您可以尝试临时关闭UEFI的安全启动模式。进入BIOS设置,找到安全启动(Secure Boot)选项并将其关闭,这样可以暂时绕过安全验证以便进行系统维护或安装。完成必要的操作后记得重新开启安全启动以保证系统安全。
  • 使用MOK管理:如果您需要保持安全启动开启,可以通过添加一个Machine Owner Key(MOK)来允许特定的软件或驱动程序在安全启动下运行。这通常涉及以下步骤:
  1. 在启动菜单选择进入MOK management。
  2. 选择从磁盘注册密钥(enroll key from disk)或注册哈希值(enroll hash from disk)。
  3. 按照屏幕上的提示找到相应的密钥文件或哈希值,并进行注册。
  4. 确认并重新启动电脑以应用更改。

此外,如果以上方法都不可行,可能需要检查您的硬件设备是否存在兼容性问题,或者尝试使用其他工具重新制作可启动U盘。

需要注意的是,这些步骤可能因不同的硬件和BIOS版本而有所不同,具体操作时应参考您的设备手册或联系制造商的技术支持获取帮助。

=========================

在UEFI(统一可扩展固件接口)中选择“Reset to setup mode”或类似选项通常是为了重置UEFI设置到出厂默认状态,或者是为了进入一个特殊的配置模式,以便进行更深入的系统设置。这个操作可能会影响UEFI中的各种设置,包括安全启动(Secure Boot)相关的密钥。

根据搜索结果中的信息,进入“Setup mode”通常允许用户从外部修改UEFI固件中的安全启动密钥。这意味着在“Setup mode”下,用户可以导入新的密钥,或者在某些情况下,清除现有的密钥。如果在这个模式下清除了密钥,那么原有的密钥通常无法恢复,因为它们是存储在UEFI固件的非易失性存储区域中的,一旦清除,就无法通过正常的UEFI界面恢复。

然而,这并不意味着操作系统无法启动。安全启动的密钥主要用于验证操作系统和启动加载程序的签名。如果这些密钥被清除,系统可能会回退到一个更宽松的启动模式,允许未签名的软件启动。这可能需要用户在操作系统中重新配置安全启动设置,或者在需要的情况下,重新安装操作系统。

在执行这样的操作之前,建议备份所有重要的数据和系统设置,并且确保了解所做更改的后果。如果你不熟悉这些过程,最好咨询专业人士或查阅详细的技术文档。

相关文章:

Secure Boot(安全启动)

Secure Boot(安全启动)的原理基于链式验证,这是一种确保计算机在启动过程中只加载和执行经过认证的软件的机制。这个过程涉及到硬件、固件和操作系统的多个层面。以下是Secure Boot的基本原理: 密钥和证书:Secure Boot…...

大厂面试经验:如何对加密后的数据进行模糊查询操作

加密后的数据对模糊查询不是很友好,本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路。 为了数据安全我们在开发过程中经常会对重要的数据进行加密存储,常见的有:密码、手机号、电话号码、详细地址、银行卡号、信用卡验证码等信息…...

修改docker默认存储位置【高版本的docker】

一、修改docker默认存储位置 1、停服务 systemctl stop docker 2、修改/etc/docker/daemon.json添加新的dcoker路径 如"data-root": "/mnt/hdd1/docker" 3、保存后重启服务:systemctl restart docker 二、其他服务的命令 systemctl disab…...

CleanMyMac X2024免费Mac电脑清理和优化工具

CleanMyMac X是一款专业的 Mac 清理和优化工具,它具备一系列强大的功能,可以帮助用户轻松管理和维护他们的 Mac 电脑。以下是一些关于 CleanMyMac X 的主要功能和特点: 智能清理:CleanMyMac X 能够智能识别并清理 Mac 上的无用文件…...

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇,第三篇笔记请见: 吴恩达机器学习全课程笔记第…...

大数据分析师常用函数

常用函数 当进行大数据分析时,SQL中的函数非常丰富,以下是更详细的展开: 窗口函数 (Window Functions): ROW_NUMBER(): 为结果集中的每一行分配一个唯一的整数,用于排序。RANK(): 为结果集中的每一行分配一个排名,相同值会有相同的排名,但会跳过相同排名数量。DENSE_RAN…...

MySQL 主从读写分离入门——基本原理以及ProxySQL的简单使用

一、读写分离工作原理 读写分离的工作原理:在大型网站业务中,当单台数据库无法满足并发需求时,通过主从同步方式同步数据。设置一台主服务器负责增、删、改,多台从服务器负责查询,从服务器从主服务器同步数据以保持一…...

ROS2从入门到精通:理论与实战

ROS是什么? 随着人工智能技术的飞速发展与进步,机器人的智能化已经成为现代机器人发展的终极目标。机器人发展的速度在不断提升,应用范围也在不断拓展,例如自动驾驶、移动机器人、操作机器人、信息机器人等。机器人系统是很多复杂…...

docker 安装minio 一脚shell脚本

要创建一个用于安装Minio的Docker的Shell脚本,你可以按照以下步骤进行。这个脚本会执行以下操作: 拉取Minio的Docker镜像。创建一个Docker容器并映射端口。设置Minio的访问密钥和秘密密钥。持久化存储数据到本地目录。 以下是一个简单的Shell脚本示例&…...

【数据库】mybatis使用总结

文章目录 1. 批量插入、检索<foreach>2. <if> 判断等于情况3. 模糊查询(pgsql为例)4. 分页5. <resultMap > 中collection 和association 6. no conflict do update 1. 批量插入、检索<foreach> <insert id"insertSystemService" >in…...

VR元宇宙的概念|VR体验店加盟|虚拟现实设备销售

VR元宇宙是一个结合了虚拟现实&#xff08;Virtual Reality&#xff09;和增强现实&#xff08;Augmented Reality&#xff09;等技术的概念&#xff0c;代表着一个虚拟的多维度世界。它是一个由数字化的空间构成的虚拟环境&#xff0c;可以通过虚拟现实设备进行交互和探索。 元…...

MySQL进阶:全局锁、表级锁、行级锁总结

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;MySQL事务、并发事务问题及隔离级别 &#x1f4da;订阅专栏&#xff1a;MySQL进阶 希望文章对你们有所帮助…...

Python用函数实现代码复用

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命对某些人来说是美丽的&#xff0c…...

2024年腾讯云优惠代金券领取入口整理汇总,收藏级笔记

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…...

nn.Linear() 使用提醒

原本以为它是和nn.Conv2d()一样&#xff0c;就看第二个维度的数值&#xff0c;今天才知道&#xff0c;它是只看最后一个维度的数值&#xff01;&#xff01;&#xff01; 例子1 Descripttion: Result: Author: Philo Date: 2024-02-27 14:33:50 LastEditors: Philo LastEditT…...

python difflib --- 计算差异的辅助工具

此模块提供用于比较序列的类和函数。 例如&#xff0c;它可被用于比较文件&#xff0c;并可产生多种格式的不同文件差异信息&#xff0c;包括 HTML 和上下文以及统一的 diff 数据。 有关比较目录和文件&#xff0c;另请参阅 filecmp 模块。 class difflib.SequenceMatcher 这…...

HTML5浮动

1.标准文档流组成 块级元素&#xff08;block&#xff09; 内联元素&#xff08;inline&#xff09; 2.display属性 作用&#xff1a;指定HTML标签的显示方式 常用属性 值 说明 block 块级元素的默认值&#xff0c;元素会被显示为块级元素&#xff0c;该元素前后会带有换行…...

Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、

using System.Collections; using System.Collections.Generic; using UnityEngine;public class c2 : MonoBehaviour {// 定时器float t1 0;void Start(){// 向量Vector3 v1 new Vector3(0, 0, 2);Vector3 v2 new Vector3(0, 0, 3);// 计算两个向量的夹角Debug.Log(Vector3…...

前端实现浏览器打印

浏览器的print方法直接调用会打印当前页面的所有元素&#xff0c;使用iframe可以实现局部打印所需要的模块。 组件printView&#xff0c;将传入的信息放入iframe中&#xff0c;调用浏览器的打印功能 <template><div class"print"><iframeid"if…...

iOS卡顿原因与优化

iOS卡顿原因与优化 1. 卡顿简介 卡顿&#xff1a; 指用户在使用过程中出现了一段时间的阻塞&#xff0c;使得用户在这一段时间内无法进行操作&#xff0c;屏幕上的内容也没有任何的变化。 卡顿作为App的重要性能指标&#xff0c;不仅影响着用户体验&#xff0c;更关系到用户留…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...