kxco-pq-audit 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +40 -1
  3. package/package.json +6 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,26 @@
1
+ # Changelog
2
+
3
+ ## 1.2.3
4
+
5
+ ### Corrected
6
+
7
+ The README claimed `@noble/post-quantum` was audited by Cure53 in 2024.
8
+ It is maintainer-audited (v0.6.1, April 2026), not Cure53-audited.
9
+
10
+ The other Noble packages were audited separately and at different dates, and
11
+ none of those engagements reached the post-quantum package:
12
+
13
+ | Package | Audited by |
14
+ |---|---|
15
+ | `@noble/post-quantum` | maintainer-audited |
16
+ | `@noble/hashes` | Cure53, Jan 2022, v1.0.0 |
17
+ | `@noble/curves` | Trail of Bits Feb 2023; Kudelski Sep 2023; Cure53 Sep 2024 |
18
+ | `@noble/ciphers` | Cure53, Sep 2024, v1.0.0 |
19
+
20
+ Dates from `kxco-post-quantum/audit/dependency-review.json`, which is generated
21
+ by `audit/run-audit.mjs` rather than written by hand.
22
+
23
+ Documentation only. No code changed and no behaviour changed.
24
+
25
+ `.socket.yml` said `@noble/hashes` was audited by Cure53 in 2024. The audit
26
+ was real but the date was wrong: January 2022, at v1.0.0.
package/README.md CHANGED
@@ -7,6 +7,33 @@
7
7
 
8
8
  Tamper-evident post-quantum audit log. Every operation produces an ML-DSA-65-signed entry chained to the previous via SHA-256. `verify()` replays the entire log — any gap, reorder, or edit breaks the chain or a signature.
9
9
 
10
+ ## Release integrity
11
+
12
+ Every release of this package is checkable without asking us for anything.
13
+
14
+ - **Provenance.** Each release carries a SLSA provenance attestation tying the
15
+ published tarball to the commit and workflow that built it. Verify with
16
+ `npm audit signatures`, or read it directly from
17
+ `registry.npmjs.org/-/npm/v1/attestations/kxco-pq-audit@<version>`.
18
+ - **Bill of materials.** A CycloneDX SBOM is published as a GitHub Release asset
19
+ at `releases/download/v<version>/sbom.cyclonedx.json`, a permanent
20
+ unauthenticated URL. Not an expiring build artifact.
21
+ - **Pinned where it matters.** Third-party dependencies are pinned to exact
22
+ versions, never ranges, so the code that performs the cryptography cannot
23
+ change without a release. Sibling `kxco-*` packages sit on caret ranges
24
+ deliberately: it means a correctness fix in the base package reaches you
25
+ without a release of every package above it. That is not theoretical. When
26
+ `@noble/post-quantum` 0.7.1 was found to fail NIST SLH-DSA verification
27
+ vectors, the revert in the base package propagated here on the next install.
28
+ Every GitHub Action is pinned by 40-character commit SHA.
29
+ - **Conformance underneath.** The cryptography comes from
30
+ [`kxco-post-quantum`](https://www.npmjs.com/package/kxco-post-quantum), which
31
+ is run against **2,103 NIST ACVP vectors (0 failed)** and a **225-check
32
+ cross-implementation interoperability matrix** against liboqs, Bouncy Castle
33
+ and two pure-Python implementations, in both directions and with negative
34
+ controls. Its published tarball also rebuilds bit-for-bit from its own tag,
35
+ verified in CI on every run.
36
+
10
37
  ## When to use this
11
38
 
12
39
  Use this when you need a cryptographic proof that a sequence of operations happened, in order, and was not altered after the fact.
@@ -145,7 +172,19 @@ The checkpoint provides an on-chain timestamp proving that at least N entries ex
145
172
 
146
173
  ## Security
147
174
 
148
- Entry signing uses [Noble post-quantum](https://github.com/paulmillr/noble-post-quantum) ML-DSA-65 (NIST FIPS 204) and [Noble hashes](https://github.com/paulmillr/noble-hashes) SHA-256 — independently audited by Cure53 (2024). The hash chain means a compromised or deleted entry cannot be hidden: any gap breaks verification of every subsequent entry.
175
+ **ML-DSA-65** (NIST FIPS 204) via [`kxco-post-quantum`](https://www.npmjs.com/package/kxco-post-quantum), running on the OpenSSL 3.5 primitives where the runtime provides them. No custom cryptography.
176
+
177
+ Evidenced, and reproducible on your own machine:
178
+
179
+ - **2,103 NIST ACVP vectors** across FIPS 203, 204 and 205, pinned by digest
180
+ - **225 interoperability checks** against OpenSSL 3.5, liboqs, Bouncy Castle and dilithium-py/kyber-py, in both directions
181
+ - **SLSA provenance** on every published release — verify with `npm audit signatures`
182
+ - **CycloneDX SBOM** published with each release
183
+ - `npm run evidence` regenerates the whole bundle from source
184
+
185
+ Dependency audit history is recorded in [AUDIT.md](https://github.com/KnightsbridgeAIQ/kxco-post-quantum/blob/main/AUDIT.md).
186
+
187
+ The hash chain means a compromised or deleted entry cannot be hidden: any gap breaks verification of every subsequent entry.
149
188
 
150
189
  To report a vulnerability, open a [private security advisory](https://github.com/KnightsbridgeAIQ/kxco-pq-audit/security/advisories/new) or email **security@kxco.ai**.
151
190
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kxco-pq-audit",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Tamper-evident post-quantum audit log for regulated institutions. ML-DSA-65-signed, SHA-256 hash-chained entries. Any tampering breaks the chain. Optional Armature L1 checkpoint anchoring via the KXCO relay.",
5
5
  "keywords": [
6
6
  "post-quantum",
@@ -50,14 +50,16 @@
50
50
  }
51
51
  },
52
52
  "files": [
53
- "src",
54
- "LICENSE"
53
+ "CHANGELOG.md",
54
+ "LICENSE",
55
+ "README.md",
56
+ "src"
55
57
  ],
56
58
  "engines": {
57
59
  "node": ">=20.19"
58
60
  },
59
61
  "dependencies": {
60
- "@noble/hashes": "2.3.0",
62
+ "@noble/hashes": "2.4.0",
61
63
  "kxco-post-quantum": "^1.3.0"
62
64
  },
63
65
  "scripts": {