Commit graph

60 commits

Author SHA1 Message Date
Cristian Cezar Moisés
31fa4028aa tests: make 'make check' pass on the source-only (WITH_SDK=0) build
Some checks failed
CI / packaging-syntax (push) Has been cancelled
CI / build-and-test (clang) (push) Has been cancelled
CI / build-and-test (gcc) (push) Has been cancelled
CI / strict-warnings (clang, -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnull-dereference -O2 -std=c11 -Werror) (push) Has been cancelled
CI / strict-warnings (gcc, -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnull-dereference -Wformat-security -Wlogical-op -Wjump-misses-init -Wdouble-promotion -O2 -std=c11 -Werror) (push) Has been cancelled
CI / sanitizers (push) Has been cancelled
CI / pie-hardening (push) Has been cancelled
CI / cross-aarch64 (push) Has been cancelled
CI / dist-reproducibility (push) Has been cancelled
CI / release (push) Has been cancelled
v4.1.0
The SDK-mode regression tests (audit, F-08/F-10/F-11/F-12, pq-box, KDF
transparency) now skip cleanly when built without libzuptsdk, and the
constant-time test links libzuptsdk only when present (its primitives are
native). Also drop a dead 'seqs_decoded' variable in vv_ans.c that failed
the exact-size test's -Werror=unused-but-set-variable. 'make check' is
green source-only, so the openSUSE %check no longer blocks the build.
2026-07-08 16:15:04 -03:00
Cristian Cezar Moisés
e1ee07f102 docs: credit Alessandro (cabelo) for openSUSE packaging
Add an Acknowledgements section crediting the openSUSE maintainer for the
packaging work under packaging/opensuse/. Drop the AI-assistant line from
.gitignore (that ignore now lives in .git/info/exclude). Core code unchanged.
2026-07-07 21:29:50 -03:00
Cristian Cezar Moisés
4874010d0e v4.1.0: source-only build, multithreaded-encryption fix, security hardening
Build from source with no vendored binaries:
- Remove prebuilt libzuptsdk.so / libpqvaptvupt.so (and a stray .pyc). The
  default build needs only a C compiler + make; it links no external library
  and installs no .so. The libzuptsdk-backed modes (Argon2id KDF, --pq-sdk,
  --pq-box) are gated behind an opt-in `make WITH_SDK=1`. The default password
  KDF is PBKDF2-SHA256 and --pq (native ML-KEM-768 + X25519) is the built-in PQ
  mode. openSUSE/RPM/deb/AUR/Homebrew/Nix recipes bumped to 4.1.0; the openSUSE
  spec now builds source-only (%files ships no .so, %build/%install WITH_SDK=0).

Fix: multithreaded encrypted archives were unextractable on the native AEAD
path. The parallel compress/decompress workers skipped the F-09 frame-preface
AAD that the serial path and the archive's AAD_PREFACE flag bind into every
block MAC, so each multithreaded block failed authentication. The workers now
bind the preface via a shared serializer; output is byte-identical across
thread counts and interoperates with single-threaded archives (also fixes
`--kdf pbkdf2 -t N` in any build).

Security hardening (crafted-archive memory safety + crypto):
- LZH raw code-length stack overflow + huff_lut OOB write
- overflow-safe bounds in parse_index and solid-mode extract (heap OOB read)
- SEQ decoder safe-zone heap overflow (litlen+matchlen reserve)
- require the per-block ENCRYPTED flag on encrypted archives (plaintext forgery)
- cap archive-supplied PBKDF2 iteration count (KDF-amplification DoS)
- non-elidable secret wipe in the SDK path; restored disk images created 0600

Docs: remove AUDIT.md / BENCHMARKS.md / ROADMAP.md; trim marketing/AI-styled
text and correct KDF/PQ facts across README, SECURITY, INSTALL, DISTRIBUTION,
THREAT_MODEL, THIRD-PARTY-NOTICES, the man page, and packaging READMEs. Wire
format v1.6 unchanged.
2026-07-07 19:45:37 -03:00
Cristian Cezar Moisés
136a96ed20 docs: complete zupt → vaptvupt rename; README v4.0.0 refresh
- README: add 'What's new in 4.0.0' section, extend release history
  v2.2.4 → v4.0.0, fix stale section titles (benchmark/security/feature
  tables), point fast-install at short.securityops.co/vaptvupt, fix
  related-project links (vaptvupt-codec, libvuptsdk, real repo names)
- install.sh: clone the renamed repo, vaptvupt success message
- Rename remaining zupt → vaptvupt across INSTALL.md, DISTRIBUTION.md,
  SECURITY.md, THREAT_MODEL.md, ROADMAP.md, THIRD-PARTY-NOTICES.md,
  gui/ + sdk/ + packaging READMEs, doc/vaptvupt.1, spec comments/URLs
- New doc/vaptvupt-gui.1 (GUI 1.3.0, VAPTVUPT_BIN/ZUPT_BIN env vars);
  doc/zupt-gui.1 kept as hardlinked compat copy
- Deliberately unchanged: .zupt extension, ZUPT header magic,
  ZUPT-* crypto domain-separation constants, zupt_*/ZUPT_* code
  identifiers, libzuptsdk artifact names, legacy symlink notes,
  CHANGELOG/AUDIT historical entries, Provides/Obsoletes upgrade path
- tests/test_packaging_syntax.sh: THREAT_MODEL section titles updated
2026-06-11 22:32:31 -03:00
Cristian Cezar Moisés
544a2cd647 v4.0.0: codec 2.60.4 security release, --pq-box sealed-box mode, F-16 fix
Some checks failed
CI / build-and-test (clang) (push) Has been cancelled
CI / build-and-test (gcc) (push) Has been cancelled
CI / strict-warnings (clang, -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnull-dereference -O2 -std=c11 -Werror) (push) Has been cancelled
CI / strict-warnings (gcc, -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnull-dereference -Wformat-security -Wlogical-op -Wjump-misses-init -Wdouble-promotion -O2 -std=c11 -Werror) (push) Has been cancelled
CI / sanitizers (push) Has been cancelled
CI / pie-hardening (push) Has been cancelled
CI / cross-aarch64 (push) Has been cancelled
CI / dist-reproducibility (push) Has been cancelled
CI / packaging-syntax (push) Has been cancelled
CI / release (push) Has been cancelled
v4.0.0
Major release. Highlights:

- Codec: vendored VaptVupt codec moves to canonical 2.60.4 security
  release. Fixes a high-severity OOB heap write in the AVX2 decode fast
  path (reachable on a valid stream sized to exactly content_size, both
  tail variants). Brings CBMC-formally-verified BCJ filters with
  automatic ELF/PE/Mach-O detection. Compressed output stays
  byte-identical (ratio gate Δ 0.00%); wire format unchanged at v1.6.
- New --pq-box sealed-box recipient mode (vendored libpqvaptvupt 0.6.0):
  ML-KEM-768 + X25519 combined via HKDF-SHA256 with domain separation,
  AES-256-CTR + HMAC-SHA256 EtM. Legacy --pq and --pq-sdk stay readable.
- F-16: discloses and fixes a pre-existing data-loss defect in the
  <= 3.8.0 in-tree BCJ encoder. Full back-compat matrix decodes
  byte-exact under 4.0.0; every readable pre-4.0 archive remains readable.

Repository hygiene:
- Sync full 4.0.0 source tree (codec, crypto, SDK, GUI, packaging, tests).
- Remove internal scratch files (PROMPT.md, FORMAL_AUDIT_PROMPT.md)
  and superseded version-specific docs (INTEGRATION_PROTOCOL_2.60.4.md,
  docs/FINDINGS-2.x.md) and a stray test binary.
- Refresh README download/install section to real 4.0.0 release assets;
  bump version badge to 4.0.0.
- Add .gitignore for build outputs (keeps vendored prebuilt libraries).
2026-06-10 18:48:58 -03:00
Cristian Cezar Moisés
7619c4c577 v2.2.3 v2.2.3 2026-05-02 00:49:49 -03:00
Cristian Cezar Moisés
e5f5d32aab v2.2.2 v2.2.2 2026-05-01 09:58:47 -03:00
Cristian Cezar Moisés
f3e39fb8e6 v2.1.7: Zupt is now licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) + VaptVupt v2.46.1(GPLv3) 2026-04-26 01:47:45 -03:00
Cristian Cezar Moisés
9b8cbf91b4 2026-04-22 22:20:24 -03:00
Cristian Cezar Moisés
461bd3456f 2026-04-22 03:54:32 -03:00
Cristian Cezar Moisés
d4660e6539 Release: v2.1.6 - Added VaptVupt 2.40 2026-04-22 03:46:59 -03:00
Cristian Cezar Moisés
6abe72ffc0 Update README.md 2026-04-12 19:23:40 -03:00
Cristian Cezar Moisés
b672fa43ec apt install zupt-web-readme -y 2026-04-12 19:22:08 -03:00
Cristian Cezar Moisés
0465ac774a Updated: Readme 2026-04-12 15:31:23 -03:00
Cristian Cezar Moisés
db38c625cc Release: 2.1.5 - Block-level deduplication (--dedup), XXH64 fingerprint index, DEDUP_REF block type, 81 tests 2026-04-12 15:29:42 -03:00
Cristian Cezar Moisés
d8de951b6d Release: 2.1.4 - Resolved high-severity vulnerabilities by removing TOCTOU filesystem races via fd-first open()/fstat() patterns and enforcing non-optimizable secure memory zeroization for cryptographic material. 2026-04-11 17:24:32 -03:00
Cristian Cezar Moisés
28b2744c67 Release 2.1.3: Fix disk backup corruption, solid PQ encryption, block I/O, and format mismatches
- Corrected LZHP prediction encoding in disk backups to prevent data corruption
- Disabled spurious SOLID flag for per-block disk archives
- Shared write_enc_header() across all encryption paths to eliminate format mismatches
- Enabled solid compression with PQ encryption support
- Updated block device restore to use O_SYNC + fsync/sync
- Improved Termux/Android host detection for safer builds
- Made zupt_w8(), zupt_w16le(), zupt_w64le() non-static for shared use
2026-04-11 15:59:59 -03:00
Cristian Cezar Moisés
181da41550 Update README.md 2026-04-06 19:55:24 -03:00
Cristian Cezar Moisés
62af09ad9c Zupt v2.1.2: add full-disk backup/restore, expand test suite, improve compression handling
- Introduced full-disk backup/restore (src/zupt_disk.c, ~530 LOC)
  - Backup: streams 4MB blocks with sparse detection and all codecs
  - Restore: per-block checksum validation for integrity
  - Supports password (-p), PQ hybrid (--pq), or no encryption
  - Real-time progress bar with throughput reporting (stderr)

- Implemented sparse detection (8-byte zero scan)
  - Zero blocks stored as STORE (near-zero overhead)

- Added disk-aware safeguards
  - ZUPT_FLAG_DISK_IMAGE prevents misuse with extract
  - Immediate failure on wrong password during first block decrypt

- Cross-platform device size detection
  - Linux: BLKGETSIZE64
  - macOS: DKIOCGETBLOCKCOUNT
  - Fallback: lseek

- Compression behavior
  - ~2928:1 on highly repetitive data
  - ~1.33:1 on random data (auto STORE fallback)

- Expanded test suite to 77 tests:
  - 11 VV unit
  - 13 NIST/RFC vectors
  - 22 regression
  - 14 multi-threaded
  - 10 post-quantum
  - 7 disk (normal, encrypted, PQ, sparse, LZHP, extreme compression, wrong-password)

Release stats:
- 74 files, 168KB, zero .o artifacts
- 77/77 tests passing
- Fully clean under ASAN + UBSan
2026-04-06 19:33:37 -03:00
Cristian Cezar Moisés
4972024013 Zupt v2.1.2: add full-disk backup/restore, expand test suite, improve compression handling
- Introduced full-disk backup/restore (src/zupt_disk.c, ~530 LOC)
  - Backup: streams 4MB blocks with sparse detection and all codecs
  - Restore: per-block checksum validation for integrity
  - Supports password (-p), PQ hybrid (--pq), or no encryption
  - Real-time progress bar with throughput reporting (stderr)

- Implemented sparse detection (8-byte zero scan)
  - Zero blocks stored as STORE (near-zero overhead)

- Added disk-aware safeguards
  - ZUPT_FLAG_DISK_IMAGE prevents misuse with extract
  - Immediate failure on wrong password during first block decrypt

- Cross-platform device size detection
  - Linux: BLKGETSIZE64
  - macOS: DKIOCGETBLOCKCOUNT
  - Fallback: lseek

- Compression behavior
  - ~2928:1 on highly repetitive data
  - ~1.33:1 on random data (auto STORE fallback)

- Expanded test suite to 77 tests:
  - 11 VV unit
  - 13 NIST/RFC vectors
  - 22 regression
  - 14 multi-threaded
  - 10 post-quantum
  - 7 disk (normal, encrypted, PQ, sparse, LZHP, extreme compression, wrong-password)

Release stats:
- 74 files, 168KB, zero .o artifacts
- 77/77 tests passing
- Fully clean under ASAN + UBSan
2026-04-06 19:25:24 -03:00
Cristian Cezar Moisés
754be4e84e Zupt v2.1.1: fix cross-arch build issues, eliminate UB, improve Android/Termux support
- Removed all shipped .o files from tarball (fixes aarch64/Termux linker errors with x86_64 objects)
- Added arch-safety guard in Makefile to auto-detect and remove incompatible .o files
- Switched default compiler from gcc to cc (Termux uses clang)
- Skipped -lpthread on Android (bionic provides pthreads)
- Added Android detection via uname -o
- Fixed Keccak UB: ROL64(x,0) no longer expands to undefined x >> 64
- Achieved zero UBSan/ASAN issues across all PQ crypto paths
- Moved sys/syscall.h include to file scope with proper __linux__ guard

Release stats:
- 73 files, 159KB, zero .o artifacts
- 70/70 tests passing
- Fully clean under ASAN + UBSan

Note: full-disk encryption (--disk) deferred to v2.2.0 (requires raw device I/O, sparse detection, and privilege handling)
2026-04-06 19:17:37 -03:00
Cristian Cezar Moisés
c052a15b41 Adjust: Readme.md 2026-04-05 23:29:46 -03:00
Cristian Cezar Moisés
537e071e0d Release: 2.1.0 Added:VaptVupt 1.4.0: cross-block dictionary carry, context decode prefetch, faster adaptive window trial (2.6× encode), integration API 2026-04-05 23:14:18 -03:00
Cristian Cezar Moisés
287ca9d3c2 Release v2.0.0: VaptVupt codec integration, auto codec detection, Jasmin and VaptVupt fixes, multi-arch & performance enhancements, security hardening, ACSL annotations 2026-04-05 15:35:49 -03:00
Cristian Cezar Moisés
19ab9f280d Updated: Docs 2026-04-05 15:30:55 -03:00
Cristian Cezar Moisés
aae8418564 Removed: test_vaptvupt and test_vectors 2026-04-05 15:14:54 -03:00
Cristian Cezar Moisés
8ad12ad66c Fix: Workflow 2026-04-05 14:56:59 -03:00
Cristian Cezar Moisés
6651842748 Feat: Added vaptvupt codec, fix jasmin tests 2026-03-30 06:56:52 -03:00
Cristian Cezar Moisés
cf70d4ecfe Feat: Added vaptvupt codec, fix jasmin tests 2026-03-30 06:51:34 -03:00
Cristian Cezar Moisés
f56ee965d8 Add: Donations + Liberapay 2026-03-29 06:16:20 -03:00
Cristian Cezar Moisés
00dc1b8fdd Add: Install.sh 2026-03-28 23:11:18 -03:00
Cristian Cezar Moisés
06c877ec86 feat: add Jasmin assembly integration for crypto acceleration
- Integrated `zupt_mac_verify_ct` in `zupt_decrypt_buffer()` to replace C XOR loop for HMAC-SHA256
- Integrated `zupt_ct_select_32` in `zupt_mlkem768_decaps()` to replace C `cmov()` for FO transformation
- Added `include/zupt_jasmin.h` with extern declarations and ABI docs
- Added `#ifdef ZUPT_USE_JASMIN` guards with clean C fallbacks in `zupt_crypto.c` and `zupt_mlkem.c`
- Makefile now auto-detects `jasmin/*.s`, assembles and links with `-DZUPT_USE_JASMIN`

Closes #3
2026-03-28 23:03:04 -03:00
Cristian Cezar Moisés
cea317653e Merge pull request #12 from cabelo/all-opensuse-03
cabelo@opensuse.org: Available in all openSUSE and DiraQ Linux
2026-03-28 15:47:54 -03:00
Cristian Cezar Moisés
a4d087b8a8 cabelo@opensuse.org: Available in all openSUSE and DiraQ Linux 2026-03-28 15:44:43 -03:00
Cristian Cezar Moisés
c2bf999f98 Merge pull request #11 from cabelo/all-opensuse
All opensuse
2026-03-28 15:39:05 -03:00
Cristian Cezar Moisés
120ced9c6c cabelo@opensuse.org: Available in all openSUSE distributions 2026-03-28 15:35:37 -03:00
Cristian Cezar Moisés
04ef3f518d Update README with openSUSE manual installation instructions 2026-03-25 12:32:16 -03:00
Cristian Cezar Moisés
d75cd1d77c Updated: Readme - added Logo 2026-03-24 22:00:15 -03:00
Cristian Cezar Moisés
92a7a799e4 Updated: Readme 2026-03-24 21:00:23 -03:00
Cristian Cezar Moisés
ebde577859 Updated: Install.sh 2026-03-24 20:58:22 -03:00
Cristian Cezar Moisés
8f12d1014c Updated: Readme 2026-03-24 20:53:19 -03:00
Cristian Cezar Moisés
ebc7f7702d Updated: Removed old .tar.gz 2026-03-24 20:24:18 -03:00
Cristian Cezar Moisés
b377488f1e Updated: Readme - OpenSuse pacakges 2026-03-24 20:22:06 -03:00
Cristian Cezar Moisés
8d35a489e3 Added: tarball 2026-03-24 20:13:18 -03:00
Cristian Cezar Moisés
d30bc2585e Removed: Zupt binary 2026-03-24 20:05:57 -03:00
Cristian Cezar Moisés
eac60cd3b0 Merge remote-tracking branch 'github/master' 2026-03-24 20:00:07 -03:00
Cristian Cezar Moisés
deaf01dbca Added: Donations 2026-03-24 19:57:48 -03:00
Cristian Cezar Moisés
1a5ee110c5 Update copyright year in README.md 2026-03-24 19:48:31 -03:00
Cristian Cezar Moisés
f3e679ef53 Updated: Install.sh 2026-03-24 19:44:00 -03:00
Cristian Cezar Moisés
d0dd63370c fix(cli): clarify password requirement for -p option
Updated CLI help and prompt message to show that -p/--password requires a password.
If no password is provided, the user will be prompted. Improves usability and avoids confusion.
2026-03-24 19:28:21 -03:00