Кіріспе
Симметриялық кілт шифрының түрі
Ағымдық шифр – жай мәтін цифрларын псевдорандомдық цифр ағынымен (кілт ағыны) біріктіретін симметриялық кілт шифры. Ағымдық шифрлеуде әрбір жай мәтін цифры кілт ағынының сәйкес цифрымен бірінен соң бірі шифрланады, нәтижесінде шифрланған мәтін ағынының цифрлары пайда болады. Әр цифрдың шифрлануы шифрдың ағымдағы күйіне байланысты болғандықтан, оны күй шифры деп те атайды. Іс жүзінде цифрлар көбінесе биттер болып табылады, ал біріктіру операциясы – эксклюзивті немесе (XOR). Псевдорандомдық кілт ағыны көбінесе цифрлық ығыстыру тізімдерін пайдалана отырып, кездейсоқ бастапқы мәннен тізбектеп жасалады. Бастапқы мән шифрланған мәтін ағынын шифрлеу үшін криптографиялық кілт ретінде қызмет етеді. Ағымдық шифрлеу симметриялық шифрлеуде блок шифрлеуден өзгеше тәсілді білдіреді. Блок шифрлары цифрлардың үлкен блоктарымен тұрақты, өзгермейтін түрлендіру арқылы жұмыс істейді. Бұл айырмашылық әрқашан да нақты емес: кейбір жұмыс режимдерінде блок шифрының қарапайым түрі ағымдық шифр ретінде тиімді жұмыс істейтіндей етіп қолданылады. Ағымдық шифрлар көбінесе блок шифрларынан жоғары жылдамдықпен орындалады және аппараттық жағынан қарапайым болады. Дегенмен, ағымдық шифрлар қауіпсіздік бұзушылықтарына ұшырауы мүмкін (ағымдық шифрға жасалатын шабуылдарды қараңыз); мысалы, егер бірдей бастапқы күй (бастапқы мән) екі рет қолданылса.
Бір рет қолданылатын падеждің еркін әсері
Ағындық шифрларды бұрынғысынша бұзуға болмайтын шифрдың, бір реттік жастықтың (OTP) әрекетін жуықтау ретінде қарастыруға болады. Бір реттік жастық толыққандай кездейсоқ сандар ағынын пайдаланады. Кілттер ағыны ашық мәтін сандарымен біріктіріліп, шифрланған мәтінді құрайды. Бұл жүйені 1949 жылы Клод Э. Шеннон қауіпсіз деп дәлелдеді. Дегенмен, кілттер ағыны кем дегенде ашық мәтінмен бірдей ұзындықта толыққандай кездейсоқ түрде жасалуы керек және бір реттен астам қолданылмауы тиіс. Бұл жүйені көптеген практикалық қолдануларда іске асыруды қиындатады, нәтижесінде бір реттік жастық ең маңызды қолданулардан басқа кеңінен қолданылмады. Кілттерді жасау, тарату және басқару осы қолданулар үшін маңызды. Ағындық шифр әлдеқайда кішірек және ыңғайлы кілтті, мысалы 128 битті пайдаланады. Осы кілтке негізделген, ол псевдокездейсоқ кілттер ағынын жасайды, оны бір реттік жастыққа ұқсас түрде ашық мәтін сандарымен біріктіруге болады. Алайда, бұл өз құнымен келеді. Кілттер ағыны енді псевдокездейсоқ, сондықтан ол толыққандай кездейсоқ емес. Бір реттік жастықтың қауіпсіздігіне қатысты дәлел енді күшін жойды. Ағындық шифрдың мүлдем қауіпсіз болмауы әбден мүмкін.
Түрлері
Ағымдық шифр кілт ағынының тізбектелген элементтерін ішкі күй негізінде жасайды. Бұл күй негізінен екі тәсілмен жаңартылады: егер күй ашық мәтін немесе шифрланған мәтін хабарларына тәуелсіз өзгерсе, онда шифр синхронды ағымдық шифр деп жіктеледі. Ал өздігінен синхронды болатын ағымдық шифрлар өз күйін ағын мәтіннің немесе шифрланған мәтіннің бұрынғы цифрларына сәйкес жаңартады. Кілтке ашық мәтінді қосатын жүйе автокілт шифр немесе автоклав шифр деп аталады.
Синхронды ағыс шифрлары
Синхронды ағыс шифрында псевдорандомдық цифрлар ағыны қарапайым мәтін мен шифрланған мәтін хабарларына тәуелсіз түрде жасалады, содан кейін қарапайым мәтінмен (шифрлеу үшін) немесе шифрланған мәтінмен (дешифрлеу үшін) біріктіріледі. Ең көп таралған түрінде екілік цифрлар (биттер) қолданылады, ал кілт ағыны эксклюзивті немесе операциясы (XOR) арқылы қарапайым мәтінмен біріктіріледі. Бұл екілік қосымша ағыс шифры деп аталады. Синхронды ағыс шифрында дешифрлеудің сәтті болуы үшін жіберуші мен қабылдаушы синхронды болуы керек. Егер хабарды жіберу кезінде цифрлар қосылса немесе жойылса, синхронизация жоғалады. Синхронизацияны қалпына келтіру үшін дұрыс дешифрлеуді алу үшін әртүрлі ығысулар жүйелі түрде тексерілуі мүмкін. Тағы бір тәсіл – шифрланған мәтінді шығыстың белгілі бір аралықтарында маркерлермен белгілеу. Дегенмен, егер цифрлар қосылған немесе жойылған емес, берілу кезінде бұзылса, қарапайым мәтіндегі тек бір цифрға әсер етеді және қате хабардың басқа бөліктеріне таралмайды. Бұл қасиет берілу қателігі жоғары болғанда пайдалы; алайда, ол қатені қосымша механизмдерсіз анықтау мүмкіндігін азайтады. Сонымен қатар, осы қасиетке байланысты синхронды ағыс шифрлары белсенді шабуылдарға өте сезімтал: егер шабуылшы шифрланған мәтіндегі цифрды өзгерте алса, ол тиісті қарапайым мәтін битінде болжамды өзгерістер жасауға мүмкін болады; мысалы, шифрланған мәтіндегі битті аудару қарапайым мәтіндегі сол биттің аударылуына әкеледі.
Өзін-өзі синхрондаушы ағыс шифрлары
Басқа тәсіл кілттер ағынын есептеу үшін алдыңғы N шифрмәтін цифрларының бірнешеуін пайдаланады. Мұндай схемалар өзін-өзі синхрондаушы ағын шифрлары, асинхронды ағын шифрлары немесе шифрмәтін автокіші (CTAK) деп аталады. Өзін-өзі синхрондау идеясы 1946 жылы патенттелген және қабылдаушының N шифрмәтін цифрларын алғаннан кейін кілт ағыны генераторымен автоматты түрде синхрондалуының артықшылығы бар, егер цифрлар жоғалса немесе хабарлама ағынына қосылса, оны қалпына келтіру оңайырақ болады. Жеке цифрлы қателердің әсері шектеулі, ол тек N-ге дейінгі ашық мәтін цифрларына ғана әсер етеді. Өзін-өзі синхрондаушы ағын шифрының мысалы – шифрлеу кері байланыс (CFB) режиміндегі блок шифрі.
Сызықтық кері байланыспен ауысу регистрлеріне негізделген
Бинарлы ағыс шифрлары көбінесе сызықтық кері байланыс тізбектік тіркегіштерді (LFSR) пайдалана отырып құрастырылады, себебі оларды аппараттық құралдарда оңай іске асыруға болады және математикалық тұрғыдан қарапайым талдауға мүмкіндік береді. Дегенмен, жалғыз LFSR-ді қолдану қауіпсіздіктің жеткілікті деңгейін қамтамасыз ете алмайды. LFSR-дің қауіпсіздігін арттыру мақсатында әртүрлі схемалар ұсынылған.
Сызықтық емес біріктіру функциялары
LFSR-лер өзіндік сызықтық қасиетке ие болғандықтан, сызықтықты жоюдың бір тәсілі – бірнеше параллель LFSR-лердің нәтижелерін сызықтық емес Буль функциясына беру арқылы комбинациялық генератор құру болып табылады. Мұндай біріктіру функциясының түрлі қасиеттері, мысалы, корреляциялық шабуылдардан сақтану мақсатында, нәтижедегі схеманың қауіпсіздігін қамтамасыз ету үшін өте маңызды.
Сағатпен басқарылатын генераторлар
Көбінесе LFSR-лер жүйелі түрде итерацияланады. Сызықтық емес қасиеттерді енгізудің бір жолы – екінші LFSR шығысымен басқарылатын LFSR-ді жүйесіз итерациялау. Мұндай генераторларға тоқтату-қозғалыс генераторы, алмастырып итерациялау генераторы және қысқарту генераторы жатады. Алмастырып итерациялау генераторы үш LFSR-ден тұрады, оларды ыңғайлылық үшін LFSR0, LFSR1 және LFSR2 деп атаймыз. Бір тізілімнің шығысы қалған екеуінің қайсысы қолданылатынын анықтайды; мысалы, егер LFSR2 0 шығарса, LFSR0 итерацияланады, ал егер 1 шығарса, LFSR1 итерацияланады. Шығыс LFSR0 және LFSR1 итерациялаған соңғы биттердің эксклюзивті «НЕ» (OR) операциясы болып табылады. Үш LFSR-дің бастапқы күйі кілттік мән болып табылады. Тоқтату-қозғалыс генераторы (Beth және Piper, 1984) екі LFSR-ден тұрады. Бір LFSR екіншісінің шығысы 1 болса ғана итерацияланады, әйтпесе ол өзінің алдыңғы шығысын қайталайды. Бұл шығыс (кейбір нұсқаларда) тұрақты жылдамдықпен итерацияланатын үшінші LFSR шығысымен біріктіріледі. Қысқарту генераторы басқаша әрекет етеді. Екі LFSR қолданылады, екеуі де жүйелі түрде итерацияланады. Егер бірінші LFSR шығысы 1 болса, екінші LFSR шығысы генератордың шығысы болады. Бірақ егер бірінші LFSR 0 шығарса, екіншісінің шығысы жойылады және генератордан ешқандай бит шығарылмайды. Бұл механизм екінші генераторға қарсы уақыт шабуылдарына осал, өйткені шығыс жылдамдығы екінші генератордың күйіне байланысты өзгереді. Бұл мәселе шығысты буферлеу арқылы шешілуі мүмкін.
Сүзгі генераторы
LFSR қауіпсіздігін арттырудың тағы бір жолы – бір LFSR-дің толық күйін сызықтық емес сүзгі функциясынан өткізу.
Басқа үлгілер
Сызықтық басқару құрылғысының орнына сызықтық емес жаңарту функциясын пайдалануға болады. Мысалы, Климов және Шамир n биттік сөздерде бір циклмен үшбұрышты функцияларды (Т-функцияларды) ұсынды.
Қауіпсіздік
Ағымдық шифр қауіпсіз болуы үшін оның кілт ағынының үлкен периоды болуы керек, сондай-ақ кілт ағынынан шифр кілтін немесе ішкі күйін қалпына келтіру мүмкін болмауы керек. Криптографтар сонымен қатар кілт ағынының шабуылшыларға кездейсоқ шудан ағынды ажыратуға мүмкіндік беретін тіпті ең ұсақ бұрмалаулардан және байланысты кілттерге немесе криптографиялық нонстарға сәйкес келетін кілт ағындары арасындағы анықталатын қатынастардан бос болуын талап етеді. Бұл барлық кілттер үшін орындалуы керек (әлсіз кілттер болмауы тиіс), тіпті шабуылшы белгілі бір ашық мәтінді немесе шифрланған мәтінді білсе немесе таңдаса да. Криптографиядағы басқа шабуылдар сияқты, ағымдық шифрға жасалатын шабуылдар сертификациялық сипатқа ие болуы мүмкін, яғни шифрді бұзудың тікелей жолдары емес, бірақ шифрде басқа әлсіздіктер болуы мүмкін екенін көрсетеді. Қауіпсіз синхронды ағымдық шифрды қауіпсіз пайдалану үшін бір кілт ағынын екі рет пайдаланбау керек. Әдетте, шифрдың әр шақырылысына әртүрлі нонс немесе кілт берілуі керек. Қолданба жасаушылар ағымдық шифрлардың көбінесе шынайылықты емес, құпиялылықты қамтамасыз ететінін ескеруі керек: шифрланған хабарламалар жолда жүргенде өзгертілуі мүмкін. Ағымдық шифрлар үшін қысқа периодтар нақты мәселе болып табылады. Мысалы, DES сияқты 64 биттік блок шифрларын шығыс кері байланыс (OFB) режимінде кілт ағынын жасау үшін қолдануға болады. Бірақ толық кері байланыс қолданылмаған жағдайда, нәтижедегі ағынның периоды орташа есеп бойынша шамамен 232 блокқа жетеді; көптеген қолданбалар үшін бұл период тым төмен. Мысалы, шифрлау секундына 8 мегабайт жылдамдықпен жүргізілсе, 232 блоктан тұратын ағын шамамен жарты сағаттан кейін қайталана бастайды. RC4 ағымдық шифрын қолданатын кейбір қолданбалар RC4 кілттерін орнату процедурасының әлсіздігіне байланысты шабуылға ұшырайды; жаңа қолданбалар RC4-тен бас тартуы керек немесе барлық кілттердің бірегей және мүмкіндігінше байланыссыз екеніне көз жеткізуі керек (мысалы, жақсы инициализацияланған CSPRNG немесе криптографиялық хэш функциясы арқылы жасалған) және кілт ағынының алғашқы байттары жойылсын. Ағымдық шифрлардың элементтері көбінесе блок шифрларына қарағанда түсіну оңай, сондықтан кездейсоқ немесе қасақана жасалған әлсіздіктерді жасыру ықтималдығы төмен.
Салыстыру
StreamcipherCreationdate Speed(циклдар бір байтта)(биттер)AttackEffectivekey ұзындығы Initialization vector InternalstateКөп танымал есептеу күрделілігіA5/1198954 немесе 64 (2G) 22 (2G) 64Активті KPA немесе KPA уақыты–жадының компромисі~ 2 секунд немесе 239.91A5/219895411464?Активті4.6 миллисекунд Achterbahn 128/8020061 (жабдық) 80/12880/128297/351Брутфорс шабуылы кадр ұзындығы L ≤ 244 үшін. Корреляциялық шабуыл L ≥ 248 үшін. 280 немесе 2128 L ≤ 244 үшін. CryptMT2005 19968 дейін өзгермелі 19968 (2008) (2008)Crypto 1 1994 жылға дейінгі 48 16 48 Активті KPA (2008) 40 мс немесе 248 (2008)E0 (шифр) 1999 жылға дейінгі өзгермелі (әдетте 128) 4 132 KPA (2005) 238 (2005)FISH1993 өзгермелі Белгілі ашық мәтіндік шабуыл211Grain Pre 20048064160 Кілт шығаруы243HC 256 Pre 20044 (WP4)25625665536ISAAC19962.375 (W64 бит) –4.6875 (W32 бит) 8–8288(әдетте 40–256)8288(2006) Бірінші раундтағы әлсіз ішкі күйінің туындысы4.67×101240 (2001)MICKEY Pre 2004 80 өзгермелі (0–80) 200 Дифференциалдық қателік шабуылы (2013) 232.5MUGI1998–20021281281216 (2002)~ 282PANAMA19982256128?1216?Хеш соқтығыстары (2001)282Phelix Pre 2004 8 (Wx86) дейін 256 + 128 биттік nonce128?Дифференциалдық (2006)237Pike1994 өзгермелі (2004) (2004)Py Pre 20042.68–2048? (әдетте 40–256?) 648320Криптанализдік теория (2006)275Rabbit2003 Feb3.7(WP3) – 9.7(WARM7)12864512 (2006) (2006)RC419877 WP58–2048(әдетте 40–256) RC4 IV қабылдамайды. Егер IV қаласа, оны кілтке бір жағынан қосу керек.2064Шамир бастапқы байт кілтінің туындысы немесе KPA213 немесе 233Salsa20 Pre 20044.24 (WG4) –11.84 (WP4)256 64 биттік nonce + 64 биттік ағындық позиция512Ықтималды бейтарап бит әдісі2251 8 раунд үшін (2007)Scream20024–5 (Wsoft)128 + 128 биттік nonce32?64 биттік дөңгелек функцияSEAL199732?SNOW Pre 2003128 немесе 25632SOBER 1282003 128 дейін Хабар жасау2−6SOSEMANUK Pre 2004128128Trivium Pre 20044 (Wx86) –8 (WLG)8080288Брутфорс шабуылы (2006)2135Turing2000–20035.5 (Wx86)160VEST200542 (WASIC) –64 (WFPGA) өзгермелі (әдетте 80–256) өзгермелі (әдетте 80–256)256–800 (2006) (2006)WAKE19938192CPA & CCA әлсізStreamcipherCreationdate Speed(циклдар бір байтта)(биттер)AttackEffectivekey ұзындығы Initialization vector InternalstateКөп танымал есептеу күрделілігі
Қызықты деректер
Америка Құрама Штаттарының Ұлттық қауіпсіздік агенттігінің құжаттарында кейде "комбинаторлық типтегі алгоритмдер" термині қолданылады, ол псевдокездейі сан генераторын (PRNG) жай мәтін ағынымен біріктіру үшін қандай да бір функцияны пайдаланатын алгоритмдерді білдіреді.