Our current roadmap from TrueCrypt 7.1a to the independent free and open-source software (FOSS) CipherShed 1.0.0 is as follows in the Table of Contents below. For details on how we intend to achieve these objectives, please see our Development Process page.
CipherShed 0.7.3 should be solely a re-branded version of TrueCrypt 7.1a. Clearly, this includes replacing all instances of the TrueCrypt logo with the CipherShed logo, and replacing the name "TrueCrypt" with "CipherShed" throughout the software. However, this also implicitly requires that we be able to:
- Recompile binaries for Windows, Linux, and Mac
- Establish development processes for open review and approval of code changes
- Release signed and verifiable binaries and compiled source code
The objectives of 0.7.3 are:
Proof-of-concept: To establish our development procedures and prove that we can modify the TrueCrypt source, compile it, and provide verifiable binaries that are backwards compatible with TrueCrypt 7.1a.
0.7.4: Short-term audit response
0.8.0: Merge Windows & Linux GUI and rewrite all E4M code
There have been claims that the Windows user interface, or "look and feel", of TrueCrypt was illegally taken from another encryption software called E4M. Since we intend for CipherShed to be completely FOSS, it is in the project's interests to remove and re-write any potentially illegal copyrighted or patented code. We look forward to working with the copyright holders of E4M to demonstrate precisely which portions of TrueCrypt they feel is in violation of their intellectual property, so we may remove and rewrite said portions of CipherShed, thereby respecting their claims.
0.9.0: Rewrite all TrueCrypt Foundation licensed code
1.0.0: Full production release
Additional features and improvements to CipherShed beyond 1.0.0 includes releases for multiple architectures, particularly tablets and mobile devices.
Features Wish List
- Smart Card support
- Enterprise (optional) key escrow
- Enterprise "Patching" reboot support
- Multi user credentials
- Unicode / International password support
Here is a list of some summer sized projects. Last summer an EFI prototype done as a college project.
- EFI test harness
UEFI booting is important, it provides a substantial update to how PCs boot since the DOS was on 5.25" floppy disks. But we are not in the days of writing some assembly to a floppy and pressing ctrl-alt-del to see what broke and putting back in your DOS every few seconds. Today we have to test complex OS booting off hard disks. We have HBA controllers and a modest hardware budget to create a physical machine test for EFI using Jenkins, iSCSI, and your ingenuity.
- Single build process for each OS - "Universal makefile"
The Truecrypt build was two different builds sharing the same source. A Makefile based build for Linux and Mac. Windows used a Visual Studio based build. Since we have started adding unit tests, we have to keep both build configurations in sync. The makefile based build should instead use the MS compiler, linker, etc. when on windows. This is going to be a challenging effort since some of the source code assumes the non-existence of the other.
- Windows Installer
Almost all of the vulnerabilities and licensing issues in Truecrypt, hence CipherShed, arise from the windows GUI code. There is an open vulnerability against CipherShed that will be closed once we switch to a WiX based installer. Here lies the rub, WiX is great for applications, not really well documented for device drivers. Adding on top of that, we need to support upgrading from Truecrypt which is not using a WiX. Making an installer is only 20% of the work, creating the test farm (Jenkins slaves) to validate it installs, upgrades, uninstalls from XP to Windows 10 all without the user loosing their encrypted files.
License re-write & code coverage unit tests
The EFF has been helping us with guidance in this matter. It boils down to rewrite all the non-obvious code. Every line of code needs to be examined, would you like to pick a module? In that module we are going to write a unit test to cover the current execution and then if there is another way to do that function, lets make it better. If that is the only way to do it, add a comment saying so. It is your only chance in life to make a lawyer happy.
- Unit tests for disk and crypto operations
CipherShed is a full disk encryption system. We need to game out and create unit tests for all the fundamental disk and crypto operations. E.g. testing Ukranian passwords, bad sector when changing the key, etc... But here is the cool part, this is how bugs in Truecrypt are going to be found.
* Do you have an idea?
Is there an area of study at your university you would like to apply towards CipherShed? Is there an itch that you have? We are glad to have your participation, but it will need to be limited to a size and scope that can be completed and measured within the summer.