Hardware-assisted reference monitoring is receiving increasing attention as a way to improve the security of existing software. One example is the PIPE architecture extension, which attaches metadata tags to register and memory values and executes tag-based rules at each machine instruction to enforce a software-defined security policy. To use PIPE effectively, engineers should be able to write security policies in terms of source-level concepts like functions, local variables, and structured control operators, which are not visible at machine level. It is the job of the compiler to generate PIPE-aware machine code that enforces these source-level policies. The compiler thus becomes part of the monitored system's trusted computing base -- and hence a prime candidate for verification. To formalize compiler correctness in this setting, we extend the source language semantics with its own form of user-specified tag-based monitoring, and show that the compiler preserves that monitoring behavior. The challenges of compilation include mapping source-level monitoring policies to instruction-level tag rules, preserving fail-stop behaviors, and satisfying the surprisingly complex preconditions for conventional optimizations. In this paper, we describe the design and verification of Tagine, a small prototype compiler that translates a simple tagged WHILE language to a tagged register transfer language and performs simple optimizations. Tagine is based on the RTLgen and Deadcode phases of the CompCert compiler, and hence is written and verified in Coq. This work is a first step toward verification of a full-scale compiler for a realistic tagged source language.


翻译:作为改善现有软件安全的一种方式,硬件辅助参考监测正日益受到越来越多的关注。例如PIPE架构扩展,该架构扩展将元数据标记附加在登记和存储值上,并在每部机器指令中执行基于标签的规则,以强制执行软件定义的安全政策。为了有效地使用PIPE,工程师应该能够根据源级概念,如功能、本地变量和结构化控制操作器等在机器一级无法见的功能、本地变量和结构化控制操作器等,制定安全政策,这是编译者的工作,它生成了现实的PIPE认知机器代码,以强制实施这些源级政策。因此,编译者成为了受监测系统信任的计算基础的一部分,因此成为了核查的主要候选者。为了正式确定该设置的编译者正确性,我们扩展了源语言语的语系,以用户指定的基于标签的监测方式监测,显示编译者保留了这种监测行为。编译工作的挑战包括绘制源级监测政策,以指导级规则,保存故障源源,以及满足常规调整的复杂先决条件。在本文上,我们描述用于标记和校订的简单语言校程的校订和校订的校订的校订阶段,这是一个基于标准的校订和校订的校订的校程的校订的校订。

0
下载
关闭预览

相关内容

编译器(Compiler),是一种计算机程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。
Linux导论,Introduction to Linux,96页ppt
专知会员服务
78+阅读 · 2020年7月26日
【阿里巴巴-CVPR2020】频域学习,Learning in the Frequency Domain
Stabilizing Transformers for Reinforcement Learning
专知会员服务
59+阅读 · 2019年10月17日
强化学习最新教程,17页pdf
专知会员服务
176+阅读 · 2019年10月11日
MIT新书《强化学习与最优控制》
专知会员服务
276+阅读 · 2019年10月9日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
RL 真经
CreateAMind
5+阅读 · 2018年12月28日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
spinningup.openai 强化学习资源完整
CreateAMind
6+阅读 · 2018年12月17日
【推荐】SVM实例教程
机器学习研究会
17+阅读 · 2017年8月26日
强化学习族谱
CreateAMind
26+阅读 · 2017年8月2日
Arxiv
0+阅读 · 2021年2月22日
Arxiv
0+阅读 · 2021年2月9日
Symbolic Priors for RNN-based Semantic Parsing
Arxiv
3+阅读 · 2018年9月20日
VIP会员
相关资讯
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
RL 真经
CreateAMind
5+阅读 · 2018年12月28日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
spinningup.openai 强化学习资源完整
CreateAMind
6+阅读 · 2018年12月17日
【推荐】SVM实例教程
机器学习研究会
17+阅读 · 2017年8月26日
强化学习族谱
CreateAMind
26+阅读 · 2017年8月2日
Top
微信扫码咨询专知VIP会员