v teto casti se budeme zabyvat pouze aplikacnimi programy
programy mohou poskodit ci zcela znicit
data, zpusobit kompromitaci utajovanych skutecnosti,
omezit a popripade vyloucit funkcnost
celeho systemu.
pojmem oznacujeme nedokumentovany vstup do programoveho modulu, nejcasteji byva vytvoren v ramci tvorby tohoto modulu za ucelem snazsiho ladeni:
trapdoors jsou obvykle odstraneny pred dokoncenim modulu, ale mohou byt opomenuty, ponechany za ucelem ladeni dalsich modulu ci snazsi spravy dokonceneho programu, nebo pro ziskani neopravneneho pristupu k bezicimu programu
program, ktery krome svych "radnych" funkci vykonava jeste dalsi skryte akce
objevit Trojskeho kone v programu o stovkach tisic ci milionech radku je velmi obtizne, navic v tomto smyslu muze byt program upraven az nasledne po otestovani a zarazeni do provozu
jde o programy, ktere se snazi vyuzivat ve svuj prospech malych zaokrouhlovacich chyb na hranici presnosti pocitace
...ve velkem mnozstvi
program, prevadejici na programatorovo konto zaokrouhlovaci chyby pri vypoctu uroku
salamovy utok je opet velmi tezko detekovatelny, nebot byva provaden v rozsahlych SW systemech, navic nepusobi viditelne problemy
objeveni casto pouze nahodne
v prostredich spravujicich klasifikovane informace zpravidla aplikacni programatori po ukonceni vyvoje nemaji pristup k bezicim programum
chteji-li ziskat pristup ke zpravovanym informacim, vytvori skryty kanal
implementace je naprosto obecna:
zvlaste vhodne pro unik
maleho mnozstvi informace, opet prakticky
nedetekovatelne
(maly) program s autoreprodukcni schopnosti
sitova obdoba viru, maji schopnost prostrednictvim komunikacnich linek se sirit z jednoho pocitace na druhy
programatori maji k dispozici mnoho prostredku jak prekonat obranne mechanismy systemu
pri vyvoji software je tedy nutne
pouzivat metody eliminujici tyto snahy
rozsahly ukol, ktery tym resi je rozdelen na mensi casti, moduly, jejichz reseni ma za ukol nektery clen tymu
dokonceny navrh reseni a dokonceny kod jsou podrobeny oponenture ostatnich clenu tymu na spolecnem sezeni
doporuceny rozsah modulu je
30 - 60 radek
je obtizne prokazovat spravnost programu - to ze nebyly nalezeny chyby muze pouze znamenat, ze byla pouzita nevhodna metodika testovani
testovani by mel provadet
nezavisly tym - snizuje se nebezpeci,
ze vysledny program obsahuje nezadouci
kod, ci ze nebyl dodrzen puvodni
cil projektu.
hlavnim cilem je zajisteni dostupnosti a pouzivani spravnych verzi software
obcas je potreba vratit se k verzi pred provedenim jistych uprav, tento problem je zavaznejsi v prostredi, kde na projektu pracuje cely tym
Za ucelem udrzeni prehledu
je nutne vest dukladnou dokumentaci vsech
kopii, spravou konfiguraci se zpravidla zabyva
vycleneny pracovnik.
Programator pracuje na vlastnim exemplari
modulu, ktery po ukonceni etapy jej preda
sprave konfiguraci vcetne popisu
provedenych uprav a celkove charakteristiky
a dale jiz v nem nemuze cinit
zmeny.
Je vhodne, aby spravce konfiguraci
prijimal programy vyhradne ve zdrojove
forme se soupisem a popisem provedenych zmen.
Nutne vest detailni log co, kdo, kdy delal.
Halting problem ->
neexistuje obecna metoda jak overit,
ze program dela jen to co ma a nic jineho
existuje metoda spocivajici
v prevedeni programu v soustavu logickych
formuli, pomoci kterych lze overit,
zda jistym vstupum odpovidaji pozadovane
vysledky
problemem je korektnost prevodu na logicke formule a velka casova slozitost vyhodnocovani
na vetsi systemy zatim
prakticky nepouzitelne
Ne vsechny programy jsou vyvijeny podle
techto zasad, mnohe z nedostatku programu
vsak muze pokryt vhodne navrzeny
operacni system
Program je funkcne korektni pokud vykonava spravne vsechny ocekavane funkce a nic vic.
Spolehlivym software (trusted
software) rozumime programy o kterych verime,
ze jsou funkcne korektni a ze tuto
korektnost vynucuji i modulu, ktere samy
spousteji.
operacni system je zpravidla spolehlivy sw.
Spolehlivy sw. zajistuje pristup
k citlivym datum pro (obecne nespolehlive)
uzivatele, kterym neni mozne dat
primy pristup k prvotni
reprezentaci dat. Dale zajistuje provadeni
sensitivnich operaci.
ne vsechny programy jsou spolehlive, ani s pomoci OS neni vzdy mozne spolehlivost vynutit
programy vytvorene podle konceptu vzajemneho podezrivani pracuji jako kdyby ostatni moduly byly vadne
pouzivaji operacni systemy proti podezrelym programum
podezrely program ma prisne
vymezeno, jake systemove zdroje smi
pouzivat
veskera data a programy v systemu
jsou rozdelena do nekolika oblasti, kazda
informace lezi prave v jedne
oblasti, kazdy program muze pracovat s
daty z nejvyse jedne oblasti, do ktere
sam patri
system musi zaznamenavat co, kdo, kdy, s cim a jak dlouho delal
podle stupne utajeni se voli
mnozina zaznamenavanych aktivit, zejmena
je nutne zaznamenavat chyby (nepovolene pristupy,
spatna hesla, ...)
nekdy muze byt vhodne ovlivnovat primo lidsky faktor, a ne az vysledny produkt
neni vhodne povolovat programatorum, aby pracovali zcela dle sveho, je treba mit na pameti, ze vysledny kod musi byt verifikovatelny, udrzovatelny apod.
Standardni navrh - obsahuje popis povolenych vyvojovych prostredku, jazyku, metodologii
Standardy pro tvorbu dokumentace, stylu kodovani, jazyka - popis, jak ma vysledny kod vypadat, volby nazvu promennych, styl komentaru, ...
Standardy programovani - zavazne popisy, jakym zpusobem se provadi programatorska prace v globalnim meritku, rozpisy peer reviews, auditu programu apod.
Standardy testovani - soupis pouzivanych verifikacnich metod, archivovani vysledku testu ...
Standardy konfiguracniho managementu
- zpusoby vymeny produktu, zpusob
zaznamenavani zmen, ...
standardy jsou dulezite pri tymove praci, zabranuji vzniku modulu, kterym rozumi pouze autor
aby byly efektivni, musi byt standardy dusledne dodrzovany za vsech okolnosti
typickymi situacemi, kdy vznikaji tendence je porusovat jsou okamzky, kdy projekt nabira zpozdeni proti planu, po odchodu klicovych pracovniku apod.
dodrzovani standardu by meli podporovat pravidelne audity bezpecnosti (security audits) provadene nezavislym bezpecnostnim tymem
je vhodne praci rozdelit mezi vice lidi, kteri se znaji co mozna nejmene
omezuje se tak nebezpeci vzniku bezpecnost ohrozujicich programu, navic pokud programator ocekava, ze jeho kod bude podroben zkoumani nezavisleho testovaciho tymu, omezi sve nekale aktivity
firmy bezne sestavuji profily svych potencialnich pracovniku a prijimane podrobuji vsestranemu zkoumani, zda nebodou predstavovat hrozbu pro bezpecnost - obvykle jsou reference z drivejsich pusobist, psychologicke testy apod.
po prijeti ma pracovnik povetsinou velmi omezeny pristup k senzitivnim informacim, az casem ziskava duveru a tim i rozsahlejsi bezpecnostni opravneni
je vhodne vest co nejpodrobnejsi informace o pracovnicich, zejmena o: