Research Project

Read Capsicum (Watson et al., 2010)

I re-read this paper, but in the context of my project’s work, it provided some incredibly useful insight. I’ve listed the most important takeaways here, but there are more.

  • My niche might now be figured out. Capsicum discusses eliminating dual-coding by only being in the code, at the cost of potential static analysis. By using high-level language integrations, I think that my solution can achieve both being integral to the code and having a static description.

  • I should replace my cp example with modifying gzip. They run into very similar privilege separation problems but gzip is a bit more interesting and allows for comparison with Capsicum if it becomes relevant.

  • Many of the figures align well with what I’m trying to achieve. Learning from some of these and creating similar for my project will likely be valuable.

The overall conclusions here is that the work is fairly similar but taking a different approach. Comparisons are worthwhile.

Wrote an early dissertation draft

I’ve been in a bit of a slump and some of the work directions were feeling a little aimless. To counteract this, I have written a dissertation draft (pre-alpha…).

  • In the ACM paper format, as I have become most familiar with reading and reviewing papers of this format. This will (hopefully) allow me to review my own work effectively.

  • Wrote a related work section.

  • Started defining a threat model, may expand it depending on how much room is available.

  • Started defining the unique contributions of this project.

  • Wrote some filler on related work (containers, systemd and Capsicum).

  • Started creating figures (these are also very alpha).

  • Wrote code listings and text as if features are finished, to motivate finishing the features.

  • The work is available here on Overleaf (permissions required), here on Gitea (no permissions required), and a current draft is available here.

Up Next

This up next section is built from the gaps found when writing my draft. That is, the features which are best suited to make the dissertation flow properly.

  • Analyse the different file descriptor passing methods and finish §3.1 with a comparison.

  • Finish networking. A clear design for this now exists in Figure 2.

    • Write an overrides system for the specification. E.g. a DNS server might default to port 53 statically, but there needs to be some way to modify this when executing the application. Should be trivial.
    • Write a very basic TLS server (perhaps hello world) to take advantage of this before moving on to the proper TLS server.
  • Write a privilege separated gzip.

  • Working on the language frontend for Rust (first) is going to be extremely important to the project now. That isn’t allocated for this specific block but it should be on my mind.

  • Importantly: incorporate each of these features into the dissertation draft as they complete. It’s important to show how each feature is contributing to the project.

Modules

Introduction to Systems Research

  • Read CryptDB (Popa et al., 2011), Ryoan (Hunt et al., 2016), and Federated Learning (Bonawitz et al., 2019). Presented CryptDB.
  • Read IronFleet (Hawblitzel et al., 2015), I4 (Ma et al., 2019), and Serval (Nelson et al., 2019). Reviewed I4.
  • It’s exceedingly important not to make assertions in the privacy work, which falls close to mine. It was the main hole in most of these pieces of work. Also, verification is not for me.
  • Perhaps more importantly, the module is now complete, and 100% of my time is for the research project now.