Avainnipun tietojen suojaus
Monien appien täytyy käsitellä salasanoja ja muita lyhyitä mutta luottamuksellisia tietoja, kuten avaimia ja sisäänkirjautumistunnuksia. Avainnippu tarjoaa turvallisen tavan näiden kohteiden tallentamiseen. Applen eri käyttöjärjestelmät käyttävät eri menetelmiä avainnipun eri suojausluokkiin liittyvien vaatimusten täyttämiseen. macOS:ssä (mukaan lukien Apple siliconilla varustettu Mac) Tietojen suojausta ei käytetä suoraan näiden vaatimusten täyttämiseen.
Yleiskatsaus
Avainnipun kohteet salataan kahdella eri AES-256-GCM-avaimella: taulukkoavaimella (metatiedot) ja rivikohtaisella avaimella (salaisuusavain). Avainnipun metatiedot (kaikki attribuutit paitsi kSecValue) salataan haun nopeuttamiseksi metatietoavaimella, ja salaisuusarvo (kSecValueData) salataan salaisuusavaimella. Metatietoavainta suojaa Secure Enclave, mutta se on tallennettu appeja suorittavan prosessorin välimuistiin, jotta avainnipulle voi tehdä nopeita kyselyjä. Salaisuusavain edellyttää aina Secure Enclaven käyttöä.
Avainnippu toteutetaan tiedostojärjestelmään tallennettuna SQLite-tietokantana. Tietokantoja on vain yksi, ja securityd
-daemon määrittää, mihin avainnipun kohteisiin kukin prosessi tai appi pääsee. Avainnipun käytön API:t tekevät daemonille kutsuja, joissa kysellään apin ”avainnipun käyttöryhmien”, ”appitunnisteen” ja ”appiryhmän” oikeuksia. Sen sijaan, että pääsyä rajoitettaisiin yhteen prosessiin, käyttöoikeusryhmien ansiosta avainnipun kohteita voidaan jakaa appien kesken.
Avainnipun kohteet voidaan jakaa vain saman kehittäjän appien välillä. Avainnipun kohteiden jakaminen edellyttää, että muiden valmistajien apit käyttävät appiryhmien kautta käyttöoikeusryhmiä, joissa on Apple Developer Program -ohjelman kautta saatu etuliite. Etuliitteen vaatimus ja appiryhmien yksilöllisyys toteutetaan koodin allekirjoituksella, provisiointiprofiileilla ja Apple Developer Program -ohjelmalla.
Avainnipun tiedot suojataan luokkarakenteella, joka on samantapainen kuin tietojen suojauksessa käytetty rakenne. Näiden luokkien käyttäytyminen vastaa tietojen suojausluokkia, mutta ne käyttävät erillisiä avaimia ja toimintoja.
Saatavuus | Tiedostojen tietojen suojaus | Avainnipun tietojen suojaus | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Kun laite ei ole lukittu | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
Kun laite on lukittu | NSFileProtectionComplete UnlessOpen | ||||||||||
Ensimmäisen avaamisen jälkeen | NSFileProtectionComplete UntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
Aina | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
Pääsykoodi käytössä | kSecAttrAccessibleWhen PasscodeSetThisDeviceOnly |
Taustalla tehtäviä päivityspalveluja käyttävät apit voivat käyttää kSecAttrAccessibleAfterFirstUnlock-luokkaa avainnipun kohteille, joita täytyy käyttää taustalla tehtävien päivitysten aikana.
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly-luokka toimii samalla tavalla kuin kSecAttrAccessibleWhenUnlocked, mutta se on käytettävissä vain, kun laitteeseen on määritetty pääsykoodi. Tämä luokka on vain järjestelmän avainvarastossa. Niitä:
Ei synkronoida iCloud-avainnippuun
Ei varmuuskopioida
Ei sisällytetä avainvarastotallenteeseen
Jos pääsykoodi poistetaan tai nollataan, kohteista tehdään käyttökelvottomia poistamalla luokka-avaimet.
Muissa avainnipun luokissa on Vain tämä laite -vastinpari, joka on aina suojattu UID:llä, kun se kopioidaan laitteesta varmuuskopioinnin aikana. Tämä tekee siitä hyödyttömän, jos se palautetaan eri laitteeseen. Apple on ottanut huomioon sekä turvallisuuden että käytettävyyden valitsemalla avainnipun luokat, jotka vaihtelevat suojattavan tiedon tyypin mukaan ja sen mukaan, milloin sitä tarvitaan iOS:ssä ja iPadOS:ssä.
Avainnipun tietoluokkien suojaus
Avainnipun kohteisiin käytetään alla lueteltuja luokkasuojauksia.
Kohde | Käytettävissä |
---|---|
Wi-Fi-salasanat | Ensimmäisen avaamisen jälkeen |
Sähköpostitilit | Ensimmäisen avaamisen jälkeen |
Microsoft Exchange ActiveSync -tilit | Ensimmäisen avaamisen jälkeen |
VPN-salasanat | Ensimmäisen avaamisen jälkeen |
LDAP, CalDAV, CardDAV | Ensimmäisen avaamisen jälkeen |
Sosiaalisen verkon tilin tunnukset | Ensimmäisen avaamisen jälkeen |
Handoff-mainostuksen salausavaimet | Ensimmäisen avaamisen jälkeen |
iCloud-tunnus | Ensimmäisen avaamisen jälkeen |
iMessage-avaimet | Ensimmäisen avaamisen jälkeen |
Kotijaon salasana | Kun laite ei ole lukittu |
Safari-salasanat | Kun laite ei ole lukittu |
Safari-kirjanmerkit | Kun laite ei ole lukittu |
Finder/iTunes-varmuuskopio | Kun laite ei ole lukittu, ei-siirrettävä |
VPN-varmenteet | Ensimmäisen avaamisen jälkeen, ei-siirrettävä |
Bluetooth®-avaimet | Aina, ei-siirrettävä |
Applen push-ilmoituspalvelun (APNs) tunnus | Aina, ei-siirrettävä |
iCloud-varmenteet ja yksityinen avain | Aina, ei-siirrettävä |
SIM PIN | Aina, ei-siirrettävä |
Missä on…? -tunnus | Aina |
Puheposti | Aina |
macOS:ssä kaikki asetusprofiilien asentamat avainnipun kohteet ovat aina käytettävissä. iOS:ssä ja iPadOS:ssä asetusprofiilin asentamien avainnipun kohteiden käytettävissäolo vaihtelee riippuen niiden tyypistä, siitä miten niihin viitataan ja siitä, milloin ne on asennettu. Oletuksena asetusprofiileja käyttäen asennetut avainnipun kohteet ovat käytettävissä ensimmäisen avaamisen jälkeen ja ei-siirrettäviä. Asetusprofiilin asentama avainnipun kohde on kuitenkin käytettävissä aina, jos se:
asennettiin ennen päivittämistä iOS 15:een, iPadOS 15.een tai uudempaan
on varmenne (ei identiteetti)
on identiteetti, johon tunniste
IdentityCertificateUUID
viittaa tietosisällössäcom.apple.mdm
Avainnipun käytön hallinta
Avainniput voivat asettaa käytönvalvontaluetteloiden (ACL) avulla käytäntöjä pääsy- ja todennusvaatimuksille. Kohteet voivat muodostaa käyttäjän läsnäoloa vaativia ehtoja määrittämällä, ettei niitä voi käyttää ilman todennusta Face ID:llä, Touch ID:llä tai syöttämällä laitteen pääsykoodi tai salasana. Kohteisiin pääsyä voidaan myös rajoittaa määrittämällä, että Face ID- tai Touch ID -rekisteröinti ei ole saanut muuttua kohteen lisäämisen jälkeen. Tämä rajoitus auttaa estämään sen, että hyökkääjä lisäisi oman sormenjälkensä voidakseen käyttää avainnipun kohdetta. Käytönvalvontaluettelot arvioidaan Secure Enclaven sisällä ja vapautetaan kerneliin vain, jos niiden määritetyt rajoitukset täyttyvät.
Avainnippuarkkitehtuuri macOS:ssä
macOS tarjoaa myös pääsyn avainnippuun, joka tallentaa kätevästi ja turvallisesti käyttäjätunnukset ja salasanat, digitaaliset identiteetit, salausavaimet ja suojatut muistiinpanot. Sitä voidaan käyttää avaamalla Avainnipun käyttö -appi kansiossa /Apit/Lisäapit/. Avainnippua käyttämällä poistetaan vaatimus syöttää (tai jopa muistaa) jokaisen resurssin tunnistetiedot. Jokaiselle Mac-käyttäjälle luodaan oletusavainnippu, mutta käyttäjät voivat luoda muita avainnippuja erityisiin tarkoituksiin.
Käyttäjän avainnippujen lisäksi macOS luottaa joihinkin järjestelmäavainnippuihin, jotka sisältävät ei-käyttäjäkohtaisia todentamisresursseja, kuten verkon tunnistetiedot ja julkisen avaimen infrastruktuurin (public key infrastructure, PKI) identiteetit. Esimerkiksi Järjestelmäjuuret-avainnippu on muuttumaton ja tallentaa internetin PKI-juurivarmentajan (CA) varmenteet, jotka mahdollistavat yleiset palvelut kuten verkkopankit ja verkkokaupat. Käyttäjä voi edesauttaa sisäisten sivustojen ja palveluiden varmentamista ottamalla käyttöön sisäisesti jaettuja varmenteita hallituilla Mac-tietokoneilla.