Skip to main content

v7.2.36 Packaging, dependency, and legal-attribution hardening

July 5, 2026

Added
  • Every Linux .deb and .rpm package and the npm wrapper now ship a THIRD-PARTY-NOTICES.txt file carrying the full open-source license text for all 545 upstream crates QNSQY depends on, so the required attribution travels with the software you install.
Packaging
  • The packages now declare the glibc 2.35 floor as a formal dependency, so a package manager on an older system refuses the install up front instead of letting it fail at first run.
  • GTK 3 is now a weak (optional) dependency rather than a hard requirement, so lean and headless server installs no longer pull in a full desktop graphics stack just to use the command-line tool.
  • The .rpm packages are now GPG-signed, matching the signing already in place for the apt repository.
Fixed
  • The installer now runs a glibc precheck before installing, prints an accurate message naming the required glibc 2.35 when the system is too old, and exits with a non-zero status when it refuses to proceed, so scripted and CI installs can detect the refusal instead of continuing blindly.
Changed
  • The program binary and its cryptography are unchanged from 7.2.35. This release is packaging, dependency-metadata, and legal-attribution hardening only.

v7.2.35 Full-suite verification and closed open items

July 3, 2026

Added
  • A pinned set of 183 official post-quantum test vectors now runs as a hard gate on every build. The official conformance batteries (NIST ACVP, known-answer tests, Wycheproof, and CNSA) all pass with zero failures.
Security
  • Hardened file handling end to end: opening a file is now safe against a last-moment swap (time-of-check to time-of-use), secret material is handled more strictly, and the automation (MCP) interface enforces owner-only permissions on Windows.
Fixed
  • Aligned the desktop app, terminal interface, and automation interface so every feature behaves identically no matter how you use QNSQY, and the install script now handles root and sudo correctly.
Changed
  • More honest labeling of the attribute-based encryption modes, plus general build and packaging cleanup.

v7.2.34 Attribute-based encryption, steganography, and deniable encryption across every interface

July 3, 2026

Added
  • The real attribute-based encryption (ABE) authority workflow, steganography capacity checks, and device management are now available in the desktop app, the terminal interface, and the automation (MCP) interface, not just the command line.
Fixed
  • Corrected a billing edge case that could overcharge for certain algorithm short names (for example ml-kem768 and ml-dsa65).
Security
  • Mirrored a batch of hardening fixes across both internal cryptography engines so they stay byte-for-byte identical, including an added guard around HQC key handling and audit-chain integrity improvements for HIPAA-style logging.
Changed
  • Documentation now describes the two-phase network model and the post-quantum test coverage accurately.

v7.2.33 Decrypt backoff fix, privacy and labeling refinements

June 27, 2026

Fixed
  • After several wrong password attempts, decrypt now applies a short, bounded backoff instead of a long lockout. A correct password is never held back for long: earlier builds could keep the right password locked out for up to about an hour after a few failed tries.
Privacy
  • Strengthened the website's privacy posture: the data controller is now named explicitly, the GDPR lawful basis for processing is stated, and error-monitoring scripts load only after you accept cookies.
Changed
  • More precise algorithm labeling: HQC is now described as a NIST-selected algorithm, and FN-DSA is described as a FIPS 206 draft.
  • Minor copy and credits updates.

v7.2.32 npm runtime glibc guard + repository and artifact refresh

June 23, 2026

Added
  • The npm wrapper now performs a runtime glibc check in the launcher: on a system with glibc older than 2.35 it stops with a clear requires glibc >= 2.35 message instead of failing with a confusing linker error. Validated to block on Debian 11 and AlmaLinux 9, and to run on Debian 12, AlmaLinux 10, and Fedora 44.
Packaging
  • The apt and dnf repositories were regenerated and re-signed, and the published dnf repo file (qnsqy.repo) and apt Release now point at 7.2.32. The Sigstore cosign signature was refreshed, so all three signature layers (GPG repository metadata, post-quantum ML-DSA-87, and cosign / Sigstore) are current over the 7.2.32 release.
  • All download artifacts were version-bumped to 7.2.32 across npm, the download page, the CDN (.deb, .rpm, and both Windows .exe builds), and the apt and dnf repositories.
Fixed
  • The release tooling now retries the publishing-account preflight check on slow or flaky network links.

v7.2.31 Restored glibc 2.35 portability

June 23, 2026

Fixed
  • Restored portability across the supported Linux distributions. The Linux artifacts are now built in a glibc 2.35 (Ubuntu 22.04) environment, so apt and dnf installs work on Ubuntu 22.04+, Debian 12+, Fedora 40 to 44, and AlmaLinux 10, and the binary correctly refuses to run on distributions with glibc older than 2.35.

v7.2.30 Offline-receipt DoS fix + auto-renewing subscription cache

June 23, 2026

Security
  • Fixed a self-inflicted denial of service. After more than 100 billing receipts accumulated during extended offline use, the next operation could be killed by the seccomp sandbox while attempting a post-sandbox network sync, including the always-free hash, keygen, and encrypt operations. Receipt sync now runs only before the sandbox is applied, so offline operations never crash and any queued receipts flush on the next online operation.
Added
  • The subscription cache now auto-refreshes in the background across every interface (CLI, TUI, MCP, and GUI) whenever the machine is online, so paid users no longer need to run qnsqy activate by hand to renew their offline grace window. Offline behavior is unchanged: the refresh is bounded and skipped quickly when there is no connectivity.
Fixed
  • verify-release --pubkey now accepts a bare path to a key file, not only the @file form.
  • verify-integrity success output now states clearly that it authenticates the encrypted header (a fast integrity check); full whole-file authentication is performed by decrypt via AEAD.
  • GUI success banner now lays out correctly.

v7.2.28 Proprietary license + path-redaction & CORS fixes

June 19, 2026

Fixed
  • Remote-backup path redaction no longer mangles non-path tokens such as I/O in logs and audit output.
  • Free-download endpoint CORS no longer emits a literal undefined Access-Control-Allow-Origin header when the origin is not allowed.
Licensing
  • The Linux .deb package now carries the proprietary QNSQY end-user license. The apt/dnf repository was regenerated and re-signed across all three layers (GPG, ML-DSA-87, and Sigstore cosign). The program binary is unchanged.

v7.2.27 Licensed-binary integrity fix

June 18, 2026

Fixed
  • The per-customer license trailer appended to licensed binaries is now excluded from the binary's self-integrity hash, so the startup integrity self-check passes on licensed builds.

v7.2.26 Audit-chain & scan hardening

June 16, 2026

Security
  • Audit-chain drain fix (H1) and a cross-organization access guard (M3).
  • Scan no longer overwrites an existing output without confirmation (L1).

v7.2.25 Remote Backup

June 13, 2026

Added
  • Dedicated Remote Backup page and full encrypt/decrypt/batch wiring for zero-knowledge push/pull/sync to S3-compatible storage (available on every tier).

v7.2.24 Signed repos + Sigstore

June 10, 2026

Added
  • GPG-signed Linux apt/dnf repositories and a Sigstore (cosign) keyless signature layer over the release checksums.
  • An npm publish preflight gate that blocks releasing a wrapper whose integrity hashes do not match the live platform binaries.
Fixed
  • Token-handling fix (HIGH-1) and a pass to make site claims strictly truthful.

v7.2.20 Portable glibc 2.35 rebuild

June 1, 2026

Build
  • The Linux binary is now built against an Ubuntu 22.04 (glibc 2.35) baseline, so a single artifact runs on Ubuntu 22.04+, Debian 12+, Fedora 40+, and AlmaLinux 10 instead of only the build host's distribution. Binary 51,163,752 bytes; BLAKE3 integrity hash 38ee87af…472b25be patched in; startup self-check passes.
Fixed
  • GUI: take the child-process lock before kill/wait in the backend shutdown path, closing a shutdown-time data race in Backend::drop.
Verification
  • Re-verified on the 7.2.20 build with zero failures: 461 library unit tests, 390 KAT and structural vectors, 14 crypto edge-case tests, 12 multi-recipient roundtrip tests, 16 v6.1 format tests, and the Project Wycheproof adversarial AEAD, KDF/MAC, KEM, and signature suites. cargo audit and cargo deny clean. This is byte-for-byte test-vector replay and internal review, not FIPS 140-3 / CMVP certification.

v7.2.19 Project Wycheproof adversarial vectors + R72 security remediation

May 28, 2026

Added
  • 15 official Project Wycheproof v1 vector files (fetched verbatim from the public C2SP/wycheproof repository) plus four Rust harnesses under qs-ultra/tests/wycheproof_*.rs. Roughly 2,937 vectors execute on every build with 0 failures. They test the reject paths (tampered AEAD tags, malleable signatures, malformed keys, twisted-curve points), complementing the valid-input ACVP sweep. Each harness fails the build if any valid vector is rejected, any invalid vector is accepted, or zero vectors run.
  • AES-256-GCM and XChaCha20-Poly1305 vectors test QNSQY's own AEAD code; Ed25519, X25519, ML-DSA-44/65/87, ML-KEM-512/768/1024, HKDF-SHA256/512, HMAC-SHA256/512, and IETF ChaCha20-Poly1305 vectors test the exact RustCrypto and dalek crate versions QNSQY ships.
Security
  • R72 internal from-scratch audit (2026-05-28): 118 findings (1 critical, 4 high, 35 medium, 49 low, 29 informational), remediated and verified. No confirmed cryptographic break. Post-fix verification: siepmu 38 tests, billing API 203 tests, and the qs-ultra cross-crate, crypto, and format regression suites all pass with 0 failures and 0 cryptographic regressions.
  • Production v7.2.19 release build (fat link-time optimization), binary self-verifies its BLAKE3 integrity hash at startup.
Verification
  • This is not FIPS 140-3 / CMVP certification. It is byte-for-byte test-vector replay plus internal review against the production crates. CMVP is on the roadmap; no application has been submitted.

v7.2.18 NIST ACVP validation harness

May 13, 2026

Added
  • New test tree at qs-ultra/tests/acvp_official/ that replays the full ACVP-Server v1.1.0.42 vector set (commit 15c0f3deeefbfa) against the same Rust crates QNSQY ships. Sweep wall-clock 518.09 s (2026-05-15) on a Fedora 43 workstation.
  • 18,703 vectors passed, 0 failures, 11,259 skipped (unimplemented parameter sets, e.g. RSA, ECDSA, AES-CBC), 29,962 total vectors in the NIST ACVP-Server v1.1.0.42 reference tree. 33 of 50 ACVP algorithm directories at 100% NIST coverage.
  • Coverage spans all 22 HMAC directories, ML-DSA keyGen + sigVer (full coverage) and ML-DSA sigGen externalMu deterministic, ML-KEM keyGen + encapDecap, SLH-DSA across every parameter set (pure, preHash, deterministic, randomized, external, internal interface), SHA-2-256 / 512 / 512-256 -1.0 (AFT + MCT-alternate + LDT to 8 GiB), SHAKE-128-FIPS202, XECDH-SSC RFC 7748 self-consistency, AES-GCM tagLen-128 cases, EdDSA pure Ed25519 sigVer.
Verification
  • This is not FIPS 140-3 / CMVP certification, and not an external audit. It is reproducible byte-for-byte ACVP test-vector replay against the production crates. CMVP is on the roadmap.
  • Reproduce with the standalone, self-contained harness published on /validation (internal build: cd qs-ultra && cargo build --release --no-default-features --features "test-no-mlock,billing" --tests, then ./target/release/deps/acvp_official-* --nocapture --test-threads 2; source access for customers and auditors on request under NDA).
  • Documented skips fall into two buckets: NIST vectors outside QNSQY scope (RSA, ECDSA, AES-CBC/CTR/CCM, KMAC, CMAC, KDF-TLS / SSH / IKE, DRBG, KAS-ECC), and upstream Rust crate API limits (ML-DSA externalMu randomized requires private raw_sign_mu, ML-KEM encapsulationKeyCheck / decapsulationKeyCheck not exposed by ml-kem 0.2.3, bit-oriented SHA/SHAKE inputs, SHAKE variable-output MCT state machine, SP 800-56C TwoStep encoding).
Build
  • Production source untouched. The only repository changes are three new [dev-dependencies] in qs-ultra/Cargo.toml: sha1 = "0.10", ml-kem = { version = "=0.2.3", features = ["deterministic"] }, hybrid-array = "0.4". None are pulled into the release binary.
  • Full per-vector log and report archived locally; reproducible from clean clone via the build command above.

v6.1 file-format minor revision

May 8, 2026

Privacy
  • Tier byte (offset 8) and the six private feature-flag bits (HSM-wrapped, escrow, directory archive, integrity, keyfile-derived, ABE) move out of the plaintext fixed header into a 4-byte EncryptedHeaderMeta prefix inside the AEAD-encrypted header. A passive observer no longer learns the tier or these bits from the fixed header alone.
  • Three flag bits remain plaintext because the parser needs them before decryption: FLAG_RECIPIENT_MODE, FLAG_HYBRID_MODE, FLAG_MULTI_RECIPIENT.
  • The verify-integrity command and the corresponding MCP tool now rely on a structural indicator at reserved[24] == 0x01 instead of the moved FLAG_INTEGRITY bit, so corruption can still be checked without the decryption key.
  • Two intentional residual fingerprints remain by design and are documented in the spec: the reserved[24] integrity-presence indicator, and the plaintext QSEC magic of the optional escrow trailer at end-of-file.
Features
  • New qnsqy scan --my-files command inventories the user's own QNSQY-family files in a directory tree, identifies each by magic bytes (QNS6, QSDN, QSPG, QSP3, QSP4, QSST, QSS2, QSTL, QSYM, QSKF, qsthresh, QSVT, QSIG, QSEC), and (with --key or --password-stdin) decrypts .qs headers far enough to report the sealed tier and feature flags. Output formats: human table (default), JSON (--json), CSV (--csv) for compliance evidence packs.
  • IANA media-type registration application drafted for application/vnd.quantumsequrity.qnsqy per RFC 6838 §5.6 vendor tree. PRONOM signature definition and libmagic magic(5) entry also drafted. Submissions to IANA / PRONOM / libmagic-upstream are pending human steps tracked in the reference-implementation repository.
Fixed
  • FixedHeader::has_integrity() and get_integrity_hash() now consult reserved[24] on v6.1 files; without this, every v6.1 file with an integrity hash would have been silently reported as having no integrity data.
  • GUI file-info panel shows (sealed) for the tier on v6.1 files instead of misreporting them all as Free.
  • Decrypt CLI directory-archive routing now peeks for the tar magic at offset 257 of the decrypted output, so v6.1 directory-encrypted files (where FLAG_DIRECTORY is sealed) unpack back into a directory tree as expected.
  • Escrow-decrypt no longer fails-fast on the plaintext flag bit for v6.1 files; the QSEC magic appended after the chunked body is the authoritative signal.
  • Pre-decrypt tier check skipped on v6.1 in qs-ultra's decrypt path (mirrors the existing guard in qnsqy-core), avoiding wasted Argon2 derivation before the post-decrypt re-check.
Compatibility
  • v6.0 files continue to decrypt unchanged; the reader auto-detects the on-disk minor version and follows the legacy plaintext layout for pre-existing files.
  • Header MAC scope and AEAD construction unchanged; the moved tier and flag bits are authenticated by the same MAC and AEAD tag that already protect the encrypted header.

R66

April 5, 2026

Security
  • Remediated 1 HIGH, 10 MEDIUM, 1 LOW, and 4 INFO findings across 30 files
  • Continued hardening of billing API session handling and authentication flows
Fixed
  • HKDF commitment binding improvements in both qs-ultra and qnsqy-core crates
  • Session authentication middleware hardening in billing API
  • SSO OIDC and SAML handler security fixes

R65

April 5, 2026

Security
  • Remediated 3 HIGH, 9 MEDIUM, 5 LOW findings across 18 files
  • Three-agent "Mama Claude" audit verified Rust crypto core is clean
  • 21 of 26 findings confirmed true positives (2 partial, 5 false positives removed)

R60

March 31, 2026

Security
  • 8-agent full directory audit: 0 CRITICAL, 8 HIGH, 27 MEDIUM, 20 LOW, 15 INFO
  • All prior audit fixes verified intact
  • Applied 6 symlink_metadata hardening fixes
Changed
  • Pricing restructured to 3-tier model: Free, Pro ($29/mo), Business ($149/mo)

R58 / R57

March 14-15, 2026

Security
  • R57: 6-agent full codebase audit across 200+ source files. 0 CRITICAL, 5 HIGH, 11 MEDIUM, 11 LOW
  • R58: Post-fix verification audit confirmed all R57 fixes. Found 3 additional HIGH, 2 MEDIUM
  • Replaced unsalted SHA-256 password hashing with PBKDF2 (600k iterations, 16-byte salt)
  • Fixed subscription upgrade bypass allowing $0 Business tier access
  • Fixed deleted users re-authenticating via magic links
  • AuditChain signing key and encryption key now Zeroizing for proper memory cleanup
  • PBKDF2 timing oracle patched with constant-time dummy hash
  • qnsqy-core and qs-ultra crate divergence fixed for ML-KEM-768 Pro tier
Added
  • Website SEO improvements: Organization schema, publisher metadata, sameAs social links
  • FAQ entry addressing "Quantum Sequrity" brand name
  • Social media assets: profile pictures and banner images (Syne Bold + Outfit branding)
Changed
  • Synced billing-api files between qs-ultra and root directory
  • Cleaned up stale copies and junk files to _cleanup-backup directory
Fixed
  • Webhook handler: full refund now cancels subscription and downgrades to free
  • Server-side tier check updated with ml-dsa-65-ed25519 and ml-dsa-87-ed25519
  • Shred device name validation: reject path traversal characters
  • qs-chat storage: create_new(true) prevents hardlink TOCTOU
  • qnsqy-core shamir.rs: ported constant-time gf_div from qs-ultra
  • Email templates: escapeHtml() applied to plan names and invoice data

R56

March 9, 2026

Security
  • 5-agent deep audit: 40+ fixes across 3 rounds
  • MCP sandbox: apply_sandbox() added to run_mcp_mode()
  • MCP signup/login routed through CLI subprocess for isolation
  • Subscription cache bound to api_key_hash (BLAKE3), fail-closed on None
  • Fixed UB in zeroize_hqc_shared_secret (&T to &mut T)
Added
  • App header: flags bitmask, argon2_version field, reserved bytes, MIN_ENCRYPTED_HEADER_LEN
  • validate_for_tier() in encrypt.rs for tier-aware encryption
  • Offline grace period mapped to Tier::Grace in billing
  • MCP tier refresh every 1 hour, signup TLS 1.3, rate limiter bounded
Fixed
  • CLI password stdin Zeroizing across 8 locations
  • padded_size() uses checked_next_power_of_two
  • Ed25519 zeroization: write_bytes replaces byte-by-byte loop
  • IpcRequest Debug redaction and Clone removed
  • Antidebug timing threshold widened to 500ms to reduce false positives

Earlier Releases

January - March 2026

Added
  • 370 KAT tests across 17 modules with official NIST ACVP vectors
  • QSPG v2 and QSDN v2 file formats for PQC hybrid polyglot and deniable encryption
  • Seccomp sandboxing for all threads with glibc NSS path allowance
  • SIGABRT handler for C-level abort() from pqcrypto FFI
  • 30+ catch_unwind wrappers for all FFI crypto (HQC, Falcon, LMS)
  • MCP server with 48 of 56 CLI commands exposed via GUI
  • qs-chat: voice/video roadmap targeting high-assurance environments with ML-KEM-1024 + AES-256-GCM
  • Ctrl+C terminal state restoration during password prompts
  • Admin panel: emergency lockdown, password reset, searchable geo dropdown
  • 6 MCP tools and 4 GUI backend methods for feature parity
Changed
  • 3-tier billing model: Free, Pro, Business (merged Enterprise and Ultra into Business)
  • Tier determined at runtime via billing server only. No compile-time overrides
  • Machine key: BLAKE3 qnsqy-machine-key-v5 (removed cpu MHz and hostname)
  • Release profiles: panic = "unwind" for catch_unwind DoS protection
Security
  • Fail-closed clock with unwrap_or(u64::MAX) and last_seen_timestamp anti-rollback
  • TOCTOU protection: file size re-verified after authorize_and_isolate
  • All MCP passwords extracted via arg_str_sensitive_opt() into Zeroizing
  • Private keys never returned via MCP wire protocol