Diapozitiv 1

Download Report

Transcript Diapozitiv 1

Pregled kriptografskih mehanizmov
znotraj ogrodja .NET
Dušan Zupančič,
KOMPAS Xnet
Kje nam kriptografija pomaga?
Integriteta
Zaupnost
Prestrezanje
Modifikacija
Ali je moja komunikacija zasebna?
Je kdo spremenil podatke?
Avtentikacija
Neoporekljivost
?
Ponarejanje
S kom imam opravka?
Ni
poslal
Trdi
Ni
prejel
Kdo je kaj poslal in kdaj?
2
Kje kriptografija ne pomaga
• Kriptografija predstavlja le del splošne varnosti
!!! Uporabljamo kriptografijo ≠ varni smo !!!
• Kljub vrhunski kriptografski opremi, nam le ta
ne pomaga v naslednjih primerih:
• Pomanjkljivo šolanje
• Brezbrižnost (npr. Izpostavljanje zasebnih ključev,
slaba izbira gesel, ...)
• Neizkušenost in preveliko zaupanje
• Napad s socialnim inženiringom
• Podkupnine in izsiljevanje
• Slabo načrtovana programska oprema z veliko
napakami
3
Kaj nas je naučila zgodovina?
Varnost šifre mora bazirati
izključno na skrivanju ključa
ne pa na skrivanju algoritma!
Auguste Kerckhoff, „La Cryptographie militaire“, 1883
• Kerckhoff je verjel, da lahko dobre kriptografske algoritme
najdemo samo s poskusi kriptoanalize
• Dobra šifra predpostavlja da:
• Napadalec pozna vse detajle kriptografskega algoritma
• Ima napadalec vso potrebno opremo (HW in SW) za šifriranje
/odšifriranje
• Je napadalcu na voljo dovolj čistopisa in tajnopisa ustvarjenega z
enakim (neznanim) ključem
• Pri močni šifri se izkaže kot najboljši napad
napad z grobo silo (preizkušanje vseh ključev)
4
Kriptografija v .NET frameworku
Imenski prostor “Cryptography”
System.Object
SymmetricAlgorithm
DES, RC2, TripleDES in Rijndael
AsymmetricAlgorithm
RSA in DSS
HashAlgorithm
MD5, SHA1, SHA256, SHA384 in SHA512
KeyedHashAlgorithm
RandomNumberGenerator
HMACSHA1 in MACTripleDES
RNG
ToBase64Transform
FromBase64Transform
MarshalByRefObject
IO.Stream
CryptoStream
CspParameters
6
Kriptografski model .NET
•
Kriptografski imenski prostor lahko v splošnem
razdelimo na 4 glavna področja:
1. Pomožni razredi (Helper Classes)
Generiranje naključnih števil, konverzije, komunikacija s
CryptoAPI skladiščem in dejansko šifriranje toka
2. Algoritmi za šifriranje / odšifriranje in zgoščevanje
implementacija simetričnih in asimetričnih in zgoščevalnih
algoritmov
3. X.509 Certifikati
Delo z X.509 certifikati
4. XML Digitalni podpisi
Implementacija digitalnih podpisov v XML dokumentih
7
1. Pomožni razredi
Naključna števila
Zakaj so naključna števila pomembna
• Osnova za generiranje:
• Ključev
• Inicializacijskih vektorjev
• Friziranih vrednosti (salt)
• Če osnova za ključ ni dovolj naključna je
varnost precej manjša kot jo deklarira
uporabljen algoritem
9
Generiranje psevdonaključnih števil
• Splošno:
SEED = (A * SEED + C) mod M
X = f(SEED)
Je rezultat res naključen?
• Konkretno:
• Funkcija rand() iz knjige “The C programming
language ” (Kernighan / Ritchie):
#define RAND_MAX 32767
/* (2**15 - 1) */
SEED = (1103515245 * SEED + 12345) mod 2**15
X = SEED
• MS Visual C++ 7 (vrača int):
return(((holdrand = holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff);
10
Kriptografsko varna naključna števila
RNGCryptoServiceProvider je ovojnica okrog CryptoAPI funkcije CryptGetRandom,
ki za generiranje naključnih števil uporablja različne podatke sistema:
• različni parametri vhodnih naprav (miška, tipkovnica),
• process ID, thread ID,
• system time,
• system counter,
• memory status,
• free disk clusters,
• hashed user environment block
byte[] random = new byte[100];
RNGCryptoServiceProvider
rng = new RNGCryptoServiceProvider();
rng.GetBytes(random);
11
2. Algoritmi za šifriranje /
odšifriranje in zgoščevanje
Zgoščevanje (Hashing)
• Sporočilo se razbije v 512 (ali 1024) bitne bloke, ki so
vhod v zgoščevalno funkcijo
• Zgoščevalna funkcija iz vrednosti prejšnjega bloka (ali
začetne vrednosti) in bloka sporočila izračuna
zgoščeno vrednost (hash)
• Zgoščena vrednost je velikosti od 128 do 512 bitov
Začetna
Vrednost
(seed)
1. Blok
sporočila
2. Blok
sporočila
3. Blok
sporočila
Zgoščevalna
funkcija
Zgoščevalna
funkcija
Zgoščevalna
funkcija
Zgoščevalni algoritem
Zgoščena
Vrednost
(hash)
13
System.Security.Cryptography.HashAlgorithm
HashAlgorithm
MD5
MD5CryptoServiceProvider
SHA1
SHA1CryptoServiceProvider
SHA1Managed
SHA256
SHA256Managed
SHA384
SHA384Managed
SHA512
SHA512Managed
KeyedHashAlgorithm
HMACSHA1
MACTripleDES
14
Primer uporabe zgostitve
// deklaracija potrebnih spremenljivk
byte[] podatki;
byte[] rezultat;
// nova instanca razreda SHA512Managed
SHA512 shaM = new SHA512Managed();
// pretvorba iz niza v polje bajtov
podatki =
System.Text.Encoding.UTF8.GetBytes(txtBesedilo.Text);
// izračun zgostitve
rezultat = shaM.ComputeHash(podatki);
// izpis kot Base64 niz
lblHash.Text = Convert.ToBase64String(rezultat);
15
Varnost zgoščevalnega algoritma
• Teoretično 264 (=18,446,744,073,709,551,616)
različnih sporočil, da dobimo ponaredek, ki bo dal
enako zgostitveno vrednost, kot original:
• pri 50 sporočil/sekundo (povprečen PC)  11,6 milijard let
• Pri 10 milijonih sporočil/sekundo  58494 let
• Če imamo nadzor nad vsebino obeh sporočil (original
in ponaredek) je potrebnih 232 sporočil, da je možnost
enake zgostitvene vrednosti višja od 50%
• “Rojstnodnevni napad”
• 50 sporočil/sekundo  < 3 leta
• 10 mil. Sporočil/sekundo  cca. 7 minut
• V takšnih primerih je potrebno poseči po zgostitvenih
algoritmih, ki vračajo zgostitvene vrednosti večjih
natančnosti
• V .NET podrti algoritmi od 128 do 512 bitov
16
V razmislek …
MD5 hash
17
http://csrc.ncsl.nist.gov/hash_standards_comments.pdf (25.8.04)
At the recent Crypto2004 conference, researchers announced
that they had discovered a way to "break" a number of hash
algorithms, including MD4, MD5, HAVAL-128, RIPEMD and the
long superseded Federal Standard SHA-0 algorithm.
The current Federal Information Processing Standard SHA-1
algorithm, which has been in effect since it replaced SHA-0 in
1994, was also analyzed, and a weakened variant was broken,
but the full SHA-1 function was not broken and no collisions
were found in SHA-1. The results presented so far on SHA-1 do
not call its security into question.
However, due to advances in technology, NIST plans to phase
out of SHA-1 in favor of the larger and stronger hash functions
(SHA-224, SHA-256, SHA-384 and SHA-512) by 2010.
18
DEMO: Gesla v bazi
19
Simetrični kriptosistem
Odprti kanal
P
Šifriranje
EK(P) = C
Čistopis
C
Odšifriranje
DK(C) = P
Čistopis
Tajnopis
ključ K
P
ključ K
Skupni ključ distribuiramo preko varnega kanala
• Isti ključ je uporabljen za šifriranje in odšifriranje
• Ključ mora ostati vedno skrit
• Isti ključ lahko uporabimo za šifriranje več sporočil,
vendar ga moramo periodično zamenjati
 problem varne distribucije ključev!
20
System.Security.Cryptography.SymmetricAlgorithm
SymmetricAlgorithm
DES
DESCryptoServiceProvider
TripleDES
TripleDESCryptoServiceProvider
RC2
RC2CryptoServiceProvider
Rijndael
RijndaelManaged
21
Uporaba šifrirnega toka - šifriranje
1. Ustvarimo instanco ustreznega algoritma
RijndaelManaged myRijndael = new RijndaelManaged();
2. Ustvarimo objekt tipa encryptor
ICryptoTransform encryptor =_
myRijndael.CreateEncryptor(key, IV);
3. Ustvarimo tok (v našem primeru pomnilniški)
MemoryStream msEncrypt = new MemoryStream();
4. Pred gornji tok dodamo šifrirni tok
CryptoStream csEncrypt = new CryptoStream(
msEncrypt, encryptor, CryptoStreamMode.Write);
5. Pretvorba podatkov v byte array in zapis v kriptografski tok
byte[] toEncrypt = Encoding.UTF8.GetBytes(original);
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
22
DEMO
23
V razmislek:
Deep Crack (1999) – 56 bitni DES-ključ razbit v 56 urah
• 24 plošč s po 64 čipi na
vsaki
• 90 bilijonov ključev na
sekundo
• Načrtovalec: Paul Kocher
• Financiral: John Gilmore
•
•
•
•
72,057,594,037,927,936 možnih ključev (256)
Skupna cena < 250000 $US v letu 1998
Projekt sponzoriran s strani Electronic Frontier Foundation
(EFF)
Dokaz, da je NSA imela možnost razbijanja DES od vsega
začetka
24
Kolikšna je cena razbitja 56-bitnega DES ključa danes?
Cracker zgrajen v letu 2002 za 160
milijonov USD in je v uporabi slaba 3 leta:
• Cena HW na dan: 146000 USD
• Razbije en 72-bitni ključ ali 65536 56-bitnih
ključev vsak dan
• Čas potreben za razbitje enega 56-bitnega DES
ključa: 1.5 sekunde
• Cena razbitja enega 56 bitnega DES ključa:
2.5 $US
Vir:
http://www.strongsec.com/vpn_security.pdf
25
Varnost simetričnih ključev in Moorov zakon
•
•
•
•
•
•
•
56 bitov možno razbiti v 1 dnevu za
64 bitov možno razbiti v 1 dnevu za
72 bitov možno razbiti v 1 dnevu za
80 bitov možno razbiti v 1 dnevu za
88 bitov možno razbiti v 1 dnevu za
96 bitov možno razbiti v 1 dnevu za
104 bite možno razbiti v 1 dnevu za
40 milijonov $US v 1982
80 milijonov $US v 1991
160 milijonov $US v 2002
320 milijonov $US v 2011
680 milijonov $US v 2023
1400 milijonov $US v 2033
3000 milijonov $US v 2044
Vir: Arjen K. Lenstra in Eric R. Verheul, "Cryptographic Key Sizes", Oktober 1999
26
In kje je meja napadov z grobo silo?
• Termodinamične omejitve
• Drugi zakon termodinamike pravi, da je za vsako predstavitev informacije
potrebna določena energija
• Za spremembo enega bita je potrebna energija:
E = k * T (k-Boltzmanova konstanta = 1,38*10-23J/K)
• Če je temperatura vesolja 3.2 Kelvina, bi idealen računalnik deloval pri tej
temperaturi, torej za en bit porabi:
1,38*10-23 * 3.2 = 4,4 *10-23 J
• Naše sonce letno proizvede: 1,21*1034 J
v našem idealnem računalniku to zadostuje za 2,7 * 1056 sprememb
stanj, kar je dovolj, da spravimo 187-bitni števec skozi vsa njegova
stanja.
• Če bi vso energijo sonca zbirali 32 let (brez izgub) bi imeli dovolj energije
za 192-bitni števec
• Te številke seveda niso povezane s konkretno tehnologijo, so le
termodinamični maksimumi, ki povedo, da v doglednem času
ne bo mogoč napad z grobo silo na 256-bitne ključe
Vir: Bruce Schneier, Applied Cryptography
27
Asimetrični kriptosistem
(Public Key Encryption)
Vhod:
čistopis
Tajnopis
“Mlinarček
stoji ob
mlinu in se
jezi”
“SvxC1@7lV4bN:b
q/8Mp?$pF5aHjk5t
Z%”
Šifriranje
javni
Izhod:
čistopis
“Mlinarček
stoji ob
mlinu in se
jezi”
Odšifriranje
Različna
ključa
privatni
28
System.Security.Cryptography.AsymmetricAlgorithm
AsymmetricAlgorithm
DSA
DSACryptoServiceProvider
RSA
RSACryptoServiceProvider
32
Primer uporabe asimetrične šifre
//vzpostavim nov izvod RSA algoritma
RSACryptoServiceProvider rsa =
new RSACryptoServiceProvider();
// Včitam javni ključ (ki se že nahaja v spremenljivki)
rsa.ImportParameters(rsaParamsPublic);
// šifriranje besedila s prej včitanim javnim ključem
sifriranoSporocilo = rsa.Encrypt(bytArrCistopis, true);
// primer šifriranja ključa seje (AES)
// z javnim ključem prejemnika
RSAPKCS1KeyExchangeFormatter kefm =
new RSAPKCS1KeyExchangeFormatter(rsa);
byte [] ovojnica = kefm.CreateKeyExchange(myRijndael.Key);
33
Potek digitalnega podpisovanja
1. korak
2. korak
Hash
Podatki
Zgostitev (Hash)
Šifriranje
Digitalni podpis
Privatni
Digitalni podpis
3. korak
Javni
1. Izračunamo zgostitev (Hash) podatkov s pomočjo
podprtih zgoščevalnih algoritmov, npr.: MD2,
MD5, ali SHA-1.
2. Zgostitev (Hash) šifriramo s pošiljateljevim
privatnim ključem.
3. Dobljen podpis (in kopijo pošiljateljevega javnega
ključa) pripnemo na konec sporočila
35
Digitalni podpis
• Podpisovanje:
AsymmetricAlgorithm cipher = DSA.Create();
AsymmetricSignatureFormatter asf =
new DSASignatureFormatter(cipher);
SHA1 sha1 = SHA1.Create();
FileStream inStream =
new FileStream(filename, FileMode.Open);
byte[] sig =
asf.CreateSignature(sha1.ComputeHash(inStream));
36
Digitalni podpis
• Preverjanje:
AsymmetricAlgorithm cipher = DSA.Create();
// pubkey vsebuje javni ključ v XML obliki
cipher.FromXmlString(pubkey);
AsymmetricSignatureDeformatter asd =
new DSASignatureDeformatter(cipher);
SHA1 sha1 = SHA1.Create();
FileStream inStream3 =
new FileStream(filename, FileMode.Open);
byte[] hash = sha1.ComputeHash(inStream3);
if (asd.VerifySignature(hash,sig))
Console.WriteLine(“Podpis je pristen!");
37
3. Delo z X.509 certifikati
Certifikat
• Kako do testnega certifikata?
• S programom “MakeCert”, ki
je vključen tudi v .NET
framework SDK:
makecert
-sk "KOMPAS Xnet"
-n "CN=Ime Test,
O=KOMPAS Xnet"
kompasTest.CER
39
System.Security.Cryptography. X509Certificates
• X509Certificate – CLR implementacija
X509.v3 certifikata
• X509CertificateCollection – zbirka, ki
vsebuje objekte X509Certificate
40
Primer uporabe X509Certificate
using System;
using System.Security.Cryptography.X509Certificates;
public class X509 {
public static void Main() {
// Pot do datoteke s certifikatom.
string Certificate = "Certificate.cer";
// Nalaganje v X509Certificate objekt.
X509Certificate cert =
X509Certificate.CreateFromCertFile(Certificate);
// Dobi javni ključ.
byte[] results = cert.GetPublicKey();
// Izpiši vrednosti na konzolo
foreach(byte b in results) {
Console.Write(b);
}
}
}
41
Shrambe certifikatov
• Do certifikatov
dostopamo preko
CryptoAPi, ki loči
naslednje shrambe:
• »My« - certifikati
prijavljenega uporabnika
• »AddressBook« certifikati ostalih ljudi s
katerimi komuniciramo
• »Root« - korenski
certifikati izdajateljev (CA)
• »Trust« - certifikati, ki jim
zaupamo
42
Kako do certifikatov v shambah
• Trenutno samo 2 načina:
• Preko CryptoAPI
• Ali preko CAPICOM
• Whidbey bo prinesel podporo za uporabo
certifikatnih shramb
43
DEMO: Včitavanje certifikatov iz shramb
44
XML digitalni podpisi
Standardi za XML varnost
• Definiran je slovar XML za varnostne
informacije
• Skladen z ostalimi XML standardi
• Varnost lahko uveljavljamo nad:
• Celimi XML dokumenti
• Določenim XML elementom
• Vsebino XML elementa
• Varnost je vezana na vsebino (ne na transport
kot SSL)
• XML Security uporablja obstoječe kriptografske
metode
46
XML digitalni podpis
• Osnovne značilnosti:
• Podpišemo lahko skoraj karkoli v dokumentu
• Zaradi robustnosti lahko XML kanonikaliziramo
• Podpis se lahko nahaja v ločenem dokumentu
47
Zakaj kanonikalizacija?
• Serializacija v XML 1.0 ima ohlapna pravila
<oseba ime='Ana' starost='24'/>
<oseba
starost="24"
ime="Ana"/>
<oseba ime="Ana" starost=‘24’></oseba>
Ti dokumenti so po
standardu XML 1.0
med seboj enaki
• S stališča XML so vsi trije dokumenti enaki
• Ko jih zapišemo v podatkovni tok gre za različne vrednosti
• Torej so tudi njihovi podpisi različni
• Pred podpisovanjem se je potrebno dogovoriti o
ustrezni obliki (kanonikalizacija)
48
Osnovna pravila kanonikalizacije
• Canonical XML 1.0
• http://www.w3.org/TR/xml-c14n (RFC 3076)
• Osnovna pravila – na kratko:
• Znaki so kodirani po UTF-8
• CDATA odseki se zamenjajo z ustreznimi entitetnimi
oznakami (&gt;, &lt;, itd.)
• Prazni elementi se iz <oseba /> pretvorijo v
<oseba></oseba>
• Vrednosti atributov so zapisane v dvojnih narekovajih
• Atributi in imenski prostori se v okviru elementa uredijo po
abecednem vrstnem redu
• Presledki izven elementa se normalizirajo
• Itd.
<oseba ime="Ana" starost="24"><oseba>
49
Ločen podpis (Detached signature)
Vsebina
Certifikat
Dokumenta
-------
Vsebina
Dokumenta
Generiranje
podpisa
-------
----
----
-------------
------------Podpis
----
50
Vsebovani podpisi
51
Osnovni deli XMLDSIG
• Osnovo sestavljajo trije deli
• Podatki, ki jih podpisujemo
• Dejanski podpis
• Informacija o ključu, uporabljenem pri podpisu
Podatki, ki smo jih podpisali
podpis
Opcijske informacije
O ključu
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+<SignedInfo>
<SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
+<KeyInfo>
</Signature>
52
Kaj podpisujemo?
• SignedInfo vsebuje podatke o tem kaj
podpisujemo
• Vsebuje informacije o tem kako
• kanonikalizirati SignedInfo
• izračunati zgostitev elementa SignedInfo
• šifrirati dobljen rezultat, da dobimo digitalni podpis
• Sklic na elemente za podpis
Kako kanonikalizirati
SignedInfo
Kako izračunati zgostitev
in jo šifrirati
<SignedInfo>
<CanonicalizationMethod Algorithm="..."/>
<SignatureMethod Algorithm="..."/>
+<Reference>
</SignedInfo>
Sklic na podatke, ki jih
dejansko podpisujemo
53
Sklic na XML podatke za podpis
• Element “Reference” povezuje podpis s podatki, ki jih
želimo podpisati
• Vsebuje zgostitev (hash) vsake reference, ki jo želimo
podpisati
• Podpis povezuje zgostitev z vsebino podpisnikovega ključa
Oznaka fragmenta ali URL,
ki kaže na zunanji XML dokument
Uporabljena transformacija
Kako izračunati zgostitev
Zgostitvena
vrednost
<Reference URI="#toHocemPodpisati">
<Transforms>
<Transform Algorithm="..."/>
</Transforms>
<DigestMethod Algorithm="..."/>
<DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
</Reference>
54
System.Security.Cryptography.Xml
•
•
•
•
•
•
•
SignedXml
Signature
SignedInfo
Reference
TrasnformChain
Transform
KeyInfo
•
•
•
•
•
•
•
RSAKeyValue
DSAKeyValue
KeyInfoName
KeyInfoRetrievalMethod
KeyInfoX509Data
KeyInfoNode
DataObject
55
// ustvarim SignedXml
SignedXml signedXml = new SignedXml();
RSA key = RSA.Create();
signedXml.SigningKey = key;
// podatkovni vsebnik za podpisane podatke.
System.Security.Cryptography.Xml.DataObject dataObject =
new System.Security.Cryptography.Xml.DataObject();
dataObject.Data = document.ChildNodes;
dataObject.Id = "zaPodpis";
// Podatkovni objekt dodam k podpisu.
signedXml.AddObject(dataObject);
//Dodam referenco, da lahko vse zapakiram v en dokument.
Reference reference = new Reference();
reference.Uri = "#zaPodpis";
// Referenco dodam v sporočilo.
signedXml.AddReference(reference);
// Informacija o ključu.
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new RSAKeyValue(key));
signedXml.KeyInfo = keyInfo;
// Izračun podpisa.
signedXml.ComputeSignature();
// Get the XML representation of the signature.
XmlElement xmlSignature = signedXml.GetXml();
Primer XML podpisa
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="file://C:/UG/podatki.xml">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>F2QPI/XLMI8P/+0f8fZRBLkgeuY=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>ofp5xdyd0Jx94yjR7oZzOTQu3yOGGH7…</SignatureValue>
<KeyInfo>
<X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Certificate>MIIBxzCCAXGgAwIBAgIQ74MGuh…
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
57
DEMO: XML podpis
58
XML Encryption (XMLENC)
• Šifrirani elementi se zamenjajo z
elementom <EncryptedData>
• <EncryptedData> lahko vsebuje:
•
•
•
•
atribut Type – opisuje tip šifrirane informacije
Informacijo o uporabljenem algoritmu
Element <EncryptedKey>
<CipherData> referenco na tajnopis ali
tajnopis sam
• <EncryptedKey> - uporablja se za
šifriranje (skrivnih) simetričnih ključev
59
Primer šifriranja XML
<karticnaTransakcija>
<ime>Janez Novak</ime>
<placilo>
<kartica tip='Visa'>1234 4321 1234 4321</kartica>
<znesek valuta='SIT'>32540.00</znesek>
</placilo>
</ karticnaTransakcija >
<karticnaTransakcija>
<ime>Janez Novak</ime>
<xenc:EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element'>
<xenc:CipherData>
<xenc:CipherValue>CxBf9n...</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</ karticnaTransakcija >
60
Podpora v .NET frameworku
• V .NET frameworku 1.1:
• Obstaja podpora za XMLDSIG
• Ni podpore za XMLENC
• Whidbey prinaša:
• Razširitve v smeri X.509 (validacija certifikatov,
dostop do certifikatnih shramb, …)
• Podporo PKCS7 (CMS - Cryptographic Message
Syntax )
• Integracija z ostalimi tehnologijami (XMLENC, …)
61
Zaključek
• Za varovanje podatkov ne pišimo lastnih
“super” algoritmov – uporabimo kar ponuja
System.Security.Cryptography
• Nabor algoritmov, ki jih ponuja .NET je dovolj
bogat, uporaba pa enostavna
• Podpora škriplje pri delu z X.509 certifikati, kar
pa se bo izboljšalo z Whidbey-em
• Podpora za delo z XMLDSIG je dobra, manjka
pa podpora za XMLENC
62
Tečaji na to temo v KOMPAS Xnet
• 2806 (31. 1. 2005)
Microsoft Security Guidance Training for
Developers
• MOC 2300 (2.-6. 12. 2004)
Developing Security-Enhanced Web
Applications
• MOC 2840 (21.-25. 2. 2005)
Implementing Security for Applications
63
Vprašanja
64