@atlasauth/pca-mpc 0.3.0 → 0.4.1
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/README.md
CHANGED
|
@@ -49,17 +49,95 @@ result.composed; // { allow: 0, t: 3, rQuant: 5 } (the regulator only permits
|
|
|
49
49
|
const strict = composeSecureMalicious(vectors);
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
## API
|
|
52
|
+
## API (in-process)
|
|
53
53
|
|
|
54
54
|
- `evaluateParty(policy, Q?)` - reduce a party's private PCA decision input to a `DecisionVector`.
|
|
55
55
|
- `composeSecure(vectors, config?)` - semi-honest composition; returns `composed`, the public Beaver `opened` messages, and per-party views.
|
|
56
|
-
- `composeSecureMalicious(vectors, config?)` - dishonest-majority layer with information-theoretic MACs and a MAC check that aborts on deviation;
|
|
56
|
+
- `composeSecureMalicious(vectors, config?)` - dishonest-majority layer with information-theoretic MACs and a MAC check that aborts on deviation. The default offline phase is a TRUSTED DEALER (the result says `offlineMode: 'trusted-dealer'`); every dealt triple is certified by the sacrifice check, so a dealer that lies about `c` aborts the run (`triplesVerified: true`). An optional no-dealer offline provider (`makeNoDealerOffline`, OT-based) replaces the dealer (`offlineMode: 'no-dealer'`).
|
|
57
57
|
- `composeClear(vectors)` - the cleartext reference that `composeSecure` must equal.
|
|
58
58
|
- Lower-level building blocks (field arithmetic, sharing, Beaver triples, oblivious transfer including a post-quantum KEM-based base OT) are exported too.
|
|
59
59
|
|
|
60
|
+
## Networked runner (`@atlasauth/pca-mpc/net`)
|
|
61
|
+
|
|
62
|
+
The in-process API above simulates every party in one process. The `net` module runs each party as its OWN OS process that talks to the others only over sockets:
|
|
63
|
+
|
|
64
|
+
- **Transport (`mesh.ts`)**: TLS 1.3 with mutual authentication and pinned, per-run self-signed certificates (keys and certificates generated by the `openssl` CLI on the node that owns the key; only public certificates are exchanged). A peer is identified by its certificate fingerprint, never by a claimed id. Frames are length-prefixed, strictly parsed JSON with per-link sequence numbers, a session id and a round label. No cryptography is hand-rolled.
|
|
65
|
+
- **Fail closed, attributable aborts**: a disconnect, timeout, malformed or oversize frame, duplicate or skipped sequence number, wrong round or session, or non-canonical field element aborts the run with a `NetAbort` naming the sender. The first failure poisons the mesh, wakes every pending receive, sends an abort frame to every other peer, and closes the sockets. Every receive has a timeout, so nothing hangs. Attribution comes only from a node's own first-hand evidence on its own link. An abort frame received from a peer is only that peer's claim: the resulting `peer-abort` records the sending peer as `blamed` (or no one, for a second-hand relay), keeps the accusation separately as `claimedBlame` after validating it (an integer node id; kind and detail are checked and length-capped), and never treats it as attribution. When no culprit can be named, `blamed` is null and `NetAbort.reason` says why; a timeout records its `deadlineMs`; an `equivocation` found by the signed gadget echo carries the two signed statements as `evidence` (R3-16). Per-link inboxes are capped in frames and bytes (a flooding peer is blamed with `flood`), reads are paused under backpressure, and the observation log is bounded.
|
|
66
|
+
- **Protocol (`protocol.ts`)**: the malicious-with-abort SPDZ-style composition, distributed, with two offline modes that feed the same online phase. `trusted-dealer` (default, and labelled so in the results): one dealer process ships each party its own shares of two MAC keys, sacrifice-paired Beaver triples, authenticated input masks and pairwise tags. `no-dealer` (`offline: 'no-dealer'`, `offline-net.ts`): no dealer process; the parties generate all of that themselves from oblivious transfer between every ordered pair (session-bound Ed25519 base OTs, KOS-checked IKNP extension, Gilboa multiplication). Online, the parties run the triple sacrifice (2 partners per triple), `inputs` (or the input-consistency opening), `mul0..` (all chains batched per round), `out`, a commit/open coin-flip for the MAC-check challenges, commit/open of each party's MAC residuals (one per key), and a transcript-digest echo. No output is decoded until the MAC-check and the echo pass.
|
|
67
|
+
- **Identifiable abort (`pa.ts`)**: every share carries pairwise information-theoretic tags (BDOZ-style `T_ij = K_ij + Delta_j * x_i`; dealt by the dealer, or generated from OT in the no-dealer mode). Each receiver verifies every opened share at once, so a party that lies about a share, sends a wrong tag or equivocates is NAMED by the honest verifiers; after a failed MAC-check a blame round names a party that forged a MAC share or a residual, or the dealer when every party verifies.
|
|
68
|
+
- **Base OT over the wire (`ot-net.ts`)**: the WASM-backed Ed25519 base OT and the post-quantum endemic Module-LWE base OT, run between two hosts.
|
|
69
|
+
- **Runners**: `node dist/net/party-main.js <config.json>` (one node), `launchLocal` (n+1 local processes, optional TCP fault proxy), and `scripts/pca-mpc-multihost.mjs` (the same nodes on separate hosts over ssh; host entries are validated, commands are passed as argument vectors, and host keys are pinned with `hostKey` entries, or explicitly trusted on first use with `--insecure-accept-new-host-keys`, which is open to a man-in-the-middle). The fault-injection hooks (`behavior`, `frameFault`) are rejected by the production entry point unless the config sets `unsafeTestHooks` and the environment sets `PCA_MPC_UNSAFE_TEST_HOOKS=1`; the multi-host runner exposes them only behind `--unsafe-test-hooks`.
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
import { launchLocal } from '@atlasauth/pca-mpc/net';
|
|
73
|
+
const { outputs } = await launchLocal({ n: 3, Q: 100, vectors, mainJs: require.resolve('@atlasauth/pca-mpc/dist/net/party-main.js') });
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### What the tests assert (`src/net/net.test.ts`, 43 tests)
|
|
77
|
+
|
|
78
|
+
- Honest multi-process runs (n = 1..4, Q = 16 and 100) return exactly `composeClear` and `composeSecureMalicious`; every party computes the same transcript digest.
|
|
79
|
+
- A pinned-identity check rejects an unpinned client certificate and a server impersonator.
|
|
80
|
+
- A malicious sender (party 1) that duplicates, reorders, skips a sequence number, sends garbage / truncated / oversize / extra-field / wrong-round / wrong-session frames, drops a frame, or goes silent makes every honest party abort with no output; each party that sees the fault first-hand names party 1.
|
|
81
|
+
- A malicious node that sends a forged abort frame accusing an honest party is blamed itself by the nodes that receive it; the accused is never blamed on that basis, and the accusation is retained only as `claimedBlame`.
|
|
82
|
+
- A malicious party that lies about an opened value (in a multiplication, output or sacrifice round), sends a wrong pairwise tag, equivocates, forges its MAC share or opens a wrong MAC residual makes every honest party abort with no output and is NAMED by the honest verifiers - each of the three parties in turn is made the cheater for seven kinds of lie (`src/net/identify.test.ts`, 27 tests). One that opens a coin seed or a MAC residual inconsistently with its commitment, sends a wrong-length array or a non-canonical field element, crashes mid-protocol, or vanishes is named too.
|
|
83
|
+
- A trusted dealer that deals a wrong product `c = a*b + 1` (also in only one sacrifice partner), or a MAC that does not match its value, makes every party abort and is named as the dealer.
|
|
84
|
+
- In the dealer-free mode (`src/net/offline-net.test.ts`, 9 tests, no dealer process exists): honest runs for n = 2, 3, 4 equal `composeClear`; a party that lies online is named; a wrong operand in a triple-product OT multiplication aborts at the sacrifice (detected, not attributed except for two parties; in process it is attributed, see below); an inconsistent OT-extension matrix is named by the KOS check; a bad base-OT proof is named; a crash mid-offline is named.
|
|
85
|
+
- A TCP-level adversary (bit-flip, truncate, duplicate, reorder in either direction, black-hole drop, long delay) is rejected by TLS record authentication or the receive timeout; all parties abort with no output and blame falls on the endpoints of the faulty link. A delay below the timeout is tolerated and the result is still correct.
|
|
86
|
+
- The same abort behaviours reproduced during the real multi-host run are recorded below.
|
|
87
|
+
|
|
88
|
+
### Local multi-process evidence (2026-10-09, current build)
|
|
89
|
+
|
|
90
|
+
`docs/evidence/pca-mpc-nodealer-local-2026-10-09.json`, produced by `scripts/pca-mpc-local-evidence.mjs` (provenance, machine, source commit and the exact command are inside; paths and addresses scrubbed). Every node is its own OS process over mutual TLS on loopback (single machine, so no WAN latency). Q = 100: the trusted-dealer run and the dealer-free runs for 2, 3 and 4 parties all equal `composeClear` with matching transcript digests; the file also records the dealer lying about `c`, each party lying online in both modes, a wrong triple-product operand and a bad OT-extension matrix.
|
|
91
|
+
|
|
92
|
+
### Multi-host evidence (2026-10-08, earlier build)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
This run predates the two-key MAC-check, the sacrifice-certified dealer and the pairwise tags (single MAC key, uncertified dealer triples); it has not been repeated on the current build. Run on 2026-10-08 over the public internet, four Azure Standard_D2s_v4 VMs (Ubuntu 24.04, Node 22) in eastus, spaincentral, japaneast and westus3, installing the packed `@atlasauth/pca-mpc` tarballs (with the `-wasm` and `-lwe-ot-wasm` packages) on each. Parties 0, 1, 2 ran in eastus, spaincentral, japaneast; the dealer in westus3. Each host generated its own key and certificate. Raw transcripts (per-round timings, bytes, digests, per-link byte counts; addresses scrubbed): `docs/evidence/pca-mpc-multihost-2026-10-08.json`. TCP-connect RTTs measured between the hosts: 50 ms (eastus-westus3), 79 ms (eastus-spaincentral), 109 ms (westus3-japaneast), 157 ms (eastus-japaneast), 226 ms (spaincentral-japaneast).
|
|
96
|
+
|
|
97
|
+
| Run | Result |
|
|
98
|
+
| --- | --- |
|
|
99
|
+
| 3 parties, Q = 100, canonical user/org/regulator vectors | all three parties output `{allow:1, t:2, rQuant:55}` (= `composeClear`); the 3 parties' transcript digests are identical; 1.2-1.4 s per party end to end, ~12.6 KB sent and received per peer link, ~37 KB of shares from the dealer |
|
|
100
|
+
| 3 parties, four more vector sets (a denying party, three random) | every party's output equals MP-SPDZ MASCOT's output for the same inputs (5/5 cases agree) |
|
|
101
|
+
| 4 parties across 4 regions | all output `{allow:1, t:3, rQuant:77}` |
|
|
102
|
+
| Party 1 lies about an opened value (`open-lie`) | all three parties abort with `mac-check`, no output, no culprit named (this build had one MAC key and no pairwise tags; the current build names the cheater) |
|
|
103
|
+
| Party 2 duplicates a frame | party 0 and 1 abort `duplicate`, each blaming 2 from its own link |
|
|
104
|
+
| Party 1 crashes mid-protocol | parties 0 and 2 abort `disconnect` blaming 1 |
|
|
105
|
+
| Party 0 opens a coin seed that does not match its commitment | parties 1 and 2 abort `commitment` blaming 0 |
|
|
106
|
+
| Party 2 goes silent | parties 0 and 1 abort `timeout` blaming 2 after the timeout |
|
|
107
|
+
| WASM Ed25519 base OT, 128 transfers, eastus (sender) to japaneast (receiver) | receiver's pads equal the sender's pads at the receiver's choices; 0.8 s |
|
|
108
|
+
| WASM post-quantum endemic Module-LWE base OT, 128 transfers, same hosts | pads match; 2.1 s |
|
|
109
|
+
|
|
110
|
+
The independent cross-check (`scripts/pca-mpc-mpspdz-xcheck.py`) runs the same arithmetic circuit (AND of allow bits, position-wise OR of thermometers) under MP-SPDZ v0.4.3 `mascot-party.x` and compares the decoded decision. It cross-checks the composition semantics and the arithmetic, not the networking or the MAC-check implementation.
|
|
111
|
+
|
|
112
|
+
### What the network runs prove, and what they do not
|
|
113
|
+
|
|
114
|
+
They show that the protocol logic computes the right composed decision when its parties are separate processes, talking only through pinned mutual TLS (on loopback in the current build's evidence, over the public internet in the 2026-10-08 build's), that it agrees with an independent implementation (MP-SPDZ MASCOT) of the same arithmetic circuit (2026-10-08 build), and that the abort behaviours listed fail closed in practice rather than only in an in-process model.
|
|
115
|
+
|
|
116
|
+
They do NOT prove security. There is no formal proof for this implementation, and the cryptography is unaudited. See "Security parameters and what is closed" for the statistical figures and the residuals. The transcript-digest echo is a hash comparison, not Byzantine agreement. Timing is not constant-time end to end, no resistance to traffic analysis or denial of service is claimed, and the two base-OT demos reveal the receiver's choices at the end to let the sender check them (a test-only step). Evidence inputs are synthetic test vectors.
|
|
117
|
+
|
|
118
|
+
## Security parameters and what is closed
|
|
119
|
+
|
|
120
|
+
Statistical soundness (derivation, caveats and the tiny-field experiment: `docs/pca/security/pca-mpc-spdz-soundness.md`):
|
|
121
|
+
|
|
122
|
+
| Check | Parameter | Failure probability |
|
|
123
|
+
| --- | --- | --- |
|
|
124
|
+
| SPDZ MAC-check | 2 independent global keys, independent challenge vectors, one batched check; the engine refuses a context below 100 bits | at most (2/p)^2, about 2^-120 |
|
|
125
|
+
| Beaver-triple sacrifice (dealt and dealer-free triples) | 2 independent partners per triple | at most p^-2, about 2^-122 over the network; about 2^-120 in-process (`e = 0` is remapped to 1); per triple, before the union bound over triples |
|
|
126
|
+
| KOS OT-extension check | kappa = 128, statistical parameter s = SSEC = 128 extra check rows (was 64); weights are SHAKE256 over the whole `u` matrix and the channel binding | best known attack (Roy, CRYPTO 2022, ePrint 2022/192) about 2^-128; argued from the attack analysis, NOT proved (the KOS proof is open; SoftSpokenOT's own check is not implemented) |
|
|
127
|
+
| Selective failure of the OT sender (RT-04) | OT choice bits are privacy-amplified: 61 + 3s = 253 uniform bits per share (s = 64, `enc.ts`; s < 40 refused) | leakage about 2^-63 per attacked sharing (argued, `docs/pca/security/pca-mpc-spdz-soundness.md` section 7) |
|
|
128
|
+
| Pairwise tags (identification only) | one field element per tag | 1/p per verified tag; the MAC-check still aborts if a lie slips through |
|
|
129
|
+
|
|
130
|
+
Closed in the unreleased build: **RT-04** - in the dealer-free offline phase an OT sender could make the run abort exactly when a bit of the honest receiver's share was 1, which leaked an honest input bit (the red-team PoC recovered it 11 of 11 times). Receivers now choose with privacy-amplified bits (MASCOT), `src/selective-failure.test.ts` re-runs the attack for 200 runs and requires chance-level recovery (with a positive control on the legacy encoding), and an in-process offline abort now names the cheating sender (`OfflineCheatingAbort.blamed`). With the later OT-extension rewrite the dealer-free offline phase is much faster than before the fix: per authenticated triple, 2 parties 12-13 ms, 3 parties 34 ms in process (`bench/triples.ts`; was 257-417 ms and 593-637 ms at the same s = 64 before the rewrite). See `CHANGELOG.md`.
|
|
131
|
+
|
|
132
|
+
Closed in the previous release (each with failing-first tests; `docs/pca/security/audit-crypto-packages.md`, section 2b items 36-41): base-OT Schnorr proofs are bound to session, party indices, round and both points; base-OT keys hash the whole transcript; the KOS weights come from SHAKE256 (and the old code did not bind the high bits of `u`); the MAC-check has about 2^-120 soundness; a dealer's wrong triple is detected and the dealer is labelled in the API and results; the dealer-free offline phase runs over the mutual-TLS network; online cheaters are named.
|
|
133
|
+
|
|
134
|
+
Closed in the unreleased build (round 3): **R3-16** the joint gadget is agreed by a signed commit / reveal / echo (`src/net/gadget.ts`), so one corrupt party can no longer give honest parties different gadgets and make them blame each other; **R3-17** the forensic disclosures are commit-first (`forensic-c`, then `forensic-o`) with a shared deadline, so a rushing OT sender cannot tune its disclosure to the honest ones; aborts that cannot name a culprit carry `blamed = null` and a `reason`.
|
|
135
|
+
|
|
136
|
+
Remaining (honest): a formal proof and an independent review do not exist; the commit-then-open is a SHA-256 commitment and the public coin a hash-based coin flip; in `trusted-dealer` mode the dealer sees every share and key; in the networked dealer-free mode a wrong operand in a triple product is now attributed by a post-abort audit of the discarded triple's OT transcript (a failing pair names its counterpart only to the honest endpoint, a third party gets `blamed = null`); the offline phase still costs more than the dealer mode (the Q = 100, 3-party figure of about 90 s against about 1 s predates the speed-up and was not re-measured); the selective-failure bound is 2^-63 per attacked sharing, statistical and argued, not 2^-120, and assumes the sender's deviations do not depend on the public gadget; accusations are evidence for the accuser, not proof for a third party; the 2026-10-08 two-region run was not repeated on the new build; constant-time arithmetic is not provided.
|
|
137
|
+
|
|
60
138
|
## Status
|
|
61
139
|
|
|
62
|
-
This is a research prototype, not a production MPC system
|
|
140
|
+
This is a research prototype, not a production MPC system, and stays one. The in-process runners exist for logic and tests; the `net` module adds a real mutual-TLS transport and multi-process / multi-host execution, with the limits stated above. The semi-honest layer assumes parties follow the protocol and uses a trusted dealer for triples; the malicious layer detects deviation by aborting, certifies dealt triples with the sacrifice, names online cheaters, and can use an OT-based offline phase (in process, and now over the network) instead of a dealer. The cryptography has not been audited. The composed verdict informs a decision; it does not authorize anything on its own - the resource server's verifier decides.
|
|
63
141
|
|
|
64
142
|
## License
|
|
65
143
|
|
package/dist/beaver.js
CHANGED
|
@@ -53,6 +53,10 @@ function genTriple(n, rng) {
|
|
|
53
53
|
function beaverMul(x, y, triple, transcript) {
|
|
54
54
|
if (x.length !== y.length)
|
|
55
55
|
throw new Error('beaverMul: operand party counts differ');
|
|
56
|
+
for (const part of [triple.a, triple.b, triple.c]) {
|
|
57
|
+
if (!Array.isArray(part) || part.length !== x.length)
|
|
58
|
+
throw new Error('beaverMul: triple party count differs from the operands');
|
|
59
|
+
}
|
|
56
60
|
const dShares = (0, sharing_1.subSV)(x, triple.a);
|
|
57
61
|
const eShares = (0, sharing_1.subSV)(y, triple.b);
|
|
58
62
|
const d = (0, sharing_1.reconstruct)(dShares);
|
package/dist/beaver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaver.js","sourceRoot":"","sources":["../src/beaver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;AAqBH,gCAIC;AAGD,8BAKC;AAOD,
|
|
1
|
+
{"version":3,"file":"beaver.js","sourceRoot":"","sources":["../src/beaver.ts"],"names":[],"mappings":"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"}
|
package/dist/compose.d.ts
CHANGED
|
@@ -10,12 +10,19 @@
|
|
|
10
10
|
* The secure runner (`runner.ts`) computes EXACTLY this function under MPC; `composeClear` is the
|
|
11
11
|
* ground truth the correctness tests check it against.
|
|
12
12
|
*/
|
|
13
|
-
import type
|
|
13
|
+
import { type DecisionVector } from './party';
|
|
14
14
|
/** The composed, revealed decision. */
|
|
15
15
|
export interface ComposedDecision {
|
|
16
16
|
allow: 0 | 1;
|
|
17
17
|
t: 1 | 2 | 3;
|
|
18
18
|
rQuant: number;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Reject a malformed decision vector. The composition is only meaningful for `allow ∈ {0,1}`,
|
|
22
|
+
* `t ∈ {1,2,3}` and an integer `rQuant ∈ [0,Q]`: e.g. two parties both sending `allow = -1` multiply to
|
|
23
|
+
* `+1` under the shared AND (an invalid pair would ALLOW), and the cleartext reference treated any
|
|
24
|
+
* non-zero `allow` as an allow.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assertDecisionVectors(vectors: ReadonlyArray<DecisionVector>, Q: number): void;
|
|
20
27
|
/** Cleartext composition over the parties' decision vectors. Requires at least one party. */
|
|
21
|
-
export declare function composeClear(vectors: ReadonlyArray<DecisionVector
|
|
28
|
+
export declare function composeClear(vectors: ReadonlyArray<DecisionVector>, Q?: number): ComposedDecision;
|
package/dist/compose.js
CHANGED
|
@@ -12,11 +12,34 @@
|
|
|
12
12
|
* ground truth the correctness tests check it against.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.assertDecisionVectors = assertDecisionVectors;
|
|
15
16
|
exports.composeClear = composeClear;
|
|
17
|
+
const party_1 = require("./party");
|
|
18
|
+
/**
|
|
19
|
+
* Reject a malformed decision vector. The composition is only meaningful for `allow ∈ {0,1}`,
|
|
20
|
+
* `t ∈ {1,2,3}` and an integer `rQuant ∈ [0,Q]`: e.g. two parties both sending `allow = -1` multiply to
|
|
21
|
+
* `+1` under the shared AND (an invalid pair would ALLOW), and the cleartext reference treated any
|
|
22
|
+
* non-zero `allow` as an allow.
|
|
23
|
+
*/
|
|
24
|
+
function assertDecisionVectors(vectors, Q) {
|
|
25
|
+
if (!Array.isArray(vectors))
|
|
26
|
+
throw new TypeError('decision vectors must be an array');
|
|
27
|
+
for (const [i, v] of vectors.entries()) {
|
|
28
|
+
if (v === null || typeof v !== 'object')
|
|
29
|
+
throw new TypeError(`party ${i}: decision vector must be an object`);
|
|
30
|
+
if (v.allow !== 0 && v.allow !== 1)
|
|
31
|
+
throw new RangeError(`party ${i}: allow must be 0 or 1`);
|
|
32
|
+
if (v.t !== 1 && v.t !== 2 && v.t !== 3)
|
|
33
|
+
throw new RangeError(`party ${i}: t must be 1, 2 or 3`);
|
|
34
|
+
if (!Number.isInteger(v.rQuant) || v.rQuant < 0 || v.rQuant > Q)
|
|
35
|
+
throw new RangeError(`party ${i}: rQuant must be an integer in [0, ${Q}]`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
16
38
|
/** Cleartext composition over the parties' decision vectors. Requires at least one party. */
|
|
17
|
-
function composeClear(vectors) {
|
|
39
|
+
function composeClear(vectors, Q = party_1.DEFAULT_Q) {
|
|
18
40
|
if (vectors.length === 0)
|
|
19
41
|
throw new Error('composeClear: no parties (fail closed)');
|
|
42
|
+
assertDecisionVectors(vectors, Q);
|
|
20
43
|
let allow = 1;
|
|
21
44
|
let t = 1;
|
|
22
45
|
let rQuant = 0;
|
package/dist/compose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAiBH,sDAQC;AAGD,oCAYC;AAtCD,mCAAyD;AASzD;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,OAAsC,EAAE,CAAS;IACrF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACtF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAC9G,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,sCAAsC,CAAC,GAAG,CAAC,CAAC;IAC9I,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,SAAgB,YAAY,CAAC,OAAsC,EAAE,IAAY,iBAAS;IACxF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACpF,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClC,IAAI,KAAK,GAAU,CAAC,CAAC;IACrB,IAAI,CAAC,GAAc,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM;YAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|
package/dist/ec.d.ts
CHANGED
|
@@ -121,10 +121,13 @@ export interface SchnorrProof {
|
|
|
121
121
|
U: Point;
|
|
122
122
|
z: bigint;
|
|
123
123
|
}
|
|
124
|
-
/**
|
|
125
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Prove knowledge of `y` with `S = y·B`, bound to `ctx` (a non-empty session-binding byte string, required:
|
|
126
|
+
* an unbound proof is replayable). `rnd` draws the (secret) nonce `r ∈ [1, L)`.
|
|
127
|
+
*/
|
|
128
|
+
export declare function schnorrProve(y: bigint, S: Point, rnd: () => bigint, ctx: Uint8Array): SchnorrProof;
|
|
126
129
|
/**
|
|
127
130
|
* Verify a Schnorr proof for `S`: `z` is in range, `U` is a valid subgroup point, and `z·B = U + e·S`
|
|
128
131
|
* for the recomputed challenge `e`. Returns false on any failure (the OT layer turns that into an abort).
|
|
129
132
|
*/
|
|
130
|
-
export declare function schnorrVerify(S: Point, proof: SchnorrProof): boolean;
|
|
133
|
+
export declare function schnorrVerify(S: Point, proof: SchnorrProof, ctx: Uint8Array): boolean;
|
package/dist/ec.js
CHANGED
|
@@ -434,10 +434,19 @@ function assertInSubgroup(p, label = 'point') {
|
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
436
|
const TAG_SCHNORR = new TextEncoder().encode('atlas-pca-mpc/schnorr-dlog');
|
|
437
|
-
/**
|
|
438
|
-
|
|
437
|
+
/**
|
|
438
|
+
* Fiat–Shamir challenge `e = H(tag ‖ len(ctx) ‖ ctx ‖ B ‖ S ‖ U) mod L` (64 hash bytes ⇒ negligible modular
|
|
439
|
+
* bias). `ctx` is the caller's session binding (session id, party indices, round label; see `ot.ts`
|
|
440
|
+
* `bindingBytes`): a proof made under one context does not verify under any other, so it cannot be
|
|
441
|
+
* replayed into another session, party pair or round.
|
|
442
|
+
*/
|
|
443
|
+
function schnorrChallenge(S, U, ctx) {
|
|
444
|
+
const len = new Uint8Array(4);
|
|
445
|
+
new DataView(len.buffer).setUint32(0, ctx.length, false);
|
|
439
446
|
const d = (0, node_crypto_1.createHash)('sha512')
|
|
440
447
|
.update(TAG_SCHNORR)
|
|
448
|
+
.update(len)
|
|
449
|
+
.update(ctx)
|
|
441
450
|
.update(encodePoint(exports.BASE))
|
|
442
451
|
.update(encodePoint(S))
|
|
443
452
|
.update(encodePoint(U))
|
|
@@ -447,14 +456,21 @@ function schnorrChallenge(S, U) {
|
|
|
447
456
|
acc = (acc << 8n) | BigInt(b);
|
|
448
457
|
return acc % exports.L;
|
|
449
458
|
}
|
|
450
|
-
/**
|
|
451
|
-
|
|
459
|
+
/**
|
|
460
|
+
* Prove knowledge of `y` with `S = y·B`, bound to `ctx` (a non-empty session-binding byte string, required:
|
|
461
|
+
* an unbound proof is replayable). `rnd` draws the (secret) nonce `r ∈ [1, L)`.
|
|
462
|
+
*/
|
|
463
|
+
function schnorrProve(y, S, rnd, ctx) {
|
|
464
|
+
if (!(ctx instanceof Uint8Array) || ctx.length === 0)
|
|
465
|
+
throw new Error('schnorrProve: a non-empty session binding is required');
|
|
452
466
|
// The nonce must be a non-zero subgroup scalar; `rnd` already draws from [1, L), the guard is belt-and-braces.
|
|
453
|
-
|
|
467
|
+
const r = ((rnd() % exports.L) + exports.L) % exports.L;
|
|
468
|
+
// A zero nonce means a stuck/failed RNG. Substituting a fixed value (e.g. 1) would make the nonce PUBLIC
|
|
469
|
+
// and let anyone solve z = r + e·y for the secret y from a single proof; fail closed instead.
|
|
454
470
|
if (r === 0n)
|
|
455
|
-
|
|
471
|
+
throw new Error('schnorrProve: nonce source returned 0 (RNG failure); refusing to produce a proof');
|
|
456
472
|
const U = mulBase(r);
|
|
457
|
-
const e = schnorrChallenge(S, U);
|
|
473
|
+
const e = schnorrChallenge(S, U, ctx);
|
|
458
474
|
let z = (r + e * (((y % exports.L) + exports.L) % exports.L)) % exports.L;
|
|
459
475
|
if (z < 0n)
|
|
460
476
|
z += exports.L;
|
|
@@ -464,12 +480,14 @@ function schnorrProve(y, S, rnd) {
|
|
|
464
480
|
* Verify a Schnorr proof for `S`: `z` is in range, `U` is a valid subgroup point, and `z·B = U + e·S`
|
|
465
481
|
* for the recomputed challenge `e`. Returns false on any failure (the OT layer turns that into an abort).
|
|
466
482
|
*/
|
|
467
|
-
function schnorrVerify(S, proof) {
|
|
483
|
+
function schnorrVerify(S, proof, ctx) {
|
|
484
|
+
if (!(ctx instanceof Uint8Array) || ctx.length === 0)
|
|
485
|
+
return false;
|
|
468
486
|
if (proof.z < 0n || proof.z >= exports.L)
|
|
469
487
|
return false;
|
|
470
488
|
if (!isInSubgroup(proof.U))
|
|
471
489
|
return false;
|
|
472
|
-
const e = schnorrChallenge(S, proof.U);
|
|
490
|
+
const e = schnorrChallenge(S, proof.U, ctx);
|
|
473
491
|
return equal(mulBase(proof.z), add(proof.U, mul(e, S)));
|
|
474
492
|
}
|
|
475
493
|
//# sourceMappingURL=ec.js.map
|
package/dist/ec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ec.js","sourceRoot":"","sources":["../src/ec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ec.js","sourceRoot":"","sources":["../src/ec.ts"],"names":[],"mappings":"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"}
|
package/dist/enc.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Privacy-amplified OT choice bits (the MASCOT remedy for selective failure, RT-04).
|
|
3
|
+
*
|
|
4
|
+
* In Gilboa multiplication the OT RECEIVER chooses with the bits of its additive share x. A malicious SENDER
|
|
5
|
+
* can corrupt chosen message pairs so that the result is wrong exactly when some predicate of those bits
|
|
6
|
+
* holds; the sacrifice / MAC-check then aborts exactly when the predicate holds, and abort / no-abort leaks
|
|
7
|
+
* the predicate (with plain binary choice bits: a bit of x itself).
|
|
8
|
+
*
|
|
9
|
+
* Remedy (Keller-Orsini-Scholl, MASCOT, CCS 2016, section 3.2): the receiver does NOT choose with the bits of x.
|
|
10
|
+
* It draws `m = 61 + 3s` UNIFORM bits `b` and takes `x := <g, b> = sum_k g_k b_k (mod p)` for a PUBLIC
|
|
11
|
+
* gadget vector `g` in F_p^m. The sender offers `(rho_k, rho_k + g_k y)`, so the receiver still obtains
|
|
12
|
+
* `x*y + sum rho`. A predicate of the sender's choosing that holds with probability >= 2^-s fixes at most s bits
|
|
13
|
+
* of entropy of `b`; the remaining `m - s >= 61 + 2s` bits make `<g, b>` statistically within 2^-s of uniform
|
|
14
|
+
* (leftover hash lemma: the map b -> <g,b> is a universal hash into a 61-bit range). A predicate that holds with
|
|
15
|
+
* probability < 2^-s is observed (no abort) with probability < 2^-s. Total advantage <= 1.5 * 2^-s per
|
|
16
|
+
* attacked sharing; `s = 64` (default) gives about 2^-63 and costs `m = 253` OTs per multiplication instead of 61; `s < 40` is refused.
|
|
17
|
+
*
|
|
18
|
+
* `s = 0` (`m = 61`, `g_k = 2^k`) is the LEGACY encoding (plain binary); it is vulnerable and exists only so the
|
|
19
|
+
* regression test can show the attack works against it.
|
|
20
|
+
*/
|
|
21
|
+
import { FieldRng } from './field';
|
|
22
|
+
/** Bits per field element: p = 2^61 - 1. */
|
|
23
|
+
export declare const FIELD_BITS = 61;
|
|
24
|
+
/** Default statistical security parameter for the OT choice-bit encoding (leakage bound about 2^-s). */
|
|
25
|
+
export declare const STAT_SEC = 64;
|
|
26
|
+
/** Smallest `s` accepted without the explicit unsafe test flag. */
|
|
27
|
+
export declare const MIN_STAT_SEC = 40;
|
|
28
|
+
/** Number of encoded choice bits for statistical parameter `s`: 61 + 3s (s = 0: legacy 61). */
|
|
29
|
+
export declare const encBits: (s: number) => number;
|
|
30
|
+
/** A receiver operand: its field value together with the choice bits that encode it. */
|
|
31
|
+
export interface EncShare {
|
|
32
|
+
value: bigint;
|
|
33
|
+
bits: number[];
|
|
34
|
+
}
|
|
35
|
+
/** The public gadget vector for parameter `s`: 2^k for s = 0, else m uniform field elements from `next`. */
|
|
36
|
+
export declare function makeGadget(s: number, next: () => bigint, unsafe?: boolean): bigint[];
|
|
37
|
+
/** Evaluate <g, bits> in F_p. */
|
|
38
|
+
export declare function encValue(g: readonly bigint[], bits: readonly number[]): bigint;
|
|
39
|
+
/** The plain binary encoding of an arbitrary field element (61 bits, weights 2^k). */
|
|
40
|
+
export declare function plainShare(x: bigint): EncShare;
|
|
41
|
+
/** The weights of the plain binary encoding. */
|
|
42
|
+
export declare const PLAIN_GADGET: readonly bigint[];
|
|
43
|
+
/** Draw `m` uniform bits from a field-element source (60 low bits of each draw are uniform). */
|
|
44
|
+
export declare function randomBits(m: number, rng: Pick<FieldRng, 'next'>): number[];
|
|
45
|
+
/** A fresh uniform operand: uniform bits and the value they encode under `g`. */
|
|
46
|
+
export declare function sampleEnc(g: readonly bigint[], rng: Pick<FieldRng, 'next'>): EncShare;
|
package/dist/enc.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Privacy-amplified OT choice bits (the MASCOT remedy for selective failure, RT-04).
|
|
4
|
+
*
|
|
5
|
+
* In Gilboa multiplication the OT RECEIVER chooses with the bits of its additive share x. A malicious SENDER
|
|
6
|
+
* can corrupt chosen message pairs so that the result is wrong exactly when some predicate of those bits
|
|
7
|
+
* holds; the sacrifice / MAC-check then aborts exactly when the predicate holds, and abort / no-abort leaks
|
|
8
|
+
* the predicate (with plain binary choice bits: a bit of x itself).
|
|
9
|
+
*
|
|
10
|
+
* Remedy (Keller-Orsini-Scholl, MASCOT, CCS 2016, section 3.2): the receiver does NOT choose with the bits of x.
|
|
11
|
+
* It draws `m = 61 + 3s` UNIFORM bits `b` and takes `x := <g, b> = sum_k g_k b_k (mod p)` for a PUBLIC
|
|
12
|
+
* gadget vector `g` in F_p^m. The sender offers `(rho_k, rho_k + g_k y)`, so the receiver still obtains
|
|
13
|
+
* `x*y + sum rho`. A predicate of the sender's choosing that holds with probability >= 2^-s fixes at most s bits
|
|
14
|
+
* of entropy of `b`; the remaining `m - s >= 61 + 2s` bits make `<g, b>` statistically within 2^-s of uniform
|
|
15
|
+
* (leftover hash lemma: the map b -> <g,b> is a universal hash into a 61-bit range). A predicate that holds with
|
|
16
|
+
* probability < 2^-s is observed (no abort) with probability < 2^-s. Total advantage <= 1.5 * 2^-s per
|
|
17
|
+
* attacked sharing; `s = 64` (default) gives about 2^-63 and costs `m = 253` OTs per multiplication instead of 61; `s < 40` is refused.
|
|
18
|
+
*
|
|
19
|
+
* `s = 0` (`m = 61`, `g_k = 2^k`) is the LEGACY encoding (plain binary); it is vulnerable and exists only so the
|
|
20
|
+
* regression test can show the attack works against it.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.PLAIN_GADGET = exports.encBits = exports.MIN_STAT_SEC = exports.STAT_SEC = exports.FIELD_BITS = void 0;
|
|
24
|
+
exports.makeGadget = makeGadget;
|
|
25
|
+
exports.encValue = encValue;
|
|
26
|
+
exports.plainShare = plainShare;
|
|
27
|
+
exports.randomBits = randomBits;
|
|
28
|
+
exports.sampleEnc = sampleEnc;
|
|
29
|
+
const field_1 = require("./field");
|
|
30
|
+
/** Bits per field element: p = 2^61 - 1. */
|
|
31
|
+
exports.FIELD_BITS = 61;
|
|
32
|
+
/** Default statistical security parameter for the OT choice-bit encoding (leakage bound about 2^-s). */
|
|
33
|
+
exports.STAT_SEC = 64;
|
|
34
|
+
/** Smallest `s` accepted without the explicit unsafe test flag. */
|
|
35
|
+
exports.MIN_STAT_SEC = 40;
|
|
36
|
+
/** Number of encoded choice bits for statistical parameter `s`: 61 + 3s (s = 0: legacy 61). */
|
|
37
|
+
const encBits = (s) => exports.FIELD_BITS + 3 * s;
|
|
38
|
+
exports.encBits = encBits;
|
|
39
|
+
/** The public gadget vector for parameter `s`: 2^k for s = 0, else m uniform field elements from `next`. */
|
|
40
|
+
function makeGadget(s, next, unsafe = false) {
|
|
41
|
+
if (!Number.isInteger(s) || s < 0 || s > 64)
|
|
42
|
+
throw new RangeError('statSec must be an integer in [0, 64]');
|
|
43
|
+
if (s < exports.MIN_STAT_SEC && !unsafe) {
|
|
44
|
+
throw new RangeError(`statSec ${s} is below ${exports.MIN_STAT_SEC}: refused (tests may pass the explicit unsafe flag)`);
|
|
45
|
+
}
|
|
46
|
+
const m = (0, exports.encBits)(s);
|
|
47
|
+
const g = new Array(m);
|
|
48
|
+
for (let k = 0; k < m; k++)
|
|
49
|
+
g[k] = s === 0 ? (1n << BigInt(k)) % field_1.PRIME : next();
|
|
50
|
+
return g;
|
|
51
|
+
}
|
|
52
|
+
/** Evaluate <g, bits> in F_p. */
|
|
53
|
+
function encValue(g, bits) {
|
|
54
|
+
if (g.length !== bits.length)
|
|
55
|
+
throw new RangeError('encValue: gadget / bits length mismatch');
|
|
56
|
+
let v = 0n;
|
|
57
|
+
for (let k = 0; k < g.length; k++)
|
|
58
|
+
if (bits[k] === 1)
|
|
59
|
+
v += g[k];
|
|
60
|
+
return (0, field_1.mod)(v);
|
|
61
|
+
}
|
|
62
|
+
/** The plain binary encoding of an arbitrary field element (61 bits, weights 2^k). */
|
|
63
|
+
function plainShare(x) {
|
|
64
|
+
const v = (0, field_1.mod)(x);
|
|
65
|
+
const bits = new Array(exports.FIELD_BITS);
|
|
66
|
+
for (let k = 0; k < exports.FIELD_BITS; k++)
|
|
67
|
+
bits[k] = Number((v >> BigInt(k)) & 1n);
|
|
68
|
+
return { value: v, bits };
|
|
69
|
+
}
|
|
70
|
+
/** The weights of the plain binary encoding. */
|
|
71
|
+
exports.PLAIN_GADGET = Array.from({ length: exports.FIELD_BITS }, (_, k) => (1n << BigInt(k)) % field_1.PRIME);
|
|
72
|
+
/** Draw `m` uniform bits from a field-element source (60 low bits of each draw are uniform). */
|
|
73
|
+
function randomBits(m, rng) {
|
|
74
|
+
const out = new Array(m);
|
|
75
|
+
let k = 0;
|
|
76
|
+
while (k < m) {
|
|
77
|
+
const w = rng.next();
|
|
78
|
+
for (let i = 0; i < 60 && k < m; i++, k++)
|
|
79
|
+
out[k] = Number((w >> BigInt(i)) & 1n);
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/** A fresh uniform operand: uniform bits and the value they encode under `g`. */
|
|
84
|
+
function sampleEnc(g, rng) {
|
|
85
|
+
const bits = randomBits(g.length, rng);
|
|
86
|
+
return { value: encValue(g, bits), bits };
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=enc.js.map
|
package/dist/enc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enc.js","sourceRoot":"","sources":["../src/enc.ts"],"names":[],"mappings":"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"}
|
package/dist/endemic-ot.js
CHANGED
|
@@ -275,8 +275,22 @@ function endemicLweReceive(choices, rng = (0, csprng_1.secureOtRandom)()) {
|
|
|
275
275
|
* wrapper below).
|
|
276
276
|
*/
|
|
277
277
|
function endemicLweSendRandom(message, rng = (0, csprng_1.secureOtRandom)(), tamper) {
|
|
278
|
-
const sid = endemicSessionId(message.rn);
|
|
279
278
|
const { points, rhos } = message;
|
|
279
|
+
// Structural validation of what arrived from the (possibly malicious) receiver, before any arithmetic.
|
|
280
|
+
if (!(message.rn instanceof Uint8Array) || message.rn.length !== exports.SYM_BYTES)
|
|
281
|
+
throw new EndemicLweOtAbort('endemic LWE OT: malformed session nonce');
|
|
282
|
+
if (!Array.isArray(points) || !Array.isArray(rhos) || points.length !== rhos.length)
|
|
283
|
+
throw new EndemicLweOtAbort('endemic LWE OT: points/rhos length mismatch');
|
|
284
|
+
for (let i = 0; i < points.length; i++) {
|
|
285
|
+
const pt = points[i];
|
|
286
|
+
const rho = rhos[i];
|
|
287
|
+
if (!Array.isArray(pt) || pt.length !== 2 || !(pt[0] instanceof Uint8Array) || !(pt[1] instanceof Uint8Array) || pt[0].length !== exports.TVEC_BYTES || pt[1].length !== exports.TVEC_BYTES) {
|
|
288
|
+
throw new EndemicLweOtAbort(`endemic LWE OT: malformed point pair at index ${i}`);
|
|
289
|
+
}
|
|
290
|
+
if (!(rho instanceof Uint8Array) || rho.length !== exports.PK_BYTES - exports.TVEC_BYTES)
|
|
291
|
+
throw new EndemicLweOtAbort(`endemic LWE OT: malformed rho at index ${i}`);
|
|
292
|
+
}
|
|
293
|
+
const sid = endemicSessionId(message.rn);
|
|
280
294
|
const ciphertexts = [];
|
|
281
295
|
const senderPads = [];
|
|
282
296
|
for (let i = 0; i < points.length; i++) {
|
|
@@ -308,6 +322,15 @@ function endemicLweSendRandom(message, rng = (0, csprng_1.secureOtRandom)(), tam
|
|
|
308
322
|
function endemicLweRecoverRandom(state, senderMessage) {
|
|
309
323
|
const { choices, secretKeys, sid } = state;
|
|
310
324
|
const { ciphertexts } = senderMessage;
|
|
325
|
+
if (!Array.isArray(ciphertexts) || ciphertexts.length !== choices.length) {
|
|
326
|
+
throw new EndemicLweOtAbort('endemic LWE OT: ciphertext count does not match the transfer count');
|
|
327
|
+
}
|
|
328
|
+
for (let i = 0; i < ciphertexts.length; i++) {
|
|
329
|
+
const ct = ciphertexts[i];
|
|
330
|
+
if (!Array.isArray(ct) || !(ct[0] instanceof Uint8Array) || !(ct[1] instanceof Uint8Array) || ct[0].length !== exports.CT_BYTES || ct[1].length !== exports.CT_BYTES) {
|
|
331
|
+
throw new EndemicLweOtAbort(`endemic LWE OT: malformed ciphertext pair at index ${i}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
311
334
|
const recvPads = [];
|
|
312
335
|
for (let i = 0; i < choices.length; i++) {
|
|
313
336
|
const c = choices[i] & 1;
|
package/dist/endemic-ot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endemic-ot.js","sourceRoot":"","sources":["../src/endemic-ot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"endemic-ot.js","sourceRoot":"","sources":["../src/endemic-ot.ts"],"names":[],"mappings":"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"}
|