读零信任网络:在不可信网络中构建安全系统07设备信任

news2024/9/20 20:21:55

5947f0d34a7c4d68991be663e5d70f18.jpeg

1. 设备信任

1.1. 在零信任网络中建立设备信任至关重要,这也是非常困难的一个环节

1.2. 建立设备信任是基石,直接影响零信任网络架构的成败

1.3. 大多数网络安全事件都和攻击者获得信任设备的控制权相关,这种情况一旦发生,信任就将被彻底瓦解,无法通过设备来确保安全信任链的建立

2. 初始信任

2.1. 对于新采购的设备,其信任程度取决于采购者对生产厂商和供应商的信任程度

2.1.1. 一般认为其信任度较高

2.1.2. 这种继承自供应商的信任度是一种社会化信任

2.1.3. 需要将这种现实社会的真实信任度“注入”设备本身,形成初始的数字信任度

2.2. 黄金镜像

2.2.1. 无论以何种方式收到设备,都需要加载一个明确的“好”镜像,这个镜像就是“黄金镜像”​

2.2.2. 一次性地通过彻底的审核确定软件镜像的可信,并将其作为“黄金镜像”进行分发

2.2.3. 将一个干净的“黄金镜像”加载到设备能极大地确保设备的信任度

2.2.3.1. 通过这种方式,有足够的理由确信设备运行的软件经过了审核并且是安全的

2.2.3.2. 记录设备上次重新加载镜像的时间可以在一定程度上决定设备的可信程度

2.3. 安全启动

2.3.1. 通过一些非常底层的技术将非法代码植入到设备中是完全有可能的

2.3.1.1. 即便重新为设备加载镜像也无法擦除

2.3.2. 安全启动是防护此类攻击的方法之一,通过在设备固件内嵌入的公钥对驱动程序和操作系统引导程序进行签名验证,可以确保这类非法植入物无所遁形

2.3.3. 安全启动比较有效,但是其受限于操作系统和设备的内在机制的支持

2.3.4. 有效验证设备上运行的软件只是第一步,还需要提供一种技术手段,让设备可以向待访问的资源标识自己的身份

2.3.4.1. 典型做法是通过私有CA为每台设备签发单独的设备证书,进行网络通信时,设备必须提交此证书

2.4. 设备证书

2.4.1. 设备证书不仅仅能证明设备是已知在册的,还能证明设备的唯一身份

2.4.2. 设备证书的私钥一旦被窃取,攻击者就可以假冒信任设备,这种情况会直接影响设备认证方案的有效性

2.4.2.1. 必须考虑设备证书私钥的安全存储问题

2.4.3. 方案1:配置对私钥的访问权限,只允许具有超级权限的用户(如root或administrator)访问

2.4.3.1. 攻击者一旦提权就可以轻易获取私钥

2.4.4. 方案2:对私钥进行加密

2.4.4.1. 比简单的权限控制方案好一些

2.4.4.2. 可能存在一些易用性问题

2.4.4.2.1. 必须提供口令或其他凭证才能解密和使用私钥

2.4.4.2.2. 对于服务器认证的场景它就很不适用了

2.4.4.2.2.1. 无法做到每次软件重启时都要求人工交互

2.4.5. 方案3:迄今为止存储设备密钥的一种极好的方法是使用安全的加密处理器

2.4.5.1. 这些设备[通常被称为硬件安全模块(HSM)或可信平台模块(TPM)​]提供可以执行加密操作的安全区域

2.4.5.2. 加密处理器暴露为数不多的应用程序编程接口(API)用于生成非对称加密密钥,确保私钥永远不会离开安全模块

2.4.5.3. 操作系统也不能直接访问安全模块存储的私钥,因此它很难被窃取

2.4.6. 设备证书代表了设备的身份和初始信任度,其私钥用于对其他系统证明本设备是被认证的、可信的

2.4.6.1. 既然对身份标识的本地安全存储都需要谨慎防护以免被窃取,证书的生成和签发就更不应掉以轻心

2.4.6.2. 如果从企业的安全需求来看,设备的初始证书签发和安装极其敏感,那就必须在证书签署流程中引入人工干预环节,杜绝流程上的隐患

2.5. 身份标识安全

2.5.1. 在相对静态的系统中配置新主机时,通常由安全操作员进行人工的设备身份标识部署

2.5.1.1. 一般认为安全操作员是可信任的

2.5.1.2. 这一人工操作确保初始身份标识可信

2.5.2. 在动态系统中,配置和签名过程都是自动化的,是否需要人工干预?

2.5.2.1. 完全取决于系统的安全等级

2.5.3. 所有应用和系统组件都应该身份化,这一原则是不变的,这同时适用于主机中心化和容器中心化的环境

2.6. 审批和安全授权

2.6.1. 为避免人为犯错,建议每个人只负责对他们自己发起的请求进行审批确认

2.6.2. 通过使用一次性动态口令(TOTP)可以在单个步骤中完成部署和签名授权

2.6.2.1. 一个TOTP口令只能使用一次,所以TOTP验证失败是一个重要的安全事件,可以杜绝安全隐患

2.6.3. 信任只能来源/派生于某个已有的信任源

2.6.3.1. 人工干预

2.6.3.1.1. 在相对静态的基础设施或终端用户设备的场景中,人工干预是一种简单安全的方案

2.6.3.1.2. 对于自动化的基础设施场景而言,人工干预不是一个好的选择

2.6.3.2. 资源管理器

2.6.3.2.1. 在某种程度上属于特权系统,其具备对基础设施的系统进行扩大或缩减的能力,并且整个基础设施的可用性也极大地依赖这类资源管理系统

2.6.3.2.2. 通过资源管理器可以直接或间接地对新证书的签发进行授权

2.6.3.2.3. 在容器化环境中,这类职责可能由资源调度器承担

2.6.3.3. 镜像或设备

2.6.3.3.1. 可考虑将身份凭证直接“烧制”到设备镜像中

2.6.3.3.2. 不建议将这种方案作为首选,因为这种方案过度依赖镜像库,并且保护和周期性地刷新镜像将变得复杂且具有风险

2.6.3.3.3. 可以利用HSM或TPM来提供与硬件关联的设备证书,这种方案比直接将凭证“烧制”到设备镜像中稍好

2.6.3.3.4. 但过度依赖TPM来实现设备证书的签发仍然不是最理想的方案

2.6.3.3.5. 特别是需要兼顾云端系统的部署时,其局限性就很明显了

2.6.4. 授权因子

2.6.4.1. 镜像中的密钥(或TPM中注册的密钥)

2.6.4.2. 正确的IP地址

2.6.4.3. 合法的TOTP(通过资源管理器生成)

2.6.4.4. 匹配的证书属性(如匹配的证书CN)

2.6.5. 一种较好的方式是综合利用资源管理器和可信安全镜像,将通用的认证凭证“烧制”到设备镜像中(或注册TPM密钥)​,并将其用于终端和签名服务之间的安全通信传输

2.6.5.1. 攻击者无法访问待部署的主机,顶多对可用性进行一些攻击

2.6.5.2. 即便设备镜像被盗用也无法完成证书请求,因为资源管理器会进一步验证镜像部署的主机以及签名请求的其他属性

3. X.509

3.1. X.509是当之无愧的设备身份和认证方面的重要标准

3.1.1. 它定义了公钥证书、吊销列表的证书格式和验证证书链的方法

3.1.2. X.509证书的首要作用是证明身份

3.2. X.509的强大之处在于,其使用的公私钥对除了用于设备身份认证,还提供了一种用于设备初始安全通信的可靠机制

3.2.1. 这也是X.509对互联网安全非常有价值的众多原因之一

3.3. 证书链及证书认证机构

3.3.1. 要使证书具备足够的意义,对其建立信任是至关重要的

3.3.2. 任何人都可以签发证书,只是拥有一个匹配的CN名称证书并不意味着什么,证书必须经由可信机构进行数字签名才能具备有效性,才是可信的

3.3.3. 没有“真实”签名的证书被称为自签名证书,通常用于测试

3.3.4. 证书注册机构(一般可由证书签发机构充当或委派)负责对证书的详细信息进行确认,只有确认过的证书信息才能被签名

3.3.5. 如果签发的证书具备一定的属性,还可以用于签发下一级证书,从而形成信任链,显而易见,这个信任链的根就是证书认证机构

3.3.6. 通过信任CA,我们间接信任了其签发的所有证书的有效性

3.3.7. 通过实现分发少量公钥(CA公钥)​,所有从这个CA签发的证书都包含了到上级签发证书的链接,从而可验证其有效性和合法性

3.4. 公钥加密或非对称加密

3.4.1. 非对称加密运算代价极大,不适合用于大块数据加密

3.4.2. 通过使用公钥和私钥两个密钥可以完成身份证明/认证

3.4.3. 公钥是可公开分发的,而私钥由证书的所有者安全持有

3.4.4. 使用私钥加密一小段数据,则这段数据只能通过对应的公钥进行解密,从而证明证书所有者确实持有证书私钥

3.4.5. 在大多数场景下,这个密钥对采用RSA密钥对

3.5. 设备身份

3.5.1. 主体(Subject)​,这个字段用于描述证书的所有者,在设备认证的场景下,这个所有者就是设备(或主机)

3.5.2. 通常情况下,组织(Organizat​ion, O)和组织机构(Organizat​ional Uni​t, OU)字段的含义与字面意思一致

3.5.2.1. O字段用于表示环境

3.5.2.2. OU字段用于表示主机的角色

3.5.3. 证书是经过签名的,可被信任,所以这些信息可以安全地用于授权判定

3.5.4. 作为授权客体的服务器明确地知道其应该被授权给哪些主体

3.6. 私钥存储

3.6.1. 如果私钥被攻破,那么设备的身份和隐私也会受到威胁

3.6.1.1. 私钥被攻破的情况是一种糟糕的场景,应该不惜一切代价进行规避

3.6.2. 可以在存储私钥时对其进行加密,使用私钥的时候需要提供加密口令进行解密

3.6.2.1. 使用口令对私钥进行加密仅适用于面向用户的设备

3.6.2.2. 在数据中心场景,这种方案并不奏效,因为解密私钥需要口令并考虑其安全存储,或通过某种安全机制传输密钥口令到服务器,这样一来,保证口令的安全变得和保护私钥一样重要

3.6.3. 硬件安全模块(HSM)

3.6.3.1. 可以通过硬件生成密钥对并且将私钥保存在安全存储区内,安全存储区的私钥是禁止直接读取的,只能通过HSM提供的接口请求其使用私钥来进行指定的运算

3.6.3.2. 这种基于硬件安全存储的私钥保护机制非常安全,不易被盗

3.7. 设备认证

3.7.1. 在零信任网络中,将X.509证书用于设备认证至关重要,它是证明设备身份的基石,其在建立端到端加密的过程中也不可或缺

3.7.2. 零信任网络的每个设备都应该拥有X.509证书

3.7.2.1. 这个方案的核心是私钥,私钥是基于软件的,如果被盗,那么整个设备认证体系将成为无本之木

3.7.3. 设备证书通常用于真正的设备认证的代理

3.7.3.1. 密钥如此之长,不可能将其写下来或记住

3.7.3.2. 密钥可以被下载和安装,因此,一般不由用户随身携带,在设备认证的场景中,密钥应该始终和设备在一起

3.7.4. 通过使用TPM可以将私钥和硬件进行绑定并安全存储,从而有望彻底地解决私钥的安全问题

4. TPM

4.1. 可信平台模块(TPM)是一种嵌入到计算设备中的特殊芯片

4.1.1. 这种芯片一般称为加密处理器,用于以可信和安全的方式进行密码运算

4.1.2. 一般包含自己的固件,可以将其视作一种特殊的单片机

4.1.3. 有助于实现一种小巧而精简的硬件API,并且可轻松审核和分析潜在的系统漏洞

4.1.3.1. 可以避免暴露过多接口以及直接对私钥的读取

4.1.3.2. 即便是操作系统,也无从获取安全密钥

4.1.4. 安全密钥和硬件紧密绑定

4.1.4.1. 在零信任安全中,通过TPM实现设备认证是一个极佳的实践

4.2. 使用TPM加密数据

4.2.1. TPM生成并存储所谓的存储根密钥(Storage Root Key, SRK)​,这个密钥对代表了TPM设备的信任根

4.2.2. 为了有效利用TPM进行批量数据加密,必须设法减少SRK直接保护的数据量

4.2.3. 方案是生成一个随机加密密钥,将其用作对称加密算法(如AES)的加密密钥,并采用这类高性能算法对块数据进行加密,这个随机加密密钥可以使用SRK进行加密保护

4.3. 中间密钥和密码短语

4.3.1. 很多TPM库(如TrouSerS)在加密数据时会使用中间密钥

4.3.1.1. 要求TPM创建一个全新的非对称密钥对,使用公钥对AES密钥进行加密,然后使用SRK对私钥进行加密

4.3.1.2. 解密数据时,首先通过TPM解密中间密钥的私钥,并用它解密AES密钥,然后再使用AES密钥解密原始数据

4.3.2. 增加一级额外的中间密钥有利于加密数据的灵活分发

4.3.2.1. 如果仅仅为了满足“密钥只能通过相应的设备进行解密”这一目标,则并不需要采用中间密钥方案

4.3.3. SRK和中间密钥都支持加密短语,因此中间密钥可以允许使用额外的加密短语

4.4. 基于TPM的安全存储机制的一个作用在于保护设备X.509证书的私钥

4.4.1. 安全密钥是设备身份证明的权威信任根,如果其被盗用,那么设备身份事实上也被盗用了

4.4.2. 使用TPM对私钥进行加密,意味着虽然仍有可能从磁盘获取私钥,但是一旦离开当前设备,这个私钥就不能解密和恢复使用

4.4.3. 密钥盗用仍然存在可能性

4.4.3.1. 方案只能防止攻击者直接从磁盘读取密钥

4.4.3.2. 无法避免攻击者提权后直接从内存读取解密后的密钥

4.4.3.3. 攻击者甚至可能调用TPM的接口直接进行加解密操作

4.5. 平台配置寄存器

4.5.1. Plat​form Conf​igurat​ion Register, PCR

4.5.2. 是TPM的重要特性之一

4.5.3. 提供多个存储插槽,可以用于存放运行软件的散列值

4.5.4. PCR最开始存放的是BIOS的散列值,紧随其后的是引导记录,然后是对应的配置信息,诸如此类

4.5.4.1. 这些散列值序列可以用于证明系统的配置或状态是合法的

4.5.5. 数据“封印”​

4.5.5.1. 可以确保只允许经过授权的软件配置解密数据,这可以通过在使用TPM加密数据时,传递一组已知的PCR数据值作为参数来实现

4.5.5.2. 被“封印”的数据只能通过封印它的TPM进行解密,并且解密时PCR的取值必须匹配

4.5.5.3. 由于PCR的取值无法修改或回滚,因此可以使用TPM“封印”技术确保加密数据不仅仅绑定到当前设备,还能绑定到特定的软件配置和版本

4.5.5.4. 可以有效地防止攻击者通过设备访问权限来获取私钥,因为只有未被修改的软件才能解锁这些数据

4.6. 远程认证

4.6.1. 数据一旦离开物理TPM的安全存储区域,其安全性将无法保证,仍然可能被盗用

4.6.2. 一旦通过TPM对加密数据进行解锁/解密,原本在TPM中安全存放的私钥就被暴露了

4.6.3. TPM还提供了另外一种唯一标识其身份的方法,就是被称为背书密钥(Endorsement Key,EK)的密钥对

4.6.3.1. 每个TPM都有唯一的密钥对

4.6.3.2. EK的私钥仅存在于TPM内,因此即便是操作系统也无法对其进行访问

4.6.4. 远程认证时,TPM生成一个称为“引用”​,然后将其安全地传输至远端系统

4.6.4.1. 这个“引用”包含了当前的PCR取值列表,并且使用EK进行签名

4.6.4.2. 远端系统可以通过这些信息对主机身份(因为EK对于每个TPM都是唯一的)和对应的软件状态/配置(因为PCR的取值不能被修改)进行确证

4.7. 用于认证的密钥仅能够签署源自于TPM的数据,这种局限显然无法支持类似TLS之类的传输加密协议

4.7.1. 流行的IKE守护进程strongSwan使得TPM不仅仅可以用于认证IPSec连接,还能通过对PCR数据的使用实现授权,确保发起连接的主机所运行的软件是准确且未被篡改过的

4.8. 对于一个成熟的零信任网络,使用TPM进行强设备认证是理想选择,它完美地实现了软件身份和物理硬件之间的联结

4.8.1. 目前TPM虚拟化技术已有可用的实现(如用于Xen系统的vTPM)​,但信任仍然必须植根于硬件TPM

4.8.2. 设计一套可热迁移的基于TPM的安全系统具有极大的挑战性

4.8.3. 虽然在成熟的零信任网络中建议采用TPM作为设备认证的手段,但不应该将其视为强制需求, TPM的大幅采用并不容易,在零信任架构的采用和迁移方面可以考虑一些其他的折中方案

5. 基于硬件的零信任附件

5.1. 在零信任网络中,支持传统设备的常用方案是采用认证代理

5.2. 认证代理终止与零信任相关的逻辑和操作,并将连接转发至传统主机

5.3. 可以通过一些专用硬件来实现类似功能,这些专用硬件设备作为零信任附件设备,携带一枚TPM芯片,可以直接插入传统设备的以太网端口

 

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

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

相关文章

中山网站建设概述

随着互联网的发展,网站建设已经成为企业和个人在网络上展示自身形象和提供服务的重要途径。中山作为中国的重要城市之一,也在网站建设方面取得了很大的进步。网站建设不仅可以提高企业的知名度和竞争力,还可以提升用户体验,增加客…

Java swing项目汇总

Java swing项目汇总 序号项目名称1(无需数据库)swing推箱子小游戏2(无需数据库)swing学生基本信息管理系统3(无需数据库)仓库管理系统(源码详细注释详细报告)4(无需数据…

linux uos悬浮窗口置顶问题

问题背景 公司软件有一个功能,在PPT播放时,我们软件悬浮窗口需要在WPS幻灯片上层显示,方便客户操作按钮。在window 上我们设置了窗口的topmost 所以能够显示在最前面。如下图所示: 但是在软件适配国产操作系统Linux统信和麒麟在w…

正则表达式 贪婪与非贪婪匹配

目录 一. 回顾二. 遇到的问题三. 分析四. 解决4.1 转换为非贪婪模式匹配4.2 提高匹配的精度 一. 回顾 我们在正则表达式 分组与非捕获组这篇文章中&#xff0c;有如下分组匹配案例 <select name"fruit_console"><option value"apple" selected&…

银河麒麟V10使用vsn

环境:电脑windows11 ,系统银河麒麟V10的,通过堡垒机链接的,vsn也可以通过堡垒机链接,就相当于自己链接的时候不需要输入ip和端口号之类的, 目前银河麒麟机器上已经安装了vsn 步骤1:windows本地机器安装RealVNC https://www.realvnc.com/en/connect/download/viewer…

(三)springboot2.7.6集成activit5.23.0之流程跟踪高亮显示

1.引入diagram-viewer。 上一篇集成流程设计器时已经把diagram-viewer文件夹拷贝过来了。所以这一步就省略了。 2.引入依赖activiti-diagram-rest。 <dependency><groupId>org.activiti</groupId><artifactId>activiti-diagram-rest</artifactId…

设施农业智能化新引擎:AutoML让复杂农业算法唾手可得

&#xff08;于景鑫 北京市农林科学院智能装备技术研究中心&#xff09;近年来,人工智能技术蓬勃发展,大模型呈现出肆意生长之势,为各行各业带来新机遇。AutoML作为新一代自动化机器学习技术,承载着颠覆传统、引领变革的使命,正逐渐成为现代农业的"新宠"。本文将深入…

HCIP学习作业一 | HCIA复习

要求&#xff1a; R1-R2-R3-R4-R5 RIP 100 运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条目数量&#xff0c;R1-R2之间…

Suno声称在受版权保护的音乐上训练模型属于“合理使用“

继美国唱片业协会&#xff08;RIAA&#xff09; 最近对音乐生成初创公司 Udio 和 Suno 提起诉讼之后&#xff0c;Suno 在周四提交的一份法庭文件中承认&#xff0c;该公司确实使用了受版权保护的歌曲来训练其人工智能模型。但它声称&#xff0c;根据合理使用原则&#xff0c;这…

Uni-APP页面跳转问题(十六)

【背景】最近在做公司一个PAD端,谁被点检功能,主要时为了移动端点检设备和打印标签,需求比较简单就是扫描设备二维码,问题在于扫描后要能够重复进行多设备的扫描;早期开发的设备点检能够满足需求但是当连续扫描五六十个设备后,APP卡死,必须重启才能使用。 界面原图: 输…

智慧水务项目(四)django(drf)+angular 18 添加drf_yasg api接口文档

一、说明 文档api接口是必须的 本来准备用coreapi&#xff0c;据说drf_yasg更流弊 二、步骤 1、requirements.txt添加drf-yasg 2、settings.py中添加部分代码 drf_yasg需要与django.contrib.staticfiles配套使用&#xff0c;一般情况下&#xff0c;项目创建都会在INSTALLE…

PCG —— 基础使用

目录 一&#xff0c;基础知识 在关卡添加PCG资产 常见设置 调试 二&#xff0c;基础节点 Surface Sampler Static Mesh Spawner Transform Point Normal To Density Density Filter Bounds Modifier Self Prunning Difference Get Spline Data Spline Sampler …

LeetCode 热题 HOT 100 (015/100)【宇宙最简单版】

【栈】No. 0155 最小栈【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xff01; …

SAP EPPM-CPM(商业项目管理)模块简介

经过十几年的发展&#xff0c;SAP诞生了很多相关管理相关的模块&#xff0c;比如最经典的&#xff0c;无可替代的ERP核心组件之一的PS&#xff08;Project System&#xff09;模块&#xff0c;也有很多年历史的投资组合及项目管理PPM&#xff08;Portfolio Management and Proj…

GE电源维修 服务器 交换机电源维修CAR2512TE

GE电源维修 GV服务器电源维修 交换机电源维修 服务器电源模块维修的时候&#xff0c;我们先需要利用万用表检测一下各功率器件是否存在击穿短路&#xff0c;例如电源整流桥堆、开关管、高频大功率整流管、浪涌电流的大功率电阻是否烧断等&#xff0c;然后需要再检测各输出电压…

Kithara与Dlib (二) - 人脸实时检测

Kithara和Dlib进行人脸实时检测 目录 Kithara和Dlib进行人脸实时检测ResNet (残差网络)流程介绍核心代码性能测试开源源码 ResNet (残差网络) ResNet&#xff0c;全称为Residual Network&#xff08;残差网络&#xff09;&#xff0c;是由何凯明&#xff08;Kaiming He&#x…

飞瓜数据没有视频号爆款视频你就错过了涨粉的最新方法!

为了帮助用户更快的了解用户需求并切入视频号营销中&#xff0c;也为大家提供了更多的垂直类目。 飞瓜数据 飞瓜数据为很多视频平台提供了视频相关的数据服务&#xff0c;但我们发现并飞瓜并没有参与视频号相关的内容仅在视频号直播做了相关的扩展。视频号相关的数据并未提供。…

Java中等题-多数元素2(力扣)【摩尔投票升级版】

给定一个大小为 n 的整数数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;[3] 示例 2&#xff1a; 输入&#xff1a;nums [1] 输出&#xff1a;[1]示例 3&#xff1a; 输入&#xff1a;num…

队列的基本运算(顺序,环形,链式)

以下分别介绍了顺序队列&#xff0c;环形队列&#xff0c;链式队列的基本运算。主要有五种基本运算&#xff1a;1.初始化队列&#xff0c;2.销毁队列&#xff0c;3.判断队列是否为空&#xff0c;4.进队列&#xff0c;5.出队。 目录 顺序队列 环形队列 链式队列 顺序队列与环…

《LeetCode热题100》---<5.③普通数组篇五道>

本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第五道&#xff1a;缺失的第一个正数&#xff08;困难&#xff09; 第五道&#xff1a;缺失的第一个正数&#xff08;困难&#xff09; 方法一&#xff1a;将数组视为哈希表 class Solution {public int firstMissingPosi…