<div dir="ltr"><div><div>Hello,</div><div><br></div><div>My name is Cristian Toader, and I feel very excited about designing and implementing a capabilities based sandbox for the central Tor project, as part of the GSOC program. </div>
<div><br></div><div>----</div><div>About myself:</div><div><br></div><div>I have been a Linux enthusiast for almost 6 years and have first started using Tor around 3 years ago. </div><div><br></div><div>I am currently studying in the UK. In approximately one month I will be graduating the Computer Science programme at the University of Surrey, and plan on pursuing a master's degree in Advanced Computer Science at the University of Cambridge for the following academic year.</div>
<div> </div><div>I have completed a placement year at Qualcomm (UK) LTD which involved implementing and testing security solutions for the Linux Android OS. These were based on cryptography and the TrustZone run-mode of the ARM processors. Most of the development during the placement year was performed in C, with some tests written in Java and C++ for the upper layers.</div>
<div><br></div><div><div>----</div><div>About the project:</div></div><div><br></div><div>The project I will be working on as part of GSOC is based on the "Run With Limited Capabilities" proposal [1] mentored by Nick Mathewson (nickm) and Andrea Shepard (athena). The project is still in the planning stage. I will start working on an appropriate design as soon as I finish my last exams, which is the 3rd of June.</div>
<div><br></div><div>As part of the project I will need to:</div><div>  - investigate research papers regarding capability based sandboxes</div><div>  - get familiar with the Tor code structure</div><div>  - decide on whether there should be different states starting from which the tor program only has a limited set of capabilities, depending on what syscalls it should be able to perform; or maybe have a more complex approach based on a trusted process representing a root of trust (with no network interactions) which controls the capabilities of the processes it launches</div>
<div>  - integrate an appropriate solution</div><div>  - develop and run tests for the project</div><div>  </div><div>A constraint agreed with nickm, would be that once the program capabilities are set they should not be modifiable (otherwise a potential attacker could have the option of first enabling capabilities and then execute privileged code).</div>
<div><br></div><div>Some additional details can be found in tickets #7005 [2], #5219 [3], and #5220 [4].</div><div><br></div><div>I will try to keep everyone updated. I am looking forward to advice and suggestions. If anyone needs to contact me, this is my primary email, my <a href="http://irc.oftc.net">irc.oftc.net</a> username is ctoader, and I am geographically located in GMT+2.</div>
<div><br></div><div>Best regards,</div><div>Cristian Toader.</div><div><br></div><div>[1] <a href="https://www.torproject.org/getinvolved/volunteer.html.en#limitCapabilities">https://www.torproject.org/getinvolved/volunteer.html.en#limitCapabilities</a></div>
<div>[2] <a href="https://trac.torproject.org/projects/tor/ticket/7005">https://trac.torproject.org/projects/tor/ticket/7005</a></div><div>[3] <a href="https://trac.torproject.org/projects/tor/ticket/5219">https://trac.torproject.org/projects/tor/ticket/5219</a></div>
<div>[4] <a href="https://trac.torproject.org/projects/tor/ticket/5220">https://trac.torproject.org/projects/tor/ticket/5220</a></div></div><div><br></div></div>