]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - docs/about.rst
replace remaining .html docs with .rst docs
[tahoe-lafs/tahoe-lafs.git] / docs / about.rst
1 ======================
2 Welcome to Tahoe-LAFS!
3 ======================
4
5 Welcome to `Tahoe-LAFS <http://tahoe-lafs.org>`_, the first 
6 decentralized storage system with *provider-independent security*.
7
8 What is "provider-independent security"?
9 ========================================
10
11 Every seller of cloud storage services will tell you that their service 
12 is "secure".  But what they mean by that is something fundamentally 
13 different from what we mean.  What they mean by "secure" is that after 
14 you've given them the power to read and modify your data, they try 
15 really hard not to let this power be abused.  This turns out to be 
16 difficult!  Bugs, misconfigurations, or operator error can accidentally 
17 expose your data to another customer or to the public, or can corrupt 
18 your data.  Criminals routinely gain illicit access to corporate 
19 servers.  Even more insidious is the fact that the employees themselves 
20 sometimes violate customer privacy out of carelessness, avarice, or 
21 mere curiousity.  The most conscientious of these service providers 
22 spend considerable effort and expense trying to mitigate these risks.
23
24 What we mean by "security" is something different.  *The service 
25 provider never has the ability to read or modify your data in the first 
26 place -- never.*  If you use Tahoe-LAFS, then all of the threats 
27 described above are non-issues to you.  Not only is it easy and 
28 inexpensive for the service provider to maintain the security of your 
29 data, but in fact they couldn't violate its security if they tried.  
30 This is what we call *provider-independent security*.
31
32 This guarantee is integrated naturally into the Tahoe-LAFS storage 
33 system and doesn't require you to perform a manual pre-encryption step 
34 or cumbersome key management.  (After all, having to do cumbersome 
35 manual operations when storing or accessing your data would nullify one 
36 of the primary benefits of using cloud storage in the first place -- 
37 convenience.)
38
39 Here's how it works:
40
41 .. image:: http://tahoe-lafs.org/~zooko/network-and-reliance-topology.png
42
43 A "storage grid" is made up of a number of storage servers.  A storage 
44 server has direct attached storage (typically one or more hard disks).  
45 A "gateway" uses the storage servers and provides access to the 
46 filesystem over HTTP(S) or (S)FTP.
47
48 Users do not rely on storage servers to provide *confidentiality* nor 
49 *integrity* for their data -- instead all of the data is encrypted and 
50 integrity-checked by the gateway, so that the servers can neither read 
51 nor modify the contents of the files.
52
53 Users do rely on storage servers for *availability*.  The ciphertext is 
54 erasure-coded and distributed across ``N`` storage servers (the default 
55 value for ``N`` is 10) so that it can be recovered from any ``K`` of 
56 these servers (the default value of ``K`` is 3).  Therefore only the 
57 simultaneous failure of ``N-K+1`` (with the defaults, 8) servers can 
58 make the data unavailable.
59
60 In the typical deployment mode each user runs her own gateway on her 
61 own machine.  This way she relies on her own machine for the 
62 confidentiality and integrity of the data.
63
64 An alternate deployment mode is that the gateway runs on a remote 
65 machine and the user connects to it over HTTPS or SFTP.  This means 
66 that the operator of the gateway can view and modify the user's data 
67 (the user *relies on* the gateway for confidentiality and integrity), 
68 but the advantage is that the user can access the filesystem with a 
69 client that doesn't have the gateway software installed, such as an 
70 Internet kiosk or cell phone.
71
72 Access Control
73 ==============
74
75 There are two kinds of files: immutable and mutable.  Immutable files 
76 have the property that once they have been uploaded to the storage grid 
77 they can't be modified.  Mutable ones can be modified.  A user can have 
78 read-write access to a mutable file or read-only access to it (or no 
79 access to it at all).
80
81 A user who has read-write access to a mutable file or directory can 
82 give another user read-write access to that file or directory, or they 
83 can give read-only access to that file or directory.  A user who has 
84 read-only access to a file or directory can give another user read-only 
85 access to it.
86
87 When linking a file or directory into a parent directory, you can use a 
88 read-write link or a read-only link.  If you use a read-write link, 
89 then anyone who has read-write access to the parent directory can gain 
90 read-write access to the child, and anyone who has read-only access to 
91 the parent directory can gain read-only access to the child.  If you 
92 use a read-only link, then anyone who has either read-write or 
93 read-only access to the parent directory can gain read-only access to 
94 the child.
95
96 For more technical detail, please see the `the doc page 
97 <http://tahoe-lafs.org/trac/tahoe-lafs/wiki/Doc>`_ on the Wiki.
98
99 Get Started
100 ===========
101
102 To use Tahoe-LAFS, please see `quickstart.rst <quickstart.rst>`_.
103
104 License
105 =======
106
107 You may use this package under the GNU General Public License, version 
108 2 or, at your option, any later version.  See the file `COPYING.GPL 
109 <../COPYING.GPL>`_ for the terms of the GNU General Public License, 
110 version 2.
111
112 You may use this package under the Transitive Grace Period Public 
113 Licence, version 1 or, at your option, any later version.  The 
114 Transitive Grace Period Public Licence has requirements similar to the 
115 GPL except that it allows you to wait for up to twelve months after you 
116 redistribute a derived work before releasing the source code of your 
117 derived work. See the file `COPYING.TGGPL <../COPYING.TGPPL.html>`_ for 
118 the terms of the Transitive Grace Period Public Licence, version 1.
119
120 (You may choose to use this package under the terms of either licence, 
121 at your option.)
122