Kryptografická rozhraní

Služby kryptografie jsou využívány ve stále více aplikacích. Jsou potřebné např. pro zajištění služeb, jako jsou...


Služby kryptografie jsou využívány ve stále více aplikacích. Jsou potřebné
např. pro zajištění služeb, jako jsou důvěrnost a integrita zpracovávaných dat,
autentizace, neodmítnutelnost atd. S tím vyvstává otázka jak dosáhnout
optimálního propojení kódu aplikace s moduly implementujícími jednotlivé
kryptografické funkce?
Implementace kryptografických funkcí může být integrována přímo do kódu
aplikace. To ovšem s sebou přináší určité nevýhody: Změna kteréhokoli člena
dvojice aplikace kryptografické moduly znamená zásah do celého systému. Navíc
ne každý vývojář softwaru je odborníkem na kryptografii.
Proto se odděluje aplikace a její vývoj od implementace kryptografických
mechanizmů, které používá, a hledají se cesty jak standardizovat volání
bezpečnostních služeb v aplikacích. Za tímto účelem byla vyvinuta
kryptografická rozhraní, kterými se budeme zabývat.
Stejně jako se liší požadavky různých aplikací na zajištění bezpečnosti a
úroveň přístupu ke kryptografickým funkcím, liší se i jednotlivá kryptografická
rozhraní. Aplikace využívající služby kryptografie můžeme rozdělit do dvou
skupin:
1. Aplikace bez povědomí o kryptografii (cryptographically unaware): Jedná se o
aplikace, které potřebují pouze základní omezenou množinu volání
kryptografického rozhraní pro ochranu dat. Typickým příkladem je textový
editor, poštovní agent.
Do této kategorie patří většina aplikací.
2. Aplikace s povědomím o kryptografii (cryptographically aware): tyto
potřebují množinu volání, která jim umožní přístup ke kryptografickým modulům s
možným maximem jejich kontroly. Příkladem takové aplikace může být server
certifikační autority.
Izolace kódu aplikace od kryptografických služeb přináší výhody jak při vývoji
aplikací, tak při jejich následném nasazení a údržbě. Jsou to především
následující:
lModularita softwaru: Oddělení rozdílně zaměřených částí systému (tato
vlastnost je společná pro všechna programová rozhraní).
lNezávislost na použitém bezpečnostním mechanizmu: Použitím různým
kryptografických modulů, implementujících různé kryptografické funkce, může
stejná aplikace využívat kryptografické funkce o různé síle požadované v
závislosti na prostředí, ve kterém je nasazena.
lVývojáři nejsou zatěžováni detaily kryptografických funkcí aplikace neobsahuje
vlastní implementaci kryptografických algoritmů.
Aplikace, které nemají implementovány kryptografické funkce, ale využívají
volání kryptografického rozhraní, se mohou vyhnout exportním omezením na vývoz
silné kryptografie. V exportní verzi aplikace může být kryptografický modul
nahrazen modulem podporujícím pouze kryptografické funkce o síle, která
nepodléhá exportním omezením. lOddělení vývoje aplikací od vývoje
bezpečnostních mechanizmů nižších vrstev vývojáři aplikací mohou při použití
standardních rozhraní používat kryptografické moduly dodané třetí stranou. A
naopak je možné vyvíjet a nabízet samostatné kryptografické moduly
implementující požadované algoritmy.
Kryptografická rozhraní
existuje celá řada kryptografických rozhraní, které je možné rozdělit v
závislosti na jejich určení podle klasifikace použité v projektu ICE
(http://www.tis. com/research/crypto/crypt_ice.html) sponzorovaném organizací
DARPA (viz obr. 1). Rozhraní můžeme rozdělit do tří skupin:
SSAPI (Security Service APIs) jsou rozhraní pracující na vysoké úrovni
(abstrakce). Jsou určená pro přístup k bezpečnostním službám, jako jsou
autentizace, integrita, důvěrnost, řízení přístupu, nepopíratelnost, které
poskytují bezpečnostní mechanizmy. Mezi SSAPI je možné zařadit:
-Generic Security Services API (GSS-API)
-Microsoft Security Provider Interface (SSPI)
-vyšší funkce rozhraní Microsoft CryptoAPI 2.0
-Common Secutity Services Manager API (CSSM API)
SSSAPI (Security Support Service APIs) určené pro pomocné bezpečnostní funkce.
Zajišťují služby jako management certifikátů a klíčů, autentizace, depozitování
a obnova klíčů atd.
CAPI (Cryptographic APIs): rozhraní která jsou určená pro přístup ke
kryptografickým modulům. V kryptografických modulech jsou implementovány
sa-motné kryptografické algoritmy (DES, MD5,...). Kryptografické moduly mohou
být jak softwarové, tak hardwarové. Z existujících rozhraní sem patří:
RSA Labs Crypto Token Interface (Cryptoki; PKCS #11)
Microsoft CryptoAPI 1.0
Common Security Services Manager API (CSSM)
Doporučená rozhraní
Na míře kryptografického povědomí aplikace závisí i rozhodnutí, jaké rozhraní
při implementaci použít. NSA vytvořila tým, který vydává doporučení pro výběr a
použití kryptografických rozhraní (SSAPI/CAPI). Zatím poslední (celkem již
třetí) doporučení vyšlo v červenci 1997
(http://www.tis.com/research/crypto/crypt_ice.html).
Je v něm doporučeno použití následujících rozhraní:
lGeneric Security Services API & Independent Data Unit Protection GSS-API: GSS
API vytvořila v roce 1993 pracovní skupinu CAT (Common Authentication
Technology) IETF (Internet Engeneering Task Force). Rozhraní bylo popsáno v RFC
1508. Původně bylo určeno pro ochranu spojově orientované komunikace a později
přibylo rozšíření IDUP pro ochranu dat v aplikacích typu "ulož a pošli".
lCommon Security Services Manager API: je jádrem CDSA (Common Data Security
Architecture) firmy Intel. CSSM-API nabízí služby vyšší úrovně, jako jsou
management klíčů nebo obnova klíčů. Vlastní CAPI rozhraní je navržen na nízké
úrovni podobně jako Cryptoki.
lCrypto API vyvinula firma Microsoft. Původní verze 1.0 podporovala šifrování a
digitální podpis. Ve verzi 2.0 přibyly autentizace a management certifikátů.
Rozhraní je součástí operačního systému Windows NT. Slouží pro přístup ke
kryptografickým modulům (v terminologii firmy Microsoft zvaným Cryptographic
Service Provider CSP). Je určeno pro aplikace, u kterých se předpokládá
povědomí o kryptografii.
lPKCS #11 Cryptoki: vyvinula firma RSA Labs. Je součástí rodiny standardů
Public Key Cryptography Standards (PKCS). Je určeno pro přístup k šifrovacím
tokenům (vhodné pro autentizaci uživatele). Vyžaduje vysokou úroveň povědomí o
kryptografii.
Na obr. 2 jsou doporučená rozhraní uspořádána podle míry kryptografického
povědomí, které se očekává od aplikace využívající rozhraní.
Čím výše je rozhraní v obrázku zakresleno, tím vyšší úroveň abstrakce a nižší
znalost kryptografického zařízení je vyžadována od aplikace, která ho používá.
Rozhraní je obecnější a využívá omezenou množinu volání.
Jeho nevýhodou je omezení možnosti ovlivnění práce kryptografického zařízení.
Je vhodné pro běžné aplikace (aplikace bez povědomí o kryptografii), které
vyžadují přístup pouze k omezené množině základních kryptografických funkcí.
Naopak níže položené rozhraní vyžaduje od aplikace (a jejího vývojáře) detailní
znalost problematiky kryptografie a použitých zařízení. Tím se ovšem také
zvyšuje nebezpečí, že dojde k ohrožení bezpečnosti systému způsobenému chybou
při vývoji aplikace. Na druhou stranu tato rozhraní nabízejí větší možnosti
práce s kryptografickými funkcemi.
GSS/IDUP poskytuje nejbezpečnější rozhraní, ale má také nejvíce omezené
možnosti ovládání kryptografie. CSSM-API, CryptoAPI a Cryptoki poskytují
aplikacím více možností, ale je u nich vyšší riziko narušení bezpečnosti
nesprávným použití rozhraní.
Protože u většiny aplikací není potřebná vysoká úroveň kryptografického
povědomí, doporučení NSA radí vývojářům aplikací používat GSS/IDUP. CSSM-API,
CryptoAPI a Cryptoki by se měli používat pouze při vývoji aplikací vyžadujících
vysokou úroveň kryptografického povědomí. Mimo to je doporučeno jejich použití
pro implementaci nižších
mechanizmů obecného rozhraní GSS/IDUP a jako rozhraní kryptografických modulů
(viz obr. 3).
Neustálý vývoj aplikací a stá-le probíhající prudké změny
v oblasti kryptografie vyžadují nezbytnost použití standardních
kryptografických rozhraní, zvláště u velkých projektů s předpokládanou dlouhou
dobou životnosti. Jejich absence či podcenění při vývoji se může po několika
letech provozu, například při změně požadavků na bezpečnost, velmi vymstít.
Dobré kryptografické rozhraní je stejně potřebné jako dobré pneumatiky
automobil sice pojede i bez nich, případně i s pneumatikami podřadné kvality,
ale po pár(set) metrech asi poznáte, že to jaksi není ono.
8 1545 / ram









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.