Public-key infrastucture
predstavlja sigurnosne standarde i tehnike prijenosa podataka putem Interneta.
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
Š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 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:
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.
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 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.
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-----
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.
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
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:
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.