CS161 Fall 2020 Project 2: Secure File Store


REGULUS banner

Welcome to the REGULUS (REGUlated LUnar Storage) user guide. We hope you enjoy using our malicious lunar data storage, and we certainly hope no one tries securely storing data on our insecure systems using their cryptography knowledge from a computer security class.

In this project, you’ll apply the cryptographic primitives introduced in class to build a secure file storage client.

The file sharing system consists of many users and two servers.

  • Each user runs a client program, which connects to the servers.
  • The first server, Datastore, provides a key-value store for everyone.
  • The second server, Keystore, provides a public key store for everyone.

You will be implementing the stateless client program for the users. A completely functional client will allow users to:

  • Store and load files.
  • Share files with other users.
  • Revoke another user’s access to a shared file.

We provide a number of functions that you can use to interact with the servers and implementations of cryptographic algorithms. We also specify the APIs for the client-side functions you must implement. The documentation for each function identifies the requirements your implementation must meet.

  • Sections 1-4: documentation of APIs for code we provide.
  • Section 5-6: requirements for the code you must implement.

As always, if you have questions about or find errors in this documentation, please make a post on Piazza.