Skip to content

Commit f3b09aa

Browse files
Update readme (#54)
1 parent 0a69259 commit f3b09aa

File tree

1 file changed

+3
-185
lines changed

1 file changed

+3
-185
lines changed

README.md

Lines changed: 3 additions & 185 deletions
Original file line numberDiff line numberDiff line change
@@ -1,193 +1,11 @@
1-
# ![TockOS](http://www.tockos.org/assets/img/tock.svg "TockOS Logo")
1+
# TickTock
22

33
This repository contains TickTock-a fork of the Tock OS that verifies memory isolation for user space processes. [Flux](https://github.com/flux-rs/flux) is used for the verification.
44

5-
[![paper]](https://dl.acm.org/doi/epdf/10.1145/3731569.3764856)
5+
You can find the paper [here](https://dl.acm.org/doi/epdf/10.1145/3731569.3764856).
66

77
The main verification bits can be found under the `kernel` directory, along with the arch directory. Specifically, `allocator.rs` contains the memory allocator referenced in the paper. `arch/cortex-m/src/mpu.rs` contains the MPU implementation for ARMv6m and ARMv7m devices. `arch/rv32i/src/pmp.rs` contains the MPU implementation for RISC devices.
88

99
You can find Lean proofs for SMT solver issues in this [repo](https://github.com/PLSysSec/vtock-lean). Verification of the ARM interrupt handlers and context switching code can be found in this [repo](https://github.com/PLSysSec/tock-veri-asm).
1010

11-
[![tock-ci](https://github.com/tock/tock/workflows/tock-ci/badge.svg)][tock-ci]
12-
[![slack](https://img.shields.io/badge/slack-tockos-informational)][slack]
13-
[![book](https://img.shields.io/badge/book-Tock_Book-green)][tock-book]
14-
15-
Tock is an embedded operating system designed for running multiple concurrent,
16-
mutually distrustful applications on Cortex-M and RISC-V based embedded
17-
platforms. Tock's design centers around protection, both from potentially
18-
malicious applications and from device drivers. Tock uses two mechanisms to
19-
protect different components of the operating system. First, the kernel and
20-
device drivers are written in Rust, a systems programming language that provides
21-
compile-time memory safety and type safety. Tock uses Rust to protect the kernel
22-
(e.g. the scheduler and hardware abstraction layer) from platform specific
23-
device drivers as well as isolate device drivers from each other. Second, Tock
24-
uses memory protection units to isolate applications from each other and the
25-
kernel.
26-
27-
[tock-ci]: https://github.com/tock/tock/actions?query=branch%3Amaster+workflow%3Atock-ci
28-
29-
Tock 2.x!
30-
---------
31-
32-
Tock is now on its second major release! For a summary of the latest new
33-
features and improvements, check out the [changelog](CHANGELOG.md).
34-
35-
36-
Getting Started
37-
---------------
38-
39-
There are a variety of resources for learning about Tock, contributing to the
40-
project, and getting help.
41-
42-
- About Tock
43-
- [The Tock Book][tock-book]: online tutorials and documentation
44-
- [Getting Started with Secure Embedded Systems][book-systems]: Tock textbook
45-
- Developing Tock
46-
- [Tock API Docs][tockapidoc]
47-
- [Contributing Guide](.github/CONTRIBUTING.md)
48-
- [Code Review Guidelines](doc/CodeReview.md)
49-
- Getting Help
50-
- [Slack Channel][slack]
51-
- [Email List](https://lists.tockos.org)
52-
- [Tock Blog](https://www.tockos.org/blog/)
53-
- [@talkingtock](https://twitter.com/talkingtock)
54-
55-
[slack]: https://join.slack.com/t/tockos/shared_invite/enQtNDE5ODQyNDU4NTE1LWVjNTgzMTMwYzA1NDI1MjExZjljMjFmOTMxMGIwOGJlMjk0ZTI4YzY0NTYzNWM0ZmJmZGFjYmY5MTJiMDBlOTk
56-
57-
[tock-book]: https://book.tockos.org
58-
59-
[book-systems]: https://link.springer.com/book/10.1007/978-1-4842-7789-8
60-
61-
[tockapidoc]: https://docs.tockos.org
62-
63-
64-
Code of Conduct
65-
---------------
66-
67-
The Tock project adheres to the Rust [Code of Conduct][coc].
68-
69-
All contributors, community members, and visitors are expected to familiarize
70-
themselves with the Code of Conduct and to follow these standards in all
71-
Tock-affiliated environments, which includes but is not limited to repositories,
72-
chats, and meetup events. For moderation issues, please contact members of the
73-
@tock/core-wg.
74-
75-
[coc]: https://www.rust-lang.org/conduct.html
76-
77-
78-
Cite this Project
79-
-----------------
80-
81-
<h4>Tock was presented at SOSP'17</h4>
82-
83-
Amit Levy, Bradford Campbell, Branden Ghena, Daniel B. Giffin, Pat Pannuto, Prabal Dutta, and Philip Levis. 2017. Multiprogramming a 64kB Computer Safely and Efficiently. In Proceedings of the 26th Symposium on Operating Systems Principles (SOSP ’17). Association for Computing Machinery, New York, NY, USA, 234–251. DOI: https://doi.org/10.1145/3132747.3132786
84-
85-
<p>
86-
<details>
87-
<summary>Bibtex</summary>
88-
<pre>
89-
@inproceedings{levy17multiprogramming,
90-
title = {Multiprogramming a 64kB Computer Safely and Efficiently},
91-
booktitle = {Proceedings of the 26th Symposium on Operating Systems Principles},
92-
series = {SOSP'17},
93-
year = {2017},
94-
month = {10},
95-
isbn = {978-1-4503-5085-3},
96-
location = {Shanghai, China},
97-
pages = {234--251},
98-
numpages = {18},
99-
url = {http://doi.acm.org/10.1145/3132747.3132786},
100-
doi = {10.1145/3132747.3132786},
101-
acmid = {3132786},
102-
publisher = {ACM},
103-
address = {New York, NY, USA},
104-
conference-url = {https://www.sigops.org/sosp/sosp17/},
105-
author = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Giffin, Daniel B. and Pannuto, Pat and Dutta, Prabal and Levis, Philip},
106-
}
107-
</pre>
108-
</details>
109-
</p>
110-
111-
112-
<p>This is the primary paper that describes the design considerations of Tock.</p>
113-
114-
<details>
115-
<summary>Other Tock-related papers</summary>
116-
117-
<p>There are two shorter papers that look at potential limitations of the Rust language for embedded software development. The earlier PLOS paper lays out challenges and the later APSys paper lays out potential solutions. Some persons describing work on programming languages and type theory may benefit from these references, but generally, most work should cite the SOSP paper above.</p>
118-
<h4><a href="http://doi.acm.org/10.1145/3124680.3124717">APSys: The Case for Writing a Kernel in Rust</a></h4>
119-
<pre>
120-
@inproceedings{levy17rustkernel,
121-
title = {The Case for Writing a Kernel in Rust},
122-
booktitle = {Proceedings of the 8th Asia-Pacific Workshop on Systems},
123-
series = {APSys '17},
124-
year = {2017},
125-
month = {9},
126-
isbn = {978-1-4503-5197-3},
127-
location = {Mumbai, India},
128-
pages = {1:1--1:7},
129-
articleno = {1},
130-
numpages = {7},
131-
url = {http://doi.acm.org/10.1145/3124680.3124717},
132-
doi = {10.1145/3124680.3124717},
133-
acmid = {3124717},
134-
publisher = {ACM},
135-
address = {New York, NY, USA},
136-
conference-url = {https://www.cse.iitb.ac.in/~apsys2017/},
137-
author = {Levy, Amit and Campbell, Bradford and Ghena, Branden and Pannuto, Pat and Dutta, Prabal and Levis, Philip},
138-
}</pre>
139-
140-
<h4><a href="http://dx.doi.org/10.1145/2818302.2818306">PLOS: Ownership is Theft: Experiences Building an Embedded OS in Rust</a></h4>
141-
<pre>
142-
@inproceedings{levy15ownership,
143-
title = {Ownership is Theft: Experiences Building an Embedded {OS} in {R}ust},
144-
booktitle = {Proceedings of the 8th Workshop on Programming Languages and Operating Systems},
145-
series = {PLOS 2015},
146-
year = {2015},
147-
month = {10},
148-
isbn = {978-1-4503-3942-1},
149-
doi = {10.1145/2818302.2818306},
150-
url = {http://dx.doi.org/10.1145/2818302.2818306},
151-
location = {Monterey, CA},
152-
publisher = {ACM},
153-
address = {New York, NY, USA},
154-
conference-url = {http://plosworkshop.org/2015/},
155-
author = {Levy, Amit and Andersen, Michael P and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat},
156-
}</pre>
157-
<p>There is also a paper on the Tock security model. The threat model documentation in the docs/ folder is the source of truth for the current Tock threat model, but this paper represents a snapshot of the reasoning behind the Tock threat model and details how it compares to those in similar embedded OSes.</p>
158-
<h4><a href="https://dx.doi.org/10.1145/3517208.3523752">EuroSec: Tiered Trust for useful embedded systems security</a></h4>
159-
<pre>
160-
@inproceedings{10.1145/3517208.3523752,
161-
author = {Ayers, Hudson and Dutta, Prabal and Levis, Philip and Levy, Amit and Pannuto, Pat and Van Why, Johnathan and Watson, Jean-Luc},
162-
title = {Tiered Trust for Useful Embedded Systems Security},
163-
year = {2022},
164-
isbn = {9781450392556},
165-
publisher = {Association for Computing Machinery},
166-
address = {New York, NY, USA},
167-
url = {https://doi.org/10.1145/3517208.3523752},
168-
doi = {10.1145/3517208.3523752},
169-
booktitle = {Proceedings of the 15th European Workshop on Systems Security},
170-
pages = {15–21},
171-
numpages = {7},
172-
keywords = {security, embedded systems, operating systems, IoT},
173-
location = {Rennes, France},
174-
series = {EuroSec '22}
175-
}</pre>
176-
</details>
177-
178-
179-
License
180-
-------
181-
182-
Licensed under either of
183-
184-
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
185-
http://www.apache.org/licenses/LICENSE-2.0)
186-
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
187-
http://opensource.org/licenses/MIT)
188-
189-
at your option.
190-
191-
Unless you explicitly state otherwise, any contribution intentionally submitted
192-
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
193-
be dual licensed as above, without any additional terms or conditions.
11+
The original Tock repo can be found [here](https://github.com/tock/tock).

0 commit comments

Comments
 (0)