Težava: slepo zaupanje
Ko namestite aplikacijo za elektronsko varuško, ji omogočite dostop do zelo zasebnega prostora: sobe vašega otroka. Aplikacija posluša, včasih pa tudi spremlja sliko. Hkrati starši pogosto ne vedo, kaj se dogaja v ozadju: ali prenosi potekajo prek strežnikov tretjih oseb, ali se zbirajo podatki o uporabi in kdo ima s tehničnega vidika dostop do njih?
Iskren odgovor je: pri mnogih aplikacijah tega ne veste. Koda je zaprta, arhitektura pa ostaja le trditev. Na koncu morate verjeti ponudniku.
Zaprta koda, odprte ranljivosti
V zadnjih letih je bilo veliko poročil o vdorih v elektronske varuške. Neznanci so lahko prisluškovali, premikali kamere ali govorili prek zvočnikov. Večinoma ni šlo za nenavadne napade, temveč za resne napake: nešifrirane povezave, privzeta gesla in manjkajoče preverjanje pristnosti.
Pri lastniški programski opremi ljudje zunaj podjetja te pomanjkljivosti pogosto opazijo šele, ko se že nekaj zgodi. Varnostni raziskovalci, neodvisni razvijalci in starši lahko končni izdelek opazujejo le od zunaj. Za napravo v otrokovi sobi je to slab model.
Preglednost kot varnostno načelo
Informacijska varnost pozna staro, uporabno pravilo: Kerckhoffsovo načelo. Varnost ne sme biti odvisna od tega, da zasnova ostane skrivnost. Sistem mora ostati varen tudi, če nekdo ve, kako je zgrajen.
Javno dokumentirana koda sama po sebi programske opreme ne naredi varne. Omogoča pa preverjanje trditev. Ljudje, ki področje poznajo, lahko pregledajo tokove podatkov, izpeljavo ključev in pravila, namesto da berejo marketinška besedila.
Timmyjev pristop: ločeno varnostno jedro
V Timmyju zdaj zelo jasno ločujem dele, ki so resnično ključni za varnost. O tem, ali si izdelek zasluži zaupanje, ne odloča prav vsaka vrstica uporabniškega vmesnika. Odločilni so logika zaledja, dogovori za signalizacijo, kriptografija seznanjanja in vprašanje, kateri podatki dosežejo strežnik.
Zato je varnostno jedro zdaj v javnem repozitoriju baby-monitor-timmy-core. Celotna koda aplikacije trenutno ni javna. Varnostno ključni gradniki so ločeni od uporabniškega vmesnika in logike izdelka, da jih je mogoče samostojno dokumentirati in pregledovati.
Kaj to pomeni v praksi?
- Jasne meje: varnostni gradniki so ločeni od uporabniškega vmesnika in logike izdelka.
- Preverljivi tokovi podatkov: seznanjanje, signalizacijo in vmesnike zaledja je mogoče dokumentirati ločeno.
- Brez skritih sledilnikov: ključne poti vsebujejo le tisto, kar tja tehnično sodi.
- Lažje dolgoročno vzdrževanje: ločeno jedro je lažje pregledati kot neurejen monolit.
Zaključek: starši si zaslužijo preglednost
Ko ima aplikacija dostop do otrokove sobe, mora jasno odgovoriti na ključna vprašanja: Kateri podatki nastanejo? Kam gredo? Kdo jih lahko bere? Starši si zaslužijo več kot le oznako o zasebnosti v nogi strani.
Baby Monitor Timmy naj pokaže, da gresta dober izdelek in preverljiva varnost lahko z roko v roki. Zame to ne pomeni, da mora biti javno dostopen prav vsak kotiček aplikacije. Pomeni, da je treba odpreti dele, ki odločajo o seznanjanju, signalizaciji, dostopu do zaledja in tokovih podatkov.