XCBLOG
On október 31, 2021 by adminiOS kódaláírás oktatóanyagok
Ez az iOS kódaláírás oktató sorozat 1. része. Ez a sorozat az iOS kódaláírási folyamat alapjaival foglalkozik. A sorozat összes bejegyzését az alábbi linken találja
- iOS kódaláírás: 1. Kezdő lépések
- iOS kódaláírás: 2. Tanúsítványaláírási kérelmek
- iOS kódaláírás: 3. Tanúsítványok
- iOS kódaláírás: 4. Tanúsítványok
- iOS kódaláírás: 4. Provisioning Profiles
- iOS Code Signing: 5. iOS-alkalmazás aláírása
*******************************************************
Az iOS-eszközökön csak olyan alkalmazások futnak, amelyeket megbízható fejlesztők írtak alá, kivéve, ha jailbreakelt iOS-eszközökkel rendelkezik. Ha iOS-fejlesztő vagy, biztosan küzdöttél már valamikor a kódaláírással. Mivel a kódaláírás az iOS-fejlesztők számára az egyik fájdalmas és nehézkes feladat, de nem menekülhetnek el a kódaláírási tevékenységek elől. A kódaláírás és a provizórikus profilok folyamatos bosszúságot jelentettek és jelentenek mindaddig, amíg a fejlesztők teljesen meg nem értik a kódaláírás alapjait. Ez egy bevezető bejegyzés, amely elmagyarázza a kódaláírási folyamatot annak előnyeivel és korlátaival együtt.
Erről a sorozatról
Az iOS-alkalmazások kódaláírása minden iOS-fejlesztő számára az egyik legforróbb téma. Bár az interneten több forrás is elérhető, valamint az Apple is rendelkezik tiszta dokumentációval a kódaláírási folyamatról, ez még mindig egy rejtély. Ebben a sorozatban megpróbáljuk megérteni a kódaláírási folyamatot az alapoktól kezdve, beleértve azt, hogy mi szükséges a kódaláíráshoz, egészen magához a tényleges kódaláírási folyamathoz. A GUI-t és a parancssori módokat is meg fogjuk vizsgálni, amikor csak lehetséges. A Certificate Signing Requests-től fogjuk kezdeni az iOS Development tanúsítvány megszerzését, majd a tanúsítványt és annak belső részeit fogjuk tárgyalni. Miután megértettük a tanúsítványokat, mélyen belemerülünk a rendelkezésre bocsátási profilokba, és végül megértjük a kódaláírási folyamatot.
Ez a sorozat a saját szavaimmal vagy nyelvemen íródott, némi kutatást végezve a weben és az Apple dokumentációjában. Az összes ilyen referenciaanyagot az utolsó bejegyzésben tárgyaltam. Csatoltam néhány képernyőképet is az Apple Developer portálról és az Xcode-ról, hogy az olvasók megértsék a fogalmakat. Megpróbáltam elrejteni az összes érzékeny tartalmat, de ha valami tévedésből ki van téve, kérem, ne csapkodjon 🙂
Kódaláírás
Mielőtt belevetnénk magunkat az Apple iOS-alkalmazások kódaláírásának módjába, vizsgáljuk meg, mi is az a kódaláírás általában. A való életben különböző szerződéseket, megállapodásokat írunk alá különböző dolgokról. Miért írjuk alá ezeket a szerződéseket, mit jelent számunkra az aláírás és miért fontos? Ez egyszerű, mert a szerződések aláírása jogilag véd minket, és bízunk abban, hogy a szerződésben foglalt feltételek nem változtathatók meg, amíg a szerződés érvényben van. Az aláírás azt is biztosítja a biztonságot, hogy a szerződés megbízható hatóságtól származik, és nem csalóktól. Ez azt jelenti, hogy a szerződések aláírása biztonságot, védelmet és bizalmat nyújt számunkra.
Hasonlóképpen, a kód aláírása a kód bármely formájának digitális aláírása, amely megerősíti, hogy ki írta a kódot, és garantálja, hogy a kódot nem módosították vagy rontották el, amikor aláírták. A kódaláírás egy kriptográfiai hash-t használ a szoftverkód hitelességének és integritásának ellenőrzésére. A szoftverek világában a kódaláírás biztosítja a szerző személyazonosságát, a kód integritását, az építési rendszert és a verziókezelést, hogy a szoftver felhasználói biztonságban érezhessék magukat a szoftverek használata közben. A kódaláírás különböző biztonsági kifejezéseket használ, mint például nyilvános kulcs, magánkulcs, tanúsítványok, digitális aláírások stb. A kódaláírásnak különböző megközelítései vannak a különböző platformokon, pl. Linux, Windows, macOS.
iOS kódaláírás
Az Apple állítólag nagyon erős biztonsági mechanizmussal rendelkezik, eltekintve néhány, a hírekben olvasható legutóbbi hibától. A fekete kalapos hackerek számára nagyon nehéz feltörni ezt a mechanizmust. Az Apple erős kódaláírási mechanizmust is használ az Apple App Store-ból letöltött iOS-alkalmazások biztonsága, integritása és védelme érdekében. Az iOS kódaláírás legtöbbször varázslatnak tűnik, ami a motorháztető alatt történik. Ha működik, mindenki boldog, ha pedig nem, mindenki pánikba esett. A legtöbb iOS-fejlesztőnek fogalma sincs arról, hogy mi történik a motorháztető alatt, amikor az általuk írt alkalmazásokat aláírják. Az elmúlt napokban az Apple megpróbálta a kódaláírást kevésbé fájdalmassá tenni az Xcode automatikus aláírási funkciójának bevezetésével, hogy a kódaláírási tevékenység ne szakítsa meg a fő fejlesztési folyamatot. A kódaláírás az Apple platformján az X.509 szabvány szerinti nyilvános kulcsú kriptográfiára épül. Mindezeket az eszközöket és technikákat később tárgyaljuk ebben a sorozatban.
Miért tanuljunk az iOS kódaláírásról
Mivel a legtöbb kódaláírási feladatot manapság már az Xcode kezeli, akkor miért érdemes foglalkoznunk a kódaláírással, és miért érdemes időt szánnunk a megismerésére?
Itt van néhány ok, amiért érdemes megtanulni a kódaláírás belső részeit:
- Múltak azok az idők, amikor az iOS mérnökök a helyi gépre telepített Xcode-ból telepítették az iOS-alkalmazásokat. A vállalatok elfogadják a DevOps és a CI/CD-t, hogy a szoftvert azonnal telepítsék, amint elkészült, így az összes buildet automatizálni kell, emberi vagy GUI-interakciók nélkül.
- A fejlesztők több ezer órát vesztegettek el, mert az Xcode kódaláírása nem sikerült, és a fejlesztő a tanúsítványok és a profilok újbóli létrehozásával és javításával próbálja kijavítani a kódaláírási problémákat.
- A harmadik féltől származó eszközök, mint például a Fastlane, sokkal egyszerűbbé tették a build scriptek készítését az iOS-fejlesztők számára. Amikor azonban az Apple változtatásokat eszközölt a mögöttes technológiákban, a Fastlane folyamatosan elromlott, és a fejlesztők órákat, napokat és heteket töltöttek a hibás telepítési szkriptek javításával. Bizonyos esetekben a mérnököknek várniuk kell, amíg az új változtatásokat a Fastlane-ben végrehajtják.
- Ha iOS-fejlesztő/mérnök vagy, és egész életedben iOS-fejlesztő akarsz lenni, akkor nem kell ezeket a dolgokat megtanulnod. Ha azonban fel akarsz nőni a karrieredben, akkor részletesen ismerned kell a mögöttes eszközöket, technológiákat és a teljes iOS-ökoszisztémát. Nem fogsz eljutni iOS Tech Lead vagy iOS Tech Architect vagy hasonló szerepkörökbe, ha nem ismered ezeket a mögöttes technológiákat, függetlenül attól, hogy mennyire vagy jó iOS-fejlesztő. Technikai építészként képesnek kell lenned arra, hogy a kódaláírással vagy hasonló infrastruktúrával kapcsolatos problémákat gyorsan és az Xcode-ra vagy más, harmadik féltől származó eszközökre való támaszkodás nélkül orvosold.
Remélem, ez elég ahhoz, hogy meggyőzzön a kódaláírás fontosságáról. Rajtad áll, hogy megtanulod-e vagy elhagyod.
Előfeltétel
Merüljünk bele az iOS kódaláírás világába. Mindent a nulláról fogunk tárgyalni, hogy mire van szükség és mit csinál a motorháztető alatt. Ahhoz, hogy elkezdhessük, a következő dolgokra van szükségünk, amivel szerintem már mindenki rendelkezik, ha ezt a bejegyzést olvassa.
- macOS
- Apple Developer Membership
- Xcode 9+
Ha mindezekkel rendelkezel, akkor készen állsz, hogy beleássuk magunkat az iOS kódaláírással kapcsolatos dolgokba.
A kódaláírás előnyei
Az Apple azért akarja, hogy végigmenjünk a bonyolult kódaláírási folyamaton, mert annak van néhány előnye a valódi felhasználók számára. Az iOS-alkalmazások felhasználói biztonságban érzik magukat, amikor letöltik az alkalmazásokat az Apple alkalmazásboltjából. A kódaláírás biztosítja, hogy
- A törvényes fejlesztő írta ezt a kódot, és az alkalmazások aláírójának vagy szerzőjének személyazonosságával rendelkezik.
- A kódaláírás biztosítja, hogy a kódot nem módosította valaki azóta, hogy a szerző megírta. Garantálja, hogy a szerző által készített kód eredeti, és a kódba semmi nem került bele, mivel azt a szerző írta alá.
- A felhasználók letölthetik az általuk megbízható fejlesztőktől származó alkalmazásokat anélkül, hogy túlságosan aggódnának a biztonság miatt.
A kódaláírás az iOS-felhasználók biztonságát szolgálja, hogy biztonságban érezzék magukat az alkalmazásboltból letöltött alkalmazások használatával.
A kódaláírás korlátai
Bár a kódaláírás a felhasználók biztonságát szolgálja, vannak olyan szempontok, amelyek nem mindig kezelik a biztonsági kérdéseket.
- A kódaláírás biztosítja, hogy a kód olyan törvényes fejlesztőtől származik, aki tagja az Apple Developer programjának, de nem garantálja, hogy maga a kód mentes a biztonsági résektől.
- A kódaláírás nem garantálja, hogy az alkalmazások végrehajtása során dinamikusan betöltő alkalmazásbővítmények biztonságosak.
- Az aláírt kódhoz nincs digitális jogkezelés vagy másolásvédelmi technológia.
Most, ezzel lefedtük a kódaláírás megismerésének fontosságát, előnyeit és korlátait. A következő bejegyzésben azt a fontos fogalmat tekintjük át, ahol a kódaláírási folyamat kezdődik, azaz a Certificate Signing Requests.
Tovább olvasás 2. rész: Certificate Signing Requests
Vélemény, hozzászólás?