Note: Well, the bounty expired and one possible reason could be effort required to address as I gather from comments. Seeing the number of upvotes, it appears to be of interest to others as well. I would still like to get an answer so here's what I propose- a good answer within a month, will get a bonus of 50. This would I hope give adequate time and incentive
I have been trying to understand Android Encryption process and its vulnerabilities for a while
There are many questions addressing portions of this topic on this site and also on sister site. To drive my point home, these questions address portions and not the whole (reminiscent of "blind men and an elephant ?" :)
- What is Marshmallow encryption protecting?
- Does full device encryption protect my data from Google and the government?
- https://android.stackexchange.com/questions/137334/if-we-encrypt-our-device-can-user-connecting-to-adb-get-it
- Questions pertaining to SD card encryption
- android-encryption-when-phone-is-on
- android-cyanogenmod-encryption-vs-gnu
- is-there-cryptographic-material-in-a-phones-sim-card-that-can-be-used-with-rsa
- android-device-encryption
My understanding (or misunderstanding ?)
- Encryption password is generated from a combination of user lock screen PIN and encryption algorithm (therein lies an inherent weakness owing to limited length of PIN)
- This is salted, and stored in root location, not accessible to users
- This is used to generate the actual password to encrypt /decrypt and the actual password is stored in RAM
- This was strengthened by linking Step 1 to the device SoC (Which Android Version ? Which is the hardware element that uniquely identifies the device? Can that be replaced to fake?)
- Hence, it is not possible to decrypt data without encryption key and device (holds for external SD as well)
- Possible recovery methods - brute force, capturing RAM information (step 3) to obtain key
- Rooted devices appear to be more susceptible to access step 2 data through custom recovery/ possibly ROM and kernel flashing?? (if true, why is this not touted as a big risk?)
- Even if this information is obtained , I am guessing that it is non-trivial effort wise to generate the actual password
- Marshmallow can treat external SD as "internal storage" or "portable storage". Logically, it shouldn't make a difference but am not sure
There are gaps in my understanding, probably missing out on other key aspects as well.
So, I am looking for a canonical explanation for understanding from a user perspective
Entire encryption process (including external SD)
Implementation variation across Android versions- from KitKat to Marshmallow (including dual options for external SD in Marshmallow)
Vulnerabilities at a user level
Note
- I am aware of the risk of the question being considered too broad but IMO warrants a comprehensive treatment
Having some experience in communication security, I understand the challenge in translating Cryptographic concepts to a user level. I would prefer the answer to address this, with explanatory pointers for deeper understanding. Examples of the process need not be Cryptographically correct in a rigorous sense but should convey the essence
A possible advantage could be "duping" future questions on related aspects
At the cost of repetition, answers should be primarily at user level, but with adequate explanation for a deeper understanding. Splitting the answer in two portions may be a suitable way.
I would make it a point to down vote trivial/casual/patch work answers to encourage comprehensive answers
//
This might be a better fit for Security. I do also think it's too broad because a good chunk of what you're asking about depends on the particular hardware and how the manufacturer implements it.