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.
A rank code is an algebraic linear code over the finite field
similar to Reed–Solomon code.
The rank of the vector over
is the maximum number of linearly independent components over
The rank distance between two vectors over
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. Let
be an n-dimensional vector space over the finite field
is a power of a prime and
is a positive integer.
as a vector space over the field
can be written as matrix: Rank of the vector
is a rank of the corresponding matrix
The set of all vectors
) defines a norm over
and a rank metric: A set
If the set also forms a k-dimensional subspace of
, then it is called a linear (n, k)-code with distance
Such a linear rank metric code always satisfies the Singleton bound
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
, linearly independent over
, defines a generating matrix of the MRD (n, k, d = n − k + 1)-code.
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.