У класичној криптографији отворени текст је стварно био текст написан словима азбуке, поступак шифровања и дешифровања био је мануелан, на папиру (у ретким случајевима полу-аутоматизован у виду справе за шифровање/дешифровање) и кључеви су били симетрични. Размена кључева између пошиљаоца и примаоца била је мануелна – усмена, писмена или полу-аутоматизована на неки унапред договорен начин. Једини систем испред свог времена у класичној криптографији био је One-time pad.
Наглим развојем телекомуникационих и рачунарских система, класични криптографски системи били су осуђени на пропаст, без обзира на то колико су били сигурни или несигурни. Криптографу је било довољно да претпостави да криптоаналитичар, односно нападач, поседује електронски рачунар и да може великом брзином да изврши неки од адекватних напада. Због тога се у модерним шифарским системима уводи фаза кодирања отвореног текста – из језика људи у језик рачунара, односно у битове. Начин кодирања отвореног текста није тајна, као што ни алгоритми шифровања и дешифровања нису тајна. Ми ћемо користити често коришћени амерички стандардни код за размену информација (ASCII – American Standard Code for Information Interchange).
Иако је у модерној криптографији уведено дигитално шифровање и дешифровање информација и даље се наставило са коришћењем супстуције/премештања и транспозиције/замене. Међутим, применом рачунарских система криптографи су увидели да могу реализовати много сложеније алгоритме, неупоредиво већом брзином у односу на класичне. Данас су неки модерни стандардизовани криптографски алгоритми реализовани чак и “хардверски” у виду процесорских инструкција, па због тога можемо да шифрујемо, дешифрујемо и размењујемо огромне количине информација скоро у реалном времену.
У оквиру модерне криптографије разматраћемо две врсте криптографских система – симетричне и асиметричне, а у оквиру симетричних, два типа шифара – секвенцијалне и блоковске.
Секвенцијалне шифре
Код секвенцијалних шифара (stream cipher), на основу кључа K иницијализује се генератор псеудослучајних бројева (PRNG – Pseudo-Random Number Generator) који генерише псеудослучајни низ. Псеудослучајни низ је сличан правом случајном низу, али се разликује по томе што генератор псеудослучајних бројева у неком тренутку почиње да генерише вредности из почетка. Процес шифровања подразумева примену операцију XOR над битовима кодираног отвореног текста и битовима добијеног псеудослучајног низа (секвенце). Дешифровање шифрата врши се обрнутим редоследом.
Значи, сваки псеудослучајни низ S добија се од стране генератора псеудослучајних бројева на основу кључа K. Добијени псеудослучајни низ можемо посматрати као радни кључ.
S = PRNG(K)
За генерисани псеудослучајни низ дужине n битова S = {s0, s1, s2,… , sn-1} и кодирани отворени текст дужине n битова P = {p0, p1, p2, …, pn-1} израчунава се шифрат дужине n битова C = {c0 = s0 ⊕ p0, c1 = s1 ⊕ p1, c2 = s2 ⊕ p2,… , cn-1 = sn-1 ⊕ pn-1}.
Можете закључити да је функционисање генератора псеудослучајних бројева јако важно, па је временом осмишљено више његових имплементација.
Једно од решења су линеарни померачки регистри са повратном спрегом (LFSR – Linear-Feedback Shift Register). LFSR представља померачки регистар чији је садржај одређен линеарном функцијом његовог претходног стања. Иницијално стање LFSR-а зове се семе (seed) и оно не сме бити нула јер се у том случају неће никада променити. Позиције битова које утичу на претходно стање зову се тапови (taps). LFSR на излазу даје један бит – последњи бит у регистру – који се зове излазни бит.
А5/1
А5/1 је секвенцијални шифарски систем који се користи у GSM протоколу за заштиту 2G саобраћаја и SMS порука између мобилног телефона и базне станице. Творци алгоритма и они који су га имплементирали у хардверу ослањали су се на тајност алгоритма, супротно основним принципима криптографије, да алгоритам није тајна већ само кључ. Неизбежно је било да нацрт алгоритма доспе у јавност (1994.), реверзним инжењерингом из мобилног телефона буде детаљно описан (1999.) и касније потпуно разбијен тзв. Андерсоновим нападом (A5/1 cracking project).
А5/1 користи три LFSR од 19, 22 и 23 бита и 64-битни кључ. Плавом бојом означени су тап битови. Наранџастом бојом су означени такт битови. Регистар се користи ако се његов такт бит слаже са такт битом у макар још једном регистру. На излазу се добија по један бит радног кључа у сваком такту.
Наследник, A5/2 објављен је 1999. године и разбијен истог месеца. Оба система забрањена су за употребу у мобилној телефонији од 2007. године. Тек је KASUMI (UMTS, GSM (A5/3), GPRS (GEA3)) шифарски систем донео побољшану заштиту – такође је разбијен, али напади на њега “не функционишу” у мобилној мрежи? Први Bluetooth стандардни користили су E0 протокол сa четири LFSR регистра и 128-битни кључ – разбијен 2004/2005. године
RC4
А5/1 дизајниран је за имплементацију у хардверу, док је RC4 (Rivest Cipher 4) дизајниран као софтверски алгоритам. Криптограф Рон Ривест из америчке агенције RSA креирао је овај алгоритам 1987. године. У јавност је доспео 1994. године – објаљен анонимно на Cypherpunks мејлинг листи и sci.crypt њузгрупи. Пошто је RC4 заштићен као пословна тајна законима о интелектуалној својини, прозван је ARCFOUR или ARC4 (скраћено од alleged RC4). А5/1 у једном такту генерише по један бит радног кључа, док RC4 у једном такту генерише један бајт радног кључа.
Кључ у RC4 алгоритму може бити дужине од 1 до 256 бајтова и користи се за иницијализацију пермутација. Пермутације могу бити све пермутације свих могућих вредности од 0 до 255 бајтова. Сваки пут када се генерише један бајт радног кључа, мења се пермутација.
Званично је разбијен 2015. године, а коришћен је за безбедност бежичних рачунарских мрежа у WEP и WPA протоколима, за безбедност транспорта података у BitTorrent протоколу, у старијим верзијама апликација Skype, Opera… IETF је у документу RFC 7465 забранила је употребу RC4 у TLS протоколу, док су компаније Microsoft и Mozilla објавиле сличне препоруке, чиме је RC4 добрим делом повучен са веба.
До данас је стандардизовано много секвенцијалних шифри: RC4, A5/1, A5/2, ChaCha, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, Salsa20, SEAL, SOBER, SOBER-128, WAKE… Међу свим наведеним ChaCha се истакла као најкоришћенија секвенцијална шифра у софтверском инжењерингу.