Symmetric key encryption
A symmetric key encryption (SKE) scheme allows a sender and receiver sharing a secret key to encrypt and decrypt messages, such that an adversary who does not know the key cannot learn anything about the plaintext from the ciphertext.
Syntax
A SKE scheme is a tuple of efficient algorithms with respect to keyspace message space and ciphertext space :
- is a randomized algorithm which samples a key ,
- is a randomized algorithm which takes a key and message , outputting a ciphertext ,
- is a deterministic algorith which takes a key and ciphertext , outputting a message or to indicate an invalid ciphertext.
Properties
Correctness
A SKE scheme is -correct if for all and ,
over the choice of and randomness of When , we say is perfectly correct.
CPA Security
In the chosen-plaintext attack (CPA) game, the adversary adaptively queries a left-right encryption oracle: it submits message pairs and receives an encryption of , where is a hidden bit. The adversary wins by guessing .
\begin{algorithm}
\algname{Game}
\caption{$\Game^{\mathrm{cpa}}_{\SKE,\calA}(\secpar)$}
\begin{algorithmic}
\State $k \gets \KeyGen(1^\secpar)$; $b \getsr \bits$
\State $\calO_0(m_0, m_1) := \Enc(k, m_0)$
\State $\calO_1(m_0, m_1) := \Enc(k, m_1)$
\State $b' \gets \calA^{\calO_b}(1^\secpar)$
\Return $[b' = b]$
\end{algorithmic}
\end{algorithm}
A SKE scheme is CPA-secure if for all efficient ,
is negligible.
IND$-CPA Security
Indistinguishability from random (IND$-CPA) is a stronger notion where the adversary must distinguish real encryptions from uniformly random ciphertexts, rather than encryptions of two chosen messages. The oracle in world 0 encrypts the query; in world 1 it returns a fresh uniform random ciphertext regardless of the input.
\begin{algorithm}
\algname{Game}
\caption{$\Game^{\mathrm{ind\$\text{-}cpa}}_{\SKE,\calA}(\secpar)$}
\begin{algorithmic}
\State $k \gets \KeyGen(1^\secpar)$; $b \getsr \bits$
\State $\calO_0(m) := \Enc(k, m)$
\State $\calO_1(m) \getsr \calC$
\Comment{Each $m$ is a uniform random ciphertext}
\State $b' \gets \calA^{\calO_b}(1^\secpar)$
\Return $[b' = b]$
\end{algorithmic}
\end{algorithm}
A SKE scheme is IND$-CPA-secure if for all efficient ,
is negligible. IND$-CPA implies CPA security, but not vice versa.
CCA Security
In the chosen-ciphertext attack (CCA) game, the adversary additionally has access to a decryption oracle. To avoid a trivial win, is admissible: it may not query on any ciphertext output by the encryption oracle .
\begin{algorithm}
\algname{Game}
\caption{$\Game^{\mathrm{cca}}_{\SKE,\calA}(\secpar)$}
\begin{algorithmic}
\State $k \gets \KeyGen(1^\secpar)$; $b \getsr \bits$
\State $\calO_b(m_0, m_1) := \Enc(k, m_b)$
\State $\calD(c) := \Dec(k, c)$
\Comment{$\calA$ may not query $\calD$ on outputs of $\calO_b$}
\State $b' \gets \calA^{\calO_b, \calD}(1^\secpar)$
\Return $[b' = b]$
\end{algorithmic}
\end{algorithm}
A SKE scheme is CCA-secure if for all admissible efficient ,
is negligible. The admissibility restriction is necessary: without it, could query and then decrypt the result to trivially learn .