Write, autoreview, editor, reviewer
3,129
edits
m (→Properties) |
|||
Line 58: | Line 58: | ||
==Pseudocode== | ==Pseudocode== | ||
====<span style="font-variant:small-caps"><math>\epsilon<math>-anonymous transmission of a quantum message</span>==== | ====<span style="font-variant:small-caps"><math>\epsilon</math>-anonymous transmission of a quantum message</span>==== | ||
\noindent ''{Input}: Security parameter <math>q<math>. \\ | \noindent ''{Input}: Security parameter <math>q<math>. \\ | ||
''{Goal}: <math>\mathcal{S}<math> sends message qubit <math>\ket{\psi}<math> to <math>\mathcal{R}<math> with <math>\epsilon<math>-anonymity. | ''{Goal}: <math>\mathcal{S}</math> sends message qubit <math>\ket{\psi}</math> to <math>\mathcal{R}</math> with <math>\epsilon</math>-anonymity. | ||
# {\bf Receiver notification}: \\ | # {\bf Receiver notification}: \\ | ||
Run <span style="font-variant:small-caps">Notification</span> for <math>\mathcal{S}<math> to notify <math>\mathcal{R}<math> as the Receiver. | Run <span style="font-variant:small-caps">Notification</span> for <math>\mathcal{S}</math> to notify <math>\mathcal{R}</math> as the Receiver. | ||
# {\bf Distribution of state}: \\ | # {\bf Distribution of state}: \\ | ||
A source (who may be untrusted) generates a state <math>\ | A source (who may be untrusted) generates a state <math>|\Psi\rangle<math> and distributes it to the players (in the ideal case, <math>|\Psi\rangle</math> is the GHZ state). | ||
# {\bf <math>\mathcal{S}<math> anonymously chooses verification or anonymous transmission}: | # {\bf <math>\mathcal{S}<\math> anonymously chooses verification or anonymous transmission}: | ||
## Run <span style="font-variant:small-caps">RandomBit</span>, with the input of <math>\mathcal{S}<math> chosen as follows: she flips <math>q<math> fair classical coins, and if all coins are heads, she inputs 0, else she inputs 1. Let the outcome be <math>x<math>. | ## Run <span style="font-variant:small-caps">RandomBit</span>, with the input of <math>\mathcal{S}</math> chosen as follows: she flips <math>q</math> fair classical coins, and if all coins are heads, she inputs 0, else she inputs 1. Let the outcome be <math>x</math>. | ||
## If <math>x=1<math>, | ## If <math>x=1</math>, | ||
### Run <span style="font-variant:small-caps">RandomBit</span> <math>\log_2 n<math> times, with the input of <math>\mathcal{S}<math> chosen according to the uniform random distribution. Let the outcome be <math>v<math>. | ### Run <span style="font-variant:small-caps">RandomBit</span> <math>\log_2 n</math> times, with the input of <math>\mathcal{S}</math> chosen according to the uniform random distribution. Let the outcome be <math>v</math>. | ||
### Run <span style="font-variant:small-caps">Verification</span> with player <math>v<math> as the Verifier. If she accepts the outcome of the test, return to step 2, otherwise abort. | ### Run <span style="font-variant:small-caps">Verification</span> with player <math>v</math> as the Verifier. If she accepts the outcome of the test, return to step 2, otherwise abort. | ||
Else if <math>x=0<math>, run <span style="font-variant:small-caps">Anonymous Transmission</span>. | Else if <math>x=0</math>, run <span style="font-variant:small-caps">Anonymous Transmission</span>. | ||
If at any point in the protocol, <math>\mathcal{S}<math> realises someone does not follow the protocol, she stops behaving like the Sender and behaves as any player. | If at any point in the protocol, <math>\mathcal{S}</math> realises someone does not follow the protocol, she stops behaving like the Sender and behaves as any player. | ||
Line 83: | Line 83: | ||
====<span style="font-variant:small-caps">Parity</span>==== | ====<span style="font-variant:small-caps">Parity</span>==== | ||
\noindent ''{Input}: <math>\{ x_i \}_{i=1}^n<math>. \\ | \noindent ''{Input}: <math>\{ x_i \}_{i=1}^n</math>. \\ | ||
''{Goal}: Each player gets <math>y_i = \bigoplus_{i=1}^n x_i<math>. | ''{Goal}: Each player gets <math>y_i = \bigoplus_{i=1}^n x_i</math>. | ||
# Every player <math>i<math> chooses random bits <math>\{r_i^j \}_{j=1}^n<math> such that <math>\bigoplus_{j=1}^n r_i^j = x_i<math>. | # Every player <math>i</math> chooses random bits <math>\{r_i^j \}_{j=1}^n</math> such that <math>\bigoplus_{j=1}^n r_i^j = x_i</math>. | ||
# Every player <math>i<math> sends their <math>j<math>th bit <math>r_i^j<math> to player <math>j<math> (<math>j<math> can equal <math>i<math>). | # Every player <math>i</math> sends their <math>j</math>th bit <math>r_i^j</math> to player <math>j</math> (<math>j</math> can equal <math>i</math>). | ||
# Every player <math>j<math> computes <math>z_j=\bigoplus_{i=1}^n r_i^j<math> and reports the value in the simultaneous broadcast channel. | # Every player <math>j</math> computes <math>z_j=\bigoplus_{i=1}^n r_i^j</math> and reports the value in the simultaneous broadcast channel. | ||
# The value <math>z=\bigoplus_{j=1}^n z_j<math> is computed, which equals <math>y_i<math>. | # The value <math>z=\bigoplus_{j=1}^n z_j</math> is computed, which equals <math>y_i</math>. | ||
====<span style="font-variant:small-caps">LogicalOR</span>==== | ====<span style="font-variant:small-caps">LogicalOR</span>==== | ||
\noindent ''{Input}: <math>\{ x_i \}_{i=1}^n<math>, security parameter <math>q<math>. \\ | \noindent ''{Input}: <math>\{ x_i \}_{i=1}^n</math>, security parameter <math>q</math>. \\ | ||
''{Goal}: Each player gets <math>y_i = \bigvee_{i=1}^n x_i<math>. | ''{Goal}: Each player gets <math>y_i = \bigvee_{i=1}^n x_i</math>. | ||
# The players agree on <math>n<math> orderings, with each ordering having a different last participant. | # The players agree on <math>n</math> orderings, with each ordering having a different last participant. | ||
# For each ordering: | # For each ordering: | ||
## Each player <math>i<math> picks the value of <math>p_i<math> as follows: if <math>x_i=0<math>, then <math>p_i=0<math>; if <math>x_i=1<math>, then <math>p_i=1<math> with probability <math>\frac{1}{2}<math> and <math>p_i=0<math> with probability <math>\frac{1}{2}<math>. | ## Each player <math>i</math> picks the value of <math>p_i</math> as follows: if <math>x_i=0</math>, then <math>p_i=0</math>; if <math>x_i=1</math>, then <math>p_i=1</math> with probability <math>\frac{1}{2}</math> and <math>p_i=0</math> with probability <math>\frac{1}{2}</math>. | ||
## Run <span style="font-variant:small-caps">Parity</span> with input <math>\{p_i\}_{i=1}^n<math>, with a regular broadcast channel rather than simultaneous broadcast, and with the players broadcasting according to the current ordering. If the result is <math>1<math>, then <math>y_i = 1<math>. | ## Run <span style="font-variant:small-caps">Parity</span> with input <math>\{p_i\}_{i=1}^n</math>, with a regular broadcast channel rather than simultaneous broadcast, and with the players broadcasting according to the current ordering. If the result is <math>1</math>, then <math>y_i = 1</math>. | ||
## Repeat steps 2(a) - 2(b) <math>q<math> times in total. If the result of <span style="font-variant:small-caps">Parity</span> is never <math>1<math>, then <math>y_i = 0<math>. | ## Repeat steps 2(a) - 2(b) <math>q</math> times in total. If the result of <span style="font-variant:small-caps">Parity</span> is never <math>1</math>, then <math>y_i = 0</math>. | ||
====<span style="font-variant:small-caps">Notification</span>==== | ====<span style="font-variant:small-caps">Notification</span>==== | ||
\noindent ''{Input}: Security parameter <math>q<math>, <math>\mathcal{S}<math>'s choice of <math>\mathcal{R}<math> is player <math>r<math>. \\ | \noindent ''{Input}: Security parameter <math>q</math>, <math>\mathcal{S}</math>'s choice of <math>\mathcal{R}</math> is player <math>r</math>. \\ | ||
''{Goal}: <math>\mathcal{S}<math> notifies <math>\mathcal{R}<math>. \\ | ''{Goal}: <math>\mathcal{S}</math> notifies <math>\mathcal{R}</math>. \\ | ||
For each player <math>i<math>: | For each player <math>i</math>: | ||
# For each player <math>i<math>: | # For each player <math>i</math>: | ||
## Each player <math>j \neq i<math> picks <math>p_j<math> as follows: if <math>i = r<math> and player <math>j<math> is <math>S<math>, then <math>p_j = 1<math> with probability <math>\frac{1}{2}<math> and <math>p_j = 0<math> with probability <math>\frac{1}{2}<math>. Otherwise, <math>p_j = 0<math>. Let <math>p_i = 0<math>. | ## Each player <math>j \neq i</math> picks <math>p_j</math> as follows: if <math>i = r</math> and player <math>j</math> is <math>S</math>, then <math>p_j = 1</math> with probability <math>\frac{1}{2}</math> and <math>p_j = 0</math> with probability <math>\frac{1}{2}</math>. Otherwise, <math>p_j = 0</math>. Let <math>p_i = 0</math>. | ||
## Run <span style="font-variant:small-caps">Parity</span> with input <math>\{p_i\}_{i=1}^n<math>, with the following differences: player <math>i<math> does not broadcast her value, and they use a regular broadcast channel rather than simultaneous broadcast. If the result is <math>1<math>, then <math>y_i = 1<math>. | ## Run <span style="font-variant:small-caps">Parity</span> with input <math>\{p_i\}_{i=1}^n</math>, with the following differences: player <math>i</math> does not broadcast her value, and they use a regular broadcast channel rather than simultaneous broadcast. If the result is <math>1</math>, then <math>y_i = 1</math>. | ||
## Repeat steps 1(a) - (b) <math>q<math> times. If the result of <span style="font-variant:small-caps">Parity</span> is never 1, then <math>y_i = 0<math>. | ## Repeat steps 1(a) - (b) <math>q</math> times. If the result of <span style="font-variant:small-caps">Parity</span> is never 1, then <math>y_i = 0</math>. | ||
# If player <math>i<math> obtained <math>y_i = 1<math>, then she is <math>\mathcal{R}<math>. | # If player <math>i</math> obtained <math>y_i = 1</math>, then she is <math>\mathcal{R}</math>. | ||
====<span style="font-variant:small-caps">RandomBit</span>==== | ====<span style="font-variant:small-caps">RandomBit</span>==== |