https://github.com/bigbuildbench/maidsafe_self_encryption

https://github.com/bigbuildbench/maidsafe_self_encryption

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: BigBuildBench
  • License: other
  • Language: Rust
  • Default Branch: master
  • Size: 1.23 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog License Codeowners

README.md

self_encryption

Self encrypting files (convergent encryption plus obfuscation)

|Crate|Documentation| |:---:|:-----------:| ||Documentation|

| 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 takes a set of bytes and returns a secret key derived from those bytes, and a set of encrypted chunks. A reverse function is provided, where the pair returned from encryption (secret key and encrypted chunks) is passed in, returning the original bytes. There is also the possibility to seek the original bytes in the contents of the encrypted chunks, by calling the seek helper function to produce information used to locate the relevant chunks, and then call the decrypt_range api with the chunks, the secret key and seek information from the previous step.

There is an important aspect to note:

This library provides very secure encryption of the data, and the returned encrypted chunks can be considered as safe as if encrypted by any other modern encryption algorithm. However the returned secret key requires the same secure handling as would be necessary for any secret key.

image of self encryption

Video of the process

self_encryption process and use case video

Whitepaper

Self Encrypting Data, David Irvine, First published September 2010, Revised June 2015.

Examples

Using self_encryptor

This library splits a set of bytes into encrypted chunks and also produces a secret key for the same. This secret key allows 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 secret_key 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_secret_key> <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

selfencryption 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 selfencryption, you must distribute the source to your modified version under the terms of the GPLv3.

See the LICENSE file for more details.

Contributing

Want to contribute? Great :tada:

There are many ways to give back to the project, whether it be writing new code, fixing bugs, or just reporting errors. All forms of contributions are encouraged!

For instructions on how to contribute, see our Guide to contributing.

Owner

  • Name: BigBuildBench
  • Login: BigBuildBench
  • Kind: organization

abbr. B3, benchmarking the repo-level understanding capability of your LLMs by reconstructing project build-file.

GitHub Events

Total
  • Create event: 5
Last Year
  • Create event: 5

Dependencies

.github/workflows/benchmark.yml actions
  • actions-rs/toolchain v1 composite
  • actions/cache v2.1.4 composite
  • actions/checkout v2 composite
.github/workflows/bump_version.yml actions
  • actions/checkout v2 composite
  • maidsafe/rust-version-bump-branch-creator v2 composite
.github/workflows/commitlint.yml actions
  • actions/checkout v2 composite
  • wagoid/commitlint-github-action f114310111fdbd07e99f47f9ca13d62b3ec98372 composite
.github/workflows/github_release.yml actions
  • actions/checkout v2 composite
  • softprops/action-gh-release 91409e712cf565ce9eff10c87a8d1b11b81757ae composite
.github/workflows/master.yml actions
  • actions-rs/toolchain v1 composite
  • actions/cache v2.1.4 composite
  • actions/checkout v2 composite
.github/workflows/pr.yml actions
  • EmbarkStudios/cargo-deny-action v1 composite
  • actions-rs/toolchain v1 composite
  • actions/cache v2.1.4 composite
  • actions/checkout v2 composite
  • aig787/cargo-udeps-action v1 composite
  • coverallsapp/github-action master composite
  • maidsafe/pr_size_checker v2 composite
  • taiki-e/install-action cargo-llvm-cov composite
.github/workflows/security_audit.yml actions
  • actions-rs/audit-check v1 composite
  • actions/checkout v2 composite
.github/workflows/tag_release.yml actions
  • actions/checkout v2 composite
Cargo.toml cargo
  • criterion ~0.3 development
  • docopt ~0.9.0 development
  • tokio 1.34.0 development