Elektrotehniško-računalniška strokovna šola in gimnazija Ljubljana
Vegova ulica 4
Seminarska naloga pri računalništvu
Kriptografija v internetni varnosti
Mentor: Aleš Volčini Avtor: [REDACTED], G 3. B
Ljubljana, maj 2022
V seminarski nalogi sem raziskoval šifrirne algoritme za potrebe internetne varnosti. Te so nepogrešljivi v internetnih komunikacijah. Začel sem s predstavitvijo šifriranja sporočil v preteklosti in nadaljeval z razvojem šifrirnih algoritmov v moderni računalniški dobi. Raziskal sem principe asimetričnega šifriranja in uporabnost le tega. Raziskal sem tudi asimetrično šifriranje, ki je temelj varne internetne komunikacije. Pri obeh naštetih se pogosto uporablja tudi enosmerne zgoščevalne funkcije, ki sem jih tudi predstavil. Omenil sem tudi protokole v katerih te šifrirne funkcije tudi uporabljene in njihovo implementacijo. Podal sem tudi možnosti razširitve in nadaljevanja raziskovalnega dela na tem področju.
Ključne besede: šifrirni algoritmi, simetrično šifriranje, asimetrično šifriranje, zgoščevalne funkcije, digitalni podpis
The aim of this paper is to research various methods of encryption used in modern internet communication. Encryption algorithms play an important role in internet communications as they provide privacy and security. Initially, the paper gives a brief overview on the history of encryption. It then presents and explains the workings and use cases of each type of algorithm. It also mentions specific protocols that implement the algorithms presented.
Keywords: Encryption algorithm, Symmetric encryption, Asymmetric encryption, hash function, digital signature
Odkar zna človek pošiljati sporočila, čuti potrebo po skrivanju le teh. Tajnost sporočil, a predvsem njihov pomen ima že od antičnih časov velik pomen v vojaških operacijah, v modernem svetu pa v informacijski varnosti uradnih ustanov in posameznikov. Za zakrivanje sporočil se uporabljajo metode šifriranja. Raziskuje jih kriptografija, to je veda varne komunikacije v prisotnosti aktivnega vsiljivca. V seminarski nalogi se bom ukvarjal s šifrirnimi metodami in algoritmi, opredeljevanjem njihovega delovanja in razumevanjem realizacije. Iskal bom tudi primernost posameznih algoritmov za različne potrebe.
V namen skrivanja sporočil so za pisano besedo iznašli mnoge metode popačenja sporočila, ki jih je pravi prejemnik znal razvozlati. Cezarjeva šifra je zamenjava črke s črko, ki je prvotni črki v abecednem redu odmaknjena za dogovorjeno vrednost.
Za potrebe šifriranja vsebin v komunikaciji, še posebej v internetni dobi, se razvijejo šifrirni algoritmi. Šifrirni algoritem je postopek, v katerem se iz navadnega besedila pridobi šifrirano besedilo ali šifro. Na tej šifri je navadno mogoče izvesti proces, s katerim dobi sporočilo ponovno prvotno vrednost.
Simetrični šifrirni algoritmi so algoritmi, ki za šifriranje in dešifriranje uporabljajo isti ključ. Ključ je spremenljivka v šifrirnem algoritmu, določa šifro. Da način sporazumevanja z uporabo simetričnega šifrirnega algoritma deluje, potrebujejo vsi ki so v komunikacijo vključeni isti dogovorjen ključ. Tisti ki ključa ne pozna, sporočila ni zmožen prepoznati. To je tudi glavna slabost tega algoritma. Poznamo dva glavna tipa simetričnih šifrirnih algoritmov:
Tovrstni algoritmi iz celotnega navadnega sporočila v šifro preslikajo posamezne enote sporočila kot so črke ali bajti. Primer tega je prej navedena Cezarjeva šifra. Slabost teh algoritmov je, da jih je lahko razdreti s pomočjo opazovanja pogostosti določenih gradnikov sporočila.
Pri temu procesu, pa se zajame več enot sporočila in se jih šifrira kot celoto. Razširjen primer takega algoritma je AES (Napredni šifrirni standard). Ta vzame za blok 128 bitov in operira z njimi.
Asimetrične šifrirne algoritme vedno sestavljata dva ključa, pogosto imenovana javni in zasebni ključ. Zato se tak način šifriranja imenuje tudi šifriranje z javnim in zasebnim ključem.
V principu asimetrično šifriranje deluje tako, da en od dveh ključev sporočilo zašifrira, drugi pa odšifrira. Ključ ki zaklepa ne more odklepati in ključ ki odklepa, ne more zaklepati. V praksi na primer posameznik javni ključ, ki se uporablja za šifriranje sporočila, objavi, privatnega, ki lahko ta sporočila dešifrira, pa hrani v tajnosti.
Prednosti sistema sporočanja z javnim in zasebnim ključem so, da se sogovornikoma ni potrebno v naprej dogovoriti za enoten tajni ključ. Tako lahko ena izmed strani inicializira pogovor, ker pozna javno objavljen javni ključ drugega, v sporočilu pa preprosto priloži svoj javni ključ, da lahko druga oseba vrne odgovor z nasprotno enakim procesom.
Zasebne in javne ključe lahko uporabljamo tudi kot digitalne podpise. Podpisujoči s pomočjo algoritma z podpisovanje in svojega privatnega ključa proizvede digitalni podpis. Digitalni podpis je mogoče preveriti z nasprotnim algoritmom. Tisti, ki preverja podpis ima dostop do javno objavljenega javnega ključa pošiljatelja in lahko z njim in obratnim algoritmom preveri verodostojnost pošiljatelja.
Digitalni podpis tako zagotavlja vse prednosti fizičnega podpisa, kot so preverjanje avtentičnost in onemogočanje zanikanja podpisa, ponarejanje podpisa pa je zaradi kompleksnosti praktično neizvedljivo.
Tovrstno šifriranje je uporabljeno v protokolu PGP(in GNU-jeve implementacije imenovane GPG ), ki se pogosto uporablja v elektronski pošti in v TLS protokolu, ki se med drugim uporablja v protokolu HTTPS. Ta zagotavlja varnost pred morebitnimi vmesnimi opazovalci (ang, Man in the middle attack).
Zgoščevalne funkcije so algoritmi, ki iz poljubno dolgega sporočila naredijo binarno vrednost s fiksno dolžino. Proces je praktično ireverzibilen. Posamezno zgoščeno sporočilo naj bi nastalo zgolj iz enega navadnega sporočila. Če se navadno sporočilo spremeni že za zgolj en bit je proizvod zgoščevalne funkcije popolnoma drugačen. To se imenuje efekt plazu.
Če se več kot eno navadno sporočilo preslika v isti zgoščen blok, se to imenuje trk (ang. collison). Trk je praktično nemogoče doseči v naravni uporabi algoritmov, a se pri nekaterih to da izvesti umetno. Zgoščevalne algoritme, pri katerih je to mogoče se jemlje kot strte in zato nevarne.
Zgoščevalne funkcije se pogosto uporablja pri digitalnih podpisih, kjer se z zgoščevalno funkcijo obdela navadno sporočilo in s tem ustvari ti. prstni odtis. Tega se šifrira z zasebnim ključem in ga s tako zaščiti pred morebitnimi napadalci. Prejemnik lahko prstni odtis dešifrira z javnim ključem pošiljatelja in ga primerja z rezultatom zgoščevalne funkcije na navadnem sporočilu. Če se ujemata je verodostojnost zagotovljena.
Zgoščevalne funkcije se uporablja tudi pri shranjevanju gesel uporabnikov na sistemu. Nastavljeno gesla se z zgoščevalno funkcijo pretvorijo in shranijo, ob potrebi po preverjanju vnesenega gesla se ta pretvori na enak način kot nastavljeno geslo, rezultate pa se primerja. Če sta enaka je geslo pravilno. Tako preprečimo izliv podatkov v primeru vdora v sistem, saj so napadalcu vidni samo šifrirani podatki.
V seminarski nalogi sem se spoznal z osnovami šifriranja in principi delovanja šifrirnih algoritmov, ki jih srečujemo na vsakdanji ravni v modernem spletu. Za posamezne potrebe so primerne različne metode šifriranja, razumevanje teh pa nam omogoča varnejšo digitalno prisotnost. Smiselna razširitev te seminarske naloge bi bilo poglabljanje v delovanje posameznih algoritmov in realizacija omenjenih protokolov na lastni opremi.
Juršić. 2008. Prosojnice za tečaj kriptografije in računalniške varnosti. Dostopno prek: http://lkrv.fri.uni-lj.si/~ajurisic/kirv08/prosojnice.html (30. 5. 2022)
Kovačič. 2009. Kriptografija. Dostopno prek: https://telefoncek.si/static/2016/06/Kriptografija_Kovacic.pdf (30. 5. 2022)
Logar. 2006. Pretočni šifrirni postopki. Dostopno prek: http://www.lait.fe.uni-lj.si/Seminarji/f_logar.pdf (30. 5. 2022)
Pogačnik. 2006. Teorija kriptologije. Dostopno prek: http://www.lait.fe.uni-lj.si/Seminarji/b_pogacnik (30. 5. 2022)
Potisk. Digitalni podpisi. Dostopno prek: https://www.egradiva.net/moduli/upravljanje_ik/17_digitalni_podpis/01_datoteka.html
(30. 5. 2022)
Rožman. 2008. TLS/SSL. Dostopno prek: https://www.abakus.si/sl/blog/2008_03_05_SR_TLS_SSL (30. 5. 2022)
https://en.wikipedia.org/wiki/Cryptography (30. 5. 2022)
https://www.s-sers.mb.edus.si/gradiva/w3/omrezja/63_varnost/kripto.html (30. 5. 2022)
https://www.ibm.com/docs/en/ztpf/2020?topic=concepts-symmetric-cryptography
(30. 5. 2022)
Izjava o avtorstvu
Izjavljam, da je seminarska naloga v celoti moje avorsko delo, ki sem ga izdelal samostojno s pomočjo navedene literature in pod vodstvom mentorja.
3. 6. 2022 [REDACTED]
_______________