[Ssc-dev] Fwd: IOCipher Camera "CipherCam" progress

Nathan of Guardian nathan at guardianproject.info
Mon Mar 23 16:28:29 EDT 2015


Read on below, but if you just want to play, try this new "demo" APK:

https://guardianproject.info/releases/CipherCam-v2-DEBUG-DEV-TEST.apk

----- Original message -----
From: Nathan of Guardian <nathan at guardianproject.info>
To: guardian-dev at lists.mayfirst.org
Subject: IOCipher Camera "CipherCam" progress
Date: Mon, 23 Mar 2015 16:27:51 -0400

A few of us have been working on implement a fully encrypted Android
photo and video camera solution for awhile, to varying degrees of
success. I think I've made some useful progress that I want to share.
The solutions tried in the past have been fairly unstable, when they
even worked, and so I went in a direction that didn't require huge
binaries or specific APIs, and that was focused on stability and ease of
implementation.

The project is now probably the most comprehensive IOCipher "Sample
App", but in truth it is becoming a library almost at this point, for
any app to embed secure media capture capabilities into their app. To
summarize, this sample/app/library grabs pixels directly from the
onPreview and onPictureTaken code, and writes those bytes directly to an
IOCipher volume. It has built-in viewers/players for all the media
types, and directly displays those without exporting them. It also has a
built-in ContentProvider for sending files to other apps without first
exporting them to unencrypted storage - so you can upload to some remote
server w/o writing any unencrypted bytes to permanent flash memory, etc.
Finally, it should also be possible for other apps to launch CipherCam
to take a photo or video, and get a result in response that is
guaranteed to not have been written to any unencrypted storage.

Thanks to Hans for the updated work on IOCipher and CacheWord. This
effort is using the latest versions of both, and all is working quite
well, except for some issues with AsyncTasks we are nailing down. 

User Interface wise, I tried to replicate the very simple Moto camera,
which has almost zero features or interface. You can tap on the screen
to take a still picture, press the video camera button to stop/start
video, and switch between back and front cameras. In the video mode, you
can tap on the screen to take a still picture, AND you can switch
between front and back cameras while recording video (which is way more
fun that it should be).

On the video front, thanks to JCodec (http://jcodec.org/), I've been
able to generate MJPEG MOV/MP4 files quite easily from Camera preview
images, without having a great deal of recompression overhead. I am
working on getting PCM or AAC audio embedded in that same file, but for
now, that audio is captured into a separate file. 

WARNING: Playback of video isn't great always, but if you share it to
your desktop and watch it in Quicktime or VLC it should be quite fast.
Also, sync between video and audio tracks is also not so solid yet, but
we'll get there.

This project will be getting integrated into InformaCam, ChatSecure and
some others, so it is definitely something we are going to keep building
on. We hope you'll consider building upon it too for your secure media
capture needs!

Source is here (in old-fashioned ant/eclipse format... I am switching to
gradle-land soon....)
https://github.com/n8fr8/IOCipherCameraExample

Test APK:
https://guardianproject.info/releases/CipherCam-v2-DEBUG-DEV-TEST.apk

Bugs / features here:
https://dev.guardianproject.info/projects/iocipher
-- 
  Nathan of Guardian
  nathan at guardianproject.info


-- 
  Nathan of Guardian
  nathan at guardianproject.info


More information about the Ssc-dev mailing list