XCBLOG
Il Ottobre 31, 2021 da adminiOS Code Signing Tutorials
Questa è la Parte-1 della serie di tutorial iOS Code Signing. Questa serie copre i fondamenti del processo di firma del codice iOS. Potete trovare tutti i post della serie collegati qui sotto
- iOS Code Signing: 1. Come iniziare
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificati
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Signing iOS App
*******************************************************
In realtà, i dispositivi iOS eseguono solo app che sono state firmate da sviluppatori di fiducia, a meno che non si abbiano dispositivi iOS jailbroken. Se sei un ingegnere iOS, devi aver combattuto con la firma del codice ad un certo punto. Poiché la firma del codice è uno dei compiti dolorosi e ingombranti per gli sviluppatori iOS, ma non possono scappare dalle attività di firma del codice. La firma del codice e i profili di provisioning sono stati un fastidio continuo e continueranno ad esserci fino a quando gli sviluppatori non capiranno completamente le basi della firma del codice. Questo è un post introduttivo che spiega il processo di firma del codice con i suoi benefici e limitazioni.
Di questa serie
La firma del codice delle applicazioni iOS è uno dei temi caldi per ogni sviluppatore iOS. Anche se ci sono più risorse disponibili online e Apple ha una documentazione pulita sul processo di firma del codice, è ancora un mistero. In questa serie, cercheremo di capire il processo di firma del codice da zero, compreso ciò che è necessario per la firma del codice al processo di firma del codice stesso. Esploreremo anche l’interfaccia grafica e la linea di comando per fare le cose, quando possibile. Inizieremo dalle Certificate Signing Requests per ottenere il certificato di sviluppo iOS, poi copriremo il certificato e le sue parti interne. Dopo aver compreso i certificati, faremo un’immersione profonda nei profili di provisioning e, infine, capiremo il processo di firma del codice.
Questa serie è scritta nelle mie parole o nella mia lingua facendo qualche ricerca sul web e nella documentazione di Apple. Ho coperto tutto questo materiale di riferimento nel post finale. Ho anche allegato alcuni screenshot dal portale Apple Developer e Xcode in modo che i lettori possano capire i concetti. Ho cercato di nascondere tutti i contenuti sensibili, ma se c’è qualcosa esposto per errore, per favore non hackeratemi 🙂
Code Signing
Prima di saltare nel modo di Apple di firmare il codice delle app iOS, esploriamo cos’è il code signing in generale. Nella vita reale, firmiamo diversi contratti, accordi per varie cose. Perché firmiamo questi contratti? Cosa significa la firma per noi e perché è importante? È semplice perché firmare i contratti ci protegge legalmente e abbiamo fiducia che qualsiasi termine e condizione nei contratti non possa essere alterato mentre il contratto è in vigore. La firma garantisce anche la sicurezza che il contratto proviene da autorità fidate e non da truffatori. Significa che la firma dei contratti ci dà sicurezza, protezione e fiducia.
Similmente, la firma del codice è il processo di firma digitale di qualsiasi forma di codice per confermare chi ha scritto il codice e garantire che il codice non è stato cambiato o corrotto quando è stato firmato. La firma del codice utilizza un hash crittografico per verificare l’autenticità e l’integrità del codice software. Nel mondo del software, la firma del codice assicura l’identità dell’autore, l’integrità del codice, il sistema di compilazione e il versioning in modo che gli utenti del software si sentano sicuri e protetti mentre lo usano. La firma del codice usa vari termini di sicurezza come chiave pubblica, chiave privata, certificati, firme digitali ecc. Ci sono diversi approcci alla firma del codice utilizzati sulle diverse piattaforme, ad esempio Linux, Windows, macOS.
iOS Code Signing
Apple ha apparentemente un meccanismo di sicurezza molto potente, a parte alcuni recenti difetti che potreste aver letto nelle notizie. È molto difficile per gli hacker black-hat rompere questo meccanismo. Apple utilizza anche un forte meccanismo di firma del codice per fornire sicurezza, integrità e protezione delle applicazioni iOS scaricate da Apple App Store. Il più delle volte, la firma del codice iOS sembra essere una magia che avviene sotto il cofano. Se funziona tutti sono contenti e se non funziona tutti vanno nel panico. La maggior parte degli ingegneri iOS non hanno idea di cosa succede sotto il cofano quando le applicazioni che hanno scritto vengono firmate. Negli ultimi giorni, Apple ha cercato di rendere la firma del codice meno dolorosa introducendo la funzione di firma automatica in Xcode in modo che l’attività di firma del codice non interrompa il flusso di sviluppo principale. La firma del codice sulla piattaforma Apple si basa sulla crittografia a chiave pubblica su standard X.509. Discuteremo tutti questi strumenti e tecniche più avanti in questa serie.
Perché imparare il Code Signing di iOS
Come la maggior parte delle attività di firma del codice sono gestite da Xcode in questi giorni, allora perché dovremmo preoccuparci della firma del codice e perché dovremmo investire il nostro tempo per impararlo?
Ecco alcune delle ragioni per imparare gli interni della firma del codice:
- Sono finiti i giorni in cui gli ingegneri iOS distribuivano le app iOS da Xcode installato sulla macchina locale. Le aziende stanno adottando DevOps e CI/CD per distribuire il software non appena costruito, quindi tutte le build devono essere automatizzate senza alcuna interazione umana o GUI.
- Ci sono migliaia di ore sprecate dagli sviluppatori perché la firma del codice di Xcode non è riuscita e gli sviluppatori cercano di risolvere i problemi di firma del codice rigenerando e riparando i certificati e i profili di provisioning.
- Gli strumenti di terze parti come Fastlane hanno reso lo scripting di build molto più facile per gli sviluppatori iOS. Tuttavia, quando Apple ha apportato modifiche alle tecnologie sottostanti, Fastlane continua a rompersi e gli sviluppatori passano ore, giorni e settimane a fissare gli script di distribuzione rotti. In alcuni casi, gli ingegneri devono aspettare che le nuove modifiche vengano implementate in Fastlane.
- Se sei uno sviluppatore/ingegnere iOS e vuoi essere un ingegnere iOS per tutta la vita allora non devi imparare queste cose. Tuttavia, se vuoi crescere nella tua carriera, allora devi conoscere gli strumenti di base, le tecnologie e l’intero ecosistema iOS in dettaglio. Non riuscirete a diventare iOS Tech Lead o iOS Tech Architect o ruoli simili se non conoscete queste tecnologie di base, indipendentemente da quanto siate bravi nelle vostre capacità di sviluppo iOS. Come architetto tecnico, dovreste essere in grado di risolvere la firma del codice o problemi simili relativi all’infrastruttura rapidamente e senza fare affidamento su Xcode o altri strumenti di terze parti.
Spero che questo sia sufficiente per convincere l’importanza della firma del codice. Sta a voi decidere se impararlo o lasciarlo.
Pre-requisito
Tuffiamoci nel mondo della firma del codice iOS. Copriremo tutto da zero in termini di cosa è necessario e cosa fa sotto il cofano. Per iniziare, abbiamo bisogno delle seguenti cose che credo tutti abbiano già se state leggendo questo post.
- macOS
- Apple Developer Membership
- Xcode 9+
Una volta che avete tutte queste cose, siete pronti a scavare nel mondo della firma del codice iOS.
Benefici della firma del codice
Apple vuole che passiamo attraverso il complesso processo di firma del codice perché ha alcuni benefici per gli utenti reali. Gli utenti delle applicazioni iOS si sentono sicuri quando scaricano le applicazioni dall’app store di Apple. La firma del codice assicura che
- Lo sviluppatore legittimo ha scritto questo codice e ha un’identità del firmatario o autore delle app.
- La firma del codice assicura che il codice non è stato alterato da qualcuno dopo essere stato scritto dall’autore. Garantisce che il codice prodotto dall’autore sia originale e che non ci sia nulla di iniettato nel codice da quando è stato firmato dall’autore.
- Gli utenti possono scaricare le applicazioni dagli sviluppatori di cui si fidano senza preoccuparsi troppo della sicurezza.
La firma del codice è per la sicurezza degli utenti iOS in modo che si sentano sicuri usando le applicazioni che hanno scaricato dall’app store.
Limitazioni del Code Signing
Anche se la firma del codice è per la sicurezza degli utenti, ci sono alcuni aspetti che non affrontano sempre problemi di sicurezza.
- La firma del codice assicura che il codice proviene da uno sviluppatore legittimo che è membro del programma Apple Developer, ma non garantisce che il codice stesso sia privo di vulnerabilità di sicurezza.
- La firma del codice non garantisce che i plugin delle app che si caricano dinamicamente durante l’esecuzione delle app siano sicuri.
- Non c’è nessuna tecnologia di gestione dei diritti digitali o di protezione della copia per il codice firmato.
Ora che, abbiamo coperto l’importanza di conoscere la firma del codice e i benefici e le limitazioni. Nel prossimo post, passeremo attraverso l’importante concetto in cui inizia il processo di firma del codice, cioè il Certificate Signing Requests.
Continua a leggere Parte 2-: Richieste di firma del certificato
.
Lascia un commento