首页 > 最新文献

Software Systems Safety最新文献

英文 中文
Applications of Interactive Proof to Data Flow Analysis and Security 交互式证明在数据流分析和安全中的应用
Pub Date : 2014-05-20 DOI: 10.3233/978-1-61499-385-8-77
G. Klein, T. Nipkow
We show how to formalise a small imperative programming language in the theorem prover Isabelle/HOL, how to define its semantics, and how to prove properties about the language, its type systems, and a number of data flow analyses. The emphasis is not on formalising a complex language deeply, but to teach a number of formalisation techniques and proof strategies using simple examples. For this purpose, we cover a basic type system with type safety proof, more complex security type systems, also with soundness proofs, and different kinds of data flow analyses, in particular definite initialisation analysis and constant propagation, again with correctness proofs.
我们将展示如何在定理证明器Isabelle/HOL中形式化一种小型命令式编程语言,如何定义其语义,以及如何证明该语言、其类型系统和许多数据流分析的属性。本书的重点不在于深入形式化一门复杂的语言,而是通过简单的例子教授一些形式化技术和证明策略。为此,我们涵盖了一个基本的类型系统,包括类型安全证明,更复杂的安全类型系统,也包括可靠性证明,以及不同类型的数据流分析,特别是确定初始化分析和常数传播,再次包括正确性证明。
{"title":"Applications of Interactive Proof to Data Flow Analysis and Security","authors":"G. Klein, T. Nipkow","doi":"10.3233/978-1-61499-385-8-77","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-77","url":null,"abstract":"We show how to formalise a small imperative programming language in the theorem prover Isabelle/HOL, how to define its semantics, and how to prove properties about the language, its type systems, and a number of data flow analyses. The emphasis is not on formalising a complex language deeply, but to teach a number of formalisation techniques and proof strategies using simple examples. For this purpose, we cover a basic type system with type safety proof, more complex security type systems, also with soundness proofs, and different kinds of data flow analyses, in particular definite initialisation analysis and constant propagation, again with correctness proofs.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131609527","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
SAT-based Model Checking: Interpolation, IC3, and Beyond 基于sat的模型检查:插值,IC3和超越
Pub Date : 2013-03-16 DOI: 10.3233/978-1-61499-385-8-17
O. Grumberg, Sharon Shoham, Y. Vizel
SAT-based model checking is currently one of the most successful approaches to checking very large systems. In its early days, SAT-based (bounded) model checking was mainly used for bug hunting. The introduction of interpolation and IC3PDR enable efficient complete algorithms that can provide full verification as well. In this paper, we survey several approaches to enhancing SAT-based model checking. They are all based on iteratively computing an overapproximation of the set of reachable system states. They use different mechanisms to achieve scalability and faster convergence. The first one uses interpolation sequence rather than interpolation in order to obtain a more precise over-approximation of the set of reachable states. The other approach integrates lazy abstraction with IC3 in order to achieve scalability. Lazy abstraction, originally developed for software model checking, is a specific type of abstraction that allows hiding different model details at different steps of the verification. We find the IC3 algorithm most suitable for lazy abstraction since its state traversal is performed by means of local reachability checks, each involving only two consecutive sets. A different abstraction can therefore be applied in each of the local checks. The survey focuses on hardware model checking, but the presented ideas can be extended to other systems as well.
基于sat的模型检查是目前检查大型系统最成功的方法之一。在早期,基于sat的(有界的)模型检查主要用于查找bug。插值和IC3PDR的引入使高效完整的算法能够提供完整的验证。本文综述了几种增强基于sat的模型检验的方法。它们都是基于迭代计算可达系统状态集的过近似值。它们使用不同的机制来实现可伸缩性和更快的收敛。第一种方法使用插值序列而不是插值,以获得更精确的可达状态集的过逼近。另一种方法将惰性抽象与IC3集成,以实现可伸缩性。惰性抽象,最初是为软件模型检查而开发的,是一种特定类型的抽象,它允许在验证的不同步骤隐藏不同的模型细节。我们发现IC3算法最适合惰性抽象,因为它的状态遍历是通过局部可达性检查来执行的,每个检查只涉及两个连续的集合。因此,可以在每个局部检查中应用不同的抽象。该调查侧重于硬件模型检查,但所提出的思想也可以扩展到其他系统。
{"title":"SAT-based Model Checking: Interpolation, IC3, and Beyond","authors":"O. Grumberg, Sharon Shoham, Y. Vizel","doi":"10.3233/978-1-61499-385-8-17","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-17","url":null,"abstract":"SAT-based model checking is currently one of the most successful approaches to checking very large systems. In its early days, SAT-based (bounded) model checking was mainly used for bug hunting. The introduction of interpolation and IC3PDR enable efficient complete algorithms that can provide full verification as well. In this paper, we survey several approaches to enhancing SAT-based model checking. They are all based on iteratively computing an overapproximation of the set of reachable system states. They use different mechanisms to achieve scalability and faster convergence. The first one uses interpolation sequence rather than interpolation in order to obtain a more precise over-approximation of the set of reachable states. The other approach integrates lazy abstraction with IC3 in order to achieve scalability. Lazy abstraction, originally developed for software model checking, is a specific type of abstraction that allows hiding different model details at different steps of the verification. We find the IC3 algorithm most suitable for lazy abstraction since its state traversal is performed by means of local reachability checks, each involving only two consecutive sets. A different abstraction can therefore be applied in each of the local checks. The survey focuses on hardware model checking, but the presented ideas can be extended to other systems as well.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116872553","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
May/Must Abstraction-Based Software Model Checking for Sound Verification and Falsification 可能/必须基于抽象的软件模型检查以进行可靠的验证和证伪
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-1
Patrice Godefroid
Three-valued models, in which properties of a system are either true, false or unknown, have recently been advocated as a better representation for reactive program abstractions generated by automatic techniques such as predicate abstraction. Indeed, for the same cost, model checking three-valued abstractions, also called may/must abstractions, can be used to both prove and disprove any temporal-logic property, whereas traditional conservative abstractions can only prove universal properties. Also, verification results can be more precise with generalized model checking, which checks whether there exists a concretization of an abstraction satisfying a temporal-logic formula. Generalized model checking generalizes both model checking (when the model is complete) and satisfiability (when everything in the model is unknown), probably the two most studied problems related to temporal logic and verification. This paper presents an introduction to the main ideas behind this framework, namely models for three-valued abstractions, completeness preorders to measure the level of completeness of such models, three-valued temporal logics and generalized model checking. It also discusses algorithms and complexity bounds for three-valued model checking and generalized model-checking for various temporal logics. Finally, it discusses applications to program verification via automatic abstraction.
三值模型,其中系统的属性要么为真,要么为假,要么为未知,最近被提倡作为由谓词抽象等自动技术生成的反应性程序抽象的更好表示。实际上,以同样的代价,模型检查三值抽象,也称为可能/必须抽象,可以用来证明或反驳任何时间逻辑属性,而传统的保守抽象只能证明全称属性。此外,广义模型检验可以检验是否存在满足时间逻辑公式的抽象的具体化,从而使验证结果更加精确。广义模型检查概括了模型检查(当模型完成时)和可满足性(当模型中的一切都是未知时),这可能是与时间逻辑和验证相关的两个研究最多的问题。本文介绍了该框架的主要思想,即三值抽象的模型、度量模型完备程度的完备序、三值时间逻辑和广义模型检验。讨论了各种时间逻辑的三值模型检验和广义模型检验的算法和复杂度界。最后,讨论了通过自动抽象进行程序验证的应用。
{"title":"May/Must Abstraction-Based Software Model Checking for Sound Verification and Falsification","authors":"Patrice Godefroid","doi":"10.3233/978-1-61499-385-8-1","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-1","url":null,"abstract":"Three-valued models, in which properties of a system are either true, false or unknown, have recently been advocated as a better representation for reactive program abstractions generated by automatic techniques such as predicate abstraction. Indeed, for the same cost, model checking three-valued abstractions, also called may/must abstractions, can be used to both prove and disprove any temporal-logic property, whereas traditional conservative abstractions can only prove universal properties. Also, verification results can be more precise with generalized model checking, which checks whether there exists a concretization of an abstraction satisfying a temporal-logic formula. Generalized model checking generalizes both model checking (when the model is complete) and satisfiability (when everything in the model is unknown), probably the two most studied problems related to temporal logic and verification. This paper presents an introduction to the main ideas behind this framework, namely models for three-valued abstractions, completeness preorders to measure the level of completeness of such models, three-valued temporal logics and generalized model checking. It also discusses algorithms and complexity bounds for three-valued model checking and generalized model-checking for various temporal logics. Finally, it discusses applications to program verification via automatic abstraction.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115573022","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
E-Voting Systems 网上投票系统
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-135
Ralf Küsters
{"title":"E-Voting Systems","authors":"Ralf Küsters","doi":"10.3233/978-1-61499-385-8-135","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-135","url":null,"abstract":"","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131924312","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Frameworks for Interprocedural Analysis of Concurrent Programs 并发程序的过程间分析框架
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-309
H. Seidl, Kalmer Apinis, Vesal Vojdani
{"title":"Frameworks for Interprocedural Analysis of Concurrent Programs","authors":"H. Seidl, Kalmer Apinis, Vesal Vojdani","doi":"10.3233/978-1-61499-385-8-309","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-309","url":null,"abstract":"","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115523881","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Program Synthesis 程序合成
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-43
Sumit Gulwani, Oleksandr Polozov, Rishabh Singh
Program synthesis is the task of automatically finding a program in the underlying programming language that satisfies the user intent expressed in the form of some specification. Since the inception of AI in the 1950s, this problem has been considered the holy grail of Computer Science. Despite inherent challenges in the problem such as ambiguity of user intent and a typically enormous search space of programs, the field of program synthesis has developed many different techniques that enable program synthesis in different real-life application domains. It is now used successfully in software engineering, biological discovery, computer-aided education, end-user programming, and data cleaning. In the last decade, several applications of synthesis in the field of programming by examples have been deployed in mass-market industrial products. This survey is a general overview of the state-of-the-art approaches to program synthesis, its applications, and subfields. We discuss the general principles common to all modern synthesis approaches such as syntactic bias, oracle-guided inductive search, and optimization techniques. We then present a literature review covering the four most common state-of-the-art techniques in program synthesis: enumerative search, constraint solving, stochastic search, and deduction-based programming by examples. We conclude with a brief list of future horizons for the field.
程序合成的任务是在底层编程语言中自动找到满足以某种规范形式表示的用户意图的程序。自20世纪50年代人工智能诞生以来,这个问题一直被认为是计算机科学的圣杯。尽管在这个问题中存在固有的挑战,例如用户意图的模糊性和典型的巨大的程序搜索空间,程序合成领域已经开发了许多不同的技术,使程序合成能够在不同的实际应用领域中使用。它现在成功地应用于软件工程、生物学发现、计算机辅助教育、最终用户编程和数据清理。在过去十年中,实例编程领域的几种综合应用已在大众市场工业产品中得到应用。本调查是对程序合成的最先进方法,其应用和子领域的总体概述。我们讨论了所有现代合成方法共同的一般原则,如语法偏差、oracle引导的归纳搜索和优化技术。然后,我们介绍了一篇文献综述,涵盖了程序合成中最常见的四种最新技术:枚举搜索、约束求解、随机搜索和基于演绎的示例编程。最后,我们简要列出了该领域的未来前景。
{"title":"Program Synthesis","authors":"Sumit Gulwani, Oleksandr Polozov, Rishabh Singh","doi":"10.3233/978-1-61499-385-8-43","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-43","url":null,"abstract":"Program synthesis is the task of automatically finding a program in the underlying programming language that satisfies the user intent expressed in the form of some specification. Since the inception of AI in the 1950s, this problem has been considered the holy grail of Computer Science. Despite inherent challenges in the problem such as ambiguity of user intent and a typically enormous search space of programs, the field of program synthesis has developed many different techniques that enable program synthesis in different real-life application domains. It is now used successfully in software engineering, biological discovery, computer-aided education, end-user programming, and data cleaning. In the last decade, several applications of synthesis in the field of programming by examples have been deployed in mass-market industrial products. This survey is a general overview of the state-of-the-art approaches to program synthesis, its applications, and subfields. We discuss the general principles common to all modern synthesis approaches such as syntactic bias, oracle-guided inductive search, and optimization techniques. We then present a literature review covering the four most common state-of-the-art techniques in program synthesis: enumerative search, constraint solving, stochastic search, and deduction-based programming by examples. We conclude with a brief list of future horizons for the field.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128466713","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 445
Practical Software Synthesis 实用软件综合
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-349
Eran Yahav
{"title":"Practical Software Synthesis","authors":"Eran Yahav","doi":"10.3233/978-1-61499-385-8-349","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-349","url":null,"abstract":"","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125447824","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Boolean Satisfiability: Solvers and Extensions 布尔可满足性:求解和扩展
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-223
Georg Weissenbacher, Pramod Subramanyan, S. Malik
{"title":"Boolean Satisfiability: Solvers and Extensions","authors":"Georg Weissenbacher, Pramod Subramanyan, S. Malik","doi":"10.3233/978-1-61499-385-8-223","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-223","url":null,"abstract":"","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131338234","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Probabilistic Model Checking for Biology 生物学的概率模型检验
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-165
M. Kwiatkowska, Chris Thachuk
Probabilistic model checking is an automated method for verifying the correctness and performance of probabilistic models. Property specifications are expressed in probabilistic temporal logic, denoting, for example, the probability of a given event, the probability of its occurrence within a given time interval, or expected number of times it has occurred in a time period. This chapter focuses on the application of probabilistic model checking to biological systems modelled as continuous-time Markov chains, illustrating the usefulness of these techniques through relevant case studies performed with the probabilistic model checker PRISM. We begin with an introduction to discrete-time Markov chains and the corresponding model checking algorithms. Then continuous-time Markov chain models are defined, together with the logic CSL (Continuous Stochastic Logic), and an overview of model checking for CSL is given, which proceeds mainly by reduction to discrete-time Markov chains. The techniques are illustrated with examples of biochemical reaction networks, which are verified against quantitative temporal properties. Next a biological case study analysing the Fibroblast Growth Factor (FGF) molecular signalling pathway is summarised, highlighting how probabilistic model checking can assist in scientific discovery. Finally, we consider DNA computation, and specifically the DSD formalism (DNA Strand Displacement), and show how errors can be detected in DNA gate designs, analogous to model checking for digital circuits.
概率模型检查是一种自动验证概率模型正确性和性能的方法。属性规范以概率时态逻辑表示,例如表示给定事件的概率,在给定时间间隔内发生的概率,或在一段时间内发生的预期次数。本章重点介绍了概率模型检查在连续时间马尔可夫链建模的生物系统中的应用,并通过使用概率模型检查器PRISM进行的相关案例研究说明了这些技术的实用性。我们首先介绍离散时间马尔可夫链和相应的模型检查算法。然后定义了连续时间马尔可夫链模型及其逻辑CSL (Continuous Stochastic logic,连续随机逻辑),并概述了CSL模型的检验方法,主要是将CSL模型简化为离散时间马尔可夫链。用生化反应网络的例子说明了这些技术,并对定量时间性质进行了验证。接下来,总结了一个分析成纤维细胞生长因子(FGF)分子信号通路的生物学案例研究,强调了概率模型检查如何有助于科学发现。最后,我们考虑DNA计算,特别是DSD形式化(DNA链位移),并展示如何在DNA门设计中检测错误,类似于数字电路的模型检查。
{"title":"Probabilistic Model Checking for Biology","authors":"M. Kwiatkowska, Chris Thachuk","doi":"10.3233/978-1-61499-385-8-165","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-165","url":null,"abstract":"Probabilistic model checking is an automated method for verifying the correctness and performance of probabilistic models. Property specifications are expressed in probabilistic temporal logic, denoting, for example, the probability of a given event, the probability of its occurrence within a given time interval, or expected number of times it has occurred in a time period. This chapter focuses on the application of probabilistic model checking to biological systems modelled as continuous-time Markov chains, illustrating the usefulness of these techniques through relevant case studies performed with the probabilistic model checker PRISM. We begin with an introduction to discrete-time Markov chains and the corresponding model checking algorithms. Then continuous-time Markov chain models are defined, together with the logic CSL (Continuous Stochastic Logic), and an overview of model checking for CSL is given, which proceeds mainly by reduction to discrete-time Markov chains. The techniques are illustrated with examples of biochemical reaction networks, which are verified against quantitative temporal properties. Next a biological case study analysing the Fibroblast Growth Factor (FGF) molecular signalling pathway is summarised, highlighting how probabilistic model checking can assist in scientific discovery. Finally, we consider DNA computation, and specifically the DSD formalism (DNA Strand Displacement), and show how errors can be detected in DNA gate designs, analogous to model checking for digital circuits.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125250809","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 21
Programming in Paragon Paragon编程
Pub Date : 1900-01-01 DOI: 10.3233/978-1-61499-385-8-279
B. V. Delft, Niklas Broberg, David Sands
This tutorial introduces Paragon, a programming language which allows programmers to express, as an integral part of the code, security concerns about the data that is manipulated. The Paragon compiler will only allow a program to be run if it is guaranteed to respect the security policy declared for its data. In this sense Paragon promises that well-typed programs are secure by construction. But what security policies might we want for our data? Access control mechanisms are perhaps one obvious way to control security, and Java (on which Paragon is built) includes APIs to express fine-grained access to security-sensitive resources. But access controls, while useful, are often a poor tool to express the end-to-end security requirements that we actually desire from applications. For example, consider an “app” which sends you special offers from your local florists in advance of the birthdays of your friends. To function the app needs access to at least your calendar (to retrieve birthdays), the network (to retrieve the latest special offers from florists) and your geolocation (to determine which florists are located nearby). But any app with these access permissions can freely send the whole of your calendar or your location to anywhere on the net. What we want is to grant access (since it is necessary) but limit the information flows. In this case we want to limit the information flows from the calendar to the network despite granting access to both. Paragon allows the programmer to express such concerns directly in the program, by labelling data with policies describing where, and under what conditions, the data is permitted to flow. Moreover, the Paragon compiler checks, at compile time, that the intended information flows are never violated. This helps programmers check their own code for information flow errors, and can be used to ensure that third-party code respects the policy of the data to which it is given access.
本教程介绍了Paragon,这是一种编程语言,它允许程序员作为代码的一个组成部分来表达对所操作数据的安全关注。Paragon编译器只允许运行一个保证遵守为其数据声明的安全策略的程序。从这个意义上讲,Paragon保证类型良好的程序通过构造是安全的。但是,我们的数据可能需要什么样的安全策略呢?访问控制机制可能是控制安全性的一种明显方法,Java(构建Paragon的基础)包含api来表达对安全敏感资源的细粒度访问。但是,访问控制虽然有用,但通常不是表达我们实际希望应用程序满足的端到端安全需求的好工具。例如,考虑一个“应用程序”,它可以在你朋友生日之前向你发送当地花店的特别优惠。为了正常工作,这款应用至少需要访问你的日历(检索生日)、网络(检索花店最新的特价商品)和你的地理位置(确定附近有哪些花店)。但是任何具有这些访问权限的应用程序都可以自由地将你的整个日历或你的位置发送到网络上的任何地方。我们想要的是允许访问(因为这是必要的),但限制信息流。在本例中,我们希望限制从日历到网络的信息流,尽管允许对两者进行访问。Paragon允许程序员直接在程序中表达这样的关注点,方法是用策略标记数据,描述数据在哪里、在什么条件下允许流动。此外,Paragon编译器在编译时检查预期的信息流是否不会被违反。这有助于程序员检查他们自己的代码中的信息流错误,并可用于确保第三方代码尊重其被授予访问权限的数据的策略。
{"title":"Programming in Paragon","authors":"B. V. Delft, Niklas Broberg, David Sands","doi":"10.3233/978-1-61499-385-8-279","DOIUrl":"https://doi.org/10.3233/978-1-61499-385-8-279","url":null,"abstract":"This tutorial introduces Paragon, a programming language which allows programmers to express, as an integral part of the code, security concerns about the data that is manipulated. The Paragon compiler will only allow a program to be run if it is guaranteed to respect the security policy declared for its data. In this sense Paragon promises that well-typed programs are secure by construction. But what security policies might we want for our data? Access control mechanisms are perhaps one obvious way to control security, and Java (on which Paragon is built) includes APIs to express fine-grained access to security-sensitive resources. But access controls, while useful, are often a poor tool to express the end-to-end security requirements that we actually desire from applications. For example, consider an “app” which sends you special offers from your local florists in advance of the birthdays of your friends. To function the app needs access to at least your calendar (to retrieve birthdays), the network (to retrieve the latest special offers from florists) and your geolocation (to determine which florists are located nearby). But any app with these access permissions can freely send the whole of your calendar or your location to anywhere on the net. What we want is to grant access (since it is necessary) but limit the information flows. In this case we want to limit the information flows from the calendar to the network despite granting access to both. Paragon allows the programmer to express such concerns directly in the program, by labelling data with policies describing where, and under what conditions, the data is permitted to flow. Moreover, the Paragon compiler checks, at compile time, that the intended information flows are never violated. This helps programmers check their own code for information flow errors, and can be used to ensure that third-party code respects the policy of the data to which it is given access.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129957538","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
期刊
Software Systems Safety
全部 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