PDA

View Full Version : [C + Linux] Rubberfuse



Wizzup?
10-18-2012, 02:31 PM
Hi,

I've decided to share some of my programming projects on SRL, since it would be nice (I think) to see/do alternative (that is, non runescape) programming on here. I'll probably be dumping/describing some more projects here later. If you don't like this project or think it's too advanced, no worries, I have a lot more planned and I will post more here soon

The Rubberfuse project is very young and far from being finished.

Quick overview of skills/goals

Goals:


Education / learning about linux filesystems, encryption
Provide a safe way for journalists and other freedom fighters to store data in countries.


Skills required to work on this project are relatively advanced, although I think a lot of knowledge can be picked up while working on the project:


Programming experience in C
Linux IO System calls (chmod,chown,read,write,stat,truncate)
Basic block device understanding (Usage of dd and cat programs)
Cryptography


Tools / libraries we are using:


GNU/Linux OS
GCC (Compiler)
FUSE (Filesystem in User Space)
Nettle (http://www.lysator.liu.se/~nisse/nettle/nettle.html) or libgcrypt (http://directory.fsf.org/wiki/Libgcrypt). (Crypto libraries)


Introduction

Anyway, Rubberfuse will become an reimplementation of Rubberhose (https://en.wikipedia.org/wiki/Rubberhose_(file_system)), a filesystem written by Julian Assange that provides plausible deniability; or alternatively: Deniable encryption.

What this boils down to is basically than you can add several ``partitions'' (aspects) to an image (or actual hard disk) which each have their own password. Every aspect can be decrypted with its own password; and to the outsider there is no way to determine the amount of aspects on the image. In other words, you can plausibly deny the existence of a certain aspect. See the Wikipedia article for a better and more clear example.

The image is initially filled with random data; and all the data blocks are layed out (pseudo) randomly over the image. Every aspect can be unlocked independently of each other aspect. It is therefore only safe to ``write'' to an aspect when all the aspects have been unlocked (otherwise you might nuke data from another aspect).

Current status

Currently, rubberfuse can store files smaller than 4MB in a pseudo-random way spread over an image. Soon I will add support for multiple aspects, encryption and storage of files larger than 4MB... ;)

I am writing this with some other people (although so far I'm the only one who actually worked on it) and the code is available here:

https://github.com/MerlijnWajer/rubberfuse

But the ``real'' code so far is on a separate branch:

https://github.com/MerlijnWajer/rubberfuse/blob/rubberc/c/rubber.c

Contact

If you're interested in working on the project, just let me know. (Post here or mail me)
There's also a mailing list and IRC channel. (For more information see the TechInc wiki page: http://wiki.techinc.nl/index.php/Rubberfuse)

Zyt3x
10-18-2012, 02:50 PM
Cool, looking forward to reading (more) about this project and it's code! :)

NCDS
10-18-2012, 03:55 PM
I like the "/* Don't care at the moment */" bits, lol.

Nice looking project anyways, Wizzup. At the very least, I'll be watching how things go on github. :)

J J
10-18-2012, 10:40 PM
Looks interesting even though I do not know any C/C++ yet. I've recently been looking at DirectX/OpenGL hooking and read through some of Brandon's C/C++ code. And quite a lot DirectX hooking code but never coded myself so far. The syntax seems pretty weird to me so far :P Good luck!

[XoL]
10-18-2012, 11:26 PM
Wow that is actually pretty awesome idea, I hate when I come across ideas I have never had :p it makes me waste the next few hours doing research on that said topic.

Aka: Human Google ...

Wizzup?
07-05-2013, 03:41 PM
I'm still working on this, although we haven't produced a lot of code, the design is definitely there, more or less. If people are interesting to join the development, let me know. We program in C; and it'll be in the Linux kernel. So not FUSE anymore.

euphemism
07-05-2013, 06:20 PM
Very glad to hear this is still being developed.