MOSQUITO

From testwiki
Jump to navigation Jump to search

Template:For multi

In cryptography, MOSQUITO was a stream cipher algorithm designed by Joan Daemen and Paris Kitsos. They submitted it to the eSTREAM project, which was a part of eCRYPT. While presenting it in a document published in 2005, they explained some of their design intentions:

Self-synchronizing stream encryption can be performed by using a block cipher in CFB mode. However, for single-bit self-synchronizing stream encryption, this is very inefficient. Therefore we believe that it would be useful to design a dedicated self-synchronizing stream cipher that is efficient in hardware.[1]

It was subsequently broken by Antoine Joux and Frรฉdรฉric Muller in 2006, who had this to say in their conference paper:

All the dedicated Self-Synchronizing Stream Ciphers (SSSC) of the KNOT-MOSQUITO family are subject to differential chosen ciphertext attacks. Our results, combined with previous results on HBB, KNOT and SSS show that it is extremely difficult to design a SSSC resistant against chosen-ciphertext attacks.[2]

A tweaked version named MOUSTIQUE was proposed[3] which made it to Phase 3 of the eSTREAM evaluation process as the only self-synchronizing cipher remaining, where it was noted that "in reaching the third phase of eSTREAM all the algorithms in this book have made a significant advance in the development of stream ciphers.[4]

However, MOUSTIQUE was subsequently broken by Kรคsper et al., leaving the design of a secure and efficient self-synchronizing stream cipher as an open research problem.[5]

Specifications

The MOSQUITO cipher has eight registers of varying lengths, let's call the register CCSR -a๐’ฝ0๐’พ, the first register -a๐’ฝ1๐’พ, second -a๐’ฝ2๐’พ and so on up to the seventh register -a๐’ฝ7๐’พ. We will designate the i-th position of register j as follows: ai๐’ฝj๐’พ. Register lengths:

CCSR โ€” 128 bits;

a๐’ฝ1๐’พ โ€” a๐’ฝ5๐’พ 53 bits;
a๐’ฝ6๐’พ โ€” 12 bits;
a๐’ฝ7๐’พ โ€” 3 bits.

The essence of the cipher operation is to calculate, for each clock cycle, the bits of any of the registers (except CCSR) based on some combination of bits of the previous register. The CCSR register works as a shift register: the register elements are shifted, and a bit of the encrypted text (from the cipher output) is written to the zero position of the CCSR register. Let us denote by Gij the rule by which the bit in the i-th position in register j is calculated. Then:

G4imod531=a128i๐’ฝ0๐’พ+a18+i๐’ฝ0๐’พ+a113i๐’ฝ0๐’พ(a1+i๐’ฝ0๐’พ+1)+1, ะณะดะต 0i<53;
G4imod53j=ai๐’ฝj1๐’พ+a3+i๐’ฝj1๐’พ+a1+i๐’ฝj1๐’พ(a2+i๐’ฝj1๐’พ+1)+1, ะณะดะต 0i<53 ะธ 2j5, if the subscript of any element on the right side of the equality becomes greater than 53, then this element is replaced by 0;
Gi6=a4i๐’ฝ5๐’พ+a3+4i๐’ฝ5๐’พ+a1+4i๐’ฝ5๐’พ+a2+4i๐’ฝ5๐’พ, ะณะดะต 0i<12;
Gi7=a4i๐’ฝ6๐’พ+a3+4i๐’ฝ6๐’พ+a1+4i๐’ฝ6๐’พ(a2+4i๐’ฝ6๐’พ+1)+1, ะณะดะต 0i<3;

and finally the keystream bit z=a0๐’ฝ7๐’พ+a1๐’ฝ7๐’พ+a2๐’ฝ7๐’พ.

It is worth noting that the calculation of register bits is performed using combinational logic, and the shift, naturally, using register logic, which means that in order to prevent incorrect operation of the pipeline, when the bits from the register do not have time to be processed by combinational logic, it is necessary that the function Gij, implementing the calculations was relatively simple.. Template:Crypto-stub

References

Template:Cryptography navbox