@atlasauth/pca-mpc 0.2.0 → 0.4.0

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 (85) hide show
  1. package/README.md +81 -3
  2. package/dist/beaver.js +4 -0
  3. package/dist/beaver.js.map +1 -1
  4. package/dist/compose.d.ts +9 -2
  5. package/dist/compose.js +24 -1
  6. package/dist/compose.js.map +1 -1
  7. package/dist/ec.d.ts +6 -3
  8. package/dist/ec.js +27 -9
  9. package/dist/ec.js.map +1 -1
  10. package/dist/enc.d.ts +46 -0
  11. package/dist/enc.js +88 -0
  12. package/dist/enc.js.map +1 -0
  13. package/dist/endemic-ot.js +24 -1
  14. package/dist/endemic-ot.js.map +1 -1
  15. package/dist/hybrid-ot.js +3 -0
  16. package/dist/hybrid-ot.js.map +1 -1
  17. package/dist/kem-ot.js +2 -0
  18. package/dist/kem-ot.js.map +1 -1
  19. package/dist/mascot.d.ts +81 -30
  20. package/dist/mascot.js +232 -113
  21. package/dist/mascot.js.map +1 -1
  22. package/dist/net/certs.d.ts +14 -0
  23. package/dist/net/certs.js +30 -0
  24. package/dist/net/certs.js.map +1 -0
  25. package/dist/net/faults.d.ts +49 -0
  26. package/dist/net/faults.js +222 -0
  27. package/dist/net/faults.js.map +1 -0
  28. package/dist/net/forensics.d.ts +81 -0
  29. package/dist/net/forensics.js +181 -0
  30. package/dist/net/forensics.js.map +1 -0
  31. package/dist/net/gadget.d.ts +44 -0
  32. package/dist/net/gadget.js +102 -0
  33. package/dist/net/gadget.js.map +1 -0
  34. package/dist/net/index.d.ts +11 -0
  35. package/dist/net/index.js +28 -0
  36. package/dist/net/index.js.map +1 -0
  37. package/dist/net/launch-local.d.ts +53 -0
  38. package/dist/net/launch-local.js +190 -0
  39. package/dist/net/launch-local.js.map +1 -0
  40. package/dist/net/launch-support.d.ts +6 -0
  41. package/dist/net/launch-support.js +65 -0
  42. package/dist/net/launch-support.js.map +1 -0
  43. package/dist/net/mesh.d.ts +135 -0
  44. package/dist/net/mesh.js +491 -0
  45. package/dist/net/mesh.js.map +1 -0
  46. package/dist/net/offline-net.d.ts +58 -0
  47. package/dist/net/offline-net.js +485 -0
  48. package/dist/net/offline-net.js.map +1 -0
  49. package/dist/net/ot-net.d.ts +42 -0
  50. package/dist/net/ot-net.js +219 -0
  51. package/dist/net/ot-net.js.map +1 -0
  52. package/dist/net/pa.d.ts +65 -0
  53. package/dist/net/pa.js +118 -0
  54. package/dist/net/pa.js.map +1 -0
  55. package/dist/net/party-main.d.ts +48 -0
  56. package/dist/net/party-main.js +146 -0
  57. package/dist/net/party-main.js.map +1 -0
  58. package/dist/net/prep.d.ts +40 -0
  59. package/dist/net/prep.js +12 -0
  60. package/dist/net/prep.js.map +1 -0
  61. package/dist/net/protocol.d.ts +126 -0
  62. package/dist/net/protocol.js +655 -0
  63. package/dist/net/protocol.js.map +1 -0
  64. package/dist/net/wire.d.ts +89 -0
  65. package/dist/net/wire.js +242 -0
  66. package/dist/net/wire.js.map +1 -0
  67. package/dist/ot.d.ts +176 -17
  68. package/dist/ot.js +479 -252
  69. package/dist/ot.js.map +1 -1
  70. package/dist/otx.d.ts +76 -0
  71. package/dist/otx.js +238 -0
  72. package/dist/otx.js.map +1 -0
  73. package/dist/runner.d.ts +1 -1
  74. package/dist/runner.js +6 -1
  75. package/dist/runner.js.map +1 -1
  76. package/dist/sharing.d.ts +2 -0
  77. package/dist/sharing.js +7 -4
  78. package/dist/sharing.js.map +1 -1
  79. package/dist/spdz-runner.d.ts +20 -3
  80. package/dist/spdz-runner.js +21 -3
  81. package/dist/spdz-runner.js.map +1 -1
  82. package/dist/spdz.d.ts +96 -22
  83. package/dist/spdz.js +196 -47
  84. package/dist/spdz.js.map +1 -1
  85. package/package.json +15 -6
package/dist/spdz.js CHANGED
@@ -20,11 +20,13 @@
20
20
  *
21
21
  * Security upgrade: semi-honest → **malicious-with-abort, dishonest-majority** (secure against up to
22
22
  * N−1 actively-corrupted parties; privacy and MAC-forgery-resistance both hold at the N−1 threshold).
23
- * The MAC is information-theoretic: forging a MAC on a wrong value succeeds with probability ≤ 2/p
24
- * (here ≈ 2^−60), independent of the adversary's computing power.
23
+ * The MAC is information-theoretic, independent of the adversary's computing power. ONE key over the 61-bit
24
+ * field is only ≈ 2^−60 sound, so every value carries `MAC_KEYS = 2` MACs under INDEPENDENT global keys, each
25
+ * with its own challenge vector, all checked in the same batched check: the forgery probability is
26
+ * ≤ (2/p)^2 ≈ 2^−120 (proof: docs/pca/security/pca-mpc-spdz-soundness.md; `macSoundnessBits`).
25
27
  *
26
28
  * OFFLINE-PHASE BOUNDARY (honest, see docs §7): the authenticated triples / input sharings below are
27
- * produced by a TRUSTED DEALER that honestly knows `α`. That keeps the *online* phase — openings,
29
+ * produced by a TRUSTED DEALER that honestly knows the MAC keys. That keeps the *online* phase — openings,
28
30
  * MAC updates, and the MAC-check — the real, maliciously-secure thing, with the dealer as the one
29
31
  * explicit trust assumption. A no-dealer offline phase (MASCOT/Overdrive: OT- or HE-based authenticated
30
32
  * triple generation, itself maliciously secure, with a distributed `α` nobody ever reconstructs) is
@@ -33,7 +35,9 @@
33
35
  * via `node:crypto`), modelling the commit-then-open round that defeats a rushing adversary.
34
36
  */
35
37
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SpdzEngine = exports.MacCheckAbort = void 0;
38
+ exports.SpdzEngine = exports.SACRIFICE_PARTNERS = exports.MacCheckAbort = exports.MIN_MAC_SOUNDNESS_BITS = exports.MAC_KEYS = void 0;
39
+ exports.macKeys = macKeys;
40
+ exports.macSoundnessBits = macSoundnessBits;
37
41
  exports.setupMac = setupMac;
38
42
  exports.authShare = authShare;
39
43
  exports.authConstant = authConstant;
@@ -44,11 +48,31 @@ exports.scaleAuth = scaleAuth;
44
48
  exports.addPublicAuth = addPublicAuth;
45
49
  exports.notBitAuth = notBitAuth;
46
50
  exports.genAuthTriple = genAuthTriple;
51
+ exports.genTripleWithPartners = genTripleWithPartners;
52
+ exports.sacrificeVerify = sacrificeVerify;
53
+ exports.macResiduals = macResiduals;
47
54
  exports.beaverMulAuth = beaverMulAuth;
48
55
  exports.authValue = authValue;
49
56
  const node_crypto_1 = require("node:crypto");
50
57
  const field_1 = require("./field");
51
58
  const sharing_1 = require("./sharing");
59
+ /** Number of independent MAC keys the trusted-dealer / no-dealer setups create by default. */
60
+ exports.MAC_KEYS = 2;
61
+ /** The statistical security the MAC-check must provide, in bits. `SpdzEngine` refuses a weaker context. */
62
+ exports.MIN_MAC_SOUNDNESS_BITS = 100;
63
+ /** All keys of a context, key 0 first. */
64
+ function macKeys(ctx) {
65
+ return [{ alphaShares: ctx.alphaShares, alpha: ctx.alpha }, ...ctx.extraKeys];
66
+ }
67
+ /**
68
+ * Soundness (as -log2 of the forgery probability) of the batched MAC-check over a field of `fieldBits`
69
+ * bits (default: this field) with `keys` independent keys: per key the failure probability is ≤ 2/p
70
+ * (1/p for guessing the key, 1/p for a random combination hitting a non-zero residual), and the keys and
71
+ * challenge vectors are independent, so the total is ≤ (2/p)^keys. Returns `keys · (log2 p − 1)`.
72
+ */
73
+ function macSoundnessBits(keys, p = field_1.PRIME) {
74
+ return keys * (Math.log2(Number(p)) - 1);
75
+ }
52
76
  /** Raised when the SPDZ MAC-check detects an inconsistent opening/MAC: the protocol ABORTS, no output. */
53
77
  class MacCheckAbort extends Error {
54
78
  constructor(message) {
@@ -57,17 +81,27 @@ class MacCheckAbort extends Error {
57
81
  }
58
82
  }
59
83
  exports.MacCheckAbort = MacCheckAbort;
60
- /** Dealer preprocessing: sample the global MAC key α and additively share it across n parties. */
61
- function setupMac(n, rng) {
84
+ /** Dealer preprocessing: sample `keys` independent global MAC keys and additively share each across n parties. */
85
+ function setupMac(n, rng, keys = exports.MAC_KEYS) {
62
86
  if (!Number.isInteger(n) || n < 1)
63
87
  throw new Error('setupMac: n must be a positive integer');
64
- const alpha = rng.next();
65
- return { n, alpha, alphaShares: (0, sharing_1.share)(alpha, n, rng) };
88
+ if (!Number.isInteger(keys) || keys < 1 || keys > 16)
89
+ throw new Error('setupMac: keys must be an integer in [1, 16]');
90
+ const mk = () => {
91
+ const alpha = rng.next();
92
+ return { alpha, alphaShares: (0, sharing_1.share)(alpha, n, rng) };
93
+ };
94
+ const first = mk();
95
+ return { n, ...first, extraKeys: Array.from({ length: keys - 1 }, mk) };
66
96
  }
67
- /** Authenticated sharing of `secret` (dealer-side): value shares sum to x, MAC shares sum to α·x. */
97
+ /** Authenticated sharing of `secret` (dealer-side): value shares sum to x, MAC shares sum to α·x per key. */
68
98
  function authShare(secret, ctx, rng) {
69
99
  const v = (0, field_1.mod)(secret);
70
- return { value: (0, sharing_1.share)(v, ctx.n, rng), mac: (0, sharing_1.share)((0, field_1.fmul)(ctx.alpha, v), ctx.n, rng) };
100
+ return {
101
+ value: (0, sharing_1.share)(v, ctx.n, rng),
102
+ mac: (0, sharing_1.share)((0, field_1.fmul)(ctx.alpha, v), ctx.n, rng),
103
+ extraMac: ctx.extraKeys.map((k) => (0, sharing_1.share)((0, field_1.fmul)(k.alpha, v), ctx.n, rng)),
104
+ };
71
105
  }
72
106
  /** Authenticated sharing of a PUBLIC constant c: value = shareConstant(c), MAC = share of α·c (via α_i·c). */
73
107
  function authConstant(c, ctx) {
@@ -76,14 +110,16 @@ function authConstant(c, ctx) {
76
110
  value[0] = v;
77
111
  // γ_i = α_i · c so that Σ γ_i = α·c, with no randomness and no interaction.
78
112
  const mac = ctx.alphaShares.map((ai) => (0, field_1.fmul)(ai, v));
79
- return { value, mac };
113
+ return { value, mac, extraMac: ctx.extraKeys.map((k) => k.alphaShares.map((ai) => (0, field_1.fmul)(ai, v))) };
80
114
  }
81
- /** ⟦x⟧ + ⟦y⟧ (local; MAC shares add, preserving Σγ = α·(x+y)). */
115
+ const zipMac = (x, y, f) => x.map((row, l) => row.map((m, i) => f(m, y[l][i])));
116
+ /** ⟦x⟧ + ⟦y⟧ (local; MAC shares add, preserving Σγ = α·(x+y) under every key). */
82
117
  function addAuth(x, y) {
83
118
  requireSame(x, y);
84
119
  return {
85
120
  value: x.value.map((xi, i) => (0, field_1.fadd)(xi, y.value[i])),
86
121
  mac: x.mac.map((mi, i) => (0, field_1.fadd)(mi, y.mac[i])),
122
+ extraMac: zipMac(x.extraMac, y.extraMac, field_1.fadd),
87
123
  };
88
124
  }
89
125
  /** ⟦x⟧ − ⟦y⟧ (local). */
@@ -92,28 +128,44 @@ function subAuth(x, y) {
92
128
  return {
93
129
  value: x.value.map((xi, i) => (0, field_1.fsub)(xi, y.value[i])),
94
130
  mac: x.mac.map((mi, i) => (0, field_1.fsub)(mi, y.mac[i])),
131
+ extraMac: zipMac(x.extraMac, y.extraMac, field_1.fsub),
95
132
  };
96
133
  }
97
134
  /** −⟦x⟧ (local). */
98
135
  function negAuth(x) {
99
- return { value: x.value.map(field_1.fneg), mac: x.mac.map(field_1.fneg) };
136
+ return { value: x.value.map(field_1.fneg), mac: x.mac.map(field_1.fneg), extraMac: x.extraMac.map((r) => r.map(field_1.fneg)) };
100
137
  }
101
- /** ⟦x⟧ · c for a PUBLIC scalar c (local): both value and MAC shares scale by c. */
138
+ /** ⟦x⟧ · c for a PUBLIC scalar c (local): value and every MAC share scale by c. */
102
139
  function scaleAuth(x, c) {
103
140
  const k = (0, field_1.mod)(c);
104
- return { value: x.value.map((xi) => (0, field_1.fmul)(xi, k)), mac: x.mac.map((mi) => (0, field_1.fmul)(mi, k)) };
141
+ return {
142
+ value: x.value.map((xi) => (0, field_1.fmul)(xi, k)),
143
+ mac: x.mac.map((mi) => (0, field_1.fmul)(mi, k)),
144
+ extraMac: x.extraMac.map((r) => r.map((mi) => (0, field_1.fmul)(mi, k))),
145
+ };
105
146
  }
106
147
  /**
107
148
  * ⟦x⟧ + c for a PUBLIC constant c (local). The SPDZ public-constant rule: add c to ONE party's value
108
- * share, and add α_i·c to EVERY party's MAC share (each party holds α_i), so Σγ becomes α·x + α·c =
109
- * α·(x+c). This is what lets affine gates stay authenticated without any interaction.
149
+ * share, and add α_i·c to EVERY party's MAC share under EVERY key (each party holds its α_i), so Σγ becomes
150
+ * α·x + α·c = α·(x+c). This is what lets affine gates stay authenticated without any interaction.
110
151
  */
111
152
  function addPublicAuth(x, c, ctx) {
153
+ if (x.value.length !== ctx.n || x.mac.length !== ctx.n || ctx.alphaShares.length !== ctx.n) {
154
+ throw new Error('addPublicAuth: shared value and MAC context disagree on the party count');
155
+ }
156
+ if (x.extraMac.length !== ctx.extraKeys.length)
157
+ throw new Error('addPublicAuth: shared value and MAC context disagree on the key count');
112
158
  const k = (0, field_1.mod)(c);
113
159
  const value = x.value.slice();
114
160
  value[0] = (0, field_1.fadd)(value[0], k);
115
161
  const mac = x.mac.map((mi, i) => (0, field_1.fadd)(mi, (0, field_1.fmul)(ctx.alphaShares[i], k)));
116
- return { value, mac };
162
+ const extraMac = x.extraMac.map((row, l) => {
163
+ const key = ctx.extraKeys[l];
164
+ if (row.length !== ctx.n || key.alphaShares.length !== ctx.n)
165
+ throw new Error('addPublicAuth: extra MAC party count mismatch');
166
+ return row.map((mi, i) => (0, field_1.fadd)(mi, (0, field_1.fmul)(key.alphaShares[i], k)));
167
+ });
168
+ return { value, mac, extraMac };
117
169
  }
118
170
  /** Logical NOT of an authenticated bit b: ⟦1 − b⟧ (local). */
119
171
  function notBitAuth(b, ctx) {
@@ -129,6 +181,88 @@ function genAuthTriple(ctx, rng) {
129
181
  c: authShare((0, field_1.fmul)(a, b), ctx, rng),
130
182
  };
131
183
  }
184
+ /**
185
+ * Number of independent sacrifice partners per delivered triple. The sacrifice of one partner passes a
186
+ * triple with c ≠ a·b with probability ≤ 1/p (the random challenge must hit one value); `r` independent
187
+ * partners (each with its own challenge) give ≤ p^-r, so 2 partners ≈ 2^-122 > the 2^-100 floor.
188
+ */
189
+ exports.SACRIFICE_PARTNERS = 2;
190
+ /** Trusted-dealer preprocessing of one triple together with its sacrifice partners (all sharing b). */
191
+ function genTripleWithPartners(ctx, rng, partners = exports.SACRIFICE_PARTNERS, fault) {
192
+ if (!Number.isInteger(partners) || partners < 1 || partners > 8)
193
+ throw new Error('genTripleWithPartners: partners must be in [1, 8]');
194
+ const a = rng.next();
195
+ const b = rng.next();
196
+ const bSV = authShare(b, ctx, rng);
197
+ const keep = {
198
+ a: authShare(a, ctx, rng),
199
+ b: bSV,
200
+ c: authShare((0, field_1.fadd)((0, field_1.fmul)(a, b), fault?.keepCDelta ?? 0n), ctx, rng),
201
+ };
202
+ const ps = [];
203
+ for (let r = 0; r < partners; r++) {
204
+ const ah = rng.next();
205
+ ps.push({ a: authShare(ah, ctx, rng), b: bSV, c: authShare((0, field_1.fadd)((0, field_1.fmul)(ah, b), fault?.partnerCDelta?.[r] ?? 0n), ctx, rng) });
206
+ }
207
+ return { keep, partners: ps };
208
+ }
209
+ /**
210
+ * The MASCOT/SPDZ **sacrifice** check on a batch. For every kept triple (a,b,c) and each partner (â,b,ĉ)
211
+ * it draws a public random challenge e ≠ 0, opens ρ = e·a − â, forms ⟦τ⟧ = e·⟦c⟧ − ⟦ĉ⟧ − ρ·⟦b⟧ and opens
212
+ * it. If both triples are correct, τ = e·(c − ab) − (ĉ − âb) = 0; if c = ab + δ with δ ≠ 0, τ = e·δ − δ̂ is
213
+ * non-zero except for one value of e (prob 1/p), and independent partners multiply the failure
214
+ * probabilities. A lie in either opening is caught by the single batched MAC-check (all keys). Throws
215
+ * `MacCheckAbort` on any failure and emits NOTHING; otherwise returns the certified kept triples.
216
+ * The partners are consumed and must never be reused.
217
+ */
218
+ function sacrificeVerify(batch, ctx, rng, deviations = []) {
219
+ const engine = new SpdzEngine(ctx, deviations);
220
+ const taus = [];
221
+ for (const { keep, partners } of batch) {
222
+ if (partners.length < 1)
223
+ throw new MacCheckAbort('sacrifice: a triple without partners cannot be certified');
224
+ for (const sac of partners) {
225
+ if (sac.b.value.length !== keep.b.value.length || sac.b.value.some((v, i) => v !== keep.b.value[i])) {
226
+ throw new MacCheckAbort('sacrifice: partner does not share b with the triple');
227
+ }
228
+ let e = rng.next();
229
+ if (e === 0n)
230
+ e = 1n; // public random challenge, non-zero
231
+ const rho = engine.open(subAuth(scaleAuth(keep.a, e), sac.a), 'sacrifice:rho');
232
+ let tau = subAuth(scaleAuth(keep.c, e), sac.c);
233
+ tau = subAuth(tau, scaleAuth(keep.b, rho));
234
+ taus.push(engine.open(tau, 'sacrifice:tau'));
235
+ }
236
+ }
237
+ engine.macCheck(rng); // commit-then-open MAC-check on every ρ and τ; throws on a forged opening
238
+ for (const t of taus) {
239
+ if (t !== 0n) {
240
+ throw new MacCheckAbort(`Beaver-triple sacrifice FAILED: residual tau=${t} != 0 - a malformed triple (c != a*b) was delivered; aborting with no triple emitted`);
241
+ }
242
+ }
243
+ return batch.map((x) => x.keep);
244
+ }
245
+ /**
246
+ * The arithmetic core of the batched SPDZ MAC-check, over an ARBITRARY prime modulus `p` so the very same
247
+ * code can be exercised on a deliberately tiny field (the soundness experiment in the tests). For each key
248
+ * l, with its own challenge vector r^(l): a^(l) = Σ_j r_j^(l)·v_j, and party i's residual share is
249
+ * σ_i^(l) = Σ_j r_j^(l)·γ_ij^(l) − α_i^(l)·a^(l). Returns σ[key][party]; honest data gives Σ_i σ_i^(l) = 0 for every l.
250
+ */
251
+ function macResiduals(p, alphaShares, opened, challenges) {
252
+ const m = (x) => ((x % p) + p) % p;
253
+ return alphaShares.map((alphas, l) => {
254
+ const r = challenges[l];
255
+ let a = 0n;
256
+ for (let j = 0; j < opened.length; j++)
257
+ a = m(a + r[j] * opened[j].value);
258
+ return alphas.map((alphaI, i) => {
259
+ let gamma = 0n;
260
+ for (let j = 0; j < opened.length; j++)
261
+ gamma = m(gamma + r[j] * opened[j].macShares[l][i]);
262
+ return m(gamma - alphaI * a);
263
+ });
264
+ });
265
+ }
132
266
  /**
133
267
  * The SPDZ online engine: performs partial openings (broadcast value shares, sum to the public value,
134
268
  * RETAIN the MAC shares for a single batched MAC-check at the end) and the MAC-check itself. A list of
@@ -142,6 +276,11 @@ class SpdzEngine {
142
276
  opened = [];
143
277
  counter = 0;
144
278
  constructor(ctx, deviations = []) {
279
+ // Fail closed: a context whose MAC-check is statistically weaker than the floor is refused outright.
280
+ const bits = macSoundnessBits(1 + ctx.extraKeys.length);
281
+ if (bits < exports.MIN_MAC_SOUNDNESS_BITS) {
282
+ throw new Error(`SpdzEngine: MAC context gives only ${bits.toFixed(0)} bits of statistical soundness (< ${exports.MIN_MAC_SOUNDNESS_BITS}); use setupMac(n, rng) with the default ${exports.MAC_KEYS} keys`);
283
+ }
145
284
  this.ctx = ctx;
146
285
  this.deviations = deviations;
147
286
  }
@@ -156,8 +295,10 @@ class SpdzEngine {
156
295
  */
157
296
  open(x, label = '') {
158
297
  const idx = this.counter++;
298
+ if (x.extraMac.length !== this.ctx.extraKeys.length)
299
+ throw new Error('open: value and MAC context disagree on the key count');
159
300
  const valueShares = x.value.slice();
160
- const macShares = x.mac.slice();
301
+ const macShares = [x.mac.slice(), ...x.extraMac.map((r) => r.slice())];
161
302
  for (const d of this.deviations) {
162
303
  if (d.openIndex !== idx)
163
304
  continue;
@@ -165,19 +306,23 @@ class SpdzEngine {
165
306
  throw new Error('Deviation.party out of range');
166
307
  if (d.valueDelta !== undefined)
167
308
  valueShares[d.party] = (0, field_1.fadd)(valueShares[d.party], d.valueDelta);
168
- if (d.macDelta !== undefined)
169
- macShares[d.party] = (0, field_1.fadd)(macShares[d.party], d.macDelta);
309
+ if (d.macDelta !== undefined) {
310
+ const key = d.macKey ?? 0;
311
+ if (key < 0 || key >= macShares.length)
312
+ throw new Error('Deviation.macKey out of range');
313
+ macShares[key][d.party] = (0, field_1.fadd)(macShares[key][d.party], d.macDelta);
314
+ }
170
315
  }
171
316
  const value = valueShares.reduce((a, b) => (0, field_1.fadd)(a, b), 0n);
172
317
  this.opened.push({ value, macShares, label });
173
318
  return value;
174
319
  }
175
320
  /**
176
- * SPDZ MAC-check over every partial-open so far. Draws public random coefficients r_j (a secure
177
- * coin-flip in the real protocol; a seeded RNG here, documented), forms the public combination
178
- * a = Σ r_j·a_j and each party's residual share σ_i = (Σ r_j·γ_i(a_j)) − α_i·a, then runs
179
- * commit-then-open on the σ_i and checks Σ σ_i = 0. Honest runs give exactly 0; ANY inconsistent
180
- * opened value or forged MAC makes it non-zero with probability ≥ 1 − 2/p, and we ABORT.
321
+ * SPDZ MAC-check over every partial-open so far. For EACH key draws an independent public challenge
322
+ * vector (a secure coin-flip in the real protocol; the supplied RNG here), forms the residual shares
323
+ * (`macResiduals`), then runs commit-then-open on every σ and checks Σ σ = 0 for every key. Honest runs
324
+ * give exactly 0; ANY inconsistent opened value or forged MAC makes some key's sum non-zero with
325
+ * probability ≥ 1 − (2/p)^k, and we ABORT.
181
326
  *
182
327
  * The commit-then-open (SHA-256 binding commitment) models the round that stops a *rushing*
183
328
  * adversary from choosing its σ_i after seeing the others — it must commit before any are revealed.
@@ -185,31 +330,26 @@ class SpdzEngine {
185
330
  macCheck(rng) {
186
331
  if (this.opened.length === 0)
187
332
  return;
188
- const r = this.opened.map(() => rng.next());
189
- let a = 0n;
190
- for (let j = 0; j < this.opened.length; j++)
191
- a = (0, field_1.fadd)(a, (0, field_1.fmul)(r[j], this.opened[j].value));
192
- const sigma = [];
193
- for (let i = 0; i < this.ctx.n; i++) {
194
- let gamma = 0n;
195
- for (let j = 0; j < this.opened.length; j++) {
196
- gamma = (0, field_1.fadd)(gamma, (0, field_1.fmul)(r[j], this.opened[j].macShares[i]));
333
+ const keys = macKeys(this.ctx);
334
+ const challenges = keys.map(() => this.opened.map(() => rng.next()));
335
+ const sigma = macResiduals(field_1.PRIME, keys.map((k) => k.alphaShares), this.opened, challenges);
336
+ // Commit-then-open: every party commits to every σ_i^(l) (binding) before any σ is revealed.
337
+ for (let l = 0; l < sigma.length; l++) {
338
+ const nonces = sigma[l].map(() => rng.next());
339
+ const commitments = sigma[l].map((s, i) => commit(s, nonces[i]));
340
+ for (let i = 0; i < commitments.length; i++) {
341
+ // Opening phase: a σ_i revealed inconsistent with its commitment is itself an abort.
342
+ if (commit(sigma[l][i], nonces[i]) !== commitments[i]) {
343
+ throw new MacCheckAbort(`MAC-check: commitment from party ${i} did not open consistently`);
344
+ }
197
345
  }
198
- sigma.push((0, field_1.fsub)(gamma, (0, field_1.fmul)(this.ctx.alphaShares[i], a)));
199
346
  }
200
- // Commit-then-open: every party commits to σ_i (binding) before any σ is revealed.
201
- const nonces = sigma.map(() => rng.next());
202
- const commitments = sigma.map((s, i) => commit(s, nonces[i]));
203
- for (let i = 0; i < sigma.length; i++) {
204
- // Opening phase: a σ_i revealed inconsistent with its commitment is itself an abort.
205
- if (commit(sigma[i], nonces[i]) !== commitments[i]) {
206
- throw new MacCheckAbort(`MAC-check: commitment from party ${i} did not open consistently`);
347
+ for (let l = 0; l < sigma.length; l++) {
348
+ const residual = sigma[l].reduce((x, y) => (0, field_1.fadd)(x, y), 0n);
349
+ if (residual !== 0n) {
350
+ throw new MacCheckAbort(`MAC-check FAILED (key ${l}): residual ${residual} != 0 — an actively-malicious party was detected; aborting with no output`);
207
351
  }
208
352
  }
209
- const residual = sigma.reduce((x, y) => (0, field_1.fadd)(x, y), 0n);
210
- if (residual !== 0n) {
211
- throw new MacCheckAbort(`MAC-check FAILED: residual ${residual} != 0 — an actively-malicious party was detected; aborting with no output`);
212
- }
213
353
  }
214
354
  }
215
355
  exports.SpdzEngine = SpdzEngine;
@@ -220,6 +360,9 @@ exports.SpdzEngine = SpdzEngine;
220
360
  * opens d or e inconsistently is caught there.
221
361
  */
222
362
  function beaverMulAuth(x, y, triple, ctx, engine, label = '') {
363
+ for (const t of [triple.a, triple.b, triple.c])
364
+ requireSame(x, t);
365
+ requireSame(x, y);
223
366
  const d = engine.open(subAuth(x, triple.a), `${label}:d`);
224
367
  const e = engine.open(subAuth(y, triple.b), `${label}:e`);
225
368
  // ⟦z⟧ = ⟦c⟧ + d·⟦b⟧ + e·⟦a⟧ + d·e (the last term is a public constant, MAC'd via α_i).
@@ -239,5 +382,11 @@ function requireSame(x, y) {
239
382
  if (x.value.length !== y.value.length || x.mac.length !== y.mac.length) {
240
383
  throw new Error('authenticated shared values must have the same party count');
241
384
  }
385
+ if (x.extraMac.length !== y.extraMac.length)
386
+ throw new Error('authenticated shared values must carry the same number of MAC keys');
387
+ for (let l = 0; l < x.extraMac.length; l++) {
388
+ if (x.extraMac[l].length !== y.extraMac[l].length)
389
+ throw new Error('authenticated shared values must have the same party count');
390
+ }
242
391
  }
243
392
  //# sourceMappingURL=spdz.js.map
package/dist/spdz.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"spdz.js","sourceRoot":"","sources":["../src/spdz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spdz.js","sourceRoot":"","sources":["../src/spdz.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AAgDH,0BAEC;AAQD,4CAEC;AAWD,4BASC;AAGD,8BAOC;AAGD,oCAOC;AAMD,0BAOC;AAGD,0BAOC;AAGD,0BAEC;AAGD,8BAOC;AAOD,sCAeC;AAGD,gCAEC;AAGD,sCAQC;AA2BD,sDAqBC;AAWD,0CA+BC;AA8BD,oCAiBC;AAyGD,sCAgBC;AAGD,8BAEC;AArbD,6CAAyC;AACzC,mCAAuE;AACvE,uCAAkC;AAqClC,8FAA8F;AACjF,QAAA,QAAQ,GAAG,CAAC,CAAC;AAE1B,2GAA2G;AAC9F,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAE1C,0CAA0C;AAC1C,SAAgB,OAAO,CAAC,GAAe;IACrC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,IAAY,aAAK;IAC9D,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,0GAA0G;AAC1G,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,kHAAkH;AAClH,SAAgB,QAAQ,CAAC,CAAS,EAAE,GAAa,EAAE,OAAe,gBAAQ;IACxE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACtH,MAAM,EAAE,GAAG,GAAW,EAAE;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACtD,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;IACnB,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,6GAA6G;AAC7G,SAAgB,SAAS,CAAC,MAAc,EAAE,GAAe,EAAE,GAAa;IACtE,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,MAAM,CAAC,CAAC;IACtB,OAAO;QACL,KAAK,EAAE,IAAA,eAAK,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3B,GAAG,EAAE,IAAA,eAAK,EAAC,IAAA,YAAI,EAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;QAC1C,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,eAAK,EAAC,IAAA,YAAI,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,8GAA8G;AAC9G,SAAgB,YAAY,CAAC,CAAS,EAAE,GAAe;IACrD,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,4EAA4E;IAC5E,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,CAAa,EAAE,CAAmC,EAAc,EAAE,CAC/F,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;AAExD,kFAAkF;AAClF,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAI,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,yBAAyB;AACzB,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAI,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,oBAAoB;AACpB,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAI,CAAC,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED,mFAAmF;AACnF,SAAgB,SAAS,CAAC,CAAS,EAAE,CAAS;IAC5C,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;IACjB,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,GAAe;IACjE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IACzI,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAA,YAAI,EAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,IAAA,YAAI,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/H,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,IAAA,YAAI,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED,8DAA8D;AAC9D,SAAgB,UAAU,CAAC,CAAS,EAAE,GAAe;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,2FAA2F;AAC3F,SAAgB,aAAa,CAAC,GAAe,EAAE,GAAa;IAC1D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO;QACL,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QACzB,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QACzB,CAAC,EAAE,SAAS,CAAC,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,CAAC,CAAC;AAmBpC,uGAAuG;AACvG,SAAgB,qBAAqB,CACnC,GAAe,EACf,GAAa,EACb,WAAmB,0BAAkB,EACrC,KAAmB;IAEnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAe;QACvB,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QACzB,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,SAAS,CAAC,IAAA,YAAI,EAAC,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;KAClE,CAAC;IACF,MAAM,EAAE,GAAiB,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,IAAA,YAAI,EAAC,IAAA,YAAI,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,KAAwC,EACxC,GAAe,EACf,GAAa,EACb,aAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,0DAA0D,CAAC,CAAC;QAC7G,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,MAAM,IAAI,aAAa,CAAC,qDAAqD,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE;gBAAE,CAAC,GAAG,EAAE,CAAC,CAAC,oCAAoC;YAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC/E,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,0EAA0E;IAChG,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CACrB,gDAAgD,CAAC,sFAAsF,CACxI,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAwBD;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,CAAS,EACT,WAAuB,EACvB,MAA+D,EAC/D,UAAsB;IAEtB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC;YAChG,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAa,UAAU;IACJ,GAAG,CAAa;IAChB,UAAU,CAAc;IACzC,sGAAsG;IACrF,MAAM,GAAkB,EAAE,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC;IAEpB,YAAY,GAAe,EAAE,aAA0B,EAAE;QACvD,qGAAqG;QACrG,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAI,GAAG,8BAAsB,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,8BAAsB,4CAA4C,gBAAQ,OAAO,CAAC,CAAC;QAC/L,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,sFAAsF;IACtF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,CAAS,EAAE,KAAK,GAAG,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC9H,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG;gBAAE,SAAS;YAClC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC1F,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;gBAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAA,YAAI,EAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YACjG,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC1B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACzF,SAAS,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAA,YAAI,EAAC,SAAS,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAa;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,YAAY,CACxB,aAAK,EACL,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAC9B,IAAI,CAAC,MAAM,EACX,UAAU,CACX,CAAC;QAEF,6FAA6F;QAC7F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,qFAAqF;gBACrF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,MAAM,IAAI,aAAa,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBACpB,MAAM,IAAI,aAAa,CACrB,yBAAyB,CAAC,eAAe,QAAQ,2EAA2E,CAC7H,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAzFD,gCAyFC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,CAAS,EACT,CAAS,EACT,MAAkB,EAClB,GAAe,EACf,MAAkB,EAClB,KAAK,GAAG,EAAE;IAEV,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IAC1D,wFAAwF;IACxF,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8GAA8G;AAC9G,SAAgB,SAAS,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,gHAAgH;AAChH,SAAS,MAAM,CAAC,KAAa,EAAE,KAAa;IAC1C,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACnI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IACrI,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@atlasauth/pca-mpc",
3
- "version": "0.2.0",
4
- "description": "Multi-stakeholder policy VM composed under secure multi-party computation (semi-honest additive secret sharing over a prime field) with a post-quantum base-OT. Experimental reference prototype.",
3
+ "version": "0.4.0",
4
+ "description": "Multi-stakeholder policy VM composed under secure multi-party computation (semi-honest additive secret sharing over a prime field, malicious-with-abort SPDZ-style layer, post-quantum base-OT) with a mutual-TLS networked runner. Experimental reference prototype.",
5
5
  "keywords": [
6
6
  "secure multi-party computation",
7
7
  "mpc",
@@ -11,7 +11,8 @@
11
11
  "agent authorization",
12
12
  "proof-carrying authority",
13
13
  "pca",
14
- "ai agents"
14
+ "ai agents",
15
+ "tls"
15
16
  ],
16
17
  "license": "MIT",
17
18
  "homepage": "https://github.com/Atlas-Authorization/pca#readme",
@@ -30,15 +31,20 @@
30
31
  "types": "./dist/index.d.ts",
31
32
  "default": "./dist/index.js"
32
33
  },
34
+ "./net": {
35
+ "types": "./dist/net/index.d.ts",
36
+ "default": "./dist/net/index.js"
37
+ },
33
38
  "./package.json": "./package.json"
34
39
  },
35
40
  "dependencies": {
36
41
  "@noble/post-quantum": "^0.4.1",
37
- "@atlasauth/pca": "0.2.0",
38
- "@atlasauth/pca-mpc-wasm": "0.2.0",
39
- "@atlasauth/pca-mpc-lwe-ot-wasm": "0.2.0"
42
+ "@atlasauth/pca": "0.4.0",
43
+ "@atlasauth/pca-mpc-lwe-ot-wasm": "0.4.0",
44
+ "@atlasauth/pca-mpc-wasm": "0.4.0"
40
45
  },
41
46
  "devDependencies": {
47
+ "fast-check": "^3.23.1",
42
48
  "typescript": "^5.6.3",
43
49
  "vitest": "^2.1.4"
44
50
  },
@@ -53,6 +59,9 @@
53
59
  "publishConfig": {
54
60
  "access": "public"
55
61
  },
62
+ "bin": {
63
+ "pca-mpc-node": "./dist/net/party-main.js"
64
+ },
56
65
  "scripts": {
57
66
  "build": "tsc -p tsconfig.build.json",
58
67
  "typecheck": "tsc -p tsconfig.json --noEmit",