对我来说,实现完全分区隔离是微控制器单元 (MCU) 系统安全的圣杯,因为黑客在与系统其余部分完全隔离的分区内部几乎无能为力。使用内存管理单元 (MMU)实现进程之间的完全隔离相对容易,但需要耗电的处理器来实现可接受的进程切换时间,而且在任务级别并不合适。使用内存保护单元 (MPU) 实现 MCU 的完全分区隔离是可能的,但难度很大。
这是讨论如何在 MCU 系统中实现完全分区隔离的系列论文中的第一篇。关于 MPU 的论文很多。参考 1 是让·拉布罗斯 (Jean Labrosse) 写得特别好的对该主题的介绍,我建议您在本文之前阅读它,作为 MPU 概念的介绍。参考文献 2 和 3 也很有帮助。参考文献的主要问题。1 是它不足以实现完全分区隔离。然而,在本系列的几个地方回顾了它的内容,以说明不同方法对 MPU 使用和分区隔离的其他方面的影响。
比赛计划
你可能是一个非常好的程序员。但是,要编写不可破解的代码,您不应假设:
你比黑客聪明,也不是那个
你可以向黑客隐藏你的代码中的缺陷,或者
小概率是安全的。
关于后者,假设有一个小缺陷,您估计在一百万次尝试中只能破解一次。安全,对吗?错误的!为便于讨论,假设您有一个只有 50 MHz 时钟的慢速马车,并且每秒只能执行大约 10M 条指令。还假设攻击您的缺陷需要大约 100 条指令。然后黑客需要大约 1000 秒或 17 分钟才能闯入!所以,你最好修复它。
毫无疑问,您可以编写少量的防黑客代码。但是以这种方式编写整个系统显然是不切实际的——这将花费太长时间并且花费太多资金。底线是我们需要一种更好的方法来编写嵌入式系统代码。呈现这样一种方法论是本系列文章的目的。
让我们开始吧
图 1 显示了一个典型的嵌入式系统的结构。没有结构,