This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

11institutetext: Department of Electrical and Computer Engineering
University of Waterloo
200 University Ave W, Waterloo, ON, N2L 3G1

A Code-based Hybrid Signcryption Scheme

Jean Belo Klamti    M. Anwar Hasan
Abstract

A key encapsulation mechanism (𝖪𝖤𝖬\operatorname{\mathsf{KEM}}) that takes as input an arbitrary string, i.e., a tag, is known as tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}, while a scheme that combines signature and encryption is called signcryption. In this paper, we present a code-based signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme. We utilize a code-based signature and an 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} (adaptive chosen ciphertext attack) secure version of McEliece’s encryption scheme. The proposed scheme uses an equivalent subcode as a public code for the receiver, making the NP-completeness of the subcode equivalence problem be one of our main security assumptions. We then base the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} to design a code-based hybrid signcryption scheme. A hybrid scheme deploys asymmetric- as well as symmetric-key encryption. We give security analyses of both our schemes in the standard model and prove that they are secure against 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} (indistinguishability under adaptive chosen ciphertext attack) and 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} (strong existential unforgeability under chosen message attack).

Keywords: Coding theory, signature scheme, public-key cryptography, code-based cryptography, signcryption.

1 Introduction

In public-key cryptography, the authentication and confidentiality of communication between a sender and a receiver are ensured by a two-step approach called signature-then-encryption. In this approach, the sender uses a digital signature scheme to sign a message and then encrypt it using an encryption algorithm. The cost of delivering a message in a secure and authenticated way using the signature-then-encryption approach is essentially the sum of the cost of a digital signature and that of encryption.

In 1997, Y. Zheng introduced a new cryptographic primitive called signcryption to provide both authentication and confidentiality in a single logical step [67]. In general, one can expect the cost of signcryption to be noticeably less than that of signature-then-encryption. Zheng’s sincryption scheme is based on the hardness of the discrete logarithm problem. Since Zheng’s work, a number of signcryption schemes based on different hard assumptions have been introduced, see for example [67, 68, 61, 63, 39, 7, 8, 28, 58, 64, 38, 66]. Of these, the most efficient ones have followed Zheng’s approach, i.e., used symmetric-key encryption as a black-box component [7, 8, 28]. It has been of interest to many researchers to study how a combination of asymmetric- and symmetric-key encryption schemes could be used to build efficient signcryption schemes in a more general setting.

To that end, Dent in 2004 proposed the first formal composition model for hybrid signcryption [25] and in 2005 developed an efficient model for signcryption 𝖪𝖤𝖬\operatorname{\mathsf{KEM}}s in the outsider- and the insider-secure setting [26, 27]. In the outsider-secure setting the adversary is assumed to be distinct from the sender and receiver, while in the insider-secure setting the adversary is assumed to be a second party (i.e., either sender or receiver).

In order to improve the model for the insider-secure setting in hybrid signcryption, Bjørstad and Dent in 2006 proposed a model based on encryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} rather than regular encryption 𝖪𝖤𝖬\operatorname{\mathsf{KEM}} [14]. Their model provides a simpler description of signcryption with a better generic security reduction for the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} construction. A year after Bjørstad and Dent’s work, Yoshida and Fujiwara reported the first study of multi-user setting security of signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}s [65] which is a more suitable setting for the analysis of insider-secure schemes.

Motivation

Most of the aforementioned signcryption schemes are based on the hardness of either the discrete logarithm or the integer factorization problem and would be broken with the arrival of sufficiently large quantum computers. Therefore it is of interest to design signcryption schemes for the post-quantum era. Coding theory has some hard problems that are considered quantum-safe and in this paper, we explore the design of code-based signcryption.

The first attempt for code-based signcryption was presented in 2012 by Preetha et al. [42]. After that work, an attribute-based signcryption scheme using linear codes was introduced in 2017 by Song et al. [59]. Code-based signcryption remains an active area of research, specifically to study the design of cryptographic primitives like signcryption schemes that are quantum-safe.

Contributions

In this paper, we present a signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme using a probabilistic full domain hash (FDH) like code-based signature and a CCA2 secure version of McEliece’s encryption scheme. The underlying code-based signature in our scheme is called Wave introduced by Debris-Alazard et al. [4], while the CCA2 secure version of the McEliece scheme is based on the Fujisaki-Okamoto transformation introduced by Cayrel et al. [16]. For the underlying McEliece scheme, we use a generator matrix of permuted Goppa subcodes as receivers’ public keys. With this feature, we are able to reduce the public key size of our scheme and include the subcode equivalence problem as one of your security assumptions. Because of the latter, for the key recovery attack, even if an adversary is able to distinguish whether the underlying code is a Goppa code, it has to solve the subcode equivalence problem which is NP-complete. Thus, with well-chosen parameters, the most efficient attack against our scheme will be a brute-force attack.

Based on the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}, we design a code-based hybrid signcryption scheme. Then we give security analyses of these two schemes in the standard model assuming the insider-secure setting. Finally, we give a comparison of the hybrid signcryption with some relevant lattice-based signcryptions in terms of key and ciphertext sizes.

Organization

This paper is organized as follows. In Section 2, we first recall some basic notions of coding theory and then briefly describe relevant encryption and signature schemes that are of interest to this work. Section 3 has the definition and framework of signcryption and hybrid signcryption, and a brief review of the relevant security model. We present our sigcryption and hybrid sigcryption schemes in Section 4 and then provide security analyses of the proposed schemes in Section 5. We provide a set of parameters for the hybrid sigcryption scheme in Section 6 and then conclude in Section 7.

Notations

In this paper we use the following notations:

  • 𝔽q\mathbb{F}_{q}: finite field of size qq where q=pmq=p^{m} is a prime power.

  • 𝒞\mathcal{C}: 𝔽q\mathbb{F}_{q}-linear code of length nn.

  • x: a word or vector of 𝔽qn\mathbb{F}_{q}^{n}.

  • 𝗐𝗍(x)\operatorname{\mathsf{wt}}(\textbf{{x}}): weight of x.

  • 𝐆\mathbf{G} (resp. 𝐇\mathbf{H}): generator (resp. parity-check) matrix of linear code 𝒞\mathcal{C}.

  • 𝒲q,n,t\mathcal{W}_{q,n,t} is the set of qq-ary vectors of length nn and weight tt.

  • 𝗌𝗄s\operatorname{\mathsf{sk}}_{s} (resp. 𝗌𝗄r\operatorname{\mathsf{sk}}_{r}): sender’s (resp. receiver’s) secrete key for signcryption.

  • 𝗉𝗄s\operatorname{\mathsf{pk}}_{s} (resp. 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}): sender’s (resp. receiver’s) public key for signcryption.

2 Preliminaries

In this section, we recall some notions pertaining to coding theory and code-based cryptography.

2.1 Coding theory and some relevant hard problems

  

Let us consider the finite field 𝔽q\mathbb{F}_{q}. A qq-ary linear code 𝒞\mathcal{C} of length nn and dimension kk over 𝔽q\mathbb{F}_{q} is a vector subspace of dimension kk of 𝔽qn\mathbb{F}_{q}^{n}. It can be specified by a full rank matrix 𝐆𝔽qk×n\mathbf{G}\in\mathbb{F}_{q}^{k\times n}, called generator matrix of 𝒞\mathcal{C}, whose rows span the code. Namely, 𝒞={x𝐆s.t.x𝔽qk}\mathcal{C}=\left\{\textit{{x}}\mathbf{G}\ \text{s.t.}\ \textit{{x}}\in\mathbb{F}_{q}^{k}\right\}. A linear code can also be defined by the right kernel of matrix 𝐇𝔽qr×n\mathbf{H}\in\mathbb{F}_{q}^{r\times n}, called parity-check matrix of 𝒞\mathcal{C}, as follows:

𝒞={x𝔽qns.t.𝐇xT=0}\mathcal{C}=\left\{\textit{{x}}\in\mathbb{F}_{q}^{n}\ \ \text{s.t.}\ \ \mathbf{H}\textit{{x}}^{T}=\textit{{0}}\right\}

The Hamming distance between two codewords is the number of positions (coordinates) where they differ. The minimal distance of a code is the minimal distance of all codewords.

The weight of a word or vector x𝔽qn\textit{{x}}\in\mathbb{F}_{q}^{n}, denoted by wt(x),wt\left(\textit{{x}}\right), is the number of its nonzero positions. Then the minimal weight of a code 𝒞\mathcal{C} is the minimal weight of all nonzero codewords. In the case of linear code 𝒞\mathcal{C}, its minimal distance is equal to the minimal weight of the code.

Below we recall some hard problems that are relevant to our discussions and analyses presented in this article.

Problem 1

(Binary syndrome decoding (SD) problem) Given a matrix 𝐇𝔽2r×n\mathbf{H}\in\mathbb{F}_{2}^{r\times n}, a vector s𝔽2r\textit{{s}}\in\mathbb{F}_{2}^{r}, and an integer ω>0\omega>0, find a vector y𝔽2n\textit{{y}}\in\mathbb{F}_{2}^{n} such that 𝗐𝗍(y)=ω\operatorname{\mathsf{wt}}(\textit{{y}})=\omega and s=y𝐇T\textit{{s}}=\textit{{y}}\mathbf{H}^{T}.

The syndrome decoding problem was proven to be NP-complete in 1978 by Berlekamp et al. [13]. It is equivalent to the following problem.

Problem 2

(General decoding (GD) problem) Given a matrix 𝐆𝔽2k×n\mathbf{G}\in\mathbb{F}_{2}^{k\times n}, a vector y𝔽2n\textit{{y}}\in\mathbb{F}_{2}^{n}, and an integer ω>0\omega>0, find two vectors m𝔽qk\textit{{m}}\in\mathbb{F}_{q}^{k} and e𝔽qn\textit{{e}}\in\mathbb{F}_{q}^{n} such that 𝗐𝗍(e)=ω\operatorname{\mathsf{wt}}(\textit{{e}})=\omega and y=m𝐆e\textit{{y}}=\textit{{m}}\mathbf{G}\oplus\textit{{e}}.

The following problem is used in the security proof of the underlying signature that we use in this paper. It was first considered by Johansson and Jonsson in [36]. It was analyzed later by Sendrier in [57].

Problem 3

(Decoding One Out of Many (DOOM) problem) Given a matrix 𝐇𝔽qr×n\mathbf{H}\in\mathbb{F}_{q}^{r\times n}, a set of vector s1\textit{{s}}_{1}, s2\textit{{s}}_{2},…,sN𝔽qr\textit{{s}}_{N}\in\mathbb{F}_{q}^{r} and an integer ω\omega, find a vector e𝔽qn\textit{{e}}\in\mathbb{F}_{q}^{n} and an integer ii such that 1iN1\leq i\leq N, 𝗐𝗍(e)=ω\operatorname{\mathsf{wt}}(\textit{{e}})=\omega and si=e𝐇T\textit{{s}}_{i}=\textit{{e}}\mathbf{H}^{T}.

Problem 4

(Goppa code distinguishing (GCD) problem) Given a matrix 𝐆𝔽2k×n\mathbf{G}\in\mathbb{F}_{2}^{k\times n}, decide whether 𝐆\mathbf{G} is a random binary or generator matrix of a Goppa code.

Faugère et al. [30] showed that Problem 4 can be solved in special cases of Goppa codes with high rate.

The following is one of the problems, which the security assumption of our scheme’s underlying signature mechanism relies on.

Problem 5

(Generalized (U,U+V{U},{U}+{V}) code distinguishing problem.) Given a matrix 𝐇𝔽qr×n\mathbf{H}\in\mathbb{F}_{q}^{r\times n}, decide whether 𝐇\mathbf{H} is a parity-check matrix of a generalized (U,U+VU,U+V)-code.

Problem 5 was shown to be hard in the worst case by Debris-Alazard et al. [22] since it is NP-complete. Below, we recall the subcode equivalence problem which is one of the problems on which the security assumption of our scheme is based. This problem was proven to be NP-complete in 2017 by Berger et al. [10].

Problem 6

(Subcode equivalence problem [10]) Given two linear codes 𝒞\mathcal{C} and 𝒟\mathcal{D} of length nn and respective dimension kk and kk^{\prime}, kkk^{\prime}\leq k, over the same finite field 𝔽q\mathbb{F}_{q}, determine whether there exists a permutation σ\sigma of the support such that σ(𝒞)\sigma(\mathcal{C}) is a subcode of 𝒟\mathcal{D}.

2.2 Code-based encryption

The first code-based encryption was introduced in 1978 by R. McEliece [45]. Below (in Figure 1) we give the McEliece scheme Fujisaki-Okamoto transformation [16] which comprises three algorithms: key generation, encryption, and decryption.

𝖪𝖾𝗒𝖦𝖾𝗇\operatorname{\mathsf{KeyGen}} 1. Randomly generate a monic irreducible polynomial g(x)𝔽2m[x]g(x)\in\mathbb{F}_{2^{m}}[x] of degree tt 2. Select a uniform random set of nn different elements Γ=(a0,,an1)𝔽2mn\Gamma=(a_{0},...,a_{n-1})\in\mathbb{F}_{2^{m}}^{n}. 3. Compute a generator matrix 𝐆𝗌𝗄𝔽2k×n\mathbf{G}_{\operatorname{\mathsf{sk}}}\in\mathbb{F}_{2}^{k\times n} of the binary Goppa code from gg and Γ\Gamma. 4. Randomly choose a full rank matrix 𝐒𝔽2k×k\mathbf{S}\in\mathbb{F}_{2}^{k\times k} and permutation matrix 𝐏𝔽2n×n\mathbf{P}\in\mathbb{F}_{2}^{n\times n} with k=nmtk=n-mt. 5. Set 𝗌𝗄=(g,Γ,𝐒1,𝐏)\operatorname{\mathsf{sk}}=(g,\Gamma,\mathbf{S}^{-1},\mathbf{P}) and 𝗉𝗄=𝐆𝗉𝗄=𝐒𝐆𝗌𝗄𝐏\operatorname{\mathsf{pk}}=\mathbf{G}_{\operatorname{\mathsf{pk}}}=\mathbf{S}\mathbf{G}_{\operatorname{\mathsf{sk}}}\mathbf{P}. 𝖤𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Encrypt}} Input: Public key 𝗉𝗄=𝐆𝗉𝗄\operatorname{\mathsf{pk}}=\mathbf{G}_{\operatorname{\mathsf{pk}}} of the receiver and clear text m. Output: A ciphertext c. 1. y$𝒮2,n,t\textit{{y}}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathcal{S}_{2,n,t} 2. Compute r:=0(ym)\textit{{r}}:=\mathcal{H}_{0}(\textit{{y}}\|\textit{{m}}) 3. Compute c0:=r𝐆𝗉𝗄+y\textit{{c}}_{0}:=\textit{{r}}\mathbf{G}_{\operatorname{\mathsf{pk}}}+\textit{{y}} 4. Compute c1:=m1(y)\textit{{c}}_{1}:=\textit{{m}}\oplus\mathcal{H}_{1}(\textit{{y}}). 5. Parse c:=(c0c1)\textit{{c}}:=(\textit{{c}}_{0}\|\textit{{c}}_{1}) 6. Return c 𝖣𝖾𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Decrypt}} Input: Receiver’s secret key 𝗌𝗄=(g,Γ,𝐒1,𝐏)\operatorname{\mathsf{sk}}=(g,\Gamma,\mathbf{S}^{-1},\mathbf{P}), a ciphertext c and two hash functions 0\mathcal{H}_{0} and 1\mathcal{H}_{1} . Output: A clear message m. 1. Parse c into (c0,c1\textit{{c}}_{0},\textit{{c}}_{1}) 2. Compute c~0=c0𝐏1\tilde{\textit{{c}}}_{0}=\textit{{c}}_{0}\mathbf{P}^{-1} 3. Compute (r,e):=γGoppaMcE(𝗌𝗄,c0)(\textit{{r}},\textit{{e}}):=\gamma_{\text{Goppa}}^{\text{McE}}(\operatorname{\mathsf{sk}},{\textit{{c}}}_{0}), where γGoppaMcE\gamma_{\text{Goppa}}^{\text{McE}} is a decoding algorithm for Goppa code. 4. Compute m=c11(e){\textit{{m}}}=\textit{{c}}_{1}\oplus\mathcal{H}_{1}(\textit{{e}}) 5. Compute r~=0(em)\tilde{\textit{{r}}}=\mathcal{H}_{0}(\textit{{e}}\|\textit{{m}}) 6. If r~𝐆𝗉𝗄yc1:\tilde{\textit{{r}}}\mathbf{G}_{\operatorname{\mathsf{pk}}}\oplus\textit{{y}}\neq\textit{{c}}_{1}: 7. Return \perp 8. Return m

Figure 1: McEliece’s scheme with Fujisaki-Okamoto transformation

The main drawback of the McEliece encryption scheme is its very large key size. To address this issue, many variants of McEliece’s scheme have been proposed, see for example [11, 12, 46, 47, 9, 52]. In order to reduce the size of both public and private keys in code-based cryptography, H. Niederreiter in 1986 introduced a new cryptosystem [49]. Niederreiter’s cryptosystem is a dual version of McEliece’s cryptosystem with some additional properties such that the ciphertext length is relatively smaller. Indeed, the public key in Niederreiter’s cryptosystem is a parity-check matrix instead of a generator matrix. In addition, ciphertexts are syndrome vectors instead of erroneous codewords. However, the McEliece and the Niederreiter schemes are equivalent from the security point of view due to the fact that Problems 1 and 2 are equivalent.

Code-based hybrid encryption: A hybrid encryption scheme is a cryptographic protocol that features both an asymmetric- and a symmetric-key encryption scheme. The first component is known as Key Encapsulation Mechanism (𝖪𝖤𝖬\operatorname{\mathsf{KEM}}), while the second is called Data Encapsulation Mechanism (𝖣𝖤𝖬\operatorname{\mathsf{DEM}}). The framework was first introduced in 2003 by Cramer and Shoup [21] and later the first code-based hybrid encryption was introduced in 2013 by Persichetti [53] using Niederreiter’s encryption scheme. Persichetti’s scheme was implemented in 2017 by Cayrel et al. [17]. After Persichetti’s work, some other code-based hybrid encryption schemes have been reported, e.g., [43].

2.3 Code-based signature

Designing a secure and practical code-based signature scheme is still an open problem. The first secure code-based signature scheme was introduced by Courtois et al. (CFS) [20]. It is a full domain hash (FDH) like signature with two security assumptions: the indistinguishability of random binary linear codes and the hardness of syndrome decoding problem. To address some of the drawbacks of Courtois et al.’s scheme, Dallot proposed a modified version, called mCFS, which is provably secure. Unfortunately, this scheme is not practical due to the difficulties of finding a random decodable syndrome. In addition, the assumption of the indistinguishability of random binary Goppa codes has led to the emergence of attacks as described in [30]. One of the latest code-based signature schemes of this type is called Wave [23]. It is based on generalized (U,U+VU,U+V)-codes. It is secure and more efficient than the CFS signature scheme. In addition, it has a smaller signature size than almost all finalist candidates in the NIST post-quantum cryptography standardization process [5].

Apart from the full domain hash approach, it is possible to design signature schemes by applying the Fiat-Shamir transformation [31] to an identification protocol. To this end, one may use a code-based identification scheme like that of Stern [62], Jain et al. [35], or Cayrel et al. [18]. This approach however leads to a signature scheme with a very large signature size. To address this issue, Lyubashevsky’s framework [40] can apparently be adapted. Unfortunately, almost all code-based signature schemes in Hamming metric designed by using this framework have been cryptanalyzed [15, 54, 55, 32, 41, 60]. The only one which has remained secure so far is a rank metric-based signature scheme proposed by Aragon et al.[1].

In Figure 2, we recall Debris-Alazard et al.’s signature scheme (Wave) which is of our interest for this work. In Wave, the secret key is a tuple of three matrices 𝗌𝗄=(𝐒,𝐇𝗌𝗄,𝐏)\operatorname{\mathsf{sk}}=(\mathbf{S},\mathbf{H}_{\operatorname{\mathsf{sk}}},\mathbf{P}), where 𝐒𝔽qr×r\mathbf{S}\in\mathbb{F}_{q}^{r\times r} is an invertible matrix, 𝐇𝗌𝗄𝔽qr×n\mathbf{H}_{\operatorname{\mathsf{sk}}}\in\mathbb{F}_{q}^{r\times n} is a parity-check matrix of a generalized (U,U+VU,U+V)-code and 𝐏𝔽2n×n\mathbf{P}\in\mathbb{F}_{2}^{n\times n} is a permutation matrix. The public key is a matrix pk=𝐇𝗉𝗄pk=\mathbf{H}_{\operatorname{\mathsf{pk}}}, where 𝐇𝗉𝗄=𝐒𝐇𝗌𝗄𝐏\mathbf{H}_{\operatorname{\mathsf{pk}}}=\mathbf{S}\mathbf{H}_{\operatorname{\mathsf{sk}}}\mathbf{P}. Steps for signature and verification processes are given in Figure 2. For additional details, the reader is referred to [24, 23].

Input: Public key 𝗉𝗄=𝐇𝗉𝗄\operatorname{\mathsf{pk}}={\mathbf{H}_{\operatorname{\mathsf{pk}}}}, secret key 𝗌𝗄=(𝐇𝗌𝗄,𝐒,𝐏)\operatorname{\mathsf{sk}}=(\mathbf{H}_{\operatorname{\mathsf{sk}}},\mathbf{S},\mathbf{P}), dimension kk of the generalized (U,U+VU,U+V)-code, the dimension kUk_{U} of the code UU, the dimension kVk_{V} of the code VV and the weight ω\omega of error vectors. Output: 𝗌𝗂𝗀𝗇(m)\operatorname{\mathsf{sign}}(\textbf{{m}}) 𝖲𝗂𝗀𝗇\operatorname{\mathsf{Sign}} 1. r$𝔽2λ\textit{{r}}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathbb{F}_{2}^{\lambda} 2. yr=(mr)\textbf{{y}}_{\textit{{r}}}=\mathcal{H}(\textit{{m}}\|\textit{{r}}) 3. Compute e=𝖣𝖾𝖼𝗈𝖽𝖾𝐇𝗌𝗄(yr(𝐒1)T)\textit{{e}}=\operatorname{\mathsf{Decode}}_{\mathbf{H}_{\operatorname{\mathsf{sk}}}}(\textbf{{y}}_{\textit{{r}}}(\mathbf{S}^{-1})^{T}) 4. Return 𝗌𝗂𝗀𝗇(m)=(e,r)\operatorname{\mathsf{sign}}(\textit{{m}})=(\textit{{e}},\textit{{r}}) 𝖵𝖾𝗋𝗂𝖿\operatorname{\mathsf{Verif}} 1. Compute y~r=(mr)\tilde{\textbf{{y}}}_{\textit{{r}}}=\mathcal{H}(\textit{{m}}\|\textit{{r}}) 2. Compute y~=u𝐇𝗉𝗄T\tilde{\textbf{{y}}}=\textit{{u}}{\mathbf{H}_{\operatorname{\mathsf{pk}}}^{T}}. 3. If y~ry~\tilde{\textbf{{y}}}_{\textit{{r}}}\neq\tilde{\textbf{{y}}}: Return \perp 4. Else: Return valid

Figure 2: Wave signature scheme [23]

3 Signcryption and security model

In this section, we first recall the definition of signcryption followed by the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} framework and its security model under the insider setting.

3.1 Signcryption and its tag-KEM framework

Signcryption: A signcryption scheme is a tuple of algorithms 𝖲𝖢\operatorname{\mathsf{SC}}=(𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}}, 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s}, 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r}, 𝖲𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Signcrypt}}, 𝖴𝗇𝗌𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Unsigncrypt}}) [3] where:

  1. \ast

    𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}}(1λ1^{\lambda}) is the common parameter generation algorithm with λ\lambda, the security parameter,

  2. \ast

    𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s}(resp. 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r}) is a key-pair generation algorithm for the sender (resp. receiver),

  3. \ast

    𝖲𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Signcrypt}} is the signcryption algorithm and

  4. \ast

    𝖴𝗇𝗌𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Unsigncrypt}} corresponds to the unsigncryption algorithm.

For more details on the design of signcryption, the reader is referred to [29] (Chap. 2, Sec. 3, p. 30).

Signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}: A signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} denoted by 𝖲𝖢𝖳𝖪𝖤𝖬\operatorname{\mathsf{SCTKEM}} is a tuple of algorithms [14]:

𝖲𝖢𝖳𝖪𝖤𝖬=(𝖲𝖾𝗍𝗎𝗉,𝖪𝖾𝗒𝖦𝖾𝗇s,𝖪𝖾𝗒𝖦𝖾𝗇r,𝖲𝗒𝗆,𝖤𝗇𝖼𝖺𝗉,𝖣𝖾𝖼𝖺𝗉)\operatorname{\mathsf{SCTKEM}}=(\operatorname{\mathsf{Setup}},\operatorname{\mathsf{KeyGen}}_{s},\operatorname{\mathsf{KeyGen}}_{r},\operatorname{\mathsf{Sym}},\operatorname{\mathsf{Encap}},\operatorname{\mathsf{Decap}})

where,

  • 𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}} is an algorithm for generating common parameters.

  • 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s} (resp. 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r}) is the sender (resp. receiver) key generation algorithm. It takes as input the global information II, and returns a private/public keypair (𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄s\operatorname{\mathsf{pk}}_{s}) (resp. (𝗌𝗄r\operatorname{\mathsf{sk}}_{r}, 𝗉𝗄r\operatorname{\mathsf{pk}}_{r})) that is used to send signcrypted messages.

  • 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} is a symmetric key generation algorithm. It takes as input the private key of the sender 𝗌𝗄s\operatorname{\mathsf{sk}}_{s} and the public key of the receiver 𝗉𝗄r\operatorname{\mathsf{pk}}_{r} and outputs a symmetric key KK together with internal state information ϖ\varpi.

  • 𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}} takes as input the state information ϖ\varpi together with an arbitrary string τ\tau, which is called a tag, and outputs an encapsulation EE.

  • 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}} is the decapsulation/verification algorithm. It takes as input the sender’s public key 𝗉𝗄s\operatorname{\mathsf{pk}}_{s}, the receiver’s private key 𝗌𝗄r\operatorname{\mathsf{sk}}_{r}, an encapsulation EE, and a tag τ\tau. It returns either symmetric key KK or the unique error symbol \perp.

Hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}}: It is simply a combination of a sctkemsctkem and a regular Data Encapsulation Mechanism (𝖣𝖤𝖬\operatorname{\mathsf{DEM}}).

3.2 Insider security for signcryption tag-KEM

𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game in signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}: It corresponds to a game between a challenger and a probabilistic polynomial-time adversary 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} such that the latter tries to distinguish whether a given session key KK is the one embedded in an encapsulation or not. During this game, 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} has adaptive access to three oracles for the attacked user corresponding to algorithms 𝖲𝗒𝗆\operatorname{\mathsf{Sym}}, 𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}}, and 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}} [14, 29, 65]. The game is described in Figure 3 below.

𝖮𝗋𝖺𝖼𝗅𝖾𝗌\operatorname{\mathsf{Oracles}} 1. 𝒪𝖲𝗒𝗆\mathcal{O}_{\operatorname{\mathsf{Sym}}} is the symmetric key generation oracle with input a public key 𝗉𝗄\operatorname{\mathsf{pk}}, and computes (KK, ω\omega) = 𝖲𝗒𝗆\operatorname{\mathsf{Sym}}(𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄\operatorname{\mathsf{pk}}). It then stores the value ω\omega (hidden from the view of the adversary, and overwriting any previously stored values), and returns the symmetric key KK. 2. 𝒪𝖤𝗇𝖼𝖺𝗉\mathcal{O}_{\operatorname{\mathsf{Encap}}} is the key encapsulation oracle. It takes an arbitrary tag τ\tau as input and checks whether there exists a stored value ω\omega. If there is not, it returns \perp and terminates. Otherwise, it erases the value from storage and returns E=𝖤𝗇𝖼𝖺𝗉(ω,τ)E=\operatorname{\mathsf{Encap}}(\omega,\tau). 3. 𝒪𝖣𝖾𝖼𝖺𝗉\mathcal{O}_{\operatorname{\mathsf{Decap}}} corresponds to the decapsulation/verification oracle. It takes an encapsulation EE, a tag τ\tau, any sender’s public key 𝗉𝗄\operatorname{\mathsf{pk}} as input and returns 𝖣𝖾𝖼𝖺𝗉(𝗉𝗄,𝗌𝗄r,E,τ)\operatorname{\mathsf{Decap}}(\operatorname{\mathsf{pk}},\operatorname{\mathsf{sk}}_{r},E,\tau). 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} Game for 𝖲𝖢𝖳𝖪𝖤𝖬\operatorname{\mathsf{SCTKEM}} 1. I:=𝖲𝖾𝗍𝗎𝗉(1λ)I:=\operatorname{\mathsf{Setup}}(1^{\lambda}) 2. (𝗌𝗄r,𝗉𝗄r):=𝖪𝖾𝗒𝖦𝖾𝗇r(I)(\operatorname{\mathsf{sk}}_{r},\operatorname{\mathsf{pk}}_{r}):=\operatorname{\mathsf{KeyGen}}_{r}(I) 3. (𝗌𝗄s,𝗌𝗍𝖺𝗍𝖾1):=𝒜𝖢𝖢𝖠𝟤𝒪𝖲𝗒𝗆,𝒪𝖤𝗇𝖼𝖺𝗉,𝒪𝖣𝖾𝖼𝖺𝗉(𝗉𝗄r)(\operatorname{\mathsf{sk}}_{s},{\operatorname{\mathsf{state}}}_{1}):=\mathcal{A}_{\operatorname{\mathsf{CCA2}}}^{\mathcal{O}_{\operatorname{\mathsf{Sym}}},\mathcal{O}_{\operatorname{\mathsf{Encap}}},\mathcal{O}_{\operatorname{\mathsf{Decap}}}}(\operatorname{\mathsf{pk}}_{r}) 4. (K1,ϖ):=𝖲𝗒𝗆(𝗌𝗄s,𝗉𝗄r)(K_{1},\varpi):=\operatorname{\mathsf{Sym}}(\operatorname{\mathsf{sk}}_{s},\operatorname{\mathsf{pk}}_{r}), K0$𝒦K_{0}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathcal{K} and b${0,1}b\stackrel{{\scriptstyle\$}}{{\leftarrow}}\{0,1\} 5. (τ,𝗌𝗍𝖺𝗍𝖾2):=𝒜𝖢𝖢𝖠𝟤𝒪𝖲𝗒𝗆,𝒪𝖤𝗇𝖼𝖺𝗉,𝒪𝖣𝖾𝖼𝖺𝗉(Kb,𝗌𝗍𝖺𝗍𝖾1)(\tau,{\operatorname{\mathsf{state}}}_{2}):=\mathcal{A}_{\operatorname{\mathsf{CCA2}}}^{\mathcal{O}_{\operatorname{\mathsf{Sym}}},\mathcal{O}_{\operatorname{\mathsf{Encap}}},\mathcal{O}_{\operatorname{\mathsf{Decap}}}}(K_{b},{\operatorname{\mathsf{state}}}_{1}) 6. E:=𝖤𝗇𝖼𝖺𝗉(ϖ,τ)E:=\operatorname{\mathsf{Encap}}(\varpi,\tau) 7. b:=𝒜𝖢𝖢𝖠𝟤𝒪𝖲𝗒𝗆,𝒪𝖤𝗇𝖼𝖺𝗉,𝒪𝖣𝖾𝖼𝖺𝗉(E,𝗌𝗍𝖺𝗍𝖾2)b^{\prime}:=\mathcal{A}_{\operatorname{\mathsf{CCA2}}}^{\mathcal{O}_{\operatorname{\mathsf{Sym}}},\mathcal{O}_{\operatorname{\mathsf{Encap}}},\mathcal{O}_{\operatorname{\mathsf{Decap}}}}(E,{\operatorname{\mathsf{state}}}_{2})

Figure 3: 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game [65].

During Step 7, the adversary 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} is restricted not to make decapsulation queries on (E,τ)(E,\tau) to the decapsulation oracle. The advantage of the adversary 𝒜\mathcal{A} is defined by:

𝖠𝖽𝗏(𝒜𝖢𝖢𝖠𝟤)=|𝖯𝗋(b=b)1/2|.\operatorname{\mathsf{Adv}}(\mathcal{A}_{\operatorname{\mathsf{CCA2}}})=|\operatorname{\mathsf{Pr}}(b^{\prime}=b)-1/2|.

A signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure if, for any adversary 𝒜\mathcal{A}, its advantage in the 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game is negligible with respect to the security parameter λ\lambda.

𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game for signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}: This game is a challenge between a challenger and a probabilistic polynomial-time adversary (i.e., a forger) 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}}. In this game, the forger tries to generate a valid encapsulation EE from the sender to any receiver, with adaptive access to the three oracles. The adversary is allowed to come up with the presumed secret key 𝗌𝗄r\operatorname{\mathsf{sk}}_{r} as part of his forgery [65]:

𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} Game for 𝖲𝖢𝖳𝖪𝖤𝖬\operatorname{\mathsf{SCTKEM}} 1. I:=𝖲𝖾𝗍𝗎𝗉(1λ)I:=\operatorname{\mathsf{Setup}}(1^{\lambda}) 2. (𝗌𝗄s,𝗉𝗄s):=𝖪𝖾𝗒𝖦𝖾𝗇r(I)(\operatorname{\mathsf{sk}}_{s},\operatorname{\mathsf{pk}}_{s}):=\operatorname{\mathsf{KeyGen}}_{r}(I) 3. (E,τ,𝗌𝗄r):=𝖢𝖬𝖠𝒪𝖲𝗒𝗆,𝒪𝖤𝗇𝖼𝖺𝗉,𝒪𝖣𝖾𝖼𝖺𝗉(𝗉𝗄s)(E,\tau,\operatorname{\mathsf{sk}}_{r}):=\mathcal{F}_{\operatorname{\mathsf{CMA}}}^{\mathcal{O}_{\operatorname{\mathsf{Sym}}},\mathcal{O}_{\operatorname{\mathsf{Encap}}},\mathcal{O}_{\operatorname{\mathsf{Decap}}}}(\operatorname{\mathsf{pk}}_{s})

Figure 4: 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game [65].

The adversary 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} wins the 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game if

𝖣𝖾𝖼𝖺𝗉(𝗉𝗄s,𝗌𝗄r,E,τ)\perp\neq\operatorname{\mathsf{Decap}}(\operatorname{\mathsf{pk}}_{s},\operatorname{\mathsf{sk}}_{r},E,\tau)

and the encapsulation oracle never returns EE when he queries on the tag τ\tau. The advantage of 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} is the probability that 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} wins the 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game. A signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure if the winning probability of the 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game by 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} is negligible.

Definition 1

A signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is said to be secure if it is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} and 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure.

3.3 Generic security criteria of hybrid signcryption tag-KEM+DEM

Security criteria for hybrid signcryption: The security of a hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}} depends on those of the underlying signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} and 𝖣𝖤𝖬\operatorname{\mathsf{DEM}}. However, it is important to note that in the standard model a signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is secure if it is both 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} and 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure. Therefore, the generic security criteria for hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}} is given by the following theorem:

Theorem 3.1

[65, 14]   Let 𝖧𝖲𝖢\operatorname{\mathsf{HSC}} be a hybrid signcryption scheme constructed from a signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} and a 𝖣𝖤𝖬\operatorname{\mathsf{DEM}}. If the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure and the 𝖣𝖤𝖬\operatorname{\mathsf{DEM}} is one-time secure, then 𝖧𝖲𝖢\operatorname{\mathsf{HSC}} is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure. Moreover, if the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure, then 𝖧𝖲𝖢\operatorname{\mathsf{HSC}} is also 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure.

4 Code-based hybrid signcryption

In this section, we first design a code-based signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme. Then we combine it with a one-time (OT) secure 𝖣𝖤𝖬\operatorname{\mathsf{DEM}} for designing a hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}} scheme.

4.1 Code-based signcryption tag-KEM scheme

For designing our code-based signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme, we use the McEliece scheme as the underlying encryption scheme. More specifically, in order to achieve the 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} security for our schemes, we use McEliece’s scheme with the Fujisaki-Okamoto transformation [33, 16]. The authors of [16] gave an instantiation of this scheme using generalized Srivastava (GS) codes. Indeed, by using GS codes, it seems possible to choose secure parameters even for codes defined over relatively small extension fields. However, Barelli and Couvreur recently introduced an efficient structural attack [6] against some of the candidates in the NIST post-quantum cryptography standardization process. Their attack is against code-based encryption schemes using some quasi-dyadic alternant codes with extension degree 22. It works specifically for schemes based on GS code called DAGS [4]. Therefore, in our work, we use the Goppa code with the Classic McEliece parameters. As for the underlying signature scheme, we use the code-based Wave [23] as described earlier.

The fact that we use Wave, the sender’s secret key is a generalized (U,U+VU,U+V)-code over a finite field 𝔽q\mathbb{F}_{q} with q>2q>2. Its public key is a parity-check matrix of a code equivalent to the previous one. To reduce the public key size, we use a permuted Goppa subcode for the receiver’s public key. Thus, we include the subcode equivalence problem as one of the security assumptions of our scheme. In Fig. 5, we describe the algorithm 𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}} which will provide common parameters for our scheme.

𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}} Input: (1λ1^{\lambda}) Output: Parameters of sender’s generalized (U,U+VU,U+V)-code: code length nsn_{s}, dimension kUk_{U} of U, dimension kVk_{V} of V, dimension ks=kU+kVk_{s}=k_{U}+k_{V} of the generalized (U,U+VU,U+V)-code, weight of error vector ω\omega, cardinality qq of the finite field 𝔽q\mathbb{F}_{q}. Parameters of receiver’s Goppa code: degree mm of extension 𝔽2m\mathbb{F}_{2^{m}} of 𝔽2\mathbb{F}_{2}, length nrn_{r} of the Goppa code, degree tt of Goppa polynomial grg_{r}, dimension k~\tilde{k} of Goppa subcode. A cryptographic hash functions 1:{0,1}{0,1}k~\mathcal{H}_{1}:\{0,1\}^{*}\longrightarrow\{0,1\}^{\tilde{k}} A cryptographic hash functions 0:{0,1}{0,1}\mathcal{H}_{0}:\{0,1\}^{*}\longrightarrow\{0,1\}^{\ell} where \ell is the bit length of the symmetric encryption key. A hash function 2:{0,1}{0,1,2}rs\mathcal{H}_{2}:\{0,1\}^{*}\longrightarrow\{0,1,2\}^{r_{s}} where rs=nsksr_{s}=n_{s}-k_{s}. A cryptographic hash function 3:{0,1}{0,1}k~+\mathcal{H}_{3}:\{0,1\}^{*}\longrightarrow\{0,1\}^{\tilde{k}+\ell} An encoding function ϕ:𝔽2κ𝒲2,nr,t\phi:\mathbb{F}_{2}^{\kappa}\longrightarrow\mathcal{W}_{2,n_{r},t} where κ\kappa is a well chosen parameters such that κ=(nrt)\kappa=\left\lfloor\binom{n_{r}}{t}\right\rfloor and 𝒲2,nr,t\mathcal{W}_{2,n_{r},t} is the set of binary vectors of length nrn_{r} and Hamming weight tt.


Figure 5: Description of the 𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}} algorithm for common parameters.

We give key generation algorithms in Figure 6, where we denote the sender key generation algorithm by 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s} and that of the receiver by 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r}. The receiver algorithm 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r} returns as signcryption public key a generator matrix 𝐆𝗉𝗄,r𝔽2k~×nr\mathbf{G}_{\operatorname{\mathsf{pk}},r}\in\mathbb{F}_{2}^{\tilde{k}\times n_{r}} of a Goppa subcode equivalent. It returns as signcryption secret key the tuple (gr,Γr,𝐒r1,𝐏rg_{r},\Gamma_{r},\mathbf{S}_{r}^{-1},\mathbf{P}_{r}), where Γr\Gamma_{r} and grg_{r} are, respectively, the support and the polynomial of a Goppa code. 𝐒r𝔽2k~×kr\mathbf{S}_{r}\in\mathbb{F}_{2}^{\tilde{k}\times k_{r}} is a full rank matrix and 𝐏r\mathbf{P}_{r} a permutation matrix. The sender key generation algorithm 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s} returns as private key three matrices 𝐒s𝔽3(nsks)×(nsks)\mathbf{S}_{s}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times(n_{s}-k_{s})}, 𝐇𝗌𝗄,s𝔽3(nsks)×ns\mathbf{H}_{\operatorname{\mathsf{sk}},s}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times n_{s}} and 𝐏s𝔽2ns×ns\mathbf{P}_{s}\in\mathbb{F}_{2}^{n_{s}\times n_{s}}, where 𝐒s𝔽3(nsks)×(nsks)\mathbf{S}_{s}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times(n_{s}-k_{s})} is an invertible matrix, 𝐇𝗌𝗄,s𝔽3(nsks)×ns\mathbf{H}_{\operatorname{\mathsf{sk}},s}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times n_{s}} a parity-check matrix of a random generalized (U,U+VU,U+V)-code and 𝐏𝔽2ns×ns\mathbf{P}\in\mathbb{F}_{2}^{n_{s}\times n_{s}} a permutation matrix. The sender public key is a parity-check matrix 𝐇𝗉𝗄,s𝔽3(nsks)×ns\mathbf{H}_{\operatorname{\mathsf{pk}},s}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times n_{s}} of a generalized (U,U+VU,U+V) equivalent code given by 𝐇𝗉𝗄,s=𝐒s𝐇𝗌𝗄,s𝐏s\mathbf{H}_{\operatorname{\mathsf{pk}},s}=\mathbf{S}_{s}\mathbf{H}_{\operatorname{\mathsf{sk}},s}\mathbf{P}_{s}.

𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r} Input: Integers m,nr,tm,n_{r},t and k~\tilde{k}. Output: 𝗌𝗄r\operatorname{\mathsf{sk}}_{r} and 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}. 1. Randomly generate a monic irreducible polynomial gr(x)𝔽2m[x]g_{r}(x)\in\mathbb{F}_{2^{m}}[x] of degree tt 2. Select a uniform random set of nrn_{r} different elements Γr=(a0,,anr1)𝔽2mnr\Gamma_{r}=(a_{0},...,a_{n_{r}-1})\in\mathbb{F}_{2^{m}}^{n_{r}}. 3. Compute a parity-check matrix 𝐇𝗌𝗄,r𝔽2mt×nr\mathbf{H}_{\operatorname{\mathsf{sk}},r}\in\mathbb{F}_{2}^{mt\times n_{r}} of the binary Goppa code from grg_{r} and Γr\Gamma_{r}. 4. Randomly choose a full rank matrix 𝐒r𝔽2k~×kr\mathbf{S}_{r}\in\mathbb{F}_{2}^{\tilde{k}\times k_{r}} and permutation matrix 𝐏r𝔽2nr×nr\mathbf{P}_{r}\in\mathbb{F}_{2}^{n_{r}\times n_{r}} with kr=nrmtk_{r}=n_{r}-mt. 5. Set 𝗌𝗄r=(gr,Γr,𝐒r,𝐏r)\operatorname{\mathsf{sk}}_{r}=(g_{r},\Gamma_{r},\mathbf{S}_{r},\mathbf{P}_{r}) and 𝗉𝗄r=𝐆𝗉𝗄,r=𝐒r𝐆𝗌𝗄,r𝐏r\operatorname{\mathsf{pk}}_{r}=\mathbf{G}_{\operatorname{\mathsf{pk}},r}=\mathbf{S}_{r}\mathbf{G}_{\operatorname{\mathsf{sk}},r}\mathbf{P}_{r}. 6. Return 𝗌𝗄r\operatorname{\mathsf{sk}}_{r} and 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}. 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s} Input: Integers ns,kUn_{s},k_{U} and kVk_{V}. Output: 𝗌𝗄s\operatorname{\mathsf{sk}}_{s} and 𝗉𝗄s\operatorname{\mathsf{pk}}_{s} 1. Choose randomly a parity-check matrix 𝐇sk\mathbf{H}_{sk} of a code (U,U+VU,U+V) over 𝔽3\mathbb{F}_{3} such that dim(U)=kU(U)=k_{U} and dim(V)=kV(V)=k_{V}. 2. Randomly choose a full rank matrix 𝐒𝔽3(nsks)×(nsks)\mathbf{S}\in\mathbb{F}_{3}^{(n_{s}-k_{s})\times(n_{s}-k_{s})} and a monomial matrix 𝐏𝔽3ns×ns\mathbf{P}\in\mathbb{F}_{3}^{n_{s}\times n_{s}}. 3. Set 𝗌𝗄s=(𝐒s,𝐇𝗌𝗄,𝐏s)\operatorname{\mathsf{sk}}_{s}=(\mathbf{S}_{s},\mathbf{H}_{\operatorname{\mathsf{sk}}},\mathbf{P}_{s}) and 𝐇𝗉𝗄,s=𝐒s𝐇𝗌𝗄,s𝐏s\mathbf{H}_{\operatorname{\mathsf{pk}},s}=\mathbf{S}_{s}\mathbf{H}_{\operatorname{\mathsf{sk}},s}\mathbf{P}_{s}. 4. Return 𝗌𝗄s\operatorname{\mathsf{sk}}_{s} and 𝗉𝗄s=𝐇𝗉𝗄,s\operatorname{\mathsf{pk}}_{s}=\mathbf{H}_{\operatorname{\mathsf{pk}},s}.


Figure 6: Description of the key generation algorithms.

In Figure 7, we give the design of the symmetric key generation algorithm 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} of our scheme. The algorithm 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} takes as input the bit length \ell of the symmetric encryption key. It outputs an internal state information ϖ\varpi and the session key KK, where ϖ\varpi is randomly chosen from 𝔽2\mathbb{F}_{2}^{\ell}, and KK is computed by using the hash function 0\mathcal{H}_{0}.

𝖲𝗒𝗆\operatorname{\mathsf{Sym}} Input: The bit length \ell of the symmetric encryption key. Output: An internal state information ϖ\varpi and a session key KK. 1. x$𝔽2\textit{{x}}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathbb{F}_{2}^{\ell} 2. Compute K:=0(x)K:=\mathcal{H}_{0}(\textit{{x}}) 3. Set ϖ:=x\varpi:=\textit{{x}} 4. Return (K,ϖ)(K,\varpi)

Figure 7: Description of the 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} algorithm.

Figure 8 provides a description of the encapsulation and decapsulation algorithms of our signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme. We denote the encapsulation algorithm by 𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}} and the decapsulation by 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}}. In the encapsulation algorithm, the sender first performs a particular Wave signature on the message m=τϖ\textit{{m}}=\tau\|\varpi, where ϖ\varpi corresponds to an internal state information and τ\tau is the input tag. The signature in the Wave scheme comprises two parts: an error vector e𝔽3ns\textit{{e}}\in\mathbb{F}_{3}^{n_{s}} and a random binary vector y. In our scheme, z is the hash of a random coin y𝔽2κ\textit{{y}}\in\mathbb{F}_{2}^{\kappa}. The sender then performs an encryption of m=1(τ)ϖ\textit{{m}}^{\prime}=\mathcal{H}_{1}(\tau)\|\varpi. The encryption that we use in our scheme is the 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure McEliece encryption scheme with the Fujisaki-Okamoto transformation introduced by Cayrel et al. [16]. During the encryption, the sender adaptively uses the random binary vector y as a random coin. The resulting ciphertext is denoted by c. The output is given by E=(e,c)E=(\textit{{e}},\textit{{c}}).

𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}} Input: (ϖ\varpi, τ\tau) with τ𝔽2\tau\in\mathbb{F}_{2}^{\ell}
Output: An encapsulation of the internal state information ϖ\varpi.
1. y$𝔽2κ\textit{{y}}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathbb{F}_{2}^{\kappa} with κ=log2(nt)\kappa=\left\lfloor\log_{2}\binom{n}{t}\right\rfloor 2. Compute z=1(y)\textit{{z}}=\mathcal{H}_{1}(\textit{{y}}) 3. Compute s:=2(τϖz)\textit{{s}}:=\mathcal{H}_{2}(\tau\|\varpi\|\textit{{z}}) 4. Compute e~:=𝖣𝖾𝖼𝗈𝖽𝖾𝐇𝗌𝗄,s(s(𝐒1)T)\tilde{\textit{{e}}}:=\operatorname{\mathsf{Decode}}_{\mathbf{H}_{\operatorname{\mathsf{sk}},s}}(\textit{{s}}(\mathbf{S}^{-1})^{T}) 5. Compute e:=e~𝐏\textit{{e}}:=\tilde{\textit{{e}}}\mathbf{P} 6. Compute τ=1(τ)\tau^{\prime}=\mathcal{H}_{1}(\tau) 7. Compute r:=1(τϖy)\textit{{r}}:=\mathcal{H}_{1}(\tau^{\prime}\|\varpi\|\textit{{y}}) 8. Compute c0:=r𝐆𝗉𝗄,r+σ\textit{{c}}_{0}:=\textit{{r}}\mathbf{G}_{\operatorname{\mathsf{pk}},r}+\sigma, where σ=ϕ(y)\sigma=\phi(\textbf{{y}}) with ϕ\phi an constant weight encoding function. 9. Compute c1:=3(σ)(τϖ)\textit{{c}}_{1}:=\mathcal{H}_{3}(\sigma)\oplus(\tau^{\prime}\|\varpi). 10. Parse c:=(c0c1)\textit{{c}}:=(\textit{{c}}_{0}\|\textit{{c}}_{1}) 11. Return E:=(e,c)E:=({\textit{{e}}},\textit{{c}})
𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}} Input: (𝗌𝗄r\operatorname{\mathsf{sk}}_{r}, 𝐇𝗉𝗄,s\mathbf{H}_{\operatorname{\mathsf{pk}},s}, EE, τ\tau) Output: Session key KK 1. Parse EE as (e,c)(\textit{{e}},\textit{{c}}). 2. Compute (x,y):=𝖣𝖾𝖼𝗋𝗒𝗉𝗍(𝗌𝗄r,c)(\textit{{x}},\textit{{y}}):=\operatorname{\mathsf{Decrypt}}(\operatorname{\mathsf{sk}}_{r},\textit{{c}}) 3. Parse x as (τ~ϖ~\tilde{\tau}\|\tilde{\varpi}) 4. If e𝐇𝗉𝗄,sT2(τϖ~1(y))\textit{{e}}\mathbf{H}_{\operatorname{\mathsf{pk}},s}^{T}\neq\mathcal{H}_{2}(\tau\|\tilde{\varpi}\|\mathcal{H}_{1}(\textit{{y}})) or τ~1(τ)\tilde{\tau}\neq\mathcal{H}_{1}(\tau): 5. Return \perp 6. Compute K:=0(ϖ)K:=\mathcal{H}_{0}(\varpi) 7. Return KK.

Figure 8: Description of the 𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}} and 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}} algorithms.

In the decapsulation algorithm 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}}, the receiver first performs recovery of the internal state information ϖ\varpi by using the algorithm 𝖣𝖾𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Decrypt}} and the second part of the signature of m. Then it verifies the signature and computes the session KK by using ϖ\varpi.

The algorithm 𝖣𝖾𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Decrypt}} that we use in the decapsulation algorithm of our scheme is described in Figure 9. It is similar to that described in [16] but we introduce some modifications which are:

  1. we use an encoding function ϕ\phi

  2. the output is not only the clear message m, but a pair (m,y\textit{{m}},\textit{{y}}) where y is the reciprocal image the error vector σ\sigma by the encoding function ϕ\phi

𝖣𝖾𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Decrypt}} Input: Secrete 𝗌𝗄=(gr,Γr,𝐒r,𝐏r)\operatorname{\mathsf{sk}}=(g_{r},\Gamma_{r},\mathbf{S}_{r},\mathbf{P}_{r}) the receiver and a ciphertext c . Output: The pair (x,y\textit{{x}},\textit{{y}}), where x=τϖ\textit{{x}}=\tau^{\prime}\|\varpi. 1. Parse c into (c0,c1\textit{{c}}_{0},\textit{{c}}_{1}) 2. Compute σ:=γGoppaMcE(𝗌𝗄,c0)\sigma:=\gamma_{\text{Goppa}}^{\text{McE}}(\operatorname{\mathsf{sk}},{\textit{{c}}}_{0}), where γGoppaMcE\gamma_{\text{Goppa}}^{\text{McE}} is a decoding algorithm for Goppa code. 3. y=ϕ1(σ)\textit{{y}}=\phi^{-1}(\sigma) 4. Compute x=c13(σ){\textit{{x}}}=\textit{{c}}_{1}\oplus\mathcal{H}_{3}(\sigma) 5. Compute r~=1(xy)\tilde{\textit{{r}}}=\mathcal{H}_{1}(\textit{{x}}\|\textit{{y}}) 6. If r~𝐆𝗉𝗄,rσc1:\tilde{\textit{{r}}}\mathbf{G}_{\operatorname{\mathsf{pk}},r}\oplus\sigma\neq\textit{{c}}_{1}: 7. Return \perp 8. Return (x,y)(\textit{{x}},{\textit{{y}}})

Figure 9: Description of the 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} algorithm.

Completeness of our signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}

Let τ\tau be a tag, (𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄s\operatorname{\mathsf{pk}}_{s}) (resp. 𝗌𝗄r\operatorname{\mathsf{sk}}_{r} and 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}) be sender’s (resp. receiver’s) key pair generated by the algorithm 𝖪𝖾𝗒𝖦𝖾𝗇\operatorname{\mathsf{KeyGen}} with input 1λ1^{\lambda}. Let (KK, ϖ\varpi):=𝖲𝗒𝗆\operatorname{\mathsf{Sym}}(𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}) be a pair of a session key and an internal state information. Let E:=E:=(e,c\textit{{e}},\textit{{c}}) be an encapsulation of the internal state information ϖ\varpi. Assuming that the encapsulation and decapsulation are performed by an honest user, we have:

  • The receiver can recover the pair (τϖ,y)\tau^{\prime}\|\varpi,\textit{{y}}) from c and verify successfully that

    e𝐇𝗉𝗄,sT=2(τϖ|y)andτ=1(τ)\textit{{e}}\mathbf{H}_{\operatorname{\mathsf{pk}},s}^{T}=\mathcal{H}_{2}(\tau\|\varpi|\textit{{y}})\ \ and\ \ \tau^{\prime}=\mathcal{H}_{1}(\tau)

    Otherwise, the receiver performs a successful signature verification of message m:=τϖ\textit{{m}}:=\tau\|\varpi signed by an honest user using the dual version of mCFS signature.

  • Therefore it can compute the session key K:=0(ϖ)K:=\mathcal{H}_{0}(\varpi).

4.2 Code-based hybrid signcryption

Here we use the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} described in Section 4.1 for designing a code-based hybrid signcryption. For the data encapsulation, we propose the use of a regular OT-secure symmetric encryption scheme. We denote the symmetric encryption algorithm being used by 𝖲𝗒𝗆𝖤𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{SymEncrypt}} and the symmetric decryption algorithm by 𝖲𝗒𝗆𝖣𝖾𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{SymDecrypt}}.

Figure 10 gives the design of our code-based hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}}. In this design, algorithms 𝖲𝖾𝗍𝗎𝗉\operatorname{\mathsf{Setup}}, 𝖪𝖾𝗒𝖦𝖾𝗇s\operatorname{\mathsf{KeyGen}}_{s} and 𝖪𝖾𝗒𝖦𝖾𝗇r\operatorname{\mathsf{KeyGen}}_{r} are the same as those of our signcrytion tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}. Algorithms 𝖲𝗒𝗆\operatorname{\mathsf{Sym}} and 𝖤𝗇𝖼𝖺𝗉\operatorname{\mathsf{Encap}} are those of our signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} in Section 4.1.

𝖲𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Signcrypt}} Input: A three tuple (𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄r\operatorname{\mathsf{pk}}_{r}, m)
Output: The signcrypted message c=(E,C)\textit{{c}}=(E,\ C).
1. Compute (KK, ϖ\varpi)=𝖲𝗒𝗆\operatorname{\mathsf{Sym}}(𝗌𝗄s\operatorname{\mathsf{sk}}_{s}, 𝗉𝗄r)\operatorname{\mathsf{pk}}_{r}) 2. Compute C=𝖲𝗒𝗆𝖤𝗇𝖼𝗋𝗒𝗉𝗍C=\operatorname{\mathsf{SymEncrypt}}(KK, m) 3. Compute E=𝖤𝗇𝖼𝖺𝗉E=\operatorname{\mathsf{Encap}}(ϖ\varpi, CC) 4. Return (E,C)(E,C)
𝖴𝗇𝗌𝗂𝗀𝗇𝖼𝗋𝗒𝗉𝗍\operatorname{\mathsf{Unsigncrypt}} Input: A three tuple (𝗌𝗄r\operatorname{\mathsf{sk}}_{r}, 𝗉𝗄s\operatorname{\mathsf{pk}}_{s}, (c,C)(\textit{{c}},C))
Output: The clear text m
1. If 𝖣𝖾𝖼𝖺𝗉\operatorname{\mathsf{Decap}}(𝗌𝗄r\operatorname{\mathsf{sk}}_{r}, 𝗉𝗄s\operatorname{\mathsf{pk}}_{s}, c)=\perp return \perp 2. Compute m=𝖲𝗒𝗆𝖣𝖾𝖼𝗋𝗒𝗉𝗍\textit{{m}}=\operatorname{\mathsf{SymDecrypt}}(K,CK,C) 3. Return m

Figure 10: Code-based hybrid signcryption from sctkemsctkem and 𝖣𝖤𝖬\operatorname{\mathsf{DEM}}.

5 Security analysis

Before discussing the security of our hybrid scheme, let us consider the following assumptions for our security analysis:

Assumption 1: The advantage of probabilistic polynomial-time algorithm 𝒜\mathcal{A} to solve the decoding random linear codes problem is negligible with respect to the length nn and dimension kk of the code.

Assumption 2: The advantage of probabilistic polynomial-time algorithm 𝒜\mathcal{A} to solve the (U,U+VU,U+V) distinguishing problem is negligible with respect to the length nn and dimension kk of the code.

Assumption 3: The advantage of probabilistic polynomial-time algorithm 𝒜\mathcal{A} to solve the subcode equivalence problem is negligible with respect to the length nn and dimension kk of the code.

Assumption 4: The advantage of probabilistic polynomial-time algorithm 𝒜\mathcal{A} to solve the decoding one out of many (DOOM) problem is negligible with respect to the length nn and dimension kk of the code.

Assumption 5: The advantage of probabilistic polynomial-time algorithm 𝒜\mathcal{A} to solve the Goppa code distinguishing problem is negligible with respect to the length nn and dimension kk of the code.

5.1 Information-set decoding algorithm

In code-based cryptography, the best-known non-structural attacks rely on information-set decoding. The information-set decoding algorithm was introduced by Prange [56] for decoding cyclic codes. After the publication of Prange’s work, there have been several works studying to invert code-based encryption schemes based on information-set decoding (see [2] Section 4.1).

For a given linear code of length nn and dimension kk, the main idea behind the information-set decoding algorithm is to find a set of kk coordinates of a garbled vector that are error-free and such that the restriction of the code’s generator matrix to these positions is invertible. Then, the original message can be computed by multiplying the encrypted vector by the inverse of the submatrix.

Thus, those kk bits determine the codeword uniquely, and hence the set is called an information set. It is sometimes difficult to draw the exact resistance to this type of attack. However, they are always lower-bounded by the ratio of information sets without errors to total possible information sets, i.e.,

RISD=(nωk)(nk),R_{\text{ISD}}=\frac{\binom{n-\omega}{k}}{\binom{n}{k}}, (1)

where ω\omega is the Hamming weight of the error vector. Therefore, well-chosen parameters can avoid these non-structural attacks. In our scheme, we use the parameters of the Wave signature [23] for the sender and those of Classic McEliece [2] for the receiver in the underlying encryption scheme.

5.2 Key recovery attack

In code-based cryptography, usually, the first step in the key recovering attack is to perform a distinguishing attack on the public code in order to identify the family of the underlying code. Once successful, the attacker can then perform any well-known attack against this family of underlying codes to recover the secret key. When the underlying code is a Goppa code, the main distinguishing attack technique consists of evaluating the square code or the square of the trace code of the corresponding public code [30, 44, 48]. Note that this technique usually works for a Goppa code with a high rate. Compared to many other code-based encryption schemes, in which the public code is equivalent to an alternant or a Goppa code, in this work the public code is a permuted Goppa subcode. Thus, in addition to the indistinguishability of Goppa codes, the subcode equivalence problem becomes one of our security assumptions. Moreover, to the best of our knowledge, there is no attack reported in the literature on distinguishing a code equivalent to a Goppa subcode. Therefore, by using the subcode equivalence problem as a security assumption, we can keep our scheme out of the purview of the distinguishing attack even though the underlying code is a Goppa code.

Throughout the rest of our analysis, we assume that the attacker knows that the family of the underlying code is a Goppa code. In our case, the key recovery attack is at two different levels: the first one is on the sender side, and the second one is on the receiver side.

On the receiver side, the key recovery attack consists of the recovery of the Goppa polynomial grg_{r} and the support γr=(α0,,αn1)\gamma_{r}=(\alpha_{0},...,\alpha_{n-1}) from the public matrix. Therefore, the natural way for this is to perform a brute-force attack: one can determine the sequence (α0,,αn1)(\alpha_{0},...,\alpha_{n-1}) from grg_{r} and the set {α0,,αn1}\{\alpha_{0},...,\alpha_{n-1}\}, or alternatively determine grg_{r} from (α0,,αn1)(\alpha_{0},...,\alpha_{n-1}). A good choice of parameters can avoid this attack for the irreducible Goppa code the number of choices of grg_{r} is given by

1td|tμ(d)qtd.\frac{1}{t}\sum\limits_{d|t}\mu(d)q^{\frac{t}{d}}.

By using the parameters of Classic McEliece, we can see that the complexity for performing a brute-force attack to find Goppa polynomial is more than 28002^{800} for the parameters proposed in [2].

It is also important to note that if the adversary has the knowledge of the underlying Goppa code 𝒞𝗌𝗄\mathcal{C}_{\operatorname{\mathsf{sk}}}, performing the key recovery attack implies solving a computational instance of a subcode equivalence problem. Indeed, this corresponds to finding the permutation σ\sigma such that σ(𝒞𝗉𝗄)\sigma(\mathcal{C}_{\operatorname{\mathsf{pk}}}) is a subcode of 𝒞𝗌𝗄\mathcal{C}_{\operatorname{\mathsf{sk}}}. We can see that finding the permutation σ\sigma is equivalent to solving the following system:

𝐆𝗉𝗄,r𝐗σ𝐇𝗌𝗄,r=𝟎\mathbf{G}_{\operatorname{\mathsf{pk}},r}\mathbf{X}_{\sigma}\mathbf{H}_{\operatorname{\mathsf{sk}},r}=\mathbf{0} (2)

where 𝐇𝗌𝗄,r\mathbf{H}_{\operatorname{\mathsf{sk}},r} is a parity-check matrix of the underlying Goppa code 𝒞𝗌𝗄,r\mathcal{C}_{\operatorname{\mathsf{sk}},r}, 𝐆𝗌𝗄,r\mathbf{G}_{\operatorname{\mathsf{sk}},r} is the generator matrix of the public code 𝒞𝗉𝗄\mathcal{C}_{\operatorname{\mathsf{pk}}} and 𝐗σ=(xi,j)\mathbf{X}_{\sigma}=(x_{i,j}) is the matrix of the unknown permutation σ\sigma. Note that solving (2) is equivalent to solving a variant of permuted kernel problem [37]. A natural way to solve (2) is to use the brute force attack and such an attack is of order 𝒪(n!)\mathcal{O}(n!). However, the adversary could use Georgiades’ technique [34] where its complexity is given in our case by

𝒪(n!k~!).\mathcal{O}\left(\frac{n!}{\tilde{k}!}\right). (3)

Recently Paiva and Terada introduced in [51] a new technique for solving (2). The workfactor of their attack applied to our scheme is given by:

𝖶𝖥𝖠𝗍𝗍𝖺𝖼𝗄𝖯𝖺𝖳𝖾=𝒪(2(nmtk~n1/5)(log(n)1)0.91n+logn2)\operatorname{\mathsf{WF}}_{\operatorname{\mathsf{Attack}}_{\operatorname{\mathsf{PaTe}}}}=\mathcal{O}\left(2^{(n-mt-\tilde{k}n^{-1/5})(\lceil\log(n)\rceil-1)-0.91n+\frac{\log n}{2}}\right) (4)

From (3) and (4), we can see that a well-chosen set of parameters can avoid the attack of Georgiades as well as that of Paiva and Terada.

In the case of the sender, the key recovery attack consists of first solving the (U,U+VU,U+V) distinguishing problem for finite fields of cardinality q=3q=3. Therefore under Assumption 3 and with a well-chosen set of parameters, this attack would fail.

5.3 IND-CCA and SUF-CMA security

In code-based cryptography, the main approach to a chosen-ciphertext attack against the McEliece encryption scheme consists of adding two errors to the received word. If the decryption succeeds, it means that the error vector in the resulting word has the same weight as the previous one. In our signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme, this implies either recovering the session key KK or distinguishing encapsulation of two different session keys from (e,c,τ)(\textit{{e}},\textit{{c}},\tau). We see that the recovery of the session key KK corresponds to the recovery of plaintext in a 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure version of McEliece’s cryptosystem (see [16] Subsection 3.2). We now have the following theorem:

Theorem 5.1

Under Assumptions 1, 3, and 5, the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme described in Subsection 4.1 is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure.

Proof

Let 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} be a PPT adversary against the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme described in Subsection 4.1 in the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game. Let us denote its advantage by ϵ𝖢𝖢𝖠𝟤,𝖲𝖢𝖳𝖪𝖤𝖬\epsilon_{\operatorname{\mathsf{CCA2}},\operatorname{\mathsf{SCTKEM}}}. For proving Theorem 5.1 we need to bound ϵ𝖢𝖢𝖠𝟤,𝖲𝖢𝖳𝖪𝖤𝖬\epsilon_{\operatorname{\mathsf{CCA2}},\operatorname{\mathsf{SCTKEM}}}.

Game 0: This game is the normal signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game. Let us denote by X0X_{0} the event that the adversary wins Game 0 and 𝖯𝗋(X0)\operatorname{\mathsf{Pr}}(X_{0}) the probability that it happens. Then we have

𝖯𝗋(X0)=ϵ𝖢𝖢𝖠𝟤,𝖲𝖢𝖳𝖪𝖤𝖬\operatorname{\mathsf{Pr}}(X_{0})=\epsilon_{\operatorname{\mathsf{CCA2}},\operatorname{\mathsf{SCTKEM}}}

Game 1: This game corresponds to the simulation of the hash function oracle. Indeed it is the same as Game 0 except that adversary can have access to the hash function oracle: It looks for some pair (τ,y)𝔽2λ×𝔽2κ(\tau^{*},\textit{{y}}^{*})\in\mathbb{F}_{2}^{\lambda}\times\mathbb{F}_{2}^{\kappa} such that e𝐇sT=2(τϖ1(y))\textit{{e}}\mathbf{H}_{s}^{T}=\mathcal{H}_{2}(\tau^{*}\|\varpi\|\mathcal{H}_{1}(\textit{{y}}^{*})). Then, it tries to continue by computing c\textit{{c}}^{\prime}. We can see that it could succeed at least when the following collisions happen:

1(τ)=1(τ)and1(τϖ2(y))=2(τϖ1(y))\mathcal{H}_{1}(\tau^{*})=\mathcal{H}_{1}(\tau)\ \ \text{and}\ \ \mathcal{H}_{1}(\tau^{*}\|\varpi\|\mathcal{H}_{2}(\textit{{y}}^{*}))=\mathcal{H}_{2}(\tau\|\varpi\|\mathcal{H}_{1}(\textit{{y}}))

Therefore, if qhq_{h} is the number of queries allowed and X1X_{1} the event that 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} wins game X1X_{1}, then we have:

|𝖯𝗋(X1)𝖯𝗋(X0)|qh(nt)|\operatorname{\mathsf{Pr}}(X_{1})-\operatorname{\mathsf{Pr}}(X_{0})|\leq\frac{q_{h}}{\binom{n}{t}}

Game 2: This game is the same as Game 1 except that the error vector e in the encapsulation output is generated randomly. We can see that the best to proceed is to split c as (c0c1)(\textit{{c}}_{0}\|\textit{{c}}_{1}) and then try to invert either c0\textit{{c}}_{0} for recovering the error σ\sigma or c1\textit{{c}}_{1} for recovering directly the internal state ϖb\varpi_{b}. That means that the adversary is able either to solve the syndrome decoding problem or to invert a one-time pad function. Therefore we have:

|𝖯𝗋(X1)𝖯𝗋(X2)|ϵ𝖲𝖣+ν()|\operatorname{\mathsf{Pr}}(X_{1})-\operatorname{\mathsf{Pr}}(X_{2})|\leq\epsilon_{\operatorname{\mathsf{SD}}}+\nu(\ell)

where ϵ𝖲𝖣\epsilon_{\operatorname{\mathsf{SD}}} is the advantage of an adversary against the syndrome decoding problem, ν\nu is a negligible function, and \ell is the bit length of the symmetric encryption.

Game 3: This game is the same as Game 2. However, the change is in the key generation algorithm. Indeed, a random code is chosen as the underlying code instead of Goppa. We can see that this change is indistinguishable. In fact, distinguishing this change corresponds to solving in part the Goppa code distinguishing problem. Thus, we have

|𝖯𝗋(X3)𝖯𝗋(X2)|ϵGCD(λ)|\operatorname{\mathsf{Pr}}(X_{3})-\operatorname{\mathsf{Pr}}(X_{2})|\leq\epsilon_{GCD}(\lambda)

where ϵGCD(λ)\epsilon_{GCD}(\lambda) is the advantage of a PPT adversary in the Goppa code distinguishing problem and λ\lambda the security parameter. If there is a PPT adversary 𝒜\mathcal{A} capable of distinguishing this change, we can use it to construct an adversary 𝒜GCD\mathcal{A}_{GCD} to solve the Goppa code distinguishing problem as follows:

  1. 1.

    Once receiving an instance 𝐆𝔽2k×n\mathbf{G}\in\mathbb{F}_{2}^{k\times n} of a generator matrix of a code 𝒞\mathcal{C} in Goppa code distinguishing problem, 𝒜GCD\mathcal{A}_{GCD} extracts a generator matrix 𝐆\mathbf{G}^{\prime} of a subcode 𝒞\mathcal{C}^{\prime} of 𝒞\mathcal{C} and forward it to 𝒜\mathcal{A}.

  2. 2.

    𝒜\mathcal{A} will reply by 11 if the change has happened, i.e., the underlying code is not a Goppa code. It will reply by 0 otherwise.

  3. 3.

    If 𝒜GCD\mathcal{A}_{GCD} receives 11 from 𝒜\mathcal{A}, it means that 𝒞\mathcal{C} is not a Goppa code and 𝒜GCD\mathcal{A}_{GCD} outputs 0, otherwise it returns 11, i.e, 𝒞\mathcal{C} is a Goppa code.

Game 4: This game is the same as Game 3 except that the public key is a random matrix instead of a generator matrix of a permuted subcode. We can see that this change is indistinguishable according to the subcode equivalence assumption. Thus we have:

|𝖯𝗋(X4)𝖯𝗋(X3)|ϵES(λ)|\operatorname{\mathsf{Pr}}(X_{4})-\operatorname{\mathsf{Pr}}(X_{3})|\leq\epsilon_{ES}(\lambda)

where ϵES(λ)\epsilon_{ES}(\lambda) is the advantage of a PPT adversary in the subcode equivalence problem and λ\lambda is the security parameter. Moreover, we can show that if an adversary 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} wins this game, we can use it to construct an adversary 𝒜McE\mathcal{A}_{\text{McE}} for attacking the underlying McEliece scheme in the public key encryption 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game (called 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}} in Appendix 0.A). For more details on the underlying McEliece encryption scheme and its 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} security proof, the reader is referred to Appendix 0.C. We now proceed as follows:

  1. Given the receiver public key 𝗉𝗄\operatorname{\mathsf{pk}} which corresponds to a receiver public key signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}, 𝒜McE\mathcal{A}_{\text{McE}} does the following:

    • \star

      chooses randomly (ϖ0,ϖ1)$𝔽2(\varpi_{0},\varpi_{1})\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathbb{F}_{2}^{\ell}

    • \star

      chooses randomly δ${0,1}\delta\stackrel{{\scriptstyle\$}}{{\leftarrow}}\{0,1\}

    • \star

      sends the public key 𝗉𝗄\operatorname{\mathsf{pk}} and ϖδ\varpi_{\delta} to 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}

  2. Given a tag τ\tau from 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}, 𝒜McE\mathcal{A}_{\text{McE}}:

    • \star

      sends the pair (1(τ)ϖ0\mathcal{H}_{1}(\tau)\|\varpi_{0},1(τ)ϖ1\mathcal{H}_{1}(\tau)\|\varpi_{1}) to the encryption oracle of 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}

    • \star

      forwards c received from the encryption oracle to 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}

  3. For every decryption query (ci\textit{{c}}_{i}, τi\tau_{i}) from 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}:

    • \star

      if ci=c\textit{{c}}_{i}=\textit{{c}}, 𝒜McE\mathcal{A}_{\text{McE}} return \perp to 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}, otherwise it sends ci\textit{{c}}_{i} to the decryption oracle of 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}.

    • \star

      Receiving τiϖi\tau_{i}^{\prime}\|\varpi_{i} from the decryption oracle:

      • \triangleright

        if τi1(τi)\tau_{i}^{\prime}\neq\mathcal{H}_{1}(\tau_{i}), 𝒜McE\mathcal{A}_{\text{McE}} returns \perp to 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}, otherwise, it returns ϖi\varpi_{i} to 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}}

  4. When 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} outputs δ~=δ\tilde{\delta}=\delta, 𝒜McE\mathcal{A}_{\text{McE}} returns 1, otherwise, it returns 0.

Let ϵPKE\epsilon_{\text{PKE}} be the advantage of 𝒜McE\mathcal{A}_{\text{McE}} in the 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}. Note that the target ciphertext c can be uniquely decrypted to 1(τ))ϖδ\mathcal{H}_{1}(\tau))\|\varpi_{\delta}. Therefore any (c,τ)(\textit{{c}},\tau^{\prime}) other than (c,τ)(\textit{{c}},\tau) cannot be a valid signcryption ciphertext unless collusion of 1\mathcal{H}_{1} takes place, i.e., 1(τi)=1(τ)\mathcal{H}_{1}(\tau_{i})=\mathcal{H}_{1}(\tau). The correct answer to any decryption query with ci=c\textit{{c}}_{i}=\textit{{c}} is \perp. Decryption queries from 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} are correctly answered since ci\textit{{c}}_{i} is decrypted by the decryption oracle of 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}.

When 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} outputs δ~\tilde{\delta}, it means that ϖδ\varpi_{\delta} is embedded in ci\textit{{c}}_{i} otherwise ϖ1δ\varpi_{1-\delta} is embedded. It means that the adversary 𝒜McE\mathcal{A}_{\text{McE}} wins game 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}} with the same probability as 𝒜𝖢𝖢𝖠𝟤\mathcal{A}_{\operatorname{\mathsf{CCA2}}} wins Game 4 when collision of 1\mathcal{H}_{1} has happened. Let X~\tilde{X} be the event collision of 1\mathcal{H}_{1} has happened and X~4\tilde{X}_{4} the event 𝒜McE\mathcal{A}_{\text{McE}} wins the 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}. Let us denote by ϵpke\epsilon_{pke} the probability of the event X~4\tilde{X}_{4} and ϵcol\epsilon_{col} that of X~\tilde{X}. Therefore we have:

𝖯𝗋(X4|X~)=𝖯𝗋(X~4)𝖯𝗋(X4)𝖯𝗋(X~4)+𝖯𝗋(X~)\operatorname{\mathsf{Pr}}(X_{4}|\tilde{X})=\operatorname{\mathsf{Pr}}(\tilde{X}_{4})\Longrightarrow\operatorname{\mathsf{Pr}}(X_{4})\leq\operatorname{\mathsf{Pr}}(\tilde{X}_{4})+\operatorname{\mathsf{Pr}}(\tilde{X})

By putting it all together, we conclude our proof.

Theorem 5.2

Under Assumptions 2 and 4, the signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} scheme described in Subsection 4.1 is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure.

Proof

Let 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} be an adversary against our signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} in the 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} game and ϵ𝖢𝖬𝖠\epsilon_{\operatorname{\mathsf{CMA}}} its advantage. For the forgery of our signcryption, adversary 𝖢𝖬𝖠\mathcal{F}_{\operatorname{\mathsf{CMA}}} needs to first find a pair (e,y)𝒲q,n,ω×𝔽2k~(\textit{{e}},\textit{{y}})\in\mathcal{W}_{q,n,\omega}\times\mathbb{F}_{2}^{\tilde{k}} such that e𝐇𝗉𝗄,sT=2(τϖy)\textit{{e}}\mathbf{H}_{\operatorname{\mathsf{pk}},s}^{T}=\mathcal{H}_{2}(\tau\|\varpi\|\textit{{y}}). Then, it will try to find r𝔽2κ\textit{{r}}\in\mathbb{F}_{2}^{\kappa} such that 1(r)=y\mathcal{H}_{1}(\textit{{r}})=\textit{{y}}, i.e., it wins in the target pre-image free game (see Appendix 0.B) against the cryptographic hash function 1\mathcal{H}_{1}. We can see that finding (e,y)𝒲q,n,ω×𝔽2k~(\textit{{e}},\textit{{y}})\in\mathcal{W}_{q,n,\omega}\times\mathbb{F}_{2}^{\tilde{k}} such that e𝐇𝗉𝗄,sT=2(τϖy)\textit{{e}}\mathbf{H}_{\operatorname{\mathsf{pk}},s}^{T}=\mathcal{H}_{2}(\tau\|\varpi\|\textit{{y}}) corresponds to the forgery of the underlying Wave signature scheme. Let ϵPreIm\epsilon_{\text{PreIm}} be the advantage of an adversary in the pre-image free game against a cryptographic hash function. Let 𝒜Wave,𝖢𝖬𝖠\mathcal{A}_{\text{Wave},\operatorname{\mathsf{CMA}}} be an adversary against the Wave signature in the 𝖤𝖴𝖥𝖢𝖬𝖠{\operatorname{\mathsf{EUF-CMA}}} game and ϵWave,EUF\epsilon_{Wave,EUF} its advantage. Let XX be the event that 𝒜Wave,𝖢𝖬𝖠\mathcal{A}_{\text{Wave},\operatorname{\mathsf{CMA}}} wins. Let X~\tilde{X} be the event that the adversary is able to find a pre-image x of y by 1\mathcal{H}_{1} such that x𝔽2κ\textit{{x}}\in\mathbb{F}_{2}^{\kappa}. We have:

𝖯𝗋(𝖢𝖬𝖠wins)=𝖯𝗋(XandX~)\operatorname{\mathsf{Pr}}(\mathcal{F}_{\operatorname{\mathsf{CMA}}}\ \mbox{wins})=\operatorname{\mathsf{Pr}}(X\ \mbox{and}\ \tilde{X})
𝖯𝗋(X)+𝖯𝗋(X~)\hskip 85.35826pt\leq\operatorname{\mathsf{Pr}}(X)+\operatorname{\mathsf{Pr}}(\tilde{X})
ϵWave,𝖤𝖴𝖥+ϵPreIm2κ\hskip 108.12054pt\leq\epsilon_{\text{Wave},\operatorname{\mathsf{EUF}}}+\dfrac{\epsilon_{\text{PreIm}}}{2^{\kappa}}

Note that due to the fact that 1\mathcal{H}_{1} is a cryptographic hash function, ϵPreIm\epsilon_{\text{PreIm}} is negligible and that concludes our proof.

Corollary 1

The signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} described in Subsection 4.1 is secure.

The above corollary is a consequence of Theorems 5.1 and 5.2. We then have the following.

Proposition 1

Under Assumptions 1, 3, and 5, the hybrid signcryption tag-𝖪𝖤𝖬+𝖣𝖤𝖬\operatorname{\mathsf{KEM}}+\operatorname{\mathsf{DEM}} scheme described in Subsection 4.2 is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}}.

Proof

  

Proposition 1 is a consequence of Theorem 3.1. Indeed, under Assumptions 1, 3, and 5, the underlying signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure (see Theorem 5.1). In addition, the symmetric encryption scheme used is OT-secure. Therefore, a direct application of Theorem 3.1 allows us to achieve the proof.

Proposition 2

Under Assumptions 2 and 4, the hybrid signcryption tag-𝖪𝖤𝖬+𝖣𝖤𝖬\operatorname{\mathsf{KEM}}+\operatorname{\mathsf{DEM}} scheme described in Subsection 4.2 is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure.

Proof

  

Under Assumptions 2 and 4, the underlying signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure and, therefore, according to the Theorem 3.1, the proposed hybrid signcryption tag-𝖪𝖤𝖬+𝖣𝖤𝖬\operatorname{\mathsf{KEM}}+\operatorname{\mathsf{DEM}} is 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure.

6 Parameter values

For our scheme, we choose parameters such that λ0=λ+2log2(q𝗌𝗂𝗀𝗇)\lambda_{0}=\lambda+2\log_{2}(q_{\operatorname{\mathsf{sign}}}) and λMcE\lambda_{\text{McE}} of the underlying Wave signature and McEliece’s encryption, respectively, satisfy max(λ0,λMcE)(nrt)\max(\lambda_{0},\lambda_{\text{McE}})\leq\left\lfloor\binom{n_{r}}{t}\right\rfloor. According to the sender and receiver keys, the size of our ciphertext is given by

|E|=|e|+|c|+|C|=2ns+nr+k~+2.|E|=|\textit{{e}}|+|\textit{{c}}|+|C|=2n_{s}+n_{r}+\tilde{k}+2\ell.

Table 1 gives suggested values of the parameters of our scheme. These values have been derived using those of Wave [5] and Classic McEliece [2] for NIST PQC Level 1 security. According to the values given in Table 1, the ciphertext size in bits of our scheme is in the order of |E|=2.9×104|E|=2.9\times 10^{4}.

Parameter nsn_{s} kUk_{U} kVk_{V} ω\omega mm tt nrn_{r} k~\tilde{k} \ell
Value 8492 3558 2047 7980 12 64 3488 1815 512
Table 1: Parameter values of the proposed scheme.

Table 2 provides key sizes of our scheme in terms of relevant parameters. Then in Table 3 we give a numerical comparison of key and ciphertext sizes of our scheme with some existing lattice-based hybrid signcryption schemes. The rationale behind comparing our scheme against lattice-based schemes is that no code-based hybrid signcryption scheme exists in the literature and the underlying hard problems in both codes- and lattice-based schemes are considered quantum-safe. For the lattice-based schemes in our comparison, the parameters, including plaintext size of 512 bits, are from [58, Table 2]. We can see that for post-quantum security level 1 the proposed scheme has the smallest key and ciphertext sizes.

User Public key Secret key
Receiver’s key size k~nr\tilde{k}n_{r} m(2nr+tk~t)+k~nrm(2n_{r}+t-\tilde{k}t)+\tilde{k}n_{r}
Sender’s key size r(nsr)log2(q)r(n_{s}-r)\log_{2}(q) (ns(ns+r)+r2)log2(q)(n_{s}(n_{s}+r)+r^{2})\log_{2}(q)
Table 2: Key sizes of the proposed scheme.
Construction Receiver’s key size Sender’s key size   Ciph. size
Pub. key Sec. key Pub. key Sec. key
SCTKSC_{TK} [58, 19] 8.5×1078.5\times 10^{7} 4.2×1084.2\times 10^{8} 8.4×1078.4\times 10^{7} 4.2×1084.2\times 10^{8} 5.5×1055.5\times 10^{5}
SCKEMSC_{KEM} [58, 19] 5.7×1075.7\times 10^{7} 4.2×1084.2\times 10^{8} 8.5×1078.5\times 10^{7} 4.2×1084.2\times 10^{8} 5.2×1055.2\times 10^{5}
SCCHKSC_{CHK} [58, 50] 2.8×1072.8\times 10^{7} 4.2×1084.2\times 10^{8} 2.8×1072.8\times 10^{7} 4.2×1084.2\times 10^{8} 4.5×1064.5\times 10^{6}
Shingo and Junji [58] 2.8×1072.8\times 10^{7} 4.2×1084.2\times 10^{8} 2.8×1072.8\times 10^{7} 4.2×1084.2\times 10^{8} 4.0×1054.0\times 10^{5}
Our scheme 6.3×1066.3\times 10^{6} 5.0×1065.0\times 10^{6} 2.6×1072.6\times 10^{7} 1.7×1081.7\times 10^{8} 2.1×1042.1\times 10^{4}
Table 3: Size comparison (in bits) of the proposed scheme with the lattice-based schemes of [58, 50, 19].

7 Conclusion

In this paper, we have proposed a new signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} based on coding theory. The security of our scheme relies on known hard problems in coding theory. We have used the proposed signcryption scheme to design a new code-based hybrid signcryption tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}+𝖣𝖤𝖬\operatorname{\mathsf{DEM}}. We have proven that the proposed schemes are 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} and 𝖲𝖴𝖥𝖢𝖬𝖠\operatorname{\mathsf{SUF-CMA}} secure against any probabilistic polynomial-time adversary. The proposed scheme has a smaller ciphertext size compared to the pertinent lattice-based schemes.

References

  • [1] N. Aragon, O. Blazy, P. Gaborit, A. Hauteville, and G. Zémor, “Durandal: a rank metric based signature scheme,” in Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, 2019, pp. 728–758.
  • [2] M. R. Albrecht, D. J. Bernstein et al., “Classic McEliece: conservative code-based cryptography.” Online Available: https://classic.mceliece.org/nist/mceliece-20201010.pdf
  • [3] J. Baek, R. Steinfeld, and Y. Zheng, “Formal proofs for the security of signcryption,” Journal of Cryptology, vol. 20, no. 2, pp. 203–235, 2007.
  • [4] G. Banegas, P. S. Barreto, B. O. Boidje, P.-L. Cayrel, G. N. Dione, K. Gaj, C. T. Gueye, R. Haeussler, J. B. Klamti, O. N’diaye et al., “Dags: Key encapsulation using dyadic gs codes,” Journal of Mathematical Cryptology, vol. 12, no. 4, pp. 221–239, 2018.
  • [5] G. Banegas, T. Debris-Alazard, M. Nedeljkovic, and B. Smith, “Wavelet: Code-based postquantum signatures with fast verification on microcontrollers,” arXiv preprint arXiv:2110.13488, 2021.
  • [6] E. Barelli and A. Couvreur, “An efficient structural attack on NIST submission DAGS,” in International Conference on the Theory and Application of Cryptology and Information Security. Springer, 2018, pp. 93–118
  • [7] P. S. Barreto, B. Libert, N. McCullagh, and J.-J. Quisquater, “Signcryption schemes based on the Diffie–Hellman problem,” in Practical Signcryption. Springer, 2010, pp. 57–69.
  • [8] P. S. Barreto, B. Libert, N. McCullagh and J. Quisquater, “Signcryption schemes based on bilinear maps,” in Practical Signcryption. Springer, 2010, pp. 71–97.
  • [9] P. S. Barreto, R. Lindner, and R. Misoczki, “Monoidic codes in cryptography,” in International Workshop on Post-Quantum Cryptography. Springer, 2011, pp. 179–199.
  • [10] T. P. Berger, C. T. Gueye, and J. B. Klamti, “A NP-complete problem in coding theory with application to code based cryptography,” in International Conference on Codes, Cryptology, and Information Security. Springer, 2017, pp. 230–237.
  • [11] T. P. Berger and P. Loidreau, “How to mask the structure of codes for a cryptographic use,” Designs, Codes and Cryptography, vol. 35, no. 1, pp. 63–79, 2005.
  • [12] T. P. Berger, P.-L. Cayrel, P. Gaborit, and A. Otmani, “Reducing key length of the McEliece cryptosystem,” in International Conference on Cryptology in Africa. Springer, 2009, pp. 77–97.
  • [13] E. Berlekamp, R. McEliece, and H. Van Tilborg, “On the inherent intractability of certain coding problems (corresp.),” IEEE Transactions on Information Theory, vol. 24, no. 3, pp. 384–386, 1978.
  • [14] T. E. Bjørstad and A. W. Dent, “Building better signcryption schemes with tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}}s,” in International Workshop on Public Key Cryptography. Springer, 2006, pp. 491–507.
  • [15] J.-F. Biasse, G. Micheli, E. Persichetti, and P. Santini, “Less is more: Code-based signatures without syndromes.” in International Conference on Cryptology in Africa. Springer, Cham, 2020. p. 45-65.
  • [16] P.-L. Cayrel, G. Hoffmann, and E. Persichetti, “Efficient implementation of a CCA2-secure variant of McEliece using generalized Srivastava codes,” in International Workshop on Public Key Cryptography. Springer, 2012, pp. 138–155.
  • [17] P.-L. Cayrel, C. T. Gueye, O. Ndiaye, E. Persichetti et al., “Efficient implementation of hybrid encryption from coding theory,” in International Conference on Codes, Cryptology, and Information Security. Springer, 2017, pp. 254–264.
  • [18] P.-L. Cayrel, P. Véron, and S. M. E. Y. Alaoui, “A zero-knowledge identification scheme based on the q-ary syndrome decoding problem,” in International Workshop on Selected Areas in Cryptography. Springer, 2010, pp. 171–186.
  • [19] D. Chiba, T. Matsuda, J. C. Schuldt, and K. Matsuura, “Efficient generic constructions of signcryption with insider security in the multi-user setting,” in International Conference on Applied Cryptography and Network Security. Springer, 2011, pp. 220–237.
  • [20] N. T. Courtois, M. Finiasz, and N. Sendrier, “How to achieve a McEliece-based digital signature scheme,” in International Conference on the Theory and Application of Cryptology and Information Security. Springer, 2001, pp. 157–174.
  • [21] R. Cramer and V. Shoup, “Design and analysis of practical public-key encryption schemes secure against adaptive chosen ciphertext attack,” SIAM Journal on Computing, vol. 33, no. 1, pp. 167–226, 2003.
  • [22] T. Debris-Alazard, N. Sendrier, and J.-P. Tillich, “The problem with the SURF scheme,” arXiv preprint arXiv:1706.08065, 2017.
  • [23] T. Debris-Alazard, N. Sendrier, and J.-P. Tillich, “Wave: A new code-based signature scheme,” Technical report, Cryptology ePrint Archive: Report 2018/996, 2018, https://eprint.iacr.org/2018/996/20181022:154324
  • [24] T. Debris-Alazard, N. Sendrier, and J.-P. Tillich, “Wave: A new family of trapdoor one-way preimage sampleable functions based on codes,” in International Conference on the Theory and Application of Cryptology and Information Security. Springer, 2019, pp. 21–51.
  • [25] A. W. Dent, “Hybrid cryptography,”Technical report, Cryptology ePrint Archive, Report 2004/210, 2004, https://eprint.iacr.org/2004/210.
  • [26] A. W. Dent, “Hybrid signcryption schemes with insider security,” in Australasian Conference on Information Security and Privacy. Springer, 2005, pp. 253–266.
  • [27] A. W. Dent, “Hybrid signcryption schemes with outsider security,” in International Conference on Information Security. Springer, 2005, pp. 203–217.
  • [28] A. W. Dent and J. Malone-Lee, “Signcryption schemes based on the RSA problem,” in Practical Signcryption. Springer, 2010, pp. 99–117.
  • [29] A. W. Dent and Y. Zheng, Eds., Practical signcryption, ser. Information Security and Cryptography. Springer, 2010.
  • [30] J.-C. Faugere, V. Gauthier-Umana, A. Otmani, L. Perret, and J.-P. Tillich, “A distinguisher for high-rate McEliece cryptosystems,” IEEE Transactions on Information Theory, vol. 59, no. 10, pp. 6830–6844, 2013.
  • [31] A. Fiat and A. Shamir, “How to prove yourself: Practical solutions to identification and signature problems,” in Conference on the theory and application of cryptographic techniques. Springer, 1986, pp. 186–194.
  • [32] K. Fukushima, P. S. Roy, R. Xu, S. Kiyomoto, K. Morozov, and T. Takagi, “Racoss: Random code-based signature scheme,” Submission to NIST post-quantum standardization process, 2017.
  • [33] E. Fujisaki and T. Okamoto, “Secure integration of asymmetric and symmetric encryption schemes,” in Annual International Cryptology Conference. Springer, 1999, pp. 537–554.
  • [34] J. Georgiades, “Some remarks on the security of the identification scheme based on permuted kernels,” Journal of Cryptology 5(2), 133-137 (Jan 1992)
  • [35] A. Jain, S. Krenn, K. Pietrzak, and A. Tentes, “Commitments and efficient zero-knowledge proofs from learning parity with noise,” in International Conference on the Theory and Application of Cryptology and Information Security. Springer, 2012, pp. 663–680.
  • [36] T. Johansson and F. Jonsson, “On the complexity of some cryptographic problems based on the general decoding problem,” IEEE Transactions on Information Theory, vol. 48, no. 10, pp. 2669–2678, 2002.
  • [37] R.   Lampe, J.   Patarin, “Analysis of some natural variants of the PKP algorithm.” In: Proceedings of the International Conference on Security and Cryptography - Volume 1: SECRYPT, (ICETE 2012). pp. 209-214. INSTICC, SciTePress (2012).
  • [38] H.   Q. Le, D. H. Duong, P.  S. Roy, W. Susilo, K. Fukushima, S. Kiyomoto, “Lattice-based signcryption with equality test in standard model.” Computer Standards & Interfaces p.103515 (2021).
  • [39] F. Li, F. T. Bin Muhaya, M. K. Khan, and T. Takagi, “Lattice-based signcryption,” Concurrency and Computation: Practice and Experience, vol. 25, no. 14, pp. 2112–2122, 2013.
  • [40] V. Lyubashevsky, “Fiat-shamir with aborts: Applications to lattice and factoring-based signatures,” in International Conference on the Theory and Application of Cryptology and Information Security. Springer, 2009, pp. 598–616.
  • [41] Z. Li, C. Xing, and S. L. Yeo, “A new code based signature scheme without trapdoors.” IACR Cryptol. ePrint Arch., vol. 2020, p. 1250, 2020.
  • [42] K. P. Mathew, S. Vasant, and C. P. Rangan, “On provably secure code-based signature and signcryption scheme,” IACR Cryptology ePrint Archive, vol. 2012, p. 585, 2012.
  • [43] K. P. Mathew, S. Vasant, and C. P. Rangan, “Efficient code-based hybrid and deterministic encryptions in the standard model,” in International Conference on Information Security and Cryptology. Springer, 2013, pp. 517–535.
  • [44] I. Márquez-Corbella and R. Pellikaan, “Error-correcting pairs for a public-key cryptosystem,” CBC 2012, Code-based Cryptography Workshop, 2012. Available on http://www.win.tue.nl/~ruudp/paper/59.pdf.
  • [45] R. J. McEliece, “A public-key cryptosystem based on algebraic coding theory,” DSN progress report, pp. 42–44, 1978.
  • [46] R. Misoczki and P. S. Barreto, “Compact McEliece keys from Goppa codes,” in International Workshop on Selected Areas in Cryptography. Springer, 2009, pp. 376–392.
  • [47] R. Misoczki, J.-P. Tillich, N. Sendrier, and P. S. Barreto, “MDPC-McEliece: New McEliece variants from moderate density parity-check codes,” in 2013 IEEE international symposium on information theory. IEEE, 2013, pp. 2069–2073.
  • [48] R. Mora and J.-P. Tillich, Jean-Pierre, “On the dimension and structure of the square of the dual of a Goppa code,” WCC 2022: The Twelfth International Workshop on Coding and Cryptography March 7 - 11, 2022, Rostock (Germany). Available on https://www.wcc2022.uni-rostock.de/storages/uni-rostock/Tagungen/WCC2022/Papers/WCC_2022_paper_68.pdf
  • [49] H. Niederreiter, “Knapsack-type cryptosystems and algebraic coding theory,” Prob. Control and Inf. Theory, vol. 15, no. 2, pp. 159–166, 1986.
  • [50] R. Nakano and J. Shikata, “Constructions of signcryption in the multi-user setting from identity-based encryption,” in IMA International Conference on Cryptography and Coding. Springer, 2013, pp. 324–343.
  • [51] T.   B.   Paiva, R.   Terada, “Cryptanalysis of the Binary Permuted Kernel Problem,” In International Conference on Applied Cryptography and Network Security, Springer, Cham, 2021, pp. 396-423.
  • [52] E. Persichetti, “Compact McEliece keys based on quasi-dyadic Srivastava codes,” Journal of Mathematical Cryptology, vol. 6, no. 2, pp. 149–169, 2012.
  • [53] E. Persichetti, “Secure and anonymous hybrid encryption from coding theory,” in International Workshop on Post-Quantum Cryptography. Springer, 2013, pp. 174–187.
  • [54] E. Persichetti, “Efficient one-time signatures from quasi-cyclic codes: A full treatment,” Cryptography, vol. 2, no. 4, p. 30, 2018.
  • [55] E. Persichetti, “Improving the efficiency of code-based cryptography,” Ph.D. dissertation, University of Auckland, 2012.
  • [56] E. Prange, “The use of information sets in decoding cyclic codes,” IRE Transactions on Information Theory, vol. 8, no. 5, pp. 5–9, 1962.
  • [57] N. Sendrier, “Decoding one out of many,” in International Workshop on Post-Quantum Cryptography. Springer, 2011, pp. 51–67.
  • [58] S. Sato and J. Shikata, “Lattice-based signcryption without random oracles,” in International Conference on Post-Quantum Cryptography. Springer, 2018, pp. 331–351.
  • [59] Y. Song, Z. Li, Y. Li, and J. Li, “Attribute-based signcryption scheme based on linear codes,” Information Sciences, vol. 417, pp. 301–309, 2017.
  • [60] Y. Song, X. Huang, Y. Mu, W. Wu, and H. Wang, “A code-based signature scheme from the Lyubashevsky framework,” Theoretical Computer Science, vol. 835, pp. 15–30, 2020.
  • [61] R. Steinfeld and Y. Zheng, “A signcryption scheme based on integer factorization,” in International Workshop on Information Security. Springer, 2000, pp. 308–322.
  • [62] J. Stern, “A new identification scheme based on syndrome decoding,” in Annual International Cryptology Conference. Springer, 1993, pp. 13–21.
  • [63] X. Yang, H. Cao, W. Li, and H. Xuan, “Improved lattice-based signcryption in the standard model,” IEEE Access, vol. 7, pp. 155 552–155 562, 2019.
  • [64] J. Yan, L. Wang, L. Wang, Y. Yang, W. Yao, “Efficient lattice-based signcryption in standard model,” Mathematical Problems in Engineering (2013).
  • [65] M. Yoshida and T. Fujiwara, “On the security of tag-𝖪𝖤𝖬\operatorname{\mathsf{KEM}} for signcryption,” Electronic Notes in Theoretical Computer Science, vol. 171, no. 1, pp. 83–91, 2007.
  • [66] X. Zhao, X. Wang, “An efficient identity-based signcryption from lattice,” International Journal of Security and Its Applications8(2), 363–374 (2014).
  • [67] Y. Zheng, “Digital signcryption or how to achieve cost (signature & encryption)<< cost (signature)+ cost (encryption),” in Annual international cryptology conference. Springer, 1997, pp. 165–179.
  • [68] Y. Zheng and H. Imai, “How to construct efficient signcryption schemes on elliptic curves,” Information processing letters, vol. 68, no. 5, pp. 227–233, 1998

Appendix 0.A PKE.Game

Here we recall the 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} game for PKE called 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}} in our scheme. The decryption oracle is denoted by 𝒪\mathcal{O}.

𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}} 1. Step 1: (𝗉𝗄,𝗌𝗄)𝖪𝖾𝗒𝖦𝖾𝗇(1λ)(\operatorname{\mathsf{pk}},\operatorname{\mathsf{sk}})\longleftarrow\operatorname{\mathsf{KeyGen}}(1^{\lambda}) 2. Step 2: (m0,m1,ρ)𝒜McE𝒪(𝗉𝗄)(\textit{{m}}_{0},\textit{{m}}_{1},\rho)\longleftarrow\mathcal{A}_{\text{McE}}^{\mathcal{O}}(\operatorname{\mathsf{pk}}) 3. Step 3: b${0,1}b\stackrel{{\scriptstyle\$}}{{\leftarrow}}\{0,1\} and c𝖯𝖪𝖤.𝖤𝗇𝖼𝗋𝗒𝗉𝗍𝗉𝗄(mb)\textit{{c}}\longleftarrow\operatorname{\mathsf{PKE.Encrypt}}_{\operatorname{\mathsf{pk}}}(\textit{{m}}_{b}) where 𝖯𝖪𝖤.𝖤𝗇𝖼𝗋𝗒𝗉𝗍𝗉𝗄\operatorname{\mathsf{PKE.Encrypt}}_{\operatorname{\mathsf{pk}}} (resp. 𝖯𝖪𝖤.𝖣𝖾𝖼𝗋𝗒𝗉𝗍𝗌𝗄\operatorname{\mathsf{PKE.Decrypt}}_{\operatorname{\mathsf{sk}}}) is the encryption (resp. decryption) algorithm in the PKE scheme. 4. Step 4: b~𝒜McE𝒪\tilde{b}\longleftarrow\mathcal{A}_{\text{McE}}^{\mathcal{O}}

Figure 11: 𝖯𝖪𝖤.𝖦𝖺𝗆𝖾\operatorname{\mathsf{PKE.Game}}

In Step 4. the adversary 𝒜McE\mathcal{A}_{\text{McE}} is restricted not to make request to 𝒪\mathcal{O} on the ciphertext c. Clear texts m0\textit{{m}}_{0} and m1\textit{{m}}_{1} must have the same length. 𝒜McE\mathcal{A}_{\text{McE}} wins when b~=b\tilde{b}=b and its advantage corresponds to the probability that it wins this game which is denoted by ϵpke\epsilon_{pke}.

Appendix 0.B Target Preimage-Free

Target Preimage-Free function is a special case of universal one-way function; An adversary is given (,y)(\mathcal{H},\textit{{y}}) (chosen at random in their domain) and then attempts to find x such that (x)=y\mathcal{H}(\textit{{x}})=\textit{{y}}. Let χλ={X}\chi_{\lambda}=\{X\} be a collection of domains and χ={χλ}λ\chi=\{\chi_{\lambda}\}_{\lambda\in\mathbb{N}}. Let ~λ={:X{0,1}λ:Xχλ}\tilde{\mathcal{H}}_{\lambda}=\{\mathcal{H}:X\longrightarrow\{0,1\}^{\lambda}\ :\ X\in\chi_{\lambda}\} and ~={~λ}λ\tilde{\mathcal{H}}=\{\tilde{\mathcal{H}}_{\lambda}\}_{\lambda\in\mathbb{N}}. Note that XX is identified by the description of \mathcal{H}. Let 𝒜PreIm\mathcal{A}_{\text{PreIm}} be an adversary playing the following game.

𝖯𝗋𝖾𝗂𝗆𝖺𝗀𝖾.𝖦𝖺𝗆𝖾\operatorname{\mathsf{Preimage.Game}} 1. Step 1: ~λ\mathcal{H}\longrightarrow\tilde{\mathcal{H}}_{\lambda} 2. Step 2: y{0,1}λ\textit{{y}}\longrightarrow\{0,1\}^{\lambda} 3. Step 3: x𝒜PreIm(,y)\textit{{x}}\longrightarrow\mathcal{A}_{\text{PreIm}}(\mathcal{H},\textit{{y}}) such that xX\textit{{x}}\in X.

Figure 12: Preimage game

𝒜PreIm\mathcal{A}_{\text{PreIm}} wins the game when (x)=y\mathcal{H}(\textit{{x}})=\textit{{y}} and the advantage of 𝒜PreIm\mathcal{A}_{\text{PreIm}} is the probability that it wins 𝖯𝗋𝖾𝗂𝗆𝖺𝗀𝖾.𝖦𝖺𝗆𝖾\operatorname{\mathsf{Preimage.Game}} for a given ~λ\mathcal{H}\longrightarrow\tilde{\mathcal{H}}_{\lambda} and y{0,1}λ\textit{{y}}\in\{0,1\}^{\lambda}. We say that ~\tilde{\mathcal{H}} is Target Preimage free with regard to χ\chi when the advantage ϵPreIm\epsilon_{\text{PreIm}} of 𝒜PreIm\mathcal{A}_{\text{PreIm}} is negligible.

Appendix 0.C Security of the McEliece encryption with Fujisaki-Okamoto transformation

For the IND-CCA security of McEliece’s scheme described in Figure 1, we need the following definition:

Definition 2

(γ\gamma-uniformity [16]) A public key encryption scheme Π\Pi is called γ\gamma-uniform and \mathcal{R} be the set where the randomness to be used in the (probabilistic) encryption is chosen. For a given key-pair (𝗉𝗄,𝗌𝗄)(\operatorname{\mathsf{pk}},\operatorname{\mathsf{sk}}), x be a plaintext and a string y, we define

γ(y)=Pr[r$:y=𝗉𝗄(x,r)]\gamma(\textit{{y}})=Pr[\textit{{r}}\stackrel{{\scriptstyle\$}}{{\leftarrow}}\mathcal{R}:\textit{{y}}=\mathcal{E}_{\operatorname{\mathsf{pk}}}(\textit{{x}},\textit{{r}})]

where the notation 𝗉𝗄(x,r)\mathcal{E}_{\operatorname{\mathsf{pk}}}(\textit{{x}},\textit{{r}}) makes the role of the randomness r explicit. We say that Π\Pi is γ\gamma-uniform if, for any key-pair (𝗉𝗄,𝗌𝗄)(\operatorname{\mathsf{pk}},\operatorname{\mathsf{sk}}), any plaintext x and any ciphertext y, γ(x,y)γ\gamma(\textit{{x}},\textit{{y}})\leq\gamma for a certain γ\gamma\in\mathbb{R}.

We now can state the following lemma.

Lemma 1

The McEliece scheme with the Fujisaki-Okamoto transformation described in Figure 1 is γ\gamma uniform with

γ=12k~(nt)\gamma=\frac{1}{2^{\tilde{k}}\binom{n}{t}}
Proof

For any vector y𝔽2nr\textit{{y}}\in\mathbb{F}_{2}^{n_{r}}, either y is a word at distance tt from the code 𝒞\mathcal{C} of generator matrix 𝐆𝗉𝗄,r\mathbf{G}_{\operatorname{\mathsf{pk}},r}, or it isn’t. When y is not a distance tt of 𝒞\mathcal{C}, the probability for it to be a valid ciphertext is equal to 0. Else there is only one choice for r and e such that y=r𝐆𝗉𝗄,re\textit{{y}}=\textit{{r}}\mathbf{G}_{\operatorname{\mathsf{pk}},r}\oplus\textit{{e}}, i.e.,

𝖯𝗋(d(y,𝒞))=t)=12k~(nrt)\operatorname{\mathsf{Pr}}(d(\textit{{y}},\mathcal{C}))=t)=\frac{1}{2^{\tilde{k}}\binom{n_{r}}{t}}
Theorem 0.C.1

Under Assumptions 1, 3, and 5 the McEliece scheme based on a subcode of Goppa code with the Fujisaki-Okamoto transformation described in Figure 1 is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure.

Proof

In Figure 1, the symmetric encryption used is the XOR function which is a one-time pad. Under Assumptions 1 and 3, the old McEliece encryption scheme is one-way secure. Therefore according to Theorem 12 of [33], the McEliece scheme with the Fujisaki-Okamoto transformation is 𝖨𝖭𝖣𝖢𝖢𝖠𝟤\operatorname{\mathsf{IND-CCA2}} secure.