Predavanja 10

Simetrična kriptografija 

Postoje dvije osnovne vrste kriptografije: simetrična i asimetrična.

Osnovna razlika je u tome da simetrični algoritmi koriste isti ključ za enkripciju i dekripciju neke poruke (ili se ključ za dekripciju može lako proizvesti iz originalnog ključa za enkripciju), dok asimetrični algoritmi koriste različite ključeve za enkripciju i dekripciju iste.

SIMETRIČNA KRIPTOGRAFIJA

Koristi jedan ključ za enkripciju i dekripciju podataka.

Ključ mora biti sigurno podijeljen između pošiljaoca i primaoca.

Mora se osigurati razmjena ključa preko nesigurnog komunikacijskog kanala

Brza je i efikasna, ali je problematična sa aspektom sigurnosti jer jednom kada se ključ otkrije, svi podaci postaju ranjivi.

Za proces kriptiranja u simetričnoj kriptografiji potrebno je znati algoritam kriptiranja i tajni ključ

Sigurnost simetričnih algoritama ovisi o sigurnosti samog algoritma i dužini ključa

Ako ključ padne u krive ruke, sve poruke koje su šifrirane tim ključem mogu biti otkrivene.

Također, ako se ključ koristi za više poruka, jedna otkrivena poruka može otkriti sve ostale.

Uglavnom se temelji na logičkoj operaciji XOR

(isključivo ILI). To je kao kada uspoređuješ dva broja i gledaš samo njihove razlike.

Recimo da imamo dva broja: 101 i 110.

Ako napravimo XOR operaciju između njih, gledamo svaki bit i rezultat će biti:

  • 1 XOR 1 = 0
  • 0 XOR 1 = 1
  • 1 XOR 0 = 1

Stoga, rezultat je 011.

U kriptografiji, ova operacija se koristi za skrivanje poruke tako da je šifriramo XOR-irajući je s ključem. Kada je primatelj dobije, on ponovno primjenjuje XOR s istim ključem kako bi dobio izvornu poruku. To je osnovni princip iza simetrične kriptografije – koristiš jednostavnu matematičku operaciju XOR kako bi šifrirao i dešifrirao poruke.

MODEL SIMETRIČNE KRIPTOGRAFIJA

M je poruka (message), K je ključ

šifriranje (encription): EK (M) C  (C = šifrat, cyphertext)

dešifriranje (decription): DK (C) M

Napadač (Osoba N) bez znanja ključa K ne može iz šifrata C saznati sadržaj poruke M

  1. Osoba A: Želi poslati zaštićenu poruku osobi B.
  2. M: Ovo je poruka koju Osoba A želi poslati.
  3. E: Ovo predstavlja proces šifriranja (enkripcije) poruke. Poruka M se šifrira koristeći ključ.
  4. Generator ključa: Alat ili metoda koja stvara ključ K koji se koristi za šifriranje i dešifriranje poruke. Ključ K je tajna koju dijele Osoba A i Osoba B.
  5. C: Šifrirana poruka koja se sada može sigurno prenijeti jer čak i ako netko drugi presretne poruku, bez ključa K neće moći razumjeti njezin sadržaj.
  6. Osoba N: Ako netko presretne šifriranu poruku C, neće moći razumjeti njen sadržaj bez ključa K.
  7. D: Proces dešifriranja (dekripcije) poruke. Kada Osoba B primi C, koristi ključ K za pretvaranje C natrag u čitljivu poruku M.
  8. Osoba B: Primatelj koji nakon dekripcije čita originalnu poruku M.

U simetričnoj kriptografiji, isti ključ se koristi i za šifriranje i dešifriranje poruke. Najveći izazov ove metode je siguran prijenos ključa K od Osobe A do Osobe B.

KOD SIMETRIČNE KRIPTOGRAFIJE RAZLIKUJEMO

  • šifriranje tokova podataka
  • šifriranje blokova podataka
  1. Šifriranje tokova podataka: Ovo je kao da poruka teče kao rijeka, a šifriranje je poput miješanja tekućine dok teče. Svaki dio poruke se šifrira odvojeno, bit po bit ili znak po znak. To se često radi pomoću “stream” (toka) šifara koji generiraju niz pseudoslučajnih znakova ili bitova kako bi svaki dio poruke bio maskiran.
  2. Šifriranje blokova podataka: Ovdje poruka nije kontinuirani tok, već je podijeljena u manje dijelove ili blokove. Svaki blok se zatim šifrira zasebno, obično u fiksnim veličinama. Na primjer, ako je poruka “razdijeljena” u blokove od 64 bita, svaki od tih blokova će biti šifriran zasebno, jedan po jedan.

Dakle, razlika je u tome kako se poruka tretira prije šifriranja – ili kao neprekidni tok ili kao skup odvojenih blokova. Oba pristupa imaju svoje prednosti i mane, ali oba se temelje na ideji korištenja istog ključa za šifriranje i dešifriranje poruka.

ŠIFRIRANJE TOKOVA PODATAKA

Stream cypher –  stvaraju proizvoljno duge elemente ključa koji je kombiniran s običnim tekstom bit po bit ili znak po znak, poput jednokratne bilježnice. U šifri protoka izlazni tok se kreira na temelju unutarnjeg stanja koje je skriveno i mijenja se kako šifra djeluje. To unutarnje stanje u početku je postavljeno pomoću elemenata tajnog ključa. 

Stream šifriranje je kao kada pišeš tajnu poruku koristeći posebnu vrstu olovke koja stvara proizvoljno dugi niz točaka. Taj niz točaka koristiš da bi zamaskirao svoju poruku tako da se svaki znak u poruci mijenja, jedan po jedan, kao da pišeš s tom posebnom olovkom. To znači da će tvoja poruka biti teška za pročitati jer su znakovi zamijenjeni na način koji nije lako uočiti.

Značajke:

pseudo-slučajni pad

koristi se kraći i prikladniji ključ K (npr. 128 bita)

iz ključa K generira se pseudoslučajni niz bitova

s tim nizom se šifrira bit po bit u modularnoj aritmetici

primatelj s istim nizom dešifrira bit po bit

  1. Pseudo-slučajni dodatak: To znači da se koristi neki kratki i praktični ključ (kao što je niz od 128 bitova). Taj ključ se koristi za stvaranje niza brojeva koji izgledaju kao da su slučajno odabrani, ali zapravo slijede neki matematički uzorak.
  2. Generiranje pseudoslučajnog niza bitova: Ključ se koristi za stvaranje niza ovih slučajnih brojeva. Ovi brojevi se onda koriste za zamjenu svakog bita poruke, jedan po jedan.
  3. Šifriranje bit po bit u modularnoj aritmetici: To znači da se svaki bit poruke mijenja koristeći matematičke operacije. To čini proces šifriranja vrlo matematičkim i sigurnim.
  4. Primatelj dešifrira bit po bit s istim nizom: Da bi primatelj razumio poruku, koristi isti niz brojeva koje je koristio pošiljatelj za šifriranje. Koristi iste matematičke operacije kako bi svaki bit vratio u originalni oblik.

Problem:

zbog pseudoslučajnosti ovo više nije neprobojno!

Problem s ovim pristupom je što, iako izgleda nasumično, zapravo ima matematički uzorak koji se može otkriti. To znači da postoji rizik da netko može probiti šifru i otkriti originalnu poruku.

Vrste:

  • sinkroni
  • samosinkronizirajući (asinkroni, cyphertext autokey)

Sinkrono znači da pošiljatelj i primatelj moraju biti usklađeni u korištenju istog ključa. 

Samosinkronizirajući stream šifriranje koristi vlastiti tekst kao dio ključa, što ga čini fleksibilnijim u određenim situacijama.

  • sigurnost: 

period ponavljanja mora biti velik

ključ se ne smije otkriti na temelju niza bitova

isti niz bitova se ne smije koristiti dvaput

ne osiguravaju integritet, nego samo privatnost

  • uporaba:

u aplikacijama kod kojih otvoreni tekst bude nepoznate promjenjive veličine

npr. bežična komunikacija

bankomati, SSL

niz bitova moguće je generirati na računalu koje je pod strožom kontrolom

algoritmi: RC4, A5/1, A5/2, Helix, WAKE

ŠIFRIRANJE BLOKOVA PODATAKA

  • block cypher
  • Blok šifra je shema šifriranja koja prekida tekstualne poruke koje se prenose u nizove fiksne duljine, koji se zovu blokovima, te šifrira redom blokove. 

operira nad blokovima stalne dužine (npr. 64 ili 128 bita)

koristeći ključ preslikava blok bitova iz otvorenog koda u blok bita šifrata jednake veličine

npr. 128 bita otvorenog teksta u 128 bita šifrata 

dešifriranje funkcionira slično

PRIMJER

Pretpostavimo da imamo poruku “HELLO” koju želimo šifrirati koristeći Caesarovu šifru. Kod Caesarove šifre, svako slovo zamjenjujemo drugim slovom u abecedi pomicanjem za određeni broj mjesta. U našem primjeru, pomicat ćemo svako slovo za jedno mjesto unaprijed.

  1. Podijela poruke u blokove: Prvo ćemo podijeliti poruku “HELLO” u blokove. U ovom slučaju, jedan blok je cijela poruka.
  2. Šifriranje blokova: Zatim ćemo primijeniti šifriranje na svaki blok. U našem slučaju, cijela poruka je jedan blok. Tako da ćemo svako slovo u poruci “HELLO” pomaknuti za jedno mjesto unaprijed u abecedi.
    • H -> I
    • E -> F
    • L -> M
    • L -> M
    • O -> P

Dakle, šifrirana poruka postaje “IFMMP”.

To je osnovni princip blok šifriranja. Svaki blok teksta (u ovom slučaju cijela poruka) se šifrira na isti način. U praksi, blokovi su obično dulji i koriste se složenije šifre, ali ovaj primjer daje osnovnu ideju kako blok šifra funkcionira.

  • algoritmi: 

Data Encryption Standard  (DES, 1997.)

Advanced Encryption Standard (AES, 2001.)

RC2, RC5

Blowfish, . . .

PRIMJER DES (Data Encryption Standard)

Razvoj u IBM-u: DES je razvijen u 1970-ima u IBM-ovom istraživačkom centru pod vodstvom američkog Nacionalnog instituta za standarde i tehnologiju (NIST). Glavni dizajneri DES-a bili su Horst Feistel i njegova ekipa.

Standardizacija: DES je postao prvi federalni standard za šifriranje podataka u SAD-u 1977. godine. Njegova standardizacija omogućila je široku upotrebu u vladi, vojsci i privatnom sektoru.

Kritike i napredak: Iako je DES bio široko prihvaćen i korišten, postojale su kritike vezane uz duljinu ključa od samo 56 bitova. Smatralo se da bi brz napredak računalne snage mogao omogućiti napadačima da dešifriraju DES šifrirane poruke. Kao odgovor na ove kritike, razvijeni su napredniji algoritmi poput Triple DES (3DES) i Advanced Encryption Standard (AES).

Opadanje popularnosti: Kako su računalni resursi postajali moćniji, DES je postao sve ranjiviji na napade brute-force dešifriranja. Kao rezultat toga, DES je postao manje popularan i zamijenjen je naprednijim algoritmima poput 3DES-a i AES-a.

Izvan upotrebe: Unatoč svojoj povijesti kao prvog široko prihvaćenog standarda šifriranja, DES je postao zastario i većinom se prestao koristiti u osjetljivim aplikacijama. Ipak, i dalje se koristi u nekim okruženjima gdje veća sigurnost nije kritična.

DES (Data Encryption Standard) je simetrični blokovni kriptografski algoritam koji se koristi za šifriranje podataka. Radi tako da ulazni podaci, poznati kao otvoreni tekst, prolaze kroz niz matematičkih operacija kako bi se pretvorili u šifrirani tekst. Evo osnovnog opisa DES algoritma:

  1. Početni permutacijski korak: Otvarni tekst se prvo permutira koristeći fiksni raspored bitova.
  2. Runda zamjene (Substitution): Nakon permutacije, otvoreni tekst se dijeli na blokove od 64 bita. Svaki blok se zatim prolazi kroz 16 rundi zamjene. U svakoj rundi, svaki blok se dijeli na polovice, te se jedna polovica prolazi kroz funkciju zamjene (substitution), dok se druga polovica kombinira s rezultatom funkcije i prebacuje na sljedeću rundu.
  3. Runda permutacije (Permutation): Nakon svih rundi zamjene, blok se prolazi kroz permutacijsku matricu kako bi se dobio konačan šifrirani tekst.

Ključni dio DES algoritma je njegov ključ. DES koristi 56-bitni ključ, što znači da algoritam koristi ključ od 56 bitova za šifriranje i dešifriranje podataka. Ključ se koristi za generiranje podključeva koji se koriste u svakoj rundi zamjene.

Evo pojednostavljenog opisa procesa šifriranja u DES algoritmu:

  1. Početna Permutacija: Ulazni podaci (plaintext) prvo prolaze kroz početnu permutaciju koja preuređuje biteve prema fiksnom uzorku.
  2. Podjela na Blokove: Permutirani tekst se zatim dijeli na lijevu i desnu polovicu (L0 i R0).
  3. 16 Krugova Šifriranja: Za svaki od 16 krugova, izvodi se sljedeće:
    • Proširenje: Desna polovica (Ri-1) se proširi s 32 na 48 bitova.
    • Kombinacija sa Subključem: Proširena desna polovica se kombinira sa subključem za taj krug pomoću XOR operacije.
    • S-box Supstitucija: Rezultat se dijeli na 8 grupa od 6 bitova, a svaka grupa se šalje kroz svoj S-box koji daje izlaz od 4 bita. Ukupno, dobiva se 32-bitni rezultat.
    • Permutacija: 32-bitni rezultat se permutira.
    • Kombinacija s Lijevom Polovicom: Rezultat se kombinira s lijevom polovicom prethodnog kruga koristeći XOR operaciju da se dobije desna polovica za sljedeći krug (Ri).
    • Zamjena Strana: Lijeva polovica za sljedeći krug (Li) postaje desna polovica iz prethodnog kruga (Ri-1).
  4. Kombinacija Polovica: Nakon 16 krugova, lijeva i desna polovica se zamijene i kombiniraju.
  5. Završna Permutacija: Kombinirani blok prolazi kroz završnu permutaciju koja je suprotna od početne permutacije.

Rezultat je šifrirani tekst (ciphertext).

DES dijeli poruku u blokove, koristi ključ za šifriranje svakog bloka, a primatelj koristi isti ključ za dešifriranje i dobivanje izvorne poruke. DES je bio široko korišten u prošlosti, ali danas se često koriste modernije i sigurnije alternative.

A diagram of a block diagram

Description automatically generated

Slika prikazuje jedan od koraka u procesu šifriranja podataka poznatog kao DES (Data Encryption Standard).

  1. Polovica Bloka (32 bita) – Ovo je polovina podataka (ili tekst) koji treba biti šifriran. U DES, originalni podaci se prvo dijele na dvije polovice.
  2. E – Oznaka za proširenje. Ovo je funkcija koja uzima 32-bitnu polovicu i proširuje je na 48 bitova. To je učinjeno tako da se određeni bitovi dupliciraju kako bi se povećala duljina i omogućila operacija sa subključem.
  3. Subključ (48 bita) – Ovo je ključ koji se koristi u trenutnom krugu šifriranja. DES koristi različiti subključ u svakom od 16 krugova šifriranja koji se dobiva iz glavnog ključa.
  4. XOR Operacija – Predstavljena crvenim simbolom “⊕”, ovo je operacija isključivo ILI koja kombinira proširenu polovicu bloka sa subključem. Rezultat je 48-bitni podatak koji je mješavina oba.
  5. S-Boxes (S1, S2, S3, S4, S5, S6, S7, S8) – Ovo su “substitution boxes”. Oni rade supstituciju odnosno zamjenu podataka na temelju unaprijed definirane tablice. Ulaz je 48-bitni podatak iz XOR operacije, koji se zatim dijeli na 8 grupa od 6 bitova. Svaki od ovih 6-bitnih grupa se prenosi kroz različite S-boxeve koji onda daju izlaz od 4 bita. Ukupan izlaz iz svih S-boxeva je 32-bitni podatak.
  6. P – Ovo je permutacija. Permutacija preuređuje 32-bitni izlaz iz S-boxeva prema fiksnom obrascu. Ovaj korak pomaže u dodatnom miješanju bitova.

Svi ovi koraci se odvijaju unutar jednog kruga DES algoritma, a cijeli proces uključuje 16 takvih krugova. Na kraju, dva polovična bloka se ponovno kombiniraju da formiraju šifrirani podatak.

DULJINA KLJUČA

Duljina ključa naznačuje koliko će trebati da se napadom razbije šifra:

Data Encryption Standard (DES, 56 bita)

3DES – trostruki DES

International Data Encryption Algorithm (IDEA, 128 bita) 

Advanced Encryption Standard (AES, 128, 192, 256 bita)

Blowfish (varijabilni ključevi, do 448 bita)

CAST (Carlisle Adams & Stafford Tavares, 128, 256 bita)

RC2  (8-1024 bita), RC5 (0 do 2040 bita )

PREDNOSTI I NEDOSTACI SIMETRIČNE KRIPTOGRAFIJE

Prednosti simetrične kriptografijeNedostaci simetrične kriptografije
Brza obrada i visoka učinkovitostPotreba za sigurnim dijeljenjem ključeva
Jednostavnost implementacijeProblemi s upravljanjem ključevima u distribuiranim sustavima
Manji računalni resursi za kriptiranje i dekriptiranjeRizik od krađe ili gubitka ključeva
Dobro se prilagođava širokom rasponu aplikacijaOgraničena skalabilnost za velike mreže ili sustave
Veća otpornost na neke vrste napada kao što su brute-force napadi s kratkim ključemPotencijal za “single point of failure” ako je ključ kompromitiran
Mogućnost korištenja u situacijama gdje je potrebna niska latencijaPotreba za periodičnom izmjenom ključeva radi održavanja sigurnosti
Manja otpornost na napredne napade
Teškoće u osiguravanju povjerljivosti ključeva u višestrukim korisničkim okruženjima

* Niska latencija odnosi se na brzinu ili vremensko kašnjenje u prijenosu podataka od jednog mjesta do drugog. To znači da se podaci brzo prenose ili obrađuju, što rezultira malim vremenom čekanja.

U kontekstu kriptografije, niska latencija znači da postupak šifriranja, dešifriranja ili komunikacije s enkriptiranim podacima odvija brzo, gotovo trenutačno. To je posebno važno u aplikacijama gdje je potrebno brzo odgovoriti na zahtjeve, kao što su komunikacija u stvarnom vremenu, financijske transakcije ili interaktivne igre.

Kada je latencija niska, korisnici ne primjećuju značajno kašnjenje u prijenosu podataka, što rezultira poboljšanom korisničkom iskustvu i povećanom učinkovitošću sustava. Stoga je niska latencija važan faktor u razvoju mnogih tehnoloških sustava i aplikacija.

* Brute-force napad je metoda napada u kriptografiji i računalnoj sigurnosti koja se oslanja na isprobavanje svih mogućih kombinacija ključeva ili lozinki kako bi se otkrila ispravna vrijednost. Ova tehnika napada ne oslanja se na ranjivost kriptografskog algoritma, već na snagu računalnih resursa i sposobnost isprobavanja velikog broja kombinacija.

U kontekstu kriptografije, brute-force napad obično se koristi za pokušaj dešifriranja šifrirane poruke ili pronalaženja ispravne lozinke za pristup sustavu ili računu. Napadač koristi računalne resurse kako bi sustavatski isprobavao sve moguće kombinacije ključeva ili lozinki dok ne pronađe onu koja odgovara ispravnoj vrijednosti.

Brute-force napadi mogu biti izuzetno učinkoviti ako je ključ ili lozinka relativno kratak ili slabo odabrana. Međutim, kako duljina ključa ili lozinke raste, vrijeme potrebno za izvršavanje brute-force napada eksponencijalno raste, što čini ovu metodu sve manje praktičnom.

Zaštita od brute-force napada obično uključuje korištenje jakih i složenih lozinki ili ključeva, kao i primjenu dodatnih sigurnosnih mjera poput ograničenja broja neuspjelih pokušaja prijave ili korištenje tehnika kao što su salting i key stretching kako bi se otežalo izvršavanje ovakvih napada.