We describe an interactive protocol between the User U
and the Notary N
, whereby U
can convert the authenticated AES ciphertext into a hash commitment to Garbled Circuits wire labels.
---- Creating the new commitment
-
At the end of the TLSNotary session, both
U
andN
know the authenticated AESciphertext
. -
N
reveals his TLS session key shares toU
. -
U
decrypts theciphertext
in the clear and learns the plaintextp
. -
N
picks aseed
and uses it as the source of randomness to generate (in the semi-honest model) a privacy-free garbled circuit whose functionality is to accept the plaintext input, encrypt it, and output the ciphertext. -
With
p
as her circuit input,U
receives input wire labelsIWLs
via Oblivious Transfer and then evaluates the circuit on thoseIWLs
. The result of the evaluation are output wire labelsOWLs
whichU
does not know the decoding for. -
U
sends two commitments:commitment to IWLs
andcommitment to OWLs
toN
. -
N
reveals theseed
andU
checks that the circuit (including itsIWLs
andOWLs
) was generated correctly and, if successful, reveals herOWLs
. -
N
verifiescommitment to OWLs
and then checks that decodedOWLs
match theciphertext
(from Step 0) and, if successful, signs (seed
+commitment to IWLs
).
Now, (
seed
+commitment to IWLs
) becomeU
's new commitment top
.
---- Verifying the commitment
Verifier performs the following steps:
-
Receives the following from
U
: plaintextp
,signature
for (seed
+commitment to IWLs
),seed
,commitment to IWLs
. -
(using a trusted
N
s pubkey) Verifies thesignature
. -
Re-generates the
IWLs
from theseed
. -
Picks only those
IWLs
which correspond top
and checks that the commitment to thoseIWLs
matchescommitment to IWLs
. -
Accepts
p
as authentic.
---- Dynamic commitment using a Merkle tree
In situations where U
does not know in advance which subset of the public data she will be revealing later to the Verifier, U
can commit to the Merkle tree of all her input wire labels (from Step 4 above).
Later, U
can reveal only those Merkle leaves which she wants to make public to the Verifier.