Sicurezza di ReplayKit in iOS e iPadOS
ReplayKit è un framework che consente agli sviluppatori di aggiungere possibilità di registrazione e trasmissione live alle app. Inoltre, consente agli utenti di commentare le registrazioni e le trasmissioni utilizzando la videocamera anteriore e il microfono del dispositivo.
Registrazione di filmati
Nella registrazione di un filmato sono integrati vari livelli di sicurezza:
Finestra di dialogo con richiesta di permesso: prima che la registrazione abbia inizio, ReplayKit visualizza un avviso in cui viene richiesto all’utente di dare il proprio consenso per la registrazione dello schermo e per l’uso del microfono e della fotocamera anteriore. Tale avviso viene presentato una sola volta per ogni processo dell’app; se l’app viene lasciata in background per più di 8 minuti, l’avviso viene visualizzato nuovamente.
Registrazione di schermo e audio: la registrazione dello schermo e dell’audio avviene al di fuori del processo dell’app nel daemon replayd di ReplayKit. Questo meccanismo è progettato per garantire che il contenuto della registrazione non sia mai accessibile al processo dell’app.
Registrazione di schermo e audio in-app: consente a un’app di ottenere buffer campione e video, protetti dalla finestra di dialogo con richiesta di permesso.
Creazione e archiviazione di un filmato: il file del filmato è scritto in una directory che è accessibile unicamente ai sottosistemi di ReplayKit e non è accessibile alle app. Questo meccanismo aiuta a impedire che le registrazioni possano essere utilizzate da terze parti senza il consenso dell’utente.
Anteprima e condivisione da parte dell’utente finale: l’utente dispone della possibilità di visualizzare in anteprima il filmato e di condividerlo con l’interfaccia utente di ReplayKit. L’interfaccia utente è presentata al di fuori del processo tramite l’infrastruttura delle estensioni di iOS e ha accesso al file del filmato generato.
Trasmissione con ReplayKit
Nella trasmissione di un filmato sono integrati vari livelli di sicurezza:
Registrazione di schermo e audio: il meccanismo di registrazione dello schermo e dell’audio durante la trasmissione è identico a quello della registrazione dei filmati e avviene in
replayd
.Estensioni di trasmissione: perché i servizi di terze parti partecipino alla trasmissione di ReplayKit, devono creare due nuove estensioni configurate con l’endpoint com.apple.broadcast‑services:
Un’estensione dell’interfaccia utente che consenta all’utente di configurare la trasmissione.
Un’estensione di upload che gestisca gli upload dei dati di video e audio sui server di back‑end del servizio.
L’architettura aiuta a garantire che le app host non abbiano privilegi sui contenuti video e audio trasmessi. L’accesso è consentito solo a ReplayKit e alle estensioni di trasmissione di terze parti.
Selezione trasmissione: consente agli utenti di avviare una trasmissione di sistema direttamente dall’app utilizzando la stessa interfaccia utente definita dal sistema che è accessibile tramite Centro di Controllo. L’interfaccia utente è implementata tramite un’API privata ed è un’estensione che risiede all’interno del framework di ReplayKit. Si trova al di fuori del processo dell’app di hosting.
Estensione di upload: l’estensione implementata dai servizi di trasmissione di terze parti per la gestione dei contenuti video e audio durante la trasmissione usa buffer di campioni non codificati e non elaborati. Durante questa modalità di gestione, i dati video e audio vengono serializzati e passati all’estensione di upload di terze parti in tempo reale mediante una connessione diretta XPC. I dati video vengono codificati estraendo l’oggetto IOSurface dal buffer campione del video, codificandolo in modo sicuro come oggetto XPC, inviandolo quindi all’estensione di terze parti via XPC e decrittografandolo infine nuovamente in modo sicuro nell’oggetto IOSurface.