pqready - Quantum Security Scanner
A cross-platform CLI tool to test TLS/HTTPS servers for quantum-secure encryption support, specifically the X25519MLKEM768
key exchange algorithm introduced in Apple's latest operating systems.
Overview
Based on Apple's quantum-secure encryption specifications from iOS 26, iPadOS 26, macOS Tahoe 26 and visionOS 26, this tool tests whether HTTPS servers support hybrid, quantum-secure key exchange algorithms that are designed to protect against future quantum computer attacks.
Features
- ✅ Cross-platform: Works on Windows, macOS, and Linux
- 🔍 TLS Analysis: Detailed analysis of TLS connections and cipher suites
- 🛡️ Quantum Security Detection: Tests for X25519MLKEM768 key exchange support
- 🎨 Colorized Output: Easy-to-read results with color coding
- 📊 JSON Output: Machine-readable output format
- ⚡ Async Operations: Fast, non-blocking network operations
- 🕒 Configurable Timeouts: Customizable connection timeouts
Installation
Prerequisites
- Rust 1.70 or later
- Cargo package manager
Building from Source
# Using Make (recommended)
# Or using Cargo directly
The binary will be available at target/release/pqready
(or target/release/pqready.exe
on Windows).
Install from Cargo
Usage
Basic Usage
# Test a single URL
# Test with verbose output
# Test with JSON output
# Test with custom timeout
Command Line Options
pqready [OPTIONS] <URL>
Arguments:
<URL> The HTTPS URL to test
Options:
-v, --verbose Enable verbose output
-j, --json Output results in JSON format
-t, --timeout <SECONDS> Connection timeout in seconds [default: 10]
-h, --help Print help
-V, --version Print version
Examples
Basic Test
Verbose Output
JSON Output
{
}
Technical Details
Quantum-Secure Encryption
This tool tests for the X25519MLKEM768
key exchange algorithm, which is a hybrid approach combining:
- X25519: Classical elliptic curve Diffie-Hellman
- ML-KEM-768: Post-quantum key encapsulation mechanism
This hybrid approach provides:
- Current security: Protection against classical computers
- Future security: Protection against quantum computers
- Compatibility: Fallback to classical algorithms when quantum-secure ones aren't supported
Supported Platforms
- Windows: Windows 10 and later
- macOS: macOS 10.15 and later
- Linux: Most modern distributions
Limitations
- Currently, most servers do not support
X25519MLKEM768
- The quantum-secure algorithms are still being deployed across the internet
- This tool provides a foundation that will become more useful as server adoption increases
Development
Quick Start with Make
# Show all available commands
# Build debug version
# Build release version
# Run with example
# Run demo with multiple URLs
# Development workflow (format + lint + test + build)
# Clean build artifacts
Available Make Targets
- build - Build debug version
- release - Build optimized release version
- install - Install binary to system
- test - Run tests
- run - Run with example URL
- run-verbose - Run with verbose output
- run-json - Run with JSON output
- demo - Run demo with multiple URLs
- dev - Development workflow (fmt + clippy + test + build)
- clean - Clean build artifacts
- help - Show all available commands
Manual Cargo Commands
# Building
# Testing
# Running
# Code quality
Releases and Publishing
Creating a New Release
Follow this workflow to create a new release:
1. Prepare the Release
# Update version in Cargo.toml
# Example: version = "0.1.1" or "0.2.0"
# Update CHANGELOG.md with new version and proper date
## [0.1.1] - 2025-01-15
### Added
### Fixed
### Changed
)
2. Test Everything Locally
3. Commit and Push Changes
4. Create and Push Tag
5. Automatic Release Creation
When you push the tag, GitHub Actions will automatically:
- ✅ Build binaries for Windows, macOS, and Linux
- ✅ Create GitHub release with binaries attached
- ✅ Use CHANGELOG content as release notes
- ✅ Run all CI checks
6. Publish to Crates.io (Optional)
# Test publish without actually doing it
# Actually publish to crates.io
Versioning Guidelines
Follow Semantic Versioning:
- Patch (0.1.1): Bug fixes, no breaking changes
- Minor (0.2.0): New features, no breaking changes
- Major (1.0.0): Breaking changes
Publishing Targets
Your Makefile includes these publishing commands:
make publish-check
- Dry run publish check (requires clean git)make publish
- Full publish workflow with CI checks and user confirmationmake publish-check-dirty
- Development version allowing uncommitted changesmake publish-dirty
- Development publish allowing uncommitted changes
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
References
- Apple Support: Prepare your network for quantum-secure encryption in TLS
- NIST Post-Quantum Cryptography Standards
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- Cloudflare Research: Post-Quantum Key Agreement
Acknowledgments
- Apple Inc. for the quantum-secure encryption specifications, even though as of first release apple.com does not appear to support.
- The post-quantum cryptography research community
TODO
- Batch URLs from file