fix(mpc-tls): domain-separate per-consumer KOS instances - #2
Open
AdamDawidKrol wants to merge 1 commit into
Open
fix(mpc-tls): domain-separate per-consumer KOS instances#2AdamDawidKrol wants to merge 1 commit into
AdamDawidKrol wants to merge 1 commit into
Conversation
AdamDawidKrol
force-pushed
the
adam/rcot-domain-separation
branch
from
July 23, 2026 09:47
703add2 to
facb2ce
Compare
AdamDawidKrol
force-pushed
the
adam/rcot-domain-separation
branch
from
July 23, 2026 09:51
facb2ce to
d400f1b
Compare
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
force-pushed
the
adam/rcot-domain-separation
branch
from
July 23, 2026 10:30
d400f1b to
4e076a8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires the per-instance KOS salt (AdamDawidKrol/mpz#2) into tlsn to close the shared-
deltaleak 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-deltaKOS 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 leaksdelta(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 distinctinstance_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-
deltainstances = 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_mpcandtest_proxy(--ignored) pass end-to-end.Stacked on: AdamDawidKrol/mpz#2.