ReplayKit-säkerhet i iOS och iPadOS
ReplayKit är ett ramverk som gör det möjligt för utvecklare att lägga till funktioner för inspelning och direktsändningar i sina appar. Dessutom får användare möjlighet att kommentera sina inspelningar och sändningar via enhetens framåtvända kamera och mikrofon.
Filminspelning
Flera säkerhetslager är inbyggda vid inspelningen av en film:
Tillståndsdialogruta: Innan inspelningen börjar visar ReplayKit en varningsdialogruta där användaren blir ombedd att bekräfta sin avsikt att spela in skärmen och spela in med mikrofonen och kameran på framsidan. Varningen visas en gång per approcess och visas igen om appen lämnas i bakgrunden längre tid än 8 minuter.
Skärm- och ljudinsamling: Skärm- och ljudinsamling sker via appens process i ReplayKit-bakgrundsappens replayd. Det är utformat för att säkerställa att det inspelade innehållet aldrig är tillgängligt för approcessen.
Skärm- och ljudinsamling i appar: Detta gör det möjligt för en app att hämta video- och samplingsbuffertar, vilka skyddas av behörighetsdialogrutan.
Skapa och lagra film: Filmfilen skrivs till en katalog som bara är tillgänglig för ReplayKit-undersystemen. Den är aldrig tillgänglig för några appar. Detta hjälper till att förhindra att inspelningar används av tredje part utan användarens godkännande.
Förhandsvisning och delning: Användaren kan förhandsvisa och dela filmen med ett användargränssnitt som tillhandahålls av ReplayKit. Detta användargränssnitt presenteras vid sidan av processen via iOS-tilläggsinfrastrukturen och har tillgång till den skapade filmfilen.
ReplayKit-sändning
Flera säkerhetslager är inbyggda vid sändningen av en film:
Skärm- och ljudinsamling: Mekanismen för skärm- och ljudinsamling under sändning är identisk med filminspelning och sker i
replayd
.Sändningstillägg: För att tjänster från tredje part ska kunna delta i ReplayKit-sändningar måste de skapa två nya tillägg som konfigureras med slutpunkten com.apple.broadcast-services:
Ett användargränssnittstillägg där användaren kan ställa in sin sändning.
Ett överföringstillägg som hanterar överföring av video- och ljuddata till tjänstens back-end-servrar.
Arkitekturen hjälper till att säkerställa att värdappar inte har någon behörighet till det video- och ljudinnehåll som sänds. Endast ReplayKit och sändningstillägg från tredje part har tillgång till det.
Sändningsväljare: Med sändningsväljaren kan användare starta systemsändningar direkt från en app med samma systemdefinierade användargränssnitt som är tillgängligt via Kontrollcenter. Användargränssnittet implementeras med en privat API och är ett tillägg som finns i ReplayKit-ramverket. Det ligger inte i samma process som värdappen.
Överföringstillägg: Tillägget som sändningstjänster från tredje part implementerar för att hantera video- och ljudinnehåll under sändning använder okodade raw-samplingsbuffertar. I det här hanteringsläget serialiseras video- och ljuddata och skickas till överföringstillägget från tredje part i realtid via en direkt-XPC-anslutning. Videodata kodas genom att extrahera IOSurface-objektet från videosamplingsbufferten, säkert kodat som ett XPC-objekt. Data skickas sedan via XPC till tillägget från tredje part och avkodas säkert tillbaka till ett IOSurface-objekt.