All Projects → josephernest → Nfreezer

josephernest / Nfreezer

Licence: other
nFreezer is an encrypted-at-rest backup tool.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Nfreezer

Signal Back
Decrypt Signal encrypted backups outside the app
Stars: ✭ 468 (+80.69%)
Mutual labels:  backup, encryption
Duplicati
Store securely encrypted backups in the cloud!
Stars: ✭ 6,915 (+2569.88%)
Mutual labels:  backup, encryption
Kopia
Cross-platform backup tool for Windows, macOS & Linux with fast, incremental backups, client-side end-to-end encryption, compression and data deduplication. CLI and GUI included.
Stars: ✭ 507 (+95.75%)
Mutual labels:  backup, encryption
Helib
HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
Stars: ✭ 2,749 (+961.39%)
Mutual labels:  cryptography, encryption
virgil-sdk-cpp
Virgil Core SDK allows developers to get up and running with Virgil Cards Service API quickly and add end-to-end security to their new or existing digital solutions to become HIPAA and GDPR compliant and more.
Stars: ✭ 18 (-93.05%)
Mutual labels:  cryptography, encryption
Sqleet
SQLite3 encryption that sucks less
Stars: ✭ 244 (-5.79%)
Mutual labels:  cryptography, encryption
Rdedup
Data deduplication engine, supporting optional compression and public key encryption.
Stars: ✭ 690 (+166.41%)
Mutual labels:  backup, encryption
Tenseal
A library for doing homomorphic encryption operations on tensors
Stars: ✭ 197 (-23.94%)
Mutual labels:  cryptography, encryption
Photos
[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Stars: ✭ 236 (-8.88%)
Mutual labels:  backup, encryption
Agent
The best way to backup and restore your database
Stars: ✭ 80 (-69.11%)
Mutual labels:  backup, encryption
Nsec
A modern and easy-to-use cryptographic library for .NET Core based on libsodium
Stars: ✭ 217 (-16.22%)
Mutual labels:  cryptography, encryption
flame
Flame is an ActionScript library that provides a number of useful UI controls, collections, cryptographic services, and utilities to work with the Flex SDK.
Stars: ✭ 18 (-93.05%)
Mutual labels:  cryptography, encryption
Pgsodium
Modern cryptography for PostgreSQL using libsodium.
Stars: ✭ 202 (-22.01%)
Mutual labels:  cryptography, encryption
Openssl
TLS/SSL and crypto library
Stars: ✭ 17,157 (+6524.32%)
Mutual labels:  cryptography, encryption
Encrypt
🔒 A set of high-level APIs over PointyCastle for two-way cryptography.
Stars: ✭ 199 (-23.17%)
Mutual labels:  cryptography, encryption
Backup
Easy full stack backup operations on UNIX-like systems.
Stars: ✭ 4,682 (+1707.72%)
Mutual labels:  backup, encryption
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+5757.92%)
Mutual labels:  cryptography, encryption
Pagecrypt
Client-side password-protection for HTML
Stars: ✭ 186 (-28.19%)
Mutual labels:  cryptography, encryption
Bash Snippets
A collection of small bash scripts for heavy terminal users
Stars: ✭ 8,558 (+3204.25%)
Mutual labels:  backup, encryption
paperback
Paper backup generator suitable for long-term storage.
Stars: ✭ 517 (+99.61%)
Mutual labels:  backup, encryption

nFreezer

https://nfreezer.com

nFreezer (for encrypted freezer) is an encrypted-at-rest backup tool, designed specifically for the case when the destination server is untrusted. With nFreezer, the data is safe on the destination server even if a malicious user gets root access to it.
Use case: you can store your private data on a friend's computer, or on a remote server on which you never had physical access and that you don't fully trust.

Features

  • encrypted-at-rest: the data is encrypted locally (using AES), then transits encrypted, and stays encrypted on the destination server. The destination server never gets the encryption key, the data is never decrypted on the destination server.

  • incremental and resumable: if the data is already there on the remote server, it won't be resent during the next sync. If the sync is interrupted in the middle, it will continue where it stopped (last non-fully-uploaded file). Deleted or modified files in the meantime will of course be detected.

  • image graceful file moves/renames/data duplication handling: if you move /path/to/10GB_file to /anotherpath/subdir/10GB_file_renamed, no data will be re-transferred over the network.

    This is supported by some other sync programs, but very rarely in encrypted-at-rest mode.

    Technical sidenote: the SHA256 hashes of the unencrypted files are stored encrypted on the destination (phew!). Thus, no SHA256 hash could be accessed (to get information about your data) in the event of a breach on the destination server.

  • stateless: no local database of the files present on destination is kept. Drawback: this means that if the destination already contains 100,000 files, the local computer needs to download the remote filelist (~15MB) before starting a new sync; but this is acceptable for me.

  • does not need to be installed on remote: no binary needs to be installed on remote, no SSH "execute commands" on the remote, only SFTP is used

  • single .py file project: you can read and audit the full source code by looking at nfreezer.py, which is currently < 300 lines of code.

Installation

You need Python 3.6+, and to do:

pip install nfreezer

and that's all.

(An alternative installation method is to install the requirements with pip install pysftp pycryptodome and just copy the single file nfreezer.py where you want to use it.)

Usage

Backup to a remote server

import nfreezer
nfreezer.backup(src='test/', dest='[email protected]:/test/', sftppwd='pwd', encryptionpwd='strongpassword')

or, from command-line:

nfreezer backup test/ [email protected]:/test/          # Linux
nfreezer backup "D:\My docs\" [email protected]:/test/  # Windows

Restore from a backup

import nfreezer
nfreezer.restore(src='[email protected]:/test/', dest='restored/', sftppwd='pwd', encryptionpwd='strongpassword')

or, from command-line:

nfreezer restore [email protected]:/test/ restored/

Alternatively, if you prefer, you can also copy the remote backuped files (encrypted-at-rest) to a local directory backup_copied/ and restore with nFreezer from this local directory:

nfreezer restore backup_copied/ restored/

Comparison

These are the key points that were important for me, and that's why I coded this tool, but I totally agree it's subjective, and one could easily make a similar table with all the boxes checked for another program and none for mine.

Not handling renames gracefully (and thus retransfer data over the network again and again) was a no-go for me because I often move or rename directories containing multimedia projects with gigabytes of data.

- nFreezer Rsync Rclone Syncthing Duplicity
encrypted-at-rest
(Crypt)

(experimental)
no local database ?
no install needed on remote ?
handles renames gracefully (surprisingly,
no)
(not with Crypt)

Contribution

In order to keep the small-single-file requirement and because maintaining and merging code is a demanding task, this project currently does not accept pull requests.

However, Github issues, including snippets of code, are welcome.

Development

This software is in the early stages of its distribution, at the time of writing (Nov. 2020), so use it at your own risk, and please don't use it for data for which you don't have other backup.

Author

Joseph Ernest

License

MIT with free-of-charge-redistribution clause, see the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].