Data encoding method
A method of encoding a piece of information circulating in a network comprising at least one information transmitting node and one recipient node, using a public key encryption system, characterized in that it comprises at least the following steps: generating a public key by using a public key generation matrix NG consisting of u columns and u rows, an element of a column or of a row being a block formed by the code generation matrix G, and by use of a public key given by the matrix PUK=RI (matrix multiplication by block) NG (matrix multiplication) RP. The private key and the public key obtained are used to encode and decode the information transmitted in the network.
1. A method of encoding information by use of a public key encryption system, the information circulating in a network comprising at least one information transmitting node and one recipient node, wherein:
RI comprises a random invertible matrix used to form a first private key;
NG comprises a public key generation matrix having a plurality of elements G arranged as u columns and u rows, wherein each element G comprises a code generation matrix; and
RP comprises a matrix obtained by random permutation used to form a second private key; and the method comprises the steps of:
generating a public key by performing the steps of:
eliminating one or more predetermined columns of the public key generation matrix NG in order to reduce the size of the matrix NG;
calculating a block matrix multiplication of RI with NG, to produce an intermediate product;
calculating a matrix multiplication of the intermediate product with RP, to produce the public key;
encoding information transmitted in the network by use of the public key and at least one of the first and second private keys; and
transmitting the encoded information over the network.
2. The method as claimed in claim 1 , wherein the matrix RP comprises an invertible matrix, constructed by performing the steps of:
drawing randomly a permutation matrix having a predetermined dimension MA;
adding a matrix having dimension MA, the matrix comprising a plurality of column vectors, each column vector comprising a plurality of elements, such that number of non-zero elements in each column vector is less than or equal to a security factor Pv.
3. The method as claimed in claim 1 , wherein:
a number of columns eliminated in the matrix NG is the same in all blocks forming the matrix NG; and
a number of columns to be eliminated is determined from the decoding algorithm used to receive the information.
4. The method as claimed in claim 1 , further comprising the steps of:
evaluating a capacity of a transmission channel of the network by use of information circulating in the transmission channel; and
if a quality of the transmission channel meets a predetermined criterion, adding a random error of fixed weight to the information.
5. The method as claimed in claim 4 , wherein a portion of the information to be encrypted is incorporated into the random error added before the encoding step.
6. The method as claimed in claim 1 , wherein the code generation matrix G comprises a Reed-Muller code.
7. The method as claimed in claim 1 , wherein, to decode the encoded information, the method further comprises the steps of:
decoding the encoded message initially by the second private key by use of an inverse matrix of RP;
repeating the decoding step u times for each of the u messages m;
decoding messages m[i] for index i varying from 1 to u; and
applying the first private key RI, by using its inverse matrix (RI) −1 to obtain a decoded final message.
8. The method as claimed in claim 1 , wherein, to decode the encoded information, the method further comprises steps of:
decoding the encoded message initially by the second private key by use of an inverse matrix of RP;
repeating the decoding step u times for each of u messages m;
decoding messages m[i] for index i varying from 1 to u;
for each of the eliminated columns, for i within the range [0 . . . u2 m −1] where m is the parameter of the Reed-Muller code, and 2 m is the length of the Reed-Muller code, execute the steps of:
if i corresponds to an eliminated column, setting m[i] = 0 ;
if i does not correspond to an eliminated column, then setting m[i]=(−1) Tab[t] , wherein Tab[t] corresponds to a predetermined vector; and
incrementing t by a value of one; and
applying the first private key RI, by using its inverse matrix (RI) −1 to obtain the decoded final message.