Verifiable Quantum Anonymous Transmission: Difference between revisions

no edit summary
(Created page with "This [example protocol] implements the task of anonymous transmission in a multi-node quantum network. The protocol uses an untrusted $n$-partite GHZ state to enable two nodes...")
 
No edit summary
Line 1: Line 1:
This [example protocol] implements the task of anonymous transmission in a multi-node quantum network. The protocol uses an untrusted $n$-partite GHZ state to enable two nodes, Sender and Receiver, to establish a link which they use to transmit a quantum message. In addition to adversarial nodes, the source of the GHZ state may be controlled by an adversary. To address this, the protocol includes verification of the GHZ state. It incorporates a reduced fidelity GHZ state used for anonymous transmission, resulting in a notion of anonymity for imperfect scenarios called $\epsilon$-anonymity.
This [example protocol] implements the task of anonymous transmission in a multi-node quantum network. The protocol uses an untrusted <math>n</math>-partite GHZ state to enable two nodes, Sender and Receiver, to establish a link which they use to transmit a quantum message. In addition to adversarial nodes, the source of the GHZ state may be controlled by an adversary. To address this, the protocol includes verification of the GHZ state. It incorporates a reduced fidelity GHZ state used for anonymous transmission, resulting in a notion of anonymity for imperfect scenarios called <math>\epsilon</math>-anonymity.


==Assumptions==
==Assumptions==


* '''Network''': The network consists of $n$ nodes (honest or adversarial) with pairwise authenticated classical channels and a classical broadcast channel.  
* '''Network''': The network consists of <math>n</math> nodes (honest or adversarial) with pairwise authenticated classical channels and a classical broadcast channel.  
* '''Source''': Untrusted multipartite state source.
* '''Source''': Untrusted multipartite state source.
* '''Adversarial model''': Active adversary who can control the source.
* '''Adversarial model''': Active adversary who can control the source.
Line 9: Line 9:
==Outline==
==Outline==
This verified GHZ-based quantum anonymous transmission protocol is based on the work of \cite{Unnikrishnan}, which uses the following subroutines from \cite{Wehner}, \cite{Broadbent}, \cite{Pappa}, \cite{McCutcheon}:
This verified GHZ-based quantum anonymous transmission protocol is based on the work of \cite{Unnikrishnan}, which uses the following subroutines from \cite{Wehner}, \cite{Broadbent}, \cite{Pappa}, \cite{McCutcheon}:
* {{Smallcaps|Parity}} \cite{Broadbent}: privately computes the parity of an input string.
* <span style="font-variant:small-caps">Parity</span> \cite{Broadbent}: privately computes the parity of an input string.
* {{Smallcaps|LogicalOR}} \cite{Broadbent}: privately computes the logical OR of an input string, using a modified version of {{Smallcaps|Parity}}.
* <span style="font-variant:small-caps">LogicalOR</span> \cite{Broadbent}: privately computes the logical OR of an input string, using a modified version of <span style="font-variant:small-caps">Parity</span>.
* {{Smallcaps|Notification}} \cite{Broadbent}: allows one player to anonymously notify another player, using {{Smallcaps|LogicalOR}}.
* <span style="font-variant:small-caps">Notification</span> \cite{Broadbent}: allows one player to anonymously notify another player, using <span style="font-variant:small-caps">LogicalOR</span>.
* {{Smallcaps|RandomBit}} \cite{Unnikrishnan}: allows one player to anonymously choose a bit according to a probability distribution, using {{Smallcaps|LogicalOR}}.
* <span style="font-variant:small-caps">RandomBit</span> \cite{Unnikrishnan}: allows one player to anonymously choose a bit according to a probability distribution, using <span style="font-variant:small-caps">LogicalOR</span>.
* {{Smallcaps|Verification}} \cite{Pappa, McCutcheon}: allows one player (the Verifier) to run a test to check if the shared state is the GHZ state. The Verifier instructs each player to measure their qubit in a particular basis and checks the parity of the measurement outcomes.  
* <span style="font-variant:small-caps">Verification</span> \cite{Pappa, McCutcheon}: allows one player (the Verifier) to run a test to check if the shared state is the GHZ state. The Verifier instructs each player to measure their qubit in a particular basis and checks the parity of the measurement outcomes.  
* {{Smallcaps|Anonymous Entanglement}} \cite{Wehner}: $n-2$ nodes (all except for $\mathcal{S}$ and $\mathcal{R}$) measure in the $X$ basis and broadcast their measurement outcome. $\mathcal{S}$ and $\mathcal{R}$ broadcast random dummy bits. The parity of measurement outcomes allows the establishment of an entangled link between $\mathcal{S}$ and $\mathcal{R}$ which is called anonymous entanglement.
* <span style="font-variant:small-caps">Anonymous Entanglement</span> \cite{Wehner}: $n-2$ nodes (all except for $\mathcal{S}$ and $\mathcal{R}$) measure in the $X$ basis and broadcast their measurement outcome. $\mathcal{S}$ and $\mathcal{R}$ broadcast random dummy bits. The parity of measurement outcomes allows the establishment of an entangled link between $\mathcal{S}$ and $\mathcal{R}$ which is called anonymous entanglement.


The protocol for quantum anonymous transmission consists of the following steps:
The protocol for quantum anonymous transmission consists of the following steps:
# \textit{Receiver notification}: The Sender $\mathcal{S}$ notifies the Receiver $R$ by running {{Smallcaps|Notification}}.
# \textit{Receiver notification}: The Sender $\mathcal{S}$ notifies the Receiver $R$ by running <span style="font-variant:small-caps">Notification</span>.
# \textit{State distribution}: A source, who may be untrusted, distributes a state claiming to be the GHZ state.
# \textit{State distribution}: A source, who may be untrusted, distributes a state claiming to be the GHZ state.
# \textit{Verification or anonymous transmission}: $\mathcal{S}$ anonymously chooses whether to verify the state or use it for anonymous transmission, using {{Smallcaps|RandomBit}.  
# \textit{Verification or anonymous transmission}: $\mathcal{S}$ anonymously chooses whether to verify the state or use it for anonymous transmission, using <span style="font-variant:small-caps">RandomBit}.  


If verification is chosen, a player is chosen to run {{Smallcaps|Verification}}, using $\log_2 n$ repetitions of  {{Smallcaps|RandomBit}}.  
If verification is chosen, a player is chosen to run <span style="font-variant:small-caps">Verification</span>, using $\log_2 n$ repetitions of  <span style="font-variant:small-caps">RandomBit</span>.  
If the test passes, the protocol goes back to the \textit{State distribution} stage and runs again. If the test fails, the players abort.  
If the test passes, the protocol goes back to the \textit{State distribution} stage and runs again. If the test fails, the players abort.  


If anonymous transmission is chosen, the players run {{Smallcaps|Anonymous Entanglement}}, establishing an anonymous entanglement link between $\mathcal{S}$ and $\mathcal{R}$.
If anonymous transmission is chosen, the players run <span style="font-variant:small-caps">Anonymous Entanglement</span>, establishing an anonymous entanglement link between $\mathcal{S}$ and $\mathcal{R}$.
$\mathcal{S}$ then teleports the message state $\ket{\psi}$ to $\mathcal{R}$ using the established anonymous entanglement. The classical message $m$ associated with teleportation is also sent anonymously.
$\mathcal{S}$ then teleports the message state $\ket{\psi}$ to $\mathcal{R}$ using the established anonymous entanglement. The classical message $m$ associated with teleportation is also sent anonymously.


Line 31: Line 31:
* $t$: number of adversarial network nodes taking part in the anonymous transmission.
* $t$: number of adversarial network nodes taking part in the anonymous transmission.
* $\ket{\psi}$: quantum message which the Sender wants to send anonymously.
* $\ket{\psi}$: quantum message which the Sender wants to send anonymously.
* $\ket{GHZ}  = \frac{1}{\sqrt{2}} (\ket{0^n} + \ket{1^n})$: GHZ state.  
* $\ket{GHZ}  = \frac{1}{\sqrt{2</span> (\ket{0^n} + \ket{1^n})$: GHZ state.  
* $\ket{\Psi}$: state provided by the untrusted source for anonymous transmission (in the ideal case, this is the GHZ state).
* $\ket{\Psi}$: state provided by the untrusted source for anonymous transmission (in the ideal case, this is the GHZ state).
* $\mathcal{S}$: the Sender of the quantum message.
* $\mathcal{S}$: the Sender of the quantum message.
Line 49: Line 49:
If the state used for anonymous transmission is of fidelity at least $\sqrt{1-\epsilon^2}$ with the GHZ state,  
If the state used for anonymous transmission is of fidelity at least $\sqrt{1-\epsilon^2}$ with the GHZ state,  
\begin{align*}
\begin{align*}
P_{\text{guess}} [\mathcal{S} | C, \mathcal{S} \notin \mathcal{A} ] \leq \frac{1}{n-t} + \epsilon, \\
P_{\text{guess</span> [\mathcal{S} | C, \mathcal{S} \notin \mathcal{A} ] \leq \frac{1}{n-t} + \epsilon, \\
P_{\text{guess}} [\mathcal{R} | C, \mathcal{S} \notin \mathcal{A} ] \leq \frac{1}{n-t} + \epsilon,
P_{\text{guess</span> [\mathcal{R} | C, \mathcal{S} \notin \mathcal{A} ] \leq \frac{1}{n-t} + \epsilon,
\end{align*}
\end{align*}
where $\mathcal{A}$ is the subset of $t$ adversaries among $n$ nodes and $C$ is the register that contains all classical and quantum side information accessible to the adversaries.  
where $\mathcal{A}$ is the subset of $t$ adversaries among $n$ nodes and $C$ is the register that contains all classical and quantum side information accessible to the adversaries.  
Line 56: Line 56:
==Pseudocode==
==Pseudocode==


===={{Smallcaps|$\epsilon$-anonymous transmission of a quantum message}}====
====<span style="font-variant:small-caps">$\epsilon$-anonymous transmission of a quantum message</span>====
\noindent \textit{Input}: Security parameter $q$. \\  
\noindent \textit{Input}: Security parameter $q$. \\  
\textit{Goal}: $\mathcal{S}$ sends message qubit $\ket{\psi}$ to $\mathcal{R}$ with $\epsilon$-anonymity.  
\textit{Goal}: $\mathcal{S}$ sends message qubit $\ket{\psi}$ to $\mathcal{R}$ with $\epsilon$-anonymity.  
Line 62: Line 62:


# {\bf Receiver notification}: \\  
# {\bf Receiver notification}: \\  
Run {{Smallcaps|Notification}} for $\mathcal{S}$ to notify $\mathcal{R}$ as the Receiver.
Run <span style="font-variant:small-caps">Notification</span> for $\mathcal{S}$ to notify $\mathcal{R}$ as the Receiver.


# {\bf Distribution of state}: \\  
# {\bf Distribution of state}: \\  
Line 68: Line 68:


# {\bf $\mathcal{S}$ anonymously chooses verification or anonymous transmission}:  
# {\bf $\mathcal{S}$ anonymously chooses verification or anonymous transmission}:  
## Run {{Smallcaps|RandomBit}}, with the input of $\mathcal{S}$ chosen as follows: she flips $q$ fair classical coins, and if all coins are heads, she inputs 0, else she inputs 1. Let the outcome be $x$.
## Run <span style="font-variant:small-caps">RandomBit</span>, with the input of $\mathcal{S}$ chosen as follows: she flips $q$ fair classical coins, and if all coins are heads, she inputs 0, else she inputs 1. Let the outcome be $x$.
## If $x=1$,
## If $x=1$,
### Run {{Smallcaps|RandomBit}} $\log_2 n$ times, with the input of $\mathcal{S}$ chosen according to the uniform random distribution. Let the outcome be $v$.
### Run <span style="font-variant:small-caps">RandomBit</span> $\log_2 n$ times, with the input of $\mathcal{S}$ chosen according to the uniform random distribution. Let the outcome be $v$.
### Run {{Smallcaps|Verification}} with player $v$ 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 $v$ as the Verifier. If she accepts the outcome of the test, return to step 2, otherwise abort.


Else if $x=0$, run {{Smallcaps|Anonymous Transmission}}.
Else if $x=0$, run <span style="font-variant:small-caps">Anonymous Transmission</span>.


If at any point in the protocol, $\mathcal{S}$ 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, $\mathcal{S}$ realises someone does not follow the protocol, she stops behaving like the Sender and behaves as any player.
Line 80: Line 80:
===Subroutines===
===Subroutines===


===={{Smallcaps|Parity}}====
====<span style="font-variant:small-caps">Parity</span>====
\noindent \textit{Input}: $\{ x_i \}_{i=1}^n$. \\
\noindent \textit{Input}: $\{ x_i \}_{i=1}^n$. \\
\textit{Goal}: Each player gets $y_i = \bigoplus_{i=1}^n x_i$.
\textit{Goal}: Each player gets $y_i = \bigoplus_{i=1}^n x_i$.
Line 88: Line 88:
# The value $z=\bigoplus_{j=1}^n z_j$ is computed, which equals $y_i$.
# The value $z=\bigoplus_{j=1}^n z_j$ is computed, which equals $y_i$.


===={{Smallcaps|LogicalOR}}====
====<span style="font-variant:small-caps">LogicalOR</span>====
\noindent \textit{Input}: $\{ x_i \}_{i=1}^n$, security parameter $q$. \\
\noindent \textit{Input}: $\{ x_i \}_{i=1}^n$, security parameter $q$. \\
\textit{Goal}: Each player gets $y_i = \bigvee_{i=1}^n x_i$.
\textit{Goal}: Each player gets $y_i = \bigvee_{i=1}^n x_i$.
Line 94: Line 94:
# For each ordering:
# For each ordering:
## Each player $i$ picks the value of $p_i$ as follows: if $x_i=0$, then $p_i=0$; if $x_i=1$, then $p_i=1$ with probability $\frac{1}{2}$ and $p_i=0$ with probability $\frac{1}{2}$.  
## Each player $i$ picks the value of $p_i$ as follows: if $x_i=0$, then $p_i=0$; if $x_i=1$, then $p_i=1$ with probability $\frac{1}{2}$ and $p_i=0$ with probability $\frac{1}{2}$.  
## Run {{Smallcaps|Parity}} with input $\{p_i\}_{i=1}^n$, with a regular broadcast channel rather than simultaneous broadcast, and with the players broadcasting according to the current ordering. If the result is $1$, then $y_i = 1$.  
## Run <span style="font-variant:small-caps">Parity</span> with input $\{p_i\}_{i=1}^n$, with a regular broadcast channel rather than simultaneous broadcast, and with the players broadcasting according to the current ordering. If the result is $1$, then $y_i = 1$.  
## Repeat steps 2(a) - 2(b) $q$ times in total. If the result of {{Smallcaps|Parity}} is never $1$, then $y_i = 0$.
## Repeat steps 2(a) - 2(b) $q$ times in total. If the result of <span style="font-variant:small-caps">Parity</span> is never $1$, then $y_i = 0$.


===={{Smallcaps|Notification}}====
====<span style="font-variant:small-caps">Notification</span>====
\noindent \textit{Input}: Security parameter $q$, $\mathcal{S}$'s choice of $\mathcal{R}$ is player $r$. \\
\noindent \textit{Input}: Security parameter $q$, $\mathcal{S}$'s choice of $\mathcal{R}$ is player $r$. \\
\textit{Goal}: $\mathcal{S}$ notifies $\mathcal{R}$. \\
\textit{Goal}: $\mathcal{S}$ notifies $\mathcal{R}$. \\
Line 103: Line 103:
# For each player $i$:
# For each player $i$:
## Each player $j \neq i$ picks $p_j$ as follows: if $i = r$ and player $j$ is $S$, then $p_j = 1$ with probability $\frac{1}{2}$ and $p_j = 0$ with probability $\frac{1}{2}$. Otherwise, $p_j = 0$. Let $p_i = 0$.
## Each player $j \neq i$ picks $p_j$ as follows: if $i = r$ and player $j$ is $S$, then $p_j = 1$ with probability $\frac{1}{2}$ and $p_j = 0$ with probability $\frac{1}{2}$. Otherwise, $p_j = 0$. Let $p_i = 0$.
## Run {{Smallcaps|Parity}} with input $\{p_i\}_{i=1}^n$, with the following differences: player $i$ does not broadcast her value, and they use a regular broadcast channel rather than simultaneous broadcast. If the result is $1$, then $y_i = 1$.
## Run <span style="font-variant:small-caps">Parity</span> with input $\{p_i\}_{i=1}^n$, with the following differences: player $i$ does not broadcast her value, and they use a regular broadcast channel rather than simultaneous broadcast. If the result is $1$, then $y_i = 1$.
## Repeat steps 1(a) - (b) $q$ times. If the result of {{Smallcaps|Parity}} is never 1, then $y_i = 0$.  
## Repeat steps 1(a) - (b) $q$ times. If the result of <span style="font-variant:small-caps">Parity</span> is never 1, then $y_i = 0$.  
# If player $i$ obtained $y_i = 1$, then she is $\mathcal{R}$.
# If player $i$ obtained $y_i = 1$, then she is $\mathcal{R}$.


===={{Smallcaps|RandomBit}}====
====<span style="font-variant:small-caps">RandomBit</span>====
\noindent \textit{Input:} All: parameter $q$. $\mathcal{S}$: distribution $D$. \\
\noindent \textit{Input:} All: parameter $q$. $\mathcal{S}$: distribution $D$. \\
\textit{Goal:} $\mathcal{S}$ chooses a bit according to $D$.
\textit{Goal:} $\mathcal{S}$ chooses a bit according to $D$.
# The players pick bits $\{ x_i \}_{i=1}^n$ as follows: $\mathcal{S}$ picks bit $x_i$ to be 0 or 1 according to $D$; all other players pick $x_i = 0$.
# The players pick bits $\{ x_i \}_{i=1}^n$ as follows: $\mathcal{S}$ picks bit $x_i$ to be 0 or 1 according to $D$; all other players pick $x_i = 0$.
# Run {{Smallcaps|LogicalOR}} with input $\{ x_i \}_{i=1}^n$ and security parameter $q$ and output its outcome.
# Run <span style="font-variant:small-caps">LogicalOR</span> with input $\{ x_i \}_{i=1}^n$ and security parameter $q$ and output its outcome.


===={{Smallcaps|Verification}}====
====<span style="font-variant:small-caps">Verification</span>====
\noindent \textit{Input}: $n$ players share state $\ket{\Psi}$. \\
\noindent \textit{Input}: $n$ players share state $\ket{\Psi}$. \\
\textit{Goal}: GHZ verification of $\ket{\Psi}$ for $n-t$ honest players.
\textit{Goal}: GHZ verification of $\ket{\Psi}$ for $n-t$ honest players.
# The Verifier generates random angles $\theta_j \in [0,\pi)$ for all players including themselves ($j\in[n]$), such that $\sum_j \theta_j$ is a multiple of $\pi$. The angles are then sent out to all the players in the network.  
# The Verifier generates random angles $\theta_j \in [0,\pi)$ for all players including themselves ($j\in[n]$), such that $\sum_j \theta_j$ is a multiple of $\pi$. The angles are then sent out to all the players in the network.  
# Player $j$ measures in the basis $\{\ket{+_{\theta_j}},\ket{-_{\theta_j}}\}=\{\frac{1}{\sqrt{2}}(\ket{0}+e^{i\theta_j}\ket{1}),\frac{1}{\sqrt{2}}(\ket{0}-e^{i\theta_j}\ket{1})\}$, and sends the outcome $Y_j=\{0,1\}$ to the Verifier.  
# Player $j$ measures in the basis $\{\ket{+_{\theta_j</span>,\ket{-_{\theta_j</span>\}=\{\frac{1}{\sqrt{2</span>(\ket{0}+e^{i\theta_j}\ket{1}),\frac{1}{\sqrt{2</span>(\ket{0}-e^{i\theta_j}\ket{1})\}$, and sends the outcome $Y_j=\{0,1\}$ to the Verifier.  
# The state passes the verification test if
# The state passes the verification test if
$
$
Line 123: Line 123:
$
$


===={{Smallcaps|Anonymous Transmission}}====
====<span style="font-variant:small-caps">Anonymous Transmission</span>====
\noindent \textit{Input}: $n$ players share a GHZ state. \\
\noindent \textit{Input}: $n$ players share a GHZ state. \\
\textit{Goal}: Anonymous transmission of quantum message $\ket{\psi}$ from $\mathcal{S}$ to $\mathcal{R}$.
\textit{Goal}: Anonymous transmission of quantum message $\ket{\psi}$ from $\mathcal{S}$ to $\mathcal{R}$.
Line 134: Line 134:
# $\mathcal{S}$ applies a phase flip $Z$ to her qubit if $b=1$.  
# $\mathcal{S}$ applies a phase flip $Z$ to her qubit if $b=1$.  
# $\mathcal{R}$ picks a random bit $b' \in_R \{ 0, 1 \}$ and broadcasts $b'$.  
# $\mathcal{R}$ picks a random bit $b' \in_R \{ 0, 1 \}$ and broadcasts $b'$.  
# $\mathcal{R}$ applies a phase flip $Z$ to her qubit, if $b \oplus \underset{j \in [n] \backslash \{ \mathcal{S}, \mathcal{R} \}}{\bigoplus} m_j = 1$.   
# $\mathcal{R}$ applies a phase flip $Z$ to her qubit, if $b \oplus \underset{j \in [n] \backslash \{ \mathcal{S}, \mathcal{R} \</span>{\bigoplus} m_j = 1$.   
# $\mathcal{S}$ and $\mathcal{R}$ share $\epsilon$-anonymous entanglement. $\mathcal{S}$ then uses the quantum teleportation circuit with input $\ket{\psi}$, and obtains measurement outcomes $m_0, m_1$.  
# $\mathcal{S}$ and $\mathcal{R}$ share $\epsilon$-anonymous entanglement. $\mathcal{S}$ then uses the quantum teleportation circuit with input $\ket{\psi}$, and obtains measurement outcomes $m_0, m_1$.  
# The players run a protocol to anonymously send bits $m_0, m_1$ from $\mathcal{S}$ to $\mathcal{R}$ (see Further Information for details).  
# The players run a protocol to anonymously send bits $m_0, m_1$ from $\mathcal{S}$ to $\mathcal{R}$ (see Further Information for details).  
Line 141: Line 141:
==Further Information==
==Further Information==
* For simplicity, the same security parameter $q$ has been used throughout, however this is not required.
* For simplicity, the same security parameter $q$ has been used throughout, however this is not required.
* Although {{Smallcaps|Parity}} requires a simultaneous broadcast channel, only modified versions of {{Smallcaps|Parity}} that remove this requirement are used in the anonymous transmission protocol.
* Although <span style="font-variant:small-caps">Parity</span> requires a simultaneous broadcast channel, only modified versions of <span style="font-variant:small-caps">Parity</span> that remove this requirement are used in the anonymous transmission protocol.
* The protocol assumes there is only one Sender for simplicity. However, if this is not the case, the players can run a classical \cite{Broadbent} or quantum \cite{Wehner} collision detection protocol to deal with multiple Senders.  
* The protocol assumes there is only one Sender for simplicity. However, if this is not the case, the players can run a classical \cite{Broadbent} or quantum \cite{Wehner} collision detection protocol to deal with multiple Senders.  
* To send classical teleportation bits $m_0, m_1$, the players can run {{Smallcaps|Fixed Role Anonymous Message Transmission}} from \cite{Broadbent}, or the anonymous transmission protocol for classical bits with quantum resources from \cite{Wehner}.
* To send classical teleportation bits $m_0, m_1$, the players can run <span style="font-variant:small-caps">Fixed Role Anonymous Message Transmission</span> from \cite{Broadbent}, or the anonymous transmission protocol for classical bits with quantum resources from \cite{Wehner}.
* {{Smallcaps|Verification}} was experimentally demonstrated for 3- and 4-party GHZ states in \cite{McCutcheon}.
* <span style="font-variant:small-caps">Verification</span> was experimentally demonstrated for 3- and 4-party GHZ states in \cite{McCutcheon}.
* The Broadbent-Tapp protocol \cite{Broadbent} implements classical anonymous  transmission. It requires pairwise authenticated classical channels, and a classical broadcast channel.  
* The Broadbent-Tapp protocol \cite{Broadbent} implements classical anonymous  transmission. It requires pairwise authenticated classical channels, and a classical broadcast channel.  
* The Christandl-Wehner protocol \cite{Wehner} implements both classical and quantum anonymous  transmission. However, this protocol assumes the nodes share a perfect, trusted GHZ state.
* The Christandl-Wehner protocol \cite{Wehner} implements both classical and quantum anonymous  transmission. However, this protocol assumes the nodes share a perfect, trusted GHZ state.
Write, autoreview, editor, reviewer
3,129

edits