Поточният шифър
В криптографията поточният шифър е шифър със симетричен ключ, при който битовете на открития текст се комбинират с псевдослучаен поток от шифрови битове (ключов поток), като се използва операцията ексклузивен или (xor). При поточното шифриране цифрите на открития текст се шифроват една по една, като трансформацията на последователните цифри се променя по време на състоянието на шифриране. Алтернативно наименование е шифър на състоянията, тъй като криптирането на всяка цифра зависи от текущото състояние. На практика цифрите обикновено са единични битове или байтове.
Поточните шифри представляват различен подход към симетричното криптиране от блоковите шифри. Блоковите шифри работят с големи блокове с фиксирана дължина. Потоковите шифри обикновено се изпълняват с по-висока скорост от блоковите шифри и имат по-ниски хардуерни изисквания. Въпреки това, при неправилно използване на поточните шифри може да възникнат сериозни проблеми със сигурността; например, в частност, едно и също начално състояние никога не трябва да се използва два пъти.
Поточният шифър използва много по-малък и по-удобен криптографски ключ, например 128-битов ключ. Въз основа на този ключ той генерира псевдослучаен ключов поток, който може да се комбинира с цифрите на открития текст по начин, подобен на алгоритъма за еднократно криптиране. Въпреки това, тъй като ключовият поток е псевдослучаен, а не наистина случаен, сигурността, свързана с еднократната подложка, не може да бъде приложена и е напълно възможно един поточен шифър да бъде напълно несигурен.
Работата на генератора на ключови потоци в A5/1 - поточен шифър, базиран на LFSR, използван за криптиране на разговори по мобилни телефони.
Видове поточни шифри
Поточният шифър генерира последователни елементи на ключовия поток въз основа на вътрешно състояние. Това състояние се актуализира по два начина:
- Ако състоянието се променя независимо от съобщенията с открит или шифрован текст, шифърът се класифицира като синхронен поточен шифър.
- Ако състоянието се актуализира въз основа на предишни промени на цифрите на шифровия текст, шифърът се класифицира като самосинхронизиращ се поточен шифър.
Синхронни поточни шифри
При синхронния поточно-цифров шифър поток от псевдослучайни цифри се генерира независимо от съобщенията с открит и шифрован текст, след което се комбинира с открития текст (за криптиране) или с шифрования текст (за декриптиране). В най-разпространената форма се използват двоични цифри(битове), а потокът от ключове се комбинира с открития текст, като се използва операцията exclusive or (XOR). Това се нарича двоичен адитивен поточен шифър.
При синхронния поточен шифър изпращачът и получателят трябва да са в синхрон, за да бъде декриптирането успешно. Ако по време на предаването се добавят или премахват цифри от съобщението, синхронизацията се губи. За да се възстанови синхронизацията, могат систематично да се изпробват различни отмествания, за да се получи правилно декриптиране. Друг подход е да се маркира шифрованият текст с маркери в редовни точки на изхода.
Ако обаче дадена цифра е повредена при предаването, а не е добавена или изгубена, се засяга само една цифра в открития текст и грешката не се разпространява в други части на съобщението. Това свойство е полезно, когато честотата на грешките при предаване е висока; то обаче намалява вероятността грешката да бъде открита без допълнителни механизми. Освен това поради това свойство синхронните поточни шифри са много податливи на активниатаки - ако нападателят може да промени цифра в шифровия текст, той може да е в състояние да направи предвидими промени в съответния бит на обикновения текст; например обръщането на бит в шифровия текст води до обръщане(Toggled) на същия бит в обикновения текст.
Самосинхронизиращи се поточни шифри
Самосинхронизиращите се поточни шифри са друга техника, която използва част от предишните N цифри на шифровия текст за изчисляване на ключовия поток. Такива схеми са известни още като асинхронни поточни шифри или автоключ на шифротекста (CTAK). Идеята за самосинхронизация е патентована през 1946 г. и има предимството, че приемникът автоматично се синхронизира с генератора на ключовия поток след получаването на N цифри от шифровия текст, което улеснява възстановяването, ако цифрите са изпуснати или добавени към потока от съобщения. Единичните грешки са с ограничен ефект, като засягат само до N цифри от открития текст. Извършването на активни атаки срещу самосинхронизиращи се поточни шифри е малко по-трудно, отколкото срещу синхронни аналози.
Пример за самосинхронизиращ се поточен шифър е блоков шифър в режим на обратна връзка с шифъра (CFB).
Поточни шифри, базирани на регистър за преместване с линейна обратна връзка
Двоичните поточни шифри често се конструират с помощта на регистри с линейна обратна връзка (LFSR), тъй като могат лесно да се реализират хардуерно и бързо да се анализират математически. Използването само на LFSR обаче е недостатъчно за осигуряване на добра сигурност. Разработени са различни схеми за повишаване на сигурността на LFSR.
Нелинейни функции за комбиниране
Тъй като LFSR са линейни по своята същност, една от техниките за премахване на линейността е да се подадат изходите на група паралелни LFSR към нелинейна булева функция, за да се формира генератор на комбинации. Различни свойства на такава комбинираща функция са важни за гарантиране на сигурността на получената схема, например за да се избегнат корелационни атаки.
Генератори с тактово управление
Обикновено LFSRs се стъпват редовно. Един от начините за въвеждане на нелинейност е LFSR да се тактува неравномерно, като се контролира от изхода на втори LFSR. Такива генератори са генераторът "стоп и ход", генераторът с променлива стъпка и генераторът за свиване.
Генераторът "stop-and-go" (Beth and Piper, 1984) се състои от два LFSR. Единият LFSR се тактува, ако изходът на втория е "1", в противен случай той повтаря предишния си изход. След това този изход (в някои версии) се комбинира с изхода на трети LFSR, който се тактува с постоянна скорост.
Генераторът за свиване използва различна техника. Използват се два LFSR, като и двата се тактуват редовно по следния начин:
- Ако изходът на първия LFSR е "1", изходът на втория LFSR става изход на генератора.
- Ако изходът на първия LFSR е "0", изходът на втория се изхвърля и генераторът не извежда никакъв бит.
Тази техника страда от атаки по отношение на времето на втория генератор, тъй като скоростта на изхода се променя по начин, който зависи от състоянието на втория генератор. Това може да се подобри чрез буфериране на изхода.
Генератор на филтри
Друг подход за подобряване на сигурността на LFSR е да се предаде цялото състояние на един LFSR в нелинейна филтрираща функция.
Други дизайни
Вместо линейно управляващо устройство може да се използва нелинейна функция за актуализация. Например Климов и Шамир предлагат триъгълни функции (Т-функции) с един цикъл върху n битови думи.
Сигурност
За да бъде сигурен, периодът на ключовия поток (броят на цифрите, които се извеждат, преди потокът да се повтори) трябва да бъде достатъчно голям. Ако поредицата се повтаря, тогава припокриващите се шифротекстове могат да бъдат подравнени един спрямо друг "в дълбочина" и съществуват техники, които позволяват извличането на обикновен текст от шифротекстове, генерирани по тези методи.
Употреба
Потоковите шифри често се използват в приложения, в които откритият текст е с неизвестна дължина, като например при сигурни безжични връзки. Ако блоков шифър се използва в такъв тип приложение, дизайнерът ще трябва да избере или ефективността на предаване, или сложността на изпълнение, тъй като блоковите шифри не могат да работят директно с блокове, по-къси от техния размер. Например, ако 128-битов блоков шифър получи отделни 32-битови серии от открит текст, три четвърти от предаваните данни се нуждаят от подложка. За да се избегне подплънка, блоковите шифри трябва да се използват в режим на кражба на шифротекст или прекратяване на остатъчен блок, докато поточните шифри елиминират този проблем, като работят с най-малката предавана единица (обикновено байтове).
Друго предимство на поточното шифриране във военната криптография е, че поточното шифриране може да се генерира от устройство за шифриране, което подлежи на строги мерки за сигурност, след което да се подаде към други устройства, например радиоприемник, които ще изпълняват операцията xor като част от своята функция. Другото устройство може да бъде предназначено за използване в среда с по-ниска степен на сигурност.
RC4 е най-широко използваният в софтуера поточен шифър; други включват: A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 и WAKE.
RC4 е един от най-широко използваните поточни шифри.
Сравнение на поточни шифри
StreamCipher | CreationDate | Скорост | (битове) | Атака | |||
Ефективен | Вектор за инициализация | InternalState | Най-известните | Изчислителна сложност | |||
A5/1 | 1989 | Глас (Wphone) | 54 | 114 | 64 | Активен KPA OR | ~2 секунди OR239.91 |
A5/2 | 1989 | Глас (Wphone) | 54 | 114 | 64? | Активен | 4,6 милисекунди |
РИБИ | 1993 | Доста бързо (Wsoft) | Огромен | Атака с познат текст (Known-plaintext attack) | 211 | ||
Зърно | Преди 2004 г. | Бърз | 80 | 64 | 160 | Деривация на ключове | 243 |
HC-256 | Преди 2004 г. | 4 (WP4) | 256 | 256 | 65536 | ||
ISAAC | 1996 | 2.375 (W64-bit) | 8-8288обикновено | N/A | 8288 | (2006 г.) Първи кръг-Слаба вътрешна държава-Деривация | 4.67×101240 (2001) |
MUGI | 1998-2002 | 128 | 128 | 1216 | N/A (2002 Г.) | ~282 | |
PANAMA | 1998 | 2 | 256 | 128? | 1216? | Сблъсъци на хеш-памети (2001) | 282 |
Феликс | Преди 2004 г. | до 8 (Wx86) | 256 + 128-битов Nonce | 128? | Диференциал (2006 г.) | 237 | |
Pike | 1994 | 0,9 x FISH (Wsoft) | Огромен | N/A (2004 Г.) | N/A (2004 Г.) | ||
Py | Преди 2004 г. | 2.6 | 8-2048? | 64 | 8320 | Криптоаналитична теория (2006) | 275 |
Заек | 2003-февруари | 3,7 (WP3) - 9,7 (WARM7) | 128 | 64 | 512 | N/A (2006 Г.) | N/A (2006 Г.) |
1987 | Впечатляващ | 8-2048обикновено | 8 | 2064 | Шамир Първоначално байтно разделяне на ключове OR KPA | 213 OR 233 | |
Салса20 | Преди 2004 г. | 4,24 (WG4) -11 | 128 + 64-битов Nonce | 512 | 512 + 384 (ключ+IV+индекс) | Диференциал (2005 г.) | N/A (2005 Г.) |
Scream | 2002 | 4 - 5 (Wsoft) | 128 + 128-битов Nonce | 32? | 64-битова функция за закръгляне | ||
SEAL | 1997 | Много бързо (W32-битова версия) | 32? | ||||
SNOW | Преди 2003 г. | Много добър (W32-bit) | 128 ИЛИ 256 | 32 | |||
SOBER-128 | 2003 | до 128 | Съобщение Forge | 2−6 | |||
SOSEMANUK | Преди 2004 г. | Много добър (W32-bit) | 128 | 128 | |||
Trivium | Преди 2004 г. | 4 (Wx86) - 8 (WLG) | 80 | 80 | 288 | Атака с груба сила (2006 г.) | 2135 |
Turing | 2000-2003 | 5.5 (Wx86) | 160 | ||||
VEST | 2005 | 42 (WASIC) -64 (WFPGA) | Променлива обикновено | Променлива обикновено | 256 - 800 | N/A (2006 Г.) | N/A (2006 Г.) |
WAKE | 1993 | Бърз | 8192 | CPA И CCA | Уязвим | ||
StreamCipher | CreationDate | Скорост | (битове) | Атака | |||
Ефективно | Вектор за инициализация | InternalState | Най-известните | Изчислителна сложност |
Свързани страници
- eSTREAM
Въпроси и отговори
В: Какво представлява поточният шифър?
О: Поточният шифър е шифър със симетричен ключ, при който битовете на открития текст се комбинират с псевдослучаен поток от битове на шифъра (ключов поток), като се използва операцията ексклузивен или (xor).
В: По какво се различава от блоковите шифри?
О: Поточните шифри обикновено се изпълняват с по-висока скорост от блоковите шифри и имат по-ниски хардуерни изисквания. Блоковите шифри работят с големи блокове с фиксирана дължина, докато поточните шифри криптират цифрите една по една и трансформацията на последователните цифри се променя по време на състоянието на криптиране.
Въпрос: Какъв тип ключове се използват?
О: Поточните шифри използват много по-малки и по-удобни криптографски ключове, например 128-битови ключове.
В: Как се генерира потокът от ключове?
О: Потокът от ключове се генерира въз основа на използвания криптографски ключ, подобно на алгоритъма за криптиране с еднократна подложка. Тъй като обаче ключовият поток е псевдослучаен, а не наистина случаен, не може да се приложи сигурността, свързана с еднократната подложка.
Въпрос: Защо никога не трябва да използвате едно и също начално състояние два пъти?
О: Използването на едно и също начално състояние два пъти може да доведе до сериозни проблеми със сигурността, тъй като улеснява нападателите да декриптират данни, без да знаят или да имат достъп до вашия криптографски ключ.
Въпрос: Има ли някакъв риск, свързан с използването на поточни шифри?
О: Да, ако се използват неправилно или без да се вземат подходящи предпазни мерки, съществува риск, свързан с използването на поточни шифри, тъй като те могат да бъдат напълно несигурни, ако не се работи правилно с тях.