# How to produce a binary output sequence using LFSRs but with increased linear complexity?

• How to produce a binary output sequence using LFSRs but with increased linear complexity?

I have tried searching but i got confused on equation details. So can anyone help me with rather simple explanation on how to increase linear complexity i.e. with some diagram or so. Thanks

• What did you search and where you confused? Did you see Wikipedia page? some of them are listed here Apr 6 '19 at 15:19

One standard way is as follows. Given $$n$$ primitive LFSRs with lengths $$L_i,i=1,\ldots,n$$ such that $$\gcd(L_i,L_j)=1,$$ and a nonlinear boolean function $$f:\mathbb{F}_2^n \rightarrow \mathbb{F}_2$$ with $$f(x_1,\ldots,x_n)$$ you have output linear complexity $$f(L_1,\ldots,L_n)$$ evaluated over the integers, where output of LFSR $$L_i$$ is input as the variable $$x_i$$ of the boolean function. This is called the combination generator.

So if, for example, $$f(x_1,x_2,x_3)=x_1x_2+x_2x_3$$ with $$L_1=31,L_2=32,L_3=33,$$ the linear comlexity becomes $$31\times 32+32\times 33=2048$$.

See the book Encyclopedia of Cryptography and Security on page 233 for a good discussion.

When a system has a Linearity property, it means that it passes some characteristics of the input to the output of system. Think of the system as following illustration:

                -----------
a ----->|  System   | ----> c
b------>|           |
-----------


For example, if we suppose of this system as a cryptosystem and this cryptosystem has a linearity property, when you input many odd data in the system, odd characteristic can transfer to the output of system.

In order to improve Linear complexity for binary output sequences using LFSR, we mostly use components Like Sbox after them, However we should always be aware of right selection of them. It is true that they force none-linearity,but the SBoxes themselves may be suspected to linearity. SBoxes by substituting data, prevents of spreading characteristics,it means that they change the data in transforming from input to output,therefore the same characteristic is not conveyed.

The other way to improve Linearity, is combining output sequence with nonlinear Keystream generators like NFSRs. In this situation we can not precisely define what happens to each bit of LFSR, but we hope that this combination causes high non-linearity to the output sequence of LFSR. One more method that can be used, combining output sequence of LFSR with 2 or more other LFSRs. In this situation, the function that combines these LFSRs, should have good properties especially in non-linearity. This combination function works as a selector between LFSR's output sequences and causes confusion.

At last, one more method which we can point out, is to use LFSR within a block cipher or combine the output sequence with one of the modes of bock ciphers. in this situation, the non-linearity is related to the complexity of block cipher and the strength of it.

• It seems to me that the question reads "....how to increase linear complexity...." rather than "....what is a linear property....". Please take your time when answering questions. Normally it isn't a race against time and your answer will be upvoted regardless of other answers as long as they do not propose the exact same solution (with the same explanation). Apr 6 '19 at 16:25
• I misunderstood.I read just last part of question. Apr 6 '19 at 20:19