Beskyttelse av nøkkelringdata
Mange apper må håndtere passord og andre korte, men sensitive data, som nøkler og påloggingskjennetegn. Nøkkelringen lagrer disse objektene på en sikker måte. De ulike Apple-operativsystemene bruker forskjellige mekanismer for å håndheve garantiene tilknyttet de ulike nøkkelringbeskyttelsesklassene. I macOS (inkludert på Macer med Apple-chip) brukes ikke databeskyttelse direkte til å håndheve disse garantiene.
Oversikt
Nøkkelringobjekter krypteres med to ulike AES-256-GCM-nøkler: en tabellnøkkel (metadata) og en radspesifikk nøkkel (hemmelig nøkkel). Nøkkelringmetadata (alle andre verdier enn kSecValue) krypteres med metadatanøkkelen for hurtigsøk, og den hemmelige verdien (kSecValueData) krypteres med den hemmelige nøkkelen. Metadatanøkkelen beskyttes av Secure Enclave, men bufres i applikasjonsprosessoren for å muliggjøre hurtige nøkkelringforespørsler. Den hemmelige nøkkelen må alltid innom Secure Enclave.
Nøkkelringen implementeres som en SQLite-database som er lagret i filsystemet. Det er bare én database, og securityd
-daemonen avgjør hvilke nøkkelringobjekter hver prosess eller app skal ha tilgang til. API-er for nøkkelringtilgang sender forespørsler til daemonen, som igjen spør om appens rettigheter når det gjelder «Keychain-access-groups», «application-identifier» og «application-group». I stedet for å begrense tilgangen til én enkelt prosess, gjør tilgangsgrupper det mulig for apper å dele nøkkelringobjekter.
Nøkkelringobjekter kan bare deles av apper fra samme utvikler. For å dele nøkkelringobjekter må tredjepartsapper bruke tilgangsgrupper med et prefiks de har fått tildelt av Apple-utviklerprogrammet i programgruppene deres. Prefikskravet og egenarten til applikasjonsgruppen håndheves gjennom kodesignering, klargjøringsprofiler og Apple-utviklerprogrammet.
Nøkkelringdata beskyttes med en klassestruktur tilsvarende den som brukes til beskyttelse av fildata. Disse klassene fungerer på tilsvarende måte som klassene for beskyttelse av fildata, men de bruker egne nøkler og funksjoner.
Tilgjengelighet | Beskyttelse av fildata | Beskyttelse av nøkkelringdata | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Når ulåst | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
Når låst | NSFileProtectionComplete UnlessOpen | ||||||||||
Første gang enheten låses opp | NSFileProtectionComplete UntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
Alltid | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
Kode aktivert | kSecAttrAccessibleWhen PasscodeSetThisDeviceOnly |
Apper som bruker tjenester for oppdatering i bakgrunnen, kan bruke kSecAttrAccessibleAfterFirstUnlock for nøkkelringobjekter som de trenger tilgang til under bakgrunnsoppdateringer.
Klassen kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly oppfører seg på samme måte som kSecAttrAccessibleWhenUnlocked, men den er kun tilgjengelig når enheten er konfigurert med at kode må oppgis. Denne klassen eksisterer kun i systemnøkkeletuiet. Den:
synkroniseres ikke til iCloud-nøkkelring
sikkerhetskopieres ikke
inkluderes ikke i deponeringsnøkkeletuier
Hvis koden fjernes eller tilbakestilles, gjøres objektene ubrukelige ved at klassenøklene kastes.
Andre nøkkelringklasser har en «bare denne enheten»-motpart som alltid er beskyttet av UID-en ved kopiering fra enheten under en sikkerhetskopiering. Den er derfor ubrukelig hvis den gjenopprettes på en annen enhet. Apple har sørget for en nøye gjennomtenkt balanse mellom sikkerhet og brukervennlighet ved å velge nøkkelringklasser som varierer avhengig av hvilken type informasjon som sikres og når iOS og iPadOS har bruk for den.
Beskyttelse av nøkkelringdataklasser
Klassebeskyttelsene som er oppført nedenfor, håndheves for nøkkelringobjekter.
Objekt | Tilgjengelig |
---|---|
Wi-Fi-passord | Første gang enheten låses opp |
E-postkontoer | Første gang enheten låses opp |
Microsoft Exchange ActiveSync-kontoer | Første gang enheten låses opp |
VPN-passord | Første gang enheten låses opp |
LDAP, CalDAV, CardDAV | Første gang enheten låses opp |
Kjennetegn for kontoer på sosiale nettverk | Første gang enheten låses opp |
Krypteringsnøkler for Handoff-annonsering | Første gang enheten låses opp |
iCloud-kjennetegn | Første gang enheten låses opp |
iMessage-nøkler | Første gang enheten låses opp |
Passord for Hjemmedeling | Når ulåst |
Safari-passord | Når ulåst |
Bokmerker i Safari | Når ulåst |
Finder-/iTunes-sikkerhetskopi | Når ulåst, ikke-migrerende |
VPN-sertifikater | Etter første opplåsing, ikke-migrerende |
Bluetooth®-nøkler | Alltid, ikke-migrerende |
Kjennetegn for Apples pushvarslingstjeneste (APNs) | Alltid, ikke-migrerende |
Sertifikater og privat nøkkel for iCloud | Alltid, ikke-migrerende |
PIN-kode for SIM-kort | Alltid, ikke-migrerende |
«Hvor er?»-kjennetegn | Alltid |
Talemeldinger | Alltid |
I macOS er alle nøkkelringobjekter som er installert av konfigurasjonsprofiler, alltid tilgjengelige. I iOS og iPadOS har nøkkelringobjekter som er installert av en konfigurasjonsprofil, forskjellig tilgjengelighet avhengig av type, hvordan de blir henvist til og når de ble installert. Som standard er nøkkelringobjekter som er installert av konfigurasjonsprofiler, tilgjengelige etter første opplåsing, og de er ikke-migrerende. Men et nøkkelringobjekt som er installert av en konfigurasjonsprofil, er alltid tilgjengelig hvis det:
ble installert før oppgradering til iOS 15 eller iPadOS 15 eller nyere
er et sertifikat (ikke en identitet)
er en identitet som det henvises til av
IdentityCertificateUUID
i encom.apple.mdm
-nyttelast
Tilgangskontroll for nøkkelring
Nøkkelringer kan bruke tilgangskontrollister (ACL-er) til å angi retningslinjer for tilgang og autentiseringskrav. Objekter kan fastsette betingelser som krever brukerens tilstedeværelse ved å angi at det ikke er mulig å få tilgang til dem med mindre brukeren autentiserer ved hjelp av Face ID eller Touch ID eller ved å oppgi koden eller passordet på enheten. Tilgangen til objekter kan også begrenses ved å angi at Face ID- eller Touch ID-registreringen ikke har blitt endret etter at objektet ble lagt til. Denne begrensningen bidrar til å forhindre at uvedkommende legger til sitt eget fingeravtrykk for å få tilgang til et nøkkelringobjekt. ACL-er vurderes i Secure Enclave og frigis kun til kjernen hvis de spesifikke kravene som gjelder for dem, er oppfylt.
Nøkkelringarkitekturen i macOS
macOS gir også tilgang til nøkkelringen for å lagre brukernavn og passord, digitale identiteter, krypteringsnøkler og sikre notater på en praktisk og sikker måte. Man får tilgang til den ved å åpne appen Nøkkelringtilgang i /Apper/Verktøy/. Bruk av en nøkkelring fjerner behovet for å angi, eller til og med huske, akkreditivene for hver ressurs. En første standardnøkkelring opprettes for hver Mac-bruker, selv om brukere kan opprette andre nøkkelringer for spesifikke formål.
I tillegg til å benytte brukernøkkelringer, benytter macOS en rekke systemnivånøkkelringer som vedlikeholder autentiseringsressurser som ikke er brukerspesifikke, for eksempel nettverksakkreditiver og identiteter for infrastruktur for fellesnøkkel (PKI-identiteter). En av disse nøkkelringene, System Roots, er uforanderlig og lagrer sertifikater fra internett-PKI-rotsertifikatautoriteter (CA) for å støtte vanlige oppgaver som nettbank og e-handel. På samme måte kan brukeren rulle ut internt klargjorte CA-sertifikater til administrerte Macer for å bidra til validering av interne nettsider og tjenester.