Prepare-and-Send Verifiable Quantum Fully Homomorphic Encryption: Difference between revisions

Jump to navigation Jump to search
No edit summary
Line 131: Line 131:
*  <math>(\tilde{x}, \tilde{z}, log_3) \xleftarrow[]{}</math> HE.Eval<math>^{T-key-update}_{evk_i}(\tilde{x}, \tilde{z}, \tilde{a}_1, \tilde{a}_2, \tilde{a}, \tilde{g}_i)</math>
*  <math>(\tilde{x}, \tilde{z}, log_3) \xleftarrow[]{}</math> HE.Eval<math>^{T-key-update}_{evk_i}(\tilde{x}, \tilde{z}, \tilde{a}_1, \tilde{a}_2, \tilde{a}, \tilde{g}_i)</math>
* return <math>(\tilde{\gamma_i^{out}}, \tilde{x}, \tilde{z}, log_1, log_2, log_3)</math>
* return <math>(\tilde{\gamma_i^{out}}, \tilde{x}, \tilde{z}, log_1, log_2, log_3)</math>
</br>
'''Function 10''': TrapTP.VerDec(<math>sk, \tilde{\sigma}, \tilde{x[i]}_i, \tilde{z[i]}_i, log, c</math>)
* Verify classically authenticated messages (in <math>log</math>) using (contained in <math>sk</math>). If one of these verifications rejects, reject.
* Check whether all claimed gates in log match the structure of c. If not, return (<math>\Omega, |rej\rangle</math>).
* <math>flag</math> ← TrapTP.CheckLog(<math>log</math>)  If flag = rej, return (<math>\Omega, |rej\rangle</math>).
* Check whether the claimed final QOTP keys in the log match <math>\tilde{x}</math> and <math>\tilde{z}</math>. If not, return (<math>\Omega, |rej\rangle</math>).
* for all gates G of c do
** if G is a measurement then
*** <math>\tilde{x'}, \tilde{z'} \xleftarrow[]{}</math> encrypted QOTP keys right before measurement (listed in <math>log</math>)
*** <math>\tilde{w} \xleftarrow[]{}</math> encrypted measurement outcomes (listed in <math>log</math>)
*** <math>\tilde{x'}, \tilde{z'}, \tilde{w} \xleftarrow[]{}</math> HE.Dec<math>_{sk}_t(\tilde{x'}, \tilde{z'}, \tilde{w})</math>
*** Execute TC.VerDecMeasurement<math>((\pi, x',z'), w, basis)</math> where basis is the appropriate basis for the measurement, and store the (classical) outcome.
*** if a trap is triggered then
**** return (<math>\Omega, |rej\rangle</math>)
* for all unmeasured qubits <math>\tilde{\sigma_i}</math> in <math>\tilde{\sigma}</math> do
** <math>x[i], z[i] \xleftarrow[]{}</math> HE.Dec<math>_{sk_t}(\tilde{x[i]}, \tilde{z[i]})</math>
** <math>\sigma_i \xleftarrow[]{}</math> TC.VerDec<math>_{(\pi, x[i], z[i])}(\tilde{\sigma_i}).</math> If TC.VerDec rejects, return <math>(\Omega, |rej\rangle)</math>
* <math>\sigma \xleftarrow[]{}</math> the list of decrypted qubits (and measurement outcomes) that are part of the output of c
* return (<math>\sigma, |acc\rangle</math>)


==Further Information==
==Further Information==
<div style='text-align: right;'>''*contributed by Rhea Parekh''</div>
<div style='text-align: right;'>''*contributed by Rhea Parekh''</div>
Write, autoreview, editor, reviewer
3,125

edits

Navigation menu