Add blueprint.
[tails-test.git] / wiki / src / contribute / design.mdwn
blobad3caae9558b1122a0979eed6f1de99b4a8a0ebc
1 [[!meta title="Design: specification and implementation"]]
3 [[!toc levels=3]]
5 # 1 Introduction
7 In this document we present a specification of a *Privacy Enhancing
8 Live Distribution* (PELD) as well as an actual implementation of it called
9 *The Amnesic Incognito Live System* (in short: *Tails*).
11 By writing this document we intend to help third-parties do
12 security analyses of any given PELD and specifically of Tails.
13 We also wish to help establish best practices in
14 the field of PELD design and implementation, and thus raise the
15 baseline for all similar projects out there.
17 This document is heavily based on preliminary work that was done as
18 part of [Incognito 2008.1-r1
19 Documentation](https://web.archive.org/web/20100220124424/http://www.browseanonymouslyanywhere.com/incognito/uploadfiles/docs.html).
20 The *Bibliography* section has pointers to other inspiration and reference sources.
22 # 2 Privacy Enhancing Live Distribution Specification
24 **Note**: the key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
25 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
26 "OPTIONAL" in this document are to be interpreted as described in
27 [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt).
29 ## 2.1 Intent
31 Let us introduce what the PELD goals are: the features provided by the
32 PELD, the kind of user the PELD targets, and the (empty) room we think
33 the PELD fills in the Tor distributions landscape.
35 ### 2.1.1 Privacy on the Internet
37 The Privacy Enhancing Live Distribution (or PELD for short) aims at providing
38 a software solution providing the user with the technological means
39 for using popular Internet technologies while maintaining the privacy
40 of the user, in particular with respect to anonymity. While there are
41 different techniques and services providing that functionality, this
42 specification will assume the usage of [The Tor™
43 Project](https://www.torproject.org/)'s state-of-the-art anonymizing
44 overlay network Tor.
46 Due to its deep dependency on Tor, the PELD defers the same possible
47 goals as Tor:
49 - The PELD does not try to conceal it is connected to the Tor network
50   unless Tor bridge relays are used.
51 - The PELD is not secure against end-to-end attacks, such as
52   end-to-end timing or intersection attacks.
54 Moreover, the PELD is likely to be affected by any feasible attack
55 against Tor; e.g. the PELD is not secure against some local attacks,
56 such as confirmation attacks based on website fingerprinting: see Lexi
57 and Dominik's *Contemporary Profiling of Web Users* [conference at
58 27C3](http://events.ccc.de/congress/2010/Fahrplan/events/4140.en.html)
59 for details.
61 ### 2.1.2 Protection from data recovery after shutdown
63 The PELD aims at protecting the user from post-mortem analysis
64 of the equipment (notably storage media and memory) he or
65 she runs the PELD on. It is impossible for such a system to determine
66 which information is sensitive and which is not. Thus, the PELD MUST
67 be amnesic by default:
69 - It is REQUIRED no trace is left on local storage devices unless the user
70   explicitly asks for it: the PELD MUST take care not to use any
71   filesystem or swap volume that might exist on the host machine hard
72   drives.
73 - The usage of encrypted removable storage devices (such as USB
74   sticks) SHOULD be encouraged.
75 - Volatile memory MUST be erased on shutdown to prevent memory
76   recovery such as [[!wikipedia cold boot attack]].
77 - Secure erasure of files and free disk space SHOULD be made easy.
79 ### 2.1.3 Working on sensitive documents
81 The PELD aims at providing a "safe" environment to produce and
82 optionally publish sensitive documents. While the combination of
83 anonymous access to the Internet and resistance against future
84 equipment analysis does most of the job, some application-level
85 attacks deserve special treatment: e.g. tools needed to inspect and
86 cleanup metadata — such as EXIF data — in files SHOULD be available.
88 ### 2.1.4 Portability
90 The PELD MUST be self-contained and portable (literally, not
91 necessarily with respect to code portability), and thus possible to
92 run in as many computing environments as possible from the same single
93 distribution. In addition, while the PELD's main objective indeed is
94 to act as a traditional Live Distribution (i.e. a [[!wikipedia Live_CD]] or
95 [[!wikipedia Live_USB]]) it SHOULD also be compatible with popular
96 virtual machine technologies for users who simply want a sandboxed
97 environment within their usual operating system.
99 ### 2.1.5 Target user
101 The PELD's target user is the average user in terms of computer
102 literacy; he or she does not necessarily control fully the computer
103 being used. Examples would be a public computer in a library, coffee
104 shop, university or a residence. We assume that the target user does
105 not want to do any of the configurations (at least with respect to
106 security and anonymity) of the various applications and tools used
107 themselves, either because of insufficient knowledge, lack of interest
108 or other reasons. The PELD MUST provide strong anonymity with no
109 need of advanced configuration whatsoever. It MUST be made as
110 difficult as possible for the user to unknowingly compromise
111 anonymity.
113 ### 2.1.6 Filling some empty room in the Tor distributions landscape
115 XXX: update
117 The PELD is meant to be complementary to other Tor distributions. It
118 has no such goal as replacing other existing tool that properly
119 fulfills its use cases.
121 The PELD fills an empty place alongside of other Tor distributions.
122 Using the PELD certainly requires the user to change more of his or
123 her habits than installing e.g. the [Tor Browser Bundle](https://www.torproject.org/projects/torbrowser.html.en). On the other
124 hand, the PELD currently is the only tool that makes it feasible to
125 use the Internet, and more generally computers, for certain activities
126 in contexts where the user cannot afford the risks involved by other
127 Tor distributions.
129 On the online privacy side of things, the PELD is aimed at offering
130 roughly the same protection level as e.g. the Tor Browser Bundle, but
131 provides a full-blown Tor-ified operating system instead of a few
132 selected and carefully configured applications; this e.g. allows to
133 safely download and open files using external applications, as
134 mentioned by the Torbutton warning popup when a user attempts such an
135 operation outside the PELD.
137 About protection from post-shutdown data recovery, thanks to its
138 amnesic-by-default behavior, the PELD can aim at providing a level of
139 protection only a fine-tuned Live operating system can offer. On the
140 contrary Tor distributions that rely on an untrusted underlying
141 operating system could hardly guarantee anything in this area,
142 regardless of the amount of resources and cleverness that is spent to
143 leave *less* traces on local storage:
145 - widespread operating systems and shipped Internet applications
146   generally default to write all kinds of traces to local storage; Tor
147   distributions that depend on such systems are therefore forced to
148   adopt a blacklist approach to lessen the amount of traces left
149   behind. Such an approach is known to be prone to human error,
150   such as [[!tor_bug 7449]].
151 - widespread operating systems typically offer very few control knobs
152   to userspace applications over their not-amnesic-by-default
153   behavior, especially when run without any kind of administrator
154   credentials. Tor distributions that depend on such systems generally
155   have no choice but hope no undesired trace will be left e.g. in the
156   system's swap file or partition.
158 The PELD amnesic feature also allows the user to safely perform
159 non-Internet activities, which is yet another distinctive trait
160 compared to other Tor distributions.
162 To sum up, one can be a Tor expert and carefully configure a
163 non-amnesic system to be as much Tor-ified as the PELD, but he or she
164 won't get the same post-mortem analysis protection.
166 ### 2.1.7 Summary
168 In short, the PELD aims at providing privacy on computers and on the
169 Internet for anyone anywhere.
171 ## 2.2 Threat model
173 The goal of staying anonymous and keeping sensitive information
174 protected stands in direct conflict with the goals of several entities
175 "present" on the Internet. The following threat model is meant to
176 describe the intentions and capabilities of such attackers.
178 ### 2.2.1 The goal of the attacker
180 The adversary may have one or more goals among the following ones.
182 - **Identify or locate the user, track his or her activities on the
183   Internet**: information such as the User-Agent HTTP header, locale
184   and especially IP address can all be used in various degrees to
185   identify or locate the user, and to track his or her activities on
186   the Internet.
187 - **Eavesdrop on sensitive data**: the Tor network only prevents the
188   data from being traced (according to Tor's threat model) but does not
189   protect it from eavesdropping.
190 - **Data recovery after system shutdown**:  "normal" operating systems
191   keep a lot of traces about their users' Internet activities (notably
192   browser cache, cookies and history) on local storage media;
193   similary, working on a sensitive document with a "normal" operating
194   system is very likely to leave traces of this document. User's data
195   can remain on the equipment even after the machine is shut down; be
196   it stored in the filesystem or in the memories, both RAM and swap,
197   which might as well retain data (for example encryption keys or
198   passwords). The adversary may want to recover such information by
199   analyzing the equipment that has been used.
201 ### 2.2.2 Capabilities, methods and other means of the attacker
203 The adversary may have capabilities needed to perform the following
204 attacks.
206 - **Eavesdropping and content injection**: it is assumed that the
207   adversary is non-global and has full control over the network
208   traffic of some portion of the Internet (e.g. some Tor exit nodes,
209   upstream routers of exit nodes, or the ISP that provides the
210   Internet connection the user is sitting behind). The adversary is
211   thus able to eavesdrop, modify, delete or delay parts or all of the
212   user's traffic on the Internet.
213 - **Bypass attacks**: it is conceivable for attackers to mount attacks
214   which bypass the proxy and DNS setup in the applications which could
215   then be used to identify the user, either by injecting data or
216   social engineering.
217 - **Exploit software vulnerabilities**: the attacker might be able to
218   run arbitrary code by exploiting vulnerabilities present in any of
219   the software packages installed.
220 - **Application level attacks**: the attacker can utilize certain
221   applications' services and features to get identifying information.
222   Examples are JavaScript and Java applets in web browsers, CTCP
223   queries in IRC clients, etc.
224 - **Physical access, live monitoring, post-mortem equipment
225   analysis**: some users face adversaries with intermittent or
226   constant physical access to the equipment they use. Users in
227   Internet cafes, for example, face such a threat. This means the
228   adversary might be physically monitoring the computer while the PELD
229   is running on it. Moreover the adversary might raid the user at any
230   moment and then confiscate and analyse the equipment, storage media
231   and memory in particular.
233 ## 2.3 Distribution
235 The PELD MUST be distributed in a common format that can easily be
236 used to install the PELD on the selected medium. For instance, if
237 distributed as an ISO 9660 compatible image file it can be burned to a
238 DVD with almost any DVD recording software available.
240 Also, it is RECOMMENDED to make it possible for end-users to verify
241 the downloaded PELD image's integrity using public-key cryptography.
243 ## 2.4 Operational requirements
245 This section handles mostly the criteria that the PELD should be
246 portable and able to run in as many environments as possible.
248 ### 2.4.1 Platform
250 XXX: update
252 The binaries MUST all be executable on the most common computer
253 hardware architecture(s). As of 2011, the x86 computer architecture
254 seems to be the obvious choice as the vast majority of personal
255 computers in use is compatible with it. Supporting the PowerPC
256 architecture is a welcome bonus in order to support pre-Intel Apple
257 computers. Supporting widespread hardware architectures used in mobile
258 computers, such as phones, is also welcome.
260 ### 2.4.2 Media
262 The PELD SHOULD be able to boot and run natively from either a DVD or a
263 USB drive. While running the PELD in native mode it MUST be completely
264 independent from the host operating system and all other storage media
265 on the host computer unless the user explicitly tries to access any of
266 them.
268 In all circumstances, binaries, dynamic libraries and other executable
269 code susceptible to virus infections and similar MUST always be
270 completely write-protected, even when running from a writeable USB
271 medium. Such files SHOULD not even be modifiable temporarily, which
272 could be the case even when running from DVD if the filesystem is
273 loaded into memory (e.g. tmpfs).
275 Configuration files, temporary files, user home directories and
276 similar files that most likely need to be modifiable during operation
277 MUST only be saved temporarily in memory (e.g. by use of something
278 like tmpfs or unionfs) unless the user explicitly enables some
279 persistence feature.
281 It is tempting to use the possibility to write back data when running
282 from USB in order to allow user settings to be persistent. If this is
283 considered, this feature MUST be optional and offer the possibility
284 to use strong encryption for the persistent storage.
286 ### 2.4.3 Virtual machines
288 As an alternative to running the PELD natively from a DVD or USB, it
289 SHOULD also be possible to run it inside virtual machines.
291 Running the PELD is such a virtualized environment provides weakened
292 security compared to running it natively. This drawback is due to the
293 dependency on the host OS. When the PELD runs as a guest OS:
295 - The PELD cannot defend against keyloggers, viruses and other malware
296   that could be present in the host OS. The user activities in the
297   PELD might thus be under surveillance by an attacker who would
298   control the host OS enough.
299 - The PELD can not guarantee anything with respect to writing to local
300   storage: the host OS does its own memory management and can write to
301   swap any part of the memory being used by the PELD without the user
302   being told.
304 On the other hand, running the PELD inside a virtual machine is useful
305 in situations where the user is not in a position to run the PELD
306 natively, which often is the case with public computers. Additionally,
307 many users seem to prefer this mode of operation and would prefer to
308 use their usual operating system instead of rebooting to run the PELD
309 natively; that alone is a reason for making sure it works.
311 ## 2.5 Other considerations
313 ### 2.5.1 Maintainability
315 The procedure to update the PELD SHOULD NOT be prohibitive to provide
316 timely software updates that address issues related to security or
317 anonymity. A scripted, automatic build procedure is RECOMMENDED
318 over manually setting up things.
320 ### 2.5.2 Sustainability
322 PELD development SHOULD be a team work rather than a one person work,
323 and the deep knowledge of this work SHOULD be shared among the team
324 members. Thus the development infrastructure SHOULD be designed and
325 deployed in order to share this knowledge.
327 ### 2.5.3 Open-source transparency, easing peer review
329 For the sake of transparency the use of open-source software is
330 RECOMMENDED. Binary blobs SHOULD only be used when no good alternative
331 exists, which could be the case with certain hardware drivers or driver
332 firmwares.
334 Having third-parties analyze the PELD security is necessary to ensure
335 it is working as intended. It is thus REQUIRED for the PELD itself
336 to be open-source. Moreover decisions with non-trivial implications
337 SHOULD be clearly and publicly documented: such information about what
338 a PELD implementation intends to achieve and how it does so SHOULD be
339 made available to reviewers.
341 Third-parties SHALL be able to reproduce a PELD implementation by
342 building it from the released source code and publicly available
343 information. The process MUST yield consistent results.
345 ### 2.5.4 Easy feedback
347 In order to collect bug reports and wanted features, the PELD project
348 SHOULD offer easy ways for end-users to provide feedback to the
349 developers (email, web forum, bug tracker, shipped-within
350 application, ...). Efforts SHOULD be made to offer the most anonymous
351 (or at least pseudonymous) possible way to send this feedback.
353 ## 2.6 Implementation requirements
355 ### 2.6.1 Kernel requirements
357 The role of the kernel is mainly to provide support for the features
358 required elsewhere in this specification. This includes:
360 - **Good hardware support** is REQUIRED: "good" is a sketchy word in a
361   specification. The general idea is to include as much drivers for
362   relevant hardware as possible, in particular for network cards
363   (wired and wireless), video adapters and anything necessary for
364   basic operation.
365 - **Support for a stateful firewall with packet filtering
366   capabilities** is REQUIRED: it must somehow be able to sort traffic out for
367   transparent proxying (mentioned in the next section) to work.
368   Similarly, it must be able to identify and drop traffic destined to
369   the Internet that is not supported by the Tor network, such as
370   transport layer protocols other than TCP.
371 - **Security features** are RECOMMENDED: with the dangers of exploitable
372   vulnerabilities in any code running, attempts to mitigate these on
373   the kernel level is a good idea. Executable space protection with
374   the NX bit, address space layout randomization and similar
375   techniques are all interesting in this respect. Access control in
376   the form of Mandatory Access Control, Role-Based Access control and
377   so on SHOULD also be considered.
379 ### 2.6.2 Network requirements
381 #### 2.6.2.1 Firewall
383 In order to prevent accidental leaks of information, proxy bypass
384 attacks on Tor and similar, the access to the Internet MUST be
385 heavily restricted by a firewall:
387 - All non-TCP transport layer protocols SHOULD be dropped as they are
388   not supported by the Tor network.
389 - All TCP traffic not explicitly targeting Tor SHOULD be redirected to
390   the transparent proxy (i.e. to the `TransPort` as set in `torrc`);
391   alternatively this traffic SHOULD be dropped (then only applications
392   explicitly configured to use Tor will reach the Internet).
393 - All DNS lookups SHOULD be made through the Tor network (i.e.
394   redirected to `DNSPort` as set in `torrc`).
395 - All IPv6 traffic SHOULD be forbidden as it is not supported by the Tor
396   network.
398 Note that the above is not necessary (or desirable) for local network
399 (RFC1918) addresses; it is RECOMMENDED to special-case DNS queries
400 though as some home gateways and captive wifi portals reply the public
401 IP provided by the ISP when one asks information about themselves to
402 their DNS resolver (source: [The State of the DNS and Tor Union (also:
403 a DNS UDP
404 - TCP shim)](http://archives.seul.org/or/talk/Jul-2010/msg00007.html)
405 thread on the or-talk mailing-list).
407 Any exception to these rules MUST be thoroughly thought through and
408 properly documented. If an action that is excepted from the above
409 rules is user initiated, that MUST be made obvious to the user, and
410 user opt-out MUST be offered, if possible.
412 #### 2.6.2.2 Fingerprinting
414 Efforts SHOULD be made so that it is harder to fingerprint PELD users *as
415 being using the PELD*. Considering this goal can conflict with others,
416 trying to reach perfection in this domain is not necessarily
417 reasonable.
419 ### 2.6.3 User interface and applications
421 #### 2.6.3.1 General user interface
423 The user SHOULD be able to do all relevant things with easy-to-use
424 graphical interfaces. The PELD SHOULD present a solid, user-friendly
425 desktop environment with all the expected features after booting: file
426 management, system settings configuration, support applications etc.
428 #### 2.6.3.2 Internet applications
430 At least clients for the following Internet activities MUST be
431 supported:
433 - **Web browsing**: since the web browser is arguably the most used
434   end-user Internet application as well as the one that offers the
435   largest attack surface, the Tor Project has spent significant
436   resources on analyzing and mitigating the many pitfalls of modern
437   web browsers with respect to anonymity: media plugins,
438   browser-specific bugs, web technologies such as JavaScript, CSS and
439   cookies, etc. Benefiting from this work is essential for maintaining
440   anonymity, so it is REQUIRED to include only web browsers that are
441   endorsed by the Tor Project, accompanied with any configurations,
442   extensions/plugins, etc. that they recommend (for instance, Tor
443   Browser Bundle). The PELD browser fingerprint SHOULD make the PELD
444   users appear uniformly among Tor users with generally recommended
445   configuration, such as Tor Browser Bundle users.
446 - **Email**: support for PGP or S/MIME is highly RECOMMENDED. Also,
447   beware that the EHLO/HELO sent to the SMTP-server will contain the
448   host's IP address in many email clients. The `Message-ID` headers and
449   HTML/JavaScript email support are other usual leaking spots that
450   MUST be taken care of.
451 - **Instant messaging**, including IRC and XMPP.
452 - **Secure Shell** client such as [OpenSSH](http://www.openssh.org/).
454 Other RECOMMENDED clients for Internet activities include:
456 - **P2P file-sharing** such as BitTorrent: note, however, that large
457   scale file-sharing activity in general is frowned upon in the Tor
458   community as it consumes extreme amounts of network resources
459   compared to other kinds of services.
460 - **Collaborative text editing** such as [Gobby](http://gobby.0x539.de).
461 - **Remote desktop** such as VNC or RDP.
462 - **Feed aggregator** for RSS/RDF, Atom and other widely spread feed
463   formats.
465 Given that these applications will be the user's interface to the
466 Internet, they MUST be chosen and configured cautiously, and with
467 security in mind. In general, as little information as possible SHOULD
468 leak about the user, the applications used and the system settings.
470 #### 2.6.3.3 Document production applications
472 A great deal of communication over the Internet is done via the
473 distribution of different types of commonly used media and document
474 formats, so the PELD MUST contain the basic facilities for creating
475 and editing such formats. More specifically, at least the following
476 media and text production tasks MUST be possible using software
477 shipped by the PELD:
479 - **Word processing**
480 - **Bitmap and vector graphics**
481 - **Sound recording and editing**
482 - **Desktop publishing**
483 - **Printing and scanning**
485 Other RECOMMENDED media and text manipulation tools include:
487 - **Video editor**
488 - **Spreadsheet**
489 - **Presentation software**
490 - **Gettext catalogs (.po files) editor**
492 These applications SHOULD be compatible with widely spread file formats in
493 their domain.
495 #### 2.6.3.4 Cryptographic tools
497 Tools for securely signing, verifying, encrypting and decrypting files
498 and messages SHOULD be available. In particular, some implementation
499 of OpenPGP SHOULD be included as it is the de-facto standard for these
500 tasks in the Free Software world. GUIs for managing keys and
501 performing the relevant cryptographic tasks SHOULD be available. The
502 OpenPGP implementation SHOULD be pre-configured to use an encrypted
503 tunnel when connecting to a keyserver (read: `hkps://`).
505 Tools for creating and using encrypted storage containers are also RECOMMENDED.
507 A password manager SHOULD be included and allow one to store many
508 passwords in an encrypted database which is protected by a single key.
509 This is meant to encourage users to use strong passwords, and to
510 discourage password reuse.
512 Any cryptographic tool shipped in the PELD SHOULD by default use
513 up-to-date parameters with respect to the current commonly agreed best
514 practices: digests, ciphers and key sizes.
516 #### 2.6.3.5 Tor
518 Only stable releases SHOULD be considered since Tor really is at the
519 core of the PELD.
521 Tor SHOULD be set up to enable its DNS server (`DNSPort`) to allow DNS
522 lookups through the Tor network; alternatively a local DNS server can
523 be configured to use Tor.
525 If transparent proxying (as opposed to dropping non-Tor traffic) was
526 chosen in the network section, then Tor MUST be set up to enable its
527 transparent proxy (`TransPort`, `TransListen`); alternatively any
528 transparent proxy configured to use Tor as the parent proxy can be
529 used.
531 While there are many other interesting configuration possibilities
532 described in the Tor manual, care MUST be taken to avoid those that may
533 impair anonymity or security.
535 A GUI Tor controller application such as Vidalia or TorK is highly
536 RECOMMENDED. However, this requires opening the control port in Tor,
537 and thus some means of authentication will be REQUIRED
538 (`CookieAuthentication` preferably) to hinder attacks on the Tor
539 software.
541 #### 2.6.3.6 Hardened tool chain and compiling
543 As an addition to the security against exploitable vulnerabilities
544 provided by the kernel, compiling software with stack smashing
545 protection, Position Independant Executable (PIE) and similar compiler
546 security enhancements is RECOMMENDED. Note that some
547 compiler-level options may be necessary to take advantage of in-kernel
548 security features. Thus the use of a hardened tool chain might depend
549 on the vendor distribution used to build the PELD upon. If such
550 techniques are not widely deployed at this level, using them to build
551 the PELD can require a lot of time from its developers and impact its
552 ease of maintenance, which would make it harder for new contributors
553 to get involved in the project. For this reason, compile-time
554 hardening features should be carefully selected to balance the costs
555 they impose against the extra security they bring. If using a hardened
556 tool chain to build the PELD is deemed to require too much energy,
557 resources could be better spent pushing usage of such hardening
558 features in the base operating system.
560 #### 2.6.3.7 "Virtual" input system
562 Since one goal of the PELD is to permit usage of untrusted computers
563 while preserving anonymity, measures MUST be taken against hardware
564 that might de-anonymize or facilitate recording of a user, such as
565 hardware [keyloggers](http://en.wikipedia.org/wiki/Keylogger). Thus a
566 virtual keyboard (usable with the mouse) MUST be available.
568 #### 2.6.3.8 Entropy
570 Some crucial applications of the PELD, such as the Tor client, make
571 heavy use of cryptographic techniques and therefore rely on a high
572 quality pseudo-random number generator (PRNG). Initializing (seeding)
573 a PRNG is tricky in a Live system context as the system state after
574 boot, if not fully deterministic, is parameterized by far fewer
575 variables than in the case of a non-Live system.
577 Using an auxiliary entropy source such as
578 [haveged](http://www.irisa.fr/caps/projects/hipsor/) is thus
579 REQUIRED.
581 ### 2.6.4 Usability
583 Security is usually hard to get. Therefore steps SHOULD be taken in
584 order to make users more comfortable with the PELD, and also to
585 educate users about specific risks and non-intuitive situations that
586 may affect their anonymity on the Internet.
588 #### 2.6.4.1 Internationalization
590 The user MUST be able to easily select his or her language of
591 preference among a great number of widespread ones. User applications
592 SHOULD be localized to fit this preference, as SHOULD system settings
593 such as keyboard layout.
595 The PELD documentation, either online or shipped within, SHOULD be
596 easily translatable. Software written specifically for the PELD SHOULD
597 be developed with i18n/l10n-awareness in mind.
599 #### 2.6.4.2 Education and user help
601 The PELD SHOULD include an easy-to-read document explaining:
603 1. what the PELD goals (and non-goals) are. The PELD is no magic wand.
604 2. how to securely use the PELD and the bundled software.
606 As the user is assumed to only have the knowledge of an average
607 computer user, it will be required to explain some general security
608 concepts.
610 Real-world experience demonstrates that the average user quite rarely
611 thinks about upgrading his or her PELD copy, and is often pretty happy
612 unknowingly running an obsolete version affected by numerous
613 well-known security issues. A PELD running copy SHOULD therefore
614 notice it is affected by known security issues and notify the user if
615 a newer release fixes some.
617 ## 2.7 The future
619 A few more or less well known issues shall be thought through so that
620 this specification can provide reasonable guidance about them.
622 ### 2.7.1 Memory recovery attacks
624 [Research](http://www.blackhat.com/html/bh-dc-11/bh-dc-11-briefings.html#Case)
625 aims at recovering a Live system's in-memory filesystem and partial
626 recovery of its previously deleted contents. Most current Live systems
627 do not protect against that kind of attacks: at best, they erase free
628 memory on shutdown, leaving intact in memory any data saved in the
629 unionfs/aufs ramdisk branch.
631 This was
632 [discussed](http://archives.seul.org/or/talk/Jan-2011/msg00137.html)
633 on the or-talk mailing-list, and a new system that mitigates such
634 attacks is part of Tails 0.7 and newer.
636 This specification must warn about such matters.
638 ### 2.7.2 HTTP keepalive
640 Quoting the [Live CD Best
641 Practices](https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/LiveCDBestPractices)
642 document on the Tor wiki:
644 > OPTIONAL? To prevent the browser from keeping HTTP sessions open
645 > over existing circuits the following network settings should be
646 > applied. This will ensure that new circuits, such as requested via
647 > NEWNYM, will service subsequent HTTP requests.
649 The impact of HTTP keepalive and possible solutions are [being
650 discussed](http://thread.gmane.org/gmane.linux.distributions.tails.devel/52)
651 on the tails-dev mailing-list.
653 ### 2.7.3 Mounting of filesystems stored on removable devices
655 Some attacks recently put under the spotlights exploit vulnerabilities
656 in the desktop software stack that triggers automatic mounting,
657 display and files preview of filesystems stored on removable devices.
659 This specification must warn about such matters.
661 ### 2.7.4 Miscellaneous
663 - FireWire is known to allow read access to the system memory, at
664   least when such devices are allowed to use DMA (Linux: `options
665   ohci1394 phys_dma=0` helps mitigating that).
666 - Bluetooth, IrDA and other network links might allow attacks.
668 # 3 Implementation
670 Tails is an implementation of the PELD specification above. It is
671 licensed under the GNU GPL version 3 or (at your option) any later
672 version.
674 Critical parts of the configuration are based on the ones from
675 well-known and trusted sources, namely Tails ancestor
676 [Incognito](http://www.browseanonymouslyanywhere.com/incognito/)
677 and the [Tor BrowserBundle](https://www.torproject.org/projects/torbrowser.html.en).
678 This is for example the case for the firewall, polipo and Tor configurations.
680 **NOTICE**: this distribution is provided as-is with no warranty of
681 fitness for a particular purpose, including total anonymity. Anonymity
682 depends not only on the software but also on the user understanding
683 the risks involved and how to manage those risks.
685 ## 3.0 Other Tails design documents
687 [[!map pages="contribute/design/*"]]
689 ## 3.1 Download
691 See the [[download section|download]] on [[Tails's website|/index]]
692 for download information. Published Tails images integrity can be
693 checked using OpenPGP detached signatures made with a key that is well
694 linked to the web-of-trust.
696 The sources are stored in a bunch of [Git](http://git-scm.com/)
697 repositories. The [[git page|contribute/git]] on the Tails website provides all
698 needed information to access these repositories.
700 The latest version of this document can be found on the Tails
701 website: [[!tails_website contribute/design]].
703 ## 3.2 Software
705 Tails ships the following software. This list is not complete, but
706 only contains packages deemed as important for whatever reason. The
707 full packages list can be found in the [BitTorrent files download
708 directory](/torrents/files/) (look for files with the `.packages`
709 extension).
711 ### 3.2.1 Core software
713 - [Debian GNU/Linux](https://www.debian.org/): the base operating
714   system, provides hardware detection, infrastructure. Please note
715   that the Debian distribution does not provide or endorse Tails.
716 - [Tor](http://www.torproject.org/): anonymizing overlay network for
717   TCP. Our intention is to always use the latest stable version.
718 - [polipo](http://www.pps.jussieu.fr/%7Ejch/software/polipo/):
719   Caching web proxy.
720 - [Vidalia](https://www.torproject.org/projects/vidalia) is used
721   to control Tor's behavior.
723 Being based in Debian, Tails benefits from its great package
724 management tools, facilitating its build and the inclusion of new
725 software. Sadly compile time options that would enhance Tails
726 security (`-fPIE`, `-fPIC`, `-fstack-protector` etc.) are not widely
727 used in Debian yet. Thus having them included in Tails would require
728 to recompile every package with the right compile-time options. This
729 would badly impact the development and build efforts required to
730 release Tails. As an alternative, efforts [have been
731 started](https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=hardening;users=debian-security@lists.debian.org)
732 to push usage of such hardening features in Debian.
734 A lot of security features have been implemented upstream at the
735 kernel level (ASLR, removal of `/dev/kmem`, `/dev/mem` protections,
736 various stack and heap hardening features, `/proc` or `/sys` not leaking
737 sensitive information, etc.), most of them being slowly integrated
738 into Debian. This is the reason why the Tails kernel has no more special
739 kernel security feature than the stock Debian kernel.
741 ### 3.2.2 Other applications
743 See [[doc/about/features]].
745 ## 3.3 Internationalization
747 Tails ships, as is, localization files provided by the installed
748 Debian packages. All available iceweasel localization packages
749 are installed. Spell checking software and data is installed for the
750 set of best supported languages; it is usable at least is Iceweasel,
751 LibreOffice and gedit.
753 ### 3.3.1 Input methods
755 Tails ships with IBus and a few engines (Anthy for Japanese, Pinyin
756 and Bopomofo for Chinese, and Hangul for Korean).
758 A login script prepares and configures IBus. When a Japanese,
759 Chinese or Korean locale is selected, this login script selects
760 the right default input method, and then starts the IBus daemon.
762 Since one may want to work on documents written in
763 Chinese, Japanese or Korean even when selecting English as their
764 preferred language, IBus can also be manually started in other locales
765 using the "IBus Preferences" launcher in the System->Preferences menu.
766 IBus' environment variables is always exported on login to make this work.
768 - [[!tails_gitweb config/chroot_local-includes/etc/X11/Xsession.d/80im-starter]]
770 ## 3.4 Notification of security issues and new Tails releases
772 Tails ships a script that checks if there are security issues that are
773 not fixed by any Tails release (and thus, affect the currently running
774 Tails regardless of its version). A desktop notification is displayed
775 for every such issue.
777 The connections are made to the Tails website through Tor, over HTTPS
778 with a pinned CA. The only piece of information leaked to the Tails
779 web server (apart of [[!cpan LWP::UserAgent]]'s specific User-Agent
780 and HTTP behavior) is the first two chars of the `LANG`
781 environment variable.
783 This script is run after the user has logged-in and Tor is
784 in known-working state.
786 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/tails-security-check]]
787 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/tails-security-check-wrapper]]
789 Security issues that were fixed in a newer version of Tails are taken
790 care of by [[Tails Upgrader|contribute/design/incremental_upgrades]]
791 that tells the user whenever they should upgrade and leads them
792 through the necessary steps.
794 ## 3.5 Feedback
796 Users can send feedback in several ways to Tails developers.
797 A [[!tails_redmine desc="task tracker"]] is available.
798 Users can also send email to the private [developers mailing
799 list](tails@boum.org) or to the public [support mailing
800 list](tails-support@boum.org).
802 A dedicated application called *WhisperBack*
803 is also available in every running Tails copy. WhisperBack allows
804 users to send anonymous or pseudonymous feedback via OpenPGP-encrypted
805 email. It is configured in Tails to use a Tor hidden service run by
806 Tails developers as the outgoing SMTP server. WhiperBack only sends
807 email over a STARTTLS session after carefully verifying the remote
808 SMTP SSL certificate. Some minimal information about the system is
809 gathered and sent along with the report; the reporting user can
810 opt-out of this though. Users can also provide an email address and an
811 OpenPGP public key in case further discussion is needed to address the
812 reported issue. WhisperBack's graphical interface fully supports
813 internationalization and is ready to be translated.
815 - [[!tails_gitweb_dir config/chroot_local-includes/etc/whisperback]]
816 - [WhisperBack source code](https://git-tails.immerda.ch/whisperback)
818 ## 3.6 Configuration
820 In this section we briefly present the setup of several key software
821 packages and system settings of Tails with respect to security and
822 anonymity. There are of course other minor tweaks here and there, but
823 those are mainly for usability issues and similar.
825 ### 3.6.1 The Tor™ software
827 The Tor software is currently configured as a client only (onion
828 proxy). The client listens on a control port 9051
829 (using cookie authentication), as a transparent proxy on port 9040
830 (only used for remapped hidden services) and as a DNS server on port
831 8853.
833 The client listens on a few SOCKS ports (the rationale being detailed
834 on the [[Tor stream isolation design
835 page|contribute/design/stream_isolation]]): 9050, 9061, 9062 and 9151.
837 Only connections from localhost are accepted. It can be argued
838 that running a Tor server (onion router) would increase one's
839 anonymity for a number for reasons but we still feel that most users
840 probably would not want this due to the added consumption of
841 bandwidth. The user can nevertheless easily choose to turn his or her
842 Tor client into a relay, thanks to the Vidalia graphical user
843 interface.
845 If a compromised software had access to the Tor control port,
846 an attacker who controls it could simply ask Tor the public
847 IP through the `GETINFO address` command.
848 To prevent this, access to the Tor control port is only
849 granted to the vidalia user, who is running Vidalia.
850 A filtering proxy to the control port exists, so
851 Torbutton still can perform safe commands like `SIGNAL NEWNYM`.
853 - [[!tails_gitweb chroot_local-hooks/06-adduser_vidalia]]
854 - [[!tails_gitweb chroot_local-includes/usr/local/sbin/restart-vidalia]]
855 - [[!tails_gitweb chroot_local-includes/usr/local/sbin/tor-controlport-filter]]
856 - [[!tails_gitweb chroot_local-includes/etc/tor/torrc]]
858 <a id="dns"></a>
860 ### 3.6.3 DNS
862 [[!inline pages="contribute/design/Tor_enforcement/DNS" raw=yes]]
864 ### 3.6.4 HTTP Proxy
866 [[!inline pages="contribute/design/Tor_enforcement/Proxy" raw=yes]]
868 ### 3.6.5 SOCKS libraries
870 tsocks and torify are installed. Since Tor-ification is done at a
871 lower level (in-kernel network filter, Tor-ified DNS), these tools are
872 actually unnecessary. They are solely included due to dependencies and
873 configured for completeness.
875 - [[!tails_gitweb config/chroot_local-includes/etc/tor/tor-tsocks.conf]]
877 ### 3.6.6 Network Filter
879 [[!inline pages="contribute/design/Tor_enforcement/Network_filter" raw=yes]]
881 ### 3.6.7 MAC address spoofing
883 See [[the dedicated design document|design/MAC_address]].
885 ### 3.6.8 Host system swap
887 Tails takes care not to use any swap filesystem that might exist on
888 the host machine hard drive. Most of this is done at build time:
889 the `/sbin/swapon` binary is replaced by a fake no-op script, and
890 live-boot's `swapon` option is not set.
892 - [[!tails_gitweb config/chroot_local-hooks/05-disable_swapon]]
894 ### 3.6.9 Host system RAM
896 [[!inline pages="contribute/design/memory_erasure" raw=yes]]
898 ### 3.6.10 Host system disks and partitions
900 Tails takes care not to use any filesystem that might exist on
901 the host machine hard drive, unless explicitly told to do so by the
902 user. The Debian Live persistence feature is disabled by passing
903 `nopersistence` over the kernel command line to live-boot.
905 - [[!tails_gitweb config/amnesia]]
907 ### 3.6.11 Filesystems stored on removable devices
909 Removable drives auto-mounting is disabled in Tails 0.7 and newer.
911 - [[!tails_gitweb config/chroot_local-includes/usr/share/amnesia/gconf/apps_nautilus.xml]]
913 ### 3.6.11 Secure erasure of files and free disk space
915 Securely erasing files and free disk space is made easy by integrating
916 [secure-delete](http://www.thc.org) tools into the Nautilus file
917 manager, thanks to [Nautilus
918 Wipe](http://wipetools.tuxfamily.org/nautilus-wipe.html).
920 ### 3.6.12 Passwords
922 Two users are intended to be used for logins: `amnesia` and `root`.
923 None have a password by default; the `amnesia` user is
924 allowed to gain super user privileges, using `sudo`, if an
925 administrator password is set in tails-greeter.
927 The PELD specification recommends to prevent executable code to be
928 modifiable, even temporarily; Tails does not implement this
929 recommendation. Instead, thanks to the super user privileges being
930 available to the end-user, Tails makes it possible to modify or add
931 executable code by:
933 - upgrading bundled software: this allows (technical) users to protect
934   themselves from serious security issues until an updated Tails is
935   released
936 - installing additional software: this helps achieving the PELD
937   "Working on sensitive documents" goal by enabling users to perform
938   tasks that need software not shipped in Tails.
940 Such modifications happen only in RAM, the user will remove the DVD/USB
941 when done and there are no services allowing logins from the network.
943 As a first step Tails has stopped
944 granting `sudo` privileges to the `amnesia` user by default.
945 Unless an administrator password is set in tails-greeter,
946 no root access is possible afterwards.
948 ### 3.6.13 Iceweasel
950 (Note: Iceweasel is the name of the web browser, based on Mozilla
951 Firefox, that is shipped by Debian and thus by Tails.)
953 Tails ships custom Iceweasel ESR packages built with the Torbrowser
954 patches to better blend in the Tor Browser Bundle's anonymity set.
955 Some patches, that are not relevant for Tails, are not
956 applied, though: see the Tails browser's
957 [changelog](https://git-tails.immerda.ch/iceweasel/plain/debian/changelog?h=tails/master)
958 for the current status.
960 Iceweasel uses the Torbutton extension in order to prevent attacks
961 using JavaScript, plugins and other non-HTTP features like web
962 bugs. It is configured to always be enabled on Iceweasel start and
963 uses Tor as SOCKS5 proxy. SOCKS is configured to perform name
964 resolution through this proxy. Iceweasel is also configured to not
965 cache to disk (mainly to reduce memory usage for DVD users as disk
966 writes will be stored there), history is disabled (just in case) and
967 many other things. It is also set up not to automatically check for
968 updates of its installed extensions. Java support is disabled.
970 Iceweasel is shipped with some extensions to help users manage their
971 browsing experience. The Torbutton settings treat all cookies as
972 session cookies by default. This prevents the
973 known leak of browsing information cookies can lead to. The [Adblock
974 plus](https://addons.mozilla.org/fr/firefox/addon/1865/) extension
975 protects against many tracking possibilities by removing most ads.
977 Tails ships the [HTTPS
978 Everywhere](https://www.eff.org/https-everywhere) extension that
979 forces HTTPS usage for requests to a number of major websites.
981 Tails also ships the
982 [FoxyProxy](https://addons.mozilla.org/fr/firefox/addon/2464/)
983 extension that:
985 - allows using I2P instead of Tor to visit eepsites (I2P's own hidden
986   services look-alike); see [[the design document dedicated to Tails
987   use of I2P|I2P]] for details;
988 - could help [[!tails_todo FTP_in_Iceweasel desc="fixing Iceweasel's FTP support"]].
990 Thanks to Torbutton, to the Tor Browser patches, and to us importing
991 (most of) the TBB preferences, Iceweasel is configured so that Tor browser
992 fingerprint appears uniformly among Torbutton users. Tails enables
993 Torbutton's EN-US locale spoofing to avoid partitioning Tails
994 users into per-language anonymity sets.
996 Torbutton is also configured to spoof the timezone settings the same
997 way as the Tor Browser Bundle does, i.e. to `UTC+00:00`.
999 Thanks to the Tor Browser patches, the in-memory web cache is isolated
1000 to the url bar origin.
1002 The Iceweasel config is poorly commented but the commit messages in
1003 Git history explains it all. In a nutshell, Iceweasel preferences are
1004 set in various ways:
1006 * A Tor Browser patch called
1007   `0022-Tor-Browser-s-Firefox-preference-overrides.patch` bundles
1008   their prefs directly into `omni.ja`.
1009 * `/etc/iceweasel/*/*.js` contains:
1010   - Torbutton preferences that the TBB also sets;
1011   - some Tails-specific settings.
1013 Whenever the user tries to start Iceweasel before Tor is ready, they
1014 are informed it won't work, and asked whether to start the browser
1015 anyway:
1017 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/iceweasel]]
1018 - [[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tor-has-bootstrapped]]
1019 - [[!tails_gitweb config/chroot_local-includes/etc/sudoers.d/zzz_tor-has-bootstrapped]]
1021 Once Tor is ready to be used, the user is informed they can now use
1022 the Internet:
1024 - [[!tails_gitweb config/chroot_local-includes/etc/NetworkManager/dispatcher.d/60-tor-ready-notification.sh]]
1026 Source code, scripts and configuration:
1028 - [[!tails_gitweb_dir config/chroot_local-includes/etc/iceweasel]]
1029 - Tails' Iceweasel source [[lives in Git|contribute/git]]
1030 - [[!tails_gitweb config/chroot_local-hooks/12-remove_unwanted_iceweasel_searchplugins]]
1031 - [[!tails_gitweb config/chroot_local-hooks/13-iceweasel_sqlite]]
1032 - [[!tails_gitweb config/chroot_local-hooks/13-override-tbb-branding]]
1033 - [[!tails_gitweb config/chroot_local-hooks/14-add_localized_iceweasel_searchplugins]]
1034 - [[!tails_gitweb config/chroot_local-hooks/14-generate-iceweasel-profile]]
1035 - [[!tails_gitweb config/chroot_local-hooks/15-symlink-places.sqlite]]
1037 ### 3.6.14 Claws Mail
1039 Claws Mail generates `Message-ID` headers using the hostname part of
1040 the sender's email address, which does not leak usage of the PELD nor
1041 any user location information.
1043 It also always says `EHLO localhost` to the SMTP server instead of
1044 disclosing the real IP address and hostname. This is achieved thanks
1045 to tsocks, as Claws Mail leaks the hostname in the HELO/EHLO
1046 message, resulting in a hostname leak in the `Message ID` and
1047 `Received` email headers, when run with `torify` and `torsocks`.
1049 Furthermore, any account a user creates is pre-configured to not use
1050 HTML in order to get rid of a whole class of privacy concerns.
1052 OpenPGP support is provided by the PGP/inline and PGP/MIME plugins.
1054 - [[!tails_gitweb_dir config/chroot_local-includes/etc/skel/.claws-mail]] is copied to
1055   the user's `$HOME` at boot time
1056 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/torified-claws-mail]]
1057 - [[!tails_gitweb config/chroot_local-includes/etc/tor/tor-tsocks-mua.conf]]
1059 ### 3.6.15 Pidgin
1061 Pidgin is configured in Tails to not log anything as well as not to reveal too
1062 much of user activity by disabling reporting of online/away/typing
1063 status. Only IRC and Jabber/XMPP protocols are left available, to
1064 avoid the usage of less well audited plugins. The Off-the-record
1065 plugin is enabled
1066 to help one-to-one conversations being as private and unrecordable as
1067 possible. At boot a language confluxer generates a random looking default
1068 nickname from the 2000 most common U.S. names (according to the U.S. social
1069 security administration in the 1970's), which results in something Englishesque
1070 sounding. The nickname is further made to look like a typical IRC nickname by
1071 prefixing it with ^ or _ with probability 0.05, and changing it to leet speak
1072 with probability 0.05. When answering to CTCP requests, Pidgin does
1073 not leak any information apart from PING and VERSION (`Purple IRC`),
1074 which is deemed acceptable as there are probably other weirdness in
1075 how the protocol is implemented, that disclose as much.
1077 - [[!tails_gitweb config/chroot_local-includes/lib/live/config/2010-pidgin]]
1078 - [[!tails_gitweb_dir config/chroot_local-includes/etc/skel/.purple]]
1079 - [[!tails_gitweb config/chroot_local-hooks/09-remove_unsupported_pidgin_libs]]
1081 ### 3.6.16 GnuPG
1083 GnuPG tools (namely: GPG itself and Seahorse) are configured to use
1084 the sks-keyservers pool since it's reliable, well-synchronized with
1085 the other HKP keyservers pools, and reachable over `hkps://`.
1087 [[!tails_todo Monkeysphere]]'s `hkpms://` support will be used as soon as
1088 possible in place of the hierarchical X.509 certification model.
1090 GnuPG is configured to prefer non-outdated digest algorithms such as
1091 SHA256, to force exclusion of the version string in ASCII armored
1092 output, to avoid automatically locating and retrieving keys, and to
1093 disregard the preferred keyserver assigned to specific keys.
1095 - [[!tails_gitweb config/chroot_local-includes/etc/skel/.gnupg/gpg.conf]]
1096 - [[!tails_gitweb config/chroot_local-includes/etc/ssl/certs/sks-keyservers.netCA.pem]]
1097 - [[!tails_gitweb config/chroot_local-includes/usr/share/amnesia/gconf/desktop_pgp.xml]]
1098 - hkpms is available in Debian: [[!debpkg msva-perl]]
1100 ### 3.6.17 Persistence feature
1102 An opt-in data persistence feature is available in Tails 0.11 and
1103 newer. See [[contribute/design/persistence]] for details.
1105 ### 3.6.18 Installation on USB sticks and SD cards
1107 An easy (read: not command-line based) way to install and upgrade
1108 Tails on USB sticks and SD cards is available in Tails 0.11 and newer.
1109 SD cards readers wired via SDIO are supported since Tails 0.21.
1110 See [[design/installation]] for details.
1112 ### 3.6.19 Wireless devices handling
1114 Tails puts the wireless devices in a sensible state at boot time.
1116 At boot time, Tails unblocks Wi-Fi, WWAN and WiMAX radios, unblocks
1117 Bluetooth radio (so that it can be dealt another way:
1118 [[todo/protect_against_external_bus_memory_forensics]]), and
1119 soft-blocks all other kinds of wireless devices (e.g. UWB, GPS, FM).
1121 - [[!tails_gitweb config/chroot_local-includes/etc/init.d/tails-set-wireless-devices-state]]
1122 - [[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tails-set-wireless-devices-state]]
1124 ### 3.6.20 OpenSSH
1126 The OpenSSH client is configured to use the Tor SOCKS proxy, and to
1127 prefer strong ciphers and MACs..
1129 - [[!tails_gitweb config/chroot_local-includes/etc/ssh/ssh_config]]
1130 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/connect-socks]]
1132 ### 3.6.21 Incremental upgrades
1134 When a Tails release is out, Tails users are proposed to download and
1135 apply a partial upgrade (that is, only what has changed between two
1136 releases). See [[contribute/design/incremental_upgrades]] for details.
1137 To start with, this upgrade mechanism may be only available for
1138 point-releases.
1140 ### 3.6.22 Panel applets
1142 Tails ships a few custom applets in the GNOME panel.
1144 The shutdown helper applet provides two-clicks shutdown and
1145 restart actions.
1147 - [[!tails_gitweb config/chroot_local-includes/etc/skel/.config/gnome-panel/panel-default-layout.layout]]
1148 - [[!tails_gitweb config/chroot_local-includes/usr/local/lib/shutdown-helper-applet]]
1149 - [[!tails_gitweb config/chroot_local-includes/usr/share/dbus-1/services/org.gnome.panel.applet.ShutdownHelperFactory.service]]
1150 - [[!tails_gitweb config/chroot_local-includes/usr/share/gnome-panel/4.0/applets/org.boum.tails.ShutdownHelper.panel-applet]]
1152 The Tails OpenPGP applet allows to symmetrically and asymmetrically
1153 encrypt and decrypt text, and to verify OpenPGP signatures.
1155 - [[!tails_gitweb config/chroot_local-includes/usr/local/bin/gpgApplet]]
1157 ## 3.7 Running Tails in virtual machines
1159 ### 3.7.1 Current support
1161 Tails may of course be run in virtual machines. Due to the
1162 popularity of [VMWare](http://www.vmware.com/) we include
1163 [open-vm-tools](http://open-vm-tools.sourceforge.net/) (an open-source
1164 alternative to VMware tools) as well as special video drivers
1165 for an improved user experience in that environment. Due to the
1166 closed-source nature of VMWare we try to encourage users of open VMs,
1167 like [VirtualBox](http://virtualbox.org/) and
1168 [QEMU](http://www.qemu.org/), by making sure that
1169 these also work. In the case of VirtualBox both video and input
1170 drivers are included, as well as the guest utilities.
1172 ### 3.7.2 Security concerns
1174 Security concerns for all VMs are numerous. Tails therefore tries to
1175 detect whether it is run inside a VM and [[warns the
1176 user|design/virtualization_support]] if it is.
1178 ### 3.7.3 Running Tails inside a Windows session
1180 [[!tails_ticket 6083 desc="Potential work"]] may make it easier to
1181 run the DVD/USB in a virtual machine inside a Windows session whenever
1182 native boot is impossible or not desirable. This probably will be
1183 implemented by shipping a [QEMU](http://www.qemu.org/) or
1184 [VirtualBox](http://www.virtualbox.org/) binary for Microsoft Windows.
1186 ## 3.8 Build process and maintenance
1188 ### 3.8.1 Build tools
1190 The [Debian Live](http://live.debian.net/) is a toolkit to build Live
1191 systems based on Debian, such as Tails. Debian Live is designed to
1192 automate the build process of the target distribution, which eases
1193 Tails development and maintenance. As an added bonus, Debian Live
1194 makes it possible for other people to build custom systems based on
1195 Tails, e.g. to include additional software.
1197 For detailed instructions on how to build and modify Tails, see
1198 the [[contribute/build]] page and the [[contribute]] section on the wiki.
1200 ### 3.8.2 Testing process
1202 An automated build and test environment would be useful to avoid
1203 regressions in Tails, especially anonymity and security related
1204 ones. It would also make it easier to work on Tails for developers
1205 who do not own modern powerful hardware.
1207 Research and practical work to set up such an environment [[!tails_todo
1208 automated_builds_and_tests desc="has slowly started"]]. In the meantime, a [[manual
1209 test suite|contribute/release_process/test]] is "run" against Tails
1210 release candidates images before they are officially published.
1212 ### 3.8.3 Upgrades
1214 Keeping Tor (stable releases only, unless the Tor core developers
1215 recommend otherwise) and Iceweasel up-to-date is a priority.
1217 Remaining applications, including the base system, will be upgraded
1218 using Debian standard upgrade process, and generally based on the
1219 latest Debian stable release so there are not many problems.
1221 We intend to build and publish point releases (e.g.
1222 [[0.6.1|news/version_0.6.1]]) in a timely manner when security issues
1223 affect Tails. Such releases are based on the [[stable Git
1224 branch|contribute/git]] and can thus also fix important — although not
1225 security-related — bugs.
1227 ## 3.9 Hardware support
1229 Tails generally ships the latest Linux kernel from Debian unstable or [Debian
1230 Backports](http://backports.debian.org/) as a compromise between
1231 stability and recent hardware support. Recent Intel and AMD microcode
1232 are included as well.
1234 The x86 hardware architecture is the main supported one.
1236 A 64-bit Linux kernel (*amd64* flavour) and a 32-bit one (*486*
1237 flavor, for maximal backward-compatibility) are provided. The best
1238 supported one is used.
1240 * [[!tails_gitweb auto/config]]
1241 * [[!tails_gitweb config/binary_local-hooks/20-syslinux_detect_cpu]]
1243 ## 3.10 Caveats
1245 Tails currently offers almost no protection against live physical
1246 monitoring, except for hardware keyloggers.
1248 UDP and IPv6 are a problem. The Tor network does not support any of
1249 those yet. Outgoing UDP and IPv6 packets are dropped altogether by
1250 netfilter for this reason.
1252 Support of arbitrary DNS queries is only provided by ttdnsd listening
1253 on 127.0.0.2. ttdnsd has proved too be far too buggy to be inserted in
1254 the default DNS resolution chain.
1256 Some tools currently available to command-line users lack the
1257 integration into Tails and/or graphical user interface that would be
1258 needed to make them useful to anyone.
1260 Other caveats are listed on the [[support/known issues]] page.
1262 See the development [[!tails_roadmap]] for more information about
1263 where Tails is heading to.
1265 # 3.11 Fingerprint
1267 Tails tries to make it as difficult as possible to distinguish Tails
1268 users from other Tor users.
1270 Iceweasel is configured to match the fingerprint of the Tor Browser
1271 Bundle and the known differences, if any, are listed in the [[known
1272 issues|support/known_issues]] page.
1274 However the fact that different extensions are installed in Tails and in
1275 the TBB surely allows more sophisticated attacks that usual fingerprint
1276 as returned by tools such as <https://panopticlick.eff.org/> and
1277 <http://ip-check.info/>. For example, the fact that Adblock is removing
1278 ads could be analysed.
1280 From the point of view of the local network administrator, Tails is
1281 almost exclusively generating Tor activity and that is probably quite
1282 different from other TBB users. We believe this would be hard to avoid.
1283 Other possible fingerprint issues on the LAN or ISP exist but we believe
1284 they would be harder to detect. See the discussion on fingerprinting in
1285 the [[Time sync|contribute/design/Time_syncing]] design document and the
1286 [[fingerprint|doc/about/fingerprint]] documentation.
1288 # 4 Security analysis
1290 See [[the security audits of Tails|security/audits]].
1292 # 5 Bibliography
1294 - [Incognito 2008.1-r1
1295 Documentation](http://www.browseanonymouslyanywhere.com/incognito/uploadfiles/docs.html)
1296 - [Live CD Best
1297   Practices](https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/LiveCDBestPractices)
1298   document on the Tor wiki
1299 - Roger Dingledine, Nick Mathewson and Paul Syverson. [Tor: The
1300   Second-Generation Onion
1301   Router](https://svn.torproject.org/svn/projects/design-paper/tor-design.pdf)
1302 - Mike Perry, Erinn Clark, Steven Murdoch. [The Design and Implementation of the Tor Browser](https://www.torproject.org/projects/torbrowser/design/)