CERTIFIKATI I AUTORIZACIJA

 

 

 

Public-key infrastucture predstavlja sigurnosne standarde i tehnike prijenosa podataka putem Interneta.

 

 

Sigurnosna pitanja  na mreži

 

Sva komunikacija preko Interneta obavlja se korištenjem TCP Internet protokola. TCP/IP omogućuje podacima da prelaze s jednog računala na drugo koristeći mrežu posrednih računala i(li) odvojenih mreža. Iako je velika fleksibilnost TCP/IP dovela do njegove masovne uporabe, upravo zbog te činjenice TCP/IP čini nepouzdanim za prijenos osjetljivih podataka.

 

Glavne prijetnje slanju povjerljivih podataka putem Interneta su :

 

Primjer za gore navedene probleme je poslovanje kreditnim karticama gdje su moguća presretanja korisnikova broja kartice, zatim izmjena sadržaja narudžbe te prijevara putem lažnog predstavljanja tvrtke ili djelatnosti.

 

Naravno nije uobičajeno da  operateri posrednih računala nadgledaju ili na bilo koji način ometaju komunikacijski promet, no sama činjenica da je to moguće zahtijeva odgovarajuće predostrožnosti kada se šalju osjetljivi bilo privatni ili poslovni podaci.

 

Metode zaštite podataka na mreži poznate su pod nazivom public-key cryptography ili kriptozaštita javnim ključem.

 

Public-key cryptography  ispunjava sljedeće obveze :

 

-         šifriranje / dešifriranje – omogućuje dvjema stranama da zamaskiraju poslanu poruku. Pošiljatelj šifrira poruku i kao takvu ju šalje do primatelja koji ju onda dešifrira. U prijenosu, dok je poruka šifrirana, potpuno je nečitljiva.

-         detekcija neovlaštenog mijenjanja podataka – omogućuje primatelju da utvrdi je li poruka promijenjena. Svaki pokušaj promjene ili zamjene poruke ili bilo kojeg njenog dijela bit će otkriven.

-         autorizacija – omogućuje primatelju da utvrdi identitet pošiljatelj

-         neoporecivost poslanih podataka – sprječava pošiljatelja poruke da kasnije tvrdi kako nije poslao poruku

 

 

Šifriranje / dešifriranje

 

Većina modernih kriptografskih metoda ne zasniva se na tajnosti kriptografskih algoritama, koji su dobro znani, već na broju koji se naziva ključ, a bez kojeg je vrlo teško odnosno nemoguće dešifrirati poruku.

 

Razlikuju se dvije vrste šifriranja :

           

            šifriranje simetričnim ključem (symmetric-key encryption)

 

            šifriranje javnim ključem (public-key encryption)

 

Pri šifriranju simetričnim ključem ključ za šifriranje se može izračunati iz onog za dešifriranje i obratno. Većina primjena ipak koristi jedan jedinstveni ključ.

 

 

Implementacije sa simetričnim ključem su vrlo učinkovite, a korisnici ne gube previše vremena dok se obavljaju šifriranje i dešifriranje. Nadalje omogućuje se i određeni stupanj autorizacije pošto poruka šifrirana s jednim simetričnim ključem ne može biti dešifrirana s drugim. Ova komunikacija je sigurna sve dok se ključ drži u tajnosti. Problem se javlja ako netko dozna za taj ključ. Na taj način on može ne samo čitati podatke već slati i svoje podatke objema stranama koje to ne bi mogle otkriti.

 

Šifriranje javnim ključem (često zvano i šifriranje asimetričnim ključem) uključuje par ključeva, jedan javni i virtualno poznat svima i jedan tajni poznat samo primatelju.

Podatak šifriran s javnim ključem može se dešifrirati samo s tajnim ključem primatelja, a to znači da slobodno može objavljivati svoj javni ključ.

 

 

U usporedbi sa šifriranjem simetričnim ključem, šifriranje javnim ključem zahtijeva više računanja i nije uvijek povoljno za velike količine podataka.

 

Treba napomenuti da obrat na gornjoj shemi također vrijedi. Moguće je šifrirati podatke sa tajnim ključem koji se onda mogu dešifrirati s javnim ključem. To naravno nije preporučljivo jer svatko tko zna vaš javni ključ, a koji je po definiciji objavljen može dešifrirati vašu poruku. Ipak takvo šifriranje je korisno jer to znači da je moguće iskoristiti tajni ključ za utvrđivanje identiteta pošiljatelja. Ova se metoda koristi zajedno s još nekim parametrima za digitalni potpis 

 

 

Digitalni potpis

 

Šifriranje i dešifriranje bave se problemom prisluškivanja jednog od tri glavna problema. Druga dva problema, neovlaštena izmjena podataka i lažno predstavljanje.

neovlaštena izmjena podataka rješava se korištenjem one way hash algoritama.

 

One way hash je broj fiksne duljine sa sljedećim karakteristikama :

-         vrijednost hash-a je jedinstvena za hashiranu poruku. Promjena poruke, čak i brisanje ili promjena jednog jedinog znaka rezultira drugom vrijednošću.

-         hash se ne može izdvojiti iz poruke, zato se i zove one way hash

 

Kao što je spomenuto podatke je moguće šifrirati sa tajnim ključem tako da se mogu dešifrirati javnim ključem. Digitalni potpis koristi ovu činjenicu, no umjesto da se šifriraju sami podaci šifrira se hash koji se zajedno sa hashing algoritmom i porukom šalje preko mreže.  

 

            

 

Slika pokazuje kako se odvija prijenos. Prenose se originalna poruka i digitalni potpis, koji je ustvari šifrirani one way hash uz još algoritam korišten za hashiranje. Da bi utvrdili vjerodostojnost podataka softver na primateljevoj strani prvo koristi pošiljateljev javni ključ za dešifriranje hasha. Zatim koristi hashing algoritam za hashiranje originalne poruke te uspoređuje dva hasha. Ako su identični poruka sigurno nije promijenjena.

 

Utvrđivanje identiteta pošiljatelja zahtijeva još neke radnje kao što su provjera da li javni ključ zbilja pripada osobi za koju se Pošiljatelj izdaje. Taj problem se rješava korištenjem certifikata.   

 

 

Certifikat identificira nekoga ili nešto

 

Certifikat je elektronički dokument koji se koristi za identificiranje osobe, servera, kompanije ili nekog drugog subjekta i za povezivanje tog identiteta sa javnim ključem (public key). Certifikat daje opće priznati dokaz o identitetu. Kriptografija javnog ključa (Public key criptography) koristi certifikate kako bi riješila problem lažnog predstavljanja.

 

Certifikati rade slično kao drugi slični načini identificiranja. Certifikacijske vlasti (Certificate authorities CA) su službe koje potvrđuju identitete i izdaju certifikate. Oni mogu biti ili nezavisne treće strane ili organizacije. Metode koje se koriste za dokazivanje identiteta variraju ovisno o politici svakog CA. Općenito, prije izdavanja certifikata CA mora koristiti svoju objavljenu proceduru za verifikaciju za taj tip certifikata, kako bi osigurala da je osoba koja traži certifikat uistinu onaj za koga se predstavlja.

 

Certifikat izdan od CA povezuje određeni javni ključ sa imenom osobe koju taj ključ identificira (poput imena zaposlenika ili servera). Certifikat pomaže sprečavanju uporabe lažnoj javnog ključa za predstavljanje za nekog drugog (impersonation). Samo javni ključ potvrđen certifikatom će raditi sa odgovarajućim tajnim ključem koji posjeduje osoba koju identificira certifikat.

 

Osim javnog ključa, certifikat uvijek sadrži ime osobe koju predstavlja, datum prestanka valjanosti certifikata, ime CA koja je izdala certifikat, serijski broj i druge informacije. Najvažnije, certifikat uvijek sadrži i digitalni potpis CA koja je izdala certifikat. Digitalni potpis CA dozvoljava certifikatu da funkcionira kao pismo potvrde za korisnike koji znaju i vjeruju CA, ali ne znaju osobu koja se predstavlja certifikatom.

 

 

Autorizacija je proces potvrđivanja identiteta. U kontekstu mrežnih interakcija, autorizacija uključuje pouzdanu identifikaciju jedne strane od druge strane. Autorizacija preko mreže može imati mnogo oblika, a certifikati su samo jedan od njih.

 

Mrežne interakcije se tipično događaju između klijenata, poput browsera na osobnom računalu i servera, poput softvera i hardvera koji podržava Web stranicu. Autorizacija klijenta (Client authentication) se odnosi na pouzdanu identifikaciju klijenta od strane servera (bolje rečeno identifikaciju osobe za koju se pretpostavlja da koristi klijentski softver). Autorizacija servera (Server authentication) se odnosi na pouzdanu identifikaciju servera od strane klijenta (tj. identifikaciju organizacije za koju se pretpostavlja da je odgovorna za server na određenoj mrežnoj adresi).

 

Autorizacija servera i klijenta nisu jedini oblici autorizacije koju certifikati podržavaju. Primjerice, digitalni potpis na emailu, u kombinaciji sa certifikatom koji identificira pošiljatelja, pruža jak dokaz da je osoba predstavljena certifikatom uistinu poslala poruku. Osim autorizacije, digitalni potpis osigurava i visok stupanj neporecivosti (nonrepudiation), tj. digitalni potpis otežava osobi koja je potpisala da kasnije tvrdi kako nije poslala email ili neki drugi potpisani dokument.

 

Autorizacija klijenata je osnovni element mrežne sigurnosti u većini mreža. Sada će biti objašnjena autorizacija  bazirana na certifikatima (Certificate-based authentication). Da bi autorizirao korisnika na serveru, klijent digitalno potpisuje slučajno generirani podatak i šalje mrežom oboje, i certifikat i potpisani podatak. Postupak autorizacije će biti objašnjen na slijedećoj slici.

 

 

Pretpostavlja se da klijent ima valjani certifikat koji može biti iskorišten za identifikaciju klijenta serveru. Autorizacija bazirana na certifikatu se smatra poželjnijom od autorizacije bazirane na lozinci (Password-based authentication), zato jer je bazirana na onome što korisnik ima (privatni ključ) kao i na onome što korisnik zna (lozinka koja štiti privatni ključ).

 

Važno je primijetiti da kriptografija javnog ključa može samo verificirati da privatni ključ iskorišten za potpisivanje nekih podataka odgovara javnom ključu u certifikatu. Ona ne rješava probleme vezane uz fizički pristup pojedinačnim računalima i lozinkama. Zato je korisnikova odgovornost zaštititi fizičku sigurnost računala i tajnost lozinke privatnog ključa.

 

Autorizacija pomoću certifikata ima slijedeće korake:

 

  1. klijentski softver održava bazu podataka privatnih ključeva koja odgovara javnim ključevima objavljenim u certifikatima izdanim tom klijentu. Klijent traži lozinku do te baze podataka kada joj prvi puta treba pristupiti. Nakon što se jednom unese lozinka, korisnik je više ne mora unositi do kraja rada s klijentom.
  2. klijent daje pristup bazi podataka s privatnim ključevima, dohvaća privatni ključ za korisnikov certifikat, i koristi taj privatni ključ da bi njime potpisao za tu svrhu slučajno generirane podatke. Ti slučajni podaci se generiraju na temelju podataka od klijenta i sa servera. Ti podaci i digitalni potpis stvaraju dokaz o valjanosti privatnog ključa. Digitalni potpis može biti kreiran samo s sa tim privatnim ključem i može biti potvrđen javnim ključem primijenjenim na potpisanim podacima.
  3. klijent mrežom šalje oboje, i korisnikov certifikat i digitalno potpisani slučajno generirani podatak
  4. server koristi certifikat i digitalno potpisani podatak za autorizaciju korisnikovog identiteta
  5. u ovom trenutku, server može opcionalno provesti još neke provjere, poput korisnikovih prava i sl.

 

Ovdje se vidi velika prednost ovakvog načina identifikacije. Naime korisnika se samo jednom traži da unese lozinku za bazu podataka sa privatnim ključevima. Lozinka se ne šalje preko mreže. Kada se pristupa drugim serverima, autorizacija se obavlja automatski, slanjem certifikata. Nema potrebe za slanjem lozinki preko mreže.

 

 

Tipovi certifikata

 

Razlikuje se pet tipova certifikata:

 

-         klijentski certifikati. Koriste se za identifikaciju klijenata serverima. Tipično se podrazumijeva da je identitet klijenta isti kao i identitet čovjeka koji sjedi za računalom.

-         serverski certifikati. Koriste se za identifikaciju servera klijentima. Serverska identifikacije se može koristiti sa ili bez autorizacije klijenata

-         S/MIME certifikati. Koriste se za potpisivanje zaštićenih emailova.

-         certifikati za potpisivanje objekata. Koriste se za potpisivanje Java kodova, JavaScript skripti ili potpisivanje datoteka.

-         CA certifikati. Koriste se za identifikaciju CA. Klijenti i serverski softver koriste CA certifikate za odlučivanje kojim se drugim certifikatima može vjerovati.

 

 

Sadržaj certifikata

 

Sadržaj certifikata je organiziran prema specifikaciji X.509 v3, koja je preporučena od strane ITU (International Telecommunications Union) od 1988.

 

X.509 v3 povezuje razlikovno ime (distinguished name - DN) sa javnim ključem. DN je skup parova ime-vrijednost koji jedinstveno identificiraju entitet, tj. certificirani subjekt.

 

Tipični DN ima oblik:

uid=doe,e=doe@netscape.com,cn=John Doe,o=Netscape Communications Corp.,c=US

 

Skraćenice prije svakog znaka jednakosti imaju slijedeće značenje:

 

Certifikati mogu sadržavati i brojne druge parove ime-vrijednost.

 

 

Tipični certifikat

 

Svaki X.509 certifikat se sastoji od dva dijela:

 

 

Svi se ti dijelovi mogu prepoznati na slijedećem primjeru certifikata u čitkom formatu:

 

Certificate:

    Data:

        Version: v3 (0x2)

        Serial Number: 3 (0x3)

        Signature Algorithm: PKCS #1 MD5 With RSA Encryption

        Issuer: OU=Ace Certificate Authority, O=Ace Industry, C=US

        Validity:

            Not Before: Fri Oct 17 18:36:25 1997

            Not  After: Sun Oct 17 18:36:25 1999

        Subject: CN=Jane Doe, OU=Finance, O=Ace Industry, C=US

        Subject Public Key Info:

            Algorithm: PKCS #1 RSA Encryption

            Public Key:

                Modulus:

                    00:ca:fa:79:98:8f:19:f8:d7:de:e4:49:80:48:e6:2a:2a:86:

                    ed:27:40:4d:86:b3:05:c0:01:bb:50:15:c9:de:dc:85:19:22:

                    43:7d:45:6d:71:4e:17:3d:f0:36:4b:5b:7f:a8:51:a3:a1:00:

                    98:ce:7f:47:50:2c:93:36:7c:01:6e:cb:89:06:41:72:b5:e9:

                    73:49:38:76:ef:b6:8f:ac:49:bb:63:0f:9b:ff:16:2a:e3:0e:

                    9d:3b:af:ce:9a:3e:48:65:de:96:61:d5:0a:11:2a:a2:80:b0:

                    7d:d8:99:cb:0c:99:34:c9:ab:25:06:a8:31:ad:8c:4b:aa:54:

                    91:f4:15

                Public Exponent: 65537 (0x10001)

        Extensions:

            Identifier: Certificate Type

                Critical: no

                Certified Usage:

                    SSL Client

            Identifier: Authority Key Identifier

                Critical: no

                Key Identifier:

                    f2:f2:06:59:90:18:47:51:f5:89:33:5a:31:7a:e6:5c:fb:36:

                    26:c9

    Signature:

        Algorithm: PKCS #1 MD5 With RSA Encryption

        Signature:

            6d:23:af:f3:d3:b6:7a:df:90:df:cd:7e:18:6c:01:69:8e:54:65:fc:06:

            30:43:34:d1:63:1f:06:7d:c3:40:a8:2a:82:c1:a4:83:2a:fb:2e:8f:fb:

            f0:6d:ff:75:a3:78:f7:52:47:46:62:97:1d:d9:c6:11:0a:02:a2:e0:cc:

            2a:75:6c:8b:b6:9b:87:00:7d:7c:84:76:79:ba:f8:b4:d2:62:58:c3:c5:

            b6:c1:43:ac:63:44:42:fd:af:c8:0f:2f:38:85:6d:d6:59:e8:41:42:a5:

            4a:e5:26:38:ff:32:78:a1:38:f1:ed:dc:0d:31:d1:b0:6d:67:e9:46:a8:

             dd:c4

 

 

Isti certifikat prikazan u 64 bitnom kodiranom obliku koji koristi softver izgleda ovako:

 

-----BEGIN CERTIFICATE-----

MIICKzCCAZSgAwIBAgIBAzANBgkqhkiG9w0BAQQFADA3MQswCQYDVQQGEwJVUzER

MA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncyBDQTAeFw05NzEw

MTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBgNVBAYTAlVTMREwDwYDVQQK

EwhOZXRzY2FwZTENMAsGA1UECxMEUHViczEXMBUGA1UEAxMOU3Vwcml5YSBTaGV0

dHkwgZ8wDQYJKoZIhvcNAQEFBQADgY0AMIGJAoGBAMr6eZiPGfjX3uRJgEjmKiqG

7SdATYazBcABu1AVyd7chRkiQ31FbXFOGD3wNktbf6hRo6EAmM5/R1AskzZ8AW7L

iQZBcrXpc0k4du+2Q6xJu2MPm/8WKuMOnTuvzpo+SGXelmHVChEqooCwfdiZywyZ

NMmrJgaoMa2MS6pUkfQVAgMBAAGjNjA0MBEGCWCGSAGG+EIBAQQEAwIAgDAfBgNV

HSMEGDAWgBTy8gZZkBhHUfWJM1oxeuZc+zYmyTANBgkqhkiG9w0BAQQFAAOBgQBt

I6/z07Z635DfzX4XbAFpjlRl/AYwQzTSYx8GfcNAqCqCwaSDKvsuj/vwbf91o3j3

UkdGYpcd2cYRCgKi4MwqdWyLtpuHAH18hHZ5uvi00mJYw8W2wUOsY0RC/a/IDy84

hW3WWehBUqVK5SY4/zJ4oTjx7dwNMdGwbWfpRqjd1A==

-----END CERTIFICATE-----

 

 

Kako se CA certifikati koriste za uspostavu povjerenja

 

CA su entiteti koji potvrđuju identitete i izdaju certifikate. One mogu biti ili nezavisne treće strane ili organizacije koje imaju vlastite servere za izdavanje certifikata.

 

Svaki klijentski ili serverski softver koji podržava certifikate održava i bazu povjerljivih CA certifikata. Ti CA certifikati određuju kojim će se drugim certifikatima vjerovati, drugim riječima kojim izdavateljima certifikata se može vjerovati.

 

 

Hijerarhije CA

 

U velikim organizacijama može biti prikladno dodijeliti odgovornost za izdavanje certifikata različitim CA. Primjerice u velikoj tvrtki svaki odjel može vlastiti CA. To omogućuje jednostavnije održavanje certifikata, različite politike u različitim odjelima, a oni ne moraju biti smješteni na istom mjestu. X.509 standard podržava takav model, prikazan slijedećim primjerom:

 

 

U ovom modelu root CA, koji je na vrhu hijerarhije, sam sebi potpisuje certifikat. Njemu podređeni CA imaju certifikate potpisane od root CA itd.

 

Ovakva hijerarhija se reflektira u vidu lanca. Certifikacijski lanac je serija certifikata izdanih od hijerarhijski složenih CA. Na slijedećoj slici je prikazan certifikacijski lanac za prethodni primjer, koji vodi od certifikata koji identificira neki entitet, kroz hijerarhiju CA, do root CA.

 

 

Certifikacijski lanac slijedi stazu od grane u hijerarhiji do korijena hijerarhije (root CA). U certifikacijskom lancu moguća su tri slučaja:

·        svaki certifikat slijedi certifikat njegovog izdavatelja

·        svaki certifikat sadrži ime (DN) izdavatelja certifikata, koje je isto kao i ime subjekta slijedećeg certifikata u lancu

·        svaki certifikat je potpisan privatnim ključem njegovog izdavatelja. Potpis može biti verificiran sa javnim ključem u izdavateljevom certifikatu, koji je slijedeći certifikat u lancu.

 

 

Verifikacija u certifikacijskom lancu

 

Verifikacija certifikacijskog lanca je proces osiguravanja da je dani certifikacijski lanac dobro formiran, propisno potpisan i da mu se može vjerovati. Slijedeća procedura se koristi za verifikaciju certifikacijskog lanca, počevši od certifikata koji se autoriziera:

  1. provjerava se period valjanosti certifikata
  2. locira se izdavateljev certifikat. On može biti ili u lokalnoj bazi certifikata, ili ga se dobavlja preko mreže.
  3. verificira se potpis certifikata korištenjem javnog ključa izdavateljevog certifikata
  4. ako se vjeruje izdavateljevom certifikatu, verifikacija uspješno završava na tom mjestu. Inače se izdavateljev certifikat provjerava da bi se provjerilo da li sadrži indikaciju na svoj CA, i proces počinje ponovno od koraka 1.

 

Ovakva situacija je prikazana na slijedećoj slici:

 

 

Ovakva situacija se događa kada se samo root CA. Ako se vjeruje i nekom od CA koji se nalaze niže u certifikacijskoj hijerarhiji,  autorizacija završava prije, kao na slijedećoj slici:

 

 

Ako neki od certifikata u lancu, prije onog kojem se vjeruje, nije ispravan verifikacija se ne može završiti:

 

 

 

 

Certifikat neće biti ispravan ako mu je istekao rok valjanosti, nije ispravno potpisan ili ne postoji certifikat za CA koji ga je izdao.

 

 

Registracijske vlasti

 

Interakcije između entiteta identificiranih certifikatima im CA su osnovni dio održavanja certifikata. Te interakcije uključuju operacije poput registracije za certificiranje, obnavljanje certifikata, oporavak ključeva… Opčenito CA mora biti sposoban autorizirati identitete entiteta prije odgovaranja na njihove zahtjeve. Osim toga, neke zahtjeve moraju odobriti ovlašteni administratori.

 

Načini koje CA koriste za verifikaciju identiteta prije izdavanja certifikata variraju u širokom rasponu, ovisno o organnizaciji i svrsi za koju će certifikat biti korišten. Da bi se osigurala maksimalna fleksibilnost, interakcije sa krajnjim korisnincima mogu biti odvojene od drugih funkcija CA i prepuštene drugoj službi, koja se naziva registracijska vlast (registratioon authority-RA).

 

RA se ponaša kao sučelje prema CA, primanjem zahtijeva, njihovom autorizacijom i daljnjim prepuštanjem CA. Nakon primanja odgovora od CA, RA obavještava korisnika o rezultatima.