Skip to content
file self encryptor
Rust
Branch: master
Clone or download
ustulation Merge pull request #250 from lionel1704/storage-refactor
Add generate address function to the Storage trait
Latest commit 0e415d6 Aug 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benches chore/all: update rand and remove maidsafe_utilities Jul 26, 2019
examples refactor/storage: refactor the Storage trait to include a generate Aug 2, 2019
img add image Feb 24, 2015
src refactor/storage: refactor the Storage trait to include a generate Aug 2, 2019
tests
.gitignore
.travis.yml chore/all: update some deps and fix warnings Jul 26, 2019
CHANGELOG.md Version change to 0.14.0 (#247) May 29, 2019
Cargo.toml chore/sequencer: update memmap and so avoid unsafe code Jul 26, 2019
LICENSE [MAID-2652] chore/license: update license to include linking exception May 10, 2018
README.md docs/readme:update travis CI url Feb 28, 2019
appveyor.yml chore/all: update some deps and fix warnings Jul 26, 2019
codeowners chore/codeowners:added codeowners file Mar 13, 2019
rustfmt.toml chore/fmt: format using rustfmt 0.8.2-nightly May 31, 2018

README.md

self_encryption

Self encrypting files (convergent encryption plus obfuscation)

Crate Documentation Linux/macOS Windows Issues
Documentation Build Status Build status Stories in Ready
MaidSafe website SAFE Dev Forum 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

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:

Encrypt a file:
cargo run --example basic_encryptor -- -e <full_path_to_any_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.

Decrypt a file:
cargo run --example basic_encryptor -- -d <full_path_to_data_map> <full_destination_path_including_filename>

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

License

Licensed under the General Public License (GPL), version 3 (LICENSE http://www.gnu.org/licenses/gpl-3.0.en.html).

Linking exception

self_encryption is licensed under GPLv3 with linking exception. This means you can link to and use the library from any program, proprietary or open source; paid or gratis. However, if you modify self_encryption, you must distribute the source to your modified version under the terms of the GPLv3.

See the LICENSE file for more details.

You can’t perform that action at this time.