Benvenuti ad un nuovo episodio. Prima iniziare con l'argomento
di oggi. Vi invito a iscrivervi, attivare
la campanella e a lasciare una valutazione positiva.
Il vostro supporto è fondamentale per far crescere
questa comunità e migliorare ogni episodio.
Se avetedubbidomandeocuriositapoteteiscrivermiamaurospezzaferrogmail.com.
Quotidianamente effettuiamo operazioni che ormai diamo per
scontate, siamo abituati al fatto che quando scarichiamo
l'applicazione prima di poterla utilizzare davvero dobbiamo
concedere una serie di permessi. Ed è proprio qui che avviene
qualcosa di interessante, quella che percepiamo come una semplice
operazione di routine, in realtà rappresenta il confine tra ciò
che il nostro dispositivo conosce di noi e ciò che
permettiamo a qualcun altro di conoscere.
La storia dei permessi però non nasce con le applicazioni
moderne, nasce molto prima degli smartphone, prima degli store
digitali e persino prima di Android e iOS.
I permessi derivano direttamente dal mondo dei sistemi operativi
multimediali, dove più persone utilizzavano la stessa macchina
contemporaneamente. Era necessario impedire che un
utente potesse leggere, modificare o cancellare i file
di un'altro. Ed è proprio da lì che nasce uno
dei concetti più importanti della sicurezza informatica,
l'isolamento. Ogni programma doveva operare
entro determinati limiti, poteva accedere solo a specifiche
risorse, eseguire certe operazioni e utilizzare solo ciò
che il sistema gli concedeva con il tempo.
Questo modello si è evoluto, dai permessi sui file dei sistemi
unix alle ACL nei sistemi moderni, fino ad arrivare alle
sandbox degli smartphone oggi. Quando premiamo consenti accesso
alla fotocamera in realtà stiamo utilizzando un concetto NATO
decenni fa nei primi sistemi operativi, decidere chi può fare
cosa, su quali risorse e in quali condizioni.
La differenza è che un tempo questi meccanismi erano pensati
per proteggere gli utenti da altri utenti, oggi servono
soprattutto a proteggere gli utenti dalle applicazioni
stesse. Per capire davvero i permessi
moderni dobbiamo fare un salto indietro nel tempo, molto prima
degli smartphone dobbiamo tornare ai sistemi unix nati
negli anni 70, da cui derivano direttamente anche Linux e
Android e in particolar modo il modello di sicurezza che
utilizziamo ancora oggi. Yunix introduceva un concetto
rivoluzionario per l'epoca, più utenti potevano usare
contemporaneamente la stessa macchina, ma senza interferire
tra loro, e per farlo serviva un sistema rigoroso di permessi.
Ogni file e ogni cartella ha un proprietario, un gruppo e una
serie di autorizzazioni, quelle famose lettere RWX che sta per
Read, ride ed Execute, che spesso vengono rappresentate
anche in forma numerica. Ad esempio, il famoso 777 è uno
di quei concetti che chi lavora con Linux o sistemi unix
incontra quasi subito. Quando vidi un numero come 777,
in realtà stai leggendo tre gruppi distinti di permessi.
Primo numero proprietario del file, il secondo numero è il
gruppo, terzo numero tutti gli altri utenti.
Ogni cifra è la somma di questi valori, quattro per la lettura,
due per la scrittura, uno per l'esecuzione.
Dunque 4+2+1 fa 7, cioè lettura più scrittura più esecuzione.
Di conseguenza un permesso 777 significa il proprietario può
leggere, scrivere ed eseguire il gruppo.
Il gruppo può leggere, scrivere ed eseguire.
Tutti gli altri utenti possono leggere, scrivere ed eseguire.
In pratica chiunque sul sistema ha il pieno controllo del file o
delle cartelle. Ed ecco alcuni esempi comuni.
755 il proprietario può fare tutto, gli altri solo leggere ed
eseguire. 644 il proprietario può leggere e scrivere, gli
altri solo leggere 700 solo il proprietario accesso completo
per questo motivo il famoso.ch mod. 777 è spesso considerato
rischioso, rende il file completamente aperto a chiunque
abbia accesso al sistema. Ed è proprio qui che nasce uno
dei problemi storici della sicurezza, trovare.
Trovare il giusto equilibrio tra comodità e controllo.
Col tempo Junix e Linux introdussero meccanismi sempre
più avanzati, uno dei più importanti fu il concetto di
isolamento tramite chiarot. Questo comando permette a un
processo di vedere solo una parte del file system, come se
quella cartella fosse l'intero sistema operativo.
In pratica si iniziava già a costruire l'idea di gabbia per i
programmi, puoi esistere qui dentro, ma non puoi vedere tutto
il resto. Ed è incredibile pensare che il
principio alla base delle sandbox moderne degli smartphone
nasca proprio dall'idea di simile sviluppate decenni fa.
Con Linux il modello si è evoluto ancora, utenti separati,
permessi granulari, processi isolati, container e quando
arrivano Android e iOS. Il concetto cambia forma ma non
filosofia. Ogni applicazione diventa quasi
un utente separato dal sistema, ha il suo spazio, i suoi file, i
suoi limiti e quando chiedi accesso a fotocamere, microfono
o posizioni se essenzialmente chiedendo al sistema operativo
di oltrepassare temporaneamente quei confini.
Quella finestra con su scritto consenti non è quindi un
semplice popup. E l'eredità di oltre
cinquant'anni di evoluzione della sicurezza informatica e
più gli smartphone diventano centrali nelle nostre vite, più
questo sistema diventa fondamentale perché, a
differenza dei vecchi computer, il telefono non contiene
soltanto documenti o programmi, contiene praticamente la nostra
identità digitale, fotografie, conversazioni, posizioni, carte
di pagamento, cronologia degli spostamenti, abitudini,
biometria. Ed è per questo che Android e
iOS hanno spinto il concetto di sandbox ancora oltre.
Ogni applicazione gira come un processo separato, con un
identificativo unico e con un accesso limitato esclusivamente
alle proprie risorse. Un'APP normalmente non può
leggere direttamente i dati da un'altra APP, ed è qui che entra
in gioco. I permessi era a runtime in
passato, soprattutto le prime versioni di Android, I permessi
venivano accettati tutti insieme.
Durante l'installazione l'utente vedeva una lista enorme accesso.
Sms, rubrica, memoria, chiamate, posizione e spesso premeva,
accetta senza leggere nulla. Col tempo però ci si rese conto
che quel modello non funzionava davvero perché le persone non
comprendevano cosa stessero autorizzando, così avevo
l'approccio diverso. I permessi vengono richiesti nel
momento esatto in cui servono, vuoi usare la fotocamera?
Il sistema mostra la richiesta, vuoi registrare l'audio?
Nuova richiesta, vuoi accedere alla posizione in background?
Ulteriori autorizzazione separata.
In pratica, il sistema operativo cerca di trasformare i permessi
in qualcosa di più comprensibile e controllabile.
Ma sotto una superficie il meccanismo è molto più
complesso. Quando un'APP richiede un
accesso, il kernel verifica i privilegi, il sistema controlla
il contesto del processo, vengono applicate policy di
sicurezza e solo allora l'operazione può essere
eseguita. Su Android, ad esempio, entra in
gioco anche se Linux, un sistema di controllo obbligatorio NATO
nel mondo Linux, non basta essere autorizzati dall'utente,
l'APP deve anche rispettare le polizze imposte dal sistema.
Questo significa che persino un'APP con determinati permessi
potrebbe comunque essere bloccata se tento operazioni
considerate anom o pericolose. Ed è qui che si comprende una
cosa importante, la sicurezza moderna non si basa più sulla
fiducia delle applicazioni, si basa sulla limitazione costante
dei privilegi, ovvero concedere a ogni processo soltanto ciò che
è strettamente necessario per funzionare.
Perché nella sicurezza informatica esiste una regola
implicita, ogni permesso concesso è una superficie
d'attacco in più. Ma soffermiamoci per un momento
su un aspetto fondamentale. I permessi non proteggono
soltanto dai malware, proteggono anche dagli errori.
Moltissimi incidenti informatici non nascono infatti da hacker
sofisticati, ma da applicazioni progettate m configurazioni
errate o privilegi concessi in maniera eccessiva.
Ed è qui che entra in gioco il principio del non fidarsi me
completamente. Pensiamo ad esempio a un APP
torcia, per funzionare davvero le serve accesso ai contatti,
alla posizione GPS, al microfono?
Probabilmente no. Eppure per anni tantissime
applicazioni richiedevano autorizzazioni totalmente
sproporzionate rispetto alle loro funzioni reali, questo
perché ogni dato raccolto ha valore economico, statistico,
pubblicitario, comportamentale. La cronologia delle posizioni
può raccontare dove lavoriamo, le abitudini di utilizzo possono
suggerire interessi politici o commerciali.
Persino i metadati, cioè le informazioni indirette generate
dalla nostra attività, possono diventare estremamente preziose,
ed è per questo che i sistemi operativi moderni cercano
continuamente di ridurre la quantità di informazioni
accessibili alle applicazioni. Negli ultimi anni abbiamo visto
comparire autorizzazioni sempre più granulari, accesso alle
posizioni precise o approssimative, permessi vari
solo una volta, accesso alle foto selezionate invece che
all'intera galleria, indicatori visivi per microfono e
fotocamere attivi, dashboard dedicate alla privacy.
In pratica il sistema operativo sta cercando di fare una cosa
molto difficile, mantenere le applicazioni utili senza
renderle onniscienti. Ma la battaglia non riguarda
solo gli smartphone, anche nel mondo desktop e server i
permessi continuano a evolversi, pensiamo ai container come
Docker, oppure alle macchine virtuali o ai sistemi cloud,
dove ogni servizio comunica con altri servizi tramite
autorizzazioni temporanee e token di accesso.
Ancora una volta ritorna sempre lo stesso concetto, isolare,
limitare, controllare, perché in informatica la sicurezza
assoluta non esiste, esiste per la riduzione del rischio e ogni
livello di isolamento aggiunge un ostacolo in più tra un
problema locale e un disastro globale.
Ed è affascinante osservare come un concetto NATO come oltre
cinquant'anni fa nei laboratori di unix continui ancora oggi a
proteggere miliardi dispositivi del mondo.
La prossima volta che vedrete comparire sullo schermo, la
richiesta consente accesso alla fotocamera.
Forse lo guarderete in modo diverso, perché dietro quel
piccolo popup non c'è soltanto un bottone da premere.
C'è tutta la storia dell'evoluzione della sicurezza
informatica dei sistemi multiutente, ai permessi unix,
alle sandbox, fino agli smartphone che portiamo ogni
giorno in tasca. E in fondo i permessi raccontano
una delle verità più profonde dell'informatica moderna.
Ogni tecnologia potente ha bisogno anche di confini.
Grazie per aver ascoltato questa puntata di informatica per
tutti. Se l'episodio vi è piaciuto,
potete supportare il podcast condividendolo lasciando una
recensione e seguendomi per le prossime puntate.