【24h】

Secure Distributed Programming with Value-Dependent Types

机译:基于值的类型的安全分布式编程

获取原文
获取原文并翻译 | 示例

摘要

Distributed applications are difficult to program reliably and securely. Dependently typed functional languages promise to prevent broad classes of errors and vulnerabilities, and to enable program verification to proceed side-by-side with development. However, as recursion, effects, and rich libraries are added, using types to reason about programs, specifications, and proofs becomes challenging. We present F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming. Unlike prior languages, F* provides arbitrary recursion while maintaining a logically consistent core; it enables modular reasoning about state and other effects using affine types; and it supports proofs of refinement properties using a mixture of cryptographic evidence and logical proof terms. The key mechanism is a new kind system that tracks several sub-languages within F* and controls their interaction. F* subsumes two previous languages, F7 and Fine. We prove type soundness (with proofs mechanized in Coq) and logical consistency for F*. We have implemented a compiler that translates F* to .NET bytecode, based on a prototype for Fine. F* provides access to libraries for concurrency, networking, cryptography, and interoperability with C#, F#, and the other .NET languages. The compiler produces verifiable binaries with 60% code size overhead for proofs and types, as much as a 45x improvement over the Fine compiler, while still enabling efficient bytecode verification. To date, we have programmed and verified more than 20,000 lines of F* including (1) new schemes for multi-party sessions; (2) a zero-knowledge privacy-preserving payment protocol; (3) a provenance-aware curated database; (4) a suite of 17 web-browser extensions verified for authorization properties; and (5) a cloud-hosted multi-tier web application with a verified reference monitor.
机译:分布式应用程序难以可靠,安全地编程。依赖类型的功能语言有望防止出现大范围的错误和漏洞,并使程序验证与开发并行进行。但是,随着递归,效果和丰富库的添加,使用类型来推理程序,规范和证明的过程变得充满挑战。我们介绍F *,这是一种用于安全分布式编程的新型依赖类型语言的完整设计和实现。与以前的语言不同,F *提供了任意递归,同时保持了逻辑上一致的核心。它可以使用仿射类型对状态和其他影响进行模块化推理;并且它支持混合使用加密证据和逻辑证明条款的精化属性证明。关键机制是一种新型系统,该系统可以跟踪F *中的多个子语言并控制它们的交互。 F *包含两种以前的语言,即F7和Fine。我们证明类型的健全性(用Coq机械化证明)和F *的逻辑一致性。我们已经基于Fine的原型实现了将F *转换为.NET字节码的编译器。 F *提供对库的访问,以实现并发,联网,加密以及与C#,F#和其他.NET语言的互操作性。编译器生成可验证的二进制代码,用于证明和类型的代码大小开销为60%,与Fine编译器相比提高了45倍,同时仍可进行有效的字节码验证。迄今为止,我们已经编程并验证了20,000多行F *,包括(1)多方会议的新计划; (2)零知识隐私保护支付协议; (3)出处识别的策展数据库; (4)一套经过验证的17个Web浏览器扩展,用于授权属性; (5)具有经过验证的参考监视器的云托管的多层Web应用程序。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号