首页 > 最新文献

ACM Transactions on Programming Languages and Systems最新文献

英文 中文
Armada: Automated Verification of Concurrent Code with Sound Semantic Extensibility Armada:具有良好语义可扩展性的并发代码的自动验证
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-05-27 DOI: https://dl.acm.org/doi/full/10.1145/3502491
Jacob R. Lorch, Yixuan Chen, Manos Kapritsos, Haojun Ma, Bryan Parno, Shaz Qadeer, Upamanyu Sharma, James R. Wilcox, Xueyuan Zhao

Safely writing high-performance concurrent programs is notoriously difficult. To aid developers, we introduce Armada, a language and tool designed to formally verify such programs with relatively little effort. Via a C-like language and a small-step, state-machine-based semantics, Armadagives developers the flexibility to choose arbitrary memory layout and synchronization primitives so that they are never constrained in their pursuit of performance. To reduce developer effort, Armadaleverages SMT-powered automation and a library of powerful reasoning techniques, including rely-guarantee, TSO elimination, reduction, and pointer analysis. All of these techniques are proven sound, and Armadacan be soundly extended with additional strategies over time. Using Armada, we verify five concurrent case studies and show that we can achieve performance equivalent to that of unverified code.

安全地编写高性能并发程序是出了名的困难。为了帮助开发人员,我们介绍了Armada,这是一种语言和工具,旨在以相对较少的工作量正式验证此类程序。通过类似c的语言和基于状态机的小步骤语义,armadagias为开发人员提供了选择任意内存布局和同步原语的灵活性,这样他们在追求性能时就不会受到限制。为了减少开发人员的工作量,armadal利用了smt驱动的自动化和一个强大的推理技术库,包括可靠性保证、TSO消除、减少和指针分析。所有这些技术都被证明是可靠的,并且随着时间的推移,Armadacan可以使用其他策略进行扩展。使用Armada,我们验证了五个并发的案例研究,并表明我们可以获得与未经验证的代码相当的性能。
{"title":"Armada: Automated Verification of Concurrent Code with Sound Semantic Extensibility","authors":"Jacob R. Lorch, Yixuan Chen, Manos Kapritsos, Haojun Ma, Bryan Parno, Shaz Qadeer, Upamanyu Sharma, James R. Wilcox, Xueyuan Zhao","doi":"https://dl.acm.org/doi/full/10.1145/3502491","DOIUrl":"https://doi.org/https://dl.acm.org/doi/full/10.1145/3502491","url":null,"abstract":"<p>Safely writing high-performance concurrent programs is notoriously difficult. To aid developers, we introduce Armada, a language and tool designed to formally verify such programs with relatively little effort. Via a C-like language and a small-step, state-machine-based semantics, Armadagives developers the flexibility to choose arbitrary memory layout and synchronization primitives so that they are never constrained in their pursuit of performance. To reduce developer effort, Armadaleverages SMT-powered automation and a library of powerful reasoning techniques, including rely-guarantee, TSO elimination, reduction, and pointer analysis. All of these techniques are proven sound, and Armadacan be soundly extended with additional strategies over time. Using Armada, we verify five concurrent case studies and show that we can achieve performance equivalent to that of unverified code.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"95 1","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138531545","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Prisma : A Tierless Language for Enforcing Contract-client Protocols in Decentralized Applications Prisma:一种用于在分散应用程序中执行合约-客户端协议的无层语言
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-05-16 DOI: 10.1145/3604629
D. Richter, David Kretzler, P. Weisenburger, G. Salvaneschi, Sebastian Faust, M. Mezini
Decentralized applications (dApps) consist of smart contracts that run on blockchains and clients that model collaborating parties. dApps are used to model financial and legal business functionality. Today, contracts and clients are written as separate programs—in different programming languages—communicating via send and receive operations. This makes distributed program flow awkward to express and reason about, increasing the potential for mismatches in the client-contract interface, which can be exploited by malicious clients, potentially leading to huge financial losses. In this article, we present Prisma , a language for tierless decentralized applications, where the contract and its clients are defined in one unit and pairs of send and receive actions that “belong together” are encapsulated into a single direct-style operation, which is executed differently by sending and receiving parties. This enables expressing distributed program flow via standard control flow and renders mismatching communication impossible. We prove formally that our compiler preserves program behavior in presence of an attacker controlling the client code. We systematically compare Prisma with mainstream and advanced programming models for dApps and provide empirical evidence for its expressiveness and performance.
去中心化应用程序(dApp)由运行在区块链上的智能合约和为合作方建模的客户端组成。dApp用于模拟财务和法律业务功能。如今,合同和客户机是用不同的编程语言作为单独的程序编写的,通过发送和接收操作进行通信。这使得分布式程序流难以表达和推理,增加了客户端合同接口不匹配的可能性,恶意客户端可能会利用这些不匹配,从而可能导致巨大的财务损失。在本文中,我们介绍了Prisma,这是一种用于分层去中心化应用程序的语言,其中合同及其客户端被定义在一个单元中,“属于一起”的成对发送和接收操作被封装到一个直接风格的操作中,发送方和接收方以不同的方式执行该操作。这使得能够通过标准控制流来表达分布式程序流,并且使得不匹配的通信成为不可能。我们正式证明,我们的编译器在攻击者控制客户端代码的情况下保持程序行为。我们系统地将Prisma与dApp的主流和高级编程模型进行了比较,并为其表现力和性能提供了经验证据。
{"title":"Prisma : A Tierless Language for Enforcing Contract-client Protocols in Decentralized Applications","authors":"D. Richter, David Kretzler, P. Weisenburger, G. Salvaneschi, Sebastian Faust, M. Mezini","doi":"10.1145/3604629","DOIUrl":"https://doi.org/10.1145/3604629","url":null,"abstract":"Decentralized applications (dApps) consist of smart contracts that run on blockchains and clients that model collaborating parties. dApps are used to model financial and legal business functionality. Today, contracts and clients are written as separate programs—in different programming languages—communicating via send and receive operations. This makes distributed program flow awkward to express and reason about, increasing the potential for mismatches in the client-contract interface, which can be exploited by malicious clients, potentially leading to huge financial losses. In this article, we present Prisma , a language for tierless decentralized applications, where the contract and its clients are defined in one unit and pairs of send and receive actions that “belong together” are encapsulated into a single direct-style operation, which is executed differently by sending and receiving parties. This enables expressing distributed program flow via standard control flow and renders mismatching communication impossible. We prove formally that our compiler preserves program behavior in presence of an attacker controlling the client code. We systematically compare Prisma with mainstream and advanced programming models for dApps and provide empirical evidence for its expressiveness and performance.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"45 1","pages":"1 - 41"},"PeriodicalIF":1.3,"publicationDate":"2022-05-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"48929528","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Passport: Improving Automated Formal Verification Using Identifiers 护照:使用标识符改进自动正式验证
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-04-21 DOI: 10.1145/3593374
Alex Sanchez-Stern, E. First, Timothy Zhou, Zhanna Kaufman, Yuriy Brun, T. Ringer
Formally verifying system properties is one of the most effective ways of improving system quality, but its high manual effort requirements often render it prohibitively expensive. Tools that automate formal verification by learning from proof corpora to synthesize proofs have just begun to show their promise. These tools are effective because of the richness of the data the proof corpora contain. This richness comes from the stylistic conventions followed by communities of proof developers, together with the powerful logical systems beneath proof assistants. However, this richness remains underexploited, with most work thus far focusing on architecture rather than on how to make the most of the proof data. This article systematically explores how to most effectively exploit one aspect of that proof data: identifiers. We develop the Passport approach, a method for enriching the predictive Coq model used by an existing proof-synthesis tool with three new encoding mechanisms for identifiers: category vocabulary indexing, subword sequence modeling, and path elaboration. We evaluate our approach’s enrichment effect on three existing base tools: ASTactic, Tac, and Tok. In head-to-head comparisons, Passport automatically proves 29% more theorems than the best-performing of these base tools. Combining the three tools enhanced by the Passport approach automatically proves 38% more theorems than combining the three base tools. Finally, together, these base tools and their enhanced versions prove 45% more theorems than the combined base tools. Overall, our findings suggest that modeling identifiers can play a significant role in improving proof synthesis, leading to higher-quality software.
正式地验证系统属性是改进系统质量的最有效的方法之一,但是它的高手工工作量要求常常使它变得非常昂贵。通过学习证明语料库来合成证明来自动化形式验证的工具刚刚开始显示出它们的前景。这些工具是有效的,因为证明语料库包含了丰富的数据。这种丰富性来自于证明开发人员社区遵循的风格惯例,以及证明助手下强大的逻辑系统。然而,这种丰富性仍然没有得到充分利用,到目前为止,大多数工作都集中在架构上,而不是如何充分利用证明数据。本文系统地探讨了如何最有效地利用证明数据的一个方面:标识符。我们开发了Passport方法,这是一种通过三种新的标识符编码机制来丰富现有证明合成工具使用的预测Coq模型的方法:类别词汇索引、子词序列建模和路径细化。我们评估了我们的方法在三个现有基础工具上的丰富效果:ASTactic, Tac和Tok。在正面比较中,Passport自动证明的定理比这些基本工具中表现最好的多29%。结合Passport方法增强的三个工具自动证明的定理比结合三个基本工具多38%。最后,这些基本工具及其增强版本证明的定理比组合基本工具多45%。总体而言,我们的研究结果表明,建模标识符可以在改进证明综合方面发挥重要作用,从而获得更高质量的软件。
{"title":"Passport: Improving Automated Formal Verification Using Identifiers","authors":"Alex Sanchez-Stern, E. First, Timothy Zhou, Zhanna Kaufman, Yuriy Brun, T. Ringer","doi":"10.1145/3593374","DOIUrl":"https://doi.org/10.1145/3593374","url":null,"abstract":"Formally verifying system properties is one of the most effective ways of improving system quality, but its high manual effort requirements often render it prohibitively expensive. Tools that automate formal verification by learning from proof corpora to synthesize proofs have just begun to show their promise. These tools are effective because of the richness of the data the proof corpora contain. This richness comes from the stylistic conventions followed by communities of proof developers, together with the powerful logical systems beneath proof assistants. However, this richness remains underexploited, with most work thus far focusing on architecture rather than on how to make the most of the proof data. This article systematically explores how to most effectively exploit one aspect of that proof data: identifiers. We develop the Passport approach, a method for enriching the predictive Coq model used by an existing proof-synthesis tool with three new encoding mechanisms for identifiers: category vocabulary indexing, subword sequence modeling, and path elaboration. We evaluate our approach’s enrichment effect on three existing base tools: ASTactic, Tac, and Tok. In head-to-head comparisons, Passport automatically proves 29% more theorems than the best-performing of these base tools. Combining the three tools enhanced by the Passport approach automatically proves 38% more theorems than combining the three base tools. Finally, together, these base tools and their enhanced versions prove 45% more theorems than the combined base tools. Overall, our findings suggest that modeling identifiers can play a significant role in improving proof synthesis, leading to higher-quality software.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"45 1","pages":"1 - 30"},"PeriodicalIF":1.3,"publicationDate":"2022-04-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"48192343","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Towards Porting Operating Systems with Program Synthesis 使用程序综合移植操作系统
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-04-15 DOI: 10.1145/3563943
Jingmei Hu, Eric Lu, David A. Holland, Ming Kawaguchi, Stephen Chong, M. Seltzer
The end of Moore’s Law has ushered in a diversity of hardware not seen in decades. Operating system (OS) (and system software) portability is accordingly becoming increasingly critical. Simultaneously, there has been tremendous progress in program synthesis. We set out to explore the feasibility of using modern program synthesis to generate the machine-dependent parts of an operating system. Our ultimate goal is to generate new ports automatically from descriptions of new machines. One of the issues involved is writing specifications, both for machine-dependent operating system functionality and for instruction set architectures. We designed two domain-specific languages: Alewife for machine-independent specifications of machine-dependent operating system functionality and Cassiopea for describing instruction set architecture semantics. Automated porting also requires an implementation. We developed a toolchain that, given an Alewife specification and a Cassiopea machine description, specializes the machine-independent specification to the target instruction set architecture and synthesizes an implementation in assembly language with a customized symbolic execution engine. Using this approach, we demonstrate the successful synthesis of a total of 140 OS components from two pre-existing OSes for four real hardware platforms. We also developed several optimization methods for OS-related assembly synthesis to improve scalability. The effectiveness of our languages and ability to synthesize code for all 140 specifications is evidence of the feasibility of program synthesis for machine-dependent OS code. However, many research challenges remain; we also discuss the benefits and limitations of our synthesis-based approach to automated OS porting.
摩尔定律的终结带来了几十年来从未见过的硬件多样性。操作系统(OS)(和系统软件)的可移植性因此变得越来越重要。与此同时,在程序综合方面也取得了巨大的进展。我们开始探索使用现代程序合成来生成操作系统的机器相关部分的可行性。我们的最终目标是根据新机器的描述自动生成新端口。其中一个问题是编写与机器相关的操作系统功能和指令集体系结构的规范。我们设计了两种特定于领域的语言:用于机器相关操作系统功能的机器无关规范的Alewife和用于描述指令集架构语义的Cassiopea。自动化移植也需要一个实现。我们开发了一个工具链,在给定Alewife规范和仙后座机器描述的情况下,将机器独立规范专门用于目标指令集架构,并将汇编语言实现与定制的符号执行引擎相结合。使用这种方法,我们展示了从四个实际硬件平台的两个预先存在的操作系统成功合成总共140个操作系统组件。我们还为操作系统相关的汇编合成开发了几种优化方法,以提高可扩展性。我们的语言的有效性和为所有140种规范合成代码的能力证明了为机器相关操作系统代码进行程序合成的可行性。然而,仍然存在许多研究挑战;我们还讨论了基于综合的自动化操作系统移植方法的优点和局限性。
{"title":"Towards Porting Operating Systems with Program Synthesis","authors":"Jingmei Hu, Eric Lu, David A. Holland, Ming Kawaguchi, Stephen Chong, M. Seltzer","doi":"10.1145/3563943","DOIUrl":"https://doi.org/10.1145/3563943","url":null,"abstract":"The end of Moore’s Law has ushered in a diversity of hardware not seen in decades. Operating system (OS) (and system software) portability is accordingly becoming increasingly critical. Simultaneously, there has been tremendous progress in program synthesis. We set out to explore the feasibility of using modern program synthesis to generate the machine-dependent parts of an operating system. Our ultimate goal is to generate new ports automatically from descriptions of new machines. One of the issues involved is writing specifications, both for machine-dependent operating system functionality and for instruction set architectures. We designed two domain-specific languages: Alewife for machine-independent specifications of machine-dependent operating system functionality and Cassiopea for describing instruction set architecture semantics. Automated porting also requires an implementation. We developed a toolchain that, given an Alewife specification and a Cassiopea machine description, specializes the machine-independent specification to the target instruction set architecture and synthesizes an implementation in assembly language with a customized symbolic execution engine. Using this approach, we demonstrate the successful synthesis of a total of 140 OS components from two pre-existing OSes for four real hardware platforms. We also developed several optimization methods for OS-related assembly synthesis to improve scalability. The effectiveness of our languages and ability to synthesize code for all 140 specifications is evidence of the feasibility of program synthesis for machine-dependent OS code. However, many research challenges remain; we also discuss the benefits and limitations of our synthesis-based approach to automated OS porting.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"45 1","pages":"1 - 70"},"PeriodicalIF":1.3,"publicationDate":"2022-04-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"44682882","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Programming Languages and Systems: 20th Asian Symposium, APLAS 2022, Auckland, New Zealand, December 5, 2022, Proceedings 程序设计语言和系统:第20届亚洲研讨会,APLAS 2022,奥克兰,新西兰,2022年12月5日,会议录
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-01-01 DOI: 10.1007/978-3-031-21037-2
{"title":"Programming Languages and Systems: 20th Asian Symposium, APLAS 2022, Auckland, New Zealand, December 5, 2022, Proceedings","authors":"","doi":"10.1007/978-3-031-21037-2","DOIUrl":"https://doi.org/10.1007/978-3-031-21037-2","url":null,"abstract":"","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"15 1","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73804402","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Programming Languages and Systems: 31st European Symposium on Programming, ESOP 2022, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022, Munich, Germany, April 2–7, 2022, Proceedings 编程语言和系统:第31届欧洲编程研讨会,ESOP 2022,作为欧洲软件理论与实践联合会议的一部分,ETAPS 2022,慕尼黑,德国,2022年4月2-7日,论文集
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-01-01 DOI: 10.1007/978-3-030-99336-8
{"title":"Programming Languages and Systems: 31st European Symposium on Programming, ESOP 2022, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022, Munich, Germany, April 2–7, 2022, Proceedings","authors":"","doi":"10.1007/978-3-030-99336-8","DOIUrl":"https://doi.org/10.1007/978-3-030-99336-8","url":null,"abstract":"","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"26 1","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74336642","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Securing Interruptible Enclaved Execution on Small Microprocessors 在小型微处理器上保护可中断的封闭执行
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2021-09-30 DOI: 10.1145/3470534
Matteo Busi, Job Noorman, Jo Van Bulck, Letterio Galletta, P. Degano, J. Mühlberg, F. Piessens
Computer systems often provide hardware support for isolation mechanisms such as privilege levels, virtual memory, or enclaved execution. Over the past years, several successful software-based side-channel attacks have been developed that break, or at least significantly weaken, the isolation that these mechanisms offer. Extending a processor with new architectural or micro-architectural features brings a risk of introducing new software-based side-channel attacks. This article studies the problem of extending a processor with new features without weakening the security of the isolation mechanisms that the processor offers. Our solution is heavily based on techniques from research on programming languages. More specifically, we propose to use the programming language concept of full abstraction as a general formal criterion for the security of a processor extension. We instantiate the proposed criterion to the concrete case of extending a microprocessor that supports enclaved execution with secure interruptibility. This is a very relevant instantiation, as several recent papers have shown that interruptibility of enclaves leads to a variety of software-based side-channel attacks. We propose a design for interruptible enclaves and prove that it satisfies our security criterion. We also implement the design on an open-source enclave-enabled microprocessor and evaluate the cost of our design in terms of performance and hardware size.
计算机系统通常为隔离机制(如特权级别、虚拟内存或封闭执行)提供硬件支持。在过去的几年中,已经开发出了几种成功的基于软件的侧信道攻击,它们破坏或至少显著削弱了这些机制提供的隔离。用新的体系结构或微体系结构特性扩展处理器会带来引入新的基于软件的侧信道攻击的风险。本文研究了在不削弱处理器提供的隔离机制的安全性的情况下,用新特性扩展处理器的问题。我们的解决方案很大程度上基于编程语言研究的技术。更具体地说,我们建议使用完全抽象的编程语言概念作为处理器扩展安全性的一般形式标准。我们将提出的准则实例化到一个扩展微处理器的具体案例中,该微处理器支持具有安全可中断性的封装执行。这是一个非常相关的实例,因为最近的几篇论文表明,enclave的可中断性会导致各种基于软件的侧信道攻击。我们提出了一种可中断飞地的设计方案,并证明了它满足我们的安全标准。我们还在支持开源enclave的微处理器上实现了该设计,并根据性能和硬件尺寸评估了我们设计的成本。
{"title":"Securing Interruptible Enclaved Execution on Small Microprocessors","authors":"Matteo Busi, Job Noorman, Jo Van Bulck, Letterio Galletta, P. Degano, J. Mühlberg, F. Piessens","doi":"10.1145/3470534","DOIUrl":"https://doi.org/10.1145/3470534","url":null,"abstract":"Computer systems often provide hardware support for isolation mechanisms such as privilege levels, virtual memory, or enclaved execution. Over the past years, several successful software-based side-channel attacks have been developed that break, or at least significantly weaken, the isolation that these mechanisms offer. Extending a processor with new architectural or micro-architectural features brings a risk of introducing new software-based side-channel attacks.\u0000 \u0000 This article studies the problem of extending a processor with new features\u0000 without\u0000 weakening the security of the isolation mechanisms that the processor offers. Our solution is heavily based on techniques from research on programming languages. More specifically, we propose to use the programming language concept of full abstraction as a general formal criterion for the security of a processor extension. We instantiate the proposed criterion to the concrete case of extending a microprocessor that supports enclaved execution with secure interruptibility. This is a very relevant instantiation, as several recent papers have shown that interruptibility of enclaves leads to a variety of software-based side-channel attacks. We propose a design for interruptible enclaves and prove that it satisfies our security criterion. We also implement the design on an open-source enclave-enabled microprocessor and evaluate the cost of our design in terms of performance and hardware size.\u0000","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"20 1","pages":"12:1-12:77"},"PeriodicalIF":1.3,"publicationDate":"2021-09-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85904738","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Safe-by-default Concurrency for Modern Programming Languages 现代编程语言的默认并发安全
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2021-09-30 DOI: 10.1145/3462206
Lun Liu, T. Millstein, M. Musuvathi
Modern “safe” programming languages follow a design principle that we call safety by default and performance by choice . By default, these languages enforce important programming abstractions, such as memory and type safety, but they also provide mechanisms that allow expert programmers to explicitly trade some safety guarantees for increased performance. However, these same languages have adopted the inverse design principle in their support for multithreading. By default, multithreaded programs violate important abstractions, such as program order and atomic access to individual memory locations to admit compiler and hardware optimizations that would otherwise need to be restricted. Not only does this approach conflict with the design philosophy of safe languages, but very little is known about the practical performance cost of providing a stronger default semantics. In this article, we propose a safe-by-default and performance-by-choice multithreading semantics for safe languages, which we call volatile -by-default . Under this semantics, programs have sequential consistency (SC) by default, which is the natural “interleaving” semantics of threads. However, the volatile -by-default design also includes annotations that allow expert programmers to avoid the associated overheads in performance-critical code. We describe the design, implementation, optimization, and evaluation of the volatile -by-default semantics for two different safe languages: Java and Julia. First, we present V BD-HotSpot and V BDA-HotSpot, modifications of Oracle’s HotSpot JVM that enforce the volatile -by-default semantics on Intel x86-64 hardware and ARM-v8 hardware. Second, we present S C-Julia, a modification to the just-in-time compiler within the standard Julia implementation that provides best-effort enforcement of the volatile -by-default semantics on x86-64 hardware for the purpose of performance evaluation. We also detail two different implementation techniques: a baseline approach that simply reuses existing mechanisms in the compilers for handling atomic accesses, and a speculative approach that avoids the overhead of enforcing the volatile -by-default semantics until there is the possibility of an SC violation. Our results show that the cost of enforcing SC is significant but arguably still acceptable for some use cases today. Further, we demonstrate that compiler optimizations as well as programmer annotations can reduce the overhead considerably.
现代“安全”编程语言遵循一种设计原则,我们称之为默认安全性和选择性能。默认情况下,这些语言强制执行重要的编程抽象,比如内存和类型安全,但它们也提供了一些机制,允许专业程序员显式地牺牲一些安全保证来提高性能。然而,这些语言在支持多线程方面采用了相反的设计原则。默认情况下,多线程程序违反了重要的抽象,例如程序顺序和对单个内存位置的原子访问,以允许编译器和硬件优化,否则这些优化将需要受到限制。这种方法不仅与安全语言的设计理念相冲突,而且对于提供更强的默认语义的实际性能成本也知之甚少。在本文中,我们为安全语言提出了默认安全和性能选择多线程语义,我们称之为默认volatile。在这种语义下,程序默认具有顺序一致性(SC),这是线程的自然“交错”语义。然而,volatile -by-default设计还包括注释,这些注释允许专业程序员在性能关键型代码中避免相关的开销。我们描述了两种不同安全语言(Java和Julia)的默认volatile语义的设计、实现、优化和评估。首先,我们介绍了V BD-HotSpot和V BDA-HotSpot,它们是对Oracle的HotSpot JVM的修改,在Intel x86-64硬件和ARM-v8硬件上强制执行volatile -by-default语义。其次,我们介绍S C-Julia,这是对标准Julia实现中的即时编译器的修改,它在x86-64硬件上为性能评估提供了volatile -by-default语义的最佳实施。我们还详细介绍了两种不同的实现技术:一种是基线方法,它简单地重用编译器中的现有机制来处理原子访问;另一种是推测方法,它避免了强制执行volatile -by-default语义的开销,直到有可能违反SC。我们的结果表明,执行SC的成本是显著的,但是对于今天的一些用例来说仍然是可以接受的。此外,我们还演示了编译器优化以及程序员注释可以大大减少开销。
{"title":"Safe-by-default Concurrency for Modern Programming Languages","authors":"Lun Liu, T. Millstein, M. Musuvathi","doi":"10.1145/3462206","DOIUrl":"https://doi.org/10.1145/3462206","url":null,"abstract":"Modern “safe” programming languages follow a design principle that we call\u0000 safety by default\u0000 and\u0000 performance by choice\u0000 . By default, these languages enforce important programming abstractions, such as memory and type safety, but they also provide mechanisms that allow expert programmers to explicitly trade some safety guarantees for increased performance. However, these same languages have adopted the inverse design principle in their support for multithreading. By default, multithreaded programs violate important abstractions, such as program order and atomic access to individual memory locations to admit compiler and hardware optimizations that would otherwise need to be restricted. Not only does this approach conflict with the design philosophy of safe languages, but very little is known about the practical performance cost of providing a stronger default semantics.\u0000 \u0000 \u0000 In this article, we propose a safe-by-default and performance-by-choice multithreading semantics for safe languages, which we call\u0000 \u0000 volatile\u0000 \u0000 -by-default\u0000 . Under this semantics, programs have\u0000 sequential consistency\u0000 (SC) by default, which is the natural “interleaving” semantics of threads. However, the\u0000 volatile\u0000 -by-default design also includes annotations that allow expert programmers to avoid the associated overheads in performance-critical code. We describe the design, implementation, optimization, and evaluation of the\u0000 volatile\u0000 -by-default semantics for two different safe languages: Java and Julia. First, we present\u0000 V\u0000 BD-HotSpot and\u0000 V\u0000 BDA-HotSpot, modifications of Oracle’s HotSpot JVM that enforce the\u0000 volatile\u0000 -by-default semantics on Intel x86-64 hardware and ARM-v8 hardware. Second, we present\u0000 S\u0000 C-Julia, a modification to the just-in-time compiler within the standard Julia implementation that provides best-effort enforcement of the\u0000 volatile\u0000 -by-default semantics on x86-64 hardware for the purpose of performance evaluation. We also detail two different implementation techniques: a\u0000 baseline\u0000 approach that simply reuses existing mechanisms in the compilers for handling atomic accesses, and a\u0000 speculative\u0000 approach that avoids the overhead of enforcing the\u0000 volatile\u0000 -by-default semantics until there is the possibility of an SC violation. Our results show that the cost of enforcing SC is significant but arguably still acceptable for some use cases today. Further, we demonstrate that compiler optimizations as well as programmer annotations can reduce the overhead considerably.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"3 1","pages":"10:1-10:50"},"PeriodicalIF":1.3,"publicationDate":"2021-09-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87583363","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
On Polymorphic Sessions and Functions: A Tale of Two (Fully Abstract) Encodings 关于多态会话和函数:两个(完全抽象)编码的故事
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2021-06-10 DOI: 10.1145/3457884
ToninhoBernardo, YoshidaNobuko
This work exploits the logical foundation of session types to determine what kind of type discipline for the Λ-calculus can exactly capture, and is captured by, Λ-calculus behaviours. Leveraging th...
这项工作利用会话类型的逻辑基础来确定Λ-calculus的哪种类型规则可以准确地捕获Λ-calculus行为,并且被Λ-calculus行为捕获。利用th……
{"title":"On Polymorphic Sessions and Functions: A Tale of Two (Fully Abstract) Encodings","authors":"ToninhoBernardo, YoshidaNobuko","doi":"10.1145/3457884","DOIUrl":"https://doi.org/10.1145/3457884","url":null,"abstract":"This work exploits the logical foundation of session types to determine what kind of type discipline for the Λ-calculus can exactly capture, and is captured by, Λ-calculus behaviours. Leveraging th...","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"6 1","pages":"1-55"},"PeriodicalIF":1.3,"publicationDate":"2021-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74345067","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
For a Few Dollars More 再要几美元
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2021-03-23 DOI: 10.1145/3486169
Maximilian P. L. Haslbeck, P. Lammich
We present a framework to verify both, functional correctness and (amortized) worst-case complexity of practically efficient algorithms. We implemented a stepwise refinement approach, using the novel concept of resource currencies to naturally structure the resource analysis along the refinement chain, and allow a fine-grained analysis of operation counts. Our framework targets the LLVM intermediate representation. We extend its semantics from earlier work with a cost model. As case studies, we verify the amortized constant time push operation on dynamic arrays and the O(nlog n) introsort algorithm, and refine them down to efficient LLVM implementations. Our sorting algorithm performs on par with the state-of-the-art implementation found in the GNU C++ Library, and provably satisfies the complexity required by the C++ standard.
我们提出了一个框架来验证实际有效算法的功能正确性和(平摊)最坏情况复杂度。我们实现了一种逐步改进的方法,使用资源货币的新概念,沿着改进链自然地构建资源分析,并允许对操作计数进行细粒度分析。我们的框架以LLVM中间表示为目标。我们用成本模型从早期工作中扩展了它的语义。作为案例研究,我们验证了动态数组上的平摊常数时间推操作和O(nlog n)内向排序算法,并将它们细化为高效的LLVM实现。我们的排序算法的性能与GNU c++库中最先进的实现相当,并且可以证明满足c++标准所要求的复杂性。
{"title":"For a Few Dollars More","authors":"Maximilian P. L. Haslbeck, P. Lammich","doi":"10.1145/3486169","DOIUrl":"https://doi.org/10.1145/3486169","url":null,"abstract":"We present a framework to verify both, functional correctness and (amortized) worst-case complexity of practically efficient algorithms. We implemented a stepwise refinement approach, using the novel concept of resource currencies to naturally structure the resource analysis along the refinement chain, and allow a fine-grained analysis of operation counts. Our framework targets the LLVM intermediate representation. We extend its semantics from earlier work with a cost model. As case studies, we verify the amortized constant time push operation on dynamic arrays and the O(nlog n) introsort algorithm, and refine them down to efficient LLVM implementations. Our sorting algorithm performs on par with the state-of-the-art implementation found in the GNU C++ Library, and provably satisfies the complexity required by the C++ standard.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"1 1","pages":"292 - 319"},"PeriodicalIF":1.3,"publicationDate":"2021-03-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74729504","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
期刊
ACM Transactions on Programming Languages and Systems
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1