Come può la crittografia Android essere così veloce?

43

Android utilizza la crittografia a disco intero per crittografare i file e decrittografarli all'avvio. Quello che non capisco è che la decodifica di più gigabyte di file richiede molto tempo, se non altro il tempo di accesso IO richiesto per leggere tutto il contenuto della memoria, ma Android si avvia in pochi secondi. Com'è possibile?

    
posta Aayush Mahajan 12.05.2018 - 20:47
fonte

3 risposte

83

La crittografia avviene in memoria, non sul disco.

Stai fraintendendo il modo in cui funziona la crittografia del disco. Non legge l'intero disco e lo sostituisce con una versione decifrata. Piuttosto, quando si accede a un file oa un settore di dati crittografati, viene letto in memoria e decodificato in memoria . Allo stesso modo, quando si scrive sul disco, i dati vengono crittografati in memoria prima di essere salvati nella memoria permanente. I sistemi operativi conservano copie di dati che sono stati letti o che devono essere scritti in memoria (il buffer del filesystem) come ottimizzazione delle prestazioni. È in questa memoria che avvengono la crittografia e la decifrazione. Ciò consente ai dati di essere letti dal disco e decrittografati una volta, ma successivamente si accede più volte alla memoria. Per inciso, usare la memoria per archiviare file a cui si accede frequentemente è il motivo per cui così tante persone pensano erroneamente Linux mangia troppa RAM .

Voglio anche sottolineare che il collo di bottiglia è spesso I / O, non la crittografia. Si dice che la crittografia dei gigabyte di dati richiede molto tempo, ma sulla maggior parte delle macchine moderne (inclusi i dispositivi mobili), la crittografia dei gigabyte di dati può richiedere solo pochi secondi (specialmente con l'accelerazione hardware, la crittografia è veramente, molto veloce ). Tuttavia, l'unità a stato solido nella maggior parte dei moderni dispositivi Android non è in grado di leggere o scrivere dati a quasi quelle velocità. Quindi, non importa quanto velocemente stai provando a leggere o scrivere dati sul disco, il collo di bottiglia sarà generalmente sempre I / O, non crittografia.

L'hardware precedente spesso presentava prestazioni ridotte quando era in uso la crittografia. Questo perché, a quel tempo, le velocità di archiviazione stavano migliorando più velocemente delle velocità del processore. La mancanza di accelerazione hardware dedicata per la crittografia e gli algoritmi inefficienti spesso causavano un notevole rallentamento durante l'accesso al disco. Sui sistemi moderni, questo è invertito. Il processore è così veloce che il dispositivo di archiviazione fatica a tenere il passo. Qualsiasi sovraccarico è trascurabile.

    
risposta data 13.05.2018 - 00:22
fonte
50

Non decrittografa l'intero disco all'avvio. Al contrario, decodifica continuamente i dati mentre vengono letti dal disco quando vengono letti dal disco, lasciando intatti e crittografati il contenuto reale sul disco. Poiché la decrittografia è veloce rispetto alle letture del disco, non dovrebbe influire in modo significativo sulla velocità di lettura. Ovviamente, aggiunge (marginalmente) al carico generale, però.

    
risposta data 12.05.2018 - 21:26
fonte
15

Non c'è motivo di decrittografare gigabyte di file all'avvio. Android ha solo bisogno di decifrare i file esatti di cui ha bisogno per caricare in memoria all'avvio.

FDE in Android non crittografa il kernel, solo la partizione dati utente. Puoi leggere più sul sito ufficiale .

La moderna crittografia con accelerazione hardware è abbastanza veloce e non rallenta troppo il sistema. Soprattutto quando sono solo i file utente che sono crittografati con FDE e non sono realmente critici in termini di velocità. Ci sono altri svantaggi, in realtà elencati nella pagina collegata, ma la velocità non è il problema.

I telefoni Android non potevano decodificare l'intera partizione all'avvio, anche se lo volevano: non c'è un posto dove archiviarlo.

    
risposta data 12.05.2018 - 21:32
fonte

Leggi altre domande sui tag