@atlasauth/pca-mpc 0.3.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.
- package/README.md +81 -3
- package/dist/beaver.js +4 -0
- package/dist/beaver.js.map +1 -1
- package/dist/compose.d.ts +9 -2
- package/dist/compose.js +24 -1
- package/dist/compose.js.map +1 -1
- package/dist/ec.d.ts +6 -3
- package/dist/ec.js +27 -9
- package/dist/ec.js.map +1 -1
- package/dist/enc.d.ts +46 -0
- package/dist/enc.js +88 -0
- package/dist/enc.js.map +1 -0
- package/dist/endemic-ot.js +24 -1
- package/dist/endemic-ot.js.map +1 -1
- package/dist/hybrid-ot.js +3 -0
- package/dist/hybrid-ot.js.map +1 -1
- package/dist/kem-ot.js +2 -0
- package/dist/kem-ot.js.map +1 -1
- package/dist/mascot.d.ts +81 -30
- package/dist/mascot.js +232 -113
- package/dist/mascot.js.map +1 -1
- package/dist/net/certs.d.ts +14 -0
- package/dist/net/certs.js +30 -0
- package/dist/net/certs.js.map +1 -0
- package/dist/net/faults.d.ts +49 -0
- package/dist/net/faults.js +222 -0
- package/dist/net/faults.js.map +1 -0
- package/dist/net/forensics.d.ts +81 -0
- package/dist/net/forensics.js +181 -0
- package/dist/net/forensics.js.map +1 -0
- package/dist/net/gadget.d.ts +44 -0
- package/dist/net/gadget.js +102 -0
- package/dist/net/gadget.js.map +1 -0
- package/dist/net/index.d.ts +11 -0
- package/dist/net/index.js +28 -0
- package/dist/net/index.js.map +1 -0
- package/dist/net/launch-local.d.ts +53 -0
- package/dist/net/launch-local.js +190 -0
- package/dist/net/launch-local.js.map +1 -0
- package/dist/net/launch-support.d.ts +6 -0
- package/dist/net/launch-support.js +65 -0
- package/dist/net/launch-support.js.map +1 -0
- package/dist/net/mesh.d.ts +135 -0
- package/dist/net/mesh.js +491 -0
- package/dist/net/mesh.js.map +1 -0
- package/dist/net/offline-net.d.ts +58 -0
- package/dist/net/offline-net.js +485 -0
- package/dist/net/offline-net.js.map +1 -0
- package/dist/net/ot-net.d.ts +42 -0
- package/dist/net/ot-net.js +219 -0
- package/dist/net/ot-net.js.map +1 -0
- package/dist/net/pa.d.ts +65 -0
- package/dist/net/pa.js +118 -0
- package/dist/net/pa.js.map +1 -0
- package/dist/net/party-main.d.ts +48 -0
- package/dist/net/party-main.js +146 -0
- package/dist/net/party-main.js.map +1 -0
- package/dist/net/prep.d.ts +40 -0
- package/dist/net/prep.js +12 -0
- package/dist/net/prep.js.map +1 -0
- package/dist/net/protocol.d.ts +126 -0
- package/dist/net/protocol.js +655 -0
- package/dist/net/protocol.js.map +1 -0
- package/dist/net/wire.d.ts +89 -0
- package/dist/net/wire.js +242 -0
- package/dist/net/wire.js.map +1 -0
- package/dist/ot.d.ts +176 -17
- package/dist/ot.js +479 -252
- package/dist/ot.js.map +1 -1
- package/dist/otx.d.ts +76 -0
- package/dist/otx.js +238 -0
- package/dist/otx.js.map +1 -0
- package/dist/runner.d.ts +1 -1
- package/dist/runner.js +6 -1
- package/dist/runner.js.map +1 -1
- package/dist/sharing.d.ts +2 -0
- package/dist/sharing.js +7 -4
- package/dist/sharing.js.map +1 -1
- package/dist/spdz-runner.d.ts +20 -3
- package/dist/spdz-runner.js +21 -3
- package/dist/spdz-runner.js.map +1 -1
- package/dist/spdz.d.ts +96 -22
- package/dist/spdz.js +196 -47
- package/dist/spdz.js.map +1 -1
- 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
|
|
24
|
-
*
|
|
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
|
|
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
|
|
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
|
-
|
|
65
|
-
|
|
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 {
|
|
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
|
-
|
|
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):
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
177
|
-
* coin-flip in the real protocol;
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
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
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
for (let
|
|
196
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/pca-mpc",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Multi-stakeholder policy VM composed under secure multi-party computation (semi-honest additive secret sharing over a prime field
|
|
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.
|
|
38
|
-
"@atlasauth/pca-mpc-wasm": "0.
|
|
39
|
-
"@atlasauth/pca-mpc-
|
|
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",
|