[guardian-dev] Introducing Conceal: Efficient storage encryption for Android
Hans of Guardian
hans at guardianproject.info
Wed Feb 5 17:48:30 EST 2014
On Feb 5, 2014, at 2:48 PM, Josh Steiner wrote:
> On Wed, Feb 5, 2014 at 4:23 AM, Mark Murphy <mmurphy at commonsware.com> wrote:
>> On Wed, Feb 5, 2014, at 1:08, Josh Steiner wrote:
>>> Anyone tried this yet?
>> I haven't tried it, but I examined it and found it shrug-worthy.
>> The default implementation randomly generates the encryption key and
>> stores it in on internal storage as plaintext. Hence, anyone who roots
>> the device can get at it.
> Yeah, they clearly care most about the threat model of spyware apps
> installed via mainstream app stores snooping on other apps data on SD.
> A valid use case for a lot of apps. I wonder if combining this with
> CacheWord to do better key management would be a viable choice for
> more paranoid use cases.
>>> common solution for Android is to store some data on an expandable SD
>>> card to mitigate the storage cost.
>> Android developers do not have official access to "an expandable SD
>> card" in most OS levels. On Android 1.x/2.x, external storage may be
>> removable storage. And on Android 4.4, if you use new methods like
>> getExternalFilesDirs(), you could get a directory on removable media.
>> Ordinary external storage on most devices shares a partition with
>> internal storage. Hence, from a space standpoint, internal and external
>> storage are typically identical.
> Do you happen to have an exhaustive writeup of all the foibles of
> storage on Android by chance? It's something that still hurts my
> brain whenever I have to deal with it. What a mess.
>> This means that you have two choices, in the default Conceal realm,
>> while sticking to officially-supported storage locations:
>> - Put your files on internal storage, where only someone with root can
>> get at them
>> - Put your files on external storage and encrypt them with a key stored
>> on internal storage, where only someone with root can get at it
>> I don't find that to be a vast improvement, but, then again, I may be
>> missing something.
> Well, there is a case where an app like StoryMaker wants to encrypt
> huge files like the raw .mp4's that comprise the pre edited footage of
> a story being produced. We definitely want to store this on the real
> SD card in a lot of cases. Using this (assuming it is performant and
> well audited) this "keys on internal storage, media encrypted on
> external" is a valid use cases. Though I'm more interested in the
> CacheWord model of key management.
I'm curious to hear about what advantages you think Conceal would have over IOCipher. Are the streams seekable?
It looks like it a similar idea to encfs, where each file is encrypted individually. That means lots of metadata is leaked, like the number of files, how big each one is, the last access and last modified dates, etc. All that info is obscured in IOCipher.
More information about the Guardian-dev