Skip to content

fix(mpc-tls): domain-separate per-consumer KOS instances - #2

Open
AdamDawidKrol wants to merge 1 commit into
adam/pr1173-snapshotfrom
adam/rcot-domain-separation
Open

fix(mpc-tls): domain-separate per-consumer KOS instances#2
AdamDawidKrol wants to merge 1 commit into
adam/pr1173-snapshotfrom
adam/rcot-domain-separation

Conversation

@AdamDawidKrol

@AdamDawidKrol AdamDawidKrol commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Wires the per-instance KOS salt (AdamDawidKrol/mpz#2) into tlsn to close the shared-delta leak flagged in review of tlsnotary/tlsn#1173.

The deadlock fix gives each RCOT consumer its own KOS instance, but they all reuse one global delta. With several same-delta KOS instances and no domain separation, a malicious party can reuse the same base OT across two of them; the instances then derive identical transcripts and the correlation leaks delta (base-OT-reuse / PRG-collision — the mechanism sinui0 flagged). This is a genuinely multi-instance issue: it cannot arise with a single instance, so it's specific to the deadlock fix's fan-out. Each logical consumer (mpc, zk, and the three mpc-tls senders + their paired receivers) now gets a distinct instance_id, assigned explicitly so prover and verifier stay matched (sender id N ↔ receiver id N). Proxy mode uses a single fixed id (Block::ZERO).

Not addressed by this change (orthogonal): the KOS single-instance selective-failure leakage is a property of KOS itself, present with or without the deadlock fix, and domain separation does not affect it. The fan-out only amplifies it (more same-delta instances = more selective-failure queries per session). See the draft PoC in #3.

The [patch] block points mpz at the salt rev from #2.

Verified: test_mpc and test_proxy (--ignored) pass end-to-end.

Stacked on: AdamDawidKrol/mpz#2.

@AdamDawidKrol
AdamDawidKrol force-pushed the adam/rcot-domain-separation branch from 703add2 to facb2ce Compare July 23, 2026 09:47
@AdamDawidKrol AdamDawidKrol changed the title fix(mpc-tls): domain-separate per-consumer KOS instances (salt wiring) fix(mpc-tls): domain-separate per-consumer KOS instances Jul 23, 2026
@AdamDawidKrol
AdamDawidKrol force-pushed the adam/rcot-domain-separation branch from facb2ce to d400f1b Compare July 23, 2026 09:51
Each RCOT consumer now gets its own KOS instance (deadlock fix), but they all
reuse one global delta. Give each logical consumer a distinct `instance_id`
salt so the instances are domain-separated, closing the shared-delta leak
flagged in review of tlsnotary/tlsn#1173.

Ids are assigned explicitly per consumer so prover and verifier stay matched
(sender id N pairs with receiver id N); proxy mode uses a single fixed id.
Depends on the mpz salt (AdamDawidKrol/mpz#2), pulled via the [patch] block.
@AdamDawidKrol
AdamDawidKrol force-pushed the adam/rcot-domain-separation branch from d400f1b to 4e076a8 Compare July 23, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant