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

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

╚ßst 14 - CW 24/97

Integrita -- m∙₧ete se spolehnout na svß data?

Antonφn BeneÜ ml.


Jezdφte rßdi autem? Poj∩me se svΘzt. Tady je dlouhß rovinka, m∙₧ete to rozjet. Pozor, te∩ p°ijde levß zatßΦka. Zpomal, sakra. Nebrzdφ... P°i technickΘ prohlφdce vraku vaÜeho vozu bylo zjiÜt∞no, ₧e byl ·mysln∞ poÜkozen brzdov² systΘm. NenaÜtvalo vßs to. V tΘ dob∞ vßm ji₧ n∞kolik dnφ bylo vÜechno jedno.

ProΦ ten morbidnφ ·vod? ╪eΦ bude o integrit∞, nebo chcete-li celistvosti, Φi neporuÜenosti dat. Pokusφme se ukßzat, ₧e otßzka integrity dat rozhodn∞ nenφ Popelkou problematiky bezpeΦnosti. Prßv∞ naopak -- ve specifick²ch situacφch m∙₧e mφt cenu nejvyÜÜφ.

Vra¥me se nakrßtko k naÜemu ·vodnφmu p°φkladu. V okam₧iku, kdy jste nasedali do svΘho vozu, vypadal naprosto v po°ßdku. Stejn∞ jako vΦera Φi p°edevΦφrem. Zdßnliv∞ jeho integrita nebyla naruÜena. Nic nenasv∞dΦovalo tomu, ₧e Üikula s kleÜt∞mi p°eÜtφpl trubku ovlßdajφcφ brzdy, Φφm₧, p°elo₧eno do poΦφtaΦovΘ terminologie, poruÜil integritu vaÜeho vozu.

Mimo°ßdnß nebezpeΦnost podobn²ch Φin∙ spoΦφvß prßv∞ ve faktu, ₧e poÜkozenφ nenφ za b∞₧n²ch okolnostφ patrnΘ. Naopak, obyΦejn∞ b²vß obtφ₧n∞ detekovatelnΘ. Stejn∞ jako v p°φpad∞ poÜkozenφ dat, nejv∞tÜφ nebezpeΦφ Φi Ükodu zpravidla nezp∙sobφ vlastnφ poÜkozenφ, ale a₧ nßslednΘ (nev∞domΘ) pou₧φvßnφ poÜkozenΘ v∞ci. ╚asto je podobnΘ poÜkozenφ dat daleko nebezpeΦn∞jÜφ, ne₧ jejich ·plnß ztrßta. PoΦφtaΦe na zßklad∞ dat, kterß spravujφ, °φdφ nejen telekomunikaΦnφ centrßly, ale mnohdy ovlßdajφ i nebezpeΦnΘ technologickΘ procesy, Φi poskytujφ podklady pro rozhodovßnφ dispeΦer∙m leteckΘ dopravy. PoÜkozenφ dat m∙₧e zp∙sobit nejen znaΦnΘ materißlnφ Ükody, ale i velmi reßlnΘ ohro₧enφ desφtek lidsk²ch ₧ivot∙.

Ejhle, chyba

PoΦφtaΦe dat∙m, kterß zpracovßvajφ, zpravidla nerozum∞jφ a nedokß₧φ je interpretovat. Nemohou tedy "pohledem" urΦit, ₧e je n∞co v nepo°ßdku. Namφsto toho je nutnΘ stanovit jednoduchß pravidla, kterß data musφ spl≥ovat. PoΦφtaΦ potom mechanicky ov∞°uje platnost pravidel, ani₧ by musel znßt sΘmantiku dat.

PoruÜenφ integrity dat m∙₧eme rozd∞lit do n∞kolika kategoriφ:

-- NejmΘn∞ nebezpeΦnΘ jsou chyby vzniklΘ na zßklad∞ disfunkce techniky. Sem °adφme zejmΘna komunikaΦnφ chyby p°i p°enosu dat, chyby p°i Φtenφ zßznamov²ch mΘdiφ, chyby zp∙sobenΘ nedostatky program∙.

-- Druhou kategoriφ jsou chyby vzniklΘ v d∙sledku ne·mysln²ch omyl∙ lidφ. P°edevÜφm jde o chybn∞ zadanΘ vstupnφ ·daje, p°eklepy apod., ale takΘ o nesprßvnou manipulaci s daty.

-- NejnebezpeΦn∞jÜφ a nejh∙°e detekovatelnΘ jsou chyby zp∙sobenΘ cφlev∞domou Φinnostφ ·toΦnφk∙ se zßm∞rem poÜkodit data.

èk∙dci

Podφvejme se, jak dochßzφ k poÜkozenφ dat. Data jsou nejzraniteln∞jÜφ v dob∞, kdy jsou p°enßÜena mezi jednotliv²mi poΦφtaΦi. To ·toΦnφk samoz°ejm∞ vφ a proto na nßs mß p°ipravenu °adu metod poÜkozujφcφch komunikaci. M∙₧e se sna₧it jednoduÜe zachycovat zprßvy a po n∞jakΘm Φase je op∞tovn∞ posφlat na mφsto urΦenφ. Pokud banka poznß, ₧e dan² p°φkaz k platb∞ ji₧ provedla, nemusφ b²t nßsledky tragickΘ. DalÜφ mo₧nostφ je pozm∞≥ovßnφ po°adφ zprßv s p°enßÜen²mi daty. ┌toΦnφk takΘ m∙₧e nßhodn∞ pozm∞≥ovat data a Φekat, kdy bezpeΦnostnφ mechanismy nezjistφ zßsah. P°φpadn∞ m∙₧e zkouÜet ze zachycen²ch zprßv sklßdat zprßvy novΘ, nebo vklßdat do komunikace zprßvy vlastnφ.

Uv∞domme si, ₧e p°enosy probφhajφ po linkßch, kterΘ zpravidla nemßme pod kontrolou. Musφme je sdφlet s dalÜφmi u₧ivateli. Rovn∞₧ nenφ p°φliÜ t∞₧kΘ se na n∞ napojit a veÜkerou komunikaci odposlouchßvat. To vÜe zp∙sobuje, zejmΘna mezi vn∞jÜφmi ·toΦnφky, znaΦnou popularitu ·tok∙ proti komunikaci.

Pokud mß ·toΦnφk p°φstup k dat∙m p°φmo uvnit° systΘmu (a¥ ji₧ proto, ₧e je Üikovn², nebo proto, ₧e je nßÜ zam∞stnanec), m∙₧e pou₧φvat daleko p°φmoΦa°ejÜφ a ·Φinn∞jÜφ metody. Oprßvn∞n² u₧ivatel musφ b²t schopen s daty manipulovat -- je to p°edm∞tem jeho prßce. Pokud se vÜak rozhodne zßm∞rn∞ je pozm∞≥ovat, je t∞₧kΘ mu v tom brßnit. ╚asto znß pou₧itΘ bezpeΦnostnφ mechanismy a dokß₧e je tedy obejφt. Vnit°nφ ·toΦnφk mß navφc n∞kdy mo₧nost upravit programy, kterΘ data spravujφ. Dokonce m∙₧e, pokud je dost

schopn², bezpeΦnostnφ mechanismus zcela odstavit.

Ochrana nejen pro pßny

Jak se tedy brßnit? Kupodivu nejsnazÜφ je brßnit se proti chybßm techniky. PoΦßtek bezpeΦnostnφch mechanism∙ se datuje do dob ·svitu poΦφtaΦ∙.

NejjednoduÜÜφ metodou jsou paritnφ bity. K n∞kolika (nejΦast∞ji osmi) bit∙m u₧iteΦnΘ informace p°idßme jeÜt∞ jeden -- paritnφ -- navφc. Hodnota tohoto bitu je potom nastavovßna tak, aby poΦet vÜech jedniΦek ve skupin∞ byl sud² (sudß parita), nebo lich² (lichß parita). V₧dy, kdy₧ tato data Φteme, zkoumßme, zda je poΦet jedniΦkov²ch bit∙ sprßvn². Metoda dokß₧e odhalit lich² poΦet chyb.

Trochu lepÜφm mechanismem jsou kontrolnφ souΦty (checksums). Celß data si rozd∞lφme na bloky stanovenΘ dΘlky (n∞kolik bajt∙). SpoΦφtßme logickou funkci XOR prvnφho a druhΘho bloku, na v²sledek operace a t°etφ blok aplikujeme op∞t funkci XOR atd. To, co zφskßme, je hledan² kontrolnφ souΦet, kter² p°ipojφme na konec p°enßÜenΘho bloku dat. Chceme-li ov∞°it integritu dat, provedeme obdobnou proceduru. Pokud je v²sledkem blok ze sam²ch nul (uva₧te, ₧e pracujeme s daty, ke kter²m je p°idßn kontrolnφ souΦet), jsou data v po°ßdku.

JeÜt∞ lepÜφ zabezpeΦenφ poskytuje specißlnφ t°φda mechanism∙ naz²van²ch cyklickΘ redundantnφ k≤dy, nebo krßtce CRC. Binßrnφ reprezentaci dat lze chßpat mimo jinΘ jako polynom nad t∞lesem charakteristiky 2. (JednotlivΘ bity jsou koeficienty polynomu.) Pou₧it² CRC k≤d je sßm zadßn sv²m charakteristick²m polynomem (op∞t °et∞zec jedniΦek a nul). P°i v²poΦtu v²slednΘho k≤du vyd∞lφme polynom, kter² odpovφdß zabezpeΦovan²m dat∙m, charakteristick²m polynomem CRC k≤du. Zbytek po d∞lenφ je hledan² zabezpeΦovacφ k≤d.

UvedenΘ metody umo₧≥ujφ zjistit, ₧e doÜlo k poÜkozenφ dat. SystΘm tak mß p°φle₧itost na vzniklou situaci reagovat. Pokud pou₧ijeme "chytrΘ" k≤dovßnφ znak∙ p°enßÜenΘ abecedy, m∙₧eme nejen zjiÜ¥ovat, ₧e k chyb∞ doÜlo, ale n∞kterΘ z chyb tΘ₧ opravit. K≤d∙m, kterΘ toto umo₧≥ujφ, °φkßme samoopravnΘ k≤dy.

Definujme vzdßlenost dvou slov jako poΦet mφst, na kter²ch se od sebe liÜφ. (slova tßta a mßma majφ vzdßlenost 2) Samoopravn² k≤d pou₧φvß k≤dovß slova v∞tÜφ dΘlky, ne₧ je nezbytn∞ nutnΘ pro p°enos u₧iteΦnΘ informace. Dφky tomu mohou jednotlivß slova k≤du b²t od sebe dostateΦn∞ vzdßlenß. Pokud dojde k chyb∞, k≤d urΦφ k≤dovΘ slovo, kterΘ mß nejmenÜφ vzdßlenost od p°ijatΘho slova. Proto samoopravn² k≤d umo₧≥uje opravovat v²skyt n/2 chyb v p°enßÜenΘm slov∞, kde n je minimßlnφ vzdßlenost dvou k≤dov²ch slov.

Kdy₧ to nejde po dobrΘm

Dosud uvedenΘ metody jsou efektivnφ jen v p°φpad∞, ₧e pot°ebujeme data zajistit proti chybßm techniky. Jejich slabinou je, ₧e jsou snadno napodobitelnΘ. Nehodφ se tedy pro ochranu dat p°ed ·mysln²mi ·toky. Zde musφme k zajiÜt∞nφ integrity obsahu zprßv pou₧φt metody, kterΘ majφ vhodnΘ kryptografickΘ vlastnosti. ZejmΘna je d∙le₧itΘ, aby v²slednß kontrolnφ hodnota zßvisela co nejkomplikovan∞jÜφm zp∙sobem na ka₧dΘm bitu zajiÜ¥ovanΘ zprßvy. Pak nenφ mo₧nΘ pozm∞≥ovat obsah jednotliv²ch Φßstφ. Rovn∞₧ chceme, aby nebylo mo₧nΘ zprßvu upravit a spoΦφtat novou kontrolnφ hodnotu upravenΘ zprßvy.

D∙le₧itou roli hrajφ tzv. kryptografickΘ haÜovacφ funkce. Nebudeme se pouÜt∞t do rozboru matematickΘho pozadφ t∞chto funkcφ. PodstatnΘ je, ₧e tyto funkce jsou jednosm∞rnΘ, tzn., ₧e pro dan² obraz je obtφ₧nΘ najφt odpovφdajφcφ vzor. MnohΘ z nich jsou navφc odolnΘ v∙Φi kolizφm -- znßme-li dvojici vzor-obraz, je obtφ₧nΘ najφt dalÜφ vzor se stejn²m obrazem.

Pokud v²poΦet hodnoty funkce zßvisφ na klφΦi, hovo°φme o autentizaΦnφm k≤du zprßvy (MAC - Message Authentication Code). V opaΦnΘm p°φpad∞ se jednß o k≤d pro detekci modifikacφ (MDC - Modification Detection Code).

V²sledkem funkcφ je °et∞zec (haÜovacφ hodnota) konstantnφ dΘlky. Pokud jsme pou₧ili funkci MAC, tento °et∞zec p°ipojφme za konec p∙vodnφ zprßvy a jsme hotovi. V²sledek funkce MAC zßvisφ na tajnΘm klφΦi. ┌toΦnφk tedy nem∙₧e spoΦφtat haÜovacφ hodnotu pozm∞n∞nΘ zprßvy. Dφky vlastnostem t∞chto haÜovacφch funkcφ rovn∞₧ nem∙₧e postupovat tak, ₧e by k danΘmu "haÜk≤du" hledal dalÜφ odpovφdajφcφ zprßvu.

Pokud jsme pou₧ili funkci MDC, zφskali jsme haÜovacφ hodnotu, kterß dob°e zßvisφ na celΘm obsahu zprßvy. Je vÜak kdykoliv (a hlavn∞ k²mkoli) znovu spoΦitatelnß. Proto ji nem∙₧eme pou₧φt p°φmo jako v p°φpad∞ funkcφ MAC. Namφsto toho ji elektronicky podepφÜeme pomocφ vhodnΘho Üifrovacφho algoritmu s ve°ejn²m klφΦem (nap°. RSA) a ke zprßv∞ p°ipojφme a₧ tento elektronick² podpis. Tak jsme po°φdili kontrolnφ souΦet, kter² je dokonce ve°ejn∞ ov∞°iteln². Dφky vlastnostem Üifrovacφho algoritmu jej ale dokß₧e vyrobit pouze odesφlatel zprßvy. Z d∙vod∙ stejn²ch jako u k≤d∙ MAC nelze najφt ani jinou zprßvu, kterß by m∞la stejn² kontrolnφ souΦet.

Po°ßdek v po°adφ

Vyzbrojeni znalostmi o vytvß°enφ kryptografick²ch kontrolnφch souΦt∙ m∙₧eme rovnou vy°eÜit problematiku ochrany proti pozm∞≥ovßnφ po°adφ a opakovanΘmu zasφlßnφ starÜφch zprßv. Jednou mo₧nostφ je Φφslovßnφ zprßv. SystΘm nesmφ p°ijmout zprßvu, kterß mß ni₧Üφ Φφslo, ne₧ poslednφ p°ijatß zprßva. Je samoz°ejm∞ nutnΘ, aby kryptografick² kontrolnφ souΦet zßvisel rovn∞₧ na Φφsle zprßvy.

Pokud p°enßÜenΘ zprßvy rovn∞₧ Üifrujeme vhodn²m algoritmem, m∙₧eme pou₧φt tzv. ofsetovßnφ klφΦ∙. ╚φslo odpovφdajφcφ po°adφ zprßvy potom nep°ipojujeme ke zprßv∞, ale p°iΦteme jej ke klφΦi. Takto upraven²m klφΦem potom zprßvu zaÜifrujeme. Pro pou₧itφ ofsetovan²ch klφΦ∙ platφ stejnß pravidla, jako v p°φpad∞ oΦφslovan²ch zprßv.

Pßtß kolona?

Zb²vß nßm vy°eÜit problΘm, jak chrßnit integritu dat proti autorizovan²m u₧ivatel∙m. Proti chybn²m zadßnφm dat se lze brßnit zavedenφm formßlnφch kontrol zadßvan²ch informacφ. M∙₧eme kontrolovat, zda vklßdanß hodnota je pravd∞podobnß (pracovnφk pracoval mΘn∞ ne₧ 20 hodin za den), zda hodnota je syntakticky sprßvnß (datum obsahuje dv∞ teΦky) atd. V ·vahu p°ipadß tΘ₧ opakovanΘ zadßvßnφ t²ch₧ dat r∙zn²mi pracovnφky. P°ed realizacφ vybranΘho okruhu operacφ m∙₧e systΘm po₧adovat explicitnφ potvrzenφ pokynu k provedenφ operace. Tak zamezφme nßhodnΘmu poÜkozenφ dat.

Proti ·myslnΘmu poÜkozenφ dat ze strany autorizovan²ch u₧ivatel∙ ochrana v podstat∞ neexistuje. Je vÜak vhodnΘ, aby systΘm vedl podrobnΘ zßznamy o tom, kdo, kdy a jakΘ zm∞ny spravovan²ch dat provßd∞l. To sice nezabrßnφ poÜkozenφ dat, ani p°φliÜ neusnadnφ detekci poÜkozenφ, ale pokud zjistφme, ₧e takovß situace nastala, alespo≥ m∙₧eme podniknout kroky zamezujφcφ jejφmu opakovßnφ.

Trocha teorie zßv∞rem

Formßln∞ se otßzkami integrity zab²vß Bib∙v bezpeΦnostnφ model. Budeme se mu podrobn∞ v∞novat v Φlßnku o vφce·rov≥ovΘ bezpeΦnosti. Zde se krßtce zmφnφme o Clark-Wilsonov∞ modelu. Model p°edpoklßdß, ₧e veÜkerΘ manipulace s daty jsou provßd∞ny v²hradn∞ prost°ednictvφm spolehliv²ch transformaΦnφch procedur. Pomocφ procedur pro verifikaci integrity se ov∞°φ, ₧e vÜechna data jsou v po°ßdku a nßsledn∞ aplikacφ transformaΦnφch procedur systΘm p°echßzφ z jednoho konzistentnφho stavu do druhΘho.

Certifikaci transformaΦnφch procedur provßdφ administrßtor. Ka₧d² u₧ivatel mß specifikovßn okruh procedur, kterΘ smφ pou₧φvat. Cφlem je docφlit takovΘho p°i°azenφ procedur u₧ivatel∙m, aby ₧ßdn² u₧ivatel nem∞l k dispozici vÜechny procedury nutnΘ k provedenφ celΘ operace. Nap°φklad pokladnφ m∙₧e provΘst v²platu pen∞z, ale nem∙₧e vydat povolenφ k provedenφ tΘto platby, kterΘ vÜak v korektnφ transakci musφ vlastnφ platb∞ p°edchßzet.

Doufßme, ₧e se nßm poda°ilo vßs p°esv∞dΦit, ₧e problematika integrity dat je nejen d∙le₧itou, ale i docela zajφmavou oblastφ bezpeΦnosti. V∞°φme, ₧e nßÜ v²klad p°φliÜ nenaruÜil integritu vaÜφ osobnosti.

Serißl je rovn∞₧ dostupn² na www.idg.cz/computerworld/bvsk/


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