aboutsummaryrefslogtreecommitdiff
path: root/docs/comparison.md
blob: be065f516c0705cec2f6086b1e34eab0b0b3a851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Other Projects
==============

There are several open-source file encryption solutions available.
This page tries to help to find the right one for your use case:

* [gocryptfs](https://nuetzlich.net/gocryptfs/) (this project), aspiring successor of EncFS
* [EncFS](https://github.com/vgough/encfs), mature with known security issues
* [eCryptFS](http://ecryptfs.org/), integrated into the Linux kernel
* [Cryptomator](https://cryptomator.org/), strong cross-platform support through Java and WebDAV

If you spot an error or want to see a project added, please
[file a ticket](https://github.com/rfjakob/gocryptfs-website)!

Overview
--------

<table>
	<thead>
		<tr>
			<td></td>
			<td>gocryptfs</td>
			<td>encfs</td>
			<td>ecryptfs</td>
			<td>cryptomator</td>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>First release</td>
			<td><a href="https://github.com/rfjakob/gocryptfs/releases/tag/v0.1">2015</a></td>
			<td><a href="https://github.com/vgough/encfs/blob/master/ChangeLog#L1442">2003</a></td>
			<td><a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=237fead619984cc48818fe12ee0ceada3f55b012">2006</a></td>
			<td><a href="https://github.com/cryptomator/cryptomator/releases/tag/v0.1.0">2014</a></td>
		</tr>
		<tr>
			<td>Language</td>
			<td>Go</td>
			<td>C++</td>
			<td>C</td>
			<td>Java</td>
		</tr>
		<tr>
			<td>License</td>
			<td>MIT</td>
			<td><a href="https://github.com/vgough/encfs/blob/master/COPYING">LGPL/GPL</a></td>
			<td>GPL</td>
			<td><a href="https://github.com/cryptomator/cryptomator/tree/master/LICENSES">Apache/BSD/MIT</a></td>
		</tr>
		<tr>
			<td>File interface</td>
			<td>FUSE</td>
			<td>FUSE</td>
			<td>in-kernel filesystem</td>
			<td>WebDAV</td>
		</tr>
		<tr>
			<td>Platform support</td>
			<td>Linux (help wanted for Mac OS X port)</td>
			<td>Linux, Mac OS X</td>
			<td>Linux only</td>
			<td>Linux, Mac OS X, Windows</td>
		</tr>
	</tbody>
</table>


General Security
----------------

|                         | gocryptfs | encfs default | encfs paranoia |               ecryptfs               | cryptomator |
| ----------------------- | --------- | ------------- | -------------- | ------------------------------------ | ----------- |
| Documentation available | Yes [1]   | Yes [2]       | Yes [2]        | No [4]                               | Yes [3]     |
| Password hashing        | scrypt    | PBKDF2        | PBKDF2         | (none, implemented in external tool) | scrypt      |


References:
[[1]](security.md)
[[2]](https://github.com/vgough/encfs/blob/master/DESIGN.md)
[[3]](https://cryptomator.org/#security)
[[4]](http://ecryptfs.org/documentation.html) actually, there is a lot of documentation, but none of
it seems to describe the used crypto.



File Contents
-------------

|            | gocryptfs |       encfs default       |       encfs paranoia      | ecryptfs |    cryptomator     |
| ---------- | --------- | ------------------------- | ------------------------- | -------- | ------------------ |
| Encryption | GCM       | CBC, CFB (last block [1]) | CBC, CFB (last block [1]) | CBC      | CTR with random IV |
| Integrity  | GCM       | none                      | HMAC                      | none     | HMAC               |

References:
[[1]](https://github.com/vgough/encfs/issues/9)

File Names
----------

|                      |       gocryptfs       |    encfs default     |    encfs paranoia    | ecryptfs | cryptomator |
| -------------------- | --------------------- | -------------------- | -------------------- | -------- | ----------- |
| Encryption           | EME                   | CBC                  | CBC                  | CBC      | SIV         |
| Prefix leak          | no (EME)              | no (HMAC used as IV) | no (HMAC used as IV) | yes [2]  | no (SIV)    |
| Identical names leak | no (per-directory IV) | no (path chaining)   | no (path chaining)   | yes [1]  | yes [3]     |
|                      |                       |                      |                      |          |             |

References:
[[1]](https://gist.github.com/rfjakob/a04364c55b3ee231078d)
[[2]](https://gist.github.com/rfjakob/61a17bf3c7eb9932d791)
[[3]](https://github.com/cryptomator/cryptomator/issues/128)