1 Assignment IntroductionIn this assignment, we take a closer look at lesystems. You will be writing a mirroring lesystem that provides a transparent encryption wrapper on top of an exiting le system. Specically, you will be using FUSE[2] (Filesystems in USErspace) to implement your lesystem, extended attributes (xattr) to dierentiate between encrypted and unencrypted les, and the OpenSSL[8] crypto[10] library to provide secure encryption. The lesystem itself is a simple mirrored pass-through lesystem. 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 le /tmp/pa4fs/foo.txt will be translated into an action on the le /home/user/foo.txt. Instead of just directly passing actions to the underlying mirrored le, however, your pa4encfs system will perform encryption and decryption as necessary. Thus, if you create a new le /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 le. Likewise, if you were to read the /tmp/pa4fs/bar.txt le, your lesystem would read the backing encrypted /home/user/bar.txt le and decrypt the contents before passing it to you. If you were to try to read the backing /home/user/bar.txt le directly, you would just get encrypted binary gibberish. When your lesystem 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 conguration le. For example, on the Ubuntu 12.04 CS3753 VM, you must modify the following /etc/fstab line:
Programming
[Solved] SOLVED:Programming Assignment 4: An Encrypted Filesystem
$25
File Name: SOLVED:Programming_Assignment_4:_An_Encrypted_Filesystem.zip
File Size: 527.52 KB
Only logged in customers who have purchased this product may leave a review.
Reviews
There are no reviews yet.