Skip to content

Блоковске шифре

Блоковске шифре (block cipher) се користе у софтверском инжењерству јер су прилично сигурне и ефикасне. Блоковске шифре подразумевају поделу отворениг текста P на блокове фиксне величине n-битова, па након тога примену алгоритма шифровања Е, помоћу кључа K величине k-битова, ради добијања шифрата C фиксне дужине n-битова. Шифрат се добија из отвореног текста понављањем одређене функције одређене број пута. Функција у свакој рунди зависи од излаза претходне рунде и кључа. Дешифровање шифрата врши се обрнутим редоследом.

Формализујмо горе наведени поступак:

C[n] = E ( K[k] , P[n] )

D = E-1

Прва значајна блоковска шифра била је Фејстел шифра названа по немачком криптографу Хорсту Фејстелу (Horst Feistel) запосленом у компанији IBM. Фејстел шифра подразумева поделу отвореног текста на леву и десну страну:

P = { LP , DP }

За сваку рунду i генерише се нова лева и десна страна на основу правила:

Li = Di-1
Di = Li-1⊕ F ( Ki , Di-1 )

где је F функција рунде, а Ki подкључ за рунду i. Ki добија се одређеним комбинацијама битова K.

Фејстелова шифра није била имплементирана као посебна шифра, већ је послужила као основни дизајн за даљи развој блоковских шифара – нарочито америчког криптографског стандарда DES.

DES

Седамдесетих година у Сједињеним Америчким Државама у току је била компјутерска револуција. Процес чувања и преноса података из папирног облика трансформисан је у електронски облик чак и у бирократским круговима , па је по наређењу америчке владе Национални биро за стандарде расписао тендер за набавку криптографског алгоритма који би постао стандард како америчке владе, тако и индустрије. У одабиру победника учествовала је тајно и америчка Национална безбедносна агенција (NSA). Победник тендера био је криптографски алгоритам Луцифер компаније IBM. Луцифер је уз неколико модификација постао Стандард за енкрипцију података DES (Data Encryption Standard). Дужина кључа у Луциферу од 128-бита смањена је на 64-бита, а пошто се 8-бита због функционисања самог алгоритму занемарује, стварна величина кључа била је 56-бита. Због ове модификације, нападачу је разбијање система потпуном претрагом кључева олакшано јер је простор кључева смањен са 2127 на 255. Друга модификација у DES алгоритму у односу на Луцифер алгоритам односила се на функционисање замена.

Шта је заправо DES? DES је Фејстел шифра са следећим одликама:

  • Дужина блока отвореног текста је 64-бита.
  • Дужина кључа је 56-бита (+ 8-бита се занемарује).
  • Шифрат се генерише кроз 16 рунди.
  • Дужина подкључа у свакој рунди је 48-бита.

Како функционише DES? Шифровање отвореног текста подразумева:

  • Трансформацију сваког блока кроз 16 рунди замена и пермутација
  • Пермутације уносе дифузију, а замене конфузију
  • У свакој од 16 рунди користи се различит 48-битни подкључ генерисан од 56-битног кључа
  • Сваки корак приликом дешифровања се врши са подкључем у обрнутом редоследу

Погледајте следећи видео за детаљнији поступак:

TDES

Троструки DES је “унапређена” стандардна DES шифра:

C = E ( D ( E ( P , K1 ) , K2 ) , K3 )

Ако су кључеви исти K1 = K2 = K3, онда би TDES постао обичан DES.

AES

Како је DES кључ практично дужине 56 бита, деведесетих година постало је очигледно да је шифра подложна нападу са потпуном претрагом кључева. Опет је по налогу америчке владе Национални биро за стандарде расписао тендер за набавку новог криптографског алгоритма AES (Advanced Encryption Standard). На конкурсу је победила шифра Rijndael – симетрична блоковска шифра, која за разлику од DES шифре није Фејстел шифра. AES је имао следеће карактеристике:

  • Дужина блока отвореног текста и дужина кључа могу бити 128, 192 и 256 битова, где дужина отвореног текста не зависи од дужине кључа.
  • У зависности од дужине кључа процеси шифровања и дешифровања трају од 10 до 16 рунди.
  • У свакој рунди користе се 4 функције:
    • Byte Sub / нелинеарна трансформација бајтова
    • Shift Row / линеарно померање редова
    • Mix Columns / нелинеарно мешање колона
    • Add Round Key / XOR са генерисаним кључем

TEA

TEA (Tiny Encryption Algorithm) користи блокове дужине 64 бита и кључ дужине 128 бита. У одређеним корацима у алгоритму користи сабирање и одузимање и померање битова у лево и десно, уместо операције XOR. Број рунди варира али мора бити релативно велик.