Fixed a lot of TODOs

This commit is contained in:
= 2019-12-21 11:29:17 +01:00
parent 7862b06c59
commit 6b7fce3c07
1 changed files with 97 additions and 112 deletions

View File

@ -32,6 +32,7 @@
\newcommand{\CH}{$\mathcal{C}\mathcal{H}$\xspace}
\newcommand{\hdr}{\text{Hdr}}
\newcommand{\set}[1]{\{#1\}}
\newcommand{\AHBE}{\texttt{AHBE}\xspace}
@ -64,7 +65,7 @@ Full blown functional encryption is however quite a mouthful to implement in an
% TODO: Explain IBE intuitively
\section{Syntax and preliminaries}
\section{Syntax and Preliminaries}
\subsection{Bilinear Maps}
Let $p$ be a large prime number. Let $\mathbb{G}_1, \mathbb{G}_2$ be two groups of order $p$ and let $\mathbb{G}_T$ also be a group of order $p$. Let $g_1$ be a generator of $\mathbb{G}_1$ and let $g_2$ be a generator of $\mathbb{G}_2$. $e : \mathbb{G}_1 \times \mathbb{G}_2 \ra \mathbb{G}_T$ is then a bilinear map satisfying the following properties \cite{BMDef}:
@ -111,8 +112,13 @@ We want to note that the paper does not define either $\alpha$ or $\gamma$, whic
\subsection{Identity-Based Encryption}
\subsubsection{The structure}
% TODO: Write up all of the mathematical assumptions
\section{Identity Based Encryption}
We will cover a basic identity based encryption scheme which illustrates a basic usage of bilinear maps as well as one way to extend the \emph{Diffie-Hellman Assumption} known from Public Key Encryption. This scheme is not secure against an adaptive chosen ciphertext attack (\texttt{IND-ID-CCA}). Note that it can be extended to cover this, but this is out of the scope of this paper. We note that although this scheme is not awefully relevant for the rest of this paper, it still is something we covered throughout the semester and it offers a delicate and simple introduction to some of the mathematical concepts and encryption schemes which will be used throughout this paper, specifically that of bilinear maps and public key cryptography.
\subsection{The structure}
\label{sec:IBEStruct}
\textbf{Identity-Based Encryption.} \quad An Identity-Based encryption scheme is specified by four different algorithms, all containing some sort of randomness: \texttt{Setup, Extract, Encrypt, Decrypt}: \vspace{3mm} \\
\-\hspace{5mm}\textbf{Setup:}\quad Takes some security parameter $k$ and returns the system parameters and a master-key. These system parameters include a description of a finite message space $\mathcal{M}$ as well as a description of a finite ciphertext space $\mathcal{C}$. These parameters are known publicly, wherre the master-key is known only to the trusted authority, the so called Private Key Generator (\texttt{PKF}). \vspace{3mm} \\
@ -144,65 +150,7 @@ An Identity-Based Encryption scheme is semantically secure against an adaptive c
This definition closely resembles the standard definition of \texttt{IND-CPA} but extended with the addition of extraction queries and that the challenger is now challenged on an \ID picked by the adversary. The addition of the extraction queries is supported by \cite{ExtractionDef}, when the scheme is to support multiple users, which is likely the case for any IBE scheme. Furthermore, the weaker notion of security known as \emph{Semantic Security} (\texttt{IND-ID-CPA}) can be defined based on \texttt{IND-ID-CCA}, except now the adversary is not allowed to issue any decryption queries, i.e. he is only allowed extraction queries.
\subsection{Dynamic Threshold Public-Key Encryption}
Perhaps explain the intuition TODO
\subsubsection{Security Model}
\-\hspace{5mm} \textbf{Setup:}\quad The challenger runs Setup$(\lambda)$ of the \texttt{DTPKE} scheme, obtaining the $\mathtt{params} = (MK,EK,DK,VK,CK)$. All the public parameters (all except for $MK$) are given to the adversary \adv{A}. \vsp{3mm}
\-\hspace{5mm} \textbf{Phase 1:}\quad The adversary is allowed to adaptively issue queries where query $q_i$ is one of three queries;
\begin{itemize}
\item A \texttt{Join} query on an id \texttt{ID}; The challenger runs the \texttt{Join} algorithm on input $(MK,\mathtt{ID})$, to create a new user in the system. Note that the challenger has $MK$ from the setup step.
\item A \texttt{Corrupt} query on an id \texttt{ID}: The challenger forwards the corresponding private key to the adversary.
\item A \texttt{ShareDecrypt} query on an id \texttt{ID} and a header \texttt{Hdr}: The challenger runs the \texttt{ShareDecrypt} algorithm of the \texttt{DTPKE} scheme on \texttt{Hdr}, using the corresponding private key, and forwards the partial decryption to the adversary.
\end{itemize}
\hsp{5mm} \textbf{Challenge:}\quad The adversary \adv{A} outputs a target set of users $S^*$ as well as a threshold $t^*$. The challenger selects $b \in_R \set{0, 1}$ and then runs \texttt{Encrypt} to obtain $\mathtt{Hdr}^*, k_0) \la \mathtt{Encrypt}(EK, S^*, t^*)$. Furthermore, he picks another key $k_1 \in_R \mathcal{K}$. The challenger outsputs $(\mathtt{Hdr}^*, k_b)$ to \adv{A}. \vsp{3mm}
\hsp{5mm} \textbf{Phase 2:}\quad The adversary \adv{A} is allowed to continue adaptively issuing \texttt{Join, Corrupt} and \texttt{ShareDecrypt} queries, with the only constraint that he asks less than or equal to $t^*-1$.\vsp{3mm}
\hsp{5mm} \textbf{Guess:} The adversary outputs a guess bit $b' \in \{0,1\}$ and he will win the game if $b' = b$. \vsp{5mm}
From this basic description, we can define three sub definitions:
\begin{itemize}
\item \emph{Non-Adaptive Adversary} (\texttt{NAA}): We restrict the adversary to decide upon the challenge set $S^*$ as well as the threshold $t^*$ before the \texttt{Setup} step is run.
\item \emph{Non-Adaptive Corruption} (\texttt{NAC}): We restrict the adversary to decide before the setup is run, which identities will be corrupted.
\item \emph{Chosen-Plaintext Adversary} (\texttt{CPA}): We restrict the adversary from issuing share decryption queries.
\end{itemize}
\subsection{Broadcast Encryption}
% TODO: Consider moving the introduction to what a BE Scheme is to here. Same goes for IBE and AHBE and DTPKE.
\subsubsection{security defintions}
\label{sec:BESec}
We define three levels of security, \emph{Static, Semi-Static} and \emph{Adaptive}. For the sake of simplicity, we will explain Semi-static and then emphasise the differences. Note that Semi-Static security is stronger than Static security, but weaker than Adaptive. The definition of Semi-Static is due to Gentry and Waters \cite{BESecDef, GentryWaters}. \vsp{4mm}
\hsp{5mm}\textbf{Initialisation:}\quad The adversary \adv{A} first commits to a \emph{potential} set of receivers which he wishes to attack, $\tilde{S}$, and outputs this. \vsp{3mm}
\hsp{5mm}\textbf{Setup:}\quad The challenger \CH runs the $BSetup(n, \ell)$ algorithm of the BE scheme, obtaining a public key PK. \CH gives this PK to \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Key Extraction Phase:}\quad The adversary \adv{A} is allowed to issue private key queries for indices $i \in [n] \setminus \tilde{S}$, i.e. he is allowed to ask for the private keys of any user not in the set of potential receivers. \vsp{3mm}
\hsp{5mm}\textbf{Challenge:}\quad Once the adversary \adv{A} has extracted all desired keys, he specifies an attack set $S^* \subseteq \tilde{S}$, on which he wants to be challenged. The challenger \CH then sets $(\hdr^*, k_0) \leftarrow BEnc(S^*, PK)$ and $k_1 \in_R \mathcal{K}$. Then $b \in_R \{0,1\}$ and \CH sends $(\hdr^*, k_b)$ to \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Guess:}\quad Adversary \adv{A} outputs a guess $b' \in \{0,1\}$ and he wins if $b' = b$. \\ \\
\noindent
The advantage of \adv{A} is then defined as: $$Adv_{SS,BE,n,\ell}(\lambda) = |Pr(b'=b) - \frac{1}{2}|$$
Static security is the least strongest type and it requires the adversary to commit to the set of receivers of which he wants to be challenged on, in the initialisation phase, rather than the potential set the Semi-Static adversary has to commit to. Adaptive security is arguably the most desired and correct type, as it enforces nothing in regards to the attack set $S^*$. The adversary is allowed to see the public key PK and ask for several private keys, before choosing which set he wishes to be challenged on. We note here, that due to Gentry and Waters \cite{GentryWaters}, we can transform a Semi-Statically secure BE scheme to an Adaptively secure BE scheme.
\subsection{Ad-Hoc Broadcast Encryption}
An \emph{Ad-Hoc Broadcast Encryption} system is defined to be \textbf{correct} if any user within the receiver set $S$ can decrypt a valid header. In an adaptively secure ad-hoc broadcast encryption system, the adversary is allowed access to all the public keys of the receivers and to ask for several secret keys before choosing the set of indices that the adversary wishes to attack.
\subsubsection{Security Definition of Adaptive Security in AHBE}
Both the Challenger and an adversary \adv{A} are both given the security parameter $\lambda$. \vsp{3mm}
\hsp{5mm}\textbf{Setup:}\quad The Challenger runs $KeyGen(i, n, N)$ to obtain the users' public key. These public keys and the public parameters are given to the adversary \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Corruption:}\quad Adversary \adv{A} is allowed to adaptively issue private key queries for \emph{some} indices $i \in [N]$. \vsp{3mm}
\hsp{5mm}\textbf{Challenge:}\quad \adv{A} specifies some challenge set $S^* \subseteq [N]$ s.t. \adv{A} has corrupted none of the users $i$ within $S^*$. The challenger sets $(\text{Hdr}^*, k_0) \leftarrow \texttt{AHBEnc}(S^*, (pk_i)_{S^*})$ and $k_1 \in_R \mathbb{K}$. The challenger sets $b \in_R \{0,1\}$. It gives $(\text{Hdr}^*, k_b)$ to the adversary \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Guess:}\quad The adversary \adv{A} will output a bit $b' \in \{0,1\}$ as an attempt to guess the bit $b$. \adv{A} wins if $b' = b$. \\ \\
\noindent
The advantage of \adv{A} is as expected; $Adv^{\texttt{AHBE}}_{\mathcal{A},n,N}(1^\lambda) = |Pr(b = b') - \frac{1}{2}|$.
% TODO: Write up all of the mathematical assumptions
\section{Identity Based Encryption}
We will cover a basic identity based encryption scheme which illustrates a basic usage of bilinear maps as well as one way to extend the \emph{Diffie-Hellman Assumption} known from Public Key Encryption. This scheme is not secure against an adaptive chosen ciphertext attack (\texttt{IND-ID-CCA}). Note that it can be extended to cover this, but this is out of the scope of this paper. We note that although this scheme is not awefully relevant for the rest of this paper, it still is something we covered throughout the semester and it offers a delicate and simple introduction to some of the mathematical concepts and encryption schemes which will be used throughout this paper, specifically that of bilinear maps and public key cryptography.
As already mentioned, an IBE-scheme is a collection of four randomized algorithms: \texttt{Setup, Extract, Encrypt, Decrypt}. $k$ is defined to be a security parameter given to the setup algorithm and $\mathcal{G}$ is a BDH parameter generator.
\subsection{A scheme}
\subsection{A Scheme}
The scheme we will focus on is that of Boneh and Franklin as described in \cite{WeilIBE}. The structure will be as defined in Section \ref{sec:IBEStruct}. We let $\lambda$ be the given security parameter given implicitly to the setup algorithm. We let $\mathcal{G}$ be a BDH parameter generator. \vsp{4mm}
\hsp{5mm}\textbf{Setup:}\quad Given $k$;
\begin{enumerate}
@ -232,6 +180,27 @@ The scheme can be shown to be semantically secure (\texttt{IND-ID-CPA}), assumin
\section{Dynamic Threshold Public-Key Encryption}
In a Threshold Public-Key Encryption (\texttt{TPKE}) scheme, the decryption key corresponding to a public key is shared among a set of $n$ users \cite{TPKE}. Specifically for \texttt{TPKE} is that for any ciphertext to be correctly decrypted, $t$ receivers has to participate and cooperate. Thus, if any number of users less than $t$ try to decrypt, they will gain nothing, hence the threshold part of \texttt{TPKE}. A limitation of existing \texttt{TPKE} schemes however, is that the threshold value of $t$ is tightly connected to the public key of the system, as such, one has to fix the threshold for good, when setting up the system. Many applications would benefit from a flexibility to choose $t$ whenever broadcasting. As such Dynamic Threshold Public-Key Encryption (\texttt{DTPKE}) is proposed \cite{DTPKE}.
\subsection{Security Model}
\-\hspace{5mm} \textbf{Setup:}\quad The challenger runs Setup$(\lambda)$ of the \texttt{DTPKE} scheme, obtaining the $\mathtt{params} = (MK,EK,DK,VK,CK)$. All the public parameters (all except for $MK$) are given to the adversary \adv{A}. \vsp{3mm}
\-\hspace{5mm} \textbf{Phase 1:}\quad The adversary is allowed to adaptively issue queries where query $q_i$ is one of three queries;
\begin{itemize}
\item A \texttt{Join} query on an id \texttt{ID}; The challenger runs the \texttt{Join} algorithm on input $(MK,\mathtt{ID})$, to create a new user in the system. Note that the challenger has $MK$ from the setup step.
\item A \texttt{Corrupt} query on an id \texttt{ID}: The challenger forwards the corresponding private key to the adversary.
\item A \texttt{ShareDecrypt} query on an id \texttt{ID} and a header \texttt{Hdr}: The challenger runs the \texttt{ShareDecrypt} algorithm of the \texttt{DTPKE} scheme on \texttt{Hdr}, using the corresponding private key, and forwards the partial decryption to the adversary.
\end{itemize}
\hsp{5mm} \textbf{Challenge:}\quad The adversary \adv{A} outputs a target set of users $S^*$ as well as a threshold $t^*$. The challenger selects $b \in_R \set{0, 1}$ and then runs \texttt{Encrypt} to obtain $\mathtt{Hdr}^*, k_0) \la \mathtt{Encrypt}(EK, S^*, t^*)$. Furthermore, he picks another key $k_1 \in_R \mathcal{K}$. The challenger outsputs $(\mathtt{Hdr}^*, k_b)$ to \adv{A}. \vsp{3mm}
\hsp{5mm} \textbf{Phase 2:}\quad The adversary \adv{A} is allowed to continue adaptively issuing \texttt{Join, Corrupt} and \texttt{ShareDecrypt} queries, with the only constraint that he asks less than or equal to $t^*-1$.\vsp{3mm}
\hsp{5mm} \textbf{Guess:} The adversary outputs a guess bit $b' \in \{0,1\}$ and he will win the game if $b' = b$. \vsp{5mm}
From this basic description, we can define three sub definitions:
\begin{itemize}
\item \emph{Non-Adaptive Adversary} (\texttt{NAA}): We restrict the adversary to decide upon the challenge set $S^*$ as well as the threshold $t^*$ before the \texttt{Setup} step is run.
\item \emph{Non-Adaptive Corruption} (\texttt{NAC}): We restrict the adversary to decide before the setup is run, which identities will be corrupted.
\item \emph{Chosen-Plaintext Adversary} (\texttt{CPA}): We restrict the adversary from issuing share decryption queries.
\end{itemize}
\subsection{Modelling \texttt{DTPKE}}
A \texttt{DTPKE}-scheme consist of $7$ algorithms: \texttt{DTPKE} $= ($\texttt{Setup}, \texttt{Join}, \texttt{Encrypt}, \texttt{ValidateCT}, \texttt{ShareDecrypt}, \texttt{ShareVerify}, \texttt{Combine}$)$. \vsp{4mm}
\hsp{5mm}\textbf{Setup$(\lambda)$:}\quad Takes security parameter $\lambda$. Outputs a set of system parameters: $\mathtt{params} = (MK,EK,DK,VK,CK)$. $MK$ is a Master Secret Key, $EK$ is the Encryption Key, $DK$ is the Decryption Key, $VK$ is the Validation Key and $CK$ is the Combination Key. $MK$ is kept secret by the issuer, but the other four are public parameters. \vsp{3mm}
@ -242,31 +211,39 @@ A \texttt{DTPKE}-scheme consist of $7$ algorithms: \texttt{DTPKE} $= ($\texttt{S
\hsp{5mm}\textbf{ShareVerify$(VK, \mathtt{ID}, uvk, C, \sigma)$:}\quad Takes the verification key $VK$, a user id \ID and his verification key $uvk$ plus a ciphertext $C$ and decryption share $\sigma$. Checks whether $\sigma$ is a valid decryption share with respect to $uvk$. \vsp{3mm}
\hsp{5mm}\textbf{Combine$(CK, S, t, C, T, \Sigma)$:}\quad Takes the combination key $CK$, a ciphertext $C$, some subset $T \subseteq S$ of $t$ authorised users and $\Sigma = (\sigma_1, \dots, \sigma_t)$ which is a list of $t$ decryption share. Outputs the plaintext $M$ or $\perp$.\vsp{3mm}
\subsection{A scheme and the security thereof}
\subsection{A scheme and the Security Thereof}
It should be noted that this scheme is very long and as such will be left out of the report, but it will be left within the appendix, completely as the original authors wrote it. We will instead list their security proof, which contains an error worth of noting. Their proof is a reduction to the \texttt{MSE-DDH} problem, as defined in Section \ref{sec:MSE-DDH}. That being said, their security proof states that the \texttt{DTPKE} scheme has \texttt{IND-NAA-NAC-CPA} security (Non-adaptive adversary, non-adaptive corruption, chosen-plaintext attack).
% TODO: Explain this scheme and their security proof which doesn't work. Yikes.
% TOOD: Add the DTPKE scheme to the appendix.
% TODO: Consider scrapping the entire DTPKE thing ..
% TODO: Fix all algorithms from BE schemes to be prefixed with B
\section{Broadcast Encryption}
\label{sec:BE}
Broadcast Encryption systems \cite{BEDef} in a nutshell, allows one sender to send to a subset $S \subseteq [n]$ of users with a single message. Traditionally, the user would have to encrypt this message once per user in a horribly inefficient manner. This is fixed, by defining the encryption key in such a way to allow for any user within the $S$ to decrypt the message, while not allowing anyone outside of $S$ to do so. It is preferable for this kind of schem to be \emph{public key based}, rather than symmetric. This allows any user to encrypt. It should allow \emph{stateless receivers} s.t. users won't need to keep any state such as updating a private key, and the system should be \emph{fully collusion resistant}, i.e. not allow decryption even if everybody outside of the set $S$ cooperated.
Broadcast Encryption systems \cite{BEDef} in a nutshell, allows one sender to send to a subset $S \subseteq [1,n]$ of users with a single message. Traditionally, the user would have to encrypt this message once per user in a horribly inefficient manner. This is fixed, by defining the encryption key in such a way to allow for any user within the $S$ to decrypt the message, while not allowing anyone outside of $S$ to do so. It is preferable for this kind of schem to be \emph{public key based}, rather than symmetric. This allows any user to encrypt. It should allow \emph{stateless receivers} s.t. users won't need to keep any state such as updating a private key, and the system should be \emph{fully collusion resistant}, i.e. not allow decryption even if everybody outside of the set $S$ cooperated.
In a sense, Broadcast Encryption Systems can be related to notion of \emph{Threshold Public Key Encryption Systems} (\texttt{TPKE}) if we define the authorized set of the \texttt{TPKE} system to be equal to $S$ and the threshold parameter $t$ is set to be $1$. This is only true however, for the specific value of $t=1$, thus, specialized systems can be designed for the purpose of being broadcast encryption systems. In this paper we will focus on a scheme due to Gentry and Waters \cite{GentryWaters}.
\subsection{Security Defintions}
\label{sec:BESec}
We define three levels of security, \emph{Static, Semi-Static} and \emph{Adaptive}. For the sake of simplicity, we will explain Semi-static and then emphasise the differences. Note that Semi-Static security is stronger than Static security, but weaker than Adaptive. The definition of Semi-Static is due to Gentry and Waters \cite{BESecDef, GentryWaters}. \vsp{4mm}
\hsp{5mm}\textbf{Initialisation:}\quad The adversary \adv{A} first commits to a \emph{potential} set of receivers which he wishes to attack, $\tilde{S}$, and outputs this. \vsp{3mm}
\hsp{5mm}\textbf{Setup:}\quad The challenger \CH runs the $\mathbf{BSetup}(n, \ell)$ algorithm of the BE scheme, obtaining a public key PK. \CH gives this PK to \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Key Extraction Phase:}\quad The adversary \adv{A} is allowed to issue private key queries for indices $i \in [1,n] \setminus \tilde{S}$, i.e. he is allowed to ask for the private keys of any user not in the set of potential receivers. \vsp{3mm}
\hsp{5mm}\textbf{Challenge:}\quad Once the adversary \adv{A} has extracted all desired keys, he specifies an attack set $S^* \subseteq \tilde{S}$, on which he wants to be challenged. The challenger \CH then sets $(\hdr^*, k_0) \leftarrow BEnc(S^*, PK)$ and $k_1 \in_R \mathcal{K}$. Then $b \in_R \{0,1\}$ and \CH sends $(\hdr^*, k_b)$ to \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Guess:}\quad Adversary \adv{A} outputs a guess $b' \in \{0,1\}$ and he wins if $b' = b$. \\ \\
\noindent
The advantage of \adv{A} is then defined as: $$Adv_{SS,BE,n,\ell}(\lambda) = |Pr(b'=b) - \frac{1}{2}|$$
Static security is the least strongest type and it requires the adversary to commit to the set of receivers of which he wants to be challenged on, in the initialisation phase, rather than the potential set the Semi-Static adversary has to commit to. Adaptive security is arguably the most desired and correct type, as it enforces nothing in regards to the attack set $S^*$. The adversary is allowed to see the public key PK and ask for several private keys, before choosing which set he wishes to be challenged on. We note here, that due to Gentry and Waters \cite{GentryWaters}, we can transform a Semi-Statically secure BE scheme to an Adaptively secure BE scheme.
% TODO, maybe new page this
\subsection{Their construction}
\label{sec:GentryWatersConst}
Let $GroupGen(\lambda,n)$ be an algorithm which generates a group \G and \Gp{_T} of prime order $p = poly(\lambda, n) > n$ with a bilinear map $e : \mathbb{G} \times \mathbb{G} \rightarrow \mathbb{G}_T$, based on a security parameter $\lambda$. \vsp{5mm}
\-\hspace{5mm}\textbf{Setup$(\lambda,n)$:}\quad Run $(\mathbb{G}, \mathbb{G}_T, e) \xleftarrow{R} GroupGen(\lambda, n)$. Set $\alpha \in_R \Z_p$ and $g,h_1,\dots,h_n \in_R \mathbb{G}^{n+1}$. Finally, set $PK = (\mathbb{G}, \mathbb{G}_T, e), g, e(g,g)^\alpha, h_1, \dots, h_n$. The secret key is $SK = g^\alpha$. The result is the pair $(PK, SK)$. \vspace{3mm} \\
\-\hspace{5mm}\textbf{KeyGen$(i, SK)$:}\quad Set $r_i \in_R \Z_p$ and output; $$d_i \leftarrow (d_{i,0},\dots,d_{i,n}) \quad \text{ where } \quad d_{i,0} = g^{-r_i}, \quad d_{i,i} = g^\alpha h^{r_i}_i, \quad d_{i,j \text{ for } i\neq j} h^{r_i}_j$$ \vspace{3mm} \\
\-\hspace{5mm}\textbf{Encrypt$(S, PK)$:}\quad Set $t \in_R \Z_p$ and $$Hdr = (C_1,C_2), \quad \text{ where }\quad C_1 = g^t, \quad C_2 = (\prod_{i \in S}h_i)^t $$ Finally, set $K = e(g,g)^{t\cdot \alpha}$. Output $(K, Hdr)$. \vspace{3mm} \\
\-\hspace{5mm}\textbf{Decrypt}$(S,i,d_i,\text{Hdr}, PK)$\textbf{:}\quad Check if $i \in S$, if so; let $d_i = (d_{i,0},\dots,d_{i,n})$, Hdr$=(C_1,C_2)$, output $$k =e(d_{i,i} \cdot \prod_{j \in S \setminus \{i\}} d_{i,j}, C_1) \cdot e(d_{i,0}, C_2)$$ \vsp{3mm}
\-\hspace{5mm}\textbf{BSetup$(\lambda,n)$:}\quad Run $(\mathbb{G}, \mathbb{G}_T, e) \xleftarrow{R} GroupGen(\lambda, n)$. Set $\alpha \in_R \Z_p$ and $g,h_1,\dots,h_n \in_R \mathbb{G}^{n+1}$. Finally, set $PK = (\mathbb{G}, \mathbb{G}_T, e), g, e(g,g)^\alpha, h_1, \dots, h_n$. The secret key is $SK = g^\alpha$. The result is the pair $(PK, SK)$. \vspace{3mm} \\
\-\hspace{5mm}\textbf{BKeyGen$(i, SK)$:}\quad Set $r_i \in_R \Z_p$ and output; $$d_i \leftarrow (d_{i,0},\dots,d_{i,n}) \quad \text{ where } \quad d_{i,0} = g^{-r_i}, \quad d_{i,i} = g^\alpha h^{r_i}_i, \quad d_{i,j \text{ for } i\neq j} h^{r_i}_j$$ \vspace{3mm} \\
\-\hspace{5mm}\textbf{BEncrypt$(S, PK)$:}\quad Set $t \in_R \Z_p$ and $$Hdr = (C_1,C_2), \quad \text{ where }\quad C_1 = g^t, \quad C_2 = (\prod_{i \in S}h_i)^t $$ Finally, set $K = e(g,g)^{t\cdot \alpha}$. Output $(\hdr, K)$. \vspace{3mm} \\
\-\hspace{5mm}\textbf{BDecrypt}$(S,i,d_i,\text{Hdr}, PK)$\textbf{:}\quad Check if $i \in S$, if so; let $d_i = (d_{i,0},\dots,d_{i,n})$, Hdr$=(C_1,C_2)$, output $$k =e(d_{i,i} \cdot \prod_{j \in S \setminus \{i\}} d_{i,j}, C_1) \cdot e(d_{i,0}, C_2)$$ \vsp{3mm}
\hsp{5mm} \textbf{Correctness:}\quad Correctness is given by;
\begin{align*}
K &= e(d_{i,i} \cdot \prod_{j \in S \setminus \{i\}} d_{i,j}, C_1) \cdot e(d_{i,0}, C_2) \\
@ -275,12 +252,12 @@ Let $GroupGen(\lambda,n)$ be an algorithm which generates a group \G and \Gp{_T}
&= e(g,g)^{t \cdot \alpha}
\end{align*}
\subsection{Proof of security}
\subsection{Proof of Security}
The proof is a reduction from their construction to the \emph{BDHE}-problem. The scheme is proven secure in the semi-static model. We note that the proof in the original paper does not hold, likely due to a typo, but we'll emphasize the fix.
We wish to build an algorithm \adv{B}, which will use an adversary \adv{A} of the system described in \ref{GentryWatersConst}, to break the \emph{BDHE} problem. \vsp{4mm}
We wish to build an algorithm \adv{B}, which will use an adversary \adv{A} of the system described in \ref{sec:GentryWatersConst}, to break the \emph{BDHE} problem. \vsp{4mm}
\hsp{5mm} \adv{B} receives a problem instance which contains $g^s, Z, \{g^{a^i}: i \in [0,m] \cup [m+2, 2m]\}$. \vsp{3mm}
\hsp{5mm} \textbf{Init:}\quad \adv{A} commits to a set $\tilde{S} \subseteq[n]$. \vsp{3mm}
\hsp{5mm} \textbf{Init:}\quad \adv{A} commits to a set $\tilde{S} \subseteq [1,n]$. \vsp{3mm}
\hsp{5mm} \textbf{Setup:}\quad \adv{B} generates $y_0,\dots,y_n \in_R \Z_p$. \adv{B} sets:
$$
h_i =
@ -290,7 +267,7 @@ h_i =
\end{cases}
$$
\adv{B} then sets $\alpha = y_0 \cdot a^{n+1}$. $PK$ is then defined as the scheme dictates where the only oddity is $e(g,g)^\alpha$, which can be computed as $e(g^a,g^{a^{n}})^{y_0}$ due to the definition of $\alpha$. $PK$ is sent to \adv{A}. \vsp{3mm}
\hsp{5mm} \textbf{Private Key Queries:}\quad \adv{A} is allowed to query private keys for indices $i \in [n] \setminus \tilde{S}$. Intuitively, you should not be allowed to query the indices of which you wish to be challenged. To answer a query, \adv{B} will generate a $z_i \in_R \Z_p$ and set $r_i = z_i - y_0 \cdot a^{n+1-i}$. \adv{B} then outputs
\hsp{5mm} \textbf{Private Key Queries:}\quad \adv{A} is allowed to query private keys for indices $i \in [1,n] \setminus \tilde{S}$. Intuitively, you should not be allowed to query the indices of which you wish to be challenged. To answer a query, \adv{B} will generate a $z_i \in_R \Z_p$ and set $r_i = z_i - y_0 \cdot a^{n+1-i}$. \adv{B} then outputs
$$ d_i = (d_{i,0},\dots,d_{i,n})\quad \text{ where } \quad d_{i,0} = g^{-r_i},\quad d_{i,i} = g^\alpha h^{r_i}_i, \quad d_{i,j \text{ where } i\neq j}h^{r_i}_j $$
\hsp{5mm} \textbf{Challenge:}\quad \adv{A} will then choose a subset $S^* \subseteq \tilde{S}$ to which \adv{B} sets:
$$\text{Hdr} = (C_1, C_2) \quad \text{ where } C_1 = g^s, \quad C_2 = (\prod_{j \in S^*}h_j)^s$$
@ -301,39 +278,45 @@ Note that $g^s$ comes from the original challenge and due to the construction of
\noindent
This construction we'll be the foundation of the \emph{Ad-Hoc Broadcast Encryption} which we will explore shortly and likewise will this proof be brought up when exploring possible proofs of security of said \emph{Ad-Hoc Broadcast Encryption} scheme.
% TODO: Fix those [1,n]. I want [n] everywhere, instead. Also mention that [n] is shorthand for it
\section{Ad-Hoc Broadcast Encryption}
The scheme presented in \ref{sec:BE} requires a \emph{trusted dealer} to perform its \emph{setup} and \emph{keygen}. It goes for a lot of \emph{Broadcast Encryption} systems, that they require a trusted entity to generate and distribute secret keys to all users. This tends to make the system very rigid and not applicable to ad hoc networks or peer-to-peer networks. A \emph{potential} solution to this is presented by \cite{AHBE}. They present a solution to the fully dynamic case of broadcast encryption. This has significant ties to the \emph{Dynamic Threshold Encryption} scheme in which users could freely join and leave, however they did not quite get rid of the trusted dealer. This is accomplished here. Keep in mind that broadcast encryption is simply threshold encryption for the threshold of $t=1$.
In an Ad-Hoc Broadcast Encryption (\textbf{AHBE}) scheme all users possess a public key and by only seeing the public keys of users, a sender can securely broadcast to \emph{any} subset of the users. Only users within the picked subset can decrypt the message. To accomplish this, the authors create a generic transformation from any \emph{key homomorphic} BE scheme to an \emph{AHBE} scheme. It turns out that the scheme of Gentry and Waters presented in \ref{sec:BE} is just this and the transformation will be performed on this.
% TODO: All shorthand things such as AHBE and KEM should be in texttt rather than textbf
% TODO: All recipient sets should be S, not R.
% TODO: It's always (Hdr, K), not (K, Hdr)
In an Ad-Hoc Broadcast Encryption (\texttt{AHBE}) scheme all users possess a public key and by only seeing the public keys of users, a sender can securely broadcast to \emph{any} subset of the users. Only users within the picked subset can decrypt the message. To accomplish this, the authors create a generic transformation from any \emph{key homomorphic} BE scheme to an \texttt{AHBE} scheme. It turns out that the scheme of Gentry and Waters presented in \ref{sec:BE} is just this and the transformation will be performed on this.
\subsection{Modelling AHBE systems}
As an AHBE system eliminate the trusted dealer, the \emph{setup} and \emph{keygen} step morph together, as there is no global \emph{setup} step required, but merely something each user should locally run. As all other schemes defined in this paper, this too is defined to be a \emph{Key Encapsulation Method} (\texttt{KEM}). \vsp{4mm}
\hsp{5mm}\textbf{KeyGen$(i,n,N)$:}\quad Let $N$ be defined as the number of potential receivers of the scheme and let $n \leq N$ be defined as the maximum number of receivers of an ad-hoc broadcast recipient group. The \emph{KeyGen} (this) algorithm is run by each user $i \in [N]$ to create her own public/secret key pair. A user takes $n, N$ as well as her own index $i \in [N]$. It's not mentioned how the user receives this index in practice, without simply having a central authority giving them, but one could imagine the users being aware of how many recipients there are in total and simply increment this to get their own index, if one disregards the issues of people joining the peer-to-peer network at the same time. The \emph{KeyGen} algorithm outputs the users public/secret key pair $(pk_i,sk_i)$. We define a shorthand for several users key pairs; $\{(pk_i, sk_i) | i \in S \subseteq [N] $ as $(pk_i,sk_i)_{S}$ and likewise only for the public keys; $(pk_i)_{S}$. All of this depends on a security parameter $\lambda$, which is implicitly given to the algorithm. \vsp{3mm}
\hsp{5mm}\textbf{AHBEnc$(\mathbb{R}, (pk_i)_{S})$:}\quad This is run by any sender who may or may not be in $[N]$, as long as the sender knows the public keys of the receivers. It takes the recipient set $S \subseteq [N]$ and the public keys for $i \in S$; $(pk_i)_{S}$. Given that $|S| \leq n$, the algorithm returns a pair $(\text{Hdr}, K)$ where Hdr is the header, the encapsulated key, and $K$ is the message encryption key. \vsp{3mm}
\hsp{5mm}\textbf{AHBDec$(\mathbb{R}, j, sk_j,$}$ \text{Hdr}, (pk_i)_{S})$\textbf{:}\quad This allows each recipient $i \in S$ to decrypt the message encryption key which is hidden in the header. If $|S| \leq n, j \in S$, then the algorithm returns the message encryption key $k$.
\subsection{Security Definition of Adaptive Security in AHBE}
An \emph{Ad-Hoc Broadcast Encryption} system is defined to be \textbf{correct} if any user within the receiver set $S$ can decrypt a valid header. In an adaptively secure ad-hoc broadcast encryption system, the adversary is allowed access to all the public keys of the receivers and to ask for several secret keys before choosing the set of indices that the adversary wishes to attack.
Both the Challenger and an adversary \adv{A} are given the security parameter $\lambda$. \vsp{3mm}
\hsp{5mm}\textbf{Setup:}\quad The Challenger runs $KeyGen(i, n, N)$ to obtain the users' public key. These public keys and the public parameters are given to the adversary \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Corruption:}\quad Adversary \adv{A} is allowed to adaptively issue private key queries for \emph{some} indices $i \in [1,N]$. \vsp{3mm}
\hsp{5mm}\textbf{Challenge:}\quad \adv{A} specifies some challenge set $S^* \subseteq [1,N]$ s.t. \adv{A} has corrupted none of the users $i$ within $S^*$. The challenger sets $(\text{Hdr}^*, k_0) \leftarrow \mathtt{AHBEnc}(S^*, (pk_i)_{S^*})$ and $k_1 \in_R \mathbb{K}$. The challenger sets $b \in_R \{0,1\}$. It gives $(\text{Hdr}^*, k_b)$ to the adversary \adv{A}. \vsp{3mm}
\hsp{5mm}\textbf{Guess:}\quad The adversary \adv{A} will output a bit $b' \in \{0,1\}$ as an attempt to guess the bit $b$. \adv{A} wins if $b' = b$. \\ \\
\noindent
The advantage of \adv{A} is as expected; $Adv^{\texttt{AHBE}}_{\mathcal{A},n,N}(1^\lambda) = |Pr(b = b') - \frac{1}{2}|$.
\subsection{Modelling \AHBE Systems}
As an \texttt{AHBE} system eliminate the trusted dealer, the \emph{setup} and \emph{keygen} step morph together, as there is no global \emph{setup} step required, but merely something each user should locally run. As all other schemes defined in this paper, this too is defined to be a \emph{Key Encapsulation Method} (\texttt{KEM}). \vsp{4mm}
\hsp{5mm}\textbf{KeyGen$(i,n,N)$:}\quad Let $N$ be defined as the number of potential receivers of the scheme and let $n \leq N$ be defined as the maximum number of receivers of an ad-hoc broadcast recipient group. The \emph{KeyGen} (this) algorithm is run by each user $i \in [1,N]$ to create her own public/secret key pair. A user takes $n, N$ as well as her own index $i \in [1,N]$. It's not mentioned how the user receives this index in practice, without simply having a central authority giving them, but one could imagine the users being aware of how many recipients there are in total and simply increment this to get their own index, if one disregards the issues of people joining the peer-to-peer network at the same time. The \emph{KeyGen} algorithm outputs the users public/secret key pair $(pk_i,sk_i)$. We define a shorthand for several users key pairs; $\{(pk_i, sk_i) | i \in S \subseteq [1,N] $ as $(pk_i,sk_i)_{S}$ and likewise only for the public keys; $(pk_i)_{S}$. All of this depends on a security parameter $\lambda$, which is implicitly given to the algorithm. \vsp{3mm}
\hsp{5mm}\textbf{AHBEnc$(\mathbb{S}, (pk_i)_{S})$:}\quad This is run by any sender who may or may not be in $[1,N]$, as long as the sender knows the public keys of the receivers. It takes the recipient set $S \subseteq [1,N]$ and the public keys for $i \in S$; $(pk_i)_{S}$. Given that $|S| \leq n$, the algorithm returns a pair $(\text{Hdr}, K)$ where Hdr is the header, the encapsulated key, and $K$ is the message encryption key. \vsp{3mm}
\hsp{5mm}\textbf{AHBDec$(\mathbb{S}, j, sk_j,$}$ \text{Hdr}, (pk_i)_{S})$\textbf{:}\quad This allows each recipient $i \in S$ to decrypt the message encryption key which is hidden in the header. If $|S| \leq n, j \in S$, then the algorithm returns the message encryption key $k$.
\subsection{Key Homomorphism}
As mentioned, the authors present a transformation for any key homomorphic BE scheme. As such, we'll quickly define this.
% Reference the AHBE article
\begin{definition}[Key Homomorphism]
\normalfont Let $\oplus : \Gamma \times \Gamma \rightarrow \Gamma$, $\odot : \Omega \times \Omega \rightarrow \Omega$ and $\ocircle : \mathbb{K} \times \mathbb{K} \rightarrow \mathbb{K}$ be efficient operations in the public key space $\Gamma$, the decryption key space $\Omega$ and the message encryption key space $\mathbb{K}$, respectively. A BE scheme is then said to be homomorpic if the following conditions hold for all $S \subseteq [N]$ for $|S| \leq n$ and all $i \in S$:
\normalfont Let $\oplus : \Gamma \times \Gamma \rightarrow \Gamma$, $\odot : \Omega \times \Omega \rightarrow \Omega$ and $\ocircle : \mathbb{K} \times \mathbb{K} \rightarrow \mathbb{K}$ be efficient operations in the public key space $\Gamma$, the decryption key space $\Omega$ and the message encryption key space $\mathbb{K}$, respectively. A BE scheme is then said to be homomorpic if the following conditions hold for all $S \subseteq [1,N]$ for $|S| \leq n$ and all $i \in S$:
\begin{enumerate}
\item If $(PK_1, SK_1) \leftarrow $\texttt{BSetup}$(n,N)$, where BSetup is the setup algorithm for the BE scheme, \vsp{2mm}
$(PK_2, SK_2) \leftarrow $\texttt{BSetup}$(n,N)$, \vsp{2mm}
$(d_1(i) \la $ \texttt{BKeyGen}$(i, SK_1)$, \vsp{2mm}
$(d_2(i) \la $ \texttt{BKeyGen}$(i, SK_2)$, \vsp{2mm}
$(\text{Hdr}, k) \la $\texttt{BEnc}$(\mathbb{R}, PK_1 \oplus PK_2)$, \vsp{2mm}
then \texttt{BDec}$(\mathbb{R}, i, d_1(i) \odot d_2(i), \text{Hdr}, PK_1 \oplus PK_2) = k$.
\item \text{If Hdr is a header of} $k_1$ under $(\mathbb{R}, PK_1)$ and also a header of some $k_2$ under $(\mathbb{R}, PK_2)$, then it also a header of $k_1 \ocircle k_2$ under $(\mathbb{R}, PK_1 \oplus PK_2)$.
$(\text{Hdr}, k) \la $\texttt{BEnc}$(\mathbb{S}, PK_1 \oplus PK_2)$, \vsp{2mm}
then \texttt{BDec}$(\mathbb{S}, i, d_1(i) \odot d_2(i), \text{Hdr}, PK_1 \oplus PK_2) = k$.
\item \text{If Hdr is a header of} $k_1$ under $(\mathbb{S}, PK_1)$ and also a header of some $k_2$ under $(\mathbb{S}, PK_2)$, then it also a header of $k_1 \ocircle k_2$ under $(\mathbb{S}, PK_1 \oplus PK_2)$.
\end{enumerate}
\end{definition}
@ -356,7 +339,7 @@ The main idea behind their proposed transformation is to use the homomorphic pro
\label{fig:KHBEMatrix}
\end{figure}
Within Figure \ref{fig:KHBEMatrix}, the $PK_i$ is the public key of the BE instance specifically generated by user $i$. A decryption key $d_i(j)$ is generated by user $i$ for user $j$, in the underlying scheme. Each row is then published ($PK_i$) by the corresponding member of the group of broadcast receivers, $U_i$, but their own specific decryption key , $d_i(i)$ is not published. The key homomorphism then allow for an arbitrary receiver set $S$, as all of the public keys for $i \in S$ can be easily aggregated; $\oplus_{i \in S} PK_i = PK_{AHBE}$ into a new public key of a new instance of the underlying BE scheme, such that the $j$'th column $\{d_i(j)\}^n_{i=1}$ can be aggregated into a decryption key for this instance; $d(j) = \odot_{i \in S}d_i(j)$, i.e. a decryption key for the public key $PK_{AHBE}$. Since the diagonal of the matrix is not published, only user $\U_i$ knows $d_i(i)$ and is thus the only one who can compute $d(i)$. This results in a system where a sender can choose any receiver set $S \subseteq[N]$ and broadcast to this set under the key $PK_{AHBE} = \oplus_{i \in S} PK_i$ and only users $\U_i$ for $i \in S$ can decrypt using their decryption key $d(i)$. As $PK_{AHBE}$ functions like a public key for a regular BE scheme where all users have decryption keys, if $j \not\in S$, user $\U_j$ won't be able use her decryption key $d(j) = \odot_{i \in S}d_i(j)$, as only users in the intended recipient set can decrypt in the new scheme. Note that it is a requirement of the scheme, that all $PK_i$ should be computationally independent and \emph{different}. Intuiviely, if they are not different such that $d_1(1) = d_2(1)$, it's trivial to compute the decryption key of user $\U_1$, by simply looking at the data published by $\U_2$.
Within Figure \ref{fig:KHBEMatrix}, the $PK_i$ is the public key of the BE instance specifically generated by user $i$. A decryption key $d_i(j)$ is generated by user $i$ for user $j$, in the underlying scheme. Each row is then published ($PK_i$) by the corresponding member of the group of broadcast receivers, $U_i$, but their own specific decryption key , $d_i(i)$ is not published. The key homomorphism then allow for an arbitrary receiver set $S$, as all of the public keys for $i \in S$ can be easily aggregated; $\oplus_{i \in S} PK_i = PK_{\mathtt{AHBE}}$ into a new public key of a new instance of the underlying BE scheme, such that the $j$'th column $\{d_i(j)\}^n_{i=1}$ can be aggregated into a decryption key for this instance; $d(j) = \odot_{i \in S}d_i(j)$, i.e. a decryption key for the public key $PK_{\mathtt{AHBE}}$. Since the diagonal of the matrix is not published, only user $\U_i$ knows $d_i(i)$ and is thus the only one who can compute $d(i)$. This results in a system where a sender can choose any receiver set $S \subseteq[1,N]$ and broadcast to this set under the key $PK_{\mathtt{AHBE}} = \oplus_{i \in S} PK_i$ and only users $\U_i$ for $i \in S$ can decrypt using their decryption key $d(i)$. As $PK_{\mathtt{AHBE}}$ functions like a public key for a regular BE scheme where all users have decryption keys, if $j \not\in S$, user $\U_j$ won't be able use her decryption key $d(j) = \odot_{i \in S}d_i(j)$, as only users in the intended recipient set can decrypt in the new scheme. Note that it is a requirement of the scheme, that all $PK_i$ should be computationally independent and \emph{different}. Intuiviely, if they are not different such that $d_1(1) = d_2(1)$, it's trivial to compute the decryption key of user $\U_1$, by simply looking at the data published by $\U_2$.
% TODO: Be very consistent in what you call the public keys of the AHBE scheme!
@ -365,26 +348,26 @@ Within Figure \ref{fig:KHBEMatrix}, the $PK_i$ is the public key of the BE insta
As discussed, an AHBE scheme consist of three algorithms; \texttt{KeyGen, AHBEnc, AHBDec}. \vsp{4mm}
\hsp{5mm}\textbf{KeyGen:}\quad Let the potential receivers be a set $\{1,\dots,N\}$. Let $n \leq N$ be the maximum number of recipients within a single broadcast. For simplicity, we assume that $n = N$. Generate an instance $\pi$ of a KHBE scheme and let this be a system parameter. The KeyGen algorithm then does the following:
\begin{itemize}
\item For receiver $i \in [n]$, invoke the setup algorithm of the BE Scheme used by the underlying KHBE scheme; \texttt{BSetup}, to generate a public/private key pair $(PK_i, SK_i)$ for the KHBE scheme.
\item For receiver $i \in [1,n]$, invoke the setup algorithm of the BE Scheme used by the underlying KHBE scheme; \texttt{BSetup}, to generate a public/private key pair $(PK_i, SK_i)$ for the KHBE scheme.
\item Receiver $i$ runs \texttt{BKeyGen} and obtains $d_i(j) \leftarrow \text{BKeyGen}(j,SK_i)$ for $j = 1,\dots,n$. The public key of the specific receiver $i$ in the AHBE scheme is then:
$$PK_{AHBE} = \{d_i(j) | 1 \leq i \neq j \leq n\} \cup \{PK_i\}$$ Where $PK_i$ came from the BSetup call.
\item The private key of receiver $i$ is then set to be the \emph{unpublished} $d_i(i)$.
\end{itemize} \vspace{3mm}
\hsp{5mm}\textbf{AHBEnc:}\quad Computes the header and key for a receiver set $S$ in the following way:
\begin{itemize}
\item Pick receiver set $S \subseteq [n]$
\item Pick receiver set $S \subseteq [1,n]$
\item Compute the public key of the broadcast:
$$PK_{AHBE} = \oplus_{i \in S} PK_i$$
$$PK_{\mathtt{AHBE}} = \oplus_{i \in S} PK_i$$
\item Invoke the underlying KHBE encryption algorithm BEnc$(\cdot)$ in order to compute the header of the key:
$$(Hdr, k) \la BEnc(S, PK_{AHBE})$$
$$(Hdr, k) \la BEnc(S, PK_{\mathtt{AHBE}})$$
and send $(S, Hdr)$ to the receiver set.
\end{itemize} \vspace{3mm}
\hsp{5mm}\textbf{AHBDec:}\quad Due to the underlying KHBE scheme, the receiver $i \in S$ can compute a decryption key for the AHBE public key $PK_{AHBE}$ by computing:
\hsp{5mm}\textbf{AHBDec:}\quad Due to the underlying KHBE scheme, the receiver $i \in S$ can compute a decryption key for the \texttt{AHBE} public key $PK_{AHBE}$ by computing:
$$d(i) = d_i(i) \odot\{\odot_{j \in S}^{j \neq i} d_j(i)\} = \odot_{j \in S} d_j(i)$$
As only user $\U_i$ knows $d_i(i)$ only she can compute $d(i)$. Due to the homomorphism of the KHBE scheme, $d(i)$ is a valid decryption key for the public key $PK_{AHBE}$, as long as $i \in S$. To perform this decryption, each user $\U_i$ for $i \in S$, invokes the KHBE decryption algorithm BDec$(\cdot)$;
$$k = BDec(S, i, d(i), Hdr, K) $$
\subsection{Proof of security}
\subsection{Proof of Security}
The security of the AHBE scheme is proven by a reduction to the underlying KHBE scheme. As such, if the underlying KHBE scheme is presumed to be secure, so should the AHBE scheme. Furthermore, the AHBE scheme has semi-static security, if the KHBE scheme has adaptive security.
\begin{theorem}
@ -392,11 +375,11 @@ The security of the AHBE scheme is proven by a reduction to the underlying KHBE
\end{theorem}
\begin{proof}
We wish to construct an adversary \adv{B} who can break the security of the underlying KHBE scheme, by utilising the adversary \adv{A} who is assumed to be able to break the security of the AHBE scheme. In the initialisation phase, \adv{A} will commit to a set $\tilde{S} \subseteq [n]$. Keep in mind that \adv{A} is a semi-static adversary, so he has to commit to a set of which he wishes to attack a subset of.
We wish to construct an adversary \adv{B} who can break the security of the underlying KHBE scheme, by utilising the adversary \adv{A} who is assumed to be able to break the security of the AHBE scheme. In the initialisation phase, \adv{A} will commit to a set $\tilde{S} \subseteq [1,n]$. Keep in mind that \adv{A} is a semi-static adversary, so he has to commit to a set of which he wishes to attack a subset of.
In the setup phase, \adv{B} picks a user at randomly from within $\tilde{S}$; $i* \in_R \tilde{S}$. \adv{B} then sets up the \emph{adaptive} game with the KHBE challenger \CH. \CH returns the system parameters and the KHBE public key, denoted by $PK_{i^*}$. \adv{B} then queries for the secret key $d_{i^*}(j)$ for each index $j \not\in \tilde{S}$.
For $i \in [n] \setminus \{i^*\}$, \adv{B} can generate the KHBE public/private key pair $(PK_i, SK_i)$, as it's not the target of \adv{B}, as it is \emph{adaptive}. This allows \adv{B} to generate the corresponding decryption keys $d_i(j)$ for each index $j \in \{1,n\} \setminus \{i\}$. Then, for $i = 1,\dots,n$, \adv{B} generate $K_i = \{d_i(j) | 1 \leq i \neq j \leq n\} \cup \{PK_i\}$, such that all users' public keys can be provided to the adversary \adv{A}, as a part of the setup phase for the AHBE scheme.
For $i \in [1,n] \setminus \{i^*\}$, \adv{B} can generate the KHBE public/private key pair $(PK_i, SK_i)$, as it's not the target of \adv{B}, as it is \emph{adaptive}. This allows \adv{B} to generate the corresponding decryption keys $d_i(j)$ for each index $j \in \{1,n\} \setminus \{i\}$. Then, for $i = 1,\dots,n$, \adv{B} generate $K_i = \{d_i(j) | 1 \leq i \neq j \leq n\} \cup \{PK_i\}$, such that all users' public keys can be provided to the adversary \adv{A}, as a part of the setup phase for the AHBE scheme.
In the corruption phase, \adv{A} may corrupt any user $i \in \{1,\dots,n\} \setminus \tilde{S}$. These users are all however fabricated by the \adv{B}, so \adv{B} has the public/private key pairs for any user outside of $\tilde{S}$, thus it is no issue to yield the decryption key $d_i(i)$ and answer the query correctly.
@ -407,7 +390,7 @@ The security of the AHBE scheme is proven by a reduction to the underlying KHBE
% TODO: Fix (?) proof
\subsection{Issues with the proof}
\subsection{Issues with the Proof}
The primary issue of this proof arises when the following question is raised: "How can B get the keys $d_{i^*}(j)$ for $j \in \tilde{S}$". These decryption keys will have to be a part of the public keys that \adv{B} has to present to \adv{A} in the beginning of the setup of the AHBE scheme? The only key which is supposed to be private in the AHBE scheme is $d_{i^*}(i^*)$, which is an issue, as \adv{B} eventually wants to attack the set $S^*$, which contains several of the users of which he will have to corrupt to get the missing keys. Specifically:
\begin{figure}
@ -429,24 +412,26 @@ If we consider the user $i^*$ to be $\U_1$ and $\tilde{S}$ to simply be all $n$
To remedy this, we considered primarily one thing; Adding another homomorphic property such that we can safely use \emph{only} $\{i^*\}$ as the recipient set we sent to \CH.
\begin{theorem}
If \texttt{Hdr} is a header for $k_{i^*}$ under $(i^*, PK_{i^*})$, then it is also a header of $k_{i^*}$ under $(R^*, PK_i)$
\end{theorem} % TODO: Ask Sophia about this on friday
If $\hdr^*$ is a header for $k_{i^*}$ under $(i^*, PK_{i^*})$, then it can be transformed into a header under $(S^*, PK)$ where $i^* \in S^*$ where the underlying key is allowed to change.
\end{theorem}
This would allow \adv{B} to challenge for a header for a receiver set only containing $i^*$, which means he does not have to worry of querying for the decryption keys of the other receivers within $S^*$. When \adv{B} receives the challenge header from the challenger, this can be transformed into a proper header for the adversary \adv{A}.
This transformation would have to be both randomised and OTP, as otherwise if we sent a header encrypting some key, it should not be allowed to transform this header into another one, then decrypting it for the key and then recovering the old key from this. This goal seems quite difficult to achieve and we argue that this breaks the underlying security.
This transformation would have to be both randomised and OTP, as otherwise if we sent a header encrypting some key, it should not be allowed to transform this header into another one, then decrypting it for the key and then recovering the old key from this. This is however not quite strong enough. There are two potential augments. Either the transformation should keep the underlying key, in which case an adversary could add himself to the set of receivers, perform the homomorphic operation on the header and then decrypt to get the original underlying key. This is obviously not safe. On the other hand, if the operation changes the underlying key, then we run into another issue. If the key changes, this homomorphic transformation can instead be used as a distinguisher.
\\ TODO: FIX! \\
Something something game where the algorithm can use this adversary to transform the header and thus the key into something else which he can then use to distinguish if the original underlying key was random or was constructed properly regarding the rest of the receiver set.
\subsection{An AHBE Implementation}
To end up with a Semi-statically secure AHBE scheme, we first need to produce an adaptively secure BE scheme which is key homomorphic. To this end, we use the scheme defined in \ref{sec:BE} coupled with the generic transformation from Semi-static to Adaptive by Gentry and Waters \cite{GentryWaters}. Note that $g, h_{i,s} \text{ for } i \in [1,n], s \in \{0,1\}$ be independent generators of a group $\mathbb{G}$ of prime order $p$, with a bilinear map $e : \Gm \times Gm \ra \Gm_{T}$. \vsp{5mm}
\-\hspace{5mm}\textbf{BSetup$(\lambda,n)$:}\quad Let $\alpha \in_R \mathbb{Z}_p$ and compute $g^\alpha, e(g,g)^\alpha$. The BE public key PK is then; $PK = e(g,g)^\alpha$ and the private key is $SK = g^\alpha$. \vspace{3mm} \\
\-\hspace{5mm}\textbf{BKeyGen$(i, SK)$:}\quad Set $r_i \in_R \mathbb{Z}_p$, $s_i \in_R \{0,1\}$. Output decryption key for user $i$; $d_i = (d_{i,0},\dots,d_{i,n})$:
$$d_i \leftarrow (d_{i,0},\dots,d_{i,n}) \quad \text{ where } \quad d_{i,0} = g^{-r_i}, \quad d_{i,i} = g^\alpha h^{r_i}_{i,s_i}, \quad d_{i,j \text{ for } i\neq j} h^{r_i}_{j,s_i}$$ \vspace{3mm} \\
\-\hspace{5mm}\textbf{BEnc$(S, PK)$:}\quad Set $t \in_R \Z_p$ and $$Hdr = (C_1,C_2, C_3), \quad \text{ where }\quad C_1 = g^t, \quad C_2 = (\prod_{i \in S}h_{i,0})^t,\quad C_3 = (\prod_{i \in S}h_{i,1})^t $$ Finally, set $K = e(g,g)^{t\cdot \alpha}$. Output $(K, Hdr)$. Send $(S, \hdr)$ to the receivers. \vspace{3mm} \\
\-\hspace{5mm}\textbf{BEnc$(S, PK)$:}\quad Set $t \in_R \Z_p$ and $$Hdr = (C_1,C_2, C_3), \quad \text{ where }\quad C_1 = g^t, \quad C_2 = (\prod_{i \in S}h_{i,0})^t,\quad C_3 = (\prod_{i \in S}h_{i,1})^t $$ Finally, set $K = e(g,g)^{t\cdot \alpha}$. Output $(\hdr, K)$. Send $(S, \hdr)$ to the receivers. \vspace{3mm} \\
\-\hspace{5mm}\textbf{BDec}$(S,i,d_i,\text{Hdr}, PK)$\textbf{:}\quad Check if $i \in S$, if so; let $d_i = (d_{i,0},\dots,d_{i,n})$, Hdr$=(C_1,C_2,C_3)$, output $$k =e(d_{i,i} \cdot \prod_{j \in S \setminus \{i\}} d_{i,j}, C_1) \cdot e(d_{i,0}, C_2)$$ \vsp{3mm}
The correctness is the exact same as defined in Section \ref{sec:GentryWatersConst}.
As we desire a key homomorphic scheme, we define the aggregations like so; $PK_1 \oplus PK_2 = PK_1PK_2$, $d_{1_i} \odot d_{2_i} = (d_{1_{i,0}}, d_{2_{i,0}}, \dots, d_{1_{i,n}}, d_{2_{i,n}})$ and $k_1 \ocircle k_2 = k_1k_2$. Finally we instantiate the AHBE scheme: \vsp{4mm}
\hsp{5mm}\textbf{KeyGen:}\quad Let the potential receivers be a set $\{1,\dots,N\}$. Let $n \leq N$ be the maximum number of recipients within a single broadcast. For simplicity, we assume that $n = N$. Generate an instance $\pi$ of a KHBE scheme and let this be a system parameter. The KeyGen algorithm then does the following:
\begin{itemize}
\item For receiver $i \in [n]$, invoke the \texttt{BSetup}, to generate a public/private key pair $(PK_i, SK_i) = e(g,g)^{\alpha_i}, g^{\alpha_i}$ for the KHBE scheme..
\item For receiver $i \in [1,n]$, invoke the \texttt{BSetup}, to generate a public/private key pair $(PK_i, SK_i) = e(g,g)^{\alpha_i}, g^{\alpha_i}$ for the KHBE scheme..
\item Receiver $i$ runs \texttt{BKeyGen} and obtains $d_i(j) \leftarrow \text{BKeyGen}(j,SK_i)$ for $i,l,j = 1,\dots,n$ where $d_i(j) = (d_{i,0,j}, \dots, d_{i,n,j})$ such that: \\
$$d_{i,0,j} = g^{-r_{i,j}},\quad d_{i,j,j} = g^{\alpha_i}h^{r_{i,j}}_{j,s_i}, \quad d_{i,l,j} = h^{r_{i,j}}_{l,s_i},$$ \\
For $r_{i,j} \in_R \mathbb{Z}_p$, $s_i \in_R \{0,1\}$. Receiver $i$'s private key is then $d_i(i)$. \\
@ -466,7 +451,7 @@ As we desire a key homomorphic scheme, we define the aggregations like so; $PK_1
for $t \in_R \mathbb{Z}_p$
and send $(S, \hdr)$ to the receiver set.
\end{itemize} \vspace{3mm}
\hsp{5mm}\textbf{AHBDec:}\quad Due to the underlying KHBE scheme, the receiver $i \in S$ can compute a decryption key for the AHBE public key $PK_{AHBE}$ by computing:
\hsp{5mm}\textbf{AHBDec:}\quad Due to the underlying KHBE scheme, the receiver $i \in S$ can compute a decryption key for the \AHBE public key $PK_{AHBE}$ by computing:
\begin{align*}
d(i) &= d_i(i) \odot\{\odot_{j \in S}^{j \neq i} d_j(i)\} = \odot_{j \in S} d_j(i) \\
&= (\prod_{j \in S} d_{j,0,i}, \dots, \prod_{j \in S} d_{j,n,i})
@ -474,13 +459,13 @@ As we desire a key homomorphic scheme, we define the aggregations like so; $PK_1
As only user $\U_i$ knows $d_i(i)$ only she can compute $d(i)$. Due to the homomorphism of the KHBE scheme, $d(i)$ is a valid decryption key for the public key $PK_{AHBE}$, as long as $i \in S$. To perform this decryption, each user $\U_i$ for $i \in S$, invokes the KHBE decryption algorithm BDec$(\cdot)$;
$$k = BDec(S, i, d(i), Hdr, K) $$
\subsection{Attempt at reducing the AHBE instantion to BDHE-problem}
Seeing that the reduction had some non-salveable issues regarding the decryption keys of the target set $S^*$, we attempted to reduce their instantiation directly to the BDHE problem, which the original scheme due to Gentry and Waters was originally reduced to, to prove its Semi-static security. We recall why the original reduction worked: The values $h_1, \dots, h_n$ are originally picked completely at random from the target group of the bilinear map, $\Gm_T$, which allowed the original reduction to sample $y_1, \dots, y_n$ and lift the generator of the group $\Gm$, $g$, to specific values of $y_i$, whenever we needed to know the discrete log of $h_i$, specifically when $i \in \tilde{S}$, i.e. the set of potential receivers, $h_i = g^{y_i}$. Furthermore, for the rest of the users, $i \not\in \tilde{S}$, they generated the values of $h_i = g^{y_i + a^i}$ meaning that the adversary \adv{B} could in fact not compute the discrete log and would thus not have a chance of computing the header information, if the adversary \adv{A} decided to attack this user. Due to the semi-static nature however, this is not something they have to worry of, as \adv{A} has already commited to $\tilde{S}$. The definition of the $h_i$ for $i \not\in \tilde{S}$, means that \adv{B} can properly answer the extraction queries for these users, as \adv{B} defines the values $r_i$ in such a way, that the exponents cancels out in $d_{i,i} = g^{\alpha}h^{r_i}_i$ and we do not have to bother trying to compute the discrete log of $g^\alpha$, specically the $a^{n+1}$ part of $\alpha = y_0 \cdot a^{n+1}$. The issues then arise, as all the $h_i$ values are required for the AHBE scheme, essentially meaning we can not fake some and define some in a very specific way, as they are \emph{all} used for the different keys, regardless of the user $i$ being in the attack set $i \in \tilde{S}$, as all the users are using the same underlying KHBE scheme. This results in the algorthim \adv{B} not being capable of answering extraction queries for any user i outside of the attack set, $i \not\in \tilde{S}$, as \adv{B} also has to generate all the $h$ values in such a way that he can compute the discrete log.
\subsection{Attempt at Reducing the \AHBE Instantion to BDHE-Problem}
Seeing that the reduction had some non-salveable issues regarding the decryption keys of the target set $S^*$, we attempted to reduce their instantiation directly to the BDHE problem, which the original scheme due to Gentry and Waters was originally reduced to, to prove its Semi-static security. We recall why the original reduction worked: The values $h_1, \dots, h_n$ are originally picked completely at random from the target group of the bilinear map, $\Gm_T$, which allowed the original reduction to sample $y_1, \dots, y_n$ and lift the generator of the group $\Gm$, $g$, to specific values of $y_i$, whenever we needed to know the discrete log of $h_i$, specifically when $i \in \tilde{S}$, i.e. the set of potential receivers, $h_i = g^{y_i}$. Furthermore, for the rest of the users, $i \not\in \tilde{S}$, they generated the values of $h_i = g^{y_i + a^i}$ meaning that the adversary \adv{B} could in fact not compute the discrete log and would thus not have a chance of computing the header information, if the adversary \adv{A} decided to attack this user. Due to the semi-static nature however, this is not something they have to worry of, as \adv{A} has already commited to $\tilde{S}$. The definition of the $h_i$ for $i \not\in \tilde{S}$, means that \adv{B} can properly answer the extraction queries for these users, as \adv{B} defines the values $r_i$ in such a way, that the exponents cancels out in $d_{i,i} = g^{\alpha}h^{r_i}_i$ and we do not have to bother trying to compute the discrete log of $g^\alpha$, specically the $a^{n+1}$ part of $\alpha = y_0 \cdot a^{n+1}$. The issues then arise, as all the $h_i$ values are required for the \AHBE scheme, essentially meaning we can not fake some and define some in a very specific way, as they are \emph{all} used for the different keys, regardless of the user $i$ being in the attack set $i \in \tilde{S}$, as all the users are using the same underlying KHBE scheme. This results in the algorthim \adv{B} not being capable of answering extraction queries for any user i outside of the attack set, $i \not\in \tilde{S}$, as \adv{B} also has to generate all the $h$ values in such a way that he can compute the discrete log.
We note, that it is not obvious if the value of all the different $\alpha$'s can be changed. For the AHBE scheme, every single user $i$ has their own value of $\alpha_i$ and one might be able to hide something within these values, but it is doubtful, as they have to be generated from the exponentiations of $g$ we are given through the BDHE problem, $\{g^{a^i} : i \in [0,n] \cup [n+2,2n]\}$ for the values to properly match the decision problem, whether $Z = e(g,g)^{a^{n+1} \cdot s}$. However, if this was successful, one could hide either an easily computable discrete log here or something which could cancel out with $r_i$, which would make it much easier to answer the extraction queries.
We note, that it is not obvious if the value of all the different $\alpha$'s can be changed. For the \AHBE scheme, every single user $i$ has their own value of $\alpha_i$ and one might be able to hide something within these values, but it is doubtful, as they have to be generated from the exponentiations of $g$ we are given through the BDHE problem, $\{g^{a^i} : i \in [0,n] \cup [n+2,2n]\}$ for the values to properly match the decision problem, whether $Z = e(g,g)^{a^{n+1} \cdot s}$. However, if this was successful, one could hide either an easily computable discrete log here or something which could cancel out with $r_i$, which would make it much easier to answer the extraction queries.
As such, we conclude that, if there is a reduction to be found from the AHBE instantiation directly to the BDHE problem, then we were not to find this.
As such, we conclude that, if there is a reduction to be found from the \AHBE instantiation directly to the BDHE problem, then we were not to find this.
\newpage\bibliographystyle{plain}