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) ╖ 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 | |