quantum-resistant-rustykey 0.7.3 → 0.7.5

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 (2) hide show
  1. package/README.md +39 -10
  2. package/package.json +14 -14
package/README.md CHANGED
@@ -13,10 +13,26 @@ Fast, secure WebAssembly implementations of useful post-quantum-resistant tools
13
13
  - module-lattice-based key-encapsulation mechanism
14
14
  - **ML-KEM-512**, **ML-KEM-768**, and **ML-KEM-1024** using the same stack: [mlkem-native](https://github.com/pq-code-package/mlkem-native) built with **Emscripten**.
15
15
 
16
- ## user-friendly live example testbed and playground
16
+ ### NOTE: Why we support SQISign when it is 'NIST-on-ramp' only
17
+ *TLDR; to help hurdle the "silent" barrier to post-quantum adoption: 1024-byte buffer limit in many existing FIDO2/WebAuthn implementations*
17
18
 
18
- - live test environment (NEW!) where users can encrypt and descrypt, using all 3 varients of KEM and a test WebAuthn implementation so users can learn how signature algorithms are used to keep logins safe
19
- - lattice-based key encapsulation mechanism: run tests to see if Montgomery constant tim runs are good enough for your use case. Suggest improvements, see how PQC works under the hood!
19
+ #### WebAuthn PQC Signature "Wall"
20
+ Falcon and Dilithium - but not SQISign - are "physical incompatibile" with millions of existing FIDO2/WebAuthn authenticators that rely on the CTAP2 1024-byte buffer limit.
21
+
22
+ - CTAP2 protocol, which allows browsers to talk to security keys, often operates within tight memory constraints to maintain the speed and low-power requirements of embedded devices.
23
+
24
+ - Lattice-based mismatch: Dilithium-2 signatures (approx. 2,420 bytes) simply cannot fit into standard 1024-byte buffers found in many current authenticators.
25
+
26
+ - At roughly 204 bytes, SQIsign is currently the only candidate that offers NIST-level (more accurately NIST-on-ramp-level) security safely within the 1024-byte limit alongside its necessary metadata.
27
+
28
+ #### Critical use case example
29
+ For mission-critical applications like low-latency augmented reality remote telesurgery, where ultra-low latency and hardware-rooted trust are non-negotiable. RustyKey® who financially support this repo and the npm package, required a WASM port of SQIsign specifically because the 204-byte signatures are the only PQC option that worked within their current hardware constraints, enabling immediate quantum-resistant public key ceremonies without breaking the existing WebAuthn ecosystem.
30
+
31
+ ## Broad user-friendly live example testbed and playground (coming May 2026)
32
+
33
+ - live test environment where general purpose users together with seasoned cryptanalysts, can encrypt and descrypt and play, using all 3 varients of KEM and a test WebAuthn implementations using the signature algorithms
34
+ - lattice-based vs isogeny: run tests to check: Montgomery constant times, the surprising difference in time taken for the various steps
35
+ - all are encouraged to suggest improvements, and help a wider audience see how PQC works under the hood and adopt it more quickly and without breaking existing infrastructure.
20
36
 
21
37
  ## Security assurance and verification
22
38
 
@@ -45,20 +61,30 @@ The three parameter sets (512/768/1024) use the same implementation family and d
45
61
  - Variant sizes/parameters are defined upstream in `mlkem/mlkem_native.h`.
46
62
 
47
63
  ### Why we mix C => emscripten with Rust => wasm-bindgen for web-assembly module creation
64
+
48
65
  Increasingly, developers favor Rust => wasm-bindgen over C => emscripten for Rust's superior compile-time memory safety...and leaning on Rust is implied in our brand! RustyKey® current dual approach is a way to balance performance, security-vetted logic, and web compatibility. Some technical factors may make C => emscripten approach acceptable and, in some cases, preferable for post-quantum cryptography:
66
+
49
67
  - upstream Reliability: Many NIST-standardized PQC algorithms (like ML-KEM) have highly optimized, audited, and "constant-time" reference implementations written in C. Using C => Emscripten allows RustyKey® to port these vetted "upstream" sources directly, reducing the risk of introducing new implementation bugs during a full rewrite into Rust.
68
+
50
69
  - Constant-Time Guarantees: web-assembly is particularly opaque. In cryptography, protection against side-channel attacks (like timing attacks) is often more critical than general-purpose memory safety. Using audited C code that is already proven to be constant-time may be a safer WASM route than a new Rust implementation that might inadvertently introduce timing leaks. We encourage realtime constant time checks in our testbed site and appreciate any feedback to improve.
70
+
51
71
  - Toolchain Maturity: Emscripten is a mature leader in the WASM ecosystem (sometimes...bloated!). For projects needing to bridge legacy or specialized C libraries with the web, emscripten provides a stable environment that can, when optimized, outperform wasm-bindgen in raw execution speed for specific linear memory access patterns.
52
72
 
73
+
53
74
  ### Why we offer WASM implementations of SQISign (NIST on-ramp only) alongside established, standards-track Falcon and Dilithium?
54
- 1. The "SIDH" vs. "SQIsign" Distinction
55
- - the algorithm that was "spectacularly broken" in 2022 was SIDH. The attack (the Castryck-Decru attack) exploited specific "auxiliary points" for example revealing torsion point information.
56
- - SQIsign is fundamentally different, and structurally resistant to this specific attack because it does not reveal torsion point information. Security relies on the Deuring correspondence — a mathematical link between supersingular elliptic curves and quaternion algebras — rather than the specific isogeny problem with auxiliary points used by SIDH.
57
- - To date, SQIsign remains structurally sound against the specific attacks that broke SIDH, which is why NIST accepted it onto the "on-ramp" (the Round 4/Additional Signatures track).
58
- 2. Smaller Signature Size Advantage
59
- - SQISign has smaller signatures. This npm package is a WASM-based project targeting web or mobile, where signature size is a massive bottleneck for bandwidth.
60
75
 
61
- ### How users can independently verify
76
+ ### The "SIDH" vs. "SQIsign" Distinction
77
+ - the algorithm that was spectacularly broken in 2022 was SIDH. The attack (the Castryck-Decru attack) exploited specific "auxiliary points", for example revealing torsion point information.
78
+
79
+ - SQIsign is fundamentally different from SIDH, and likely structurally resistant to this specific attack because it does not appear to reveal torsion point information. Instead, SQIsign security relies on the Deuring correspondence — a mathematical link between supersingular elliptic curves and quaternion algebras — rather than the specific isogeny problem with auxiliary points used by SIDH.
80
+
81
+ - To date (mid-2026), SQIsign remains structurally sound against the specific attacks that broke SIDH, which is why NIST accepted SQIsign onto the "on-ramp" (the Round 4/Additional Signatures track).
82
+
83
+ ### Smaller Signature Size Advantage
84
+ - SQISign has smaller signatures: Short Quaternion Isogeny Signatures. This repo and associated npm package is primarily a WASM-based project targeting web or mobile, where signature size is a massive bottleneck for bandwidth.
85
+
86
+
87
+ ### How users can independently verify all algorithms and variants
62
88
 
63
89
  From the repository root:
64
90
 
@@ -246,6 +272,7 @@ This implementation includes patches to withstand side-channel attacks. For more
246
272
  ISC
247
273
 
248
274
  ## Funding
275
+
249
276
  This project was generously supported by:
250
277
  - University of Quantum Science
251
278
  - RustyKey®
@@ -258,7 +285,9 @@ This project was generously supported by:
258
285
  </div>
259
286
 
260
287
  ## How we work (aka Conduct)
288
+
261
289
  **"You are very welcome to our house: It must appear in other ways than words!" - W. Shakespeare**
290
+
262
291
  - do you think of yourself as total n00b...or seasoned and cynical Cryptologic Scientist. WELCOME one and all!
263
292
  - consider helping us build a friendly, safe and welcoming environment for all, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, nationality, or other similar characteristic.
264
293
  - please avoid aliases or nicknames that might detract from a friendly, safe and welcoming environment.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quantum-resistant-rustykey",
3
- "version": "0.7.3",
3
+ "version": "0.7.5",
4
4
  "description": "WebAssembly post-quantum-resistant tools for web",
5
5
  "author": "Antony R Mott <a@auditcanary.com> (https://rustykey.app)",
6
6
  "license": "ISC",
@@ -35,6 +35,18 @@
35
35
  "files": [
36
36
  "dist"
37
37
  ],
38
+ "devDependencies": {
39
+ "@biomejs/biome": "2.4.11",
40
+ "@changesets/cli": "2.30.0",
41
+ "@types/node": "25.6.0",
42
+ "esbuild": "0.28.0",
43
+ "tsdown": "0.21.8",
44
+ "typescript": "6.0.2",
45
+ "vitest": "4.1.4"
46
+ },
47
+ "dependencies": {
48
+ "@noble/post-quantum": "0.6.1"
49
+ },
38
50
  "scripts": {
39
51
  "clean": "rm -rf dist",
40
52
  "lint": "biome check . && tsc --project tsconfig.lint.json",
@@ -47,17 +59,5 @@
47
59
  "test": "pnpm build:vendor && vitest run",
48
60
  "release": "changeset publish",
49
61
  "example:browser": "pnpm --filter browser-demo dev"
50
- },
51
- "devDependencies": {
52
- "@biomejs/biome": "2.4.11",
53
- "@changesets/cli": "2.30.0",
54
- "@types/node": "25.6.0",
55
- "esbuild": "0.28.0",
56
- "tsdown": "0.21.8",
57
- "typescript": "6.0.2",
58
- "vitest": "4.1.4"
59
- },
60
- "dependencies": {
61
- "@noble/post-quantum": "0.6.1"
62
62
  }
63
- }
63
+ }