• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    Rust
  • License
    Other
  • Created over 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

file self encryptor

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

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.

Contributing

Want to contribute? Great 🎉

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.

More Repositories

1

qp2p

peer-to-peer communications library for Rust based on QUIC protocol
Rust
359
star
2

sn_routing

Routing - specialised storage DHT
Rust
276
star
3

sn_browser

Safe Network Browser Application
TypeScript
201
star
4

crdt_tree

Rust
117
star
5

temp_safe_network

The Safe Network. A libp2p backed data and transfer network
Rust
109
star
6

lru_time_cache

LRU cache settable via size or time to live
Rust
100
star
7

rfcs

Request for Comment (RFC) papers and discussions on Project SAFE core libraries and APIs
Rust
97
star
8

rust_sodium

This crate is no longer maintained. Looking for maintainers.
Rust
78
star
9

sn

The Safe Network Core. API message definitions, routing and nodes, client core api.
Rust
68
star
10

safe_network

Rust
56
star
11

sn_data_types

Safe Network Data Types
Rust
24
star
12

maidsafe-utilities

Utility functions
Rust
22
star
13

bls_dkg

Implementation of a BLS DKG mechanism, requires signing key, encryption key and SocketAddr of participants
Rust
20
star
14

sn_nodejs

Rust
18
star
15

blsttc

poanetwork/threshold_crypto using supranational/blst for sign+verify
Rust
18
star
16

safenetwork.tech

JavaScript
16
star
17

QA

JavaScript
15
star
18

sn_launch_tool

A cross platform tool to easily launch a SAFE Network test section from home
Rust
12
star
19

sn_transfers

Implementation of Transfers in the SAFE Network.
Rust
11
star
20

xor_name

Small library. XorName is an array that is useful for calculations in DHT etc.
Rust
11
star
21

safe-web-id-manager-js

JavaScript
10
star
22

maidsafe.net

Repository for maidsafe.net company website
CSS
10
star
23

sn_dbc

Safe Network DBCs
Rust
10
star
24

qjsonrpc

Provides the implementation of JSON-RPC over QUIC, which is required by the Authenticator daemon communication protocol.
Rust
10
star
25

dev-website

SAFE Network Dev Website source.
JavaScript
9
star
26

brb

Rust
9
star
27

safe-patter-js

JavaScript
8
star
28

sn_messaging

Rust
8
star
29

sn_testnet_tool

Just
7
star
30

sn_entropy_check

Rust
6
star
31

sn_fs

Rust
5
star
32

sn_cli

A Rust application which implements a CLI (Command Line Interface) for the Safe Network.
Rust
5
star
33

routing_model

Documentation of the control and message flows in Routing, and tests for validating these.
Rust
5
star
34

Whitepapers

MaidSafe Whitepapers
TeX
4
star
35

brb_membership

Rust
4
star
36

brb_node_qp2p

Rust
4
star
37

sn_authd

Rust
4
star
38

sn_sdkg

Synchronous Distributed Key Generation
Rust
4
star
39

sn_consensus

Rust
4
star
40

pr_size_checker

A GitHub Action which checks the number of additions and deletions made in each submitted PR, adding them together to come up with a total lines changed value, then checking whether this value exceeds the default or set max_lines_changed value. If it does exceed then the CI job will exit with code 1, i.e. fail.
4
star
41

sn_diagrams

Diagrams of the Safe Network codebase structure
HTML
3
star
42

brb_dt_orswot

Rust
3
star
43

brb_dt_at2

Rust
3
star
44

bls_ringct

Rust
3
star
45

bls_signature_aggregator

A Generic BLS Signature Accumulator for SAFE Network
Rust
3
star
46

brb_dt_tree

Rust
3
star
47

rust-version-bump-branch-creator

Bump your rust repo's version automatically, using conventional commits to generate a changelog and determine the correct new version.
JavaScript
3
star
48

sn_url

Rust
2
star
49

secured_linked_list

Rust
2
star
50

resource_proof

A 'proof' of bandwidth, cpu and storage for nodes in a decentralised network
Rust
2
star
51

bls_bulletproofs

Rust
1
star
52

blog-redirection

HTML
1
star
53

sn_testnet_action

1
star
54

safeup

Install and update safe-related components
Rust
1
star
55

cargo-nextest

Github Action for performing a test run using Nextest
1
star
56

sn-local-testnet-action

Github Action for administering local testnets
1
star