Kaj pomeni “varno z zasnovo”?

“Varno z zasnovo” je metodologija za ustvarjanje računalniških aplikacij ali sistemov, v katerih so vsi vidiki programske opreme sami po sebi razviti na način, ki zlonamernemu uporabniku otežuje ali onemogoča poškodovanje, napad ali ogrožanje sistema. V mnogih primerih je programska oprema, ki je po zasnovi varna, načrtovana že od zasnove, da zapre tudi najmanjše varnostne luknje v elementarnih funkcijah in za uporabo zaupanja vrednih klasičnih tehnik v fazi kodiranja, da se zagotovi, da se v končni izdelek ne prenesejo nobene pomanjkljivosti. Nekatera od glavnih področij, ki so v središču varnega inženiringa, so vnos uporabnikov ali odjemalcev, varna komunikacija in osnovno preverjanje, da se zagotovi, da so nekatere vrste napadov onemogočene. Čeprav nobena računalniška aplikacija ni imuna na vse zlonamerne napade, ima sistem, ki je zaščiten z zasnovo, izrazito prednost pred sistemi, ki uporabljajo zunanje varnostne knjižnice ali se zanašajo na varnost okoliškega okolja, kot je operacijski sistem, saj je zasnova programska oprema je narejena za preprečevanje in zadrževanje izkoriščevalskih napadov.

Eno najbolj ranljivih področij katere koli računalniške aplikacije je zaradi svoje nepredvidljive narave vnos uporabnikov. Vhod, ki ni potrjen, se uporablja brez preverjanja napak ali je slepo sprejet iz katerega koli vira, lahko uporabi notranje delovanje sistema proti sebi, da razkrije občutljive podatke ali povzroči zrušitev sistema. Ko je aplikacija po zasnovi varna, je uporabniški vnos običajno na nek način potrjen, preverjen za zlonamerna zaporedja ali celo pretvorjen v varno obliko, tako da ga je mogoče obdelati brez skrbi za nepredvidljivo vedenje, ki bi lahko bilo posledica privzete obdelave nekaterih kombinacij znakov.

Vprašanje uporabniškega vnosa postane bolj zapleteno v sistemu, ki je zaščiten z zasnovo, ko je programska oprema strežnik, ki sprejema vhode od odjemalca v omrežju. Nekateri napadalci lahko prestrežejo veljavna sporočila od odjemalca do strežnika ali v celoti ponaredijo odjemalca, zato se običajno uporabljajo metode, ki niso lastniško šifriranje, saj bi napadalec, ki prestreže sporočila, zlahka zlomil šifriranje. Učinkovitejše metode zaščite pri načrtovanju programa vključujejo omejevanje informacij, ki jih odjemalec pošilja, in omejevanje sposobnosti strežnika ali modula pri tem, kaj lahko ali ne more narediti sam.

Z združevanjem modularnosti programske opreme z načelom najmanjših privilegijev lahko sistem, ki je po zasnovi varen, prepreči napadalcem, da bi popolnoma ogrozili sistem z delegiranjem nalog med moduli, ki nimajo nujno možnosti, da sami izvedejo eno samo uničevalno dejanje. Na ta način je mogoče vzpostaviti varovalke in sefe, ki lahko sistemu omogočijo, da se varno okreva po vdoru. Ta koncept je težko vključiti v aplikacijo, ki ne uporablja načel, ki so po načrtu varna, ker zahteva, da je celotna arhitektura programa usmerjena k cilju varnosti.