Allekirjoitetun järjestelmätaltion suojaus
Apple esitteli macOS 10.15:ssä vain luku ‑muotoisen järjestelmätaltion, joka on omaan tarkoitukseensa varattu eristetty taltio järjestelmäsisällölle. macOS 11:ssä tai uudemmissa järjestelmäsisällön suojaksi on lisätty vahva salausteknologiaan perustuva suojaus käyttämällä allekirjoitettua järjestelmätaltiota (Signed System Volume - SSV). Allekirjoitetussa järjestelmätaltiossa on kernelmekanismi, joka tarkistaa järjestelmäsisällön eheyden ajon aikana ja hylkää kaiken sellaisen datan – oli se sitten koodia tai ei – joka ei ole kelvollisesti Applen salausavaimella allekirjoittamaa. iOS 15:stä ja iPadOS 15:stä alkaen myös iPhonen tai iPadin järjestelmätaltio saa allekirjoitetun järjestelmätaltion salausteknologiaan perustuvan suojauksen.
Sen lisäksi että allekirjoitettu järjestelmätaltio auttaa estämään minkään käyttöjärjestelmän osana olevan Apple-ohjelmiston peukaloimista, se myös tekee macOS-ohjelmiston päivittämisen luotettavammaksi ja paljon turvallisemmaksi. Jos päivitystä ei voida tehdä, järjestelmän vanha versio voidaan palauttaa ilman uudelleenasennusta, koska allekirjoitettu järjestelmätaltio käyttää APFS:n (Apple File System) tilannevedoksia.
Siitä lähtien kun APFS otettiin käyttöön, se on taannut tiedostojärjestelmän metadatan eheyden käyttämällä ei-kryptografisia tarkistussummia sisäiselle tallennuslaitteelle. Allekirjoitettu järjestelmätaltio vahvistaa eheysmekanismia lisäämällä salausavaimella lasketut tiivisteet laajentaen sen näin kattamaan tiedostojen jokaisen tavun. Sisäisen tallennuslaitteen data (mukaan lukien tiedostojärjestelmän metadata) tiivistetään salausavaimella lukupolussa ja tiivistettä verrataan odotettuun arvoon tiedostojärjestelmän metadatassa. Mikäli ne eivät täsmää, järjestelmä olettaa, että dataa on peukaloitu, eikä anna tätä dataa sitä pyytävälle ohjelmistolle.
Kukin allekirjoitetun järjestelmätaltion SHA256-tiiviste tallennetaan päätiedostojärjestelmän metadatapuuhun, joka tiivistetään. Puun kukin solmu varmistaa rekursiivisesti alisolmujensa tiivisteiden eheyden samoin kuin binäärisessä tiivistepuussa (Merkle-puu). Juurisolmun tiivisteen arvo, jota kutsutaan sinetiksi, perustuu siis allekirjoitetun järjestelmätaltion jokaiseen datatavuun, mikä puolestaan tarkoittaa, että näin saatava kryptografinen allekirjoitus kertoo koko järjestelmätaltion eheydestä.
macOS:n asennuksen ja päivityksen aikana tiedostojärjestelmästä lasketaan uusi sinetti laitteella. Tätä mittausta verrataan Applen allekirjoittamaan mittaukseen. Apple siliconilla varustetussa Macissa käynnistyslataaja tarkistaa sinetin ennen hallinnan siirtämistä kernelille. Intel-pohjaisessa Macissa, jossa on Apple T2 Security -siru, käynnistyslataaja välittää mittauksen ja allekirjoituksen kernelille, joka sitten tarkistaa sinetin suoraan ennen kuin tuo juuritiedostojärjestelmän näkyviin. Kummassakin tapauksessa, jos tarkistus epäonnistuu, käynnistysprosessi pysähtyy ja käyttäjää kehotetaan asentamaan macOS uudelleen. Tämä menettely toistetaan jokaisella käynnistyskerralla, ellei käyttäjä ole valinnut alemman suojauksen tilaa ja erikseen valinnut allekirjoitetun järjestelmätaltion ottamista pois käytöstä.
iOS- ja iPadOS-ohjelmistopäivitysten aikana järjestelmätaltio valmistellaan ja lasketaan uudelleen samalla tavalla. iOS:n ja iPadOS:n käynnistyslataajat tarkistavat, että sinetti on vahingoittumaton ja että se vastaa Applen allekirjoittamaa arvoa, ennen kuin ne sallivat laitteen käynnistää kernelin. Vastaamattomuudesta käynnistyksen aikana seuraa kehotus käyttäjälle päivittää laitteen järjestelmäohjelmisto. Käyttäjien ei sallita poistaa käytöstä allekirjoitetun järjestelmätaltion suojausta iOS:ssä ja iPadOS:ssä.
Allekirjoitettu järjestelmätaltio ja koodin allekirjoitus
Koodin allekirjoitus on edelleen käytössä ja kernelin pakottama. Allekirjoitettu järjestelmätaltio tarjoaa suojaa aina kun mitään dataa luetaan sisäisestä tallennuslaitteesta. Koodin allekirjoitus puolestaan tarjoaa suojaa, kun Mach-O-tiedostoja peilataan muistiin suoritustiedostona. Sekä allekirjoitettu järjestelmätaltio että koodin allekirjoitus suojaavat suoritettavaa koodia kaikissa luku- ja suorituspoluissa.
Allekirjoitettu järjestelmätaltio ja FileVault
macOS 11:ssä tai uudemmassa ei järjestelmätaltiota tarvitse enää salata, sillä allekirjoitettu järjestelmätaltio hoitaa vastaavan suojauksen järjestelmän sisällölle. Tiedostojärjestelmä havaitsee kaikki siihen levon aikana tehdyt muutokset dataa luettaessa. Jos käyttäjä on laittanut FileVaultin päälle, käyttäjän sisältö datataltiolla salataan edelleen käyttäjältä saatua salaisuutta käyttäen.
Jos käyttäjä poistaa allekirjoitetun järjestelmätaltion käytöstä, levossa olevasta järjestelmästä tulee haavoittuva peukaloinnille, ja tällaisen peukaloinnin avulla hyökkääjä voisi mahdollisesti saada selvitettyä salattuja käyttäjän tietoja, kun järjestelmä seuraavan kerran käynnistyy. Siksi järjestelmä ei salli käyttäjän ottaa allekirjoitettua järjestelmätaltiota pois käytöstä, jos FileVault on päällä. Tietojen suojaus levossa täytyy olla käytössä tai pois käytöstä molemmille taltioille samalla tavoin.
macOS 10.15:ssä ja aiemmissa FileVault suojaa käyttöjärjestelmäohjelmistoa levossa salaamalla käyttäjän sisällön ja järjestelmäsisällön avaimella, jota suojaa käyttäjältä saatu salaisuus. Tämän ansiosta laitteen fyysisesti käyttöönsä saanut hyökkääjä ei pääse järjestelmäohjelmiston sisältävään tiedostojärjestelmään tai voi muokata sitä.
Allekirjoitettu järjestelmätaltio ja Mac, jossa on Apple T2 Security -siru
Macissa, jossa on Apple T2 Security -siru, allekirjoitettu järjestelmätaltio suojaa vain itse macOS:n. Suojattu käynnistys suojaa ohjelmistoa, joka toimii T2-sirulla ja tarkistaa macOS:n.