seL4的形式化验证步骤是啥是否对已知的所有攻击形式免疫
本来是想偷懒看大牛总结的,不过看来都太忙。自问自答,抛砖引玉吧。
seL4的形式验证步骤,看http://ssrg.nicta.com.au/publications/papers/Klein_EHACDEEKNSTW_09.pdf 里写的是:
写出IPC、syscall、调度等所有微内核对象的抽象规范Abstract Specification(in Isabelle)。写出如上对象的可执行规范Executable Specification(in Haskell),并证明其正确实现了第一步的抽象规范。手写C实现。通过一个SML写的C-Isabelle转换器,和Haskabelle联合形式证明C代码和第二步的Haskell定义语义一致。 证明方法可概述为:构建一个机器模型,模型中包含寄存器、内存、IRQ、cache等所有可被代码影响的硬件。然后证明对抽象规范每一步状态转换,可执行规范都产生唯一对应的状态转换(换言之,两个状态机等价)。 该转换器据称精确(对验证而言)实现了绝大部分C99规范但不是全部。为此(及形式验证的需要)对seL4里使用C进行了如下限制:1,栈变量不得取引用,必要时以全局变量代替;2,因为C99不定义函数调用时参数求值的顺序,限制所有函数参数必须事先显式求值;3,禁止函数指针。此外,该转换器不支持union,因为kernel编程对精确的要求,他们另外写了一个工具实现所有bitfield的需求,生成数组并直接内联进对应架构编译后的汇编代码。
【seL4的形式化验证步骤是啥是否对已知的所有攻击形式免疫】 对已知攻击的防御,从http://ertos.nicta.com.au/research/l4.verified/proof.pml 来看有:
缓冲区溢出解引用空指针指针类型错误内存泄漏(含野指针)算术溢出及其导致的异常(超过32位边界等等)seL4开发者很骄傲的表示这些都是does not occur in seL4的,当然我还没看懂不敢背书。是否还有其他类型的攻击没防御到就等黑客界大牛过来点评了。
推荐阅读
- 兰州启动进口冷链食品监管总仓“出仓”须查验证明
- python 爬虫,咋获得输入验证码之后的搜索结果
- 330余万台老年机“中毒”了 验证码被暗中收集售卖
- aes对称加密,需要加签名验证防止篡改吗如果需要该咋签名才是最好的方案
- 为了验证流量不清零,有多少人会像我一样赶在十月底把流量充满
- 区块链中merkle树是怎样验证的,它的具体运行机制是
- 老年机|一台收不到验证码的老年机 竟让警方揪出一个庞大犯罪网络
- ios更新验证总失败
- 网络验证系统那个好啊
- 汽车|国创中心与北汽蓝谷开源整车验证平台签约落地
