低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

英特尔比拼 AMD,谁的 CPU 更安全?

2019 年 11 月 26 日

英特尔比拼AMD,谁的CPU更安全?

英特尔和 AMD 之间历时数十年的漫长对抗最近来到了一个全新的层面,那就是越来越多的用户开始关心,哪个品牌的处理器可以充分保护自己的计算机、数据和在线活动。



直到最近几年,普通用户和网络安全研究人员主要操心的还是数量庞大的软件漏洞,而这些漏洞似乎永远都不会消失。


但从 2018 年 1 月开始,许多用户和安全研究人员意识到,为我们设备提供动力的硬件并不像我们以前想象的那样安全,它们也有可能出现严重的安全问题。


这就引出了一个问题:哪家企业的产品更安全一些?考虑到英特尔目前有 242 个公开披露的漏洞,而 AMD 只有 16 个(AMD 以 15:1 取胜),这个问题听起来可能有些多余;但是两家公司也都有一整套安全相关的特殊功能组合,值得深入对比一番。


2018 年:处理器安全性的“元”年

2018 年 1 月,谷歌的 Zero 项目安全专家及其他几位独立的安全研究人员,披露了Meltdown和Spectre CPU设计缺陷。这些漏洞源于大多数 CPU 架构团队为了提高其芯片性能而做出的设计选择。


Meltdown 安全缺陷(也称为 Spectre 变体 3)同时影响英特尔和 ARM 的 CPU。它允许第三方代码破坏应用程序与操作系统之间的隔离,这种隔离通常是由硬件实现的。攻击者可以用它来访问其他应用程序和操作系统的内存,从而窃取秘密。


Spectre 漏洞打破了不同应用程序之间的安全边界,甚至使那些遵循最佳编码实践的应用程序也变得脆弱不堪,攻击者可以利用 PC 中的这一旁路(side-channel)安全缺陷对其发起攻击。


Spectre 几乎影响所有使用预测执行来提高性能的乱序架构 CPU,包括 AMD 和 Arm 的处理器。但是,Spectre 系列中新发现的旁路攻击途径似乎对英特尔的影响比对另外两家厂商的更大,这意味着英特尔的 CPU 设计可能比竞争对手更激进,目的是保持性能优势。


预测执行是一种 CPU 设计功能,它使 CPU 可以处理下一步可能需要或不需要的某些任务。如果这些任务的确是需要的,则处理器届时可以更轻松地访问它们,因此具备这一功能的 CPU 的性能表现就更加出色。


所以尽管 Spectre 的特定变体可以通过软件修复甚至可以在硬件中修补,但直到 CPU 制造商决定一劳永逸地完全禁用预测执行功能,或者设计全新的架构之前,研究人员都会不断发现新的漏洞变体。


这不只是理论上的可能性:自从首次披露 Meltdown 和 Spectre 缺陷以来,(不到两年时间内)这种事情已经发生了好几次。


在研究人员首次披露 Spectre 数月之后,另一组安全研究人员准备披露名为“Spectre Next Generation”的新一代预测执行缺陷系列。据称,英特尔曾试图推迟他们的披露计划,因为这家公司在那年早些时候因 Specture 的首次曝光而遭受了巨大的公关打击。


预测执行至少还造成了另外两个错误,即 Foreshadow 和 Zombieload,本质上它们使英特尔的超线程技术不再安全了。OpenBSD 创始人 Theo de Raadt 已警告不要一开始就在英特尔计算机上启用超线程


到了最新的Zombieload漏洞曝光后,谷歌甚至苹果等其他 OS 厂商都加入了 OpenBSD 创始人的行列。谷歌禁用了所有 Chromebook 上的超线程功能,而苹果只是指出要完全修补 Zombieload 和其他微架构数据采样(MDS)漏洞,将需要禁用超线程,选择权在用户手上。


英特尔自己也建议禁用超线程,但仅建议某些“不能保证在其系统上运行的都是受信任软件”的客户禁用。但实际上每个人都在其 PC 或服务器上运行其他人的软件,他们真的可以分辨什么是受信任的,什么不是吗?


攻击面

绝大多数预测执行攻击不会影响 AMD 的处理器,只有少数例外,例如 Spectre 变体 1、1.1 和 4,后者被称为测存储绕行


AMD CPU 也受到 PortSmash 的影响,这是一个影响其同时多线程(SMT)功能的漏洞,该功能类似于英特尔的超线程技术。AMD 处理器还容易受到 NetSpectre 和 SplitSpectre 的攻击,因为这些漏洞影响了处理器,而这些处理器也容易受到 Spectre v1 的攻击。


AMD 的处理器容易受到 Spectre 变体 2 的影响,该公司为此发布了更新,但表示该漏洞“由于我们的架构设计而并不容易被利用。”


在一组研究人员(其中包括一些发现原始 Spectre 和 Meltdown 设计缺陷的研究人员)发现的七种新的 Meltdown 和 Spectre 漏洞中,AMD 的芯片受到其中五种的影响。英特尔的芯片则受到全部七个漏洞的影响。


AMD 的 CPU(包括最新的 Ryzen 和 Epyc 处理器)不受以下漏洞的影响


  • Meltdown(Spectre v3)

  • Spectre v3a

  • LazyFPU

  • TLBleed

  • Spectre v1.2

  • L1TF/Foreshadow

  • SPILER

  • SpectreRSB

  • MDS 攻击(ZombieLoad、Fallout 和 RIDL)

  • SWAPGS


我们可以看到,与英特尔处理器相比,AMD 的 CPU 似乎对预测执行攻击有更高的弹性。但是,与 Spectre v1 高度相似的缺陷似乎也继续影响着 AMD 的处理器。好消息是,在大多数情况下,原版的 Spectre v1 固件修补措施也可以保护这些新的漏洞。


英特尔和 AMD 都针对上述所有缺陷发布了固件和软件补丁,但如果更新流程依赖主板或设备制造商而不是英特尔/AMD 或微软、苹果等 OS 供应商,那么这些修复措施不一定能全部到达用户那里。


综上,在“攻击面”方面,赢家是 AMD。


Spectre 软件修复措施对性能的影响

最初的 Spectre 和 Meltdown 缺陷被公众了解之前,芯片制造商大约提前了六个月的时间发出了警告。这也引发了内部争议,因为并非所有操作系统供应商都能同时了解它们。有些人需要花费几天或几周的时间来解决这些错误。


即使有了 6 个月的准备时间,第一版的修复程序仍然在人们的计算机上造成了很多问题,比如显著降低性能直到引发崩溃。几个月后,一些更新带来了一些改进。


但是,即使这些补丁进行了优化以最大程度地降低性能损失,对于芯片制造商(尤其是英特尔)来说,要为所有 Spectre 系列的漏洞打上补丁,同时将补丁的性能开销降至最低,实现起来是非常困难的。


根据最近的一份报告,英特尔提供的所有必要修补程序使用户的 PC 和服务器的速度大幅下降,下降幅度大约是 AMD 自己的修补程序的五倍。这是一个很大的差距,主要是因为英特尔必须比 AMD 解决更多的安全漏洞。


综上,在“性能损失”方面,赢家是 AMD。



图源:Shutterstock


针对旁路攻击的(某些)硬件修补措施

也许是因为英特尔为 Spectre 级的安全漏洞不得不发布的大批固件和软件修补措施,该公司还改变了对在处理器上添加基于硬件的修补措施的抵触态度。最初,英特尔不太愿意这样做,或者至少不愿对其架构进行重大更改。但它后来开始遵循“安全优先”的原则


在某些层面,该公司履行了这一承诺。英特尔针对 Meltdown 和 Foreshadow 提供了硬件修补措施,并在某些最新的 CPU 中提供了部分 MDS 硬件修补,从Whiskey Lake和Cascade Lake处理器开始


该公司还承诺将对 Spectre v2 进行硬件修复,并已实现了一个同时使用内置硬件和软件的修复程序。英特尔和 AMD 尚未在硬件中修复最危险的预测执行漏洞 Spectre v1。但是,AMD 和英特尔都在软件级别上对 Spectre v1 进行了修补。


在某些情况下,据称英特尔还忽略、轻描淡写或延迟了某些 Spectre 系列漏洞的披露。就 MDS 漏洞而言,据称英特尔希望研究人员淡化MDS攻击的严重性,为此向他们捐赠最高 80,000 美元。学者们拒绝了这个提议。


尚不清楚英特尔有意避免在硬件中修复 Spectre v1 和其他旁路攻击的做法,是因为这种方法代价昂贵,且可能破坏太多东西,还是因为该公司只是在争取一些发布这种处理器的准备时间。


有一件事看来是很清楚的,那就是事实上,用来预防旁路攻击的软件补丁不足以阻止类似的新型漏洞的出现。学术界认为,相比架构设计更改,架构修补带来的长期安全收益并不见得会更高。


因此,如果英特尔、AMD 和其他芯片制造商不愿意改变其 CPU 架构的设计,那么我们可能永远都会被 Spectre 系列的旁路攻击所困扰。



图源:英特尔


但也有一些动向是通过芯片内修复措施来修补某些漏洞。英特尔为 MSBDFallout 和 Meltdown 等许多新漏洞添加了新的基于硬件的修补措施,并为此发布了新步进版本的芯片。英特尔正在悄悄地发布其第 9 代 Core 处理器的新步进版本,为已经出货的型号增加了更多的硬件增强的修补功能。这些内置的修补措施旨在减轻基于软件的 Windows 安全修补程序的性能开销。


同时,AMD 尚未在其已经出货的芯片中增加任何新的硅内修补措施,尽管它正在将这些措施应用于更新的型号中。但值得一提的是,AMD 不需要像英特尔那样需要那么多改动来抵御漏洞,因此它不需要基于硬件的修补程序。因此这一局我们认为 AMD 获胜。


综上,在“硬件修补措施”方面,赢家是 AMD。


英特尔的 ME 和其他安全漏洞

在 Spectre 漏洞被发现之前,甚至之后,英特尔芯片中与隐私或安全相关的问题主要都和英特尔的内置管理引擎相关。尽管其他漏洞可能一样很重要,但所有安全隐患得到的关注都远不及预测执行旁路缺陷。


2017 年,英特尔确认了ME中的一个安全错误,攻击者可以利用该漏洞远程暴露固件,并接管任何采用英特尔技术的计算机。这一错误影响了 2008 年以来生产的所有处理器。


在 2017 年晚些时候,研究人员发现了另一个 ME 缺陷,影响了从 2015 年的 Skylake 到 2017 年的 Coffee Lake 处理器。即使用户可以通过非官方方式禁用 ME,这一缺陷也可以使 ME 保持活动状态,因为用户无法用正常手段禁用 ME。


同年,Positive Technologies 公司的安全研究人员找到了一种方法来禁用英特尔的ME,利用的是英特尔为政府机构秘密实现的一种模式。据称英特尔这样做是为了让 NSA 和其他政府机构禁用 ME 中潜在的脆弱功能,但这些漏洞会影响 PC 市场上的其他所有用户。


研究人员还在 2018 年发现了两套新的ME安全错误,当时英特尔正在忙于应对 Spectre 的后续影响。


由于担心 ME 可能是“官方”后门或可能被恶意团体使用,某些计算机制造商(例如 Purism、Systems 76 甚至戴尔)已开始提供默认禁用 ME 的笔记本电脑。谷歌还开始为其某些内部设备禁用ME


在撰写本文时,有242个公开披露的英特尔固件漏洞


AMD 的 PSP、Ryzenfall、Chimera 和其他 CPU 缺陷

AMD 平台安全处理器(PSP),也称为 AMD 安全处理器,使用一颗 Arm Cortex-A5 处理器来将某些芯片平台功能与主处理器和主操作系统隔离开来。它就像是 AMD 版本的 ME,并且与 ME 一样,如果恶意团体发现其中的错误,这些错误也有可能被利用并产生毁灭性的影响。


自 2017 年以来,人们至少发现了三个 PSP 漏洞。一位谷歌安全研究人员在 2017 年发现了一个漏洞。该漏洞可能使攻击者能够访问密码、证书和其他敏感信息。


在 2018 年人们发现了其他一些 PSP 错误,并披露了总共 13 个安全缺陷,影响了 AMD 基于 Zen 核心的处理器。研究人员将它们分为四类:Ryzenfall、Chimera、Fallout 和 Masterkey。


根据研究人员的说法,Ryzenfall 错误会使攻击者完全控制 AMD 安全处理器。再结合名为 Masterkey 的错误,攻击者还可以在目标计算机上安装持久性恶意软件。


Chimera 错误涉及两个来自制造商 ASMedia 的芯片组后门,一个在固件中,另一个在芯片组的硬件(ASIC)中。这些后门允许将恶意代码注入 Ryzen 芯片组。


Fallout 缺陷使攻击者可以读写受保护的内存区域,例如 SRAM 和 Windows Credential Guard 隔离内存。


AMD 基本上淡化了这些错误的影响,称在大多数情况下,攻击者需要对机器的物理访问权才能利用这些安全漏洞。但在 CVE Details 数据库中,我们可以看到其中多数漏洞都有很高的严重等级



图源:Tom’s Hardware


AMD 已向其所有受影响的 OEM 和 ODM 发行了补丁程序,但通常是这些公司来负责修补用户的计算机,这会导致支持并不统一。


研究人员还发现,AMD 针对 Epyc 服务器芯片的安全加密虚拟化(SEV)功能有时是不安全的。第一个 SEV 漏洞是作为前面提到的 Masterkey 漏洞的一部分披露的。研究人员表示,可以利用 Masterkey 错误来破坏 SEV 和固件可信平台模块(fTPM)的安全性。


仅在几个月后的 2018 年 5 月,另一组研究人员披露了第二个 SEV 漏洞,即SEVered。该漏洞可能使攻击者能够远程提取通常由 SEV 保护的虚拟机内存内容。


一位谷歌研究人员在今年初发现了最新的SEV漏洞。该漏洞使攻击者可以提取 SEV 功能使用的加密密钥,这种密钥是用来加密受保护 VM 的内存内容的。


换句话说,这是大约一年来第三次证明 SEV 无法完成其职责——也就是保护 VM 内存。这并不一定意味着英特尔类似的 SGX 功能取得了优势,因为后者也被发现有一些由于Spectre系列旁路CPU缺陷而导致的弱点


综上,在“其他 CPU 安全缺陷”方面,两家打成平局。


最佳的英特尔 CPU 安全功能

对于现代处理器的安全性来说,我们听到的并不都是坏消息。在研究人员披露了第一个 Spectre 漏洞之后,英特尔承诺将安全性放在首位——尽管这是一个新开始的计划。


如前所述,该公司已承诺减轻硬件中 Spectre 漏洞的危害,其中许多漏洞已经出现在了当今时代的处理器中。


但这些只是对一开始就不应该出现的问题的小规模修复,我们正在寻求的是安全性,而不是修复已破坏的架构。那么,关于用户安全性问题,英特尔处理器还能提供什么呢?



图源:Shutterstock


英特尔 SGX

Software Guard eXtensions 可能是英特尔近年来发布的最受欢迎,也是最先进的处理器安全功能。SGX 使应用程序可以将加密密钥之类的敏感数据,存储在主操作系统或其他第三方应用程序无法访问的,硬件加密的 RAM 中的安全虚拟区域中。端到端加密的Signal Messenger这类应用程序都利用了它,以便安全私密地配对用户。


英特尔 TME/MKTME

英特尔最近还宣布了改进 SGX 的计划,以便它可以提供全内存加密(TME),而不是只加密一小部分内存。新功能实际上是两个功能合二为一的结果:TME 为所有内存提供一个加密密钥,而另一种称为“多键全内存加密”的变体提供了——你猜到了——支持多个密钥的全内存加密,例如每个加密的 VM 都有一个密钥。


MKTME 可以在内存空闲时以及传输过程中进行加密。英特尔推出这一功能的时间晚于 AMD 的类似技术,也许该公司从竞争对手的 SEV 和他们自己 SGX 的错误中吸取了教训。


硬件级内存加密将为用户带来显著的安全优势,因为这会使应用程序更难从其他应用那里窃取数据(加上操作系统也对允许应用程序共享数据的 API 进行了严格限制)。但是,目前尚不清楚英特尔和 AMD 是否打算将此功能保留给企业客户使用,是否会为主流用户启用。


最佳的 AMD CPU 安全功能

由于英特尔在 SGX 的发布上对 AMD 取得了领先,后者在存储加密方面可能已经迟了一步。但是当 AMD 推出 Ryzen 处理器时,这些处理器既具有安全内存加密(SME)功能,又具有安全加密虚拟化(SEV)功能,这些功能已经并且仍然比英特尔先进得多。


AMD SME

SME 功能通常在引导时在 BIOS 或其他固件中启用。它使用通过硬件随机数生成器生成的单个临时 128 位 AES 加密密钥,提供页面粒度的内存加密支持。SME 使应用程序可以标记用来加密的某些内存页。


然后,当应用程序需要读取或写入数据时,将自动对这些页面进行加密和解密。该功能可对抗一种物理攻击,其旨在窃取仍驻留在纯文本 RAM 中的敏感客户数据。


AMD TSME

AMD 的透明 SME 是 SME 的更严格子集,默认情况下会加密所有内存,并且不需要应用程序以自己的代码来支持它。这对代码不会再更改的旧版应用程序而言尤其重要,这些程序处理的数据被加密后就更加安全。


AMD 似乎最近将 TSME 重命名为了“Memory Guard”,并将其作为该公司新的Ryzen Pro 3000 系列CPUGuardMI特性的一部分。GuardMI 是 AMD 英特尔 vPro 的竞品特性,后者包括面向企业客户的可管理性和安全性功能。AMD 目前领先英特尔的一项功能是 Memory Guard,它可以保护系统数据免受冷启动攻击。


AMD SEV

AMD 的 SEV 是 SME 的扩展,它使用自己的临时加密密钥对每个 VM 的内存进行加密。这样,VM 可以保持彼此完全隔离。AMD 在为索尼和微软的游戏机开发安全功能时提出了这个想法。


实际上,像英特尔的 SGX 一样,SEV 仍然容易受到旁路攻击或其他利用加密密钥访问的攻击影响。想要确保这些功能基本不再受漏洞影响的话,AMD 和英特尔仍有许多工作要做。


综上,在“最佳安全性能”方面,赢家是 AMD。



图源:AMD


为什么处理器安全性很重要

为什么你还要关心处理器安全性呢?Windows、macOS 或 Linux 的安全功能还不够吗?答案是:不,只靠它们还不够;是的,你也可能受到这些错误的影响。需要担心这些攻击的不仅仅是数据中心和 Web 托管企业。


首先,硬件运行在比操作系统更底层的级别上。换句话说,硬件可以控制运行在其上的软件所完成的工作。因此,如果有人接管了硬件,则意味着他们现在也可以控制操作系统和应用程序所执行的操作。攻击者可以控制这些安全功能的工作方式或完全禁用这些功能。


其次,即使没有人会试图通过网络专门攻击你,但你仍然可能成为大规模恶意软件感染的受害者,这些恶意软件会通过广告网络、你访问的被黑网站和工作中的内部网络等渠道传播。硬件漏洞可能是整个漏洞工具链攻击目标的一部分,这些工具的主要目标是:窃取他们遇到的任何人的数据。


如果你不能保证设备中硬件的安全性,那么你最喜欢的操作系统或应用程序的所有安全性功能基本上都失去了意义。这就是为什么苹果和谷歌已经开始构建自己的服务器,或不再从不太值得信赖的服务器硬件提供商那里购买产品的原因。两家公司都在软件方面实现了一流的安全性,但如果他们使用的硬件中存在后门,那么这些功夫都会白费。


英特尔与 AMD 的处理器安全性结论

从短期来看,尽管两家公司尽了最大的努力,但在 AMD 和英特尔的处理器都做出真正的改进之前,情况可能会变得更糟。是的,我们可能会获得更多的硬件修补措施——也许足以使大部分消费者和媒体满意,但鉴于改变主流处理器架构所涉及的所有困难和成本太高了,这些修补措施还不足以解决所有的问题。


在未来的几年中,我们还将从英特尔和 AMD 那里获得一些有趣的全新安全功能。但是,随着越来越多的研究人员开始更深入地研究他们的 CPU 微架构,未来几年中,在两家公司的处理器中发现的安全漏洞的报告可能会充斥我们的视野。


两家公司也将花费多年的时间来修复研究人员在新架构设计中发现的缺陷。最后,一切都应该会变得更好,因为这些工作将迫使处理器变得更加成熟。


但是问题仍然存在:谁能制造最安全的处理器,从而为你营造最安全的在线环境?我们可以探讨一下研究人员是否更注意来自英特尔的安全漏洞,因为他们的芯片卖的更多;但归根结底,有一些事情是不可否认的:


  1. 英特尔目前有 242 个公开披露的漏洞,而 AMD 只有 16 个。AMD 以 15:1 取胜。差距太大了,根本没法忽略。

  2. 自 2018 年初以来,针对英特尔披露的预测执行旁路攻击漏洞中,似乎只有不到一半影响了 AMD 的 Ryzen 和 Epyc CPU。确实,在某些漏洞被宣布会影响英特尔的 CPU 的情况下,研究人员可能并不会太关注 AMD 的 CPU。但即便如此,AMD 在仔细检查这些漏洞是否会影响其自身的处理器之后,仍然确认这些错误不会对其产品造成影响。实际上,AMD 似乎在设计新的 Ryzen 微架构时,比英特尔本质上基于 Nehalem 的微架构更注重安全性。为什么说英特尔的微架构都是以 Nehalem 为基础?因为大多数预测执行攻击都会影响英特尔自 2008 年以后发布的 CPU,也就是 Nehalem 架构之后的所有产品。

  3. 随着新一代 Zen 架构的发布,在支持新的硬件加密功能方面,AMD 似乎也领先于英特尔。AMD 是否会在安全性方面保持这种领先还有待观察,因为英特尔试图解决所有 Spectre 问题并改善其在消费者中的形象,但至少目前看来,AMD 似乎处于领先地位。


即使不考虑与 Spectre 相关的补丁对新旧系统造成的各种性能下降问题,AMD 的处理器似乎还是在近期和中期范围内更安全的平台之选。



原文链接


https://www.tomshardware.com/features/intel-amd-most-secure-processors


2019 年 11 月 26 日 08:001479
用户头像
张之栋 前InfoQ编辑

发布了 91 篇内容, 共 34.8 次阅读, 收获喜欢 152 次。

关注

评论 1 条评论

发布
用户头像
这就好比 windows和Linux 一样. 用的人多了 肯定暴露的问题也就多了 ,其实随着时间的推移 肯定都是挺多的
2019 年 11 月 26 日 14:23
回复
没有更多了
发现更多内容

charles断点使用方法

rainbow

脑洞:基于DDD进行组织架构治理

Winfield

组织转型 领域驱动设计 DDD

阿里取消周报,打击低效加班!HR透露6大原因!

程序员生活志

阿里 周报

揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇

vivo互联网技术

vue.js 中台 Vue 业务中台

Java 基础

Bruce Duan

java基础

SpringBoot教程:MyBatis多数据源配置

Bruce Duan

mybatis SpringBoot 2 多数据源配置

架构师Week7作业2

Nan Jiang

SQL查找还在用count吗?

Bruce Duan

SQL查询是否存在

JVM系列之:Contend注解和false-sharing

程序那些事

Java JVM 性能调优 GC

一文入门DNS?从访问GitHub开始

Kerwin

后端 DNS DNS服务器

第七周作业

晨光

lambda基本使用

Bruce Duan

Lambda

云上自动化 vs 云上编排

华为云开发者社区

云计算 云原生 云服务 云主机 华为云

爱币(LOVE COIN)全球同步耀世上线,掀起币圈追捧热潮

Geek_116789

ChaosBlade:从零开始的混沌工程(四)

郭旭东

云原生 混沌工程 ChaosBlade

第七周总结

晨光

架构师 第七周总结

冯凯

Week 07 命题作业

Jeremy

新站上线通知

Damon

go defer 的使用和陷阱

曲镇

go

程序设计的一种思路:DDD

再见小飞侠

方法论 DDD 软件设计

架构师Week7作业1

Nan Jiang

架构师第七周 作业

冯凯

作业一

Kiroro

Week 07 学习总结

Jeremy

你在寻找本地部署的后台测试工具吗?

测试那些事儿

Summary

Kiroro

一文吃透时间复杂度和空间复杂度

书旅

数据结构 算法 时间复杂度 数据结构与算法

k8s 上运行我们的 springboot 服务之——flume 读取kafka数据批量同步到clickhouse

柠檬

kafka Clickhouse

干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动

华为云开发者社区

人工智能 物联网 IoT 智能设备 华为云

List 如何一边遍历一边删除

Bruce Duan

List删除元素

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

英特尔比拼AMD,谁的CPU更安全?-InfoQ