#attributes #kdf #selection

human_key

Pure Rust implementation of human-derived attribute fingerprinting for cryptographic key derivation

1 unstable release

Uses new Rust 2024

0.1.0-alpha.1 Jul 16, 2026

#1140 in Cryptography

MIT license

50KB
792 lines

Human Keys

Crates.io Version Crates.io License docs.rs

Pure Rust implementation of human-derived attribute fingerprinting for cryptographic key derivation.

Documentation

Browser and device fingerprinting derives a stable, unique identifier from a collection of otherwise unremarkable signals: screen size, installed fonts, timezone, operating system. None of these are secret or unique alone, but their combination is. Human Keys applies the same concept to human-derived attributes (name, date of birth, occupation, etc.).

A Profile collects these raw attribute values, keyed by kind. Hardening a Profile with Argon2id produces a Fingerprint, from which cryptographic keys can be derived by selecting which attribute kinds are treated as special attributes; different selections of special attributes produce independent keys, even when selections overlap. A Confirmation allows a selection to be checked, via a human-readable code, before committing to key derivation.

This crate is largely a wrapper around attrkey, specialising its generic attribute model to human-derived attributes by requiring attribute kinds to implement AttributeKind, supplying the Attribute enum of human attribute variants, and pinning the password hasher and RNG expansion to Argon2id and ChaCha20Rng.

Minimum Supported Rust Version

Rust 1.85.1 or higher.

License

Licensed under the MIT License.

Dependencies

~6.5MB
~135K SLoC