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