ReplayKit-sikkerhet i iOS og iPadOS
ReplayKit er et rammeverk som lar utviklere legge til funksjonalitet for opptak og direktesending i appene. Dessuten gir det brukerne mulighet til å kommentere opptakene og sendingene ved hjelp av enhetens framovervendte kamera og mikrofon.
Filmopptak
Det er flere innebygde sikkerhetslag for filmopptak:
Tillatelsesdialogruten: Før opptaket starter viser ReplayKit et varsel der brukeren blir bedt om å bekrefte at han eller hun ønsker å gjøre opptak fra skjermbildet, mikrofonen og det framovervendte kameraet. Dette varselet vises én gang for hver app-prosess, og det vises på nytt hvis appen ligger i bakgrunnen i mer enn 8 minutter.
Bilde- og lydopptak: Bilde- og lydopptak foregår utenfor appens prosess i ReplayKits replayd-daemon. Dette er laget for å sikre at innholdet som tas opp, aldri er tilgjengelig for app-prosessen.
Bilde- og lydopptak i appen: Gir appen tilgang til video- og prøvebuffer, som beskyttes av tillatelsesdialogruten.
Lage og lagre film: Filmfilen skrives til en katalog som kun er tilgjengelig for ReplayKits undersystemer, og som aldri er tilgjengelig for apper. Dette bidrar til å forhindre at opptak brukes av tredjeparter uten brukerens samtykke.
Forhåndsvise og dele med sluttbruker: Brukeren kan forhåndsvise og dele filmen med et brukergrensesnitt som gjøres tilgjengelig av ReplayKit. Brukergrensesnittet presenteres utenfor prosessen via tilleggsinfrastrukturen i iOS og har tilgang til den genererte filmfilen.
ReplayKit-kringkasting
Det er flere innebygde sikkerhetslag for kringkasting av en film:
Bilde- og lydopptak: Det er samme bilde- og lydopptaksfunksjonalitet som brukes ved kringkasting som ved filmopptak, og den foregår i
replayd
.Kringkastingstillegg: For at tredjepartstjenester skal kunne delta i ReplayKit-kringkasting, kreves det at de oppretter to nye tillegg som er konfigurert med com.apple.broadcast-services-sluttpunktet:
Et brukergrensesnittillegg som tillater brukeren å sette opp kringkastingen
Et opplastingstillegg som håndterer opplasting av video- og lyddata til tjenestens tjenersystemer
Arkitekturen bidrar til å sikre at vertsapper ikke har noen rettigheter til kringkastet video- og lydinnhold. Kun ReplayKit og kringkastingstilleggene fra tredjeparter har tilgang.
Kringkastervelger: Med kringkastingsvelgeren kan brukere starte systemkringkasting direkte fra appen ved hjelp av det samme systemdefinerte brukergrensesnittet som er tilgjengelig via Kontrollsenter. Grensesnittet implementeres ved hjelp av en privat API og er et tillegg som opererer innenfor ReplayKit-rammeverket. Den er utenfor prosessen fra vertsappen.
Opplastingstillegg: Tillegget som kringkastingstjenester fra tredjeparter implementerer for å håndtere video- og lydinnhold når kringkasting pågår, bruker rå, ikke-kodede prøvebuffere. I denne håndteringsmodusen blir video- og lyddata serialisert og videresendt til opplastingstillegget fra tredjeparten i sanntid via en direkte XPC-tilkobling. Videodata kodes ved at IOSurface-objektet trekkes ut fra videoprøvebufferen, kodes på en sikker måte som et XPC-objekt, sendes via XPC til tredjepartstillegget og dekodes på en sikker måte tilbake til et IOSurface-objekt.