一句话:提出带引用的高阶渐进安全类型语言 GSL_Ref,仅靠类型标注统一静态与动态安全检查,并支持对所有程序进行静态非干涉推理。
在安全类型语言中,类型可静态保证函数参数与结果等值之间的非干涉性,但全面采用静态安全类型往往需要大规模重构。已有混合静态/动态检查的语言大多只在程序完全静态安全时才支持基于类型的非干涉推理,且依赖显式 cast,不符合渐进类型由类型标注精度驱动隐式检查的愿景。本文提出 GSL_Ref:一种带引用的高阶渐进安全类型语言。它无需显式 cast,仅由类型标注控制静态到动态安全检查,并允许类型对所有程序(含动态检查程序)静态推理终止不敏感非干涉。作者证明 GSL_Ref 满足 Siek 等人渐进类型准则中除动态渐进保证外的所有条件,并区分句法类型安全与语义类型可靠性。
In security-typed programming languages, types statically enforce noninterference between potentially conspiring values, such as the arguments and results of functions. But to adopt static security types, like other advanced type disciplines, programmers face a steep wholesale transition, often forcing them to refactor working code just to satisfy their type checker. To provide a gentler path to security typing that supports safe and stylish but hard-to-verify programming idioms, researchers have designed languages that blend static and dynamic checking of security types. Unfortunately, most of the resulting languages only support static, type-based reasoning about noninterference if a program is entirely statically secured. This limitation substantially weakens the benefits that dynamic enforcement brings to static security typing. Additionally, current proposals are focused on languages with explicit casts and therefore do not fulfill the vision of gradual typing, according to which the boundaries between static and dynamic checking only arise from the (im)precision of type annotations and are transparently mediated by implicit checks. In this article, we present GSL Ref , a gradual security-typed higher-order language with references. As a gradual language, GSL Ref supports the range of static-to-dynamic security checking exclusively driven by type annotations, without resorting to explicit casts. Additionally, GSL Ref lets programmers use types to reason statically about termination-insensitive noninterference in all programs, even those that enforce security dynamically. We prove that GSL Ref satisfies all but one of Siek et al.’s criteria for gradually-typed languages, which ensure that programs can seamlessly transition between simple typing and security typing. A notable exception regards the dynamic gradual guarantee, which some specific programs must violate if they are to satisfy noninterference; it remains an open question whether such a language could fully satisfy the dynamic gradual guarantee. To realize this design, we were led to draw a sharp distinction between syntactic type safety and semantic type soundness , each of which constrains the design of the gradual language.
DOI 原文 ·
@article{paperbot307,
title = {Type-Driven Gradual Security with References},
author = {Matías Toro and Ronald Garcia and Éric Tanter},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {40},
number = {4},
year = {2018},
doi = {10.1145/3229061}
}