Perché la sostituzione dell'APK di Google Play sta spaventando alcuni esperti di sicurezza

click fraud protection

Google Play costringerà presto gli sviluppatori a caricare app bundle anziché APK, sollevando scomode domande di sicurezza relative a tale requisito.

Lo scorso novembre, Google ha annunciato che gli sviluppatori dovranno pubblicare nuove app sul Play Store utilizzando il formato Android App Bundle (AAB) anziché un APK. Proprio l’altro giorno, Google ha ricordato agli sviluppatori questo imminente requisito, scatenando una tempesta di polemiche da utenti che credono che Google stia uccidendo gli APK, eliminando il sideloading, ostacolando gli app store di terze parti e cosa no.

È vero che gli Android App Bundle rappresentano un notevole allontanamento dal classico formato APK a cui potresti essere abituato, sia come utente che come sviluppatore. Anche se ci sono parecchi vantaggi nell'usare gli App Bundle, c'è un aspetto chiave nel realizzarli che preoccupa giustamente alcuni sviluppatori ed esperti di sicurezza.

In questo articolo tratteremo le critiche che abbiamo riscontrato riguardo al passaggio agli Android App Bundle, nonché alcune soluzioni proposte, e parleremo anche della soluzione proposta da Google a questi problemi.

Sfondo

Prima che ciò accada, però, dobbiamo parlare un po’ di come funziona la distribuzione delle app su Android in generale. Se sai già come funzionano la firma delle app e gli app bundle, puoi saltare questa parte.

APK

Per la maggior parte, le app su Android sono distribuite all'interno di file APK. Un APK contiene tutto il codice e le risorse di un'app, insieme ad alcune funzionalità di sicurezza come un manifest di firma. Quando viene installato un APK, viene semplicemente copiato in una cartella specifica e aggiunto a un database interno di app installate.

Il contenuto di un file APK può essere esplorato proprio come i formati di file di archivio come .zip.

Firme

Durante l'installazione, viene verificata anche la firma dell'app per assicurarsi che sia valida. Se l'app è già installata, Android confronta la firma della nuova app con quella già installata. Se la firma non è valida o non corrisponde, Android rifiuterà di installare l'app.

Il controllo della firma è una parte importante della sicurezza in Android. Si assicura che l'app che stai installando sia valida e almeno dalla stessa fonte di quella che hai già installato. Ad esempio, se installi, ad esempio, la mia app Lockscreen Widget dal Play Store, puoi essere ragionevolmente sicuro che sono stato io a firmarlo e che è autentico. Se poi provi a installare un aggiornamento ai widget Lockscreen da qualche losco sito di terze parti e fallisce, saprai che qualcuno ha manomesso l'APK, probabilmente per aggiungere malware.

La chiave utilizzata per firmare un'app è (idealmente) Mai rilasciato pubblicamente. Questa è nota come chiave privata. La chiave privata viene quindi utilizzata per generare la chiave mostrata nella firma dell'app, nota come chiave pubblica. Questo è ciò che Android e gli app store utilizzano per verificare la validità di un'app. Non entrerò nel dettaglio di come sia possibile generare esattamente una chiave pubblica senza esporre la chiave privata, poiché implica molti calcoli di crittografia. Se vuoi maggiori dettagli, dai un'occhiata La documentazione di Google sulla firma degli APK o fare qualche ricerca sulle funzioni matematiche unidirezionali.

Firma di un'app quando gestisci la tua chiave di firma dell'app. Fonte: Google.

Un'altra caratteristica delle firme delle app è la possibilità di limitare le autorizzazioni solo alle app con firme corrispondenti. Android lo fa internamente per molte funzioni, dove solo le app firmate con la stessa chiave del framework possono accedere a determinate funzionalità.

Pacchetti di app

Quindi, ora che abbiamo fornito una rapida panoramica di APK e firme, parliamo degli App Bundle. È qui che entrano in gioco le risorse APK. Le risorse sono cose come layout, immagini, audio, ecc. Fondamentalmente, sono tutto ciò che non è codice. Per supportare meglio diverse configurazioni di visualizzazione e lingue diverse, gli sviluppatori possono creare più versioni della stessa risorsa utilizzate a seconda del dispositivo e della lingua.

Ma in un APK esistono tutte queste risorse, indipendentemente da quale utilizzi. E occupano spazio. A seconda della complessità della tua app, potrebbero esserci molte risorse inutilizzate per molti dispositivi. Questo è ciò per cui sono stati creati gli App Bundle. Gli sviluppatori possono generare un app bundle proprio come un APK e tale app bundle può quindi essere caricato sul Play Store, proprio come fa un APK.

Il contenuto di un Android App Bundle di esempio che mostra un modulo di base, due moduli di funzionalità dinamiche e due pacchetti di risorse. Fonte: Google.

Google utilizza quindi l'App Bundle per generare un sacco di APK diversi per diverse configurazioni del dispositivo. Ogni App Bundle contiene solo le risorse necessarie per quella configurazione. Quando un utente scarica l'app, gli viene servito l'APK generato che corrisponde alla sua configurazione. Ciò aiuta a ridurre le dimensioni di download e installazione delle app, risparmiando larghezza di banda e spazio di archiviazione.

Un grafico che mostra come la consegna dinamica può comportare l'installazione di meno risorse su un dispositivo. Fonte: Google.

Ovviamente, installare un APK specifico per il tuo dispositivo significa che sarà più difficile copiarlo su un altro dispositivo e installarlo senza problemi. A seconda del tuo punto di vista, questo può essere un bene o un male. Da un lato ciò rende più difficile la pirateria, poiché gli utenti non dispongono più dell'intera app. D’altro canto, rende più difficile l’archiviazione legittima delle app, per lo stesso motivo.

Firma dell'app

Poiché gli Android App Bundle non sono APK, non puoi semplicemente aprire un file AAB e installarlo direttamente su un dispositivo. Quando ne carichi uno sul Play Store, Google utilizza il pacchetto per generare diversi file APK (non firmati). Tali APK devono quindi essere firmati prima di poter essere installati.

Invece di chiedere allo sviluppatore di firmare e ricaricare gli APK generati, Google gestisce invece la firma stessa. Il Play Store utilizza una nuova chiave creata oppure chiede allo sviluppatore la chiave utilizzata per firmare APK. Con entrambe le opzioni, Google gestisce la firma pubblica per lo sviluppatore e fornisce un caricamento chiave. Google utilizza la chiave di caricamento per la verifica interna e si assicura che l'App Bundle (o l'APK in alcuni casi) che lo sviluppatore sta caricando sia quello giusto.

Firma di un'app con la firma dell'app Play. Fonte: Google

Se una chiave di caricamento viene compromessa o persa, gli sviluppatori possono richiederne una nuova e la chiave di firma utilizzata per distribuire l'app rimane invariata.

C'è molto di più sulla firma dell'app, ma questo è ciò che è rilevante per questo articolo. Se lo desideri, puoi leggere ulteriori informazioni sugli app bundle e sull'accesso all'app questo articolo su Medium di Wojtek Kaliciński.

Critica

In teoria e in pratica, gli App Bundle sono davvero fantastici. Riducono l'utilizzo dei dati e le dimensioni dell'installazione, il tutto senza che l'utente debba fare nulla. Ma a causa del modo in cui è implementato, negli ultimi mesi alcuni sviluppatori e ricercatori di sicurezza hanno sollevato preoccupazioni. Prima di riassumere queste preoccupazioni, voglio prendermi un momento per dire che la maggior parte di ciò che è scritto di seguito è diretto sulla base di una serie di articoli dallo sviluppatore Mark Murphy di Commonsware. Dovresti assolutamente dare un'occhiata ai suoi articoli, poiché forniscono maggiori dettagli e critiche dal punto di vista di uno sviluppatore.

Sicurezza

Nel modello di distribuzione classico, uno sviluppatore mantiene privata la chiave utilizzata per firmare un APK. Non viene mai condiviso pubblicamente e solo le persone autorizzate dovrebbero avervi accesso. Ciò garantisce che solo queste persone possano generare un APK valido.

Ma se utilizzi gli App Bundle sul Play Store, è Google a gestire la chiave che firma gli APK ricevuti dagli utenti. IL predefinito comportamento per le nuove app caricate su Google Play a partire da agosto 2021 spetta a Google creare la propria chiave di distribuzione che mantiene privata dallo sviluppatore.

Riepilogo di cosa cambierà per gli sviluppatori di Google Play a partire da agosto 2021. Fonte: Google

Invio da parte degli sviluppatori nuove app farà in modo che Google gestisca la propria chiave privata per impostazione predefinita, sebbene gli sviluppatori inviino aggiornamenti a app esistenti può continuare a utilizzare gli APK O possono passare alla distribuzione AAB generando una nuova chiave che Google potrà utilizzare per i nuovi utenti. App esistenti non sono richiesti per passare dalla distribuzione APK agli Android App Bundle, sebbene tale opzione sia disponibile se lo desiderano. Dopo qualche resistenza, Google lo renderà addirittura possibile per caricare la tua chiave privata con cui Google potrà accedere, sia per le app nuove che per quelle esistenti. Nessuna di queste situazioni è ideale, poiché qualunque cosa accada, Google avrà accesso alla tua chiave privata, se lo desideri utilizzare gli Android App Bundle (e gli sviluppatori non hanno scelta in merito se vogliono inviare una nuova app dopo agosto 2021!)

Anche se siamo certi che Google prenda molto sul serio la sicurezza, non esiste azienda sulla Terra che sia immune dalle violazioni dei dati. Se la chiave utilizzata da Google per firmare la tua app per la distribuzione rientra in una di queste violazioni, chiunque può firmare una versione della tua app e far sembrare che sia stata firmata da te. E alcuni sviluppatori ed esperti di sicurezza non sono contenti di questa possibilità. È una possibilità molto, molto remota, sì, ma il fatto che sia una possibilità spaventa alcuni nella comunità della sicurezza informatica.

Avere gli sviluppatori che firmano gli APK Android significa che chiunque può verificare gli APK da Google Play, non è richiesta la fiducia cieca. È un design elegante che fornisce una sicurezza verificabile. Gli App Bundle ribaltano la situazione e sembrano strutturati per promuovere il vincolo del fornitore. Esistono molti approcci tecnici alternativi che fornirebbero piccoli APK ancora firmati dagli sviluppatori, ma questi non preferirebbero Play. Ad esempio, tutte le varianti APK potrebbero essere generate e firmate dallo sviluppatore, quindi caricate su qualsiasi app store.

Sicuramente c'è da discutere se sia meglio lasciare la custodia sicura delle chiavi private nelle mani di Google o dei singoli sviluppatori. Ma questi sviluppatori (probabilmente) di solito non utilizzano un repository centrale per le loro chiavi. Obbligando gli sviluppatori a utilizzare la firma dell'app Play, un utente malintenzionato deve solo violare la sicurezza di Google una volta per recuperare migliaia o milioni di chiavi.

Per quello che vale, ecco cosa dice Google su come protegge la tua chiave di firma sulla sua infrastruttura:

[blockquoteauthor="Wojtek Kaliciński, Android Developer Advocate presso Google"]Quando utilizzi la firma dell'app Play, le tue chiavi vengono archiviate nella stessa infrastruttura utilizzata da Google per archiviare le proprie chiavi.

L'accesso alle chiavi è regolato da ACL rigorosi e da audit trail a prova di manomissione per tutte le operazioni.

Tutti gli elementi generati e firmati con la chiave dello sviluppatore vengono resi disponibili nella Google Play Console per l'ispezione/attestazione.

Inoltre, per prevenire la perdita delle chiavi, effettuiamo backup molto frequenti del nostro storage primario. Questi backup sono fortemente crittografati e testiamo regolarmente il ripristino da questi backup.

Se vuoi conoscere l’infrastruttura tecnica di Google, leggi il Whitepaper sulla sicurezza di Google Cloud.[/blockquote]

Per quanto grandioso, tutti i rumori, le perdite e i furti sono ancora possibili. E gli audit trail aiutano solo a prevenire attacchi futuri; non riceveranno indietro le chiavi violate.

Potenziale di modifiche non autorizzate

Un grosso problema con il modo in cui Google ha impostato gli app bundle è la possibilità che vengano aggiunte modifiche non autorizzate a un'app. Il processo di estrazione degli APK da un App Bundle comporta intrinsecamente delle modifiche, poiché Google deve creare manualmente ciascun APK. Mentre Google ha promesso che non inietterà o modificherà codice, il problema con il processo dell'App Bundle è che ha il potere di farlo.

Ecco un paio di esempi di ciò che un'azienda nella posizione di Google ha il potere di fare:

Supponiamo che esista un'app di messaggistica sicura che le persone utilizzano per comunicare senza il rischio della sorveglianza governativa. Questo potrebbe essere uno strumento incredibilmente utile per le persone che protestano contro un governo autoritario o anche per le persone che vogliono semplicemente mantenere la propria privacy. Quel governo, volendo poter vedere cosa dicono gli utenti dell'app, potrebbe provare a costringere Google ad aggiungere una backdoor di sorveglianza nel codice dell'app.

Questo esempio è un po' più innocuo, ma è anche qualcosa che preoccupa alcune persone. Supponiamo che esista un'app che riceve milioni di download al giorno, ma non contiene pubblicità o analisi. Si tratta di un'enorme fonte di dati senza alcun modo per accedere a tali dati. Google, essendo una società pubblicitaria, potrebbe voler accedere a tali dati.

Nel classico modello APK di distribuzione delle app, Google non può modificare le app senza cambiare la firma. Se Google modifica la firma, soprattutto su un'app popolare, le persone se ne accorgeranno perché l'aggiornamento non verrà installato. Ma con gli app bundle e la firma delle app, Google potrebbe inserire silenziosamente il proprio codice nelle app prima di distribuirle. La firma non cambierebbe perché Google possiederebbe la chiave di firma.

Nello schema di distribuzione APK classico, un file APK aggiornato deve essere firmato con la stessa chiave utilizzata per firmare l'APK originale. Questa chiave è idealmente detenuta solo dal singolo sviluppatore. Fonte: Zachary Wander.

Per essere chiari, questi esempi sono incredibilmente improbabili che si verifichino. Google tende a semplicemente uscire del tutto dai mercati problematici, piuttosto che adattarsi. Ma anche se è improbabile, è ancora possibile. Solo perché un'azienda promette che qualcosa non accadrà, non lo garantisce.

Trasparenza del codice

Google, sentendo queste preoccupazioni, questa settimana ha introdotto una nuova funzionalità chiamata Trasparenza del codice per gli app bundle. La trasparenza del codice consente allo sviluppatore di creare essenzialmente una seconda firma fornita agli utenti con l'app. Questa firma aggiuntiva dovrebbe essere creata da una chiave privata separata a cui solo lo sviluppatore ha accesso. Tuttavia, ci sono alcune limitazioni a questo metodo.

Come funziona la trasparenza del codice per gli Android App Bundle. Fonte: Google

La trasparenza del codice copre solo il codice. Potrebbe sembrare ovvio dato il nome, ma significa anche che non consente agli utenti di verificare le risorse, il manifest o qualsiasi altra cosa che non sia un file DEX o una libreria nativa. Anche se le modifiche dannose ai file non di codice di solito hanno un impatto molto minore, rappresentano comunque una falla nella sicurezza dell'app.

Un altro problema con la trasparenza del codice è che non esiste alcuna verifica intrinseca. Per uno, è una funzionalità opzionale, quindi gli sviluppatori devono ricordarsi di includerlo per ogni nuovo APK che caricano. Al momento, deve essere fatto dalla riga di comando e con una versione di bundletool questo non viene fornito con Android Studio. Anche quando uno sviluppatore lo include, Android non dispone di alcun tipo di verifica integrata per verificare che il manifest di Code Transparency corrisponda al codice nell'app.

Spetta all'utente finale verificare autonomamente confrontando il manifest con una chiave pubblica che lo sviluppatore può fornire o inviando l'APK allo sviluppatore per la verifica.

Anche se la trasparenza del codice consente di confermare che nessun codice in un'app viene modificato, non include alcun tipo di verifica per altre parti di un'app. Inoltre non c'è fiducia intrinseca nel processo. Potresti sostenere che se non ti fidi di Google, probabilmente sei all'altezza del compito di verificare in modo indipendente, ma perché dovresti farlo?

Ci sono altri problemi con la funzionalità di trasparenza del codice, come ha sottolineato di Mark Murphy da Commonsware. Consiglio la lettura del suo articolo per un'analisi più approfondita della funzionalità.

Convenienza e scelta per gli sviluppatori

Un terzo (e ultimo per questo articolo) motivo per cui alcuni sviluppatori contestano gli App Bundle è la ridotta comodità e scelta.

Se uno sviluppatore crea una nuova app sul Play Store dopo che Google ha iniziato a richiedere gli app bundle e ha scelto l'opzione predefinita che consente a Google di gestire la chiave di firma, non avranno mai accesso a tale firma chiave. Se lo stesso sviluppatore desidera distribuire l'app su un altro app store, dovrà utilizzare la propria chiave, che non corrisponderà a quella di Google.

Ciò significa che gli utenti dovranno installare e aggiornare da Google Play o da fonti di terze parti. Se vogliono cambiare la fonte, devono disinstallare completamente l'app, perdendo potenzialmente i dati, e reinstallarla. Aggregatori APK come APKMirror dovrà poi fare i conti anche con più firme ufficiali per la stessa app. (Tecnicamente, devono già farlo perché la firma dell'app ti consente di creare una chiave nuova e più sicura per i nuovi utenti, ma sarà peggio per loro e per altri siti quando tutti ha per farlo.)

La risposta di Google a questo problema è utilizzare l'Explorer dell'App Bundle o l'Explorer degli Artifact nella Play Console per scaricare gli APK risultanti dal bundle caricato. Analogamente a Code Transparency, questa non è una soluzione completa. Gli APK scaricati dalla Play Console verranno suddivisi per diversi profili di dispositivo. Sebbene la Play Console supporti il ​​caricamento di più APK per una versione di un'app, molti altri canali di distribuzione no.

Pertanto, molti dei vantaggi derivanti dall'utilizzo degli app bundle scompaiono quando gli sviluppatori gestiscono più negozi, rendendo la distribuzione più difficile. Con la notizia che finestre11 È ottenere il supporto per le app Android grazie ad Amazon Appstore, alcuni ritengono che il requisito degli App Bundle disincentiverà gli sviluppatori dalla distribuzione su Amazon. Naturalmente, la preoccupazione principale di Google è il proprio app store, ma è esattamente quello li hanno messi nei guai con i concorrenti portandoli a fare piccoli cambiamenti concilianti su come funzionano gli app store di terze parti su Android.

Un paio di problemi correlati a più negozi sono l'interconnettività delle app e i test rapidi.

Cominciamo con l'interconnettività delle app. Hai mai scaricato un'app che blocca le funzionalità dietro un paywall? Quasi sicuramente. Alcuni sviluppatori inseriscono le funzionalità dietro un acquisto in-app, ma altri possono scegliere di creare un'app separata, a pagamento. Quando l'app aggiuntiva viene installata, le funzionalità dell'app principale vengono sbloccate.

Ma cosa impedisce a qualcuno di installare il componente aggiuntivo semplicemente da una fonte pirata? Bene, ci sono molte opzioni per gli sviluppatori, ma almeno una prevede l'utilizzo di autorizzazioni protette dalla firma. Supponiamo che l'app principale dichiari un'autorizzazione protetta dalla firma. L'app aggiuntiva dichiara quindi di voler utilizzare tale autorizzazione. Idealmente, l'app aggiuntiva avrà anche una sorta di funzionalità di verifica della licenza, che si connette a Internet per assicurarsi che l'utente sia legittimo.

Se entrambe le app hanno la stessa firma, Android concederà l'autorizzazione all'app aggiuntiva e i controlli di protezione dalla pirateria supereranno. Se l'app aggiuntiva non ha la firma corretta, l'autorizzazione non verrà concessa e la verifica fallirà.

Con il classico modello di distribuzione APK, un utente può ottenere entrambe le app da qualsiasi fonte legittima e non utilizzarle più. Con l'attuale modello di app bundle predefinito, le firme sulle app principali e aggiuntive non corrisponderanno. Google creerà una chiave univoca per ogni app. Lo sviluppatore potrebbe sempre eliminare l'autorizzazione protetta dalla firma e utilizzare la verifica diretta dell'hash della firma, ma è molto meno sicuro.

E poi ci sono i test rapidi. Gli utenti inviano continuamente email agli sviluppatori in merito ai problemi nelle loro app. A volte questi problemi sono soluzioni semplici: riproduci il problema, trova il problema, risolvilo e carica una nuova versione. Ma a volte non lo sono. A volte gli sviluppatori non riescono a riprodurre un problema. Possono risolvere quello che pensano sia il problema, ma poi l'utente deve testarlo. Supponiamo ora che l'utente abbia installato l'app tramite Google Play.

Con il modello APK, uno sviluppatore può modificare parte del codice, creare e firmare un nuovo APK e inviarlo all'utente per il test. Poiché la firma dell'APK di prova corrisponde a quella installata dall'utente, aggiornare, testare e riferire è un processo semplice. Con gli App Bundle tutto questo crolla. Poiché Google firma l'APK originariamente installato dall'utente, questo non corrisponderà alla firma dell'APK inviato dallo sviluppatore. Se questa app viene pubblicata dopo la scadenza degli App Bundle, lo sviluppatore non avrà nemmeno accesso alle chiavi utilizzate da Google. Per testare, l'utente dovrebbe disinstallare l'app corrente prima di installare la versione di prova.

Ci sono un sacco di problemi qui. Innanzitutto, ci sono degli inconvenienti, sia dal lato sviluppatore che da quello utente. Dover disinstallare l'app solo per testare una soluzione non è divertente. E se il problema sparisse? Sono state le modifiche apportate dallo sviluppatore o perché l'utente ha effettivamente cancellato i dati dell'app? Il Play Store dispone di test interni, che dovrebbero consentire agli sviluppatori di eseguire build e distribuzioni rapide, ma richiede che l'utente disinstalli prima la versione di rilascio. Non risolve davvero nulla.

Nel caso in cui tutto questo sembri un mucchio di ipotetiche sciocchezze, ecco un esempio molto reale di uno sviluppatore che avrebbe questi problemi se lasciasse che Google generasse una chiave privata per lui: João Dias. È lo sviluppatore di Tasker, insieme a tutta una serie di app plug-in, inclusa la suite AutoApps. Con i nuovi requisiti degli App Bundle, il ciclo di sviluppo di João potrebbe diventare molto più complicato, almeno per le nuove app. L'invio diretto delle versioni di prova sarà meno conveniente. La verifica delle licenze sarà meno efficace.

João Dias gestisce molte app che si basano tutte su una licenza condivisa. Se sono coinvolte due chiavi di firma, le cose potrebbero diventare davvero complicate per lui.

Questo può sembrare un caso limite, ma non è che João sia un piccolo sviluppatore, ed è probabile che non sia il solo. Esistono molte app sul Play Store che si basano sulla verifica della firma per rilevare utenti illegittimi.

Naturalmente, con la nuova opzione che consente agli sviluppatori di caricare le proprie chiavi di firma su Google, questi problemi sono almeno in qualche modo alleviati. Ma gli sviluppatori devono aderire per abilitare l'opzione per ciascuna app. In caso contrario, le interconnessioni falliranno e il supporto rapido richiederà il caricamento di un pacchetto su Google e l'attesa della generazione degli APK, prima di inviare quello corretto all'utente. Inoltre, ciò significa comunque che devono condividere la propria chiave privata, il che ci riporta alle preoccupazioni di cui abbiamo discusso in precedenza.

Soluzioni

Si tratta di un vecchio problema dato che i requisiti dell'App Bundle sono stati pubblicizzati mesi fa, quindi nel frattempo sono state proposte diverse soluzioni.

Una soluzione è evitare la necessità di firmare l'app Play. Invece di generare un app bundle che Google poi elabora in APK e segni, tale elaborazione potrebbe essere eseguita da Android Studio. Quindi, gli sviluppatori possono semplicemente caricare uno ZIP pieno di APK firmati localmente per ogni configurazione che Google avrebbe generato.

Con questa soluzione, Google non avrebbe affatto bisogno di accedere alle chiavi degli sviluppatori. Il processo sarebbe molto simile al classico modello di distribuzione APK, ma coinvolgerebbe più APK più piccoli invece di uno solo.

Firma della tua app in Android Studio con la tua chiave di caricamento. Fonte: Google

Un'altra soluzione è semplicemente non richiedere l'uso degli app bundle e continuare a consentire agli sviluppatori di caricare APK firmati localmente. Mentre gli App Bundle potrebbero essere un'esperienza migliore per l'utente in molti casi, alcune app in realtà non traggono vantaggio dall'essere suddivise per configurazione, con dimensioni minime riduzione.

Se Google implementasse entrambe queste soluzioni, uno sviluppatore che desidera utilizzare gli app bundle non avrà a portata di mano oltre a firmare con Google e uno sviluppatore la cui app non trarrà grandi benefici dal formato non dovrà utilizzarlo Tutto.

Le risposte di Google

Autofirma

Quando è stato loro chiesto per la prima volta se consentire agli sviluppatori di gestire la firma degli app bundle, la risposta di Google è stata molto vacua:

[blockquoteauthor=""]Quindi, ho parlato brevemente del requisito che l'anno prossimo le nuove app dovranno utilizzare gli app bundle e una cosa che ne deriva è che per estensione richiederemo la firma dell'app Play. Pertanto gli sviluppatori dovranno generare la chiave di firma dell'app su Play o caricare la propria chiave su Play... perché questo è un prerequisito per i bundle di app. Abbiamo sentito dagli sviluppatori che alcuni di loro semplicemente non vogliono farlo. Non vogliono che le chiavi siano gestite da Play. E al momento ciò non è possibile se desideri utilizzare gli app bundle.

Ma abbiamo ascoltato quel feedback e... non posso parlare di nulla in questo momento, non abbiamo nulla da annunciare, ma stiamo esaminando come potremmo alleviare alcune di queste preoccupazioni. Non deve necessariamente consentire di conservare la propria chiave durante il caricamento dei pacchetti. Stiamo esaminando diverse opzioni. Semplicemente non abbiamo una soluzione da annunciare in questo momento. Ma abbiamo ancora circa un anno prima che i requisiti siano soddisfatti, quindi spero davvero che avremo una risposta per gli sviluppatori a questo riguardo.[/blockquote]

Ciò avvenne alla fine di novembre dell'anno scorso e sembra che non sia successo nulla. Mancano solo pochi mesi al Entra in vigore il requisito degli app bundle, non esiste ancora un modo per gli sviluppatori di gestire la firma delle proprie app. Mentre Google ora lo ha reso possibile caricamento la tua chiave sia per le app nuove che per quelle esistenti, questo toglie comunque la parte di firma dalle mani dello sviluppatore.

Modifiche al codice

Sebbene Google abbia specificamente promesso che il Play Store non modificherà il codice dell'app, una promessa non è una garanzia. Con gli app bundle e la firma dell'app non esistono limitazioni tecniche che impediscano a Google di modificare le app caricate prima della distribuzione.

Google ha introdotto Trasparenza del codice come funzionalità opzionale e, sebbene ciò aiuti in qualche modo, presenta una buona dose di problemi, come abbiamo discusso in precedenza.

Pacchetti fatti da sé

Quando a Google è stato chiesto se consentire agli sviluppatori di creare "bundle" di app (ZIP contenenti APK divisi), la risposta è stata sostanzialmente "non lo faremo":

Probabilmente non come descritto nella domanda, poiché ciò renderebbe il processo di pubblicazione ancora più difficile per gli sviluppatori, e in realtà vogliamo renderlo più semplice e sicuro. Tuttavia, ancora una volta, abbiamo ricevuto questo feedback e valuteremo le opzioni su come renderlo possibile, ma probabilmente non nel modo descritto qui.

È interessante notare che la giustificazione di Google sembra essere che renderebbe la pubblicazione più complicata. Tuttavia, Google potrebbe comunque automatizzare il processo come parte della finestra di dialogo di generazione dell'APK in Android Studio. Inoltre, se l'app in questione venisse distribuita su più store, effettivamente renderebbe il processo di pubblicazione più semplice, poiché gli sviluppatori non dovrebbero gestire più chiavi di firma e reclami da utenti.

E con l'introduzione della trasparenza del codice, sembra che le complicazioni non siano più esattamente un problema. La trasparenza del codice, almeno per ora, richiede che lo sviluppatore utilizzi uno strumento da riga di comando e che gli utenti verifichino esplicitamente la validità dell'app che viene loro servita. Questo è più complicato di un processo per creare pacchetti autonomamente e non è chiaro il motivo per cui questa è la soluzione preferita da Google.

Andando avanti

Gli app bundle saranno il formato di distribuzione richiesto per le nuove app inviate a Google Play a partire dal 1° agosto. Anche se Google ha almeno in parte risolto la maggior parte dei problemi sollevati dagli sviluppatori e dagli esperti di sicurezza, le risposte lasciano molto a desiderare. Gli app bundle come formato di distribuzione di prossima generazione presentano molti vantaggi evidenti, ma rimarranno sempre preoccupazioni nel dare a Google il controllo parziale o totale della firma delle app.

Le risposte e gli sforzi di Google sono certamente apprezzati, ma alcuni, come Mark Murphy, ritengono di non essere andati abbastanza lontano. Con soluzioni come i bundle autoprodotti che non vengono implementati e la scadenza per i bundle di app Android richiesta rapidamente si avvicina, non sembra che gli sviluppatori su Google Play saranno in grado di mantenere il pieno controllo delle loro app per molto tempo più a lungo.


Parleremo delle implicazioni dei requisiti dell'Android App Bundle in uno spazio Twitter più tardi questo pomeriggio, quindi unisciti a noi!