0 引言

在安全领域,其实并没有一个比较明确的定义划分。这和安全(Security)本身并不是一个可以简单结构化构建的领域有关。在不同的领域,我们需要研究的范围并不相同(但时常交叉)。例如,在网络领域,我们需要关注网络空间安全;在安全工具中,我们需要研究密码学。

但是,作为计算系统的通用核心,却没有一个明确的“CPU安全”的介绍/综述,即从CPU的设计角度,如何构建安全能力。当我们提到“CPU安全”,却似乎并没有什么违和(好吧,我承认还是有点违和的),当我们提到CPU安全时,我们指的是什么呢?可信环境?侧信道安全?还是内存安全?因此本系列打算从CPU设计的角度,梳理CPU安全相关的方方面面,说清楚CPU安全到底包含那些方面,以及不同方面的不同逻辑。

另一个笔者打算编写本系列的原因是,安全方向上的逻辑与其他方向上完全不同。在其他领域上是专家的人也很难在安全领域直接使用相同的逻辑理解安全问题。因为攻击产生的本质是“使用意想不到的方式去使用能力”。在没有安全概念的人眼中,许多安全问题的逻辑是无法理喻的(他没有权限凭什么能够读取我的数据?为什么Arm在可信计算在不受信任的EL2上要增加一层EL3就安全了?那以后它再不信任EL3还要再加一层EL4吗?)。这就需要我们用简单的解释来说明这些安全逻辑到底是什么样的。

本系列的宗旨是使用尽量简单的,细节无关的方式,并结合实际案例来讲清楚CPU安全相关的方方面面。尽量抛弃对其他基础知识的依赖,这样即使不了解信息安全的,甚至不了解计算机基础知识的读者也可以快速掌握安全逻辑。这样也可以去除无关的细节,只关注问题的本质。当然,为了能够让专业读者也有一定的收获,每一章深入细节的部分仍然不可避免会需要一些基础知识,笔者会注明这些章节。

Note

我为什么要讲的如此通俗易懂,有几个原因:

  1. 扩大受众,过于专业就失去了趣味性
  2. 如何让非安全行业理解安全逻辑非常重要
  3. 过于接近技术细节,让很多人(即使从业者)也忘记了安全本身的逻辑
  4. 一个问题是否学习清楚的评判标准就是你是否能够用所有人都能听懂的方式讲述它,这对我自己也是个挑战

本系列的面向读者:

  • CPU架构设计师
  • ISA设计师(这似乎很少)
  • 软件安全从业者,希望了解CPU相关安全设计的读者
  • 非安全从业者,但希望了解计算产品安全逻辑的
  • 完全不懂计算机,但是觉得黑客酷酷的不知道什么原理
  • 每天被“栈溢出”,“Segment Fault”折磨的死去活来(比如我),但是不知道是什么意思的人(好在我知道)

本系列打算讨论的问题:

  • CPU的安全分为哪几个方面?我们需要做到哪些才能对一个CPU的安全有何种的承诺?
  • 各种CPU安全特性分别属于哪些方面的安全问题,他们是如何生效的?
  • 什么样的产品场景需要考虑哪些CPU相关的安全问题?
  • 软件安全的视角和体系结构设计上安全视角有何不同?

本系列讲不会讨论的问题:

  • 关于Safety概念的“安全”,我们仅考虑针对恶意攻击的安全
  • 具体的密码学原理
  • 对芯片进行物理接触,物理破坏的攻击类型
  • 计算机体系结构的基础知识
  • 可以非常简单检索到的内容

即我们不是知识的搬运工😊,我们只是兴趣使然的讲述者~

如何参与: 如果你希望参与或讨论,可以直接在本系列的GitHub中参与。在正文中会注明你的贡献~