To give you starting points:
USB host driver for mass storage: GitHub - felis/USB_Host_Shield_2.0: Revision 2.0 of USB Host Library for Arduino.
USB mass storage slave device (you need an Arduino Leonardo or a Teensy2 for this): http://elasticsheep.com/2010/04/teensy2-usb-mass-storage-with-an-sd-card/
You might be able to handle block access with this. Getting access to the filesystem layer of a modern filesystem (ext4, btrfs, zfs, HFS+, NTFS, etc.) is not possible with an Arduino because of the limited RAM capacity. But stuff like in-between compression/encryption is better handled at block level and not on the filesystem level.
The Arduino Mega ADK isn't suitable because the USB slave device is handled by the ATmega16U2 co-controller on the board which is only connected by a serial interface, so you haven't direct control over both USB interfaces.