SOLVED:Programming Assignment 4: An Encrypted Filesystem

35.00 $

Click Category Button to View Your Next Assignment | Homework

You'll get a download link with a: . zip solution files instantly, after Payment


5/5 - (1 vote)

1 Assignment IntroductionIn 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 pa4encfs is mounted on the directory /tmp/pa4fs and is set to mirror the directory /home/user, then any action performed on the file /tmp/pa4fs/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 pa4encfs system will perform encryption and decryption as necessary. Thus, if you create a new file /tmp/pa4fs/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/pa4fs/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. On Ubuntu, start by running sudo apt-get update to update your package list. Then run sudo apt-get install cu-cs-csci3753 to install the required packages. You will need a working Internet connection in order to insure these packages install correctly. Some packages may have their own dependencies, but apt-get will automatically take care of installing these for you. In addition to the dependencies discussed above, you may need to enable extended attribute support on your system. This is done by adding the user xattr mount option to any mount point on which you wish to use extended attributes in your /etc/fstab auto-mount configuration file. For example, on the Ubuntu 12.04 CS3753 VM, you must modify the following /etc/fstab line: