2021-12-15 19:00:01 +00:00
|
|
|
= Linear Feedback Shift Register =
|
|
|
|
|
|
|
|
A LFSR is set of rules to alter a set of bits. They are useful to psudeo random
|
|
|
|
number generators, and as key generators for stream ciphers.
|
|
|
|
|
|
|
|
All LFSRs are cyclical in nature, and after a set amount of time will repeat
|
2021-12-15 19:15:01 +00:00
|
|
|
back into themselves. The initial state of the bits in the LFSR is called the
|
2021-12-15 19:00:01 +00:00
|
|
|
seed.
|
|
|
|
|
|
|
|
The maximum period for a _n_ bit shift register is
|
|
|
|
|
|
|
|
2^n - 1
|
|
|
|
|
2021-12-15 19:45:01 +00:00
|
|
|
An LFSR can be generalized as a recurrence relationship where
|
|
|
|
- The preceding terms are not raised to a power
|
|
|
|
- There are no added constants
|
|
|
|
|
2021-12-15 19:00:01 +00:00
|
|
|
A *tap* is where a bit is read and fed back into itself.
|
2021-12-15 19:15:01 +00:00
|
|
|
|
2021-12-15 19:30:01 +00:00
|
|
|
== Reverse Engineering ==
|
|
|
|
|
|
|
|
An LFSR generates values based on a linear expression modulous 2, therefore we
|
|
|
|
can reverse engineer the state of the LFSR based on a sequence we are given.
|
|
|
|
This can be done using the Berlekamp-Massey algorithm.
|