An open API service indexing awesome lists of open source software.

https://github.com/makischristou/crabguard

🦀🔒 crabguard: A cli tool for end-to-end encryption for s3 storage
https://github.com/makischristou/crabguard

aes backblaze-b2 cli cloud cloud-storage crabguard cryptography encryption rclone rust rustlang s3

Last synced: 4 months ago
JSON representation

🦀🔒 crabguard: A cli tool for end-to-end encryption for s3 storage

Awesome Lists containing this project

README

          

🦀🔒 crabguard: A cli tool for end-to-end encryption for remote and local storage

[![crates.io](https://buildstats.info/crate/crabguard)](https://crates.io/crates/crabguard)

## Features
- Encrypted upload, download and delete operations on Amazon S3 storage
- AES-GCM symmetric encryption with random 96-bit nonce
- Hashed filenames using sha256
- File chuking (currently chunk size is hardcoded to 1MB)
- Resume upload/download when interuppted
- Handles big files (as large as the disk can handle)

## Future Work
- Handle incomplete/corrupted files
- Password based key derivation
- Dynamic file chunking
- Improve latency and performance (e.g. upload/download multiple chunks in separate connections)

## Getting started
Create a `.env` file like so

```
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION_NAME=us-west-004
AWS_ENDPOINT=s3.us-west-004.backblazeb2.com
AWS_BUCKET_NAME=testbucket
```

When the upload command is run a new key will be generated and stored in your `.env` file. It goes without saying that you should backup this key. If you lose it you can't decrypt your files or even the filenames.

## Common Commands

```bash
cargo r --release -- upload ~/Downloads/23-08-11\ 11-35-15\ 3555.jpg
```

```bash
cargo r --release -- download 23-08-11\ 11-35-15\ 3555.jpg
```

```bash
cargo r --release -- delete 23-08-11\ 11-35-15\ 3555.jpg
```

```bash
cargo r --release -- list
```

```bash
cargo r --release -- mnemonic
```

```bash
cargo r --release -- keygen "train switch nuclear device polar tilt shift hurry board stick recall device"
```