davidmatos / RockFS

RockFS is a cloud-backed file system resilient to client-side attacks. RockFS protects data in the client device and allows undoing unintended file modifications.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RockFS

RockFS -- is a File System supported by a single cloud or cloud-of-clouds resilient to client side attacks.

RockFS provides two sets of security mechanisms to be integrated with the client-side of a file system:

  • a recovery service capable of undoing unintended file operations without losing valid file operations that occurred after the attack; and
  • device data security mechanisms to safely store encryption keys reducing the probability of having the credentials compromised by attackers and to protect cached data.

RockFS works with a single storage cloud or with several storage clouds (cloud-of-clouds). It is compatible with AWS-S3, BackBlaze B2, Google Cloud Storage, Microsoft AzureBlob and RackSpace Cloud Files. RockFS requires a coordination service an it is compatible with DepSpace and Zookeeper (to de implemented soon). For testing purposes it is also possible to test RockFS without a coordination service, in that case the metadata of the File System is kept in memory during execution and discarded afterwards. The figure below shows the system architecture of RockFS.

System architecture of RockFS

To perform recovery RockFS saves logs of file operations. Each log entry is composed by two parts, the data part, that goes to the storage clouds, and the metadata part, which goes to the coordination service. The figure below shows how loggin is done.

Logging file system operations in RockFS

A video with an example of a file being recovered can be found here.

Getting Started

Prerequisites

RockFS uses FUSE library. You need to install the following tools before using RockFS.

Supported platforms
Linux (sudo apt-get install libfuse-dev) x64 x86
MacOS (via osxfuse) x64 x86
Windows (via winfsp) x64 n/a

Please make sure you have at least Java 7 installed and Maven.

Installing

Before running RockFS execute the following command to install the required libs to you local Maven repository.

sh install.sh

Running RockFS

Before executing RockFS edit the safecloudfs.properties file in config folder.

If you're planning to setup RockFS using DepSpace as the coordination service we recommend the following implementation of DepSpace.

Default execution arguments are set in the pom.xml file.

Arguments

  • --mount [path] - Directory to be mount
  • --config [path] - Path for the RockFS configuration file (For example: config/safecloudfs.properties). More about the configuration file here.
  • -- debug <ALL, SIMPLE, WARNING, SEVERE, INFO, FINE, FINER, FINEST> - Execute with debug log messages

Running localy

mvn exec:java

Running via Docker

If you intend to user DepSpace a the coordination service for RockFS, you need to start it first. Instructions on how to start DepSpace can be found here.

Before running RockFS first edit config/accounts.json with the access credentials to the cloud providers and config/safecloudfs.properties with the configuration of RockFS (for example, to indicate the path to the config folder of DepSpace or the address of the Zookeeper servers).

The Dockerfile in the root of the project allows to execute RockFS through a Debian VM. To build and run the VM execute the following commands:

docker build -t safecloudfs .
docker run -it --privileged --cap-add SYS_ADMIN --device /dev/fuse -i safecloudfs

Then inside the container execute

sh run.sh

Or execute the following command to mount a specific dir located in /path/to/dir:

sh run.sh /path/to/dir

Running via Docker compose

First, edit the accounts.json and safecloudfs.properties files in the docker-compose/SafeCloudFS folder.

Then, inside the folder docker-compose, execute:

docker-compose up

Built With

  • Google - The web framework used
  • Maven - Dependency Management
  • JBDiff - Used to create log entries of users' operations

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • Prof. Miguel Correia, Prof. Miguel L. Pardal and Prof. Georg Carle
  • Alysson Bessani for the development of the PVSS lib used;
  • The contributors of the SCFS, DepSky, DepSpace and SMaRT-BFT projects.

About

RockFS is a cloud-backed file system resilient to client-side attacks. RockFS protects data in the client device and allows undoing unintended file modifications.

License:MIT License


Languages

Language:Java 98.0%Language:Dockerfile 1.2%Language:Shell 0.8%