Se è davvero così, presumibilmente il codice sorgente alla base del software deve essere il nucleo atomico che guida questa bestia consumatrice globale.
Dicevano che niente dollari significava niente Buck Rodgers, mentre l’arguzia di oggi potrebbe essere che nessun codice sorgente significa nessuna acquisizione planetaria del software arrogante (o qualcosa del genere). Lo sforzo di creare software richiede ore e ore di concentrazione laboriosa e talvolta paralizzante per stabilire tutti i passaggi e le attività scrupolosi che un sistema dovrebbe intraprendere. Gli sviluppatori di software utilizzano una varietà di linguaggi di programmazione e possono essere a volte perniciosamente criptici e succinti nella loro codifica, mentre in altri casi il codice sorgente è espresso in modo piuttosto elaborato e in qualche modo evidente in ciò che indica.
Ci sono due principali campi di opposizione o punti di vista accesi su come trattare al meglio il codice sorgente.
Una convinzione è che il codice sorgente dovrebbe essere tenuto vicino .
Mantieni il codice sorgente proprietario, nascosto alla vista e trattalo come un profondo e oscuro segreto che può essere visto solo da coloro che hanno un bisogno assoluto di dare un’occhiata. Il pensiero su questo è che il codice sorgente è una forma di proprietà intellettuale (IP) venerata e dovrebbe essere ospitato sotto abbondanti garanzie di blocco e chiave. Ciò non è semplicemente dovuto al mantenimento delle protezioni legali (che, certamente, sembra giustificato a causa dei costi significativi coinvolti nel lavoro per creare il codice di programmazione), ma anche perché il codice sorgente potrebbe rivelare il funzionamento interno della salsa segreta o di altri elementi vitali che non dovrebbero essere ampiamente conosciute (così si crede).
Nel momento in cui qualcuno sussurra o in qualche modo perde anche il più piccolo frammento del tuo codice sorgente, devi immediatamente e con una grande dimostrazione di forza porre fine alla perdita.
L’altro lato di quel mantra segreto è l’opposto polare, vale a dire, lascia che tutto il codice sorgente sia libero di vagare.
Spesso definito open-source, l’affermazione è che non sarai mai davvero in grado di tenere il codice sorgente strettamente nascosto, quindi potresti anche gettare la spugna e renderlo prontamente disponibile. Chiunque voglia vedere il codice sorgente è invitato a farlo. In un certo senso, proclamando che il codice sorgente è libero dai vincoli del confinamento in una stanza chiusa, lo stress altrimenti prepotente di cercare di impedire ad altri di vedere il codice è completamente sgonfio e non rimane un briciolo di preoccupazione a questo riguardo.
Come la maggior parte delle cose nella vita, alcuni descrivono queste due posizioni diametralmente opposte come estremi deplorevoli e del tutto inutili su uno spettro che potrebbe invece consentire una sorta di via di mezzo. Questi sostenitori centristi suggerirebbero probabilmente che parte del tuo codice sorgente va bene per essere bloccato con un lucchetto e tenuto nascosto, nel frattempo altre parti della fonte dovrebbero essere mostrate apertamente al mondo in generale. Questa sembra una prospettiva potenzialmente ragionevole, affermano questi mediatori.
Non è così, dicono gli estremisti, poiché questo è il peggiore dei meccanismi di entrambi i mondi piuttosto che il migliore di entrambi i tipi di compromesso.
Aprendo la porta a qualsiasi codice sorgente, si dice che sia un invito a ulteriori intrusioni. I teaser rivelati stuzzicheranno semplicemente l’appetito per altro da divulgare. Inoltre, potrebbe mostrare aspetti che rendono molto più semplice l’interruzione nel resto del codice sorgente o almeno consente di fare un po ‘di ingegneria inversa mentale per capire in cosa consiste il codice rimanente. Ergo, secondo l’avido campo di repressione, qualunque cosa tu faccia, sicuramente non permetti al tuo codice sorgente di vedere la luce del giorno.
Il punto di vista opposto dei sostenitori dell’open source è che non sarai mai in grado di impedire che il tuo codice sorgente venga inevitabilmente visto. In un modo o nell’altro colerà fuori. Ti cullerai falsamente nel pensare di avere questo animale in gabbia e che non ci sono apparenti mezzi di fuga. Invece, c’è una probabilità che la creatura sia già in giro, semplicemente non lo sai e non hai preso precauzioni sufficienti perché hai assurto scioccamente e continui ciecamente a presumere che il recinto sia chiuso a chiave come un tamburo.
Intorno a questa giostra, andiamo su questo argomento controverso.
Parlando di codice sorgente, si consideri una recente ondata di notizie degne di nota sulle incursioni di codice sorgente di alto profilo.
Recentemente, nei titoli dei giornali, Microsoft ha riconosciuto che parte del suo codice sorgente è stato visualizzato in modo non autorizzato (secondo il loro comunicato stampa sull’argomento): “Abbiamo rilevato attività insolite con un piccolo numero di account interni e dopo la revisione, abbiamo scoperto che un account aveva stato utilizzato per visualizzare il codice sorgente in una serie di archivi di codice sorgente. L’account non disponeva delle autorizzazioni per modificare alcun codice o sistema di ingegneria e la nostra indagine ha inoltre confermato che non sono state apportate modifiche. Questi account sono stati esaminati e risolti “.
Potresti anche ricordare che recentemente ci sono state segnalazioni di codice sorgente trapelato da Nissan, secondo quanto riferito a causa di un server Git configurato male (un server Git è una struttura online per memorizzare il codice sorgente e altri aspetti di configurazione correlati per la programmazione).
E, l’anno scorso, c’era una notizia secondo la quale Mercedes aveva riscontrato una rivelazione del codice sorgente. Apparentemente, un sito Git utilizzato da Daimler AG è stato utilizzato da una parte non autorizzata per dare un’occhiata al codice sorgente del software Onboard Logic Units (OLU) utilizzato in alcuni modelli di furgoni Mercedes-Benz.
Ci sono state reazioni contrastanti a queste infiltrazioni del bulbo oculare del codice sorgente.
Per alcuni, questa ondata emergente di esposizioni note al codice sorgente è un segno evidente che il tentativo di tenere nascosto il codice sorgente è privo di problemi e in definitiva insostenibile come approccio alla gestione del codice sorgente (tenendo presente che i casi segnalati sono probabilmente solo un piccola porzione del numero effettivo di tali istanze). Altri però sottolineano che questo indica semplicemente che ci sono persone là fuori che mineranno il duro lavoro degli altri e saranno disposte a compiere azioni apparentemente malvagie. Ci saranno sempre malfattori e ci sarà sempre bisogno di volte in acciaio e recinzioni elettrificate per tenere fuori gli intrusi.
Un aspetto degno di nota delle violazioni del codice sorgente è la facilità con cui queste incursioni tendono a essere minimizzate. Le aziende così colpite sono destinate a dipingere un quadro che questi eventi non sono particolarmente sconvolgenti, e quindi in un modo simile a Yoda tentano di farti guardare altrove e non concentrarti sulle ramificazioni di tali intrusioni.
Per il grande pubblico, spesso non sono del tutto sicuri di cosa fare di queste questioni.
Solo perché qualcuno è stato in grado di vedere il tuo codice sorgente, non sembra esserci nulla di cui scrivere a casa e, sebbene certamente inquietante e non avrebbe dovuto aver luogo, sembra essere un classico esempio di nessun danno, nessun fallo. Ebbene, sì, è stato sicuramente brutto essere immersi nei tesori di un altro, ma il solo aspetto sembra innocuo e inefficace. Forse è come entrare in un pregiato museo d’arte e osservare con rapita attenzione le opere d’arte sui muri. Finché non rovini l’opera d’arte o non spruzzi i graffiti, questo sembra un atto strano ma senza significato.
In realtà, è stato fatto del male.
Arriverò a quei danni in un attimo, e perforerò anche la suddetta analogia con un museo d’arte. Siamo onesti e riconosciamo che ci sono problemi dimostrativi associati alla rivelazione illegale di codice sorgente proprietario.
Inoltre, possiamo alzare la posta.
Considera il codice che è roba abbastanza seria, vale a dire il codice sorgente sviluppato per le auto a guida autonoma.
Le auto sono macchine per la vita o la morte che rotolano sulle nostre strade e strade secondarie. Dico che sono vita o morte a causa dell’aspetto che chiunque guidi un’auto, sia esso umano o IA, ha al proprio comando la capacità di determinare dove va l’auto e cosa fa. I passeggeri all’interno di un’auto sono a rischio, così come le auto occupate nelle vicinanze, i ciclisti e, allo stesso modo, anche i pedoni serpeggianti sono a rischio.
Probabilmente non pensi alla guida come una questione di vita o di morte, ma in effetti lo è, e ogni volta che sei al volante, stai decidendo il destino degli altri intorno a te. Così sono tutti gli altri piloti.
È ora di disfare tutto questo in quanto si riferisce in particolare alle auto a guida autonoma.
Comprensione dei livelli delle auto a guida autonoma
Per chiarire, le vere auto a guida autonoma sono quelle che l’IA guida l’auto interamente da sola e non c’è alcuna assistenza umana durante l’attività di guida.
Questi veicoli senza conducente sono considerati di Livello 4 e Livello 5 mentre un’auto che richiede un guidatore umano per condividere lo sforzo di guida è solitamente considerata di Livello 2 o Livello 3. Le auto che condividere l’attività di guida sono descritti come semi-autonomi e in genere contengono una varietà di componenti aggiuntivi automatizzati denominati ADAS (Advanced Driver-Assistance Systems).
Non c’è ancora una vera auto a guida autonoma al Livello 5, che non sappiamo nemmeno se sarà possibile raggiungere, né quanto tempo ci vorrà per arrivarci.
Nel frattempo, gli sforzi di Livello 4 stanno gradualmente cercando di ottenere un po ‘di trazione sottoponendosi a prove su strade pubbliche molto strette e selettive, anche se c’è controversia sul fatto che questo test debba essere consentito di per sé (siamo tutti cavie di vita o di morte in un esperimento che si svolgono sulle nostre autostrade e strade secondarie, alcuni sostengono, vedere la mia copertura a questo link qui ).
Poiché le auto semi-autonome richiedono un guidatore umano, l’adozione di questi tipi di auto non sarà notevolmente diversa dalla guida di veicoli convenzionali, quindi non c’è molto di nuovo di per sé da trattare su questo argomento (anche se, come vedrai in un momento, i punti esposti successivamente sono generalmente applicabili).
Per le auto semiautonome, è importante che il pubblico debba essere avvisato di un aspetto inquietante che si è verificato ultimamente, ovvero che nonostante quei guidatori umani che continuano a postare video di se stessi addormentati al volante di un’auto di Livello 2 o Livello 3 , dobbiamo tutti evitare di farci credere che il conducente possa distogliere la sua attenzione dal compito di guida mentre guida un’auto semiautonoma.
Sei la parte responsabile delle azioni di guida del veicolo, indipendentemente da quanta automazione potrebbe essere lanciata in un Livello 2 o Livello 3.
Auto a guida autonoma e gestione del codice sorgente
Per i veri veicoli a guida autonoma di livello 4 e 5, non ci sarà un guidatore umano coinvolto nell’attività di guida.
Tutti gli occupanti saranno passeggeri.
L’intelligenza artificiale sta guidando.
Come fa l’IA a “sapere” come guidare una macchina?
Per coloro che presumono che un sistema di intelligenza artificiale in grado di guidare richieda una sensibilità simile a quella umana, mi dispiace far scoppiare quella bolla, l’IA è solo un software (almeno per ora, anche se ci sono molte speculazioni su cosa potrebbe essere l’IA del futuro, vedere le mie previsioni al link qui ).
Alla base dei sistemi di guida basati sull’intelligenza artificiale c’è il codice sorgente che consiste nella programmazione convenzionale, milioni e milioni di righe di codice. Inoltre, ci sono l’uso di algoritmi di Machine Learning e Deep Learning, che si basano ancora sul codice sorgente, insieme alle tonnellate di dati che vengono utilizzati per aiutare nell’addestramento del pattern matching computazionale necessario per guidare un’auto.
Analogamente alla discussione precedente sull’approccio dei due campi divergenti al codice sorgente, anche l’industria automobilistica a guida autonoma è divisa.
Alcuni sostengono una strada decisamente open source per le auto a guida autonoma. Le aziende stanno sviluppando codice open-source per sistemi di guida AI e gli enti di ricerca, inclusi i laboratori di intelligenza artificiale universitari, lo stanno facendo (vedi la mia copertura a questo link qui ). Ciononostante, nel complesso le case automobilistiche commerciali e le aziende tecnologiche a guida autonoma stanno attualmente perseguendo la strada proprietaria più del percorso open source (detto questo, alcuni stanno facendo un mix-and-match delle proprie cose private con l’uso aggiunto dell’open source).
Il codice sorgente proprietario o privato è simile a un’opera d’arte in un museo chiuso a chiave e per il quale qualsiasi incursione non autorizzata è relativamente benigna se non apparentemente altera o altera il codice in atto?
In parole semplici, la risposta è no.
Ecco perché.
Quelli che hanno gli occhi sul codice sorgente sono altrettanto probabilmente in grado di copiarlo. In quel caso, ora hanno il codice sorgente nelle loro mani, separato e separato da dove il codice sorgente era originariamente ospitato. Con quella copia, possono studiarla tranquillamente, quindi apportare modifiche al contenuto del loro cuore e provare a ridistribuire il software (ne parleremo tra poco).
In un museo d’arte, presumibilmente stai guardando gli originali dell’opera d’arte. C’è il desiderio di mantenere quell’opera d’arte originale incontaminata e pura, inalterata o danneggiata sotto qualsiasi aspetto. In generale, puoi discernere la differenza tra il vero originale e qualsiasi versione falsificata o fabbricata.
Con il codice sorgente, essenzialmente non esiste un modo pronto per accertare se la copia è una copia, ed essenzialmente è una copia completa e indistinguibile dell’originale (tutto il resto è uguale).
Inoltre, il codice sorgente è malleabile in un modo che un’opera d’arte non è altrettanto impregnata.
Tutto sommato, anche se le notizie sembrano suggerire che qualcuno abbia solo guardato il codice sorgente, la realtà è che avrebbero potuto benissimo copiarlo, e anche poi scegliere di cambiarlo, come avrebbero desiderato.
In effetti, l’intruso potrebbe non aver modificato la cosiddetta istanza originale, dal momento che il codice sorgente potrebbe essere mantenuto in uno stato di sola lettura al suo punto di origine, sebbene questo infondi anche un potenziale pericolo “nascosto” non realizzato per coloro che fanno affidamento sul codice sorgente originale (in sostanza, se l’intruso avesse potuto alterare il codice sorgente originale al suo punto di normale archiviazione, fa presagire seri dubbi su quali modifiche sono state apportate, e soprattutto se gli sviluppatori del codice sorgente non sono a conoscenza di ciò che è stato alterato e non stanno cercando deliberatamente di trovare tali cambiamenti).
Ok, quindi supponiamo che il codice sorgente sia ancora intatto nel punto di archiviazione originale (che potrebbe non essere necessariamente così) e che l’intruso abbia “solo” afferrato una copia del codice sorgente.
Anche se l’intruso non cerca di cambiare il codice, può almeno ispezionare il codice, facendolo per scopi nefandi. Possono cercare di trovare punti deboli nel codice sorgente.
Ciò potrebbe consentire all’intruso di escogitare un mezzo per penetrare nel sistema che esegue il software in base a quel codice sorgente. Oppure potrebbe consentire all’intruso di trovare un mezzo per potenziare il software e fare in modo che il sistema accetti un tipo di cavallo di Troia. Anche nella forma più semplice di manipolazione, potrebbe esserci un mezzo scoperto per far reagire il software in esecuzione in un modo in cui si desidera che lo faccia, apparentemente con una sorta di manierismo magico quando in realtà è dovuto al sapere cosa si presume meccanismi interni non rivelati stanno facendo.
Per le auto a guida autonoma, si spera che la gamma di esposizioni sia mantenuta a elementi meno cruciali, forse controllando l’aria condizionata o se il sistema di intrattenimento funzioni correttamente. Le possibilità più terribili includono la possibilità di accedere ai controlli di guida o altrimenti confondere o reindirizzare i sistemi di guida AI (non entrerò nei dettagli più chiari qui, ma sono sicuro che puoi immaginare i possibili risultati negativi, vedi le mie analisi nelle mie colonne).
Renditi conto che c’è un codice sorgente alla base del software che esegue tutti i sensori specializzati su un’auto a guida autonoma, incluse le videocamere, il radar, il LIDAR, le unità a ultrasuoni, la termografia, ecc. come confondere un sensore o indurlo a riportare male ciò che è stato rilevato.
C’è il codice sorgente che è alla base del sistema di guida AI poiché riunisce i dati sensoriali e tenta di unire e allineare ciò che i sensori indicano. Questo è indicato come Multi-Sensor Data Fusion (MSDF) e di solito è un codice sorgente tenuto sotto stretto controllo e visto solo dai programmatori responsabili di tale capacità.
Lo stesso si può dire per il codice sorgente che implica la capacità del mondo virtuale del sistema di guida AI, che viene utilizzato per tenere traccia degli oggetti rilevati nel mondo reale e cercare di capire l’ambiente di guida circostante. Esiste un codice sorgente per la parte del sistema di guida AI che pianifica le azioni di guida da eseguire. C’è il codice sorgente per l’interfaccia del sistema di guida AI ai controlli di guida, controllando l’acceleratore, i freni, lo sterzo e simili.
Tutto sommato, è un vero e proprio carico di software e un enorme carico di codice sorgente.
Un altro aspetto subdolo comporta la riscrittura o la modifica del codice e quindi il tentativo di reinserire la versione modificata nel repository del codice sorgente, come se fosse sempre presente o tentare di vedere se è possibile sostituire il software in esecuzione con la versione modificata basata sul modifiche al codice sorgente che hai apportato.
Ci sono preoccupazioni sulla sicurezza informatica che alcuni malfattori potrebbero organizzare per essere un passeggero apparentemente quotidiano per un’auto a guida autonoma, e tuttavia una volta entrati, tenterebbero di infiltrarsi di nascosto nel sistema di guida AI caricando il loro codice alternativo nell’hardware di bordo. Presumibilmente, ciò sarebbe evitato dalle precauzioni di sicurezza hardware e software, anche se se il codice sorgente è stato accuratamente ispezionato da un cattivo attore, forse avranno trovato una lacuna o una scappatoia che può essere sfruttata.
Gli stessi scrupoli possono essere applicati all’utilizzo dell’aggiornamento elettronico OTA (Over-The-Air).
Generalmente pensiamo all’OTA come a un ottimo mezzo per poter aggiornare da remoto il software di un’auto a guida autonoma, mantenendo così rapidamente e facilmente aggiornati i sistemi di guida AI (farlo senza dover guidare in una concessionaria per fare l’aggiornamento) . Sfortunatamente, l’OTA fornisce anche un portale privilegiato per l’infezione di virus informatici e altri malware direttamente nel sistema di guida AI di bordo. Varie protezioni di sicurezza informatica sono state integrate nell’OTA, ma se i cattivi attori possono vedere quali sono queste protezioni, ciò aumenta le possibilità di capire trucchi o aggiramenti per far entrare il loro codice verboten.
In breve, essere in grado di accedere a codice sorgente proprietario fornisce numerosi potenziali problemi di sicurezza informatica che possono successivamente essere risolti da un determinato hacker o malfattore ostile.
Conclusione
La regola empirica per coloro che sono ardenti sostenitori dell’approccio proprietario del codice sorgente è che devono lavorare sempre e continuamente partendo dal presupposto che il loro codice sorgente uscirà. Coloro che prendono a cuore quel mantra sono decisi a cercare di scovare tutte le possibilità di come la rivelazione del loro codice sorgente potrebbe portare a problemi e quindi mirano stridamente a tappare quelle insidie prima che il codice sia mai trapelato.
In sostanza, la modalità predefinita degli sviluppatori di software è che il codice sorgente è stato o sarà violato. In questo modo di presupposto fondamentale, dovrebbero escogitare il codice sorgente in modo che, anche se viene visto, le sfaccettature rivelatrici non mineranno la sicurezza del sistema risultante.
Può quella mentalità essere pienamente realizzata?
I sostenitori dell’open source affermano che è sconsiderato fare un’ipotesi del genere. È meglio lasciare che tutti gli occhi vedano il codice sorgente, il che significa anche che la “saggezza della folla” troverà scappatoie e trucchi, piuttosto che fare affidamento sulle manciate di programmatori assegnati alla codifica della fonte privata.
Se il software coinvolto è relativamente poco importante, forse una violazione della sicurezza del codice sorgente non è particolarmente importante. Quando il codice sorgente viene utilizzato per software che ha conseguenze per la vita o la morte, qualsiasi violazione merita un’attenzione sostanziale e coloro che sviluppano sistemi di guida dell’IA stanno auspicabilmente e diligentemente prendendo a cuore il significato di ciò.
Possa la fonte essere con te.
Ma solo se è una cosa buona e non viene utilizzata per il male.