MIT 6.5950 安全硬件设计 – 一个关于硬件攻击的开源课程
Skip to main content Link Menu Expand (external link) Document Search Copy Copied MIT Secure Hardware Design
This site uses Just the Docs, a documentation theme for Jekyll.
Secure Hardware Design
MIT 的安全硬件设计课程 (6.5950/6.5951) 是一个开源课程,旨在教授学生如何攻击现代 CPU 以及如何设计能够抵御这些攻击的架构。学生将获得攻击真实处理器的实践经验,并学习各种最先进的硬件攻击和防御技术。
本课程是多年工作的结晶。在此处浏览我们的故事。
Meet the Team
安全硬件设计课程是多年来一个学生团队努力的成果。向幕后英雄们问好!
Think, Play, Do.
我们的课程理念包含三大支柱——Think(思考)、Play(玩耍)、Do(实践)。
Think
在课堂上,我们鼓励学生批判性地思考硬件安全,将其作为更大系统的一部分。 我们的讲座旨在引导批判性思维,并鼓励大家参与研究文献。
Topic | Lecture Materials
---|---
Microarchitectural Attacks |
- Side channels introduction 🔨
- Cache side channel deep dive 🔨
- Transient execution attacks (Spectre, Meltdown)
- Side channel defenses
Physical security |
Hardware support for software security |
Tools for security assurance |
The 🔨 icon means this lecture features an in-class demo. Please send requests for powerpoint files to Mengjia.
Play
在 Recitation 中,我们鼓励学生通过互动式的动手游戏来玩转课程材料。 我们的 Recitation 由互动式学习课程组成,利用夺旗赛 (CTF) 形式,在学生之间展开友好的竞赛。 学生们组队与同伴合作,共同克服各种挑战。
Topic | Content | Format
---|---|---
C/C++ Recitation | 简要回顾 C/C++ 语法和有用的特性。 | CTF
Cache Attack Recitation | 以可视化方式概述在自定义 RISC-V CPU 上的 prime+probe。 | Group Learning
Physical Attacks Recitation | 学生们一起实现针对真实微控制器的时序侧信道攻击。 | CTF
RISC-V System Programming Recitation | 概述 RISC-V 的特权 ISA 规范,重点介绍异常处理和中断条件。 | CTF
Formal Verification Recitation | 学生学习形式化验证技术的基础知识。 | Group Learning
Do
在 Labs 中,学生们有机会将课堂上的概念付诸实践。攻击实验涉及在真实硬件上实施课堂上讲授的攻击。 没有模拟器,没有花招,没有废话。 在真实硬件上进行真实实施。
“我如何在我的课堂上使用你们的材料?”
每年,我们都会更新课程,以反映硬件安全领域不断变化的研究情况。 所有这些 Labs 都是开源的,可以免费使用。 只需在使用前发送电子邮件至 hw-sec-lab-dev
at mit dot edu,我们就可以为您提供讲师的解决方案和起始成绩册。 如果您确实在课堂上使用了我们的材料,请务必在您的课程网页上注明出处。
Lab | Difficulty | Setup
---|---|---
Cache Side Channels | | Hard | x86_64 Linux 服务器。 需要进行一些调整。 我们使用 Cascade Lake。
Spectre | | Medium | x86_64 Linux 服务器。
Website Fingerprinting | | Easy | 任何现代 Web 浏览器 (Chrome, Firefox, Safari)。
Rowhammer | | Hard | x86_64 Linux 服务器。 需要进行一些调整以匹配您的硬件。
ASLR Bypasses | | Easy | x86_64 Linux 服务器。
CPU Fuzzing | | Medium | x86_64 Linux 服务器。
Cache Side Channels (Dead Drop)
学生们首先构建用于测量缓存访问延迟和检查微架构细节的原语。 接下来,他们将在现代缓存层次结构上实现 Prime+Probe,这需要对缓存几何结构有透彻的了解。 最后,他们实现一个隐蔽通道聊天客户端,展示了对在集合关联结构上创建争用的精通程度。
Spectre
学生们针对用户空间和内核空间之间的共享内存实现 Flush+Reload 攻击。 然后,他们扩展他们的攻击,使其在推测下工作,在越来越困难的利用场景中将内核内存泄漏回用户空间。
Website Fingerprinting
我们首先教学生使用 JavaScript 实现缓存占用攻击,以分析不同的网站。 接下来,指导学生使用机器学习来区分这些网站,这些网站基于使用 JavaScript 收集的跟踪数据。 最后,我们要求学生稍微改变攻击方式,并思考攻击的根本原因。
Rowhammer
学生学习在野外实施 Rowhammer 的基本步骤。 我们指导学生完成两级地址转换:虚拟地址 -> 物理地址 -> DRAM 位置。 首先向学生提供易受攻击的行和锤击行的物理地址,他们将很快看到野外的位翻转。 然后,要求学生对 DRAM 银行业务功能的一些缺失部分进行逆向工程,以搜索未知的易受攻击的行。
ASLR Bypasses
学生使用各种攻击(包括使用操作系统和微体系结构侧信道)来击败 ASLR。 然后,他们使用泄漏的 ASLR 滑动来实现代码重用攻击 (ROP)。
CPU Fuzzing
这是我们的顶点开放式设计项目。 学生的任务是通过实施系统软件并创建自定义指令模糊器来发现真实 CPU RTL 设计中的错误。 他们可以随意实现此模糊器,只要它可以捕获处理器异常并自动发现后门即可。