self_encryption
Maintainer: Spandan Sharma (spandan.sharma@maidsafe.net)
Self encrypting files (convergent encryption plus obfuscation)
Crate | Linux/OS X | Windows | Coverage | Issues |
---|---|---|---|---|
| API Documentation - master branch | 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:
- This library deals with file content only
- This library provides very secure data, but does return a data structure (DataMap) that in turn requires to be secured.
Prerequisite
libsodium is a native dependency, and can be installed by following the instructions for Windows or for OS X and Linux.
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 either of
- the MaidSafe.net Commercial License, version 1.0 or later (LICENSE)
- the General Public License (GPL), version 3 (COPYING or http://www.gnu.org/licenses/gpl-3.0.en.html)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MaidSafe Contributor Agreement, version 1.1 ([CONTRIBUTOR] (CONTRIBUTOR)), shall be dual licensed as above, and you agree to be bound by the terms of the MaidSafe Contributor Agreement, version 1.1.