CSCI 3753 Programming Assignment 5: An Encrypted Filesystem solution

$24.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (1 vote)

1 Assignment Introduction
In this assignment, we take a closer look at filesystems. You will be writing a mirroring
filesystem that provides a transparent encryption wrapper on top of an exiting file system.
Specifically, you will be using FUSE[2] (Filesystems in USErspace) to implement your filesystem,
extended attributes (xattr) to differentiate between encrypted and unencrypted files,
and the OpenSSL[8] crypto[10] library to provide secure encryption.
The filesystem itself is a simple mirrored pass-through filesystem. For example, if our pa5-
encfs is mounted on the directory /tmp/pa5fs and is set to mirror the directory /home/user,
then any action performed on the file /tmp/pa5fs/foo.txt will be translated into an action
on the file /home/user/foo.txt.
Instead of just directly passing actions to the underlying mirrored file, however, your pa5-
encfs system will perform encryption and decryption as necessary. Thus, if you create a new
file /tmp/pa5fs/bar.txt in the aforementioned setup and write some data to it, the data will
be encrypted before being written to the backing /home/user/bar.txt file. Likewise, if you
were to read the /tmp/pa5fs/bar.txt file, your filesystem would read the backing encrypted
/home/user/bar.txt file and decrypt the contents before passing it to you. If you were to try
to read the backing /home/user/bar.txt file directly, you would just get encrypted binary
gibberish. When your filesystem is unmounted, your data will be securely stored in the
mirrored directory and indecipherable to anyone who may encounter it.
2 Your Task
The assignment is primarily a systems project. Thus, you will likely spend more time pulling
together and learning to assemble a diverse set of existing APIs then you will spend writing
actual code.
This work is best accomplished in a disciplined, iterative manner. Take it one step at a
time, and make sure each step is functioning before moving on, and you will do well. Note
that a working partial solution is worth more credit then a broken “full” solution.
1
2.1 Dependencies and Setup
This assignment has several dependencies that must be installed in order for the provided
code to build correctly. Note that all of these should already be installed on your CS
CU VM. If you are using a different system, you may have to install them manually. On
Ubuntu, start by running sudo apt-get update to update your package list. Then run
sudo apt-get install