\addbibresource

literature.bib

Information-Set Decoding for Convolutional Codes

Niklas Gassner, Julia Lieb, Abhinaba Mazumder, and Michael Schaller
Abstract

In this paper, we present a framework for generic decoding of convolutional codes, which allows us to do cryptanalysis of code-based systems that use convolutional codes. We then apply this framework to information set decoding, study success probabilities and give tools to choose variables. Finally, we use this to attack two cryptosystems based on convolutional codes. In the case of [bolkema2017variations], our code recovered about 74% of errors in less than 10 hours each, and in the case of [almeidaBNS21], we give experimental evidence that 80% of the errors can be recovered in times corresponding to about 60 bits of operational security, with some instances being significantly lower.

1 Introduction

Current cryptographic systems rely on the hardness of integer factorisation or the discrete logarithm problem. These problems can be solved efficiently with Shor’s algorithm on a quantum computer [shor]. This led to a new interest in post-quantum cryptography, a part of which is cryptography based on linear codes. The first code-based cryptosystem was proposed in 1978 by McEliece [mceliece] and uses binary Goppa-codes. The proposal is still fundamentally intact and the proposal Classic McEliece [NISTMcEliece] is based on it. Round 4 of the currently ongoing post-quantum competition of the National Institute of Standards and Technology (NIST) features three code-based public-key submissions, the already mentioned Classic McEliece, BIKE [NISTBike], and HQC [NISTHQC].

There have been proposals not featured in the NIST post-quantum competition based on convolutional codes, such as [londahl2012new] (attacked in [londahlattack]), [almeidaBNS23], or [moufek2018new]. The rationale behind this is that the key size is linear in the memory of the convolutional code, while security levels are reliant on the size of the sliding generator or parity-check matrix, leading to an expected exponential increase in time for generic decoding methods and thus, increased security. For example, in the Viterbi algorithm [viterbi] the decoding complexity is exponential in the degree. Additionally for the receiver of the ciphertext, decoding a convolutional code can be done sequentially.

In this paper, we provide a framework for generic decoding of convolutional codes (which are not tail-biting) which is similar to sliding window decoding and apply it to information-set decoding. The framework resembles the idea of sequential decoding, which was introduced in [wozencraft]. We study success probabilities of several aspects of the algorithm and give tools to choose parameters in the framework. Finally, we use it to attack the system proposed in [bolkema2017variations] and a set of parameters of the system proposed in [almeidaBNS21]. Note that there exists an updated version [almeidaBNS23] with tail-biting convolutional codes, where our attack does not apply.

The paper is organised as follows.

In the second chapter, we give an overview of linear codes and especially convolutional codes, where we introduce all the notions and notations necessary for understanding our work.

In the third chapter, we cover the basics of information-set decoding, a class of generic decoding methods for linear codes, where we mainly talk about Prange’s algorithm.

The remaining chapters cover our own contribution. In Chapter 4, we discuss information-set decoding for convolutional codes. We first give a general framework for generic decoding of convolutional codes that reduces the problem to decoding a smaller block code multiple times and then discuss how we apply it to information-set decoding. We justify our choice of a depth-first algorithm, then discuss the issues posed by low weight codewords and how we adapt the algorithm to address these issues. Many of the components of our algorithm are probability based, so we provide tools that allow us to compute success probability for given parameters and thus help us to choose parameters.

Finally, in Section 5 we discuss our implementation of the attack and the results of attacking the cryptosystem proposed in [bolkema2017variations] and a parameter set of the cryptosystem proposed in [almeidaBNS21]. Since computation times were in most cases infeasible for the latter, we only provide an estimate of the computation time necessary for recovering errors for most random seeds. We also ran the algorithm in full for two cases, where the estimates of the computation time was low enough, and managed to recover the correct error in both cases.

1.1 Notation and Conventions

For the convenience of the reader, we summarize some notation that we will use throughout the paper.

  • 𝔽qsubscript𝔽𝑞\mathbb{F}_{q}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT the finite field with q𝑞qitalic_q elements,

  • 𝒞𝔽q[z]n𝒞subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathcal{C}\subset\mathbb{F}_{q}[z]^{n}caligraphic_C ⊂ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT a convolutional code, where n𝑛nitalic_n is its length and k𝑘kitalic_k its rank as an 𝔽q[z]subscript𝔽𝑞delimited-[]𝑧\mathbb{F}_{q}[z]blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ]-submodule of 𝔽q[z]nsubscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathbb{F}_{q}[z]^{n}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT,

  • C𝔽qN𝐶superscriptsubscript𝔽𝑞𝑁C\subseteq\mathbb{F}_{q}^{N}italic_C ⊆ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT a block code of length N𝑁Nitalic_N and dimension K𝐾Kitalic_K,

  • matrices and vectors are denoted with bold capital respectively small letters (e.g. 𝐆𝐆\mathbf{G}bold_G and 𝐯𝐯\mathbf{v}bold_v),

  • 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) and 𝐇(z)𝐇𝑧\mathbf{H}(z)bold_H ( italic_z ) for a generator matrix respectively parity-check matrix of a convolutional code 𝒞𝒞\mathcal{C}caligraphic_C,

  • I𝐼Iitalic_I an information set.

2 Basics of Linear Codes and Convolutional Codes

In this section we present definitions and results for linear block and convolutional codes that will be important in later sections of this paper.

Definition 1.

Let K,N𝐾𝑁K,N\in\mathbb{N}italic_K , italic_N ∈ blackboard_N with KN𝐾𝑁K\leq Nitalic_K ≤ italic_N. A linear [N,K]𝑁𝐾[N,K][ italic_N , italic_K ]-block code C𝐶Citalic_C is a K𝐾Kitalic_K-dimensional subspace of 𝔽qNsuperscriptsubscript𝔽𝑞𝑁\mathbb{F}_{q}^{N}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT. Hence, there is a full rank matrix 𝐆𝔽qK×N𝐆superscriptsubscript𝔽𝑞𝐾𝑁\mathbf{G}\in\mathbb{F}_{q}^{K\times N}bold_G ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_K × italic_N end_POSTSUPERSCRIPT such that

C={𝐜𝔽qN|𝐜=𝐦𝐆for𝐦𝔽qK}.𝐶conditional-set𝐜superscriptsubscript𝔽𝑞𝑁𝐜𝐦𝐆for𝐦superscriptsubscript𝔽𝑞𝐾C=\{\mathbf{c}\in\mathbb{F}_{q}^{N}\ |\ \mathbf{c}=\mathbf{m\mathbf{G}}\ \text% {for}\ \mathbf{m}\in\mathbb{F}_{q}^{K}\}.italic_C = { bold_c ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT | bold_c = bold_mG for bold_m ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_K end_POSTSUPERSCRIPT } .

𝐆𝐆\mathbf{G}bold_G is called generator matrix, N𝑁Nitalic_N length and K/N𝐾𝑁{K}/{N}italic_K / italic_N rate of C𝐶Citalic_C.

While the generator matrix is used for the encoding of a message, for the decoding of a received word, one usually uses another matrix, called parity-check matrix, as defined in the following.

Definition 2.

Let C𝐶Citalic_C be a linear [N,K]𝑁𝐾[N,K][ italic_N , italic_K ]-block code. A full rank matrix 𝐇𝔽q(NK)×N𝐇superscriptsubscript𝔽𝑞𝑁𝐾𝑁\mathbf{H}\in\mathbb{F}_{q}^{(N-K)\times N}bold_H ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ( italic_N - italic_K ) × italic_N end_POSTSUPERSCRIPT such that

C={𝐜𝔽qN|𝐇𝐜=0}𝐶conditional-set𝐜superscriptsubscript𝔽𝑞𝑁superscript𝐇𝐜top0C=\{\mathbf{c}\in\mathbb{F}_{q}^{N}\ |\ \mathbf{Hc}^{\top}=0\}italic_C = { bold_c ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT | bold_Hc start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT = 0 }

is called parity-check matrix of C𝐶Citalic_C.

Lemma 3.

Let 𝐆𝔽qK×N𝐆superscriptsubscript𝔽𝑞𝐾𝑁\mathbf{G}\in\mathbb{F}_{q}^{K\times N}bold_G ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_K × italic_N end_POSTSUPERSCRIPT be a generator matrix of a linear block code C𝐶Citalic_C. A matrix 𝐇𝔽q(NK)×N𝐇superscriptsubscript𝔽𝑞𝑁𝐾𝑁\mathbf{H}\in\mathbb{F}_{q}^{(N-K)\times N}bold_H ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ( italic_N - italic_K ) × italic_N end_POSTSUPERSCRIPT is a parity-check matrix for C𝐶Citalic_C if and only if 𝐇𝐆=0superscript𝐇𝐆top0\mathbf{HG}^{\top}=0bold_HG start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT = 0 and 𝐇𝐇\mathbf{H}bold_H is full rank.

Definition 4.

The support of 𝐜=(𝐜1,,𝐜n)𝔽qn𝐜subscript𝐜1subscript𝐜𝑛superscriptsubscript𝔽𝑞𝑛\mathbf{c}=(\mathbf{c}_{1},\ldots,\mathbf{c}_{n})\in\mathbb{F}_{q}^{n}bold_c = ( bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , … , bold_c start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT is defined as

supp(𝐜):={i{1,,n}:𝐜i0}.assignsupp𝐜conditional-set𝑖1𝑛subscript𝐜𝑖0{\rm supp}(\mathbf{c}):=\{i\in\{1,\ldots,n\}\,:\,\mathbf{c}_{i}\neq 0\}.roman_supp ( bold_c ) := { italic_i ∈ { 1 , … , italic_n } : bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ≠ 0 } .

The (Hamming) weight of 𝐜=(𝐜1,,𝐜n)𝔽qn𝐜subscript𝐜1subscript𝐜𝑛superscriptsubscript𝔽𝑞𝑛\mathbf{c}=(\mathbf{c}_{1},\ldots,\mathbf{c}_{n})\in\mathbb{F}_{q}^{n}bold_c = ( bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , … , bold_c start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT is defined as |supp(𝐜)|supp𝐜|{\rm supp}(\mathbf{c})|| roman_supp ( bold_c ) |, i.e. as the number of nonzero components of the vector 𝐜𝐜\mathbf{c}bold_c.

Definition 5.

The minimum distance of a linear block code C𝐶Citalic_C is defined as

d:=min{wt(𝐜)|𝐜C{𝟎}}.assign𝑑conditionalwt𝐜𝐜𝐶0d:=\min\{\mathrm{wt}(\mathbf{c})\>|\>\mathbf{c}\in C\setminus\{\mathbf{0}\}\}.italic_d := roman_min { roman_wt ( bold_c ) | bold_c ∈ italic_C ∖ { bold_0 } } .

In the following, we introduce the basics of convolutional codes, which can be understood as a generalization of linear block codes. More details about convolutional codes can e.g. be found in [bookchapter].

Definition 6.

A convolutional code 𝒞𝒞\mathcal{C}caligraphic_C of length n𝑛nitalic_n is defined as an 𝔽q[z]subscript𝔽𝑞delimited-[]𝑧\mathbb{F}_{q}[z]blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ]-submodule of 𝔽q[z]nsubscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathbb{F}_{q}[z]^{n}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT. Let k𝑘kitalic_k be the rank of 𝒞𝒞\mathcal{C}caligraphic_C. Then, kn𝑘𝑛\frac{k}{n}divide start_ARG italic_k end_ARG start_ARG italic_n end_ARG is the rate of 𝒞𝒞\mathcal{C}caligraphic_C and we call 𝒞𝒞\mathcal{C}caligraphic_C an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code. There exists a polynomial matrix 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT such that

𝒞={𝐜(z)=𝐦(z)𝐆(z)|𝐦(z)𝔽q[z]k}𝒞conditional-set𝐜𝑧𝐦𝑧𝐆𝑧𝐦𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘\displaystyle\mathcal{C}=\{\mathbf{c}(z)=\mathbf{m}(z)\mathbf{G}(z)\ |\ % \mathbf{m}(z)\in\mathbb{F}_{q}[z]^{k}\}caligraphic_C = { bold_c ( italic_z ) = bold_m ( italic_z ) bold_G ( italic_z ) | bold_m ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT }

𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) is called generator matrix of 𝒞𝒞\mathcal{C}caligraphic_C. If we write 𝐆(z)=i=0μ𝐆izi𝐆𝑧superscriptsubscript𝑖0𝜇subscript𝐆𝑖superscript𝑧𝑖\mathbf{G}(z)=\sum_{i=0}^{\mu}\mathbf{G}_{i}z^{i}bold_G ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_μ end_POSTSUPERSCRIPT bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT with 𝐆μ0subscript𝐆𝜇0\mathbf{G}_{\mu}\not=0bold_G start_POSTSUBSCRIPT italic_μ end_POSTSUBSCRIPT ≠ 0, then μ𝜇\muitalic_μ is called memory of 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ). The maximal degree of the full size (i.e. k×k𝑘𝑘k\times kitalic_k × italic_k) minors of 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) is called is called degree of 𝒞𝒞\mathcal{C}caligraphic_C.

Note that a generator matrix is not unique and the memory μ𝜇\muitalic_μ depends on 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ), however the degree δ𝛿\deltaitalic_δ of 𝒞𝒞\mathcal{C}caligraphic_C does not depend on the choice of the generator matrix.

Remark 7.

Two full rank matrices 𝐆(z),𝐆~(z)𝔽q[z]k×n𝐆𝑧~𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z),\widetilde{\mathbf{G}}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) , over~ start_ARG bold_G end_ARG ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT are generator matrices of the same code if and only if there exists a unimodular matrix 𝐔(z)𝔽q[z]k×k𝐔𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑘\mathbf{U}(z)\in\mathbb{F}_{q}[z]^{k\times k}bold_U ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_k end_POSTSUPERSCRIPT such that

𝐆~(z)=𝐔(z)𝐆(z).~𝐆𝑧𝐔𝑧𝐆𝑧\displaystyle\widetilde{\mathbf{G}}(z)=\mathbf{U}(z)\mathbf{G}(z).over~ start_ARG bold_G end_ARG ( italic_z ) = bold_U ( italic_z ) bold_G ( italic_z ) .

𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) and 𝐆~(z)~𝐆𝑧\widetilde{\mathbf{G}}(z)over~ start_ARG bold_G end_ARG ( italic_z ) are then called equivalent.

In the next part of this section, we want to consider parity-check matrices for convolutional codes. In contrast to linear block codes, not each convolutional code admits a parity-check matrix.

Definition 8.

Let 𝒞𝒞\mathcal{C}caligraphic_C be an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code. A full row rank polynomial matrix 𝐇(z)𝔽q[z](nk)×n𝐇𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT is called parity-check matrix of 𝒞𝒞\mathcal{C}caligraphic_C, if

𝒞={𝐜(z)𝔽q[z]n|𝐇(z)𝐜(z)=0}.𝒞conditional-set𝐜𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝐇𝑧𝐜superscript𝑧top0\displaystyle\mathcal{C}=\{\mathbf{c}(z)\in\mathbb{F}_{q}[z]^{n}\ |\ \mathbf{H% }(z)\mathbf{c}(z)^{\top}=0\}.caligraphic_C = { bold_c ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT | bold_H ( italic_z ) bold_c ( italic_z ) start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT = 0 } .

If such a parity-check matrix exists for the code 𝒞𝒞\mathcal{C}caligraphic_C, then 𝒞𝒞\mathcal{C}caligraphic_C is called non-catastrophic.

In the following, we will describe how to check whether a convolutional code possesses a parity-check matrix and how to calculate it.

Definition 9.

For kn𝑘𝑛k\leq nitalic_k ≤ italic_n, 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT is called left prime if in all factorisations 𝐆(z)=𝐋(z)𝐆^(z)𝐆𝑧𝐋𝑧^𝐆𝑧\mathbf{G}(z)=\mathbf{L}(z)\widehat{\mathbf{G}}(z)bold_G ( italic_z ) = bold_L ( italic_z ) over^ start_ARG bold_G end_ARG ( italic_z ), with 𝐋(z)𝔽q[z]k×k𝐋𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑘\mathbf{L}(z)\in\mathbb{F}_{q}[z]^{k\times k}bold_L ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_k end_POSTSUPERSCRIPT and 𝐆^(z)𝔽q[z]k×n^𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\widehat{\mathbf{G}}(z)\in\mathbb{F}_{q}[z]^{k\times n}over^ start_ARG bold_G end_ARG ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT, the left factor 𝐋(z)𝐋𝑧\mathbf{L}(z)bold_L ( italic_z ) is unimodular.

Definition 10.

Let 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT with kn𝑘𝑛k\leq nitalic_k ≤ italic_n be full (row) rank. Then, there exists a unimodular matrix 𝐔(z)𝔽q[z]n×n𝐔𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑛\mathbf{U}(z)\in\mathbb{F}_{q}[z]^{n\times n}bold_U ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n × italic_n end_POSTSUPERSCRIPT such that

𝐆cH(z)=𝐆(z)𝐔(z)=(h11(z)00000hk1(z)hkk(z)00)subscript𝐆𝑐𝐻𝑧𝐆𝑧𝐔𝑧matrixsubscript11𝑧0000missing-subexpressionmissing-subexpression0missing-subexpressionsubscript𝑘1𝑧subscript𝑘𝑘𝑧00\displaystyle\mathbf{G}_{cH}(z)=\mathbf{G}(z)\mathbf{U}(z)=\begin{pmatrix}h_{1% 1}(z)&0&\ldots&0&0&\ldots&0\\ \vdots&\ddots&\ddots&\vdots&\vdots&&\vdots\\ \vdots&&\ddots&0&\vdots&&\vdots\\ h_{k1}(z)&\dots&\ldots&h_{kk}(z)&0&\ldots&0\\ \end{pmatrix}bold_G start_POSTSUBSCRIPT italic_c italic_H end_POSTSUBSCRIPT ( italic_z ) = bold_G ( italic_z ) bold_U ( italic_z ) = ( start_ARG start_ROW start_CELL italic_h start_POSTSUBSCRIPT 11 end_POSTSUBSCRIPT ( italic_z ) end_CELL start_CELL 0 end_CELL start_CELL … end_CELL start_CELL 0 end_CELL start_CELL 0 end_CELL start_CELL … end_CELL start_CELL 0 end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL start_CELL ⋱ end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL 0 end_CELL start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL italic_h start_POSTSUBSCRIPT italic_k 1 end_POSTSUBSCRIPT ( italic_z ) end_CELL start_CELL … end_CELL start_CELL … end_CELL start_CELL italic_h start_POSTSUBSCRIPT italic_k italic_k end_POSTSUBSCRIPT ( italic_z ) end_CELL start_CELL 0 end_CELL start_CELL … end_CELL start_CELL 0 end_CELL end_ROW end_ARG ) (1)

where hii(z)subscript𝑖𝑖𝑧h_{ii}(z)italic_h start_POSTSUBSCRIPT italic_i italic_i end_POSTSUBSCRIPT ( italic_z ) are monic for i=1,,k𝑖1𝑘i=1,\dots,kitalic_i = 1 , … , italic_k and deg(hii)>deg(hij)degreesubscript𝑖𝑖degreesubscript𝑖𝑗\deg(h_{ii})>\deg(h_{ij})roman_deg ( italic_h start_POSTSUBSCRIPT italic_i italic_i end_POSTSUBSCRIPT ) > roman_deg ( italic_h start_POSTSUBSCRIPT italic_i italic_j end_POSTSUBSCRIPT ) for each j<i𝑗𝑖j<iitalic_j < italic_i. The matrix 𝐆cH(z)subscript𝐆𝑐𝐻𝑧\mathbf{G}_{cH}(z)bold_G start_POSTSUBSCRIPT italic_c italic_H end_POSTSUBSCRIPT ( italic_z ) is called column Hermite form of 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ).

Theorem 11.

[bookchapter] Consider 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT with kn𝑘𝑛k\leq nitalic_k ≤ italic_n. The following statements are equivalent:

  1. 1.

    𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) is left prime.

  2. 2.

    The column Hermite form of 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) is [Ik 0]delimited-[]subscript𝐼𝑘 0[I_{k}\;0][ italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT 0 ].

  3. 3.

    There exists 𝐌(z)𝔽q[z]n×k𝐌𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘\mathbf{M}(z)\in\mathbb{F}_{q}[z]^{n\times k}bold_M ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n × italic_k end_POSTSUPERSCRIPT such that 𝐆(z)𝐌(z)=Ik𝐆𝑧𝐌𝑧subscript𝐼𝑘\mathbf{G}(z)\mathbf{M}(z)=I_{k}bold_G ( italic_z ) bold_M ( italic_z ) = italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT.

  4. 4.

    𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) can be completed to a unimodular matrix, i.e. there exists 𝐄(z)𝔽q[z](nk)×n𝐄𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{E}(z)\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_E ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT such that (𝐆(z)𝐄(z))matrix𝐆𝑧𝐄𝑧\begin{pmatrix}\mathbf{G}(z)\\ \mathbf{E}(z)\end{pmatrix}( start_ARG start_ROW start_CELL bold_G ( italic_z ) end_CELL end_ROW start_ROW start_CELL bold_E ( italic_z ) end_CELL end_ROW end_ARG ) is unimodular.

  5. 5.

    rk(𝐆(λ))=k𝑟𝑘𝐆𝜆𝑘rk(\mathbf{G}(\lambda))=kitalic_r italic_k ( bold_G ( italic_λ ) ) = italic_k for all λ𝔽¯q𝜆subscript¯𝔽𝑞\lambda\in\bar{\mathbb{F}}_{q}italic_λ ∈ over¯ start_ARG blackboard_F end_ARG start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT, where 𝔽¯qsubscript¯𝔽𝑞\bar{\mathbb{F}}_{q}over¯ start_ARG blackboard_F end_ARG start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT denotes the algebraic closure of the field 𝔽qsubscript𝔽𝑞\mathbb{F}_{q}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT.

Definition 12.

A polynomial matrix 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT is said to be delay-free if 𝐆(0)𝐆0\mathbf{G}(0)bold_G ( 0 ) is full row rank. A convolutional code 𝒞𝔽q[z]n𝒞subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathcal{C}\subset\mathbb{F}_{q}[z]^{n}caligraphic_C ⊂ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT is called delay-free if its generator matrices are delay-free.

It is easy to see that if one generator matrix of a convolutional code is delay-free, then all its generator matrices are delay-free and hence it makes sense to speak of delay-free convolutional codes. Moreover, note that by Theorem 11 all non-catastrophic convolutional codes are delay-free.

Theorem 13.

[bookchapter] Let 𝒞𝒞\mathcal{C}caligraphic_C be an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code. Then, 𝒞𝒞\mathcal{C}caligraphic_C admits a parity-check matrix 𝐇(z)𝔽q[z](nk)×n𝐇𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT if and only if any of the generator matrices of 𝒞𝒞\mathcal{C}caligraphic_C is left prime.

Corollary 14.

Let 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT be a left-prime generator matrix of a convolutional code 𝒞𝒞\mathcal{C}caligraphic_C. A matrix 𝐇(z)𝔽q[z](nk)×n𝐇𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT is a parity-check matrix for 𝒞𝒞\mathcal{C}caligraphic_C if and only if 𝐇(z)𝐆(z)=0𝐇𝑧𝐆superscript𝑧top0\mathbf{H}(z)\mathbf{G}(z)^{\top}=0bold_H ( italic_z ) bold_G ( italic_z ) start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT = 0 and 𝐇(z)𝐇𝑧\mathbf{H}(z)bold_H ( italic_z ) is full rank.

Next we describe, how a parity-check matrix for a convolutional code can be calculated.

First the column Hermite form 𝐆cH(z)subscript𝐆𝑐𝐻𝑧\mathbf{G}_{cH}(z)bold_G start_POSTSUBSCRIPT italic_c italic_H end_POSTSUBSCRIPT ( italic_z ) of 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT is computed. According to Theorem 11 there exists a parity-check matrix if and only if 𝐆cH(z)=[Ik 0]subscript𝐆𝑐𝐻𝑧delimited-[]subscript𝐼𝑘 0\mathbf{G}_{cH}(z)=[I_{k}\ \ 0]bold_G start_POSTSUBSCRIPT italic_c italic_H end_POSTSUBSCRIPT ( italic_z ) = [ italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT 0 ]. If this is true, calculate 𝐕(z)𝔽q[z]n×n𝐕𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑛\mathbf{V}(z)\in\mathbb{F}_{q}[z]^{n\times n}bold_V ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n × italic_n end_POSTSUPERSCRIPT such that 𝐆(z)𝐕(z)=[Ik 0]𝐆𝑧𝐕𝑧delimited-[]subscript𝐼𝑘 0\mathbf{G}(z)\mathbf{V}(z)=[I_{k}\ \ 0]bold_G ( italic_z ) bold_V ( italic_z ) = [ italic_I start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT 0 ]. Then, the last nk𝑛𝑘n-kitalic_n - italic_k rows of 𝐕(z)𝐕superscript𝑧top\mathbf{V}(z)^{\top}bold_V ( italic_z ) start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT form a parity-check matrix for the convolutional code with generator matrix 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ).

If 𝐆(z)𝔽q[z]k×n𝐆𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT is not left prime, the corresponding convolutional code 𝒞𝒞\mathcal{C}caligraphic_C does not posses a parity-check matrix. However, it is still possible to find a left prime polynomial matrix 𝐇(z)𝔽q[z](nk)×n𝐇𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT that plays the role of a parity check matrix for 𝒞𝒞\mathcal{C}caligraphic_C in the sense that

𝒞ker𝐇(z).𝒞kernel𝐇𝑧\mathcal{C}\subsetneqq\ker\mathbf{H}(z).caligraphic_C ⫋ roman_ker bold_H ( italic_z ) .

Since 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) is not left prime, one has

𝐆(z)=[𝐋(z)𝟎]𝐔(z)𝐆𝑧matrix𝐋𝑧0𝐔𝑧\mathbf{G}(z)=\begin{bmatrix}\mathbf{L}(z)&\mathbf{0}\end{bmatrix}\mathbf{U}(z)bold_G ( italic_z ) = [ start_ARG start_ROW start_CELL bold_L ( italic_z ) end_CELL start_CELL bold_0 end_CELL end_ROW end_ARG ] bold_U ( italic_z )

where [𝐋(z)𝟎]matrix𝐋𝑧0\begin{bmatrix}\mathbf{L}(z)&\mathbf{0}\end{bmatrix}[ start_ARG start_ROW start_CELL bold_L ( italic_z ) end_CELL start_CELL bold_0 end_CELL end_ROW end_ARG ] is the column Hermite form of 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) and 𝐔(z)𝔽q[z]k×k𝐔𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑘\mathbf{U}(z)\in\mathbb{F}_{q}[z]^{k\times k}bold_U ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_k end_POSTSUPERSCRIPT unimodular and 𝐋(z)𝔽q[z]k×k𝐋𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑘\mathbf{L}(z)\in\mathbb{F}_{q}[z]^{k\times k}bold_L ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_k end_POSTSUPERSCRIPT is not the identity matrix. It follows that 𝐆(z)=𝐋(z)𝐔1(z)𝐆𝑧𝐋𝑧subscript𝐔1𝑧\mathbf{G}(z)=\mathbf{L}(z)\mathbf{U}_{1}(z)bold_G ( italic_z ) = bold_L ( italic_z ) bold_U start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ), where 𝐔1(z)subscript𝐔1𝑧\mathbf{U}_{1}(z)bold_U start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) consists of the first k𝑘kitalic_k rows of 𝐔(z)𝐔𝑧\mathbf{U}(z)bold_U ( italic_z ), i.e. 𝐔1(z)subscript𝐔1𝑧\mathbf{U}_{1}(z)bold_U start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) is left prime. Hence, the convolutional code 𝒞~~𝒞\widetilde{\mathcal{C}}over~ start_ARG caligraphic_C end_ARG with generator matrix 𝐔1(z)𝔽q[z]k×nsubscript𝐔1𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{U}_{1}(z)\in\mathbb{F}_{q}[z]^{k\times n}bold_U start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT is non-catastrophic and has a parity-check matrix 𝐇(z)𝐇𝑧\mathbf{H}(z)bold_H ( italic_z ). Finally, one has

𝒞𝒞~=ker𝐇(z).𝒞~𝒞kernel𝐇𝑧\mathcal{C}\subsetneqq\widetilde{\mathcal{C}}=\ker\mathbf{H}(z).caligraphic_C ⫋ over~ start_ARG caligraphic_C end_ARG = roman_ker bold_H ( italic_z ) .

In the following we introduce distance measures for convolutional codes.

Definition 15.

The weight of a polynomial vector 𝐜(z)=i0𝐜izi𝔽q[z]n𝐜𝑧subscript𝑖subscriptabsent0subscript𝐜𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathbf{c}(z){=}\displaystyle\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{c}_{i}z^{% i}\in\mathbb{F}_{q}[z]^{n}bold_c ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT is defined as

wt(𝐜(z))=i0wt(𝐜i).wt𝐜𝑧subscript𝑖subscriptabsent0wtsubscript𝐜𝑖{\rm wt}(\mathbf{c}(z))=\sum_{i\in{\mathbb{Z}_{\geq 0}}}{\rm wt}(\mathbf{c}_{i% }).roman_wt ( bold_c ( italic_z ) ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT roman_wt ( bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) .
Definition 16.

Let 𝒞𝒞\cal Ccaligraphic_C be an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code. The free distance of 𝒞𝒞\cal Ccaligraphic_C is defined as

dfree(𝒞)=min{wt(𝐜(z)):𝐜(z)𝒞\{𝟎}}.subscript𝑑𝑓𝑟𝑒𝑒𝒞:wt𝐜𝑧𝐜𝑧\𝒞0d_{free}({\cal C})=\min\{{\rm wt}(\mathbf{c}(z))\,:\,\mathbf{c}(z)\in{\cal C}% \backslash\{\mathbf{0}\}\}.italic_d start_POSTSUBSCRIPT italic_f italic_r italic_e italic_e end_POSTSUBSCRIPT ( caligraphic_C ) = roman_min { roman_wt ( bold_c ( italic_z ) ) : bold_c ( italic_z ) ∈ caligraphic_C \ { bold_0 } } .

The free distance is a measure for the total number of errors a convolutional code can correct. However, we will carry out the decoding of a convolutional code by splitting the received word and codeword into parts, so-called windows, and decode one window after the other. To this end, we need to introduce so-called sliding matrices.

Let

𝐆(z)=i0𝐆izi𝔽q[z]k×n𝐆𝑧subscript𝑖subscriptabsent0subscript𝐆𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)=\displaystyle\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{G}_{i}z^{i}% \in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT

be a generator matrix and

𝐇(z)=i0𝐇izi𝔽q[z](nk)×n𝐇𝑧subscript𝑖subscriptabsent0subscript𝐇𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)=\displaystyle\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{H}_{i}z^{i}% \in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT

be a parity-check matrix of an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code, where 𝐆i=𝟎subscript𝐆𝑖0\mathbf{G}_{i}=\mathbf{0}bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = bold_0 if i>deg(𝐆(z))𝑖degree𝐆𝑧i>\deg(\mathbf{G}(z))italic_i > roman_deg ( bold_G ( italic_z ) ) and 𝐇i=𝟎subscript𝐇𝑖0\mathbf{H}_{i}=\mathbf{0}bold_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = bold_0 if i>deg(𝐇(z))𝑖degree𝐇𝑧i>\deg(\mathbf{H}(z))italic_i > roman_deg ( bold_H ( italic_z ) ). For γ0𝛾subscriptabsent0\gamma\in{\mathbb{Z}_{\geq 0}}italic_γ ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT, consider the silding generator-matrix

𝐆~0γ:=(𝐆0𝐆1𝐆γ𝐆0𝐆γ1𝐆0)assignsubscriptsuperscript~𝐆𝛾0matrixsubscript𝐆0subscript𝐆1subscript𝐆𝛾missing-subexpressionsubscript𝐆0subscript𝐆𝛾1missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0\tilde{\mathbf{G}}^{\gamma}_{0}:=\begin{pmatrix}\mathbf{G}_{0}&\mathbf{G}_{1}&% \cdots&\mathbf{G}_{\gamma}\\ &\mathbf{G}_{0}&\cdots&\mathbf{G}_{\gamma-1}\\ &&\ddots&\vdots\\ &&&\mathbf{G}_{0}\end{pmatrix}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT := ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ - 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG )

and the sliding parity-check matrix

𝐇~0γ:=(𝐇0𝐇γ𝐇0).assignsubscriptsuperscript~𝐇𝛾0matrixsubscript𝐇0missing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐇𝛾subscript𝐇0\tilde{\mathbf{H}}^{\gamma}_{0}:=\begin{pmatrix}\mathbf{H}_{0}&&\\ \vdots&\ddots&\\ \mathbf{H}_{\gamma}&\cdots&\mathbf{H}_{0}\end{pmatrix}.over~ start_ARG bold_H end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT := ( start_ARG start_ROW start_CELL bold_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL start_CELL ⋱ end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL bold_H start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) .
Definition 17.

Let 𝒞𝒞\cal Ccaligraphic_C be an (n,k)𝑛𝑘(n,k)( italic_n , italic_k ) convolutional code. For γ0𝛾subscriptabsent0\gamma\in{\mathbb{Z}_{\geq 0}}italic_γ ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT, the γ𝛾\gammaitalic_γ-th column distance of 𝒞𝒞\mathcal{C}caligraphic_C is defined as

dγc(𝒞)::superscriptsubscript𝑑𝛾𝑐𝒞absent\displaystyle d_{\gamma}^{c}(\mathcal{C}):italic_d start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT ( caligraphic_C ) : =min{t=0γwt(𝐜t)|𝐜(z)𝒞and𝐜00}.absentconditionalsuperscriptsubscript𝑡0𝛾wtsubscript𝐜𝑡𝐜𝑧𝒞andsubscript𝐜00\displaystyle=\min\left\{\sum_{t=0}^{\gamma}{\rm wt}(\mathbf{c}_{t})\ |\ % \mathbf{c}(z)\in\mathcal{C}\ \text{and}\ \mathbf{c}_{0}\neq 0\right\}.= roman_min { ∑ start_POSTSUBSCRIPT italic_t = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT roman_wt ( bold_c start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) | bold_c ( italic_z ) ∈ caligraphic_C and bold_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≠ 0 } .

If 𝒞𝒞\mathcal{C}caligraphic_C is delay-free with generator matrix 𝐆(z)=i0𝐆izi𝔽q[z]k×n𝐆𝑧subscript𝑖subscriptabsent0subscript𝐆𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)=\displaystyle\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{G}_{i}z^{i}% \in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT, it follows

dγc(𝒞)=min{wt((𝐦0𝐦γ)𝐆~0γ):𝐦(z)𝔽q[z]k with 𝐦00}.subscriptsuperscript𝑑𝑐𝛾𝒞:wtsubscript𝐦0subscript𝐦𝛾subscriptsuperscript~𝐆𝛾0𝐦𝑧subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘 with subscript𝐦00d^{c}_{\gamma}(\mathcal{C})=\min\{{\rm wt}((\mathbf{m}_{0}\cdots\mathbf{m}_{% \gamma})\cdot\tilde{\mathbf{G}}^{\gamma}_{0})\,:\;\mathbf{m}(z)\in{\mathbb{F}_% {q}[z]^{k}}\mbox{ with }\mathbf{m}_{0}\neq 0\}.italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ( caligraphic_C ) = roman_min { roman_wt ( ( bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ⋯ bold_m start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ) ⋅ over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) : bold_m ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k end_POSTSUPERSCRIPT with bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≠ 0 } .

If 𝒞𝒞\mathcal{C}caligraphic_C is non-catastrophic with parity-check matrix

𝐇(z)=i0𝐇izi𝔽q[z](nk)×n,𝐇𝑧subscript𝑖subscriptabsent0subscript𝐇𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)=\displaystyle\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{H}_{i}z^{i}% \in\mathbb{F}_{q}[z]^{(n-k)\times n},bold_H ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT ,

one obtains

dγc(𝒞)=min{t=0γwt(𝐜t)|𝐇~0γ(𝐜0𝐜γ)=𝟎and𝐜0𝟎}.subscriptsuperscript𝑑𝑐𝛾𝒞conditionalsuperscriptsubscript𝑡0𝛾wtsubscript𝐜𝑡subscriptsuperscript~𝐇𝛾0matrixsubscript𝐜0subscript𝐜𝛾0andsubscript𝐜00d^{c}_{\gamma}(\mathcal{C})=\min\left\{\sum_{t=0}^{\gamma}{\rm wt}(\mathbf{c}_% {t})\ |\ \tilde{\mathbf{H}}^{\gamma}_{0}\cdot\begin{pmatrix}\mathbf{c}_{0}\\ \vdots\\ \mathbf{c}_{\gamma}\end{pmatrix}=\mathbf{0}\ \text{and}\ \mathbf{c}_{0}\neq% \mathbf{0}\right\}.italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ( caligraphic_C ) = roman_min { ∑ start_POSTSUBSCRIPT italic_t = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT roman_wt ( bold_c start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) | over~ start_ARG bold_H end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ⋅ ( start_ARG start_ROW start_CELL bold_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL bold_c start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) = bold_0 and bold_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≠ bold_0 } .

One has that

d0c(𝒞)d1c(𝒞)limγdγc(𝒞)dfree(𝒞),subscriptsuperscript𝑑𝑐0𝒞subscriptsuperscript𝑑𝑐1𝒞subscript𝛾subscriptsuperscript𝑑𝑐𝛾𝒞subscript𝑑𝑓𝑟𝑒𝑒𝒞d^{c}_{0}(\mathcal{C})\leq d^{c}_{1}(\mathcal{C})\leq\cdots\leq\lim_{\gamma% \rightarrow\infty}d^{c}_{\gamma}(\mathcal{C})\leq d_{free}({\cal C}),italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( caligraphic_C ) ≤ italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( caligraphic_C ) ≤ ⋯ ≤ roman_lim start_POSTSUBSCRIPT italic_γ → ∞ end_POSTSUBSCRIPT italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ( caligraphic_C ) ≤ italic_d start_POSTSUBSCRIPT italic_f italic_r italic_e italic_e end_POSTSUBSCRIPT ( caligraphic_C ) ,

reflecting the fact that the larger we choose the decoding window, the more errors can be corrected inside this window.

We now write the equation 𝐦(z)𝐆(z)=𝐜(z)𝐦𝑧𝐆𝑧𝐜𝑧\mathbf{m}(z)\mathbf{G}(z)=\mathbf{c}(z)bold_m ( italic_z ) bold_G ( italic_z ) = bold_c ( italic_z ) with :=deg(𝐦(z))assigndegree𝐦𝑧\ell:=\deg(\mathbf{m}(z))roman_ℓ := roman_deg ( bold_m ( italic_z ) ) as

(𝐦0𝐦)(𝐆0𝐆μ𝐆0𝐆μ𝐆0𝐆μ)=(𝐜0𝐜+μ).subscript𝐦0subscript𝐦subscript𝐆0subscript𝐆𝜇missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐆𝜇missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐆𝜇subscript𝐜0subscript𝐜𝜇\displaystyle(\mathbf{m}_{0}\cdots\mathbf{m}_{\ell})\left(\begin{array}[]{% cccccc}\mathbf{G}_{0}&\dots&\mathbf{G}_{\mu}&&&\\ &\mathbf{G}_{0}&\cdots&\mathbf{G}_{\mu}&&\\ &&\ddots&&\ddots&\\ &&&\mathbf{G}_{0}&\cdots&\mathbf{G}_{\mu}\\ \end{array}\right)=(\mathbf{c}_{0}\cdots\mathbf{c}_{\ell+\mu}).( bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ⋯ bold_m start_POSTSUBSCRIPT roman_ℓ end_POSTSUBSCRIPT ) ( start_ARRAY start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_μ end_POSTSUBSCRIPT end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_μ end_POSTSUBSCRIPT end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_μ end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) = ( bold_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ⋯ bold_c start_POSTSUBSCRIPT roman_ℓ + italic_μ end_POSTSUBSCRIPT ) . (6)

Assume we decoded the messages up to a time instant t1𝑡1t-1italic_t - 1, then we can use the following equation:

(𝐦0,,𝐦t1|𝐦t,,𝐦t+γ)(𝐆0𝐆t1𝐆t𝐆t+γ𝐆0𝐆1𝐆γ+1𝐆0𝐆γ𝐆0)=(𝐜0𝐜t+γ).subscript𝐦0conditionalsubscript𝐦𝑡1subscript𝐦𝑡subscript𝐦𝑡𝛾subscript𝐆0subscript𝐆𝑡1subscript𝐆𝑡subscript𝐆𝑡𝛾missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐆1subscript𝐆𝛾1missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐆𝛾missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐜0subscript𝐜𝑡𝛾\displaystyle(\mathbf{m}_{0},\dots,\mathbf{m}_{t-1}\ |\ \mathbf{m}_{t},\dots,% \mathbf{m}_{t+\gamma})\left(\begin{array}[]{cccccc}\mathbf{G}_{0}&\dots&% \mathbf{G}_{t-1}&\mathbf{G}_{t}&\dots&\mathbf{G}_{t+\gamma}\\ &\ddots&\vdots&\vdots&&\vdots\\ &&\mathbf{G}_{0}&\mathbf{G}_{1}&\cdots&\mathbf{G}_{\gamma+1}\\ \hline\cr&&&\mathbf{G}_{0}&\cdots&\mathbf{G}_{\gamma}\\ &&&&\ddots&\vdots\\ &&&&&\mathbf{G}_{0}\end{array}\right)=(\mathbf{c}_{0}\cdots\mathbf{c}_{t+% \gamma}).( bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t - 1 end_POSTSUBSCRIPT | bold_m start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) ( start_ARRAY start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_t - 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ + 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) = ( bold_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ⋯ bold_c start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) . (13)

and rewrite it as

(𝐦t,,𝐦t+γ)(𝐆0𝐆γ𝐆0)=(𝐜t𝐜t+γ)(𝐦0,,𝐦t1)(𝐆t𝐆t+γ𝐆1𝐆γ+1)subscript𝐦𝑡subscript𝐦𝑡𝛾subscript𝐆0subscript𝐆𝛾missing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0subscript𝐜𝑡subscript𝐜𝑡𝛾subscript𝐦0subscript𝐦𝑡1matrixsubscript𝐆𝑡subscript𝐆𝑡𝛾missing-subexpressionsubscript𝐆1subscript𝐆𝛾1\displaystyle(\mathbf{m}_{t},\dots,\mathbf{m}_{t+\gamma})\left(\begin{array}[]% {ccc}\mathbf{G}_{0}&\cdots&\mathbf{G}_{\gamma}\\ &\ddots&\vdots\\ &&\mathbf{G}_{0}\end{array}\right)=(\mathbf{c}_{t}\cdots\mathbf{c}_{t+\gamma})% -(\mathbf{m}_{0},\dots,\mathbf{m}_{t-1})\begin{pmatrix}\mathbf{G}_{t}&\dots&% \mathbf{G}_{t+\gamma}\\ \vdots&&\vdots\\ \mathbf{G}_{1}&\cdots&\mathbf{G}_{\gamma+1}\end{pmatrix}( bold_m start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) ( start_ARRAY start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARRAY ) = ( bold_c start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ⋯ bold_c start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) - ( bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t - 1 end_POSTSUBSCRIPT ) ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ + 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG )

Denote the received word after transmission by 𝐫(z)=i0𝐫izi𝔽q[z]n𝐫𝑧subscript𝑖subscriptabsent0subscript𝐫𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathbf{r}(z)=\sum_{i\in{\mathbb{Z}_{\geq 0}}}\mathbf{r}_{i}z^{i}\in\mathbb{F}% _{q}[z]^{n}bold_r ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT bold_r start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT.

Then, (𝐦t,,𝐦t+γ)subscript𝐦𝑡subscript𝐦𝑡𝛾(\mathbf{m}_{t},\dots,\mathbf{m}_{t+\gamma})( bold_m start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) can be recovered by decoding

(𝐫t𝐫t+γ)(𝐦0,,𝐦t1)(𝐆t𝐆t+γ𝐆1𝐆γ+1)subscript𝐫𝑡subscript𝐫𝑡𝛾subscript𝐦0subscript𝐦𝑡1matrixsubscript𝐆𝑡subscript𝐆𝑡𝛾missing-subexpressionsubscript𝐆1subscript𝐆𝛾1(\mathbf{r}_{t}\cdots\mathbf{r}_{t+\gamma})-(\mathbf{m}_{0},\dots,\mathbf{m}_{% t-1})\begin{pmatrix}\mathbf{G}_{t}&\dots&\mathbf{G}_{t+\gamma}\\ \vdots&&\vdots\\ \mathbf{G}_{1}&\cdots&\mathbf{G}_{\gamma+1}\end{pmatrix}( bold_r start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ⋯ bold_r start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT ) - ( bold_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , … , bold_m start_POSTSUBSCRIPT italic_t - 1 end_POSTSUBSCRIPT ) ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_t + italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL ⋮ end_CELL start_CELL end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ + 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG )

in the block code with generator matrix 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT.

This process can be iterated by sliding the decoding window by γ+1𝛾1\gamma+1italic_γ + 1 time steps to (𝐫t+γ+1𝐫t+2γ+1)subscript𝐫𝑡𝛾1subscript𝐫𝑡2𝛾1(\mathbf{r}_{t+\gamma+1}\cdots\mathbf{r}_{t+2\gamma+1})( bold_r start_POSTSUBSCRIPT italic_t + italic_γ + 1 end_POSTSUBSCRIPT ⋯ bold_r start_POSTSUBSCRIPT italic_t + 2 italic_γ + 1 end_POSTSUBSCRIPT ) and in this way the whole message m(z)m𝑧\textbf{m}(z)m ( italic_z ) can be recovered with several decoding steps in the block code with generator matrix 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT.

3 Basics of Information-Set Decoding

Information-set decoding (ISD) is a generic decoding technique for linear codes. In this section we introduce the simplest form of ISD, the Prange algorithm [Prange62]. Several improvements exist, such as [LeeB88], [Stern88], [dumer1991minimum], [Peters10], [BernsteinLP11], [MayMT11], and [BeckerJMM12]. The general idea is as follows. Given an erroneous codeword 𝐜+𝐞𝐜𝐞\mathbf{c}+\mathbf{e}bold_c + bold_e, we wish to find a set I{1,,N}𝐼1𝑁I\subset\{1,\ldots,N\}italic_I ⊂ { 1 , … , italic_N } such that Isupp(𝐞)=𝐼supp𝐞I\cap\operatorname{supp}(\mathbf{e})=\emptysetitalic_I ∩ roman_supp ( bold_e ) = ∅ and 𝐜𝐜\mathbf{c}bold_c is uniquely determined by the positions indexed by I𝐼Iitalic_I. If we have done so, we can easily recover the codeword 𝐜𝐜\mathbf{c}bold_c with linear algebra, hence also the error. In order to find such a set we try random information sets, do the procedure described above and check if the weight of the recovered error is within specified bounds. We continue until we have found an error that is small enough.

Definition 18.

Let C𝐶Citalic_C be an [N,K]𝑁𝐾[N,K][ italic_N , italic_K ] linear block code and 𝐆𝐆\mathbf{G}bold_G be a generator matrix of C𝐶Citalic_C. For any subset I{1,,N}𝐼1𝑁I\subseteq\{1,\ldots,N\}italic_I ⊆ { 1 , … , italic_N } we define 𝐆Isubscript𝐆𝐼\mathbf{G}_{I}bold_G start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT to be the submatrix of 𝐆𝐆\mathbf{G}bold_G with columns indexed by I𝐼Iitalic_I. Then any subset I{1,,N}𝐼1𝑁I\subseteq\{1,\ldots,N\}italic_I ⊆ { 1 , … , italic_N } of size K𝐾Kitalic_K such that 𝐆Isubscript𝐆𝐼\mathbf{G}_{I}bold_G start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT is invertible is called an information set.

More formally, we do the following in the Prange algorithm. Let t𝑡titalic_t be an upper bound for the number of errors, 𝐆𝐆\mathbf{G}bold_G be a generator matrix of the code, 𝐫𝐫\mathbf{r}bold_r the received word, 𝐆Isubscript𝐆𝐼\mathbf{G}_{I}bold_G start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT the submatrix of 𝐆𝐆\mathbf{G}bold_G with columns indexed by I𝐼Iitalic_I and 𝐫Isubscript𝐫𝐼\mathbf{r}_{I}bold_r start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT the vector consisting of the entries of 𝐫𝐫\mathbf{r}bold_r indexed by I𝐼Iitalic_I. The algorithm is as follows.

  1. (1)

    Pick a random information set I𝐼Iitalic_I.

  2. (2)

    Solve the equation 𝐦𝐆I=𝐫Isubscript𝐦𝐆𝐼subscript𝐫𝐼\mathbf{m}\mathbf{G}_{I}=\mathbf{r}_{I}bold_mG start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT = bold_r start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT for 𝐦𝐦\mathbf{m}bold_m.

  3. (3)

    Set 𝐞=𝐫𝐦𝐆𝐞𝐫𝐦𝐆\mathbf{e}=\mathbf{r}-\mathbf{m}\mathbf{G}bold_e = bold_r - bold_mG.

  4. (4)

    If wt(𝐞)twt𝐞𝑡{\rm wt}(\mathbf{e})\leq troman_wt ( bold_e ) ≤ italic_t, output 𝐞𝐞\mathbf{e}bold_e, else go back to step 1111.

If t𝑡titalic_t is within the unique decoding radius, the algorithm succeeds if an information set I𝐼Iitalic_I is found such that I𝐼Iitalic_I has no intersection with the support of the error 𝐞𝐞\mathbf{e}bold_e.

Assuming that every subset of size K𝐾Kitalic_K is an information set (which is only true if the code is MDS, i.e., the minimum distance is d=NK+1𝑑𝑁𝐾1d=N-K+1italic_d = italic_N - italic_K + 1) and that there is a unique solution, we get for each time we do steps (1),(2)12(1),(2)( 1 ) , ( 2 ) and (3)3(3)( 3 ), a probability of (NKt)/(Nt)binomial𝑁𝐾𝑡binomial𝑁𝑡\binom{N-K}{t}/{\binom{N}{t}}( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t end_ARG ) / ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t end_ARG ) that Isupp(e)=𝐼supp𝑒I\cap\operatorname{supp}(e)=\emptysetitalic_I ∩ roman_supp ( italic_e ) = ∅. The expected number of iterations, which we call the workfactor, is the reciprocal of this, denoted by

WFt=(Nt)(NKt).subscriptWF𝑡binomial𝑁𝑡binomial𝑁𝐾𝑡\mathrm{WF}_{t}=\frac{\binom{N}{t}}{\binom{N-K}{t}}.roman_WF start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT = divide start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t end_ARG ) end_ARG start_ARG ( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t end_ARG ) end_ARG .

4 ISD for Delay-Free Convolutional Codes

In this section, we study ISD for delay-free convolutional codes. For this, we rewrite a sliding generator matrix of 𝐆(z)=i=0d1𝐆izi𝐆𝑧superscriptsubscript𝑖0subscript𝑑1subscript𝐆𝑖superscript𝑧𝑖\mathbf{G}(z)=\sum_{i=0}^{d_{1}}\mathbf{G}_{i}z^{i}bold_G ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT as

𝐆~=(𝐆~0γ𝐆~1γ𝐆~lγ𝐆~0γ𝐆~1γ𝐆~lγ𝐆~0γ𝐆~1γ𝐆~0γ),~𝐆matrixsubscriptsuperscript~𝐆𝛾0subscriptsuperscript~𝐆𝛾1subscriptsuperscript~𝐆𝛾𝑙missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscriptsuperscript~𝐆𝛾0subscriptsuperscript~𝐆𝛾1subscriptsuperscript~𝐆𝛾𝑙missing-subexpressionmissing-subexpressionmissing-subexpressionsubscriptsuperscript~𝐆𝛾0missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscriptsuperscript~𝐆𝛾1missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionsubscriptsuperscript~𝐆𝛾0\displaystyle\tilde{\mathbf{G}}=\begin{pmatrix}\tilde{\mathbf{G}}^{\gamma}_{0}% &\tilde{\mathbf{G}}^{\gamma}_{1}&\cdots&\tilde{\mathbf{G}}^{\gamma}_{l}&&&\\ &\ddots&\ddots&\vdots&\ddots&&\\ &&\tilde{\mathbf{G}}^{\gamma}_{0}&\tilde{\mathbf{G}}^{\gamma}_{1}&\cdots&% \tilde{\mathbf{G}}^{\gamma}_{l}\\ &&&\tilde{\mathbf{G}}^{\gamma}_{0}&\ddots&\vdots\\ &&&&\ddots&\tilde{\mathbf{G}}^{\gamma}_{1}\\ &&&&&\tilde{\mathbf{G}}^{\gamma}_{0}\\ \end{pmatrix},over~ start_ARG bold_G end_ARG = ( start_ARG start_ROW start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL start_CELL ⋱ end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) , (14)

where 𝐆~iγsubscriptsuperscript~𝐆𝛾𝑖\tilde{\mathbf{G}}^{\gamma}_{i}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT has size kγ×nγ𝑘𝛾𝑛𝛾k\gamma\times n\gammaitalic_k italic_γ × italic_n italic_γ. Note that when γ=1𝛾1\gamma=1italic_γ = 1, we have 𝐆~iγ=𝐆isubscriptsuperscript~𝐆𝛾𝑖subscript𝐆𝑖\tilde{\mathbf{G}}^{\gamma}_{i}=\mathbf{G}_{i}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, but 𝐆~iγsubscriptsuperscript~𝐆𝛾𝑖\tilde{\mathbf{G}}^{\gamma}_{i}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT can consist of several of the 𝐆jsubscript𝐆𝑗\mathbf{G}_{j}bold_G start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT’s, for example, for γ=2𝛾2\gamma=2italic_γ = 2, we have

𝐆~02=(𝐆0𝐆1𝐆2𝐆0𝐆1𝐆0),subscriptsuperscript~𝐆20matrixsubscript𝐆0subscript𝐆1subscript𝐆2missing-subexpressionsubscript𝐆0subscript𝐆1missing-subexpressionmissing-subexpressionsubscript𝐆0\tilde{\mathbf{G}}^{2}_{0}=\begin{pmatrix}\mathbf{G}_{0}&\mathbf{G}_{1}&% \mathbf{G}_{2}\\ &\mathbf{G}_{0}&\mathbf{G}_{1}\\ &&\mathbf{G}_{0}\end{pmatrix},over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) ,

and

𝐆~12=(𝐆3𝐆4𝐆5𝐆2𝐆3𝐆4𝐆1𝐆2𝐆3).subscriptsuperscript~𝐆21matrixsubscript𝐆3subscript𝐆4subscript𝐆5subscript𝐆2subscript𝐆3subscript𝐆4subscript𝐆1subscript𝐆2subscript𝐆3\tilde{\mathbf{G}}^{2}_{1}=\begin{pmatrix}\mathbf{G}_{3}&\mathbf{G}_{4}&% \mathbf{G}_{5}\\ \mathbf{G}_{2}&\mathbf{G}_{3}&\mathbf{G}_{4}\\ \mathbf{G}_{1}&\mathbf{G}_{2}&\mathbf{G}_{3}\end{pmatrix}.over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 4 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 5 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL bold_G start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 4 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) .

We will also write the error vector as 𝐞=(𝐞~0𝐞~1𝐞~s1)𝐞matrixsubscript~𝐞0subscript~𝐞1subscript~𝐞𝑠1\mathbf{e}=\begin{pmatrix}\tilde{\mathbf{e}}_{0}&\tilde{\mathbf{e}}_{1}&\ldots% &\tilde{\mathbf{e}}_{s-1}\end{pmatrix}bold_e = ( start_ARG start_ROW start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_s - 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ), where 𝐞~isubscript~𝐞𝑖\tilde{\mathbf{e}}_{i}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is of size nγ𝑛𝛾n\gammaitalic_n italic_γ.

4.1 Generic Decoding of Convolutional Codes

Given the encrypted message 𝐫(z)=𝐦(z)𝐆(z)+𝐞(z)𝐫𝑧𝐦𝑧𝐆𝑧𝐞𝑧\mathbf{r}(z)=\mathbf{m}(z)\mathbf{G}(z)+\mathbf{e}(z)bold_r ( italic_z ) = bold_m ( italic_z ) bold_G ( italic_z ) + bold_e ( italic_z ), we aim to find 𝐦(z)𝐆(z)𝐦𝑧𝐆𝑧\mathbf{m}(z)\mathbf{G}(z)bold_m ( italic_z ) bold_G ( italic_z ) and consequently 𝐦(z)𝐦𝑧\mathbf{m}(z)bold_m ( italic_z ).

As before, we turn a polynomial vector 𝐯(z)=i=0d𝐯izi𝔽q[z]n𝐯𝑧superscriptsubscript𝑖0𝑑subscript𝐯𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛\mathbf{v}(z)=\sum_{i=0}^{d}\mathbf{v}_{i}z^{i}\in\mathbb{F}_{q}[z]^{n}bold_v ( italic_z ) = ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT into 𝐯=(𝐯0𝐯1𝐯d)𝔽qnd𝐯matrixsubscript𝐯0subscript𝐯1subscript𝐯𝑑superscriptsubscript𝔽𝑞𝑛𝑑\mathbf{v}=\begin{pmatrix}\mathbf{v}_{0}&\mathbf{v}_{1}&\ldots&\mathbf{v}_{d}% \end{pmatrix}\in\mathbb{F}_{q}^{nd}bold_v = ( start_ARG start_ROW start_CELL bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL bold_v start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n italic_d end_POSTSUPERSCRIPT. Let 𝐯~isubscript~𝐯𝑖\tilde{\mathbf{v}}_{i}over~ start_ARG bold_v end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT be the concatenation of several consecutive 𝐯isubscript𝐯𝑖\mathbf{v}_{i}bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT’s. We get 𝐯=(𝐯~0𝐯~s1).𝐯matrixsubscript~𝐯0subscript~𝐯𝑠1\mathbf{v}=\begin{pmatrix}\tilde{\mathbf{v}}_{0}&\ldots&\tilde{\mathbf{v}}_{s-% 1}\end{pmatrix}.bold_v = ( start_ARG start_ROW start_CELL over~ start_ARG bold_v end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL over~ start_ARG bold_v end_ARG start_POSTSUBSCRIPT italic_s - 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) .

The idea is to iteratively decode the convolutional code with the matrix 𝐆~~𝐆\tilde{\mathbf{G}}over~ start_ARG bold_G end_ARG as follows:

  1. 1.

    Step 0: Use generic decoding to recover 𝐞~0subscript~𝐞0\tilde{\mathbf{e}}_{0}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT from 𝐫~0=𝐦~0𝐆~0γ+𝐞~0subscript~𝐫0subscript~𝐦0subscriptsuperscript~𝐆𝛾0subscript~𝐞0\tilde{\mathbf{r}}_{0}=\tilde{\mathbf{m}}_{0}\tilde{\mathbf{G}}^{\gamma}_{0}+% \tilde{\mathbf{e}}_{0}over~ start_ARG bold_r end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT and recover 𝐦~0subscript~𝐦0\tilde{\mathbf{m}}_{0}over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT from 𝐦~0𝐆~0γsubscript~𝐦0subscriptsuperscript~𝐆𝛾0\tilde{\mathbf{m}}_{0}\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT with linear algebra.

  2. 2.

    Step j:

    1. (a)

      Compute 𝐦~j𝐆~0γ+𝐞~j=𝐫~ji=0j1𝐦~i𝐆~jiγsubscript~𝐦𝑗subscriptsuperscript~𝐆𝛾0subscript~𝐞𝑗subscript~𝐫𝑗superscriptsubscript𝑖0𝑗1subscript~𝐦𝑖subscriptsuperscript~𝐆𝛾𝑗𝑖\tilde{\mathbf{m}}_{j}\tilde{\mathbf{G}}^{\gamma}_{0}+\tilde{\mathbf{e}}_{j}=% \tilde{\mathbf{r}}_{j}-\sum_{i=0}^{j-1}\tilde{\mathbf{m}}_{i}\tilde{\mathbf{G}% }^{\gamma}_{j-i}over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT = over~ start_ARG bold_r end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j - 1 end_POSTSUPERSCRIPT over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j - italic_i end_POSTSUBSCRIPT.

    2. (b)

      Recover 𝐞~jsubscript~𝐞𝑗\tilde{\mathbf{e}}_{j}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT and 𝐦~jsubscript~𝐦𝑗\tilde{\mathbf{m}}_{j}over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT with generic decoding for the code generated by 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT.

For cryptographic purposes there exists only one error 𝐞(z)𝐞𝑧\mathbf{e}(z)bold_e ( italic_z ) with at most a certain Hamming weight such that 𝐫(z)𝐫𝑧\mathbf{r}(z)bold_r ( italic_z ) can be written as codeword plus error. However, we might not find a unique solution 𝐞~jsubscript~𝐞𝑗\tilde{\mathbf{e}}_{j}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT in each block. So at each step, we produce a list of possible error vectors [𝐞~j,1,,𝐞~j,nj]subscript~𝐞𝑗1subscript~𝐞𝑗subscript𝑛𝑗[\tilde{\mathbf{e}}_{j,1},\ldots,\tilde{\mathbf{e}}_{j,n_{j}}][ over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j , 1 end_POSTSUBSCRIPT , … , over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT ] where 𝐞~j,ρ𝔽qNsubscript~𝐞𝑗𝜌superscriptsubscript𝔽𝑞𝑁\tilde{\mathbf{e}}_{j,\rho}\in\mathbb{F}_{q}^{N}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j , italic_ρ end_POSTSUBSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT for ρ{1,,nj}𝜌1subscript𝑛𝑗\rho\in\{1,\ldots,n_{j}\}italic_ρ ∈ { 1 , … , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT } are the errors that we recovered using ISD in Step j𝑗jitalic_j. We also get from the list of possible errors a list of possible messages [𝐦~j,1,,𝐦~j,nj]subscript~𝐦𝑗1subscript~𝐦𝑗subscript𝑛𝑗[\tilde{\mathbf{m}}_{j,1},\ldots,\tilde{\mathbf{m}}_{j,n_{j}}][ over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT italic_j , 1 end_POSTSUBSCRIPT , … , over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT italic_j , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT ]. This gives us a tree, and we aim to find a branch that goes to the bottom of the tree. To find such a branch, we use a depth-first algorithm. We will first describe this procedure and then justify the choice of a depth-first algorithm over a breadth-first algorithm. As a generic decoding method, we use information set decoding, but in principle, any generic decoding method can be used.

Note further that one can also use overlapping parts of the received word for decoding and use a consistency check on the recovered messages to limit the number of possibilities in the search. For our experiments that did not give huge speedups, but it might be useful if one uses different codes.

4.2 Using ISD for Convolutional Codes

We want to use information set decoding (ISD) as a generic method of decoding. Let t𝑡titalic_t be the expected weight of an error block 𝐞~isubscript~𝐞𝑖\tilde{\mathbf{e}}_{i}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, rounded up to the next integer. While we expect t𝑡titalic_t errors in each block, the chance of each block having at most t𝑡titalic_t errors can be very small. So we introduce a variable ε𝜀\varepsilonitalic_ε and allow up to t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors in each block. Note that ε𝜀\varepsilonitalic_ε can be chosen so that an arbitrarily high percentage of the errors satisfy this condition, but increasing ε𝜀\varepsilonitalic_ε increases the amount of solutions we receive at each step and thus computational time. We will discuss how to choose ε𝜀\varepsilonitalic_ε in Section 4.3.1.

Note that the first solution we find might not be the correct one, or, if the algorithm is currently running on a “wrong” branch, no solution may be found. So aborting the ISD search after an error is found is not an option. Our solution to this issue is to simply run the algorithm for a fixed amount of iterations and collect all solutions. The number of such iterations can be chosen such that it is almost guaranteed that the correct error will be in the list of outputs at every step as we will explain later. Thus, if no solutions are found, we expect to be on a wrong branch.

4.2.1 The Choice of a Depth-First Algorithm

Depth-first algorithms, in general, have lower memory usage than breadth-first algorithms. However, our main reason for choosing a depth-first algorithm is that for our purposes, we expect a depth-first algorithm to run faster than a breadth-first algorithm. The reasons for this we shall explain in this subsection.

Depth-first search works as follows. We start with a tree and always move down the left-most possible branch. Once we cannot move down any further we backtrack and then move down the left-most branch we have not explored yet. Note that we do not have to store what we have explored already by storing in an appropriate way which branches we have to explore.

In Figure 1, we labeled the nodes in the tree according to the sequence in which we encounter them in a depth first search. To be precise we go from 1111 to 2222, 3333, 4444. Then we backtrack to 3333, from which we go to 5555. After this we backtrack all the way to 1111 from where we go to 6666 and traverse the remaining graph.

88887777666655554444333322221111
Figure 1: Depth-First Search.

We only worked with the most basic instance of ISD, the Prange algorithm. Note that, after a choice of an information set I𝐼Iitalic_I, Prange succeeds in recovering an error if the support of the error is contained in the complement of I𝐼Iitalic_I. This is more likely to happen for errors of smaller weight, so errors of smaller weight have a higher probability of getting found first by the algorithm than errors of higher weight.

We allow up to t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors in each window. However, in most cases, the correct error vector will have a smaller weight. This means that the correct error has a tendency to appear at one of the first positions of the output lists of the ISD search at each step. So in most steps, the depth-first algorithm will immediately proceed with the correct error.

Furthermore we heuristically expect a kind of avalanche effect or diffusion, meaning that if we have several wrong messages the error will spread and there will be no close codewords to the received word. Hence the algorithm should not go too deep in the depth first search for wrong errors and messages.

Our observations from the experiments are in line with these expectations.

4.2.2 Low Weight Codewords

Let 𝐆(z)=𝐆izi𝔽q[z]k×n𝐆𝑧subscript𝐆𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑘𝑛\mathbf{G}(z)=\sum\mathbf{G}_{i}z^{i}\in\mathbb{F}_{q}[z]^{k\times n}bold_G ( italic_z ) = ∑ bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT italic_k × italic_n end_POSTSUPERSCRIPT and 𝐇(z)=𝐇izi𝔽q[z](nk)×n𝐇𝑧subscript𝐇𝑖superscript𝑧𝑖subscript𝔽𝑞superscriptdelimited-[]𝑧𝑛𝑘𝑛\mathbf{H}(z)=\sum\mathbf{H}_{i}z^{i}\in\mathbb{F}_{q}[z]^{(n-k)\times n}bold_H ( italic_z ) = ∑ bold_H start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_z start_POSTSUPERSCRIPT italic_i end_POSTSUPERSCRIPT ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT [ italic_z ] start_POSTSUPERSCRIPT ( italic_n - italic_k ) × italic_n end_POSTSUPERSCRIPT, with 𝐇0subscript𝐇0\mathbf{H}_{0}bold_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT full rank, be a generator matrix and a parity-check matrix, respectively, of the same non-catastrophic convolutional code 𝒞𝒞\mathcal{C}caligraphic_C. Note that each non-catastrophic convolutional code possesses a left-prime parity-check matrix 𝐇(z)𝐇𝑧\mathbf{H}(z)bold_H ( italic_z ), and hence, in particular a parity-check matrix 𝐇(z)𝐇𝑧\mathbf{H}(z)bold_H ( italic_z ) such that 𝐇0subscript𝐇0\mathbf{H}_{0}bold_H start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is full rank. Then, for γ0𝛾subscriptabsent0\gamma\in{\mathbb{Z}_{\geq 0}}italic_γ ∈ blackboard_Z start_POSTSUBSCRIPT ≥ 0 end_POSTSUBSCRIPT, it is an easy consequence of Lemma 3 that 𝐇~0γsubscriptsuperscript~𝐇𝛾0\tilde{\mathbf{H}}^{\gamma}_{0}over~ start_ARG bold_H end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is a parity-check matrix for the block code with generator matrix 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT. Note that the block code with generator matrix 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT (like each block code) always possesses a parity-check even if the corresponding convolutional code is catastrophic. Moreover, it is important to note that, due to the restriction 𝐯00subscript𝐯00\mathbf{v}_{0}\neq 0bold_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≠ 0, respectively 𝐮00subscript𝐮00\mathbf{u}_{0}\neq 0bold_u start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≠ 0, in the definition of column distances, the distance of the block code with generator matrix 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is upper bounded by dγcsuperscriptsubscript𝑑𝛾𝑐d_{\gamma}^{c}italic_d start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT but can be much smaller. While a convolutional code 𝒞𝒞\mathcal{C}caligraphic_C with generator matrix 𝐆(z)𝐆𝑧\mathbf{G}(z)bold_G ( italic_z ) may have a large minimum distance, the linear code generated by the matrix

𝐆~0γ=(𝐆0𝐆1𝐆γ𝐆0𝐆1𝐆0)subscriptsuperscript~𝐆𝛾0matrixsubscript𝐆0subscript𝐆1subscript𝐆𝛾missing-subexpressionsubscript𝐆0missing-subexpressionmissing-subexpressionsubscript𝐆1missing-subexpressionmissing-subexpressionmissing-subexpressionsubscript𝐆0\tilde{\mathbf{G}}^{\gamma}_{0}=\begin{pmatrix}\mathbf{G}_{0}&\mathbf{G}_{1}&% \cdots&\mathbf{G}_{\gamma}\\ &\mathbf{G}_{0}&\ddots&\vdots\\ &&\ddots&\mathbf{G}_{1}\\ &&&\mathbf{G}_{0}\end{pmatrix}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_G start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL ⋱ end_CELL start_CELL ⋮ end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL ⋱ end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG )

can have codewords of small weight. Note that the code generated by 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT contains codewords of the form (𝟎𝟎𝐜),matrix00𝐜\begin{pmatrix}\mathbf{0}&\cdots&\mathbf{0}&\mathbf{c}\end{pmatrix},( start_ARG start_ROW start_CELL bold_0 end_CELL start_CELL ⋯ end_CELL start_CELL bold_0 end_CELL start_CELL bold_c end_CELL end_ROW end_ARG ) , where 𝐜𝐜\mathbf{c}bold_c lies in rowspan(𝐆0)rowspansubscript𝐆0\text{rowspan}(\mathbf{G}_{0})rowspan ( bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ). Note further that if 𝒞𝒞\mathcal{C}caligraphic_C is delay-free (that is, 𝐆0subscript𝐆0\mathbf{G}_{0}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT has full rank), every non-zero codeword of rowspan(𝐆~0γ)rowspansubscriptsuperscript~𝐆𝛾0\text{rowspan}(\tilde{\mathbf{G}}^{\gamma}_{0})rowspan ( over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) is of the form

(𝟎𝟎𝐜𝐫1𝐫i)matrix00𝐜subscript𝐫1subscript𝐫𝑖\begin{pmatrix}\mathbf{0}&\cdots&\mathbf{0}&\mathbf{c}&\mathbf{r}_{1}&\cdots&% \mathbf{r}_{i}\end{pmatrix}( start_ARG start_ROW start_CELL bold_0 end_CELL start_CELL ⋯ end_CELL start_CELL bold_0 end_CELL start_CELL bold_c end_CELL start_CELL bold_r start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL ⋯ end_CELL start_CELL bold_r start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_CELL end_ROW end_ARG )

for a non-zero 𝐜rowspan(𝐆0)𝐜rowspansubscript𝐆0\mathbf{c}\in\text{rowspan}(\mathbf{G}_{0})bold_c ∈ rowspan ( bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ). So the minimum distance of the code generated by 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT equals the one of the code generated by 𝐆0subscript𝐆0\mathbf{G}_{0}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT.

Actually, if one has a message of the form m=(m0,,mγ)msubscript𝑚0subscript𝑚𝛾\textbf{m}=(m_{0},\ldots,m_{\gamma})m = ( italic_m start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , … , italic_m start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ) where i{0,,γ}𝑖0𝛾i\in\{0,\ldots,\gamma\}italic_i ∈ { 0 , … , italic_γ } is minimal such that mi0subscript𝑚𝑖0m_{i}\neq 0italic_m start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ≠ 0, then the weight of c=(c0,,cγ)=mG~0csubscript𝑐0subscript𝑐𝛾msubscript~G0\textbf{c}=(c_{0},\ldots,c_{\gamma})=\textbf{m}\tilde{\textbf{G}}_{0}c = ( italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , … , italic_c start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ) = m over~ start_ARG G end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is lower bounded by dγic(𝒞)subscriptsuperscript𝑑𝑐𝛾𝑖𝒞d^{c}_{\gamma-i}(\mathcal{C})italic_d start_POSTSUPERSCRIPT italic_c end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_γ - italic_i end_POSTSUBSCRIPT ( caligraphic_C ) and c0==ci1=0subscript𝑐0subscript𝑐𝑖10c_{0}=\cdots=c_{i-1}=0italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = ⋯ = italic_c start_POSTSUBSCRIPT italic_i - 1 end_POSTSUBSCRIPT = 0, ci0subscript𝑐𝑖0c_{i}\neq 0italic_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ≠ 0.

4.2.3 Undetectable Errors

Since we are working with Prange’s algorithm, errors can’t be detected if the support of a codeword is contained in the support of the error. This is formalized in the following proposition, which states that an information set I𝐼Iitalic_I of a a linear code C𝐶Citalic_C over 𝔽qsubscript𝔽𝑞\mathbb{F}_{q}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT must intersect the support of each codeword.

Proposition 19.

Let I𝐼Iitalic_I be an information set for a [N,K]𝑁𝐾[N,K][ italic_N , italic_K ]-code C𝐶Citalic_C and 𝐜C{0}𝐜𝐶0\mathbf{c}\in C\setminus\{0\}bold_c ∈ italic_C ∖ { 0 }. Then supp(𝐜)Isupp𝐜𝐼\mathrm{supp}(\mathbf{c})\cap I\neq\emptysetroman_supp ( bold_c ) ∩ italic_I ≠ ∅.

Proof.

Let 𝐜𝐜\mathbf{c}bold_c be in C{0}𝐶0C\setminus\{0\}italic_C ∖ { 0 } and I{1,,N}𝐼1𝑁I\subset\{1,\ldots,N\}italic_I ⊂ { 1 , … , italic_N } a set of size K𝐾Kitalic_K that has trivial intersection with the support of 𝐜𝐜\mathbf{c}bold_c. Pick a basis of C𝐶Citalic_C that contains 𝐜𝐜\mathbf{c}bold_c and arrange them in a generator matrix 𝐆𝐆\mathbf{G}bold_G such that the last row is 𝐜𝐜\mathbf{c}bold_c. The last row of the matrix 𝐆Isubscript𝐆𝐼\mathbf{G}_{I}bold_G start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT, consisting of the columns indexed by I𝐼Iitalic_I, is a zero row, so 𝐆Isubscript𝐆𝐼\mathbf{G}_{I}bold_G start_POSTSUBSCRIPT italic_I end_POSTSUBSCRIPT is not invertible. This means that I𝐼Iitalic_I is not an information set. ∎

Note that in these cases, the error 𝐞𝐞\mathbf{e}bold_e can be written as 𝐞=𝐞+𝐜𝐞superscript𝐞𝐜\mathbf{e}=\mathbf{e^{\prime}}+\mathbf{c}bold_e = bold_e start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT + bold_c, where 𝐜𝐜\mathbf{c}bold_c is a codeword whose support is contained in the support of 𝐞𝐞\mathbf{e}bold_e and 𝐞superscript𝐞\mathbf{e^{\prime}}bold_e start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT is an error which can be recovered by the Prange algorithm. So we can ensure that 𝐞𝐞\mathbf{e}bold_e is in our list of outputs by pre-computing a list of low-weight codewords (for our experiments codewords of weight up to 2 were sufficient for most cases) and then, for all possible errors 𝐞superscript𝐞\mathbf{e^{\prime}}bold_e start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT in the output of the Prange algorithm and low-weight codewords 𝐜𝐜\mathbf{c}bold_c, appending 𝐞+𝐜superscript𝐞𝐜\mathbf{e^{\prime}}+\mathbf{c}bold_e start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT + bold_c at the end of the list of outputs if wt(𝐞+𝐜)t+εwtsuperscript𝐞𝐜𝑡𝜀\operatorname{wt}(\mathbf{e^{\prime}}+\mathbf{c})\leq t+\varepsilonroman_wt ( bold_e start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT + bold_c ) ≤ italic_t + italic_ε. It is important that the new solutions get appended at the end of the list when working in a setting where it is unlikely to happen that the support of an error contains the support of a codeword.

4.2.4 The Choice of γ𝛾\gammaitalic_γ

Recall that γ𝛾\gammaitalic_γ is the number of distinct 𝐆isubscript𝐆𝑖\mathbf{G}_{i}bold_G start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT’s in our matrix 𝐆0γsuperscriptsubscript𝐆0𝛾\mathbf{G}_{0}^{\gamma}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT which we use for iterative decoding (see beginning of Section 4). Note that the choice of γ𝛾\gammaitalic_γ can heavily impact the decoding complexity: choosing a large γ𝛾\gammaitalic_γ will increase the ISD cost in each step, while choosing a small γ𝛾\gammaitalic_γ increases the number of steps. This could potentially substantially increase the nodes the algorithm will transverse in the depth-first search. Thus, γ𝛾\gammaitalic_γ needs to be carefully chosen depending on the parameters of the cryptosystem. In fact, if we choose γ𝛾\gammaitalic_γ to be the maximum of the memory of the generator matrix and the degree of the error vector 𝐞(z)𝐞𝑧\mathbf{e}(z)bold_e ( italic_z ), then we are in the setting of decoding a single block code. On the other hand, a small γ𝛾\gammaitalic_γ might also not be suitable for decoding. Consider the case

𝐆(z)=(g1(z)g2(z)),𝐆𝑧matrixsubscript𝑔1𝑧subscript𝑔2𝑧\mathbf{G}(z)=\begin{pmatrix}g_{1}(z)&g_{2}(z)\end{pmatrix},bold_G ( italic_z ) = ( start_ARG start_ROW start_CELL italic_g start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) end_CELL start_CELL italic_g start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_z ) end_CELL end_ROW end_ARG ) ,

where g1(z),g2(z)𝔽2[z]subscript𝑔1𝑧subscript𝑔2𝑧subscript𝔽2delimited-[]𝑧g_{1}(z),g_{2}(z)\in\mathbb{F}_{2}[z]italic_g start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) , italic_g start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_z ) ∈ blackboard_F start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT [ italic_z ] are of large degree. If we choose γ=1𝛾1\gamma=1italic_γ = 1, that is, 𝐆0γsuperscriptsubscript𝐆0𝛾\mathbf{G}_{0}^{\gamma}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT consists of the constant terms of g1(z)subscript𝑔1𝑧g_{1}(z)italic_g start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( italic_z ) and g2(z)subscript𝑔2𝑧g_{2}(z)italic_g start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ( italic_z ), then only a small percentage of errors will have at most 1111 error in each block. But if we decode with at most 2222 errors per block, then we get 4444 solutions each step, at which point we are essentially just bruteforcing all solutions.

We have not found a rigorous way of choosing γ𝛾\gammaitalic_γ optimally and have resorted to experimentation.

4.3 ISD for a Fixed Amount of Errors Uniformly Distributed Over The Error Vector

Our goal in this section is to reduce the information-set decoding of the convolutional code to the ISD of equations of the form

𝐦i𝐆0γ~+𝐞i~,subscript𝐦𝑖~subscriptsuperscript𝐆𝛾0~subscript𝐞𝑖\mathbf{m}_{i}\tilde{\mathbf{G}^{\gamma}_{0}}+\tilde{\mathbf{e}_{i}},bold_m start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT over~ start_ARG bold_G start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG + over~ start_ARG bold_e start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG ,

or equivalently

𝐇~0𝐞~iT=𝐬i.subscript~𝐇0subscriptsuperscript~𝐞𝑇𝑖subscript𝐬𝑖\tilde{\mathbf{H}}_{0}\tilde{\mathbf{e}}^{T}_{i}=\mathbf{s}_{i}.over~ start_ARG bold_H end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT over~ start_ARG bold_e end_ARG start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = bold_s start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT .

The analysis consists of several steps. We first want to compute the probability that blocks of the error contain at most t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε non-zero entries for a given ε𝜀\varepsilonitalic_ε.

We will assume the following: 𝒞𝒞\mathcal{C}caligraphic_C is a delay-free convolutional code, the error vector 𝐞𝐞\mathbf{e}bold_e of length sN𝑠𝑁sNitalic_s italic_N has a total weight of tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT, with the errors uniformly distributed over its length.

4.3.1 Exceedence Probability for the Error Distributions

Let tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT be the total error weight, N𝑁Nitalic_N the length of the code generated by 𝐆~0γsubscriptsuperscript~𝐆𝛾0\tilde{\mathbf{G}}^{\gamma}_{0}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, s𝑠sitalic_s the number of blocks of size N𝑁Nitalic_N we need for decoding, t=te/s𝑡subscript𝑡𝑒𝑠t=\lceil{t_{e}}/{s}\rceilitalic_t = ⌈ italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT / italic_s ⌉, the (rounded) expected number of errors in each size N𝑁Nitalic_N window, and ε𝜀\varepsilonitalic_ε the tolerance for the error weights.

To give the exact probability of an error having at most weight t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε in each window of size N𝑁Nitalic_N, we consider the polynomial

p(z)=1+(q1)(N1)z+(q1)2(N2)z2++(q1)t+ε(Nt+ε).𝑝𝑧1𝑞1binomial𝑁1𝑧superscript𝑞12binomial𝑁2superscript𝑧2superscript𝑞1𝑡𝜀binomial𝑁𝑡𝜀p(z)=1+(q-1)\binom{N}{1}z+(q-1)^{2}\binom{N}{2}z^{2}+\ldots+(q-1)^{t+% \varepsilon}\binom{N}{t+\varepsilon}.italic_p ( italic_z ) = 1 + ( italic_q - 1 ) ( FRACOP start_ARG italic_N end_ARG start_ARG 1 end_ARG ) italic_z + ( italic_q - 1 ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ( FRACOP start_ARG italic_N end_ARG start_ARG 2 end_ARG ) italic_z start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + … + ( italic_q - 1 ) start_POSTSUPERSCRIPT italic_t + italic_ε end_POSTSUPERSCRIPT ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t + italic_ε end_ARG ) .

We compute

q(z)=p(z)s𝑞𝑧𝑝superscript𝑧𝑠q(z)=p(z)^{s}italic_q ( italic_z ) = italic_p ( italic_z ) start_POSTSUPERSCRIPT italic_s end_POSTSUPERSCRIPT

and recover the tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT’th coefficient of q(z),𝑞𝑧q(z),italic_q ( italic_z ) , which gives us the number of error vectors of weight tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT with at most t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors in each block of size N𝑁Nitalic_N. Dividing by the total number of weight tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT error vectors, which is

(q1)te(sNte),superscript𝑞1subscript𝑡𝑒binomial𝑠𝑁subscript𝑡𝑒(q-1)^{t_{e}}\binom{sN}{t_{e}},( italic_q - 1 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( FRACOP start_ARG italic_s italic_N end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG ) ,

yields the probability of having at most t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors in all blocks. One can reformulate this in terms of a multivariate hypergeometric distribution. More information about multivariate hypergeometric distributions can be found in [johnson1997discrete]. Note that in each block we get a hypergeometric distribution which we use for an estimate of the tails in the next section.

4.3.2 Estimates, Hypergeometric Distribution

The hypergeometric distribution has an exponentially decaying tail; see [chvatal1979tail]. Let us consider the tail of a hypergeometric distribution given by

H(A,B,b,l)=(Bb)1i=lb(Ai)(BAbi).𝐻𝐴𝐵𝑏𝑙superscriptbinomial𝐵𝑏1superscriptsubscript𝑖𝑙𝑏binomial𝐴𝑖binomial𝐵𝐴𝑏𝑖H(A,B,b,l)=\binom{B}{b}^{-1}\sum_{i=l}^{b}\binom{A}{i}\binom{B-A}{b-i}.italic_H ( italic_A , italic_B , italic_b , italic_l ) = ( FRACOP start_ARG italic_B end_ARG start_ARG italic_b end_ARG ) start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT ∑ start_POSTSUBSCRIPT italic_i = italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ( FRACOP start_ARG italic_A end_ARG start_ARG italic_i end_ARG ) ( FRACOP start_ARG italic_B - italic_A end_ARG start_ARG italic_b - italic_i end_ARG ) .

Define α𝛼\alphaitalic_α through the equation

l=(A/B+α)b.𝑙𝐴𝐵𝛼𝑏l=(A/B+\alpha)b.italic_l = ( italic_A / italic_B + italic_α ) italic_b .

where α𝛼\alphaitalic_α should be greater than 00. One can show as in [chvatal1979tail] that we get for the tail

H(A,B,b,l)e2α2b.𝐻𝐴𝐵𝑏𝑙superscript𝑒2superscript𝛼2𝑏H(A,B,b,l)\leq e^{-2\alpha^{2}b}.italic_H ( italic_A , italic_B , italic_b , italic_l ) ≤ italic_e start_POSTSUPERSCRIPT - 2 italic_α start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT .

In the setting above we have A=N,B=Ns,b=tsformulae-sequence𝐴𝑁formulae-sequence𝐵𝑁𝑠𝑏𝑡𝑠A=N,B=Ns,b=tsitalic_A = italic_N , italic_B = italic_N italic_s , italic_b = italic_t italic_s. Hence

A/B=1/s,𝐴𝐵1𝑠A/B=1/s,italic_A / italic_B = 1 / italic_s ,

and

l=t+αts.𝑙𝑡𝛼𝑡𝑠l=t+\alpha ts.italic_l = italic_t + italic_α italic_t italic_s .

Thus, if ε=αts𝜀𝛼𝑡𝑠\varepsilon=\alpha tsitalic_ε = italic_α italic_t italic_s, then we get that the probability of having at least t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors is at most

e2α2ts=e2αε.superscript𝑒2superscript𝛼2𝑡𝑠superscript𝑒2𝛼𝜀e^{-2\alpha^{2}ts}=e^{-2\alpha\varepsilon}.italic_e start_POSTSUPERSCRIPT - 2 italic_α start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_t italic_s end_POSTSUPERSCRIPT = italic_e start_POSTSUPERSCRIPT - 2 italic_α italic_ε end_POSTSUPERSCRIPT .

For the weight of the block to exceed t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε, we set l=t+ε+1𝑙𝑡𝜀1l=t+\varepsilon+1italic_l = italic_t + italic_ε + 1, getting α=ε+1st.𝛼𝜀1𝑠𝑡\alpha=\frac{\varepsilon+1}{st}.italic_α = divide start_ARG italic_ε + 1 end_ARG start_ARG italic_s italic_t end_ARG . Then the probability of the block having weight more than t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε is at most

e2α2ts=e2α(ε+1).superscript𝑒2superscript𝛼2𝑡𝑠superscript𝑒2𝛼𝜀1e^{-2\alpha^{2}ts}=e^{-2\alpha(\varepsilon+1)}.italic_e start_POSTSUPERSCRIPT - 2 italic_α start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_t italic_s end_POSTSUPERSCRIPT = italic_e start_POSTSUPERSCRIPT - 2 italic_α ( italic_ε + 1 ) end_POSTSUPERSCRIPT .

By the Union bound, we have:

[maxj{wt(𝐞~j),j=0,,s1}>t+ε]delimited-[]subscriptmax𝑗wtsubscript~𝐞𝑗𝑗0𝑠1𝑡𝜀\displaystyle\mathbb{P}[\operatorname{max}_{j}\{\operatorname{wt}(\tilde{% \mathbf{e}}_{j}),j=0,\cdots,s-1\}>t+\varepsilon]blackboard_P [ roman_max start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT { roman_wt ( over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) , italic_j = 0 , ⋯ , italic_s - 1 } > italic_t + italic_ε ] sH(N,Ns,ts,t+ε+1)absent𝑠𝐻𝑁𝑁𝑠𝑡𝑠𝑡𝜀1\displaystyle\leq sH(N,Ns,ts,t+\varepsilon+1)≤ italic_s italic_H ( italic_N , italic_N italic_s , italic_t italic_s , italic_t + italic_ε + 1 )
se2α2ts=se2α(ε+1)absent𝑠superscript𝑒2superscript𝛼2𝑡𝑠𝑠superscript𝑒2𝛼𝜀1\displaystyle\leq se^{-2\alpha^{2}ts}=se^{-2\alpha(\varepsilon+1)}≤ italic_s italic_e start_POSTSUPERSCRIPT - 2 italic_α start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_t italic_s end_POSTSUPERSCRIPT = italic_s italic_e start_POSTSUPERSCRIPT - 2 italic_α ( italic_ε + 1 ) end_POSTSUPERSCRIPT

where 𝐞~jsubscript~𝐞𝑗\tilde{\mathbf{e}}_{j}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT is the j𝑗jitalic_j-th error coefficient.

4.4 Estimates on The Number of Solutions When the Amount of Errors Exceeds the Unique Decoding Radius

Given a (random) full-rank matrix 𝐇𝔽q(NK)×N𝐇superscriptsubscript𝔽𝑞𝑁𝐾𝑁\mathbf{H}\in\mathbb{F}_{q}^{(N-K)\times N}bold_H ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ( italic_N - italic_K ) × italic_N end_POSTSUPERSCRIPT, an error vector 𝐞𝔽qN𝐞superscriptsubscript𝔽𝑞𝑁\mathbf{e}\in\mathbb{F}_{q}^{N}bold_e ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT of weight t𝑡titalic_t and 𝐬𝔽qNK𝐬superscriptsubscript𝔽𝑞𝑁𝐾\mathbf{s}\in\mathbb{F}_{q}^{N-K}bold_s ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N - italic_K end_POSTSUPERSCRIPT we want to compute the expected amount of solutions of the equation

𝐇𝐞T=𝐬superscript𝐇𝐞𝑇𝐬\mathbf{He}^{T}=\mathbf{s}bold_He start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT = bold_s (15)

of weight at most t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε. We care about the conditional expectation

𝔼[#solutions with at most t+ε errors|at least one such solution exists]𝔼delimited-[]#solutions with at most 𝑡conditional𝜀 errorsat least one such solution exists\displaystyle\mathbb{E}[\#\text{solutions with at most }t+\varepsilon\text{ % errors}\>|\>\text{at least one such solution exists}]blackboard_E [ # solutions with at most italic_t + italic_ε errors | at least one such solution exists ]
1+𝔼[#solutions with at most t+ε errors].absent1𝔼delimited-[]#solutions with at most 𝑡𝜀 errors\displaystyle\approx 1+\mathbb{E}[\#\text{solutions with at most }t+% \varepsilon\text{ errors}].≈ 1 + blackboard_E [ # solutions with at most italic_t + italic_ε errors ] . (16)

Note that every solution to Equation (15) lives in

S:=𝐞+ker(𝐇),assign𝑆𝐞ker𝐇S:=\mathbf{e}+\mathrm{ker}(\mathbf{H}),italic_S := bold_e + roman_ker ( bold_H ) ,

which has qKsuperscript𝑞𝐾q^{K}italic_q start_POSTSUPERSCRIPT italic_K end_POSTSUPERSCRIPT elements. Notice that if 𝐇𝐇\mathbf{H}bold_H is “random”, then we expect this set to be uniformly distributed in 𝔽qNsuperscriptsubscript𝔽𝑞𝑁\mathbb{F}_{q}^{N}blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT. So we expect that the number of vectors of weight t~~𝑡\tilde{t}over~ start_ARG italic_t end_ARG in S𝑆Sitalic_S to be

(q1)t~qNK(Nt~).superscript𝑞1~𝑡superscript𝑞𝑁𝐾binomial𝑁~𝑡\frac{(q-1)^{\tilde{t}}}{q^{N-K}}\binom{N}{\tilde{t}}.divide start_ARG ( italic_q - 1 ) start_POSTSUPERSCRIPT over~ start_ARG italic_t end_ARG end_POSTSUPERSCRIPT end_ARG start_ARG italic_q start_POSTSUPERSCRIPT italic_N - italic_K end_POSTSUPERSCRIPT end_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG over~ start_ARG italic_t end_ARG end_ARG ) .

Summing over all t~t+ε~𝑡𝑡𝜀\tilde{t}\leq t+\varepsilonover~ start_ARG italic_t end_ARG ≤ italic_t + italic_ε yields the estimate for (4.4).

4.4.1 Choosing Maxiter and Increased ISD Cost for Allowing t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε Errors.

The work factor of the Prange algorithm for an [N,K]limit-from𝑁𝐾[N,K]-[ italic_N , italic_K ] -code with an error vector of weight t𝑡titalic_t is given by

WFt=(Nt)(NKt).subscriptWF𝑡binomial𝑁𝑡binomial𝑁𝐾𝑡\mathrm{WF}_{t}=\frac{\binom{N}{t}}{\binom{N-K}{t}}.roman_WF start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT = divide start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t end_ARG ) end_ARG start_ARG ( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t end_ARG ) end_ARG .

Similarly, if we allow t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε errors with ε1𝜀1\varepsilon\geq 1italic_ε ≥ 1 the work factor changes to

WFt+ε=(Nt+ε)(NKt+ε).subscriptWF𝑡𝜀binomial𝑁𝑡𝜀binomial𝑁𝐾𝑡𝜀\mathrm{WF}_{t+\varepsilon}=\frac{\binom{N}{t+\varepsilon}}{\binom{N-K}{t+% \varepsilon}}.roman_WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT = divide start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t + italic_ε end_ARG ) end_ARG start_ARG ( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t + italic_ε end_ARG ) end_ARG .

The quotient of the two work factors simplifies to

WFt+εWFt=j=0ε1NtjNKtj(NtNKt)ε.subscriptWF𝑡𝜀subscriptWF𝑡superscriptsubscriptproduct𝑗0𝜀1𝑁𝑡𝑗𝑁𝐾𝑡𝑗superscript𝑁𝑡𝑁𝐾𝑡𝜀\frac{\mathrm{WF}_{t+\varepsilon}}{\mathrm{WF}_{t}}=\displaystyle\prod_{j=0}^{% \varepsilon-1}\frac{N-t-j}{N-K-t-j}\approx\left({\frac{N-t}{N-K-t}}\right)^{% \varepsilon}.divide start_ARG roman_WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT end_ARG start_ARG roman_WF start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT end_ARG = ∏ start_POSTSUBSCRIPT italic_j = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_ε - 1 end_POSTSUPERSCRIPT divide start_ARG italic_N - italic_t - italic_j end_ARG start_ARG italic_N - italic_K - italic_t - italic_j end_ARG ≈ ( divide start_ARG italic_N - italic_t end_ARG start_ARG italic_N - italic_K - italic_t end_ARG ) start_POSTSUPERSCRIPT italic_ε end_POSTSUPERSCRIPT .

Note further that while WFt+εsubscriptWF𝑡𝜀\mathrm{WF}_{t+\varepsilon}roman_WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT is the expected number of iterations to find a solution of weight t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε, it is unlikely that we will find the correct error at each step with this number of iterations. To ensure that the correct error is in the list of outputs of our ISD algorithm, we run it for a fixed amount of iterations, chosen to ensure this. To make this choice, note that the chance of finding a fixed detectable error of weight t+ϵ𝑡italic-ϵt+\epsilonitalic_t + italic_ϵ in one iteration of Prange’s algorithm is given by

WFt+ε1=(NKt+ϵ)(Nt+ϵ).superscriptsubscriptWF𝑡𝜀1binomial𝑁𝐾𝑡italic-ϵbinomial𝑁𝑡italic-ϵ\text{WF}_{t+\varepsilon}^{-1}=\frac{\binom{N-K}{t+\epsilon}}{\binom{N}{t+% \epsilon}}.WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT = divide start_ARG ( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t + italic_ϵ end_ARG ) end_ARG start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t + italic_ϵ end_ARG ) end_ARG .

So the probability of finding a given error of weight t+ϵ𝑡italic-ϵt+\epsilonitalic_t + italic_ϵ at all s𝑠sitalic_s steps with W𝑊Witalic_W ISD iterations at each step is given by

(1(1(NKt+ϵ)(Nt+ϵ))W)s.superscript1superscript1binomial𝑁𝐾𝑡italic-ϵbinomial𝑁𝑡italic-ϵ𝑊𝑠\left(1-\left(1-\frac{\binom{N-K}{t+\epsilon}}{\binom{N}{t+\epsilon}}\right)^{% W}\right)^{s}.( 1 - ( 1 - divide start_ARG ( FRACOP start_ARG italic_N - italic_K end_ARG start_ARG italic_t + italic_ϵ end_ARG ) end_ARG start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t + italic_ϵ end_ARG ) end_ARG ) start_POSTSUPERSCRIPT italic_W end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT italic_s end_POSTSUPERSCRIPT .

Note that this is a lower bound for the success probability of recovering an error vector 𝐞=(𝐞~0𝐞~1𝐞~s1)𝐞matrixsubscript~𝐞0subscript~𝐞1subscript~𝐞𝑠1\mathbf{e}=\begin{pmatrix}\tilde{\mathbf{e}}_{0}&\tilde{\mathbf{e}}_{1}&\ldots% &\tilde{\mathbf{e}}_{s-1}\end{pmatrix}bold_e = ( start_ARG start_ROW start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL … end_CELL start_CELL over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_s - 1 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) with wt(𝐞~i)t+ϵwtsubscript~𝐞𝑖𝑡italic-ϵ\mathrm{wt}(\tilde{\mathbf{e}}_{i})\leq t+\epsilonroman_wt ( over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) ≤ italic_t + italic_ϵ for all i=1,,s1𝑖1𝑠1i=1,\ldots,s-1italic_i = 1 , … , italic_s - 1 since the weight of an 𝐞~isubscript~𝐞𝑖\tilde{\mathbf{e}}_{i}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT can be smaller than t+ϵ𝑡italic-ϵt+\epsilonitalic_t + italic_ϵ, which increases the probability of it getting recovered.

4.4.2 Choice of ε𝜀\varepsilonitalic_ε

In this subsection we summarize the impact of the choice of ε𝜀\varepsilonitalic_ε. Increasing ε𝜀\varepsilonitalic_ε makes it more likely that errors satisfy the weight condition on each block and thus allows to recover more errors and messages. However, it also increases the work factor for ISD and the number of solutions found in each step, which can heavily increase the computational time.

All of these factors need to be carefully considered when choosing ε𝜀\varepsilonitalic_ε.

0123456000.20.20.20.20.40.40.40.40.60.60.60.60.80.80.80.81111ε𝜀\varepsilonitalic_ε[maxj{wt(𝐞j),0j<s}t+ε]delimited-[]subscriptmax𝑗wtsubscript𝐞𝑗0𝑗𝑠𝑡𝜀\mathbb{P}[\operatorname{max}_{j}\{\operatorname{wt}(\mathbf{e}_{j}),0\leq j<s% \}\leq t+\varepsilon]blackboard_P [ roman_max start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT { roman_wt ( bold_e start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) , 0 ≤ italic_j < italic_s } ≤ italic_t + italic_ε ]Probability that every block has weight at most t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε vs. ε𝜀\varepsilonitalic_ε
Figure 2: Calculating a suitable value of ε𝜀\varepsilonitalic_ε for [bolkema2017variations], Example 5.11.

For example, for the attack on [bolkema2017variations] that we will discuss in Section 5.1, we have the parameters q=2𝑞2q=2italic_q = 2, te=140subscript𝑡𝑒140t_{e}=140italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT = 140, s=167𝑠167s=167italic_s = 167, K=36𝐾36K=36italic_K = 36 and N=60.𝑁60N=60.italic_N = 60 . This gives us t=1𝑡1t=1italic_t = 1, and we get the plot in Figure 2 which helps us to choose the value of ε𝜀\varepsilonitalic_ε. We chose ε=3𝜀3\varepsilon=3italic_ε = 3, as about 78%percent7878\%78 % of errors should have block-weight at most 4444, as can be seen in Figure 2, and the work factor is still comparatively small as discussed in Section 4.4.1, and as can be seen in Figure 3. We use this value of ε𝜀\varepsilonitalic_ε for our experiments, as described in Section 5.1.

012345600100100100100200200200200300300300300400400400400500500500500ε𝜀\varepsilonitalic_εWFt+ε/WFtsubscriptWF𝑡𝜀subscriptWF𝑡{\mathrm{WF}_{t+\varepsilon}}/{\mathrm{WF}_{t}}roman_WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT / roman_WF start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPTRatio of work factors vs. ε𝜀\varepsilonitalic_ε
Figure 3: WFt+ε/WFtsubscriptWF𝑡𝜀subscriptWF𝑡{\mathrm{WF}_{t+\varepsilon}}/{\mathrm{WF}_{t}}roman_WF start_POSTSUBSCRIPT italic_t + italic_ε end_POSTSUBSCRIPT / roman_WF start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT for Prange on the [60,36]limit-from6036[60,36]-[ 60 , 36 ] -code, as we vary ε𝜀\varepsilonitalic_ε.

5 Experiments

In this section we describe how to attack two cryptosystems and what modifications of the procedures described above are necessary in order to attack them in practice. The systems we attack are from [almeidaBNS21] (note that this is not the authors current version) and [bolkema2017variations], Chapter 5.

The first challenge is that the codes constructed in both papers are not delay-free. This does not pose a major challenge though since we can construct non-catastrophic convolutional codes that contain these codes, see Section 2. Then we use ISD with a fixed amount of iterations with respect to these non-catastrophic codes.

A second problem that we encounter with both systems is the existence of low weight codewords. To account for this we find codewords of weight 1111 or 2222 with a brute-force search. Then we add these to all the solutions ISD found and keep only the results that have the weight within specified bounds. Note that ISD might find several solutions since we are outside of the unique decoding radius.

With these modifications we use a depth first search after each round of ISD as described below.

L0,M0subscript𝐿0subscript𝑀0L_{0},M_{0}italic_L start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_M start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT are outputs of first stage of ISD, i.e., L0=[𝐞~0,1,,𝐞~0,n0],M0=[𝐦~0,1,,𝐦~0,n0]formulae-sequencesubscript𝐿0subscript~𝐞01subscript~𝐞0subscript𝑛0subscript𝑀0subscript~𝐦01subscript~𝐦0subscript𝑛0L_{0}=[\tilde{\mathbf{e}}_{0,1},\ldots,\tilde{\mathbf{e}}_{0,n_{0}}],M_{0}=[% \tilde{\mathbf{m}}_{0,1},\ldots,\tilde{\mathbf{m}}_{0,n_{0}}]italic_L start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = [ over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 , 1 end_POSTSUBSCRIPT , … , over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT 0 , italic_n start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT ] , italic_M start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT = [ over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT 0 , 1 end_POSTSUBSCRIPT , … , over~ start_ARG bold_m end_ARG start_POSTSUBSCRIPT 0 , italic_n start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT ]. Furthermore tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT is the total error weight and 𝐆~iγsubscriptsuperscript~𝐆𝛾𝑖\tilde{\mathbf{G}}^{\gamma}_{i}over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT are the matrices we construct from 𝐆𝐆\mathbf{G}bold_G as above. Moreover 𝒞low,lowsubscript𝒞𝑙𝑜𝑤subscript𝑙𝑜𝑤\mathcal{C}_{low},\mathcal{M}_{low}caligraphic_C start_POSTSUBSCRIPT italic_l italic_o italic_w end_POSTSUBSCRIPT , caligraphic_M start_POSTSUBSCRIPT italic_l italic_o italic_w end_POSTSUBSCRIPT are the low weight codewords and corresponding messages, and 𝐦𝐱subscriptsuperscript𝐦𝐱\mathbf{m^{\prime}_{x}}bold_m start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT bold_x end_POSTSUBSCRIPT corresponds to the message for error 𝐱Lj𝐱subscript𝐿𝑗\mathbf{x}\in L_{j}bold_x ∈ italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT, and 𝐦𝐜subscriptsuperscript𝐦𝐜\mathbf{m^{\prime}_{c}}bold_m start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT bold_c end_POSTSUBSCRIPT for 𝐜𝒞low𝐜subscript𝒞𝑙𝑜𝑤\mathbf{c}\in\mathcal{C}_{low}bold_c ∈ caligraphic_C start_POSTSUBSCRIPT italic_l italic_o italic_w end_POSTSUBSCRIPT respectively.

Algorithm 1 Depth-first sequential ISD
1:A generator matrix 𝐆(z) of a convolutional code 𝒞, received word 𝐫(z).A generator matrix 𝐆𝑧 of a convolutional code 𝒞 received word 𝐫𝑧\text{A generator matrix }\mathbf{G}(z)\text{ of a convolutional code }% \mathcal{C},\text{ received word }\mathbf{r}(z).A generator matrix bold_G ( italic_z ) of a convolutional code caligraphic_C , received word bold_r ( italic_z ) .
2:𝐞,𝐦 such that 𝐫(z)=𝐦(z)𝐆(z)+𝐞(z).𝐞𝐦 such that 𝐫𝑧𝐦𝑧𝐆𝑧𝐞𝑧\mathbf{e,m}\text{ such that }\mathbf{r}(z)=\mathbf{m}(z)\mathbf{G}(z)+\mathbf% {e}(z).bold_e , bold_m such that bold_r ( italic_z ) = bold_m ( italic_z ) bold_G ( italic_z ) + bold_e ( italic_z ) .
3:j0,L{L0},M{M0}formulae-sequence𝑗0formulae-sequence𝐿subscript𝐿0𝑀subscript𝑀0j\leftarrow 0,L\leftarrow\{L_{0}\},M\leftarrow\{M_{0}\}italic_j ← 0 , italic_L ← { italic_L start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT } , italic_M ← { italic_M start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT }
4:𝐞(0,0,0,0,0,,0,0,0)s blocks of length N,𝐦(0,0,0,0,0,,0,0,0)s blocks of length Kformulae-sequence𝐞subscript00000000𝑠 blocks of length 𝑁𝐦subscript00000000𝑠 blocks of length 𝐾\mathbf{e}\leftarrow\underbrace{(0,0,0,0,0,\cdots,0,0,0)}_{s\text{ blocks of % length }N},\mathbf{m}\leftarrow\underbrace{(0,0,0,0,0,\cdots,0,0,0)}_{s\text{ % blocks of length }K}bold_e ← under⏟ start_ARG ( 0 , 0 , 0 , 0 , 0 , ⋯ , 0 , 0 , 0 ) end_ARG start_POSTSUBSCRIPT italic_s blocks of length italic_N end_POSTSUBSCRIPT , bold_m ← under⏟ start_ARG ( 0 , 0 , 0 , 0 , 0 , ⋯ , 0 , 0 , 0 ) end_ARG start_POSTSUBSCRIPT italic_s blocks of length italic_K end_POSTSUBSCRIPT
5:BoolFalse𝐵𝑜𝑜𝑙FalseBool\leftarrow\text{False}italic_B italic_o italic_o italic_l ← False
6:while js𝑗𝑠j\leq sitalic_j ≤ italic_s do
7:     if Bool𝐵𝑜𝑜𝑙Boolitalic_B italic_o italic_o italic_l then
8:         Break      
9:     while Ljsubscript𝐿𝑗L_{j}\neq\varnothingitalic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ≠ ∅ do
10:         if wt(𝐞)+wt(Lj,0)>tewt𝐞wtsubscript𝐿𝑗0subscript𝑡𝑒\mathrm{wt}(\mathbf{e})+\mathrm{wt}(L_{j,0})>t_{e}roman_wt ( bold_e ) + roman_wt ( italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT ) > italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT then
11:              LjLj{Lj,0},MjMj{Mj,0}formulae-sequencesubscript𝐿𝑗subscript𝐿𝑗subscript𝐿𝑗0subscript𝑀𝑗subscript𝑀𝑗subscript𝑀𝑗0L_{j}\leftarrow L_{j}-\{L_{j,0}\},M_{j}\leftarrow M_{j}-\{M_{j,0}\}italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_M start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT }
12:              continue          
13:         𝐞jLj,0,𝐦jMj,0formulae-sequencesubscript𝐞𝑗subscript𝐿𝑗0subscript𝐦𝑗subscript𝑀𝑗0\mathbf{e}_{j}\leftarrow L_{j,0},\mathbf{m}_{j}\leftarrow M_{j,0}bold_e start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT , bold_m start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT
14:         if j=s1&𝐫(z)𝐞(z)𝒞𝑗𝑠1𝐫𝑧𝐞𝑧𝒞j=s-1\And\mathbf{r}(z)-\mathbf{e}(z)\in\mathcal{C}italic_j = italic_s - 1 & bold_r ( italic_z ) - bold_e ( italic_z ) ∈ caligraphic_C then
15:              BoolTrue𝐵𝑜𝑜𝑙TrueBool\leftarrow\text{True}italic_B italic_o italic_o italic_l ← True
16:              break
17:         else
18:              LjLj{Lj,0},MjMj{Mj,0},𝐞j0,𝐦j0formulae-sequencesubscript𝐿𝑗subscript𝐿𝑗subscript𝐿𝑗0formulae-sequencesubscript𝑀𝑗subscript𝑀𝑗subscript𝑀𝑗0formulae-sequencesubscript𝐞𝑗0subscript𝐦𝑗0L_{j}\leftarrow L_{j}-\{L_{j,0}\},M_{j}\leftarrow M_{j}-\{M_{j,0}\},\mathbf{e}% _{j}\leftarrow 0,\mathbf{m}_{j}\leftarrow 0italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_M start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , bold_e start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0 , bold_m start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0          
19:         𝐫j+1𝐫j+1i=0j𝐦i𝐆~jiγsubscriptsuperscript𝐫𝑗1subscript𝐫𝑗1superscriptsubscript𝑖0𝑗subscript𝐦𝑖subscriptsuperscript~𝐆𝛾𝑗𝑖\mathbf{r}^{\prime}_{j+1}\leftarrow\mathbf{r}_{j+1}-\sum_{i=0}^{j}\mathbf{m}_{% i}\tilde{\mathbf{G}}^{\gamma}_{j-i}bold_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ← bold_r start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT - ∑ start_POSTSUBSCRIPT italic_i = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_j end_POSTSUPERSCRIPT bold_m start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j - italic_i end_POSTSUBSCRIPT
20:         Lj+1,Mj+1Prange(𝐆~0γ,𝐫j+1,t+ε)subscript𝐿𝑗1subscript𝑀𝑗1Prangesubscriptsuperscript~𝐆𝛾0subscriptsuperscript𝐫𝑗1𝑡𝜀L_{j+1},M_{j+1}\leftarrow\operatorname{Prange}(\tilde{\mathbf{G}}^{\gamma}_{0}% ,\mathbf{r}^{\prime}_{j+1},t+\varepsilon)italic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT , italic_M start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ← roman_Prange ( over~ start_ARG bold_G end_ARG start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , bold_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT , italic_t + italic_ε )
21:         if Lj+1subscript𝐿𝑗1L_{j+1}\neq\varnothingitalic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ≠ ∅ then
22:              for (𝐱,𝐜)Lj+1×𝒞low𝐱𝐜subscript𝐿𝑗1subscript𝒞𝑙𝑜𝑤(\mathbf{x,c})\in L_{j+1}\times\mathcal{C}_{low}( bold_x , bold_c ) ∈ italic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT × caligraphic_C start_POSTSUBSCRIPT italic_l italic_o italic_w end_POSTSUBSCRIPT do
23:                  if wt(𝐱+𝐜)t+εwt𝐱𝐜t𝜀\rm wt(\mathbf{x}+\mathbf{c})\leq t+\varepsilonroman_wt ( bold_x + bold_c ) ≤ roman_t + italic_ε then
24:                       Lj+1Lj+1{𝐱+𝐜}subscript𝐿𝑗1subscript𝐿𝑗1𝐱𝐜L_{j+1}\leftarrow L_{j+1}\cup\{\mathbf{x}+\mathbf{c}\}italic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ∪ { bold_x + bold_c }
25:                       Mj+1Mj+1{𝐦𝐱+𝐦𝐜}subscript𝑀𝑗1subscript𝑀𝑗1subscriptsuperscript𝐦𝐱subscriptsuperscript𝐦𝐜M_{j+1}\leftarrow M_{j+1}\cup\{\mathbf{m^{\prime}_{x}}+\mathbf{m^{\prime}_{c}}\}italic_M start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ∪ { bold_m start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT bold_x end_POSTSUBSCRIPT + bold_m start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT start_POSTSUBSCRIPT bold_c end_POSTSUBSCRIPT }                                 
26:              jj+1𝑗𝑗1j\leftarrow j+1italic_j ← italic_j + 1
27:         else
28:              LjLj{Lj,0},MjMj{Mj,0},𝐞j0,𝐦j0formulae-sequencesubscript𝐿𝑗subscript𝐿𝑗subscript𝐿𝑗0formulae-sequencesubscript𝑀𝑗subscript𝑀𝑗subscript𝑀𝑗0formulae-sequencesubscript𝐞𝑗0subscript𝐦𝑗0L_{j}\leftarrow L_{j}-\{L_{j,0}\},M_{j}\leftarrow M_{j}-\{M_{j,0}\},\mathbf{e}% _{j}\leftarrow 0,\mathbf{m}_{j}\leftarrow 0italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_M start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , bold_e start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0 , bold_m start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0               
29:     𝐞j0,𝐦j0formulae-sequencesubscript𝐞𝑗0subscript𝐦𝑗0\mathbf{e}_{j}\leftarrow 0,\mathbf{m}_{j}\leftarrow 0bold_e start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0 , bold_m start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← 0
30:     jj1𝑗𝑗1j\leftarrow j-1italic_j ← italic_j - 1
31:     if Lj+1=subscript𝐿𝑗1L_{j+1}=\varnothingitalic_L start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT = ∅ then
32:         LjLj{Lj,0},MjMj{Mj,0}formulae-sequencesubscript𝐿𝑗subscript𝐿𝑗subscript𝐿𝑗0subscript𝑀𝑗subscript𝑀𝑗subscript𝑀𝑗0L_{j}\leftarrow L_{j}-\{L_{j,0}\},M_{j}\leftarrow M_{j}-\{M_{j,0}\}italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_L start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_L start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT } , italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ← italic_M start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT - { italic_M start_POSTSUBSCRIPT italic_j , 0 end_POSTSUBSCRIPT }      

Next we describe the experimental results we get for both of the schemes we attack. We ran our experiments mainly on SageMath 9.4 [sagemath]. Some calculations for the attack in Section 5.2 were done with Magma v2.27/7 [magma]. The code can be found under https://git.math.uzh.ch/abmazu/isd-for-convolutional-codes.

5.1 Attack on “A Variation Based on Spatially Coupled MDPC Codes”

For this paper [bolkema2017variations] we took the generator matrix in Example 5.11 for which the authors claim that it gives 80 bits security against generic decoding attacks. The authors propose a (5,3)53(5,3)( 5 , 3 ) binary convolutional code. The generator matrix has a memory of 94949494. The error is of degree up to 1999199919991999 and has a total weight of 140140140140.

When we attacked the system, we took γ=12𝛾12\gamma=12italic_γ = 12, so ISD is done with a 36×60366036\times 6036 × 60 generator matrix. The choice of γ𝛾\gammaitalic_γ was motivated by the desire of having, on average, approximately one error in each decoding window. This seems to be a good compromise as for lower γ𝛾\gammaitalic_γ’s, the algorithm tends to get lost more often, and for higher γ𝛾\gammaitalic_γ’s, the algorithm is slower. At each step, Prange was run 430 times, which guarantees a total success rate of more than 98%percent9898\%98 % according to the formula in Section 4.4.1. We chose ε=3𝜀3\varepsilon=3italic_ε = 3 as discussed in Section 4.4.2. Several seeds for error generation were used and the ones for which the error was outside the range t+ε𝑡𝜀t+\varepsilonitalic_t + italic_ε were discarded. From the probability calculations we expect to discard about 22222222% of the seeds. In the experiment we discarded 7 out of 27 errors, which is about 26%. For the remaining ones we ran 20202020 experiments, the results of which can be seen in Figure 4.

2346781012131415171819202122242527222244446666888810101010SeedTime (hours)Time (hours) vs. Seed
Figure 4: Running time of the experiments for the scheme proposed in [bolkema2017variations].

All the experiments correctly recovered the error in less than 10101010 hours. This translates to a bit security of at most 47474747 bits. Note that we think that our code could be optimized quite a bit and therefore this is an overestimate. Furthermore we also ran our experiment with another generator matrix with the key generation as described in [bolkema2017variations], Section 5.5, for the same parameters to verify our results. It also finished successfully.

5.2 Attack on “Smaller Keys for Code-Based Cryptography: McEliece Cryptosystems with Convolutional Encoders” 2021

We implemented the scheme proposed in [almeidaBNS21] for the parameters for 128128128128 bit security as given in Example 17 of that paper. We used several generator matrices and errors to estimate the security of the scheme. For this scheme we know more about the errors, namely in their example for the 128128128128 bit security level the authors use an error with 50505050 blocks where the total error weight is 133133133133 and the sum of the weights of 3333 consecutive blocks is 8888. This tells us that the blocks have weights a,b,3,a,b,3,,a,b𝑎𝑏3𝑎𝑏3𝑎𝑏a,b,3,a,b,3,\ldots,a,bitalic_a , italic_b , 3 , italic_a , italic_b , 3 , … , italic_a , italic_b where a+b=5𝑎𝑏5a+b=5italic_a + italic_b = 5. Therefore we take ε=3𝜀3\varepsilon=3italic_ε = 3, which would also be a good choice based on the probability calculations. Of course in this case this ε𝜀\varepsilonitalic_ε always works.

For the experiments, we took γ=1𝛾1\gamma=1italic_γ = 1, so 𝐆0γ=𝐆0superscriptsubscript𝐆0𝛾subscript𝐆0\mathbf{G}_{0}^{\gamma}=\mathbf{G}_{0}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT = bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT. This means that the size of our block code generated by 𝐆0γsuperscriptsubscript𝐆0𝛾\mathbf{G}_{0}^{\gamma}bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_γ end_POSTSUPERSCRIPT has size N=n=62𝑁𝑛62N=n=62italic_N = italic_n = 62 and dimension K=k=30𝐾𝑘30K=k=30italic_K = italic_k = 30. At each step, the ISD runs for 700700700700 iterations, ensuring a total success rate of more than 99%percent9999\%99 %.

To give estimates for the running time, we “cheated” and checked at each step at which position of the output of the ISD the correct error is. Since the algorithm usually does not run further on a wrong branch than a single node, we expect that adding up the positions of the correct error in the output of the ISD gives us a relatively precise estimate of the total number of ISD iterations needed to recover the correct error. For the estimates which indicated that we could recover the error quickly we ran the actual experiments without cheating to verify our estimates. This was the case for seeds 1111 and 10101010. In both cases, the actual time required was below the estimate. The results can be seen in Figure 5.

1346789101113141516171819404040404545454550505050555555556060606045.645.645.645.641.0541.0541.0541.05SeedBitsEstimated, Actual bits vs. SeedEstimated bitsActual bits
Figure 5: Estimated bit security for [almeidaBNS21]. For seeds 1 and 10 we also gave the actual running time.

In total we ran 20 experiments, of which 16 successfully finished. In the other cases, the correct error was not found at some step. In these cases we got only partial recovery due to low weight codewords of weight 3333 and 4444. We did not include the seeds corresponding to those experiments in the figure above.

5.2.1 Probability of Getting Lost

We will justify that our algorithm is very unlikely to proceed further than one layer on a wrong branch. Assume the algorithm is correct up to degree j𝑗jitalic_j, and then, for a given wrong error 𝐞~j+1subscript~𝐞𝑗1\tilde{\mathbf{e}}_{j+1}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT at degree j+1𝑗1j+1italic_j + 1, finds a solution 𝐞~j+2subscript~𝐞𝑗2\tilde{\mathbf{e}}_{j+2}over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT for degree j+2𝑗2j+2italic_j + 2 as well. Let 𝐞j+1subscript𝐞𝑗1\mathbf{e}_{j+1}bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT and 𝐞j+2subscript𝐞𝑗2\mathbf{e}_{j+2}bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT be the correct solutions at the respective degrees. Define 𝐜j+1:=𝐞j+1𝐞~j+1assignsubscript𝐜𝑗1subscript𝐞𝑗1subscript~𝐞𝑗1\mathbf{c}_{j+1}:=\mathbf{e}_{j+1}-\tilde{\mathbf{e}}_{j+1}bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT := bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT - over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT and 𝐜j+2:=𝐞j+2𝐞~j+2assignsubscript𝐜𝑗2subscript𝐞𝑗2subscript~𝐞𝑗2\mathbf{c}_{j+2}:=\mathbf{e}_{j+2}-\tilde{\mathbf{e}}_{j+2}bold_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT := bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT - over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT. Then:

  • 𝐜j+1subscript𝐜𝑗1\mathbf{c}_{j+1}bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT is non-zero,

  • (𝐜j+1𝐜j+2)rowspan(𝐆0𝐆1𝟎𝐆0),matrixsubscript𝐜𝑗1subscript𝐜𝑗2rowspanmatrixsubscript𝐆0subscript𝐆10subscript𝐆0\begin{pmatrix}\mathbf{c}_{j+1}&\mathbf{c}_{j+2}\end{pmatrix}\in\text{rowspan}% \begin{pmatrix}\mathbf{G}_{0}&\mathbf{G}_{1}\\ \mathbf{0}&\mathbf{G}_{0}\end{pmatrix},( start_ARG start_ROW start_CELL bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) ∈ rowspan ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL bold_0 end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) ,

  • wt(𝐞~j+1)=wt(𝐞j+1)wtsubscript~𝐞𝑗1wtsubscript𝐞𝑗1\operatorname{wt}(\tilde{\mathbf{e}}_{j+1})=\operatorname{wt}(\mathbf{e}_{j+1})roman_wt ( over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) = roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) and wt(𝐞~j+2)=wt(𝐞j+2)wtsubscript~𝐞𝑗2wtsubscript𝐞𝑗2\operatorname{wt}(\tilde{\mathbf{e}}_{j+2})=\operatorname{wt}(\mathbf{e}_{j+2})roman_wt ( over~ start_ARG bold_e end_ARG start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ) = roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ).

Thus, let 𝐞𝔽qN𝐞superscriptsubscript𝔽𝑞𝑁\mathbf{e}\in\mathbb{F}_{q}^{N}bold_e ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT be fixed of weight tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT and 𝐜𝔽qN𝐜superscriptsubscript𝔽𝑞𝑁\mathbf{c}\in\mathbb{F}_{q}^{N}bold_c ∈ blackboard_F start_POSTSUBSCRIPT italic_q end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_N end_POSTSUPERSCRIPT of weight tcsubscript𝑡𝑐t_{c}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT. We will assume that Nte,tcmuch-greater-than𝑁subscript𝑡𝑒subscript𝑡𝑐N\gg t_{e},t_{c}italic_N ≫ italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT, which also holds in practice. We are interested in the probability of wt(𝐞+𝐜)=wt(𝐞)wt𝐞𝐜wt𝐞\operatorname{wt}(\mathbf{e}+\mathbf{c})=\operatorname{wt}(\mathbf{e})roman_wt ( bold_e + bold_c ) = roman_wt ( bold_e ). Let z𝑧zitalic_z be the number of elements of 𝐞𝐞\mathbf{e}bold_e that become zero after adding 𝐜𝐜\mathbf{c}bold_c (the number of “cancellations”). Notice that to preserve weight we then need to have z𝑧zitalic_z non-overlaps, i.e. z𝑧zitalic_z elements of the support of 𝐜𝐜\mathbf{c}bold_c are outside of the support of 𝐞𝐞\mathbf{e}bold_e. Notice that if wt(𝐞+𝐜)=wt(𝐞)wt𝐞𝐜wt𝐞\operatorname{wt}(\mathbf{e}+\mathbf{c})=\operatorname{wt}(\mathbf{e})roman_wt ( bold_e + bold_c ) = roman_wt ( bold_e ), then ztc2𝑧subscript𝑡𝑐2z\leq\lfloor\frac{t_{c}}{2}\rflooritalic_z ≤ ⌊ divide start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG ⌋. Further, it is also necessary that ztcte𝑧subscript𝑡𝑐subscript𝑡𝑒z\geq t_{c}-t_{e}italic_z ≥ italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT since if tc>tesubscript𝑡𝑐subscript𝑡𝑒t_{c}>t_{e}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT > italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT, we have at least tctesubscript𝑡𝑐subscript𝑡𝑒t_{c}-t_{e}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT entries of 𝐜𝐜\mathbf{c}bold_c outside of the support of 𝐞𝐞\mathbf{e}bold_e, so we also need to cancel at least tctesubscript𝑡𝑐subscript𝑡𝑒t_{c}-t_{e}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT positions of 𝐞𝐞\mathbf{e}bold_e. Now, for a fixed number of cancellations, we have a probability of

(tez)(Ntez)(q1)z(teztc2z)(q2)tc2z(Ntc)(q1)tcbinomialsubscript𝑡𝑒𝑧binomial𝑁subscript𝑡𝑒𝑧superscript𝑞1𝑧binomialsubscript𝑡𝑒𝑧subscript𝑡𝑐2𝑧superscript𝑞2subscript𝑡𝑐2𝑧binomial𝑁subscript𝑡𝑐superscript𝑞1subscript𝑡𝑐\frac{\binom{t_{e}}{z}\binom{N-t_{e}}{z}(q-1)^{z}\binom{t_{e}-z}{t_{c}-2z}(q-2% )^{t_{c}-2z}}{\binom{N}{t_{c}}(q-1)^{t_{c}}}divide start_ARG ( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) ( FRACOP start_ARG italic_N - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) ( italic_q - 1 ) start_POSTSUPERSCRIPT italic_z end_POSTSUPERSCRIPT ( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT - italic_z end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z end_ARG ) ( italic_q - 2 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z end_POSTSUPERSCRIPT end_ARG start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_ARG ) ( italic_q - 1 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_POSTSUPERSCRIPT end_ARG

that the weight stays the same. Indeed, we have (tez)binomialsubscript𝑡𝑒𝑧\binom{t_{e}}{z}( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) choices for entries of 𝐜𝐜\mathbf{c}bold_c that cancel entries of 𝐞𝐞\mathbf{e}bold_e. For entries of 𝐜𝐜\mathbf{c}bold_c outside of the support of 𝐞𝐞\mathbf{e}bold_e, we choose z𝑧zitalic_z from Nte𝑁subscript𝑡𝑒N-t_{e}italic_N - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT positions, and can have q1𝑞1q-1italic_q - 1 entries in each position, which gives us (Ntez)(q1)zbinomial𝑁subscript𝑡𝑒𝑧superscript𝑞1𝑧\binom{N-t_{e}}{z}(q-1)^{z}( FRACOP start_ARG italic_N - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) ( italic_q - 1 ) start_POSTSUPERSCRIPT italic_z end_POSTSUPERSCRIPT possibilities. Finally, we need to choose tc2zsubscript𝑡𝑐2𝑧t_{c}-2zitalic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z positions in the remaining support of 𝐞𝐞\mathbf{e}bold_e and have q2𝑞2q-2italic_q - 2 choices for the entries of 𝐜𝐜\mathbf{c}bold_c since the entries must be non-zero and also cannot be minus the corresponding entry of 𝐞𝐞\mathbf{e}bold_e, which is non-zero, giving us (teztc2z)(q2)tc2zbinomialsubscript𝑡𝑒𝑧subscript𝑡𝑐2𝑧superscript𝑞2subscript𝑡𝑐2𝑧\binom{t_{e}-z}{t_{c}-2z}(q-2)^{t_{c}-2z}( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT - italic_z end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z end_ARG ) ( italic_q - 2 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z end_POSTSUPERSCRIPT possibilities. Let Ete,tcsubscript𝐸subscript𝑡𝑒subscript𝑡𝑐E_{t_{e},t_{c}}italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_POSTSUBSCRIPT be the conditional event that wt(𝐞+𝐜)=wt(𝐞)wt𝐞𝐜wt𝐞\operatorname{wt}(\mathbf{e}+\mathbf{c})=\operatorname{wt}(\mathbf{e})roman_wt ( bold_e + bold_c ) = roman_wt ( bold_e ) for an 𝐞𝐞\mathbf{e}bold_e and 𝐜𝐜\mathbf{c}bold_c such that wt(𝐞)=tewt𝐞subscript𝑡𝑒\operatorname{wt}(\mathbf{e})=t_{e}roman_wt ( bold_e ) = italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT and wt(𝐜)=tcwt𝐜subscript𝑡𝑐\operatorname{wt}(\mathbf{c})=t_{c}roman_wt ( bold_c ) = italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT. Summing over all possible number of cancellations z𝑧zitalic_z, we get a probability

(Ete,tc)=z=0tc2(tez)(Ntez)(tezt2z)(q2)tc2z(Ntc)(q1)tcz.subscript𝐸subscript𝑡𝑒subscript𝑡𝑐superscriptsubscript𝑧0subscript𝑡𝑐2binomialsubscript𝑡𝑒𝑧binomial𝑁subscript𝑡𝑒𝑧binomialsubscript𝑡𝑒𝑧𝑡2𝑧superscript𝑞2subscript𝑡𝑐2𝑧binomial𝑁subscript𝑡𝑐superscript𝑞1subscript𝑡𝑐𝑧\mathbb{P}(E_{t_{e},t_{c}})=\sum_{z=0}^{\lfloor\frac{t_{c}}{2}\rfloor}\frac{% \binom{t_{e}}{z}\binom{N-t_{e}}{z}{\binom{t_{e}-z}{t-2z}}(q-2)^{t_{c}-2z}}{% \binom{N}{t_{c}}(q-1)^{t_{c}-z}}.blackboard_P ( italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) = ∑ start_POSTSUBSCRIPT italic_z = 0 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ⌊ divide start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG ⌋ end_POSTSUPERSCRIPT divide start_ARG ( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) ( FRACOP start_ARG italic_N - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT end_ARG start_ARG italic_z end_ARG ) ( FRACOP start_ARG italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT - italic_z end_ARG start_ARG italic_t - 2 italic_z end_ARG ) ( italic_q - 2 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - 2 italic_z end_POSTSUPERSCRIPT end_ARG start_ARG ( FRACOP start_ARG italic_N end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_ARG ) ( italic_q - 1 ) start_POSTSUPERSCRIPT italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - italic_z end_POSTSUPERSCRIPT end_ARG .

We sum z𝑧zitalic_z from 00, as the summands for z<tcte𝑧subscript𝑡𝑐subscript𝑡𝑒z<t_{c}-t_{e}italic_z < italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT (when tc>tesubscript𝑡𝑐subscript𝑡𝑒t_{c}>t_{e}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT > italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT) will be zero anyways.

Thus, given a vector (𝐜j+1𝐜j+2)rowspan(𝐆0𝐆1𝟎𝐆0),matrixsubscript𝐜𝑗1subscript𝐜𝑗2rowspanmatrixsubscript𝐆0subscript𝐆10subscript𝐆0\begin{pmatrix}\mathbf{c}_{j+1}&\mathbf{c}_{j+2}\end{pmatrix}\in\text{rowspan}% \begin{pmatrix}\mathbf{G}_{0}&\mathbf{G}_{1}\\ \mathbf{0}&\mathbf{G}_{0}\end{pmatrix},( start_ARG start_ROW start_CELL bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) ∈ rowspan ( start_ARG start_ROW start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL start_CELL bold_G start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL bold_0 end_CELL start_CELL bold_G start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ) , where wt(𝐜j+1)=tcj+1wtsubscript𝐜𝑗1subscript𝑡subscript𝑐𝑗1\operatorname{wt}(\mathbf{c}_{j+1})=t_{{c}_{j+1}}roman_wt ( bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) = italic_t start_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT and wt(𝐜j+2)=tcj+2wtsubscript𝐜𝑗2subscript𝑡subscript𝑐𝑗2\operatorname{wt}(\mathbf{c}_{j+2})=t_{{c}_{j+2}}roman_wt ( bold_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ) = italic_t start_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT, and an error vector (𝐞j+1𝐞j+2)matrixsubscript𝐞𝑗1subscript𝐞𝑗2\begin{pmatrix}\mathbf{e}_{j+1}&\mathbf{e}_{j+2}\end{pmatrix}( start_ARG start_ROW start_CELL bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_CELL start_CELL bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ), where wt(𝐞j+1)=tej+1wtsubscript𝐞𝑗1subscript𝑡subscript𝑒𝑗1\operatorname{wt}(\mathbf{e}_{j+1})=t_{{e}_{j+1}}roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) = italic_t start_POSTSUBSCRIPT italic_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT and wt(𝐞j+2)=tej+2wtsubscript𝐞𝑗2subscript𝑡subscript𝑒𝑗2\operatorname{wt}(\mathbf{e}_{j+2})=t_{{e}_{j+2}}roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ) = italic_t start_POSTSUBSCRIPT italic_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT, we get that the probability of wt(𝐞j+1+𝐜j+1)=wt(𝐞j+1)wtsubscript𝐞𝑗1subscript𝐜𝑗1wtsubscript𝐞𝑗1\operatorname{wt}(\mathbf{e}_{j+1}+\mathbf{c}_{j+1})=\operatorname{wt}(\mathbf% {e}_{j+1})roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT + bold_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) = roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT ) and wt(𝐞j+2+𝐜j+2)=wt(𝐞j+2)wtsubscript𝐞𝑗2subscript𝐜𝑗2wtsubscript𝐞𝑗2\operatorname{wt}(\mathbf{e}_{j+2}+\mathbf{c}_{j+2})=\operatorname{wt}(\mathbf% {e}_{j+2})roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT + bold_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ) = roman_wt ( bold_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT ) is

(Etej+1,tcj+1)(Etej+2,tcj+2).subscript𝐸subscript𝑡subscript𝑒𝑗1subscript𝑡subscript𝑐𝑗1subscript𝐸subscript𝑡subscript𝑒𝑗2subscript𝑡subscript𝑐𝑗2\mathbb{P}(E_{t_{e_{j+1}},t_{c_{j+1}}})\cdot\mathbb{P}(E_{t_{e_{j+2}},t_{c_{j+% 2}}}).blackboard_P ( italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT italic_j + 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) ⋅ blackboard_P ( italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c start_POSTSUBSCRIPT italic_j + 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) .

In Table 1, we have listed (Ete,tc)subscript𝐸subscript𝑡𝑒subscript𝑡𝑐\mathbb{P}(E_{t_{e},t_{c}})blackboard_P ( italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) for various values of tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT and tcsubscript𝑡𝑐t_{c}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT for the parameters in Example 17 of [almeidaBNS21].

te\eqmakebox[ind]tc\eqmakebox[ind]1234511.58×1023.17×1024.76×1026.35×1027.94×10220.000 512 032 770 097 286 20.001 519 443 588 391 738 60.003 022 232 454 883 357 70.005 020 399 369 572 1430.007 513 944 332 458 095304.96×1050.000 171 416 953 940 528 020.000 388 281 101 513 571 20.000 722 880 491 910 143 9subscript𝑡𝑒\eqmakeboxdelimited-[]𝑖𝑛𝑑subscript𝑡𝑐\eqmakeboxdelimited-[]𝑖𝑛𝑑12345missing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpressionmissing-subexpression11.58E-23.17E-24.76E-26.35E-27.94E-220.00051203277009728620.00151944358839173860.00302223245488335770.0050203993695721430.007513944332458095304.96E-50.000171416953940528020.00038828110151357120.0007228804919101439\begin{array}[]{c|ccccc}{\begin{array}[]{@{}r@{}}\scriptstyle\text{$t_{e}$}~{}% \smash{\eqmakebox[ind]{$\scriptstyle\rightarrow$}}\\[-3.0pt] \scriptstyle\text{$t_{c}$}~{}\smash{\eqmakebox[ind]{$\scriptstyle\downarrow$}}% \end{array}}&1&2&3&4&5\\ \hline\cr 1&$1.58\text{\times}{10}^{-2}$&$3.17\text{\times}{10}^{-2}$&$4.76% \text{\times}{10}^{-2}$&$6.35\text{\times}{10}^{-2}$&$7.94\text{\times}{10}^{-% 2}$\\ 2&$0.000\,512\,032\,770\,097\,286\,2$&$0.001\,519\,443\,588\,391\,738\,6$&$0.0% 03\,022\,232\,454\,883\,357\,7$&$0.005\,020\,399\,369\,572\,143$&$0.007\,513\,% 944\,332\,458\,095$\\ 3&0&$4.96\text{\times}{10}^{-5}$&$0.000\,171\,416\,953\,940\,528\,02$&$0.000\,% 388\,281\,101\,513\,571\,2$&$0.000\,722\,880\,491\,910\,143\,9$\end{array}start_ARRAY start_ROW start_CELL start_ARRAY start_ROW start_CELL italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT [ italic_i italic_n italic_d ] → end_CELL end_ROW start_ROW start_CELL italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT [ italic_i italic_n italic_d ] ↓ end_CELL end_ROW end_ARRAY end_CELL start_CELL 1 end_CELL start_CELL 2 end_CELL start_CELL 3 end_CELL start_CELL 4 end_CELL start_CELL 5 end_CELL end_ROW start_ROW start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL 1 end_CELL start_CELL start_ARG 1.58 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 2 end_ARG end_ARG end_CELL start_CELL start_ARG 3.17 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 2 end_ARG end_ARG end_CELL start_CELL start_ARG 4.76 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 2 end_ARG end_ARG end_CELL start_CELL start_ARG 6.35 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 2 end_ARG end_ARG end_CELL start_CELL start_ARG 7.94 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 2 end_ARG end_ARG end_CELL end_ROW start_ROW start_CELL 2 end_CELL start_CELL 0.000 512 032 770 097 286 2 end_CELL start_CELL 0.001 519 443 588 391 738 6 end_CELL start_CELL 0.003 022 232 454 883 357 7 end_CELL start_CELL 0.005 020 399 369 572 143 end_CELL start_CELL 0.007 513 944 332 458 095 end_CELL end_ROW start_ROW start_CELL 3 end_CELL start_CELL 0 end_CELL start_CELL start_ARG 4.96 end_ARG start_ARG times end_ARG start_ARG power start_ARG 10 end_ARG start_ARG - 5 end_ARG end_ARG end_CELL start_CELL 0.000 171 416 953 940 528 02 end_CELL start_CELL 0.000 388 281 101 513 571 2 end_CELL start_CELL 0.000 722 880 491 910 143 9 end_CELL end_ROW end_ARRAY

Table 1: (Ete,tc)subscript𝐸subscript𝑡𝑒subscript𝑡𝑐\mathbb{P}(E_{t_{e},t_{c}})blackboard_P ( italic_E start_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) for some values of tesubscript𝑡𝑒t_{e}italic_t start_POSTSUBSCRIPT italic_e end_POSTSUBSCRIPT and tcsubscript𝑡𝑐t_{c}italic_t start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT.

5.2.2 Technical Remarks

Each of our experiments was run on UZH I-Math servers Rambo or Olive. Rambo has a 1 x AMD EPYC™ 7742 2,25GHz CPU, while Olive has a 1 x AMD EPYC™ 7502P 2,5GHz CPU. Note that both are AMD EPYC™ 7002 Series CPUS, and specifications for them can be found in [AMD]. Each instance used one core, as we did not parallellise our algorithm. Note that theoretical FLOPs can be higher than the base clock of the CPU by a few bits, but we have not used that in our calculations as maximum claimed FLOPs per cycle is not always achieved. Some sources, such as [NASAEPYC] have claimed a maximum of 16 FLOPs per cycle per core, and that would add 4 bits to our calculations.

Also note that though we have not implemented our algorithm for multiple cores, it is well-suited for parallelisation, as for the j+1𝑗limit-from1j+1-italic_j + 1 -th round of ISD, we only need the values of e,m𝑒𝑚e,mitalic_e , italic_m up-to the jlimit-from𝑗j-italic_j -th block. That is to say, each round is only influenced by the nodes above it, not the nodes to the side. Thus, if we had ncsubscript𝑛𝑐n_{c}italic_n start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT number of cores, each core could traverse the tree with one of the initial choices for e0subscript𝑒0e_{0}italic_e start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT. If any core reaches the end of the tree, we could stop there, and if any core goes all the way back to the starting node, having not found the solution in that branch, it could aid any core still actively traversing the tree. This could hypothetically cut down the running time by a factor of at-most ncsubscript𝑛𝑐n_{c}italic_n start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT. We expect parallelisation to be more effective on the attack on [bolkema2017variations], rather than on [almeidaBNS21], as in the latter, our algorithm does not seem to get lost as discussed in Section 5.2.

6 Acknowledgements

The authors would like to thank Daniela Portillo del Valle and Joachim Rosenthal for fruitful discussions. The authors would also like to thank Diego Napp and Miguel Beltrá Vidal for answering our questions about their system. Finally, the authors would like to thank Violetta Weger and Anna-Lena Horlemann for their encouragement and Carsten Rose and the IT-team at I-Math UZH for their practical help and infinite patience while we tormented the math servers with our experiments.

This work has been supported in part by armasuisse Science and Technology (Project number.: CYD-C-2020010), by the Swiss National Science Foundation under SNSF grant number 212865, and by the German research foundation, project number 513811367.

\printbibliography