Computer Science > Software Engineering
arXiv:2407.01688 (cs)
[Submitted on 1 Jul 2024]
Title:How We Built Cedar: A Verification-Guided Approach
Authors:Craig Disselkoen,Aaron Eline,Shaobo He,Kyle Headley,Michael Hicks,Kesha Hietala,John Kastner,Anwar Mamat,Matt McCutchen,Neha Rungta,Bhakti Shah,Emina Torlak,Andrew Wells
View a PDF of the paper titled How We Built Cedar: A Verification-Guided Approach, by Craig Disselkoen and 12 other authors
View PDFHTML (experimental)Abstract:This paper presents verification-guided development (VGD), a software engineering process we used to build Cedar, a new policy language for expressive, fast, safe, and analyzable authorization. Developing a system with VGD involves writing an executable model of the system and mechanically proving properties about the model; writing production code for the system and using differential random testing (DRT) to check that the production code matches the model; and using property-based testing (PBT) to check properties of unmodeled parts of the production code. Using VGD for Cedar, we can build fast, idiomatic production code, prove our model correct, and find and fix subtle implementation bugs that evade code reviews and unit testing. While carrying out proofs, we found and fixed 4 bugs in Cedar's policy validator, and DRT and PBT helped us find and fix 21 additional bugs in various parts of Cedar.
Subjects: | Software Engineering (cs.SE) |
Cite as: | arXiv:2407.01688 [cs.SE] |
(orarXiv:2407.01688v1 [cs.SE] for this version) | |
https://doi.org/10.48550/arXiv.2407.01688 arXiv-issued DOI via DataCite |
Full-text links:
Access Paper:
- View PDF
- HTML (experimental)
- TeX Source
- Other Formats
View a PDF of the paper titled How We Built Cedar: A Verification-Guided Approach, by Craig Disselkoen and 12 other authors
References & Citations
Bibliographic and Citation Tools
Bibliographic Explorer(What is the Explorer?)
Connected Papers(What is Connected Papers?)
Litmaps(What is Litmaps?)
scite Smart Citations(What are Smart Citations?)
Code, Data and Media Associated with this Article
alphaXiv(What is alphaXiv?)
CatalyzeX Code Finder for Papers(What is CatalyzeX?)
DagsHub(What is DagsHub?)
Gotit.pub(What is GotitPub?)
Hugging Face(What is Huggingface?)
Papers with Code(What is Papers with Code?)
ScienceCast(What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower(What are Influence Flowers?)
CORE Recommender(What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community?Learn more about arXivLabs.