var BrothersNames = new Array("Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (1.d_25EDl)","Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (2.d_25EDl)","SQL v praxi aneb bezpeΦnostnφ oddech","");
var BrothersIDs = new Array("140","142","146","");
//=====INFO======
ItemName='Article142';
InIFrame='No';
TableNum=2;
ItemID=142;
ArticleType='1';
Action='articles'
ItemTitle='Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (2.d_25EDl)';
ItemComment='Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (2.d_25EDl)';
ArticleHead('Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (2.d_25EDl)', 'Michal Till', 'Michal.Till_40Seznam.cz', '17.2.2002', '21:59:16', '╚lßnek');
Intro('P°inΘÜφme vßm druhou Φßst miniserißlu o databßzφch. Dnes bychom se detailn∞ji podφvali na tzv. problΘm odvoditelnosti dat, kter² nastßvß p°i ΦßsteΦnΘm "zahalenφ" databßze, na otßzku redundance dat a na dalÜφ aspekty bezpeΦnosti.');
</SCRIPT><A Name="Title1"><FONT Size=3><DIV Class=Headline>D∙v∞ryhodnΘ informace v databßzi</DIV></font>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Obsah jakkoliv citliv²ch (senzitivnφch) dat v databßzi nenφ pochopiteln∞ nic nep°irozenΘho, stejn∞ tak d∙vod∙ proΦ to Φi ono chrßnit m∙₧e b²t n∞kolik. M∙₧e jφt o ·daj utajovan² jaksi z principu (typicky konkrΘtnφ plat), o ·daj utajovan² z d∙vodu ochrany t°etφ strany (typicky zdoj informace) nebo o ·daj kter² sßm o sob∞ nenφ nebezpeΦn², ovÜem jeho utajenφ je vßzßno na n∞kterß ji₧ zve°ejn∞nΘ skuteΦnosti. Jak jsem ji₧ zmi≥oval, mo₧nost co "nejjemn∞jÜφho" nastavenφ p°φstupov²ch prßv je v₧dy ₧ßdanß vlastnost.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Naprosto nejv∞tÜφ bezpeΦnostnφ problΘmy vznikajφ v situaci, kdy senzitivnφ jsou pouze n∞kterΘ informace. SystΘm toti₧ musφ volit mezi dv∞ma po₧adavky, kterß jdou p°φmo proti sob∞ : na jednΘ stran∞ mßme bezpeΦnost, kdy je pot°eba n∞kterΘ dotazy striktn∞ odmφtnout. Jak ji₧ bylo a jeÜt∞ bude zmφn∞no, n∞kdy je mo₧nΘ se Üikovn∞ zeptat na n∞kolik jin²ch v∞cφ, p°iΦem₧ v odpov∞di najdu i ·daj, kter² je systΘmem pova₧ovan² za tajn² a p°φm² dotaz na n∞j by skonΦil odmφtnutφm. Na druhΘ stran∞ je zde po₧adavek na co nejv∞tÜφ dostupnost ve°ejn²ch dat, ovÜem p°i v∞tÜφm "tlaku" na zmi≥ovanΘ nep°φmΘ dotazy v sφtu nutn∞ uvφzne spousta dotaz∙ nevinn²ch.
VÜechny sloupce krom∞ pohlavφ a odd∞lenφ pova₧ujme za tajnΘ (vΦetn∞ jmΘna), na druhou stranu povolme Φtenφ sumßrnφch hodnot jako je poΦet, souΦet, pr∙m∞r a medißn (tajn²ch numerick²ch sloupc∙). Pokud se n∞komu zdß tento p°φklad pon∞kud primitivnφ, mß pravdu jen z Φßsti. Kouzlo nep°φm²ch dotaz∙ pravda daleko vφce vynikne p°i demonstraci na podstatn∞ delÜφ tabulce, na to ovÜem nenφ prostor a je to pro demonstraΦnφ ·Φely zbyteΦnΘ. JeÜt∞ lepÜφch v²sledk∙ m∙₧e ·toΦnφk dosßhnout p°i urΦitΘm stupni "socißlnφho in₧en²rstvφ", tedy pokud mß p°ibli₧n∞ rozhled o podmφnkßch ve spoleΦnosti (viz n∞kterΘ dotazy).
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Tak nap°φklad podφvejme se na nßsledujφcφ dotaz : "chci souΦet plat∙ jednotliv²ch odd∞lenφ dle pohlavφ". Jak je z tabulky patrno, tento zdßnliv∞ nevinn² dotaz jednoznaΦn∞ odhalφ plat zam∞stnankyn∞ HßjkovΘ. Dßle jsme nedßvno odeÜli z postu pana Lßtala, tedy mßme vφcemΘn∞ p°esnΘ pojetφ o jeho platu. Jeliko₧ jeho dva pod°φzenφ (z reklamnφho odd∞lenφ) d∞lajφ ·pln∞ totΘ₧, budou mφt stejn² plat, kter² je roven (27000-11000)/2=8000 KΦ. Pokud k dotazu p°idßme po₧adavek na poΦet pracovnφk∙, rßzem odhalφme, ₧e ÜΘf ekonomickΘho odd∞lenφ mß 18ti tisφcov² plat. Jeliko₧ pan Smetana nastoupil nedßvno, dotaz na pr∙m∞rn² poΦet proh°eÜk∙ na jednotliv²ch odd∞lenφch vede p°φmo k hodnot∞ 4 v p°φpad∞ pana Dostßla.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
DalÜφ problΘmy m∙₧e p°edstavovat medißn, st°ednφ hodnota znak∙ se°azen²ch podle velikosti. V₧dy toti₧ mßme jistotu, ₧e existuje alespo≥ jeden °ßdek, kter² ji nab²vß, co₧ m∙₧e b²t v kombinaci s pr∙m∞rem siln² zjiÜ¥ovacφ nßstroj. P°i vyhodnocovßnφ auditnφho zßznamu nespolΘhejte na p°φmost dotaz∙, nenφ v₧dy nutnΘ se zeptat databßze na plat novΘho zam∞stnance, pokud se mohu zeptat na pr∙m∞rn² plat v organizaci p°ed a po jeho p°ijetφ. U₧ivatelΘ tedy mohou zjistit konkrΘtnφ hodnotu bez explicitnφho dotazu na nφ.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Proti ·toku nep°φm²mi dotazy existuje mnoho ·toku, bohu₧el v∞tÜinou majφ op∞t vlastnost dvojseΦnΘ zbran∞. Pokud p°idßme na bezpeΦnosti, systΘm rßzem n∞kterΘ prßvoplatnΘ dotazy odmφtne odpov∞d∞t, nebo odpovφ zkreslen∞. To m∙₧e jφt a₧ do takovΘho "extrΘmu", kdy se k v²sledku p°ipoΦφtßvß nßhodnß hodnota (tzv. NßhodnΘ zmatenφ ,random data perturbation), pop°φpad∞ se mφsto na celΘm v²b∞ru sloupce se statistickΘ hodnota spoΦφtß pouze na nßhodnΘm v²b∞ru. Musφ se pochopiteln∞ zajistit, aby p°i stejn²ch dotazech systΘm vracel stejnΘ v²sledky.
V p°φruΦkßch pro zaΦßteΦnφky se Φasto uvßdφ, ₧e relaΦnφ databßze nesmφ obsahovat redundantnφ, tedy opakovanß data. Platnost tΘto zßsady je pro relativn∞ "menÜφ" databßze nespornß, nebo¥ umφst∞nφ jedn∞ch hodnot na vφce mφstech p°edstavuje markantnφ problΘmy p°i modifikaci, porovnßvßnφ a pokud se jaksi "stejnΘ hodnoty liÜφ" (tj. necht∞n∞, vlivem n∞jakΘ chyby), odhalenφ problΘmu b²vß skuteΦn∞ detektivnφ prßce.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Na druhou stranu existujφ podmφnky, ve kter²ch mß ta Φi ona redundance uplatn∞nφ. Je to nap°φklad za p°edpokladu ₧e pot°ebujeme docφlit pot°ebnou rychlost, nebo¥ spojovßnφ tabulek s velk²m poΦtem °ßdk∙ klade nemalΘ nßroky na v²poΦetnφ v²kon. Proto je n∞kdy uchovßvat informace vφcekrßt u₧iteΦnΘ, poΦet tabulek kterΘ s budou spojovat se snφ₧φ. Dßle je mo₧nΘ opakovßnφm odhalit n∞kterΘ chyby, pokud nap°φklad novß hodnota prochßzφ slo₧it²m procesem mimo nßÜ systΘm. Jejφ porovnßnφ s hodnotou starou m∙₧e b²t velmi u₧iteΦn² diagnostick² nßstroj. Zcela p°φm²m p°φkladem jsou tzv. Shadow fields, tedy prostΘ "stφny" jin²ch datov²ch polφ, v p°φpad∞ nedostupnosti originßlu nebo chyby v n∞m je tak pou₧ita takovßto zßlo₧nφ kopie.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Vedle prost²ch kopiφ stojφ za uvß₧enφ, zda do n∞kter²ch mφst databßzovΘho systΘmu nezapracovat detekΦnφ a/nebo samoopravnΘ k≤dy. To jsou krßtkΘ °et∞zce, kterß, jak je asi jasnΘ, dokß₧φ urΦit² omezen² poΦet chyb v objektu ke kterΘmu se vztahujφ odhalit, pop°φpad∞ i opravit. K dispozici b²vß Φasto velkΘ mno₧stvφ algoritm∙, od prost²ch kontrolnφch souΦt∙ a₧ po kryptograficky bezpeΦnΘ hashe (MD5, SHA1...) Pokud je proces sprßvn∞ zautomatizovßn, m∞l by v₧dy b²t p°i uklßdßnφ nov²ch dat k≤d spoΦten a p°i Φtenφ spoΦten + porovnßn s ulo₧enou hodnotou. Velmi Üikovn∞ se tφm zamezφ nßhodnΘ modifikaci dat.
DalÜφ aspekt integrity databßze je fakt, zda popsanß situace odpovφdß skuteΦnosti, respektive jestli jφ odpovφdat m∙₧e. Takovßto kontrola je namφst∞ p°edevÜφm v p°φpad∞ podez°enφ, ₧e data jsou n∞jak poÜkozena. TypickΘ je hodnoty "prohnat" p°edem p°ipravenou (Φasto dosti komplikovanou) funkcφ, kterß minimßln∞ omezφ mo₧nΘ rozp∞tφ na n∞jak² interval. ╚asto b²vß zmi≥ovßn pojem stavovß omezenφ, co₧ jsou podmφnky, p°i jejich₧ nedodr₧enφ je databßze pova₧ovßna za vadnou. Ty je pot°eba spl≥ovat po°ßd. Vedle toho p°ed ka₧dou operacφ je pot°eba zkontrolovat tzv. tranzitivnφ omezenφ, nap°φklad nenφ mo₧nΘ prodat p∞t v²tisk∙, pokud mßm na sklad∞ v²tisky pouze dva.
</SCRIPT><OL Class=None Type=Disc><LI style='margin-left:20px;' class=LinkItem><a href=articles.php@ID=140><SPAN Class=SeeAlso>Ochrana dat v databßzφch a (nejen) bezpeΦnostnφ problΘmy (1.dφl)</SPAN></a></OL><SCRIPT>
nie('<br>');AdditionalTablesBegin();
CommentsBegin('Ochrana dat v datab_25E1z_25EDch a (nejen) bezpe_25E8nostn_25ED probl_25E9my (2.d_25EDl)',0);