1 [[!meta title="Trusting Tails signing key"]]
3 We will present you three techniques from the easiest to the safest. Again,
4 none of them is a perfect and magic solution. Feel free to explore them
5 according to your possibilities and technical skills.
7 Note that since all Tails releases are signed with the same key, you will not
8 have to verify the key every time and the trust you might progressively build in
9 it will be built once and for all. Still, you will have to check the ISO image
10 every time you download a new one!
14 # Correlates several downloads of Tails signing key
16 A simple technique to increase the trust you can put in Tails signing key would
17 be to download it several times, from several locations, several computers,
18 possibly several countries, etc.
20 For example you could save them every time with a different name in the same
21 directory on a USB stick. Then run the following command from a terminal to
22 check whether all the keys are identical:
24 cd [your download directory]
25 diff -qs --from-file tails-signing*.key
27 This command would output something like this:
29 Files tails-signing-desktop.key and tails-signing-laptop.key are identical
30 Files tails-signing-desktop.key and tails-signing-library.key are identical
31 Files tails-signing-desktop.key and tails-signing-seattle.key are identical
33 You would then need to check that every line reports identical key files.
35 If at least a key differs from the rest, the command would output accordingly:
37 Files tails-signing-desktop.key and tails-signing-laptop.key are identical
38 Files tails-signing-desktop.key and tails-signing-library.key are identical
39 Files tails-signing-desktop.key and tails-signing-seattle.key differ
41 You could also use this technique to compare keys downloaded by your friends or
42 other people you trust.
44 # Using the OpenPGP Web of Trust
46 If you want to be extra cautious and really authenticate Tails signing key in a
47 stronger way than what standard HTTPS offers you, you will need to use the
50 One of the inherent problems of standard HTTPS is that the trust we usually put
51 on a website is defined by certificate authorities: a hierarchical and closed
52 set of companies and governmental institutions approved by web browser vendors.
53 This model of trust has long been criticized and proved several times to be
54 vulnerable to attacks [[as explained on our warning
55 page|about/warning#man-in-the-middle]].
57 We believe instead that users should be given the final say when trusting a
58 website, and that designation of trust should be done on the basis of human
61 The OpenPGP [[!wikipedia Web_of_Trust desc="Web of Trust"]] is a decentralized
62 trust model based on OpenPGP keys. Let's see that with an example.
64 *You're a friend of Alice and really trust her way of managing OpenPGP keys.
65 You're trusting Alice's key.*
67 *Furthermore, Alice met Bob, a Tails developer, in a conference, and signed
68 Bob's key. Alice is trusting Bob's key.*
70 *Bob is a Tails developer who directly owns the Tails signing key. Bob fully
71 trusts Tails signing key.*
73 This scenario creates a trust path from you to Tails signing key that could
74 allow you to trust it without having to depend on certificate authorities.
76 This trust model is not perfect either and requires both caution and intelligent
77 supervision by users. The technical details of creating, managing and trusting
78 OpenPGP keys is outside of the scope of this document.
80 We also acknowledge that not everybody might be able to create good trust path
81 to Tails signing key since it based on a network of direct human relationships
82 and the knowledge of quite complex tools such as OpenPGP.
84 # Check Tails signing key against the Debian keyring
86 Following the previous scenario, when Alice met Bob, a Tails developer, she
87 could have made a new signature on Tails signing key with her own key to certify this
88 trust relationship and make it public. Tails signing key would now come along
89 with a signature made by Alice.
91 Tails signing key is actually already signed by the keys of several official
92 developers of Debian, the operating system on which Tails is based. Debian makes
93 an extensive use of OpenPGP and you can download the keys of all Debian
94 developers by installing the <code>debian-keyring</code> package. You can then
95 verify the signatures those developers made with their own key on Tails signing
98 To download the Debian keyring you can do:
100 sudo apt-get install debian-keyring
102 To get a list of the signatures made by other people on Tails signing key you
105 gpg --keyid-format long --list-sigs 1202821CBE2CD9C1
107 You will get something like this:
109 pub 4096R/1202821CBE2CD9C1 2010-10-07 [expires: 2015-04-30]
110 uid Tails developers (signing key) <tails@boum.org>
111 sig 3 1202821CBE2CD9C1 2011-04-16 Tails developers (signing key) <tails@boum.org>
112 sig BACE15D2A57498FF 2011-04-16 [User ID not found]
113 sig CCD2ED94D21739E9 2011-06-12 [User ID not found]
114 uid T(A)ILS developers (signing key) <amnesia@boum.org>
115 sig 3 1202821CBE2CD9C1 2010-10-07 Tails developers (signing key) <tails@boum.org>
116 sig BACE15D2A57498FF 2010-10-07 [User ID not found]
117 sig 8CBF9A322861A790 2010-12-24 [User ID not found]
118 sig 7EF27D76B2177E1F 2010-12-27 [User ID not found]
119 sig CCD2ED94D21739E9 2010-12-29 [User ID not found]
120 sig AC0EC35285821C42 2011-03-22 [User ID not found]
121 sig C2DEE7F336042734 2010-10-24 [User ID not found]
123 The lines ending with '[User ID not found]' are signatures made by keys you
124 still don't have in your keyring. You could try to search for them in the Debian
125 keyring by their key ID: the 16 digit code between the 'sig' tag and the date.
126 You could for example do:
128 gpg --keyring=/usr/share/keyrings/debian-keyring.gpg --list-key CCD2ED94D21739E9
130 If this signature corresponds to a key in the Debian keyring you will get
133 pub 4096R/CCD2ED94D21739E9 2007-06-02 [expires: 2015-02-26]
134 uid Daniel Kahn Gillmor <dkg@fifthhorseman.net>
135 uid Daniel Kahn Gillmor <dkg@openflows.com>
136 uid [jpeg image of size 3515]
137 uid Daniel Kahn Gillmor <dkg@debian.org>
138 uid Daniel Kahn Gillmor <dkg@aclu.org>
139 sub 4096R/0xC61BD3EC21484CFF 2007-06-02 [expires: 2015-02-26]
140 sub 2048R/0x125868EA4BFA08E4 2008-06-19 [expires: 2015-02-26]
141 sub 4096R/0xA52401B11BFDFA5C 2013-03-12 [expires: 2015-03-12]
142 sub 2432R/0xDC104C4E0CA757FB 2013-09-11 [expires: 2014-09-11]
144 You can then import it in your own keyring by doing:
146 gpg --keyring=/usr/share/keyrings/debian-keyring.gpg --export CCD2ED94D21739E9 | gpg --import
148 Now you can try to verify the signature made by this new key on Tails signing
151 gpg --keyid-format long --check-sigs 1202821CBE2CD9C1
153 On the output, the status of the verification is indicated by a flag directly
154 following the "sig" tag. A "!" indicates that the signature has been
155 successfully verified, a "-" denotes a bad signature and a "%" is used if an
156 error occurred while checking the signature (e.g. a non supported algorithm).
157 For example, in the following output the signature of Daniel Kahn Gillmor on
158 Tails signing key has been successfully verified:
160 pub 4096R/1202821CBE2CD9C1 2010-10-07 [expires: 2015-04-30]
161 uid Tails developers (signing key) <tails@boum.org>
162 sig!3 1202821CBE2CD9C1 2011-04-16 Tails developers (signing key) <tails@boum.org>
163 sig! CCD2ED94D21739E9 2013-05-05 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
165 3 signatures not checked due to missing keys
167 # Get into the Web of Trust!
169 Since the Web of Trust is actually based on human relationships and real-life
170 interactions the best would be to start establishing contacts with people
171 knowledgeable about OpenPGP, start using it yourself and build trust
172 relationships in order to find your own trust path to Tails signing key.
174 You could start by contacting a local [[!wikipedia Linux_User_Group desc="%s"]]
175 or other Tails enthusiasts near you and exchange about their OpenPGP
178 # Further reading on OpenPGP
180 - [[!wikipedia GnuPG desc="Wikipedia: %s"]], a free OpenPGP software
181 - [[Apache: How To OpenPGP|http://www.apache.org/dev/openpgp.html]]
182 - [[Debian: Keysigning|http://www.debian.org/events/keysigning]], a
183 tutorial on signing keys of other people
184 - [[rubin.ch: Explanation of the web of trust of PGP|http://www.rubin.ch/pgp/weboftrust.en.html]]
185 - [[Gpg4win: Certificate
186 inspection|http://www.gpg4win.org/doc/en/gpg4win-compendium_16.html]],
187 instructions to manage key trust with Gpg4win
188 - <!-- l10n placeholder for language-specific link -->