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 [email protected] _______________________________________________ List info: https://lists.mayfirst.org/mailman/listinfo/guardian-dev To unsubscribe, email: [email protected]
