Problem: slijepo povjerenje
Kad instalirate aplikaciju za nadzor bebe, dajete joj pristup vrlo privatnom prostoru: sobi svoje bebe. Aplikacija sluša, a ponekad i gleda. Istodobno roditelji često ne mogu vidjeti što se događa u pozadini: prolaze li prijenosi kroz poslužitelje trećih strana, prikupljaju li se podaci o korištenju, tko tehnički može pristupiti bilo čemu?
Iskren odgovor je: kod mnogih aplikacija to ne znate. Kod je zatvoren, a arhitektura ostaje samo tvrdnja. Na kraju se od vas traži da vjerujete pružatelju usluge.
Zatvoren kod, otvorene ranjivosti
Posljednjih godina bilo je dovoljno izvještaja o hakiranim uređajima za nadzor beba. Nepoznate osobe mogle su prisluškivati, pomicati kamere ili govoriti kroz zvučnike. Uglavnom se nije radilo o egzotičnim napadima, nego o ozbiljnim propustima: nešifriranim vezama, zadanim lozinkama i nedostatku provjere identiteta.
Kod vlasničkog softvera ljudi izvan tvrtke često uoče te slabosti tek nakon što se nešto dogodi. Sigurnosni istraživači, neovisni programeri i roditelji gotov proizvod promatraju izvana. Za uređaj u bebinoj sobi to je slab model.
Transparentnost kao sigurnosno načelo
Informacijska sigurnost ima staro, korisno pravilo: Kerckhoffsovo načelo. Sigurnost ne smije ovisiti o tome da dizajn ostane tajan. Sustav bi trebao ostati siguran čak i kada netko zna kako je izrađen.
Javno dokumentiran kod sam po sebi ne čini softver sigurnim. Ali omogućuje provjeru tvrdnji. Ljudi koji se razumiju u to područje mogu provjeriti tokove podataka, izvođenje ključeva i pravila, umjesto da čitaju marketinške tekstove.
Timmyjev pristup: odvojena sigurnosna jezgra
U Timmyju sada vrlo jasno odvajam dijelove koji su doista ključni za sigurnost. Ne odlučuje svaki redak korisničkog sučelja o tome zaslužuje li proizvod povjerenje. Presudni su dijelovi pozadinske logike, ugovori signalizacije, kriptografija uparivanja i pitanje koji podaci stižu do poslužitelja.
Zato se sigurnosna jezgra sada nalazi u javnom repozitoriju baby-monitor-timmy-core. Cijeli kod aplikacije trenutačno nije javan. Sigurnosno ključni gradivni dijelovi izdvojeni su iz korisničkog sučelja i produktne logike kako bi se mogli zasebno dokumentirati i pregledati.
Što to konkretno znači?
- Jasne granice: sigurnosni gradivni dijelovi odvojeni su od korisničkog sučelja i produktne logike.
- Provjerljivi tokovi podataka: uparivanje, signalizacija i pozadinska sučelja mogu se zasebno dokumentirati.
- Nema skrivenih alata za praćenje: ključni tokovi sadrže samo ono što im tehnički pripada.
- Dugoročna održivost: odvojenu jezgru lakše je pregledati nego nestrukturirani monolit.
Zaključak: roditelji zaslužuju transparentnost
Kad aplikacija ima pristup bebinoj sobi, trebala bi jasno odgovoriti na ključna pitanja: Koji podaci nastaju? Kamo odlaze? Tko ih može čitati? Roditelji zaslužuju više od oznake privatnosti u podnožju stranice.
Baby Monitor Timmy trebao bi pokazati da dobar proizvod i provjerljiva sigurnost mogu ići zajedno. Za mene to ne znači da svaki kutak aplikacije mora biti javan. Znači otvoriti dijelove koji odlučuju o uparivanju, signalizaciji, pristupu pozadinskim sustavima i tokovima podataka.