Поточен шифър в криптографията: дефиниция, принцип и рискове

Научете всичко за поточния шифър: дефиниция, принцип на работа (XOR и ключов поток), предимства, рискове и как да избегнете критични грешки при използване.

Автор: Leandro Alegsa

В криптографията поточният шифър е шифър със симетричен ключ, при който битовете на открития текст се комбинират с псевдослучаен поток от шифрови битове (ключов поток), като се използва операцията ексклузивен или (xor). При поточното шифриране цифрите на открития текст се шифроват една по една, като трансформацията на последователните цифри се променя по време на състоянието на шифриране. Алтернативно наименование е шифър на състоянията, тъй като криптирането на всяка цифра зависи от текущото състояние. На практика цифрите обикновено са единични битове или байтове.

Поточните шифри представляват различен подход към симетричното криптиране от блоковите шифри. Блоковите шифри работят с големи блокове с фиксирана дължина. Потоковите шифри обикновено се изпълняват с по-висока скорост от блоковите шифри и имат по-ниски хардуерни изисквания. Въпреки това, при неправилно използване на поточните шифри може да възникнат сериозни проблеми със сигурността; например, в частност, едно и също начално състояние никога не трябва да се използва два пъти.

Поточният шифър използва много по-малък и по-удобен криптографски ключ, например 128-битов ключ. Въз основа на този ключ той генерира псевдослучаен ключов поток, който може да се комбинира с цифрите на открития текст по начин, подобен на алгоритъма за еднократно криптиране. Въпреки това, тъй като ключовият поток е псевдослучаен, а не наистина случаен, сигурността, свързана с еднократната подложка, не може да бъде приложена и е напълно възможно един поточен шифър да бъде напълно несигурен.

Принцип на действие

Основната идея е да се генерира дълга последователност от битове (ключов поток), която да се комбинира чрез операцията XOR с битовете на открития текст. Ако ключовият поток беше истински случаен и използван само веднъж, това би било еквивалент на алгоритъма за еднократно криптиране (one-time pad) и би бил абсолютно сигурен. В реалните поточни шифри обаче ключовият поток се произвежда от детерминистичен генератор, и затова е псевдослучаен. Това налага допълнителни мерки и внимателно използване, за да се избегнат уязвимости.

Видове поточни шифри

  • Синхронни поточни шифри — генераторът зависи само от ключа и евентуално от уникален начален вектор (IV/nonce). Изходът се синхронизира по позиция в потока; при загуба на няколко бита на връзката синхронизацията се губи. Примерни проблеми: повторно използване на една и съща двойка ключ/IV води до компрометиране.
  • Самосинхронизиращи (ciphertext-feedback) поточни шифри — генераторът зависи от последните n бита от криптограмата; при загуба на данни синхронизацията може да се възстанови автоматично след няколко бита. Този тип е полезен при ненадеждни връзки.

Генератори на ключов поток

Ключовият поток може да бъде произведен по различни начини:

  • Линейни регистри със изместване (LFSR) и техни нелинейни варианти (NLFSR).
  • Комбинация от няколко LFSR с нелинейна функция (combiner/filtered generator).
  • Криптографски псевдослучайни генератори (PRNG) и потокообразуващи функции, базирани на блокови шифри (например режим CTR) или на блочни конструкции.
  • Съвременни алгоритми като ChaCha20 и Salsa20, които използват блоково-ориентирани конструкции, но се прилагат като поточни шифри.

Предимства и недостатъци

  • Предимства: висока скорост при софтуерни и хардуерни реализации, ниски изисквания за памет и изчислителна сложност, добра подходящост за поточни данни (стрийминг).
  • Недостатъци: уязвимости при неправилно използване (особено при повторение на начално състояние или IV), някои алгоритми имат статистически пристрастия (напр. исторически проблеми с RC4), и липсата на вградено автентикиране на съобщението.

Рискове и чести атаки

  • Повторна употреба на ключ/IV (двойна подложка) — при употреба на един и същ ключов поток за два различни текста XOR на криптограмите дава XOR на откритите текстове, което често води до бързо възстановяване на съдържанието.
  • Биас и статистически атаки — ако генераторът има статистически отклонения, атакуващ може да извлече информация за ключа или открития текст (примери: слабости в RC4 доведоха до компрометиране на протоколи като WEP).
  • Корелационни атаки — при комбиниране на няколко LFSR може да съществува корелация между ключовия поток и отделни регистри, позволяваща възстановяване на състоянието.
  • Атаки при компрометирано състояние — ако състоянието на генератора бъде разкрито (напр. чрез странични канали), бъдещите потоци могат да бъдат предвидени.
  • Липса на автентикация — самото XOR криптиране не проверява целостта; затова е нужно използване на MAC или по-добре на authenticated encryption (AE).

Добри практики

  • Избягвайте алгоритми с доказани слабости (напр. не използвайте RC4 в нови решения).
  • Гарантирайте уникалност на началното състояние/IV/nonce за всяко криптиране при един и същ ключ. Никога не използвайте едно и също начало два пъти.
  • Използвайте схеми за автентикация на данните (например AEAD — Authenticated Encryption with Associated Data), като ChaCha20-Poly1305 или AES-GCM.
  • Правилна генерация и съхранение на ключовете и използване на достатъчно дълги ключове (напр. 128/256 бита) и безопасни процедури за ротация и обновяване.
  • Защитете имплементациите от странични канали (timing, power, fault), особено в хардуерни устройства.

Примери и приложения

Поточните шифри са широко използвани в системи, където се изисква бързо и ефективно криптиране на трафик: телекомуникации, VoIP, поточно видео, криптиране на сесии в протоколи като TLS (в определени режими) и в устройства с ограничени ресурси. Исторически критични случаи като WEP показаха как неправилна употреба на поточен шифър може да доведе до пълна компрометация. Съвременните препоръки насочват към използване на доказани и ревюирани алгоритми и схеми с вградена автентикация (например ChaCha20-Poly1305 в много нови реализации).

Заключение

Поточните шифри предлагат ефективен начин за криптиране на потоци от данни, но тяхната сигурност зависи силно от качеството на генератора на ключов поток и от начина на използване (особено от правилното управление на началните вектори и ключовете). За да се избегнат сериозни рискове, използвайте съвременни, добре прегледани алгоритми, прилагайте автентикация и следвайте утвърдени практики при управление на ключове.

Работата на генератора на ключови потоци в A5/1 - поточен шифър, базиран на LFSR, използван за криптиране на разговори по мобилни телефони.Zoom
Работата на генератора на ключови потоци в A5/1 - поточен шифър, базиран на LFSR, използван за криптиране на разговори по мобилни телефони.

Видове поточни шифри

Поточният шифър генерира последователни елементи на ключовия поток въз основа на вътрешно състояние. Това състояние се актуализира по два начина:

  1. Ако състоянието се променя независимо от съобщенията с открит или шифрован текст, шифърът се класифицира като синхронен поточен шифър.
  2. Ако състоянието се актуализира въз основа на предишни промени на цифрите на шифровия текст, шифърът се класифицира като самосинхронизиращ се поточен шифър.

Синхронни поточни шифри

При синхронния поточно-цифров шифър поток от псевдослучайни цифри се генерира независимо от съобщенията с открит и шифрован текст, след което се комбинира с открития текст (за криптиране) или с шифрования текст (за декриптиране). В най-разпространената форма се използват двоични цифри(битове), а потокът от ключове се комбинира с открития текст, като се използва операцията 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, като и двата се тактуват редовно по следния начин:

  1. Ако изходът на първия LFSR е "1", изходът на втория LFSR става изход на генератора.
  2. Ако изходът на първия 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 е един от най-широко използваните поточни шифри.Zoom
RC4 е един от най-широко използваните поточни шифри.

Сравнение на поточни шифри

StreamCipher

CreationDate

Скорост
(цикли/байт)

(битове)

Атака

Ефективен
Дължина на ключа

Вектор за инициализация

InternalState

Най-известните

Изчислителна сложност

A5/1

1989

Глас (Wphone)

54

114

64

Активен KPA OR
Компромис между времето и паметта на
KPA

~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)
-4.6875
(W32-bit)

8-8288обикновено
40-256

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?
обикновено 40-256?

64

8320

Криптоаналитична теория (2006)

275

Заек

2003-февруари

3,7 (WP3) - 9,7 (WARM7)

128

64

512

N/A (2006 Г.)

N/A (2006 Г.)

RC4

1987

Впечатляващ

8-2048обикновено
40-256

8

2064

Шамир Първоначално байтно разделяне на ключове OR KPA

213 OR 233

Салса20

Преди 2004 г.

4,24 (WG4) -11
,84
(WP4)

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)

Променлива обикновено
80-256

Променлива обикновено
80-256

256 - 800

N/A (2006 Г.)

N/A (2006 Г.)

WAKE

1993

Бърз

8192

CPA И CCA

Уязвим

StreamCipher

CreationDate

Скорост
(цикли/байт)

(битове)

Атака

Ефективно
Дължина на ключа

Вектор за инициализация

InternalState

Най-известните

Изчислителна сложност

Свързани страници

  • eSTREAM

Въпроси и отговори

В: Какво представлява поточният шифър?


О: Поточният шифър е шифър със симетричен ключ, при който битовете на открития текст се комбинират с псевдослучаен поток от битове на шифъра (ключов поток), като се използва операцията ексклузивен или (xor).

В: По какво се различава от блоковите шифри?


О: Поточните шифри обикновено се изпълняват с по-висока скорост от блоковите шифри и имат по-ниски хардуерни изисквания. Блоковите шифри работят с големи блокове с фиксирана дължина, докато поточните шифри криптират цифрите една по една и трансформацията на последователните цифри се променя по време на състоянието на криптиране.

Въпрос: Какъв тип ключове се използват?


О: Поточните шифри използват много по-малки и по-удобни криптографски ключове, например 128-битови ключове.

В: Как се генерира потокът от ключове?


О: Потокът от ключове се генерира въз основа на използвания криптографски ключ, подобно на алгоритъма за криптиране с еднократна подложка. Тъй като обаче ключовият поток е псевдослучаен, а не наистина случаен, не може да се приложи сигурността, свързана с еднократната подложка.

Въпрос: Защо никога не трябва да използвате едно и също начално състояние два пъти?


О: Използването на едно и също начално състояние два пъти може да доведе до сериозни проблеми със сигурността, тъй като улеснява нападателите да декриптират данни, без да знаят или да имат достъп до вашия криптографски ключ.

Въпрос: Има ли някакъв риск, свързан с използването на поточни шифри?


О: Да, ако се използват неправилно или без да се вземат подходящи предпазни мерки, съществува риск, свързан с използването на поточни шифри, тъй като те могат да бъдат напълно несигурни, ако не се работи правилно с тях.


обискирам
AlegsaOnline.com - 2020 / 2025 - License CC3