mercoledì 14 agosto 2019

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...

3 commenti:

  1. Qualche riflessione veloce:

    1. Non tutti i bug sono fatali. Dipende come è stato definito il concetto di bug nella statistica che citi.
    2. Il controllo "da remoto" di un essere umano si può ottenere eccome. Gli(le) fai ascoltare il gol della sua squadra. Gli telefoni e gli dici che suo figlio è in ospedale. Lo porti a cena e lo fai bere troppo. Gli offri sesso mentre è al volante. Gli dici che sei incinta.
    3. I bug esisteranno sempre. La questione non è eliminarli tutti. Non si pretende la perfezione. La questione è fare in modo che un sistema di guida autonoma causi statisticamente meno incidenti di un conducente medio. Abbiamo visto, dal caso che ho citato, che ci sono conducenti che abbassano parecchio la media :-)
    4. Tutti i giorni noi già ora circoliamo su veicoli in gran parte gestiti dal software. L'ABS della tua auto, o il suo airbag, o l'ascensore che prendi, o l'aereo che usi per andare in viaggio, la centrale elettrica che ti dà corrente, il depuratore che ti fornisce acqua potabile sono tutti gestiti via software. Le frenate errate dell'ABS e le attivazioni sbagliate dell'airbag sono rarissime non perché il software è perfetto, ma perché è ragionevolmente buono e nella stragrande maggioranza dei casi funziona come dovrebbe.
    5. Non sta scritto da nessuna parte che un veicolo a guida autonoma debba essere interconnesso a reti informatiche.
    6. Anche se fosse interconnesso, esistono tecniche di separazione del traffico dati di rete rispetto all'elaborazione interna.

    Mi scuso ma non potrò proseguire la discussione. Volevo solo offrirti qualche spunto.

    RispondiElimina
  2. 1. Non tutti i bug sono fatali. Dipende come è stato definito il concetto di bug nella statistica che citi. Non tutti i bug sono fatali. Dipende tanto dal dispositivo. Su un'auto le possibilita' che il fallimento sia bello grosso sono maggiori che su una play-station.
    2. Ti risulta che sia stato fatto? Hai un esempio reale in cui sia stato preso il controllo remoto di una persona? Sulle auto ho citato un esempio preso dal tuo blog. Non e' un'ipotesi.
    3. I bug esisteranno sempre. Vero. Quello che sto dicendo e' che mettendo il software alla guida rischi solo di peggiorare il problema vista come viene gestita attualmente la sicurezza informatica. Ancora una volta non sto inventando niente. Sto guardando quello che e' stato fatto fin'ora e lo sto applicando a quello che dici tu. Presente il caso boeing? Sono morte delle persone eppure saranno stati attenti? Se si comportano cosi' su un aereo figuriamoci in una macchina.
    4. Attualmente il sw non guida la mia macchina (almeno la mia). Inoltre e' possibile prendere il controllo di questo sw. Gia' adesso. Quindi?
    5. Non e' detto ma visto che si connettono gli spazzolini da denti alla rete...
    6. Nell'esempio che cito dal tuo blog questo non e' stato fatto. Cosa ti fa pensare che per la guida autonoma sia diverso?

    RispondiElimina
  3. Aggiungo questo articolo di wired. Il software per le sonde spaziali sara' controllato? Eppure...

    RispondiElimina

I messaggi non appaiono subito ma a seguito dell'approvazione di un moderatore. Siete pregati di seguire le seguenti regole