Cryfs
Cryptographic filesystem for the cloud
Install / Use
/learn @cryfs/CryfsREADME
CryFS 2.0 (Alpha)
⚠️ ALPHA VERSION WARNING ⚠️
CryFS 2.0-alpha is experimental software. You WILL lose your data. Do not use it for anything important.
For stable CryFS, please use CryFS 1.0. You can find installation instructions for the stable version here.
CryFS 2.0 is in an alpha stage that has not undergone extensive testing. Use it only for testing purposes and please report any issues in the GitHub issue tracker.
What is CryFS?
CryFS encrypts your files so you can safely store them in cloud storage services like Dropbox, iCloud, or OneDrive. Unlike other encryption tools that encrypt files individually, CryFS encrypts your files in a way that also hides file sizes, directory structure, and metadata, providing a higher level of security.
Learn more at https://www.cryfs.org
What's New in CryFS 2.0?
CryFS 2.0 is a complete rewrite from scratch in Rust, bringing improved memory safety. This version is currently in alpha and represents a major evolution of the project.
Key Changes
To ensure compatiblity with CryFS 1.0, CryFS 2.0 does not add any features that would make the filesystem incompatible with Cryfs 1.0. New breaking changes are planned for future versions after CryFS 2.0 is stable. However, there are a few minor differences between CryFS 1.0 and 2.0.
New Features:
- Configurable scrypt parameters when creating new file systems
- Updated default scrypt parameters for better security
- Human-readable duration format for
--unmount-idle(e.g.,5m,1h30m) - More explicit units for
--blocksize(e.g.,16KiB) - More flexible logging with
--logargument (e.g.,--log file:/path/to/file.log)
Breaking Changes:
- Command line options have changed (see Command Line Changes below)
- Limited cipher support: only XChaCha20 and AES are available
- Reduced platform support: only Linux is currently supported
Platform Support
| Platform | Status | |----------|--------| | Linux | ✅ Working | | macOS | ❓ Untested (may or may not work) | | Windows | ❌ Not yet supported |
Compatibility with CryFS 1.0
Filesystem Compatibility
File systems are fully forward and backward compatible between CryFS 1.0 and 2.0, with important caveats:
✅ Compatible:
- File systems created with XChaCha20 cipher (the default in 1.0 and 2.0)
- File systems created with AES-256-GCM cipher
- Integrity checks using block versioning are fully compatible
⚠️ Partially Compatible:
- Local state files: The filesystem ID verification (protection against filesystem replacement attacks) uses separate local state files in 1.0 vs 2.0. Both versions perform this check, but they don't sync with each other.
❌ Incompatible:
- File systems created with other ciphers (e.g., Twofish, Serpent) are not accessible in CryFS 2.0
- There are no plans to add all ciphers from CryFS 1.0 to the Rust version because many are outdated and don't have an implementaton that can be called from Rust easily.
Command Line Changes
The following command line arguments have changed:
| 1.0 Syntax | 2.0 Syntax | Notes |
|------------|------------|-------|
| --unmount-idle 10 | --unmount-idle 10m | Now requires unit: 5m, 1h30m, etc. |
| --blocksize 16384 | --blocksize 16KiB | Now requires unit: 16KiB, 1MiB, etc. |
| --logfile /path/to/file.log | --log file:/path/to/file.log | More generic logging format |
| cryfs vaultdir mountdir -- -o allow_other | cryfs vaultdir mountdir -o allow_other | Double-dash syntax removed |
The list of supported FUSE options that can be passed in with -o is now limited to options that are known to work well with CryFS. See cryfs --help for the complete list.
Installation
Linux
Building from Source
Prerequisites:
- Rust toolchain (install from rustup.rs)
- Build dependencies
- Ubuntu/Debian:
sudo apt install build-essential pkg-config libssl-dev - Fedora:
sudo dnf install fuse3-devel - Arch:
sudo pacman -S fuse3
- Ubuntu/Debian:
Build and Install:
git clone https://github.com/cryfs/cryfs
cd cryfs
cargo build --release
sudo cp target/release/cryfs /usr/local/bin/
macOS
Not yet tested. May work if you have macFUSE installed, but no guarantees.
Windows
Windows support is not yet available in CryFS 2.0.
Usage
Creating a New Encrypted Filesystem
cryfs /path/to/encrypted/storage /path/to/mountpoint
You'll be prompted to create a password. CryFS will create its encrypted storage in the first directory and mount the decrypted filesystem at the mountpoint.
Mounting an Existing Filesystem
Use the same command:
cryfs /path/to/encrypted/storage /path/to/mountpoint
You'll be prompted for your password.
Unmounting
fusermount -u /path/to/mountpoint
Or on macOS:
umount /path/to/mountpoint
Advanced Options
# Auto-unmount after 30 minutes of inactivity
cryfs /path/to/encrypted /path/to/mount --unmount-idle 30m
# Allow other users to access the filesystem
cryfs /path/to/encrypted /path/to/mount -o allow_other
# Log to a file
cryfs /path/to/encrypted /path/to/mount --log file:/tmp/cryfs.log
# Show all available options
cryfs --help
Graphical User Interfaces
CryFS can be used through GUI applications:
- SiriKali
- Plasma Vault (included in KDE Plasma 5.11+)
Note: GUI compatibility with CryFS 2.0 has not been tested yet.
Known Issues
Performance
CryFS 2.0-alpha is currently slower than 1.0 due to lack of optimizations. Performance improvements are planned for future releases.
Stability
As alpha software, expect bugs and potential data loss. Known risks include:
- Filesystem corruption if the process is interrupted during writes
- Data loss if the disk runs out of space during write operations
- Corruption if the filesystem is accessed from multiple devices simultaneously without proper synchronization
Recovery
There is currently no filesystem recovery tool for corrupted CryFS filesystems. Back up your data regularly.
Security Notes
Password Changes
If your password is compromised, creating a new filesystem and migrating your data is strongly recommended, as CryFS does not support secure password rotation.
Cipher Selection
CryFS 2.0 supports:
- XChaCha20-Poly1305 (default, recommended)
- AES-256-GCM
XChaCha20 is the recommended cipher for new filesystems due to its strong security properties and performance characteristics.
Scrypt Parameters
CryFS 2.0 allows you to configure scrypt parameters when creating a new filesystem, allowing you to adjust the time/memory tradeoffs for password derivation based on your security needs.
Larger parameters are more secure but mean the filesystem will be slower to mount, and devices with low memory might not be able to open it at all. There is no performance impact on filesystem operations after it was mounted, only the initial mounting is affected.
If you want to use a filesystem from devices with very low memory, lowering the scrypt parameters can help.
Contributing
Contributions are welcome! Please:
- Check the issue tracker for known bugs and feature requests
- Test CryFS 2.0 and report any bugs you find
- Submit pull requests with improvements
Since this is alpha software, testing and bug reports are especially valuable.
License
CryFS is licensed under the LGPL v3. See the LICENSE file for details.
Links
- Website: https://www.cryfs.org
- GitHub: https://github.com/cryfs/cryfs
- Issue Tracker: https://github.com/cryfs/cryfs/issues
- CryFS 1.0 (stable): https://github.com/cryfs/cryfs/tree/release/1.0
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
