Rank error-correcting code

From HandWiki
Short description: Error-correcting code
Rank codes
Classification
HierarchyLinear block code
Rank code
Block lengthn
Message lengthk
Distancenk + 1
Alphabet sizeQ = qN  (q prime)
Notation[n, k, d]-code
Algorithms
Berlekamp–Massey
Euclidean
with Frobenius polynomials

In coding theory, rank codes (also called Gabidulin codes) are non-binary[1] linear error-correcting codes over not Hamming but rank metric. They described a systematic way of building codes that could detect and correct multiple random rank errors. By adding redundancy with coding k-symbol word to a n-symbol word, a rank code can correct any errors of rank up to t = ⌊ (d − 1) / 2 ⌋, where d is a code distance. As an erasure code, it can correct up to d − 1 known erasures.

A rank code is an algebraic linear code over the finite field [math]\displaystyle{ GF(q^N) }[/math] similar to Reed–Solomon code.

The rank of the vector over [math]\displaystyle{ GF(q^N) }[/math] is the maximum number of linearly independent components over [math]\displaystyle{ GF(q) }[/math]. The rank distance between two vectors over [math]\displaystyle{ GF(q^N) }[/math] is the rank of the difference of these vectors.

The rank code corrects all errors with rank of the error vector not greater than t.

Rank metric

Let [math]\displaystyle{ X^n }[/math] be an n-dimensional vector space over the finite field [math]\displaystyle{ GF\left( {q^N } \right) }[/math], where [math]\displaystyle{ q }[/math] is a power of a prime and [math]\displaystyle{ N }[/math] is a positive integer. Let [math]\displaystyle{ \left(u_1, u_2, \dots, u_N\right) }[/math], with [math]\displaystyle{ u_i \in GF(q^N) }[/math], be a base of [math]\displaystyle{ GF\left( {q^N } \right) }[/math] as a vector space over the field [math]\displaystyle{ GF\left( {q} \right) }[/math].

Every element [math]\displaystyle{ x_i \in GF\left( {q^N } \right) }[/math] can be represented as [math]\displaystyle{ x_i = a_{1i}u_1 + a_{2i}u_2 + \dots + a_{Ni}u_N }[/math]. Hence, every vector [math]\displaystyle{ \vec x = \left( {x_1, x_2, \dots, x_n } \right) }[/math] over [math]\displaystyle{ GF\left( {q^N } \right) }[/math] can be written as matrix:

[math]\displaystyle{ \vec x = \left\| {\begin{array}{*{20}c} a_{1,1} & a_{1,2} & \ldots & a_{1,n} \\ a_{2,1} & a_{2,2} & \ldots & a_{2,n} \\ \ldots & \ldots & \ldots & \ldots \\ a_{N,1} & a_{N,2} & \ldots & a_{N,n} \end{array}} \right\| }[/math]

Rank of the vector [math]\displaystyle{ \vec x }[/math] over the field [math]\displaystyle{ GF\left( {q^N} \right) }[/math] is a rank of the corresponding matrix [math]\displaystyle{ A\left( {\vec x} \right) }[/math] over the field [math]\displaystyle{ GF\left( {q} \right) }[/math] denoted by [math]\displaystyle{ r\left( {\vec x; q} \right) }[/math].

The set of all vectors [math]\displaystyle{ \vec x }[/math] is a space [math]\displaystyle{ X^n = A_N^n }[/math]. The map [math]\displaystyle{ \vec x \to r\left( \vec x; q \right) }[/math]) defines a norm over [math]\displaystyle{ X^n }[/math] and a rank metric:

[math]\displaystyle{ d\left( {\vec x;\vec y} \right) = r\left( {\vec x - \vec y;q} \right) }[/math]

Rank code

A set [math]\displaystyle{ \{x_1, x_2, \dots, x_n\} }[/math] of vectors from [math]\displaystyle{ X^n }[/math] is called a code with code distance [math]\displaystyle{ d = \min d\left( x_i ,x_j \right) }[/math]. If the set also forms a k-dimensional subspace of [math]\displaystyle{ X^n }[/math], then it is called a linear (n, k)-code with distance [math]\displaystyle{ d }[/math]. Such a linear rank metric code always satisfies the Singleton bound [math]\displaystyle{ d \leq n - k + 1 }[/math] with equality.

Generating matrix

There are several known constructions of rank codes, which are maximum rank distance (or MRD) codes with d = n − k + 1. The easiest one to construct is known as the (generalized) Gabidulin code, it was discovered first by Delsarte (who called it a Singleton system) and later by Gabidulin [2] (and Kshevetskiy [3] ).

Let's define a Frobenius power [math]\displaystyle{ [i] }[/math] of the element [math]\displaystyle{ x \in GF(q^N) }[/math] as

[math]\displaystyle{ x^{[i]} = x^{q^{i \mod N}}. \, }[/math]

Then, every vector [math]\displaystyle{ \vec g = (g_1, g_2, \dots, g_n), ~ g_i \in GF(q^N), ~ n \leq N }[/math], linearly independent over [math]\displaystyle{ GF(q) }[/math], defines a generating matrix of the MRD (n, k, d = n − k + 1)-code.

[math]\displaystyle{ G = \left\| {\begin{array}{*{20}c} g_1 & g_2 & \dots & g_n \\ g_1^{[m]} & g_2^{[m]} & \dots & g_n^{[m]} \\ g_1^{[2 m]} & g_2^{[2 m]} & \dots & g_n^{[2 m]} \\ \dots & \dots & \dots & \dots \\ g_1^{[(k-1) m]} & g_2^{[(k-1) m]} & \dots & g_n^{[(k-1) m]} \end{array}} \right\|, }[/math]

where [math]\displaystyle{ \gcd(m,N) = 1 }[/math].

Applications

There are several proposals for public-key cryptosystems based on rank codes. However, most of them have been proven insecure (see e.g. Journal of Cryptology, April 2008[4]).

Rank codes are also useful for error and erasure correction in network coding.

See also

Notes

  1. Codes for which each input symbol is from a set of size greater than 2.
  2. Gabidulin, Ernst M. (1985). "Theory of codes with maximum rank distance". Problems of Information Transmission 21 (1): 1–12. http://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=ppi&paperid=967&option_lang=eng. 
  3. Kshevetskiy, Alexander; Gabidulin, Ernst M. (4–9 September 2005). "The new construction of rank codes". Proceedings. International Symposium on Information Theory, 2005. ISIT 2005. pp. 2105–2108. doi:10.1109/ISIT.2005.1523717. ISBN 978-0-7803-9151-2. 
  4. Overbeck, R. (2008). "Structural Attacks for Public Key Cryptosystems based on Gabidulin Codes". Journal of Cryptology 21 (2): 280–301. doi:10.1007/s00145-007-9003-9. 

References

External links