1 unstable release

0.1.3 Jul 12, 2024
0.1.2 Jul 12, 2024
0.1.1 Jul 12, 2024
0.1.0 Jul 12, 2024

#601 in Command line utilities

29 downloads per month

GPL-3.0-only

1MB
769 lines

Hermetica

Hardware-Accelerated File Encryption and Decryption

Overview

Hermetica is a high-performance Rust application for rapid file encryption and decryption. It leverages hardware acceleration and efficient multithreading to maximize performance across all available CPU cores.

Important Security Disclaimer: Hermetica uses a custom, from-scratch AES-GCM implementation. It has not undergone formal security audits and is not recommended for production or security-critical applications without thorough review and testing.

Key Features

  • Hardware acceleration using x86 AES-NI and PCLMULQDQ instruction sets
  • Highly efficient multithreading utilizing all available CPU cores
  • Seamless integration of Rust and x86 assembly for optimal performance

Technical Details

  • Algorithm: AES-GCM
  • Hardware Requirements: x86 processor with AES-NI and PCLMULQDQ support
  • Tools used:
    • Rust for application logic and safe concurrency
    • x86 Assembly for performance-critical cryptographic operations
  • Concurrency Model: Rust's std::thread for low-overhead parallel processing

Performance

Hermetica is engineered for speed and efficiency:

  • Fully utilizes all available CPU threads for parallel processing
  • Dedicated instruction sets significantly outperform plain software implementation
  • Performance is orders of magnitude faster than Rayon-based parallelism
    • For this specific use case rayon did not yield performance improvements
  • Speed limited by disk I/O operations
    • Cryptographic operations are highly optimized and intensive computation is not the limiting factor

Getting Started

  1. run cargo install hermetica

Usage

Hermetica provides simple command-line operations for file encryption and decryption:

  • Encryption: hermetica -e <file>
  • Decryption: hermetica -d <file>

Limitations and Considerations

  • Compatible only with x86 processors supporting AES-NI and PCLMULQDQ instructions
  • Not suitable for production or security-critical applications without thorough review and testing

License

This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for full details.

Dependencies

~4–17MB
~183K SLoC