The ECIES layer derives k = SHA256(E_compressed || S.x) and calls
ChaCha20-Poly1305.Seal(..., aad=nil) with a zero nonce. Fresh ephemeral
scalars make nonce reuse unlikely in the honest path, but the ciphertext is not
authenticated to round_id, sender, recipient, or the contributor commitment
digest. Envelope replay or recipient/context substitution is therefore detected
only indirectly by later Feldman verification, not by the AEAD boundary.
Remediation: version the envelope KDF/AEAD transcript and bind
round_id || sender_valoper || recipient_valoper || H(feldman_commitments) as
AEAD associated data. Add a KDF domain tag such as svote-ecies-v1.
Evidence:
crypto/ecies/ecies.go: deriveKey hashes only E and S.x.
crypto/ecies/ecies.go: Seal and Open pass nil associated data.
app/prepare_proposal_ceremony.go: callers pass only plaintext share bytes;
no round/sender/recipient context enters ECIES.
Feldman verification should prevent a replayed/substituted share from being accepted if it does not match the sender’s public commitments for that context.
The ECIES layer derives
k = SHA256(E_compressed || S.x)and callsChaCha20-Poly1305.Seal(..., aad=nil)with a zero nonce. Fresh ephemeralscalars make nonce reuse unlikely in the honest path, but the ciphertext is not
authenticated to
round_id, sender, recipient, or the contributor commitmentdigest. Envelope replay or recipient/context substitution is therefore detected
only indirectly by later Feldman verification, not by the AEAD boundary.
Remediation: version the envelope KDF/AEAD transcript and bind
round_id || sender_valoper || recipient_valoper || H(feldman_commitments)asAEAD associated data. Add a KDF domain tag such as
svote-ecies-v1.Evidence:
crypto/ecies/ecies.go:deriveKeyhashes onlyEandS.x.crypto/ecies/ecies.go:SealandOpenpassnilassociated data.app/prepare_proposal_ceremony.go: callers pass only plaintext share bytes;no round/sender/recipient context enters ECIES.
Feldman verification should prevent a replayed/substituted share from being accepted if it does not match the sender’s public commitments for that context.