È sicuro sincronizzare le chiavi private tra dispositivi iOS usando iCloud?

11

La mia app iOS deve gestire la memorizzazione delle chiavi private per l'utente. Normalmente userei solo Servizi portachiavi per questo come sarebbe una password, ma sarebbe bello se potessi sincronizzare le chiavi tra i dispositivi dell'utente.

Apple La documentazione di iCloud dice di non usare iCloud per le password, ma è sicuro da usare per le chiavi private? Apparentemente , i dati di iCloud sono crittografati durante il transito e sul server.

Esistono rischi per la sicurezza nella sincronizzazione delle chiavi private nell'archivio dei valori-chiave di iCloud?

    
posta Nathan G. 17.03.2013 - 19:57
fonte

3 risposte

9

Vorrei eliminare l'opzione di sincronizzazione diretta e consentire semplicemente all'utente di esportare la propria chiave privata in una posizione a sua scelta, ad es. iCloud, DropBox, memoria interna, ecc., in un formato crittografato.

All'esportazione farei qualcosa del genere:

  • Chiedi all'utente una password da utilizzare. Non imporre alcuna restrizione su di loro - è il loro lavoro usare una buona password!
  • Utilizzare un potente algoritmo di derivazione della chiave come PBKDF2 per generare una chiave di archiviazione. Usa un numero decente di round.
  • Prefix il BLOB della chiave privata in memoria con quattro byte noti (un numero magico), ad es. 'NATG', per formare il testo in chiaro.
  • Cripta il testo in chiaro con AES-128 o un codice a blocchi simile, in modalità CBC, utilizzando la chiave di archiviazione e un IV generato a caso.
  • Esporta il testo cifrato e la IV in un file.

All'importazione:

  • Estrai il testo cifrato e IV dal file.
  • Chiedi all'utente la password e genera la stessa chiave usando PBKDF2.
  • Decifra il testo cifrato usando IV e la chiave.
  • Verifica che i primi quattro byte di testo normale corrispondano ai tuoi byte noti. In caso contrario, è la password sbagliata. Se è così, siamo nei soldi!
  • Rimuovi i primi quattro byte e hai la chiave privata!

Ciò consente agli utenti di sincronizzare rapidamente e facilmente le chiavi private tramite il servizio di comunicazione che desiderano, che sia iCloud o DropBox o anche e-mail, con un ragionevole livello di sicurezza. Se il loro account viene violato, l'attaccante deve ancora decifrare la propria password. Se ne hanno usato uno decente, PBKDF2 dovrebbe fare un lavoro decente per rendere il loro tentativo di cracking non fattibile.

    
risposta data 17.03.2013 - 21:06
fonte
3

Le chiavi private sono essenzialmente le stesse password. Per essere un dispositivo di sicurezza efficace, devono essere tenuti segreti. Quindi no, se la documentazione dice che non dovrebbe essere per le password, è ovvio che non è abbastanza sicuro da essere utilizzato anche per le chiavi private.

    
risposta data 17.03.2013 - 21:02
fonte
1

A differenza del suggerimento di Polynomial, non mi piace esportare su DropBox o Email, poiché la maggior parte degli utenti finali usa applicazioni di terze parti che hanno accesso a tutto il datastore utilizzando app collegate.

In particolare DropBox rende troppo facile per un'app ottenere pieno accesso all'intero archivio (chiavi e tutto).

Attualmentemistoorientandoverso iCloud , dove nessun'altra applicazione ha la capacità di leggere i dati che ho salvato nella memoria privata. Mi ci è voluto un minuto per capire questa tecnologia, in cui ogni applicazione iOS ha il proprio contenitore.

Un contenitore per applicazione consiste di

  • Un database pubblico che possono leggere / scrivere in
  • Un database privato per utente iCloud

In generale, esiste un solo contenitore per applicazione, il che significa che ciascuna applicazione iOS è isolata l'una dall'altra.

Inoltre, lo sviluppatore non può leggere direttamente il contenuto del database iCloud di un utente. Questa è una caratteristica che DropBox OAuth e altri dispositivi di archiviazione non hanno.

(per non parlare, è quasi gratuito )

Detto questo, vorrei comunque criptare come suggerisce il polinomio, indipendentemente da dove vada.

    
risposta data 15.05.2016 - 23:37
fonte

Leggi altre domande sui tag