This question is a followup question to Storing plaintext passwords for cameras - Security concerns?. In that question, I posed what I thought was a simple question, which actually turned out to have various security holes. Thanks to the answers, I've been able to fix most issues, except this last one...
Stiamo sviluppando nuove videocamere per il monitoraggio e la sicurezza delle case private.
Una delle funzionalità del servizio che offriamo è il servizio di registrazione online.
Dove prima, uno sarebbe stato fregato se la telecamera fosse stata rubata (dato che la fotocamera conteneva il supporto di memorizzazione su cui era stato memorizzato il filmato), con il nostro servizio di registrazione online, il filmato è memorizzato nel cloud e recuperabile in un secondo momento .
L'attuale piano di sicurezza per le telecamere e questo servizio di registrazione online è il seguente:
- Sono coinvolti 4 componenti hardware: la videocamera, il dispositivo client (telefono con app), il nostro database e il nostro servizio di registrazione.
- Una videocamera richiede (password unica) la password predefinita per la configurazione della videocamera. Questo è possibile solo dopo un reset di fabbrica (o quando la fotocamera è nuova). Questa password predefinita è archiviata in chiaro nel nostro database online per supporto.
- Durante la configurazione iniziale della telecamera, la telecamera aggiunge al proprio keystore la chiave SSH pubblica del dispositivo di configurazione.
- La fotocamera mantiene un elenco di chiavi SSH pubbliche dei dispositivi autenticati. Per registrarsi, un nuovo dispositivo deve connettersi alla telecamera e richiedere di essere aggiunto. Fornisce la sua chiave pubblica e forse qualche stringa per l'amministratore per riconoscere il dispositivo. Consentiremo la disabilitazione della registrazione per impedire agli scanner di Internet di effettuare tentativi di registrazione su ciascuna telecamera (e quindi di infastidire ogni cliente).
- È possibile che trasferiamo la registrazione delle chiavi pubbliche sulla piattaforma online, in modo che possiamo sfruttare questa possibilità per rendere più facili le registrazioni per più telecamere. Ciò tuttavia introduce un vettore di attacco in cui un dipendente può aggiungere la propria chiave nell'elenco. I clienti dovranno prestare attenzione a chi autorizzano a vedere la propria videocamera.
- Quando un dispositivo autenticato si ricollega alla telecamera, controlla eventuali nuove registrazioni e può scegliere di aggiungerle. È anche permesso di revocare l'accesso. Se un cliente aggiunge accidentalmente un dispositivo non valido (come il telefono della sua ex?) E ha il suo accesso revocato, può sempre ripristinare la telecamera con il suo accesso fisico alla telecamera e riconfigurare la videocamera.
- Per il servizio di registrazione online, un dispositivo autenticato può richiedere al servizio di registrazione online la sua chiave pubblica. La chiave pubblica viene quindi aggiunta come "sola vista" nella fotocamera. In questo modo, il servizio di registrazione può essere registrato solo con l'autorizzazione del cliente.
Questo porta un buco di sicurezza:
È possibile per i dipendenti visualizzare i feed della telecamera da qualsiasi telecamera abbonata al servizio di registrazione.
Un possibile piano pubblicato da uno dei rispondenti alla mia domanda precedente consisteva nel seguente:
- Cripta lo streaming video con una chiave di sessione.
- Rinnovare la chiave di sessione ogni pochi minuti.
- Cripta la chiave di sessione con ciascuna delle chiavi pubbliche memorizzate sulla videocamera.
- Invia chiavi di sessione crittografate e flusso crittografato al servizio di registrazione.
Ma questa soluzione non è perfetta: se si installa una telecamera per interni e si verifica un'interruzione, e sia la telecamera che il singolo, vengono rubati solo i dispositivi autenticati, lo streaming video dal servizio di registrazione è non decifrabile. In questo caso, l'unica cosa che ti rimane sono le chiavi di sessione crittografate, la chiave pubblica (se le memorizziamo sui nostri server) ei dati del flusso video crittografato. La chiave privata viene persa, così come la scheda SD su cui è possibile conservare una copia non crittografata del flusso video.
Inoltre, non è possibile per un dispositivo visualizzare il filmato di ieri se è stato aggiunto oggi. Questa è anche una funzione indesiderata.
Esiste un modo per consentire la crittografia del flusso video che è decifrabile anche se la videocamera e il dispositivo autenticato sono persi per sempre (e con esso, la registrazione locale su scheda SD e la chiave privata sul dispositivo autenticato)?
Quindi la mia domanda,
Come crittografare in modo sicuro i dati con uno schema di crittografia delle chiavi pubblico-privato, ma consentire anche la decrittografia se la chiave privata viene persa?
Mi rendo conto che potrebbe essere impossibile farlo - in tal caso, è possibile consentire la ricreazione della chiave privata ricordando un segreto (in pratica, qualcosa come l'utilizzo di una chiave derivata dalla password in chiaro del cliente per crittografare una chiave di sessione. .. di cui memorizziamo solo il valore salato, con hash)?