Programming in Paragon

B. V. Delft, Niklas Broberg, David Sands
{"title":"Programming in Paragon","authors":"B. V. Delft, Niklas Broberg, David Sands","doi":"10.3233/978-1-61499-385-8-279","DOIUrl":null,"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.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Software Systems Safety","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.3233/978-1-61499-385-8-279","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1

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.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Paragon编程
本教程介绍了Paragon,这是一种编程语言,它允许程序员作为代码的一个组成部分来表达对所操作数据的安全关注。Paragon编译器只允许运行一个保证遵守为其数据声明的安全策略的程序。从这个意义上讲,Paragon保证类型良好的程序通过构造是安全的。但是,我们的数据可能需要什么样的安全策略呢?访问控制机制可能是控制安全性的一种明显方法,Java(构建Paragon的基础)包含api来表达对安全敏感资源的细粒度访问。但是,访问控制虽然有用,但通常不是表达我们实际希望应用程序满足的端到端安全需求的好工具。例如,考虑一个“应用程序”,它可以在你朋友生日之前向你发送当地花店的特别优惠。为了正常工作,这款应用至少需要访问你的日历(检索生日)、网络(检索花店最新的特价商品)和你的地理位置(确定附近有哪些花店)。但是任何具有这些访问权限的应用程序都可以自由地将你的整个日历或你的位置发送到网络上的任何地方。我们想要的是允许访问(因为这是必要的),但限制信息流。在本例中,我们希望限制从日历到网络的信息流,尽管允许对两者进行访问。Paragon允许程序员直接在程序中表达这样的关注点,方法是用策略标记数据,描述数据在哪里、在什么条件下允许流动。此外,Paragon编译器在编译时检查预期的信息流是否不会被违反。这有助于程序员检查他们自己的代码中的信息流错误,并可用于确保第三方代码尊重其被授予访问权限的数据的策略。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Applications of Interactive Proof to Data Flow Analysis and Security SAT-based Model Checking: Interpolation, IC3, and Beyond Frameworks for Interprocedural Analysis of Concurrent Programs May/Must Abstraction-Based Software Model Checking for Sound Verification and Falsification Probabilistic Model Checking for Biology
×
引用
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