XCBLOG
On 31 lokakuun, 2021 by adminiOS-koodin allekirjoittamisen opetusohjelmat
Tämä on iOS-koodin allekirjoittamisen opetusohjelmasarjan osa-1. Tässä sarjassa käsitellään iOS-koodin allekirjoitusprosessin perusteita. Löydät kaikki sarjan postaukset linkitettynä alta
- iOS-koodin allekirjoittaminen: 1. Aloittaminen
- iOS-koodin allekirjoittaminen: 2. Varmenteiden allekirjoituspyynnöt
- iOS-koodin allekirjoittaminen: 3. Varmenteet
- iOS-koodin allekirjoittaminen: 4. Varmenteet
- . Provisioning Profiles
- iOS Code Signing: 5. iOS-sovelluksen allekirjoittaminen
*******************************************************
Todennäköisesti iOS-laitteissa toimivat vain luotettavien kehittäjien allekirjoittamat sovellukset, paitsi jos sinulla on jailbreakattu iOS-laite. Jos olet iOS-kehittäjä, olet varmasti jossain vaiheessa taistellut koodin allekirjoittamisen kanssa. Koska koodin allekirjoittaminen on yksi tuskallisista ja hankalista tehtävistä iOS-kehittäjille, mutta he eivät voi paeta koodin allekirjoitustoimintaa. Koodin allekirjoittaminen ja provisiointiprofiilit ovat olleet jatkuva riesa, ja ne ovat sitä jatkossakin, kunnes kehittäjät ymmärtävät täysin koodin allekirjoittamisen perusteet. Tämä on johdantopostaus, jossa selitetään koodin allekirjoittamisprosessi sekä sen hyödyt ja rajoitukset.
Tästä sarjasta
IOS-sovellusten koodin allekirjoittaminen on yksi jokaisen iOS-kehittäjän kuumimmista aiheista. Vaikka verkossa on saatavilla useita resursseja sekä Applella on puhdas dokumentaatio koodin allekirjoitusprosessista, se on edelleen mysteeri. Tässä sarjassa yritämme ymmärtää koodin allekirjoitusprosessin alusta alkaen, mukaan lukien koodin allekirjoittamiseen tarvittavat asiat itse koodin allekirjoitusprosessiin. Tutustumme myös sekä graafiseen käyttöliittymään että komentorivin toimintatapoihin aina tarvittaessa. Aloitamme varmenteen allekirjoituspyynnöistä iOS-kehityksen varmenteen hankkimiseksi, minkä jälkeen käsittelemme varmenteen ja sen sisäiset osat. Sertifikaattien ymmärtämisen jälkeen teemme syväsukelluksen provisiointiprofiileihin ja lopuksi ymmärrämme koodin allekirjoitusprosessin.
Nämä sarjat on kirjoitettu omin sanoin tai omalla kielelläni tekemällä jonkin verran tutkimusta verkosta ja Applen dokumentaatiosta. Olen käsitellyt kaikki nämä viitemateriaalit viimeisessä viestissä. Olen myös liittänyt joitakin kuvakaappauksia Apple Developer -portaalista ja Xcodesta, jotta lukijat voivat ymmärtää käsitteet. Yritin piilottaa kaiken arkaluonteisen sisällön, mutta jos jotain paljastuu vahingossa, älä hakkeroi minua 🙂
Code Signing
Ennen kuin hyppäämme Applen tapaan koodisignifioida iOS-sovelluksia, tutkitaan, mitä koodisignointi yleensä on. Oikeassa elämässä allekirjoitamme erilaisia sopimuksia, sopimuksia eri asioista. Miksi allekirjoitamme näitä sopimuksia? mitä allekirjoitus tarkoittaa meille ja miksi se on tärkeää? Se on yksinkertaista, koska sopimusten allekirjoittaminen suojaa meitä oikeudellisesti, ja luotamme siihen, että sopimuksessa olevia ehtoja ei voida muuttaa sopimuksen voimassa ollessa. Allekirjoitus takaa myös turvallisuuden siitä, että sopimus on peräisin luotetuilta viranomaisilta eikä huijareilta. Se tarkoittaa, että sopimusten allekirjoittaminen antaa meille turvallisuutta, varmuutta ja luottamusta.
Vastaavasti koodin allekirjoittaminen on kaikenlaisen koodin digitaalinen allekirjoittaminen, jolla vahvistetaan, kuka koodin on kirjoittanut, ja taataan, että koodia ei ole muutettu tai vioittunut, kun se on allekirjoitettu. Koodin allekirjoittamisessa käytetään kryptografista hash-määritystä ohjelmakoodin aitouden ja eheyden todentamiseksi. Ohjelmistomaailmassa koodin allekirjoittamisella varmistetaan kirjoittajan henkilöllisyys, koodin eheys, rakentamisjärjestelmä ja versiointi, jotta ohjelmistojen käyttäjät tuntevat olonsa turvalliseksi ja varmaksi niitä käyttäessään. Koodin allekirjoittamisessa käytetään erilaisia tietoturvatermistöjä, kuten julkista avainta, yksityistä avainta, varmenteita, digitaalisia allekirjoituksia jne. Koodin allekirjoittamiseen on erilaisia lähestymistapoja, joita käytetään eri alustoilla, esimerkiksi Linuxissa, Windowsissa ja macOS:ssä.
iOS-koodin allekirjoittaminen
Applella on oletettavasti erittäin tehokas turvamekanismi lukuun ottamatta muutamia viimeaikaisia häiriöitä, joita olet ehkä lukenut uutisista. Mustan hatun hakkereiden on hyvin vaikea murtaa tätä mekanismia. Apple käyttää myös vahvaa koodin allekirjoitusmekanismia varmistaakseen Applen App Storesta ladattujen iOS-sovellusten turvallisuuden ja eheyden. Useimmiten iOS-koodin allekirjoittaminen näyttää olevan taikaa, joka tapahtuu konepellin alla. Jos se toimii, kaikki ovat tyytyväisiä, ja jos se ei toimi, kaikki joutuvat paniikkiin. Useimmilla iOS-insinööreillä ei ole aavistustakaan siitä, mitä konepellin alla tapahtuu, kun heidän kirjoittamansa sovellukset allekirjoitetaan. Viime päivinä Apple on yrittänyt tehdä koodin allekirjoittamisesta vähemmän tuskallista ottamalla käyttöön automaattisen allekirjoituksen ominaisuuden Xcodessa, jotta koodin allekirjoittaminen ei keskeyttäisi pääkehitysvirtaa. Koodin allekirjoittaminen Applen alustalla perustuu X.509-standardin mukaiseen julkisen avaimen salaukseen. Käsittelemme kaikkia näitä työkaluja ja tekniikoita myöhemmin tässä sarjassa.
Miksi oppia iOS-koodin allekirjoittamisesta
Koska suurin osa koodin allekirjoittamistehtävistä hoidetaan nykyään Xcodella, niin miksi meidän pitäisi välittää koodin allekirjoittamisesta ja miksi meidän pitäisi panostaa aikaamme sen oppimiseen?
Tässä on muutamia syitä oppia koodin allekirjoittamisen sisäisistä ominaisuuksista:
- Viimeiset ovat ne ajat, jolloin iOS-insinöörit ottivat iOS-sovellukset käyttöön paikalliselle koneelle asennetusta Xcodesta. Yritykset ottavat käyttöön DevOpsin ja CI/CD:n ottaakseen ohjelmiston käyttöön heti kun se on rakennettu, joten kaikki buildit on automatisoitava ilman ihmisen tai graafisen käyttöliittymän vuorovaikutusta.
- Tuhansia kehittäjätunteja menee hukkaan, koska Xcoden koodin allekirjoitus epäonnistui ja kehittäjä yrittää korjata koodin allekirjoitusongelmia luomalla ja korjaamalla varmenteita uudelleen ja asettamalla profiileja käyttöön.
- Kolmansien osapuolien työkalut, kuten Fastlane, ovat helpottaneet build-skriptausta iOS-kehittäjien kannalta huomattavasti. Kun Apple kuitenkin teki muutoksia taustalla oleviin teknologioihin, Fastlane rikkoutuu jatkuvasti ja kehittäjät käyttävät tunteja, päiviä ja viikkoja rikkinäisten käyttöönottoskriptien korjaamiseen. Joissakin tapauksissa insinöörien on odotettava, kunnes uudet muutokset toteutetaan Fastlaneen.
- Jos olet iOS-kehittäjä/insinööri ja haluat olla iOS-insinööri koko elämäsi ajan, sinun ei tarvitse oppia näitä asioita. Jos kuitenkin haluat kasvaa urallasi, sinun on tunnettava taustalla olevat työkalut, teknologiat ja koko iOS-ekosysteemi yksityiskohtaisesti. Et pääse iOS Tech Lead- tai iOS Tech Architect -tehtäviin tai vastaaviin tehtäviin, jos et tunne näitä taustalla olevia tekniikoita riippumatta siitä, kuinka hyviä iOS-kehitystaitoja sinulla on. Tekniikka-arkkitehtina sinun pitäisi pystyä korjaamaan koodin allekirjoittamiseen tai vastaaviin infrastruktuureihin liittyviä ongelmia nopeasti ja turvautumatta Xcodeen tai muihin kolmannen osapuolen työkaluihin.
Toivottavasti tämä riittää vakuuttamaan koodin allekirjoittamisen tärkeyden. On sinusta kiinni, opitko sen vai jätätkö sen.
Edellytys
Sukelletaanpa iOS-koodin allekirjoittamisen maailmaan. Käymme läpi kaiken tyhjästä, mitä tarvitaan ja mitä se tekee konepellin alla. Jotta pääsemme alkuun, tarvitsemme seuraavat asiat, jotka uskon, että kaikilla on jo, jos luet tätä viestiä.
- macOS
- Apple Developer Membership
- Xcode 9+
Kun sinulla on kaikki nämä, olet valmis kaivautumaan iOS-koodin allekirjoittamisen asioihin.
Koodin allekirjoittamisen edut
Apple haluaa, että käymme läpi monimutkaisen koodin allekirjoitusprosessin, koska sillä on joitakin etuja todellisille käyttäjille. iOS-sovellusten käyttäjät tuntevat olonsa turvalliseksi, kun he lataavat sovelluksia Applen sovelluskaupasta. Koodin allekirjoittaminen varmistaa, että
- Legitiimi kehittäjä on kirjoittanut tämän koodin, ja siinä on allekirjoittajan tai sovellusten tekijän henkilöllisyys.
- Koodin allekirjoittaminen varmistaa, että kukaan ei ole muuttanut koodia sen jälkeen, kun tekijä on sen kirjoittanut. Se takaa, että tekijän tuottama koodi on alkuperäistä eikä koodiin ole lisätty mitään sen jälkeen, kun tekijä on sen allekirjoittanut.
- Käyttäjät voivat ladata sovelluksia kehittäjiltä, joihin he luottavat, huolehtimatta liikaa turvallisuudesta.
Koodin allekirjoittaminen on iOS-käyttäjien turvallisuuden vuoksi, jotta he tuntevat olonsa turvalliseksi käyttäessään sovelluskaupasta lataamiaan sovelluksia.
Koodin allekirjoittamisen rajoitukset
Vaikka koodin allekirjoittaminen on käyttäjien turvallisuuden vuoksi, on joitain näkökohtia, jotka eivät käsittele turvallisuuskysymyksiä koko ajan.
- Koodin allekirjoittaminen varmistaa, että koodi on peräisin lailliselta kehittäjältä, joka on Applen kehittäjäohjelman jäsen, mutta se ei takaa, että koodi itsessään on vapaa tietoturva-aukoista.
- Koodin allekirjoittaminen ei takaa, että sovellusten lisäosat, jotka latautuvat dynaamisesti sovellusten suorituksen aikana, ovat turvallisia.
- Signoitua koodia varten ei ole olemassa digitaalisten oikeuksien hallinta- tai kopiosuojaustekniikkaa.
Nyt olemme käsitelleet koodin allekirjoittamisen opettelun tärkeyden, hyödyt ja rajoitukset. Seuraavassa postauksessa käymme läpi tärkeän käsitteen, josta koodin allekirjoitusprosessi alkaa eli Certificate Signing Requests.
Jatka lukemista Osa 2-: Certificate Signing Requests
Vastaa