Gyakori kérdések: miért és hogyan mentsük az SHSH-kat?

Az Apple még az iPhone 3GS esetén vezette be az SHSH-kat, aminek köszönhetően egyszerűen meg tudja akadályozni, hogy az egyes készülékekre elérhető legfrissebb iOS-verziónál régebbit tegyen fel rá a felhasználó.

A korábbi iOS-verzió visszaállítása, a downgrade hivatalosan tehát csak addig lehetséges, ameddig azt az adott változatot az Apple aláírja. Ez egy-egy újabb frissítés megjelenése után újabban már több hét is lehet, de régebben csak pár óra átfedés volt, ezért a jailbreakes közösségben a fejlesztők megoldották, hogy el lehessen menteni az SHSH-kat, amit később bármikor fel lehet használni. Nézzük, mit kell erről tudni, és miért fontos mindez!

Noha ezek többségéről korábban már részletesebben is írtunk, most mégis érdemes újból átvenni őket.

Mi az a TSS?

A biztonságos rendszer egyik pillére, amikor a készülékre telepített szoftver ellenőrzésre kerül, biztosítva azt, hogy ez valóban az a szoftver, amire számítunk. Ezt kriptográfiai aláírásokkal biztosítják, amik segítségével egy-egy adatblokk hitelessége ellenőrizhető, így például egy operációs rendszeré is, mint az iOS az iPhone-on. Az Apple tehát aláírja a szoftvert, amit a készülékre kiad.

Miközben a készülék rendszere betölt, minden egyes lépés ellenőrzi a következő lépés aláírását, mielőtt továbblépne. Feltételezve, hogy minden lépés megfelelően működik, biztonságban érezhetjük magunkat annak tekintetében, hogy a készüléken az a rendszer fut, aminek kell, bármiféle olyan módosítás nélkül, amelyek nemkívánt dolgokat tehetnek (legyen az káros kód, például malware, vagy olyan kiegészítések, amelyeket nem kívántunk feltenni).

Természetesen ez a feltételezés eléggé valószínűtlen egy olyan összetett rendszer kapcsán, mint amilyen az iOS: rengeteg hiba van benne, nagyobbak és apróbbak, ami miatt a támadók kikerülhetik az ellenőrzéseket.

Nem elegendő csak magát a szoftvert aláírni, hiszen akkor amint egy hibát kijavítanak, a felhasználók egyszerűen nem frissítenek, vagy visszateszik a korábbi, a hibát még tartalmazó verziót, átveszik felette az irányítást, ami utat nyithat arra, hogy az új verzióban is találjanak hibákat.

A rendszerek fejlesztői ezt általában úgy orvosolják, hogy korlátozásokat vezetnek be, ami miatt csak az aktuálisan a készüléken lévő verzióval egyező vagy újabb kerülhet fel az eszközre. Ezt vagy a verziószám, vagy egy kódolt dátum segítségével ellenőrzik. Az Apple viszont úgy döntött, hogy ez nem elegendő, hiszen lehetővé teszi, hogy a készüléken lévő verziót bármeddig újratehessük, és ne legyünk rákényszerítve a frissebb verziókra; illetve hogy az időközben megjelent köztes szoftververziókon is nyugodtan végigmehetünk, nem pedig csak az aktuálisan legfrissebb tehető fel rögtön.

Az Apple ezt úgy oldotta meg, hogy az iOS 3.x-tól kezdődően a telepítés folyamata csak akkor indul el, ha a szoftververziót vissza tudta ellenőrizni az Apple az interneten keresztül, és a rendszer azt dobta rá vissza, hogy ez az a verzió, amit épp engedélyeznek telepíteni. Valójában már az iOS 2.x is tartalmazott aláírást, de nem volt benne downgrade elleni védelem.

Az aláírást és így a telepítendő szoftver verzióját ellenőrző szerver a Tatsu Signing Server, vagyis a TSS.

Mi az az SHSH, és miért érdemes lementeni?

Röviden összefoglalva ez az az aláírásfájl, ami a készülék számára visszaigazolja az Apple-től a telepítést, így a készülék elfogadja a telepíteni kívánt szoftvert, és a folyamat elindul. Erről kicsit részletesebben itt írtunk már korábban: Mi az az SHSH, és hogyan működik a TinyUmbrella?

Az aláírási folyamat legfontosabb része, hogy tudjuk, pontosan mi is kerül aláírásra. Az évek során ez persze változott. A Saurik által korábban leírt rendszer a folyamat során testre szabja a készülékre kerülő szoftvert. Ez a testreszabás úgy néz ki, hogy az adott eszközhöz tartozó azonosító kerül minden egyes fájlhoz, majd ezeket a fájlokat írja újból alá az Apple. Az eredeti fájlok természetesen már eleve tartalmaznak aláírást, de nincs bennük az eszköz egyedi azonosítója.

Az egyedi azonosító, amit ehhez felhasználnak, az az ECID, ami minden egyes iOS eszköz esetén egyedi. Ezután az ECID elküldésre kerül az Apple felé együtt az aláírandó fájlok listájával, majd erre az Apple szervere visszaküldi az aláírást (blob) minden, a listában szereplő fájl számára. Ezek a blobok váltják fel az eredeti aláírásokat, és már tartalmazzák a testreszabást az ECID-nek köszönhetően, valamint egy fő aláírást, ami az egész fájl tartalmát is aláírja.

Az SHSH tehát ezeket a testre szabott aláírásokat jelenti. Mivel az ECID egy adott eszköz esetén állandó, így ha le tudjuk menteni egy ilyen testre szabott fájl SHSH-ját, akkor azt a fájlt akkor is fel tudjuk tenni, ha az Apple már nem írja alá.

Az SHSH az iTunes-szal történő és a készülék Szoftverfrissítés menüpontjában elindított OTA frissítés esetén is ugyanúgy használatban van, de ezek egymástól kissé eltérő típusú aláírást használnak, így egymással nem felcserélhetőek.

A legfontosabb tudnivalók tehát a fentiek alapján, hogy:

  • az Apple-től mindig csak az adott készülékre aktuálisan aláírt iOS-verzióhoz tartozó SHSH-t tudjuk lementeni;
  • ami az ehhez felhasznált ECID miatt még készülékenként is egyedi;
  • az iTunes-os blob nem egyezik meg az OTA blobbal.

Tehát sem utólag nem lehet már lekérni egy időben le nem mentett SHSH-t, sem más készülékhez tartozót nem lehet felhasználni.

Erről a témáról bővebben itt írtunk, ha valakit érdekelnek a technikai részletek, akkor ezt érdemes elolvasni: Gyakori kérdések: mi az a TSS Center és mi történt a Cydia által mentett iOS 6-os SHSH-kkal?

Hogyan menthetjük az SHSH-kat?

A mentéshez újabban a leginkább kézenfekvő a TSS Saver oldal használata, amihez magával a készülékkel gyakorlatilag semmit nem kell tennünk, és még csak annak az iOS-verziónak sem kell rajta lennie, amihez az SHSH-t menteni szeretnénk, hiszen nem a készülékről mentjük, hanem az Apple szerverétől kérjük le.

Itt két dologra lesz szükségünk – az egyik a fentebb már említett ECID, a másik a készülék típusazonosítója (identifier):

Ezt a két adatot az iTunes segítségével tudhatjuk meg a legegyszerűbben. Csatlakoztassuk a számítógéphez a készülékünket, majd indítsuk el az iTunes-t, ha az nem indult volna el automatikusan, és válasszuk azt ki a készülékünket a kis ikonra kattintva:

Ezután kattintsunk a Sorozatszám mezőre kétszer, elsőre átvált az UDID-re, másodjára pedig ott lesz az ECID – itt Mac esetén a ⌘+C, Windows esetén a ctrl+C billentyűkombinációkkal tudjuk kimásolni az azonosítót:

Ha véletlenül többször kattintottunk volna, mint szükséges, akkor kattintgassunk tovább, és visszajutunk a kívánt azonosítóhoz.

A kimásolt ECID-et illesszük be a TSS Saver oldalán az ECID mezőbe. Ezután ismét kattintsunk az iTunes-ban az ECID-re, és megkapjuk a modellazonosítót:

Ezt válasszuk ki a TSS Saver oldalán a legördülő menüből, majd kattintsunk be a CAPTCHA-t, és nyomjunk a Submit gombra. Az oldal ekkor kis idő után feldobja, hogy sikerült a mentés és kapunk egy egyedi linket is, ahonnan le tudjuk tölteni a mentett blobokat:

Kattintsunk rá erre a linkre, és utána a Download ZIP opciót választva a listában látható összes blobot le tudjuk tölteni betömörítve:

Az egyedi linket érdemes lehet eltenni könyvjelzőként, de ha ezt elfelejtettük megtenni, vagy már nincs meg a link, akkor sincs semmi gond, mert az oldal aljára görgetve a Lost your link? szekcióban az ECID alapján később is bármikor meg tudjuk keresni a mentett SHSH-inkat.

Az SHSH-k későbbi felhasználása például a futurerestore használatával lehetséges, viszont csak bizonyos korlátozásokkal.

Ez mind túl bonyolult! Van más lehetőségem?

Ha bárki downgrade-elni szeretne, közvetlenül egy-egy új iOS-verzió megjelenése után, mint például az iOS 11.4-ről a 11.3.1-re, akkor azt érdemes addig megtennie, ameddig a korábbi verziót is még aláírja az Apple. Ezt így lehet megtenni: Gyakori kérdések: az aktuális iOS-verziónál régebbi firmware visszaállítása.

Ha pedig még eddig nem frissítettünk a 11.3.1-re sem, de a 11.4-re bármi okból pláne nem szeretnénk, akkor addig tegyük fel a 11.3.1-et, amíg azt még megtehetjük külön trükközés nélkül.

Az Apple által aktuálisan aláírt iOS-verziók ebből a dinamikusan frissülő cikkünkből kérdezhetőek le: Gyakori kérdések: melyik iOS-verziót írja még alá az Apple?

Ezek még érdekelhetnek:


  1. Régi szép idők..Emlékszem amikor mentegettem le sorra az iPhone 4-emhez az SHSH fájlokat minden verzióhoz..Talán még mindig meg vannak valahol.

    DE nagyon régen tudták ezt használni is, talán a 4S-nél. Mi a helyzet mostanság? Van egyáltalán kutatás, kilátás arra hogy új módszert találjanak hogy az SHSH segítségével újabb eszközökön is vissza tudjuk állítani a régebbi IOS-okat?

  2. @ApplePen: leginkább csak annyit lehet tudni erről, amit a cikkben is leírtunk:

    Az SHSH-k későbbi felhasználása például a futurerestore használatával lehetséges, viszont csak bizonyos korlátozásokkal.

    hogy a jövő mit hoz, azt sosem lehet tudni, a fejlesztők nyilván törik rajta a fejüket, hiszen igény van erre is.

  3. @Jadeye: Köszi a választ!:) Jó volt a cikk, elkapott ettől a témától a nosztalgia feeling:)

    Szerintem amúgy eléggé ostoba és felesleges korlátozás ez az egész dolog az Apple-től, főleg ha az új szoftver bugos, és nem lehet vissza rakni már a régebbi verziót.

  4. Itt a legnagyobb baj, hogy a jailbreak-fejlesztők összeálltak az Apple-el és busás pénzért a segg*ket nyalva jelentenek minden egyes sebezhetőséget nekik! Ios9 óta nincs normális jailbreak.. Vagyis fogalmazhatnánk úgy is, hogy az iso9 volt az utolsó jailbrekelhető rendszer… Azt hiszem a 9.0.2? Minden a pénzről szól.. Ez a világ van. Kár, hogy eladtam anno a 6s pluszomat amin volt jailbreak…

  5. @Put2: “a jailbreak-fejlesztők összeálltak az Apple-el és busás pénzért a segg*ket nyalva jelentenek minden egyes sebezhetőséget nekik”
    ha kicsit utánanézel, láthatod, hogy sokkal busásabb haszon van abban, ha nem az Apple-nek jelentik, inkább eladják. az Apple ugyanis relatíve nem fizet eleget. más bug bounty programok többet fizetnek.

    az FBI közel 1 millió dollárt költött a San Bernardino-i elkövető iPhone 5c-jének feltörésére, a Zerodium nevű cég pedig 1,5 milliót kínált jailbreakhez használható exploitokért.

    az Apple bug bounty programjának díjazása ezekkel szemben:

    – Secure boot firmware: $200,000
    – Extraction of confidential material protected by the Secure Enclave Processor: $100,000
    – Execution of arbitrary code w/kernel privs: $50,000
    – Unauthorized access to iCloud account data on Apple Servers: $50,000
    – Access from a sandboxed process to user data outside of that sandbox: $25,000

    bővebben például itt olvashatsz erről: https://motherboard.vice.com/en_us/article/gybppx/iphone-bugs-are-too-valuable-to-report-to-apple

    ezek mind pont az ellenkezőjét igazolják annak, amit írtál.

  6. Jadeye: A lényegen akkor sem változtat, nincs jailbreak.. sajnos.. És azt meg nem hiszem el, hogy azért mert annyira biztonságos vagy jól megírt lenne a rendszer, hogy nem tudják feltörni! Bármiben mernék fogadni, hogy megvan már, csak nem adják ki… és ott “csücsül” valakinek az asztalában mélyen elrejtve az exploit…. Ha ez nem így van, megeszem a vasszeget.. 🙂

  7. @Put2: de nem azért nincs jailbreak, mert az Apple-nek adják el az exploitokat. ha követted az elmúlt években a jailbreakes híreket, láthattad, hogy egy csomó olyan hibát kijavított vagy ellehetetlenített az Apple, ami jailbreakhez felhasználható volt. hiszen nekik nem érdekük, hogy te jailbreakelj. majd lesz jailbreak, ha lesz. ez az elmúlt években sem volt másképp, ráadásul újabban nincs iBoot-szintű exploit, mert azt már ellőtték, így csak a userland marad, ami teljesen más kategória, és egyetlen szoftverfrissítéssel javítható.

Írd le a véleményedet! (Moderációs elveinket ide kattintva olvashatod.)

Hozzászólás írásához be kell jelentkezned!