forked from maidsafe-archive/maidsafe.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibraries-encrypt.html
298 lines (276 loc) · 13.2 KB
/
libraries-encrypt.html
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<title>File Encryption, MaidSafe Encrypt</title>
<meta name="description" content="A sliding window algorithm that can encrypt data of any length, even if written in a random manner." />
<meta name="keywords" content="File Encryption, MaidSafe Encrypt" />
<meta name="author" content="MaidSafe" />
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow" />
<meta name="robots" content="all" />
<meta name="revisit-after" content="30 days" />
<!-- Favicons -->
<link rel="shortcut icon" href="/images/favicon.ico" />
<link rel="icon" type="image/ico" href="/images/favicon.ico" />
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="css/rwdgrid.css" />
<link rel="stylesheet" type="text/css" href="css/styles.css" />
<!-- SureFile Download browser detect -->
<script type="text/javascript" src="js/browserdetect.js"></script>
<script type="text/javascript">
document.write('\x3Cscript src="' + (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//webfonts.creativecloud.com/open-sans:n4,n7,n3,i3:all.js" type="text/javascript">\x3C/script>');
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="library/js/jquery-1.9.1.min.js"><\/script>')
</script>
<script>
jQuery(document).ready(function ($) {
$('body').addClass('js');
var $menu = $('#menu'),
$menulink = $('.menu-link'),
$menuTrigger = $('.has-submenu > a');
$menulink.click(function (e) {
e.preventDefault();
$menulink.toggleClass('active');
$menu.toggleClass('active');
});
$menuTrigger.click(function (e) {
e.preventDefault();
var $this = $(this);
$this.toggleClass('active').next('ul').toggleClass('active');
});
});
</script>
<!-- IE Fix for Sticky Footer -->
<!--[if !IE 7]>
<style type="text/css">
#wrap {display:table;height:100%}
</style>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-32549768-1']);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body id="libraries">
<div id="container">
<div id="main">
<header class="shadow">
<div class="container-12 fw">
<div class="grid-4">
<a class="logo" href="/" title="Home"></a>
</div>
<div class="grid-8">
<a class="menu-link" href="#menu">Menu</a>
<nav id="menu" class="menu">
<ul>
<li class="overview single-link"><a href="overview">overview</a>
<li class="has-submenu"><a href="#">overview</a>
<ul class="sub-menu">
<li><a href="overview">overview</a>
</li>
<li><a href="distributed-network-features">features</a>
</li>
<li><a href="maidsafe-network-platform-libraries">libraries</a>
</li>
<li><a href="network-platform-use-cases">use cases</a>
</li>
<li><a href="network-platform-licensing">licensing</a>
</li>
</ul>
</li>
<li class="developers single-link"><a href="network-platform-developers">developers</a>
<li class="has-submenu"><a href="#">developers</a>
<ul class="sub-menu">
<li><a href="network-platform-developers">overview</a>
</li>
<li><a href="maidsafe-network-platform-libraries">libraries</a>
</li>
<li><a href="tutorials">tutorials</a>
</li>
<li><a href="network-platform-licensing">licensing</a>
</li>
</ul>
</li>
<li class="company single-link"><a href="company-privacy-security-freedom">company</a>
<li class="has-submenu"><a href="#">company</a>
<ul class="sub-menu">
<li><a href="company-privacy-security-freedom">overview</a>
</li>
<li><a href="team">team</a>
</li>
<li><a href="careers">careers</a>
</li>
</ul>
</li>
<li class="press"><a href="press">press</a>
</li>
<li class="blog"><a href="http://maidsafeplatform.wordpress.com/" target="_blank">blog</a>
</li>
<li class="contact"><a href="contact">contact</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
<div class="container-12">
<div class="grid-9 main-content">
<h1>MaidSafe-Encrypt</h1>
<h2>MaidSafe Encrypt Library</h2>
<h3>Description</h3>
<p>This is <strong>NOT</strong> an encryption algorithm per se, rather this is an algorithm that utilises existing very well tested algorithms (predominantly AES 256 in this case). The library provides a sliding window algorithm that can encrypt
data of any length, even if written in a random manner (or parts overwritten during write). It is very useful for encrypting disk based storage of huge data or writing data encrypted to a key value store in a manner that cannot be algorithmically
reversed (as in reversing AES or similar algorithms). The chunks of data provided are self checking and the process is recursive, so the keys output can themselves be concatenated into a large file and passed back into the algorithm, creating
a single key for any size of data set.</p>
<h3>Overview of use in the MaidSafe Platform</h3>
<p>Data encryption in the prototype implementation uses a combination of cryptographically secure hashing and AES256 symmetric encryption. Files are chunked, hashed, and then the hash of each chunk is combined with the hashes of the preceding two
chunks (cyclically) to produce keying material to encrypt that chunk. This chaining obfuscates common file fragments. The resulting encrypted chunk is the data stored in the network, and its hash stored in the data map. The system uses an
underlying peer to peer network based on a Kademlia DHT. This is a very efficient hash table implementation that has been widely deployed in many networks of millions of nodes. Unlike standard peer to peer networks, data can be deleted from
the network under instruction from authorised clients with the appropriate digital signature and validated ID.</p>
<img src="images/opportunistic-caching.png" width="600" height="527" alt="" id="end-to-end-encryption" />
<p>Encrypt overview Encryption is based on the file content and so known plaintext attacks are possible. However, this is a requirement of deduplication, and is only possible when the adversary already has a copy of the file. It is possible to
recognise chunks belonging to particular files, and therefore the presence of particular known files on the system, but it is not possible to tie those chunks to a particular user.</p>
<p id="u1832-30">Files are always split into a minimum of three chunks (smaller files are encoded within the data map directly for efficiency), so the probability of simultaneous collisions on all file chunk hashes are small enough to be ignored.</p>
<h3>Features</h3>
<ul>
<li>Extremely secure data encryption</li>
<li>Very high speed, due to parallel algorithms making use of multi cores [previous version measured read and write at over 1Gb/s with ease in an SSD raid 5 system that achieves only ~300Mbs with raw data]</li>
<li>Can handle out of sequence reads and concurrent out of sequence writes</li>
</ul>
<h3>Programming languages</h3>
<h3>Core</h3>
<p>C++11 compatible with GCC (4.7 and above), Clang (3.3 and above) and MSVC 2012 (with no dependency on CTP releases). Tested on Windows 32/64 bit, Linux 32/64 bit (dependent on GCC version) and OSX (Mountain Lion and above).</p>
<h3>Status</h3>
<p>This library is considered <strong>BETA</strong> quality and is provided with a full test suite and QA suite. This can be considered for use in production quality systems at this time.</p>
<h3>Roadmap</h3>
<ul>
<li>Upgrade to Generic programming</li>
<li>Implement exceptions and exception safety</li>
<li>Rewrite to C++11 standards (use std::array and vector specifically to improve safety) especially move aware containers.</li>
</ul>
<h3>Links</h3>
<ul>
<li><a href="https://github.com/maidsafe/MaidSafe-Encrypt/wiki" target="_blank">Wiki, including build instructions</a>
</li>
<li><a href="https://groups.google.com/forum/?fromgroups#%21forum/maidsafe-development" target="_blank">Developer mailing list</a>
</li>
<li><a href="https://github.com/maidsafe/MaidSafe-Encrypt/issues?state=open" target="_blank">Issue tracker</a>
</li>
<li><a href="http://dash.maidsafe.net" target="_blank">Build Status</a>
</li>
</ul>
</div>
<div class="grid-3 rightnav">
<div class="rightnav-box github">
<a href="https://github.com/maidsafe/MaidSafe-Encrypt/wiki" target="_blank">
<!-- content -->
<p>View on GitHub</p>
</a>
</div>
<div class="rightnav-box back">
<a href="maidsafe-network-platform-libraries">
<p>Back to Libraries</p>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="container-12">
<div class="grid-2 footer-links">
<ul>
<li><a href="/">Home</a>
</li>
<li><a href="company-privacy-security-freedom">Company</a>
</li>
<li><a href="press">Press</a>
</li>
<li><a href="http://maidsafeplatform.wordpress.com/" target="_blank">Blog</a>
</li>
<li><a href="contact">Contact</a>
</li>
</ul>
</div>
<div class="grid-2 footer-links">
<ul>
<li><a href="overview">Overview</a>
</li>
<li><a href="distributed-network-features">- Features</a>
</li>
<li><a href="faqs">- FAQs</a>
</li>
<li><a href="network-platform-use-cases">- Use Cases</a>
</li>
<li><a href="network-platform-licensing">- Licensing</a>
</li>
</ul>
</div>
<div class="grid-2 footer-links">
<ul>
<li><a href="developers">Developers</a>
</li>
<li><a href="maidsafe-network-platform-libraries">- Libraries</a>
</li>
<li><a href="network-platform-use-cases">- Tutorials</a>
</li>
<li><a href="network-platform-licensing">- Licensing</a>
</li>
</ul>
</div>
<div class="grid-6">
<ul class="social-links">
<li class="google-icon">
<a href="//plus.google.com/116247028454443786165?prsrc=3" rel="publisher" target="_blank" style="text-decoration:none;">
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;" />
</a>
</li>
<li><a href="https://twitter.com/maidsafe" class="twitter-follow-button" data-show-count="false" data-size="large" data-show-screen-name="false">Follow @maidsafe</a>
</li>
<script>
! function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + '://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js, fjs);
}
}(document, 'script', 'twitter-wjs');
</script>
</ul>
</div>
</div>
<div class="container-12">
<div class="grid-12">
<div class="footer-logos">
<img src="images/footer_logo.png" alt="maidsafe" width="182" height="52" class="logo-footer" />
<a class="" href="http://internetdefenseleague.org" target="_blank" title="Go to the Internet Defense League">
<img src="images/idlbadge.png" alt="Internet Defense League" width="60" height="35" class="idl-badge" />
</a>
</div>
<p class="legal">©2013 MaidSafe.net. All rights reserved.
<a href="disclaimer">DISCLAIMER</a>
<a href="privacy">PRIVACY</a>
</p>
</div>
</div>
</footer>
</body>
</html>