Ho ricevuto un commento interessante alla Cosa di Computer in cui esamino il codice sorgente dell’app Immuni per vedere se è sicura e anonima. Mi si chiede se sia possibile inserire un codice sorgente nascosto all’interno di un’app o di un programma. Dare una risposta chiara e comprensibile a questa domanda è una bella sfida ma ci voglio provare lo stesso.
Partiamo al solito dall’inizio: cos’è un computer? È un apparecchio elettronico, al pari di un tostapane. La differenza tra un tostapane ed un computer sta nel fatto che il tostapane lo puoi usare solo per tostare il pane mentre il computer lo puoi usare per fare qualunque cosa (o quasi). Esso infatti è in grado di eseguire programmi. Ad esempio, Microsoft Word è un programma che elabora testi. Gli smartphone sono computer più piccoli. Le app sono programmi per smartphone (i rispettivi concetti sono uguali, cambiano solo i termini).
Come si realizzano app e programmi? Scrivendone le istruzioni che verranno eseguite dal computer. Quest’ultimo però non comprende il linguaggio naturale degli esseri umani: comprende solo la matematica. I programmi dunque sono sempre scritti in un linguaggio che sta a metà tra quello usato dagli esseri umani e quello matematico usato dal PC. Questo si chiama linguaggio di programmazione.
Il codice sorgente deve essere necessariamente in chiaro, ovvero perfettamente comprensibile. Altrimenti il computer non potrebbe eseguirlo (come potrebbe eseguire un programma se non riuscisse a leggerne le istruzioni?). Quindi no, non è possibile inserire un codice sorgente nascosto all’interno di un’app. È però possibile fare due cose:
- Programmare l’app in modo che esegua un codice sorgente aggiuntivo scaricato da un server
- Offuscare il codice sorgente, ovvero renderlo illegibile agli esseri umani mantenendolo leggibile per i computer
Nell’app Immuni non è stata fatta nessuna delle due cose. Questo tipo di operazioni andrebbero infatti programmate e risulterebbero dunque perfettamente visibili all’interno del codice sorgente.