mercoledì 14 agosto 2019

Statistiche del blog

Estate, caldo giornata light prima delle ferie... Tempo di statistiche.

So che siete in 3 e non ve ne pole frega' de meno, pero' quell'Amiga mi ha fatto sorridere...

Software e Guida Autonoma

Questo tweet di Paolo Attivissimo mi ha spinto a rispondere per scatenare una riflessione.

Ovvero: la guida autonoma e' davvero una buona soluzione all'idiozia umana?

Partiamo dalle premesse, attualmente la guida autonoma e' un pezzo di software. Complesso quanto vuoi ma software tradizionale. Anche perche' l'intelligenza artificiale sembra fare un po' la furbetta (in realta' fa quello per cui e' programmata ovvero per risolvere con minore fatica possibile il problema che le e' stato posto, pero' ancora non sembra essere applicabile a situazioni reali).

Dicevamo e' un pezzo di software. Il software ha sicuramente dei pregi che sono i tempi di risposta ed il rispetto delle regole. Sul contro abbiamo la scarsa flessibilita' e l'adattabilita' (cose in cui noi umani invece siamo piuttosto bravi).

Inoltre essendo codice per sua natura e' pieno zeppo di bug e vulnerabilita'. E' inevitabile.

Inoltre il software ha un difetto: funziona finche' non smette di funzionare (sembra banale detta cosi') e quando questo succede i danni tendono ad essere incalcolabili (ne sa qualcosa at&t)

Lo faccio presente:

Ora non mi ricordo l'ordine preciso anche perche' ci sono stati un paio di "rami" di gente che si accodava ad Attivissimo...

La risposta non mi ha convinto, ma per niente. Gli umani hanno difetti? Verissimo ma provate un attimo a prendere il controllo da remoto di un essere umano...

Perche' e' quello che succede con le auto. E non mi dite che in caso di guida autonoma farebbero piu' attenzione. La pressione del mercato e' troppo alta, succede in praticamente tutti gli ambiti, bisogna uscire ed uscire prima del concorrente. Il resto si vedra'.

Pensateci un attimo: guida autonoma vuol dire che un eventuale attaccante avrebbe il controllo completo di un aggeggio che gira per strada che pesa se va bene 1 tonnellata. Avete idea di cosa potrebbe combinare?

Ma ammettiamo per un attimo che non siano cosi' cazzoni. Anche a scriverlo con le migliori intenzioni possibili il sw contiene da 5 a 50 bug per migliaia di righe di codice (nel tweet avevo scritto per milione). La fonte? Exploiting Software pg. 14 I cui autori sono un ricercatore informatico ed uno scienziato informatico. Non esattamente i primi venuti.

Quindi un eventuale guida autonoma porterebbe con se migliaia di bug potenzialmente sfruttabili da un eventuale attaccante (considerando solo il sw e non le vulnerabilita' dovute ad altro per esempio librerie di terze parti oppure dovute al linguaggio di programmazione o ad una certa versione del compilatore*). Se poi l'auto e' pure connessa ad internet come oggi e' la prassi diciamo che ci sono buone basi per un disastro di proporzioni epiche.

Non metto tutti i tweet perche' non aggiungono niente al mio pensiero ma voglio lasciarvi con la mia conclusione:

Noi umani siamo bravi in compiti "non noiosi", e che richiedono capacita' di adattamento e flessibilita'. Siamo anche (abbastanza) bravi ad interpretare il comportamento delle altre persone, tipo il tizio che mette fuori la mano dal finestrino per indicare una svolta... Mentre il software e' bravo in compiti che richiedono ripetitivita' e tempi di reazione brevi (esattamente dove non siamo forti noi). Inoltre il software funziona bene in situazioni totalmente controllate (es. il sw di volo dove le rotte sono pianificate e se ci sono situazioni impreviste la palla passa ai piloti).

Per come la vedo io bisognerebbe combinare le due cose. Ovvero lasciare all'umano il controllo nella maggioranza delle situazioni, con il software pronto ad intervenire se l'umano sbaglia (p.es se cicca una frenata o se sta andando contro un muro). E non il viceversa (come l'autopilot tesla per intendersi). Inoltre per esempio il sw potrebbe prendere il controllo in situazioni come una coda (dove l'umano tende a distrarsi). Ovviamente il sw di controllo della macchina non deve essere in nessun modo connesso ad internet, deve essere un sistema isolato. Lo so che fa comodo aggiornarlo da remoto ma...

*es. Java 1.6 oppure il vecchio compilatore di C++ quello del buffer overflow per intenderci...