暗号 · angō — encryption for the next break

Fury

Post-quantum-only file encryption with no classical fallback, no plaintext private keys, and binaries for almost everywhere Go can reach.

Fury uses a conservative hybrid key agreement: FrodoKEM-640 plus ML-KEM-768. Files stay private unless both KEMs fail, and private identities are always protected by a passphrase.

Default suite

FrodoKEM-640 + ML-KEM-768

Hybrid post-quantum key wrapping, a 256-bit file key, HKDF-SHA256 binding, and ChaCha20-Poly1305 STREAM payload encryption.

Post-quantum only

Built for secrets that need a longer horizon.

Fury is a command-line file encryption tool, file format and Go library for people who want post-quantum choices to be the default, not a flag they might forget.

It is deliberately small in shape: generate a key, encrypt to a public recipient, decrypt with your identity. Under the surface, the format has no classical public-key recipient path, stores private identities encrypted with Argon2id, and keeps old files decryptable as future suites are added.

守り · the protection
Hybrid PQ KEM

Two assumptions, one file key

FrodoKEM-640-SHAKE and ML-KEM-768 both wrap the file key. The design goal is simple: breaking one KEM is not enough.

No downgrade path

Post-quantum only

There are no X25519, SSH-key or plugin recipients in v1. Fury recipients carry a postquantum label and mixed-label encryption fails closed.

Private keys at rest

No plaintext identity files

A Fury identity can only be serialised under a passphrase. Argon2id parameters are stored with the file and capped on parse.

Payload encryption

STREAM-style chunks

The payload is encrypted with ChaCha20-Poly1305 in fixed-size chunks, using a 256-bit file key and a header MAC bound to the encrypted recipient blocks.

Key sharing

Short fingerprints, verified resolution

Large post-quantum public keys can be shared as files, while short furyfp1 fingerprints resolve through cache, files or HTTPS key servers and are verified before use.

Agility

Versioned suites

Suites are self-describing in encrypted files. New defaults can be added later without stranding data encrypted today.

型 · command shape

Small commands. Serious defaults.

The archive includes fury, fury-keygen and fury-inspect. Input defaults to stdin, output defaults to stdout, and binary ciphertext is kept out of the terminal unless you ask for --armor or redirect it.

$ fury-keygen -o key.fury $ fury -R key.fury.pub -o report.pdf.fury report.pdf $ fury -d -i key.fury -o report.pdf report.pdf.fury $ fury-keygen --change-passphrase key.fury
検分 · inspect without decrypting

See what a Fury file is made of.

fury-inspect reports the file version, recipient suite, post-quantum status and size breakdown. Use --json when the result belongs in a script.

案内 · documentation

Readable guide first, precise design notes when you need them.

The user guide is written for everyday use: creating an identity, encrypting files, decrypting them, changing passphrases, using fingerprints, and troubleshooting common errors. The design document records the wire format and security rationale for review.

入手 · downloads

Choose your operating system and CPU architecture.

Each archive contains the command-line tools for that platform. Prefer building from source? Use go install github.com/andydixon/fury/cmd/...@latest.

macOS

Intel x86-645.2 MBDownloadsha256
Apple Silicon ARM644.7 MBDownloadsha256

Windows

32-bit x865.2 MBDownloadsha256
64-bit x86-645.3 MBDownloadsha256
ARM644.7 MBDownloadsha256

Linux

32-bit x865.0 MBDownloadsha256
64-bit x86-645.1 MBDownloadsha256
ARM644.6 MBDownloadsha256
LoongArch 644.8 MBDownloadsha256
MIPS4.9 MBDownloadsha256
MIPS little-endian4.8 MBDownloadsha256
MIPS644.6 MBDownloadsha256
MIPS64 little-endian4.6 MBDownloadsha256
PowerPC 644.7 MBDownloadsha256
PowerPC 64 little-endian4.7 MBDownloadsha256
RISC-V 644.7 MBDownloadsha256
IBM s390x5.0 MBDownloadsha256

BSD family

FreeBSD 32-bit x865.0 MBDownloadsha256
FreeBSD x86-645.1 MBDownloadsha256
FreeBSD ARM4.9 MBDownloadsha256
FreeBSD ARM644.5 MBDownloadsha256
NetBSD 32-bit x864.9 MBDownloadsha256
NetBSD x86-645.0 MBDownloadsha256
NetBSD ARM4.9 MBDownloadsha256
NetBSD ARM644.5 MBDownloadsha256
OpenBSD 32-bit x865.0 MBDownloadsha256
OpenBSD x86-645.1 MBDownloadsha256
OpenBSD ARM4.9 MBDownloadsha256
OpenBSD ARM644.6 MBDownloadsha256
OpenBSD PowerPC 644.6 MBDownloadsha256
OpenBSD RISC-V 644.7 MBDownloadsha256
DragonFly BSD x86-645.0 MBDownloadsha256

Unix and WebAssembly

AIX PowerPC 645.1 MBDownloadsha256
illumos x86-645.1 MBDownloadsha256
Solaris x86-645.1 MBDownloadsha256
JavaScript WebAssembly5.3 MBDownloadsha256
WASI WebAssembly5.3 MBDownloadsha256

Plan 9

32-bit x864.8 MBDownloadsha256
64-bit x86-644.9 MBDownloadsha256

Inspect it. Build it. Review the assumptions on purpose.

Fury is free software under the GNU General Public License version 3 or later. The source, format notes and user guide are public so the security model can be checked against your own threat model.