05
Dnes se velmi progresivně sít’ Internet využívá jako platforma pro obchodní transakce. Bezpečnost se stává prvořadným problémem pro internetové aplikace. Některé aplikace jsou velmi citlivé k programovému vybavení, tj. obsahují v sobě ochranné mechanismy. Vysoký stav bezpečnosti může být dosáhnut koncepci ověření, která založená na smart kartách atransakčními protokoly. Typické bankovní aplikace jsou realizované na smart kartách, kde se používá symetrický algoritmus šifrování DES a asymetrický algoritmus RSA.
Smart karty jsou prostředky kzajištění požadované úrovně bezpečnosti. V posledních letech se technologie smart karet rapidně rozvíjela a dosáhla úrovně snadné integrace do veřejných infrastruktur. Dnes smart karty disponují objemem paměti až 64KB pro uložení klíčů, certifikátů, jiné informace, mají v sobě kryptografické koprocesory, které umožňují generovat digitální podpisy pomoci kryptografických algoritmů RSA a DSA (Digital Signature Algorithm) s délkou klíčů 1024 bitů. Mobilní komunikační systémy používají smart karty jako Subscriber Identification Modules (SIMs) pro identifikaci uživatele a poskytovatele služeb a ověření. Smart karty jsou též využívané jako ID karty (identity card) pro bankovnictví a kreditní karty pro zákazníky, zaměstnance firem a nebo občany.
Smart karty
Rozvoj čipových karet vdevadesátých letech minulého století podpořily bezpečnostní, ekonomické amarketingové důvody. Čipové (smart) karty jednoznačně zvyšují bezpečnost bezhotovostních plateb, takže se předpokládá další expanze jejich využití. Tvrzení o bezpečnosti čipových karet potvrzuje fakt, že se až doposud nevyskytl jediný padělek takové karty. Platby jsou navíc rychlejší, mohou probíhat v off-line.
Mezi velkého počtu druhů smart karet můžeme rozpoznat několik závažných skupin:
jednoduché smart karty – orientované na systém souborů bez veřejného klíče (simple file-system-oriented smart cards without public key capability),
pokročilé smart karty – orientované na systém souborů s veřejným klíčem (advanced file-system smart cards with public key capability),
Java karty,
Windows-powered smart karty,
MULTOS (multi-application operating system) smart karty.
Jednoduché smart karty obsahují systém souborů, ve kterém čtení a zápis souborů mohou být chráněny různorodými podmínkami přístupu. Tyto karty podporují jen symetrické kryptografické algoritmy jako například, DES nebo 3DES (trojnásobný DES). Příkladem smart karet této kategorie je IBM MFC 4.1, GeldKarte.
Pokročilé smart karty používají kryptografii sotevřeným klíčem. Zahrnují vsobě privátní klíče apřiřazené certifikáty. Klíčový pár se obvykle vytvoří v kartě, privátní klíč nikdy neopouští kartu. Je používán jen pro generování digitálního podpisu nebo pro dešifrování session keys (běžných klíčů) a dat v malém množství. Příklady karet této kategorie jsou IBM MFC 4.22, IBM MFC 4.3, Gemplus GPK4000**, Gemplus GPK8000**, Schlumberger, Giesecke & Devrient, etc.
Java karty dovolují vytvoření uživatelských příkazů na kartě. Programy, které realizují uživatelské příkazy jsou kartové aplety (applets). Jsou realizované s použitím podmnožin programovacího jazyka Java, spoléhající se na knihovny jazyka Java upravených pro použití v smart kartách. Příkladem Java karet je Gemplus GemXPresso** card.
Smart karty soperačním systémem „Windows for Smart Card“ dovolují realizaci uživatelských příkazů. Je možné realizovat příkazy, které používají funkce z interní kryptografické knihovny karty pro poskytnutí funkce generování digitálních podpisů, uložení a čtení certifikátů. Ten to typ smart karet byl vyvinut společnosti Microsoft.
Smart karty MULTOS poskytují rozhraní systému souborů a navíc vypracované prostředí pro uživatelské aplikace. Vyvíječi aplikací můžou vytvořit tyto uživatelské aplikace pomoci nového jazyka nazvaného MEL (MULTOS Executable Language). Jazyk Assembler může být použit s jazykem MEL, pro jazyky C a Java je poskytován překladač na jazyk MEL.
Technologie digitálního podpisu se opírá o kryptografické algoritmy s otevřeným klíčem (např. RSA anebo DSA). Digitální podpis představuje nejúčinnější prostředek pro zajištění integrity odesílaných dat (zadání transakcí ...) a bezpečné ověření jejich odesilatele. Použití digitálního podpisu je proto omezeno na případy, kdy je jako komunikační prostředek používán počítač (například Corporate Banking nebo Internet Banking).
Digitální podpis (digital signature) je nejčastěji výtah zprávy zašifrovaný něčím privátní klíčem. Digitální podpis první funkce, které jsou pro bezpečnost systému důležité:
Integrita – digitální podpis indikuje, zda nedošlo k modifikaci souboru nebo zprávy.
Autentizace – digitální podpis umožňuje matematicky ověřit, kdo zprávu podepsal.
Nepopiratelnost – autor nemůže tvrdit, že elektronický podpis příslušný k dokumentu nevytvořil. Důvodem je fakt, že pro vytvoření elektronického podpisu je potřeba privátní klíč, který je těsně svázán s veřejným klíčem, pomocí kterého dochází k matematickému ověření elektronického podpisu. Bez přístupu k privátnímu klíči nelze elektronický podpis vytvořit a ověření elektronického podpisu může být provedeno jen veřejným klíčem, který k němu patří..
Časové ukotvení – časové razítko, které prokazuje datum a čas podepsání dokumentu. Vydává jej důvěryhodná třetí strana, a protože je součástí elektronického podpisu, lze ji ověřit stejným postupem, jako elektronický podepsaný dokument.
Tvorba digitálního podpisu začíná výpočtem kryptografického kontrolního součtu z podepisovaných dat. Pak je na základě tajného klíče vypočten digitální podpis.
Podepsání a ověření elektronického podpisu
Podobně probíhá i ověření digitálního podpisu: Příjemce ověří, že digitální podpis vyhovuje veřejnému klíči odesilatele. Vypočte kryptografický kontrolní součet přijatých dat a porovná jej s kryptografickým kontrolním součtem, který obdržel od odesilatele. Pokud součty odpovídají, je ověřeno, že data nebyla po odeslání klientem změněna.
Příjemce má k dispozici pouze veřejný klíč odesilatele. Pouze veřejným klíčem odesilatele lze ověřit jeho digitální podpis. Tento klíč ovšem nemůže být použit pro vytvoření platného digitálního podpisu. Veřejný klíč může být znám komukoli.
Digitální podpis je velmi složitý, zašifrovaný číselný kód, který je pro každého uživatele ojedinělý obdobně jako otisk prstu, a který je právně ověřitelný. Podstata digitálního podpisu spočívá v"označkování" elektronického dokumentu, ze kterého je zřejmá nezpochybnitelná identita autora. K podepisování dokumentu slouží privátní, tajné klíče. Ke čtení dokumentu a ověření podpisů slouží veřejné klíče.
V současné době se pro vytváření digitálních podpisů nejčastěji používají kombinace algoritmu pro výtah zprávy MD5 a kryptografického mechanismu s veřejným klíčem RSA. Další možnost spočívá v použití algoritmu SHA (Secure Hash Function) a ElGamalova mechanismu veřejného klíče – tyto algoritmy dohromady vytvářejí algoritmus DSA (Digital Signature Algorithm).
Mezi nejmodernější metody zabezpečení komunikace po internetu patří v současné době bezesporu standard SSL (Secure Socket Layer), který definuje univerzální bezpečnostní protokol využívaný zejména pro zabezpečení komunikace s webovými servery, a tudíž i aplikacemi pro e-business a internetové bankovnictví. SSL technologie umožňuje dvě funkce: šifruje informační tok mezi klientem a serverem a vytváří základ pro vzájemnou klient/server autentizaci. SSL bylo vyvinuto firmou Netscape Communication v roce 1994. Je podporováno populárními klientskými aplikacemi (Netscape Navigator, Microsoft Internet Explorer), většinou serverových aplikací (Netscape, Microsoft, Apache, Oracle, NSCA a dalších) a certifikačními autoritami jako je ve světě VeriSign a u nás I. CA. Dřívější verze SSL 2.0 umožňovala pouze autentizaci serveru (pouze server potřeboval certifikát). Současná verze SSL 3.0 zajišťuje i autentizaci klienta (server i klient se musí prokázat certifikátem)
Předností využití standardu SSL je kromě vysoké úrovně bezpečnosti i nezávislost klienta na konkrétním počítači a jeho maximální komfort.
Základem pro zajištění bezpečného spojení pomocí SSL jsou tzv. certifikáty.
Certifikát obsahuje údaje o svém majiteli, jeho veřejný klíč a údaje o certifikační autoritě, která certifikát vydala, přičemž tyto údaje jsou digitálně podepsány. Každá komunikující strana si pomocí veřejného klíče ověří digitální podpis certifikátu a zjistí z něj údaje o protistraně. Předpokladem je důvěra certifikační autoritě, která certifikát vydala.
Pro šifrování jsou použity klíče, které jsou automaticky generovány na základě náhodně zvolených dat. Je přitom zabráněno tomu, aby tato data (a samozřejmě i samotné klíče) získala třetí strana, nebo je mohla předvídat.
Ověření identity serveru, se kterým klient komunikuje, zajišťuje automaticky internetový prohlížeč. Klient případně potvrdí, zda důvěřuje certifikační autoritě, která vydala certifikát protistrany.
SSL je založeno na vytvoření zabezpečeného kanálu mezi klientem (prohlížečem) a serverem.
Tento kanál garantuje důvěrnost každé zprávy, která se jím přenáší. SSL nešifruje žádné informace uložené na klientu ani na serveru. SSL zabezpečuje aplikační protokoly jako jsou HTTP, NNTP a Telnet. SSL umožňuje bezpečnou výměnu informací při inicializaci TCP/IP spojení, při kterém se klient a server domluví na konkrétní užité bezpečnosti a vykonají vzájemnou autentizaci certifikáty. Od tohoto bodu, pokud je šifrování aktivováno (počáteční stav), SSL šifruje a dešifruje proud bytů použitého aplikačního protokolu. To znamená, že všechny informace v HTTP požadavku i v HTTP odpovědi jsou plně zašifrované včetně URL, které klient požaduje, potvrzených obsahů formulářů19, přístupových autorizačních informací a všech dat vrácených serverem klientovi.
Protože HTTP+SSL (nebo „HTTPS“) a HTTP jsou dva různé protokoly, které typicky fungují na různých portech (443 a 80). Na stejném systému může běžet zabezpečený i nezabezpečený HTTP server zároveň. To znamená, že můžeme zpřístupnit některé informace všem uživatelům bez zabezpečení a jiné informace již určitým uživatelům užitím zabezpečení. Například v internetovém obchodu by měl být katalog produktů přístupný nezabezpečeně aobjednávání aplacení zabezpečeně.
SSL používá kryptografii s veřejným klíčem pro výměnu klíče sezení mezi klientem a serverem. Tento klíč je unikátně generován pro každé spojení mezi serverem a klientem a je použit pro šifrování HTTP transakcí (požadavku a odpovědi). Kryptografie s veřejným klíčem je užita jen pro vzájemné ověření akzašifrování klíče sezení. SSL používá šifrování sprivátním klíčem20 při šifrování další výměny informací. Každá transakce se provádí s různým klíčem sezení, takže i kdyby útočník zcizil jeden klíč, v další komunikaci mu to nijak nepomůže.
Nové webové klientské aplikace mají již zabudovány klíče některých certifikačních autorit jako je VeriSign, další je možno samozřejmě doinstalovat. Tyto zabudované klíče umožňují klientské aplikaci ověřit legitimitu kontrolou identity serveru a identity CA, která danému serveru certifikát vydala. SSL vyžaduje, aby server měl digitální certifikát vydaný důvěryhodnou certifikační autoritou. Tento verifikační proces probíhá transparentně. Pokud klient (prohlížeč neboli uživatel) nedůvěřuje certifikační autoritě (nemá nainstalován její certifikát), která vydala serveru certifikát, klientská aplikace vypíše varovné hlášení.
Přidání každé bezpečnostní vrstvy zpomaluje serverové procesy. SSL není výjimkou. Avšak v aplikacích, kde je nutná zvýšená bezpečnost, SSL vysoce převyšuje risk.