280 likes | 469 Views
MODELI ZAUPANJA IN DIGITALNI CERTIFIKATI. Dušan Zupančič, KOMPAS Xnet. Zaupanje v vsakdanjem življenju. Oglejmo si spodnjo izjavo:. Od neznanca na ulici bi morda vzel knjigo, verjetno bi vzel letak in bi ga najverjetneje tudi prebral. Nikoli pa od neznanca ne bi vzel hrane. Temelji zaupanja.
E N D
MODELI ZAUPANJA IN DIGITALNI CERTIFIKATI Dušan Zupančič, KOMPAS Xnet
Zaupanje v vsakdanjem življenju Oglejmo si spodnjo izjavo: Od neznanca na ulici bi morda vzel knjigo, verjetno bi vzel letak in bi ga najverjetneje tudi prebral. Nikoli pa od neznanca ne bi vzel hrane.
Temelji zaupanja • Iz izjave razberemo, da je naše zaupanje odvisno od: • Vira – v našem primeru neznanec • Sredstva – knjiga, letak, hrana • Vrste interakcije – sprejemanje, branje • Razmislek: • So knjige res popolnoma nenevarne? • Ali hrane res ne sprejemamo od neznancev (tržnice, gostišča)? • Ali ne gremo včasih še dlje in dovolimo, da neznanci zabadajo igle v naše telo (zdravstveni dom)?
Vrste zaupanja • Neposredno zaupanje • Neposredno zaupamo prijateljem, ki jih dobro poznamo • Posredno zaupanje • Posredno zaupamo branjevki na tržnici, ker pri njej kupujejo trije prijatelji in vsi zagotavljajo, da ima najboljše sadje • Posredno zaupamo kirurgu, ker ima diplomo organizacije, ki uživa splošno zaupanje in deluje v organizaciji (bolnišnici), ki ji zaupamo
Integriteta Zaupnost Prestrezanje Modifikacija Ali je moja komunikacija zasebna? Je kdo spremenil podatke? Avtentikacija Nezmožnost zanikanja ? Trdi Ni poslal Niprejel Ponarejanje S kom imam opravka? Kdo je kaj poslal in kdaj? Zaupanje v digitalnem svetu
Kategorije kriptografskih algoritmov • Simetrična šifra • Šifriranje in odšifriranje se vrši z istim ključem • Asimetrična šifra • Obstajata javni in privatni ključ. Eden je uporabljen za šifriranje drugi za odšifriranje • Hibridna šifra • Z asimetričnim ključem šifriramo simetrični ključ seje (session key), ki je uporabljen za šifriranje samega sporočila • Zgostitev (hash) • Iz dolgega sporočila izračuna karakteristično številko (message digest) • MAC (Message Authentication Code) • Za overovljenje sporočila uporablja skupen skrivni (simetrični) ključ • Digitalni podpis • Za overjanje sporočila uporablja podpis sporočila s privatnim in preverjanje z javnim ključem
Kdo je zares pošiljatelj sporočila? Halo Ana!Ali je tvoj javni ključ af3… ? SPOROČILO DIGITALNIPODPIS ANA BOJAN
Certifikati • Predstavljeni v letu 1978[Kohnfelder] • X.509 – najbolj razširjen standard • v.1 (1988) – ni razširljiv • v.2 – dve dodatni polji (nič bolje kot v.1) • v.3 (1997) omogoča dodajanje lastnih razširitvenih polj certifikatu • Ostali • PGP, SPKI, itd.
Digitalni certifikat • V osnovi vsak digitalni certifikat vsebuje vsaj naslednje komponente: • Javni ključ • Informacijo o certifikatu • Enega ali več digitalnih podpisov CA • Glede na namen uporabe certifikate ločimo na: • Certifikati CAcertifikati, ki so namenjeni podpisovanju drugih digitalnih certifikatov, ki jih nadalje delimo na: • Certifikati končnih entitet • Osebnicertifikati končnih entitet za katere imamo javni in zasebni ključ • Ostalicertifikati končnih entitet za katere nimamo zasebnega ključa
Formati datotek s certifikati • X509 format(končnica .cer ali .crt) V datoteki se hrani en certifikat. Ta format uživa dokaj široko podporo • Cryptographic Message Syntax –PKCS #7 Format (.p7b) Omogoča izvoz celotne certifikatne verige • Personal Information Exchange syntax –PKCS #12 Format (.pfx ali .p12)Ta format se uporablja za izvoz para ključev (javnega in zasebnega) • Certificate Signing Request (CSR) Syntax –PKCS #10 FormatNi datoteka ampak oblika zahtevka s katerim pošljemo certifikat v podpis v CA
Dekodiranje X.509 v .NET 2.0 • Dekodiranje certifikatov in ključev iz datoteke ali iz BLOB-ov //Odpre binarno ali base64 .cer datoteko X509Certificate2 x509 = new X509Certificate2(”Dusan.cer”); //Odpre PKCS12 iz blob-a x509 =new X509Certificate2(blob, _ password,X509KeyStorageFlags.UserKeySet); • Tudi izvoz v blob (in pozneje v .pfx datoteko) byte[] pfxBlob = x509.Export(X509ContentType.Pfx, geslo);
Razširitve v X.509 v3 (X.509 extensions) • Podajajo dodatne informacije o certifikatu in dovoljeni vrsti uporabe le tega • Nekaj razširitev: • Key usage – namen uporabe ključa (podpis, šifriranje, …) • SubjectKeyIdentifier – zgostitvena vrednost subjekta • AuthorityKeyIdentifier – zgostitvena vrednost DN izdajatelja certifikata • BasicConstraints – ali gre za CA - več v RFC3280 • SubjectAltName – omogoča dodajanje dodatnih identitet • ExtendedKeyUsage – vsebuje razširjene napotke o dovoljeni uporabi ključa • CertificatePolicy – certifikatna polica, ki podaja pogoje pod katerimi je bil izdan certifikat
Uporaba razširitev X.509 v .NET 2.0 • Dostop do informacij v razširitvah • Razredi za uporabo ključev, omejitve, identifikacijo subjektov • Ali pa dodamo razširitve po svoji želji foreach(X509Extension extension in x509.Extensions) { Console.Write( extension.Oid.FriendlyName ) if (extension.Oid.Value == "2.5.29.15"){ X509KeyUsageExtension keyUse = (X509KeyUsageExtension) extension; Console.Write(" = " & keyUse.KeyUsages.ToString()); } Console.WriteLine(); } Koristna povezava (iskanje OID) : http://asn1.elibel.tm.fr/oid/index.htm
Model shranjevanja certifikatov CryptoAPI Root CA My Trust User DS Logical Store Layer Default Store Provider Smart Card CSP LDAP Physical Store Layer Smartcard Services
Certifikatne shrambe in .NET 2.0 • Dostop do pogostih CryptoAPI operacij s certifikatnimi shrambami (dodajanje, odstranjevanje, pregled, itd.) • Odpiranje osebne certifikatne shrambe • Dodajanje ali odstranjevanje certifikata X509Store mojaShramba = new X509Store(“My”); mojaShramba.Open(OpenFlags.ReadOnly); mojaShramba.Add(x509); mojaShramba.Remove(x509);
Modeli zaupanja • Neposredno zaupanje (Direct Trust) • Hierarhično zaupanje (Hierarchical Trust) • Mreža zaupanja (Web of Trust)
Neposredno zaupanje • Uporabnika si izmenjata certifikata (npr. po elektronski pošti) • Nato preverita ali certifikat res izvira od prave osebe (npr. po telefonu preverita razpoznavni odtis certifikatov) • Certifikat drugega uporabnika uvrstita v shrambo med “zaupanja vredne ljudi”
Hierarhično zaupanje • Vsi zaupajo korenskim CA (Verisign, …) • Korenski CA jamči za vmesne CA • CA jamči za certifikate uporabnikov (ki so se prej ustrezno legitimirali)
Mreža zaupanja • Prvič predstavljeno v PGP • Odločitve o zaupanju so prepuščene uporabnikom • Težavno upravljanje in nadgrajevanje
Navzkrižnocertificiranje CertificationAuthority CertificationAuthority Končni uporabniki Končni uporabnikizaupajo svoji CA Končni uporabnikizaupajo svoji CA Končni uporabniki Zaupanje med PKI-jema Navzkrižno certificiranje(Cross-Certification)
Veljavnost certifikata • Izpolnjeni morajo biti pogoji: • Integriteta: podpis je veljaven • Podpisan s strani zaupanja vredne CA • Ali pa se certifikacijska pot konča z zaupanja vrednim CA • Certifikat je veljaven v tem trenutku: • Čas preverjanja veljavnosti mora biti med vrednostnima “Not Valid Before”in“Not Valid After” • Certifikat ni preklican (Revoked) • Namen uporabe je v skladu s predpisanim namenom uporabe
Preverjanje certifikacijske poti v .NET 2.0 • Enostavno preverjanje certifikacijske poti s privzetimi možnostmi if (x509.Verify()){ Console.WriteLine("Certifikat je veljaven!"); }
Preverjanje certifikacijske poti v .NET 2.0 • Za naprednejše možnosti sta na voljo X509Chain in X509ChainPolicy: • Razširjena uporaba ključev • Certifikacijske police • Opcije za razveljavljene certifikate (Revocation options) • Čas preverjanja veljavnosti X509Chain chn = New X509Chain( ); chn.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly; if (chn.Build(x509)){ ... }
ZAKLJUČEK • Zaupanje igra pomembno vlogo tako v vsakdanjem kot v digitalnem svetu • Osnovna enota zaupanja je certifikat • Zaupanje je lahko neposredno ali posredno • Posredno zaupanje je lahko mrežno, hierarhično ali hibridno (navzkrižno certificiranje CA) • V ogrodju .NET 2.0 bomo dobili solidno podporo za delo z X.509 certifikati, vključno s podporo razširitvam, shrambam in preverjanjem certifikacijske poti