COMPUTERWORLD
Specializovan² t²denφk o v²poΦetnφ technice

Serißl
o bezpeΦnosti
a informaΦnφm soukromφ

╚ßst 53 - CW 29/98

Kryptografickß rozhranφ

Radim PeÜa

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 aplikaci 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): 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.

Na tom, do kterΘ z uveden²ch skupin aplikace pat°φ, zßvisφ rozhodnutφ jakΘ rozhranφ p°i implementaci pou₧φt.

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φ:

Modularita softwaru: Odd∞lenφ rozdφln∞ zam∞°en²ch Φßstφ systΘmu (tato vlastnost je spoleΦnß pro vÜechna programovß rozhranφ).

Nezß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.

V²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. (Tento zp∙sob obchßzenφ exportnφch omezenφ z USA se sice d°φve takΘ zakazoval Φi znep°φjem≥oval, v souΦasnΘ dob∞ s tφm u₧ neb²vajφ problΘmy, ale najisto s bezproblΘmov²m exportem poΦφtat nelze.)

Odd∞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φ

Kryptografick²ch rozhranφ existuje celß °ada, m∙₧eme si je rozd∞lit v zßvislosti na jejich urΦenφ podle klasifikace pou₧itΘ v projektu ICE (International Cryptography Experiment) (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 (Kerberos, ...). 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φ urΦenß pro p°φstup ke kryptografick²m modul∙m. V kryptografick²ch modulech jsou implementovßny samotnΘ 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φ:

Generic Security Services API & Independent Data Unit Protection GSS-API: GSS API vytvo°ila v roce 1993 pracovnφ skupina CAT (Common Authentication Technology) IETF (Internet Engeneering Task Force). Bylo popsßno v RFC 1508. P∙vodn∞ bylo urΦeno pro ochranu spojov∞ orientovanΘ komunikace. Pozd∞ji p°ibylo rozÜφ°enφ IDUP pro ochranu dat v aplikacφch typu "ulo₧ a poÜli" a v lednu 1997 byla v RFC 2078 publikovßno GSS-API verze 2.

Common 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φ (SPI -- Service Provider Interface) je navr₧en na nφzkΘ ·rovni podobn∞ jako Cryptoki.

Crypto 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.

PKCS #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Üφ, 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.


| COMPUTERWORLD - serißl o bezpeΦnosti | COMPUTERWORLD | IDG CZ homepage |