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

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 33: Line 33:
'''Function 1''': TrapTP.KeyGen(<math>1^\kappa, 1^t, 1^p, 1^h</math>)</br>
'''Function 1''': TrapTP.KeyGen(<math>1^\kappa, 1^t, 1^p, 1^h</math>)</br>


* $k \xleftarrow[]{} MAC.KeyGen(1^\kappa)$
* <math>k \xleftarrow[]{}</math> MAC.KeyGen<math>(1^\kappa)</math>
* $\pi \xleftarrow[r]{} S_{3m}$
* <math>\pi \xleftarrow[r]{} S_{3m}</math>
* for $i = 0, ..., t:$
* for <math>i = 0, ..., t:</math>
** $(sk_i, pk_i, ev_i) \xleftarrow[]{} HE.KeyGen(1^\kappa)$
** <math>(sk_i, pk_i, ev_i) \xleftarrow[]{}</math> HE.KeyGen<math>(1^\kappa)</math>
* $sk \xleftarrow[]{} (\pi, k, sk_0, ..., sk_t, pk_0)$
* <math>sk \xleftarrow[]{} (\pi, k, sk_0, ..., sk_t, pk_0)</math>
* for $i = 0, ..., p:$
* for <math>i = 0, ..., p:</math>
** $\mu_i^{P} \xleftarrow[]{}  TrapTP.ENC(sk, P|+\rangle)$
** <math>\mu_i^{P} \xleftarrow[]{}</math> TrapTP.ENC<math>(sk, P|+\rangle)</math>
* for $i = 0, ..., t:$
* for <math>i = 0, ..., t:</math>
** $\mu_i^{T} \xleftarrow[]{}  TrapTP.ENC(sk, T|+\rangle)$
** <math>\mu_i^{T} \xleftarrow[]{}</math> TrapTP.ENC<math>(sk, T|+\rangle)</math>
* for $i = 0, ..., h:$
* for <math>i = 0, ..., h:</math>
** $\mu_i^{H} \xleftarrow[]{}  TrapTP.ENC(sk, \frac{1}{\sqrt{2}}(H\otimes I)(|00\rangle + |11\rangle))$
** <math>\mu_i^{H} \xleftarrow[]{}</math> TrapTP.ENC<math>(sk, \frac{1}{\sqrt{2}}(H\otimes I)(|00\rangle + |11\rangle))</math>
* for $i = 0, ..., t:$
* for <math>i = 0, ..., t:</math>
** $\pi_i \xleftarrow[r]{r} S_{3m}$
** <math>\pi_i \xleftarrow[r]{r} S_{3m}</math>
** $(g_i, \gamma_i^{in}, \gamma_i^{mid}, \gamma_i^{out}) \xleftarrow[]{} TrapTP.GadgetGen(sk_{i-1})$
** <math>(g_i, \gamma_i^{in}, \gamma_i^{mid}, \gamma_i^{out}) \xleftarrow[]{}</math> TrapTP.GadgetGen<math>(sk_{i-1})</math>
** $\Gamma_i \xleftarrow[]{} MAC.Sign(HE.ENC_{pk_i}(g_i, \pi_i)) \otimes TrapTP.ENC((\pi_i, k, sk_0, ..., sk_t, pk_i), \gamma^{mid}_i \otimes TrapTP.Enc(sk, \gamma^{in}_i, \gamma^{out}_i$
** <math>\Gamma_i \xleftarrow[]{}</math> MAC.Sign(HE.ENC_<math>{pk_i}(g_i, \pi_i)) \otimes</math> TrapTP.ENC<math>((\pi_i, k, sk_0, ..., sk_t, pk_i), \gamma^{mid}_i \otimes</math> TrapTP.Enc<math>(sk, \gamma^{in}_i, \gamma^{out}_i</math>
* $keys \xleftarrow[]{} MAC.Sign(evk_0, ..., evk_t, pk_0, ..., pk_t, HE.Enc_{pk_0}(\pi))$
* <math>keys \xleftarrow[]{}</math> MAC.Sign<math>(evk_0, ..., evk_t, pk_0, ..., pk_t,</math> HE.Enc_<math>{pk_0}(\pi))</math>
* $\rho_{evk} \xleftarrow[]{} (keys, \mu^{P}_0, ..., \mu^{P}_p, \mu^{T}_0, ..., \mu^{T}_t, \mu^{H}_0, ..., \mu^{H}_h, \Gamma_1, ..., \Gamma_t)$
* <math>\rho_{evk} \xleftarrow[]{} (keys, \mu^{P}_0, ..., \mu^{P}_p, \mu^{T}_0, ..., \mu^{T}_t, \mu^{H}_0, ..., \mu^{H}_h, \Gamma_1, ..., \Gamma_t)</math>
* return $(sk, \rho_{evk})$
* return <math>(sk, \rho_{evk})</math>




</br>
'''Function 2''': TrapTP.GadgetGen(<math>sk_i</math>)
* <math>g_i \xleftarrow[]{} g(sk_i)</math>
* <math>(\gamma^{in}, \gamma^{mid}, \gamma^{out}) \xleftarrow[]{}</math> generate <math>|\Phi^+\rangle</math> states depending on <math>g_i</math>
* return (<math>g_i, \gamma^{in}, \gamma^{mid}, \gamma^{out}</math>)
</br>
'''Function 3''': TrapTP.Enc((<math>\pi, k, sk_0, ..., sk_t, pk</math>), <math>\sigma</math>)
* <math>\tilde{\sigma} \xleftarrow[]{} \Sigma_{x, z \in \{0,1\}^{3m}} </math> (TC.Enc<math>((\pi, x, z), \sigma) \otimes</math> MAC.Sign<math>_k(HE.Enc_{pk}(x,z)))</math>
* return <math>\tilde{\sigma}</math>
</br>
'''Function 4''': TrapTP.EvalMeasure(<math>\tilde{\sigma}, \tilde{x}, \tilde{z}, \tilde{\pi}, pk, evk</math>)
* <math>a = (a_1, ..., a_{3m}) \xleftarrow[]{}</math> measure qubits of <math>\tilde{\sigma}</math> in the computational basis
* <math>(\tilde{a}, log_1) \xleftarrow[]{}</math> HE.Enc<math>_{pk}(a)</math>
* <math>(\tilde{b}, \tilde{flag}, log_2</math> \xleftarrow[]{} HE.Eval<math>^{TC.VerDecMeasurement}_{evk}((\tilde{\pi}, \tilde{x}, \tilde{z}), \tilde{a}, HE.Enc_{pk}(+))</math>
* return (<math>\tilde{b}, \tilde{flag}, log_1, log_2</math>)
</br>
'''Function 4''': TrapTP.EvalX(<math>\tilde{\sigma}, \tilde{x}, \tilde{\pi}, pk, evk</math>)
* <math>(\tilde{x}, log_1) \xleftarrow[]{}</math> HE.Eval<math>_{evk}^{unpermute}(\tilde{\pi}, \tilde{x})</math>
* <math>(\tilde{x}, log_2) \xleftarrow[]{}</math> HE.Eval<math>_{evk}^{\otimes}(\tilde{x},</math> HE.Enc_<math>{pk}(1^m0^{2m}))</math>
* <math>(\tilde{x}, log_3) \xleftarrow[]{}</math> HE.Eval<math>^{permute}_{evk}(\tilde{\pi}, \tilde{x})</math>
* return (<math>\tilde{\sigma}, \tilde{x}, log_1, log_2, log_3</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