self_encryption

Primary Maintainer: Brian Smith (brian.smith@maidsafe.net)

Secondary Maintainer: Qi Ma (qi.ma@maidsafe.net)

Self encrypting files (convergent encryption plus obfuscation)

|Crate|Linux/OS X|Windows|Coverage|Issues| |:---:|:--------:|:-----:|:------:|:----:| ||Build Status|Build status|Coverage Status|Stories in Ready|

| API Documentation - master branch | SAFE Network System Documentation | MaidSafe website | SAFE Network Forum | |:------:|:-------:|:-------:|:-------:|

Overview

A version of convergent encryption with an additional obfuscation step. This pattern allows secured data that can also be de-duplicated. This library presents an API that can be utilised in any application that provides a POSIX like filesystem interface, dealing very effectively with the content part of any data (in tests the parallelised approach can actually be faster than reading/writing data as a single stream). It is important to realise two important aspects of this library:

  1. This library deals with file content only
  2. This library provides very secure data, but does return a data structure (DataMap) that in turn requires to be secured.

image of self encryption

Prerequisite

libsodium is a native dependency, and can be installed by following the instructions for Windows or for OS X and Linux.

Todo Items

Video of the process

self_encryption process and use case video

Examples

Using self_encryptor

This library splits a file into encrypted chunks and also produces a data map for the same. This data map with encrypted chunks enables the file to be reconstituted. Instructions to use the 'basic_encryptor' example are as follows:

  1. Install RUST(Nightly build).

  2. Install gcc.

  3. Clone this repo / Download as zip and extract archive.

  4. Browse to repo locally in terminal / command prompt.

  5. Encrypt a file:

    You should now have the example binary in ../self_encryption/target/debug/examples/. The data_map for the given file and it's encrypted chunks will be written to the current directory.

  6. Decrypt a file:

    This will restore the original file to the given destination path.