120 likes | 298 Views
Генератори на псевдослучайни последователности и потокови шифри. 1 . Генератори с линейно съответствие/сходство Linear congruential generators са генератори на псевдослучайни последователности (ГПСП) от вида X n = ( aX n-1 + b ) mod m ,
E N D
Генератори на псевдослучайни последователности и потокови шифри 1. Генератори с линейно съответствие/сходство Linear congruential generators са генератори на псевдослучайни последователности (ГПСП) от вида Xn = (aXn-1 + b) mod m , където Xn е n-тия номер в последователността и Xn-1 – предишният. Променливите a, b, и m са константи: a е multiplier, b е increment, и m е модул. Ключът или семето е стойността X0. Квадратичните генераториXn = (aXn-12 + bXn-1 + c) mod m Кубичните генераториXn = (aXn-13 + bXn-12 + cXn-1 + d) mod m Table 1Constants for Linear Congruential Generators Overflow At: abm 220 106 1283 6075 221 211 1663 7875 222 421 1663 7875 Комбинирани линейни конгруентни генератори
Генератори на псевдослучайни последователности и потокови шифриПродължение 2. Линейни с обратна връзка изместващи регистри Последователности на изместващ регистър се употребяват в криптографията и в теория на кодирането и има голямо изобилие от теория за тях. Потоковите шифри се основават на изместващи регистри. Един изместващ регистър с обратна връзка - feedback shift register е направен от две части: един изместващ регистър и една функция на обратна връзка. Изместващият регистър е последователност от битове. • Дължината на изместващия регистър - length е определена в битове, ако той е n бита дълъг се нарича n-битов изместващ регистър. Във всеки момент един бит е необходим, всички битове в един изместващ регистър са изместени 1 бит надясно. Новият най-ляв бит е изчислен като една функция на другите битове в регистъра. Изходът на регистъра е един бит, най-често последния по значимост бит. • Периодът - period на изм. регистър е дължината на изходната последователност преди да се започне повторението. Най-простият вид на изместващ регистър е линейния изместващ регистър с о.в. - linear feedback shift register или LFSR. Фукцията на о.в. е просто XOR на определени битове в регистъра. Списъкът на тези битове се нарича tap sequence. Понякога се нарича конфигурация на Фибоначи - Fibonacci configuration.
Генератори на псевдослучайни последователности и потокови шифриПродължение На фигурата е показан един 4-битов LFSR разклонен на първия и четвъртия бит. Ако се инициализира със стойност 1111, той дава следната последователност на вътрешни състояния преди да започне повторението им: 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 ... 1 1 1 0 Изходната последователност е стринг за най-младшия бит: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0.... Един n-битов LFSR може да бъде в едно от 2n - 1 вътрешни състояния. Това означава, че той може, на теория, да генерира 2n - 1-бита дълга псевдослучайна последователност преди тя да се повтори.Резултантната изходна последователност се нарича m-последователност - m-sequence. За да бъде за един практически LFSR един максимален период на LFSR, полиномът формиран от една разклонена последователност плюс константа 1 трябва да бъде примитивен полином mod 2. Степента - degree на полинома е дължината на изместващия регистър. Един основен полином на степен n е един несъкратим полином, който се дели на x2n-1 + 1, но не на xd + 1 за някакво d , което дели 2n - 1 . Таблица 2 посочва, но не всички, примитивни полиноми mod 2 за различна степен. Например, списъкът (32, 7, 5, 3, 2, 1, 0) означава, че следният полином е примитивен mod 2: x32 + x7 + x5 + x3 + x2 + x + 1
Генератори на псевдослучайни последователности и потокови шифриПродължение Table 2 Some Primitive Plynomials Mod 2 (1, 0) (36, 11, 0) (68, 9, 0) (97, 6, 0) (2, 1, 0) (36, 6, 5, 4, 2, 1, 0) (68, 7, 5, 1, 0) (98, 11, 0) (3, 1, 0) (37, 6, 4, 1, 0) (69, 6, 5, 2, 0) (98, 7, 4, 3, 1, 0) (4, 1, 0) (37, 5, 4, 3, 2, 1, 0) (70, 5, 3, 1, 0) (99, 7, 5, 4, 0) (5, 2, 0) (38, 6, 5, 1, 0) (71, 6, 0) (100, 37, 0) (6, 1, 0) (39, 4, 0) (71, 5, 3, 1, 0) (100, 8, 7, 2, 0) . . . . . . За да продължи примера, списъкът (32, 7, 5, 3, 2, 1, 0) означава, че ако се вземе 32-битов регистър и се генерира нов бит с XOR на битове 32-ри, 7-ми, 5-ти, 3-ти, 2-ри и 1-ви заедно (фиг. 16.4), резултантният LFSR ще бъде с максимална дължина - ще прави цикъл през 232 - 1 стойности преди да повтори. Ако p(x) е примитив, тогава такъв е и xnp(1/x). Всеки вход в таблицата е действително два примитивни полинома. Например, ако (a, b, 0) е примитив, тогава (a, a - b, 0) е също примитив. Ако (a, b, c, d, 0) е примитив, тогава (a, a - d, a - c, a - b, 0) е също примитив. Математически: • Ако xa + xb + 1 е примитив, такъв е xa + xa-b + 1 • Ако xa + xb + xc + xd+ 1 е примитив, такъв е xa + xa-d + xa-c + xa-b + 1
Генератори на псевдослучайни последователности и потокови шифри Продължение Примитивните триноми са най-бързи в софтуера, защото само два бита на изм.регистър са подложени на XOR за да генерират един нов бит. Действително, всички о.в. на полиномите посочени в табл. 2 са редки - sparse, означавайки, че те само имат малко коефициенти. Редкостта е източник на слабост, понякога достатъчна за да се разбие алгоритъма. Тогава е далеч по-добре да се употребят за криптографски приложения компактни - dense примитивни полиноми, които имат много коефициенти. Генерирането на компактни примитивни полиноми modulo 2 не е лесно. Най-общо, за да се генерира примитивен полином на степен k е необходимо да знае разделянето на множители на 2k - 1. LFSR-те и софтуер Вместо да се употребяват битове в разклоняваща последователност, за да се генерира нов най-ляв бит, всеки бит в тап последователността е подложен на XOR с изхода на генератора и заместен, тогава изходът на генератора става нов най-ляв бит. Това се нарича Galois configuration. В обобщение: • ако се използва хардуер, което е добро за изместване, да се употребява конфигурация на Фибоначи - Fibonacci configuration; • ако може да се използва паралелизъм е добре да се използва Galois configuration.
Генератори на псевдослучайни последователности и потокови шифриПродължение 3. Проектиране и анализ на потокови шифри. Линейна сложност (linear complexity) Анализирането на потоковите шифри е често по-лесно от това на блоковите шифри. Например, една важна метрична величина употребявана за анализ на LFSR-базирани генератори е линейната сложност - linear complexity, или линейно пространство (span). Тя се определя от дължината n, на най-късия LFSR, която може да се имитира на изхода на генератора. Всяка последователност генерирана от една машина с краен брой състояния върху крайно поле има крайна линейна сложност. Корелационна неприкосновеност (Correlation Immunity) Криптографите се опитват да получат висока линейна сложност с комбиниране на изхода за различни изходни последователности по някакъв нелинеен маниер. Това понякога дава корелация.Thomas Siegenthaler е показал тази корелационна неприкосновенност / имунитет - correlation immunity може да бъде точно определен и че има разлика между корелационния имунитет и линейната сложност. Други атаки Има други общи атаки срещу генераторите на потокови ключове. Тестът за линейна плътност / постоянство / съвместимост - linear consistency test се опитва да идентифицира някакво подмножество на шифриращия ключ, употребявайки матрични техники. Има различни атаки: • meet-in-the-middle consistency attack • Линейният синдромен алгоритъм - linear syndrome algorithm се осланя на способността да се напише един фрагмент от изходната последователност като линейно уравнение. • Най-афинната апроксимация - best affine approximation attack • derived sequence attack.
Генератори на псевдослучайни последователности и потокови шифриПродължение 4. Потоков шифър, употребяващ LFSR-и Ключът е с началното състояние на LFSRи. По всяко време се иска бит - изместване на LFSR-и веднъж. Това се нарича понякога тактуване - clocking. Изходният бит е една функция, предпочитана е една нелинейна функция, на някои битове на LFSR-те. Тази функция се нарича обединяваща/комбинираща - combining function, и целият генератор се нарича комбиниращ генератор - combination generator. Ако един изходен бит е една функция на отделен LFSR, генераторът се нарича филтър генератор - filter generator. • часовников управляем генератор - clock-controlled generator Geffe генератор Този генератор употребява три LFSR-и, обединени по нелинеен начин. Два от LFSR-те са входове на мултиплексор и третият LFSR управлява изхода на мултиплексора. Ако a1, a2, и a3 са изходите на трите LFSR-и, изходът на Geffe генератора може да се опише със: b = (a1 ^ a2) ⊕ ((¬ a1) ^ a3) Ако LFSR-те имат дължини n1, n2, и n3 респективно, тогава линейната сложност на генератора е (n1 + 1)n2 + n1n3
Генератори на псевдослучайни последователности и потокови шифриПродължение Обобщен Geffe генератор Вместо да се избират един от двата LFSR-и, тази схема избира един от k LFSR-и, толкова дълго колкото k е степен на 2. Има k + 1 LFSR-и общо. LFSR-1 трябва да бъде тактуван log2k пъти по-бързо от останалите k LFSR-и. Jennings генератор Тази схема използва мултиплексор за да обедини два LFSR-и. Мултиплексорът се управлява от LFSR-1, избира един бит на LFSR-2 на всеки изходен бит. Има също една функция, която подрежда по таблица изходите на LFSR-2 към входа на мултиплексора
Генератори на псевдослучайни последователности и потокови шифриПродължение Beth-Piper Stop-and-Go Generator Този генератор употребява изхода на един LFSR за да управлява часовника на друг LFSR. Часовниковият вход на LFSR-2 е уравляван от изхода на LFSR-1, така че LFSR-2 може да променя състоянието си в момент t само ако изходът на LFSR-1 е бил 1 в момент t - 1. Двустранен стоп-старт генератор (Bilateral Stop-and-Go Generator) Този генератор използва два LFSR-и, и двата с дължина n . Изходът на генератора е XOR на изходите на всеки LFSR. Ако изходът на LFSR-2 в момент t – 1 е 0 и изходът в момент t – 2 е 1, тогава LFSR-2 не се тактува във момент t. Обратно, ако изходът на LFSR-1 в момент t – 1 е 0 и в t – 2 е 0 – се тактува. Каскада на Gollmann Каскадата наGollmann е разширена версия на stop-and-go generator. Той съдържа една серия от LFSR-и, с часовник управляван от предния LFSR. Ако изходът на LFSR-1 е 1 в момент t - 1, тогава LFSR-2 е тактуван. Ако изходът на LFSR-2 е 1 в момент t - 1, тогава LFSR-3 работи и т.н. изходът на последния LFSR е изход на генератора. Ако всички LFSR-и имат еднаква дължина, n, линейната сложност на системата с k LFSR-а е n(2n - 1)k-1 Намаляващ се/свиващ се генератор (Shrinking Generator) Свиващият се генератор употребява различна форма на управление на часовника от предишните генератори. Вземат се два LFSR-и: LFSR-1 и LFSR-2. Тактуват се и двата. Ако изходът на LFSR-1 е 1, тогава изходът на генератора е LFSR-2. Ако изходът на LFSR-1 е 0, се зачеркват двата бита, тактуват се двата LFSR-а и се опитва отново.
Генератори на псевдослучайни последователности и потокови шифриПродължение Самосвиваши се генератори (Self-Shrinking Generator) Самосвиващият се генератор е един вариант на свиващия се генератор. Вместо да се използват два LFSR-а, се употребяват двойки битове от единствен LFSR. Тактуването на LFSR е двукратно. Ако първият бит в двойката е 1, изходът на генератора е втория бит. Ако първият бит е 0 се зачекват и двата бита и се опитва отново. Докато самосвиващият се генератор изисква около половината пространство на паметта, необходима за реализацията на свиващия се генератор, той има също и половината на скоростта му. 5. Адитивни генератори Additive generator, понякога го наричат генератор на Фибоначи, е много ефективен защото използва случайни думи, а не случайни битове. Началното състояние на генератора е матрица от n-битови думи: X1, X2, X3,..., Xm i–тата дума на генератора е Xi = (Xi-a + Xi-b + Xi-c +...+ Xi-m) mod 2n Ако коефициентите a, b, c,..., m са избрани правилно, периодът на генератора е поне 2n - 1. едно от изискванията за коефициентите е най-младшия бит да определя максималната дължина на LFSR. Например, (55,24,0) е един примитивен полином по mod 2. Това означава, че следният адаптивен генератор е с максимална дължина: Xi = (Xi-55 + Xi-24) mod 2n
Генератори на псевдослучайни последователности и потокови шифриПродължение Fish • Начално състояние Ai = (Ai-55 + Ai-24) mod 232 Bi = (Bi-52 + Bi-19) mod 232 • Свиване като се използва Bi • Последователности от думиCj и Dj • Изходни думи K2j и K2j+1 E2j = C2j ⊕ (D2j ^ D2j+1) F2j = D2j+1 ^ (E2j ^ C2j+1) K2j = E2j ⊕ F2j K2i+1 = C2i+1 ⊕ F2j