source: trunk/tls-centralization/index.html @ 241

Last change on this file since 241 was 241, checked in by dkg, 6 years ago

TLS article: added explicit "next step" changes

File size: 36.8 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
5<title>Technical Architecture shapes Social Structure</title>
6<link rel="stylesheet" href="style.css" type="text/css" />
7<link rel="shortcut icon" href="icon.png" type="image/png" >
8<link rel="icon" href="icon.png" type="image/png" >
9</head>
10
11<body>
12<h1>Technical Architecture shapes Social Structure:<br />an example from the real world</h1>
13
14When you use the Internet, most of your communications rely on many
15different computers co-operating with each other.  The computers
16co-operate with each other because they have agreed beforehand on a
17<term>protocol</term>.
18
19<p>The protocols we use for communication shape not just the
20communications themselves, but social and economic structures beyond
21them.  In the USA, we have seen how choices in infrastructure can
22shape social structure in the physical world. Our society builds
23highways, malls, and suburban developments while neglecting its rail
24lines, public spaces, and cities. In doing so, we <a
25href="http://www.planning.org/APAStore/Search/Default.aspx?p=3333">discourage
26civic interaction while facilitating pollution and dangerously
27sedentary lifestyles</a>. This article shows how choices in digital
28communications infrastructure can also have an effect on our social
29fabric by focusing on one small example out of many.
30
31<p>I'll discuss here a protocol in common use on the internet
32today: <term>Transport Layer Security</term> (<term>TLS</term>) and
33its precursor, the <term>Secure Sockets Layer</term>
34(<term>SSL</term>).  These are used (among other places) in secure
35World Wide Web connections.  <term>TLS</term>, as it is currently
36implemented, fosters the concentration of power and money among
37certain groups while hampering the public's ability to engage in
38trust-worthy, secure communications.
39
40<p>This is important because we still have an opportunity to choose
41the tools and protocols we use.  By choosing our protocols, we can
42help move toward a social order we prefer.  I'll present an existing
43modification to <term>TLS</term> which I think can move our online
44culture in a direction that is more democratically-engaged and less
45authoritarian.
46
47<p>TLS is only one small piece of the puzzle.  There are thousands of
48protocols and tools in use on the Internet today, with a variety of
49subtle societal effects.  We can choose the way we want to go, but we
50can choose well only if we understand the issues!
51
52<h2>Background and introduction</h2>
53
54This article has a relatively narrow technical focus, but it's one
55which most people reading probably encounter every week, when using
56the <term>World Wide Web</term> (<term>www</term>).
57
58<h3>What is HTTPS and why do we use it?</h3>
59
60Most of your everyday use of the <term>www</term> consists of <a
61href="http://www.ietf.org/rfc/rfc2616.txt"><term>HyperText Transfer
62Protocol</term></a> (<term>HTTP</term>) connections.  This is the
63<code>http://</code> you see at the beginning of many web addresses
64(known as <term>Uniform Resource Locator</term>s, or
65<term>URL</term>s).  An <term>HTTP</term> session consists of your web
66browser sending a request to the remote web server, which is just
67another computer connected to the internet.  Your request consists of
68several things, potentially including: <ul><li>the full
69<term>URL</term> of the page you are viewing,<li>identifying
70information about your web browser,<li>small pieces of data called
71<q>cookies</q>,<li>the contents of any form fields you might have
72filled in.</ul> The web server replies to your request with its own
73information, potentially including: <ul><li>information about the page
74you requested,<li>identifying information about the web server
75itself,<li>more <q>cookies</q>, <li>the contents of the page
76requested.</ul>
77
78These communications (in both directions) are all visible to any
79computer along the way between your computer and the web server.  If
80you included some information that you'd rather keep private (for
81example, if you typed your bank account number in a field of a web
82form), you might be upset that the intermediate machines can all
83snoop!  Even worse, if your password is included in this information,
84the snooper could then use that password to take actions that <em>only
85you</em> should be allowed to take, such as updating your
86organization's web page, transferring money, making travel
87reservations, etc.
88
89<p>So just using unencrypted, plain <term>HTTP</term> is dangerously
90insecure!  If you are anonymously reporting unethical activity of your
91employer, you do not want your employer (who controls the network you
92are using) to see what you are doing, or to alter the contents of your
93complaint as it is in transit.  If you are dealing with your bank, you
94don't want the other machines on the network to be able to get
95information about your accounts, much less to withdraw money from
96them.  We need some sort of way to keep our communications private and
97secure.
98
99<p>This is exactly why we use <term>HTTPS</term>, the <q>secure</q>
100version of <term>HTTP</term>.  This protocol can be identified by the
101fact that the <term>URL</term> in your browser's address bar begins
102with <code>https://</code>.  It is also often indicated by the little
103lock icon in your browser. <captionedimage><img src="lock.png"
104alt="image of lock in browser"/><br/><cap>The lock in my
105browser</cap></captionedimage> <a
106href="http://www.ietf.org/rfc/rfc2818.txt"><term>HTTPS</term></a> is
107the same protocol as <term>HTTP</term>, but wrapped inside a layer of
108strong encryption.  The encryption provides your communication with
109two things: privacy and integrity.  Privacy means that computers other
110than your own machine and the web server will see the communications
111as a stream of gobbledy-gook, but your web browser and the web server
112involved will be able to understand them.  Integrity means that both
113parties can be certain that the information they receive is actually
114the same information that was sent by the other party.
115
116<p>This is a good thing, but some questions are still unanswered.  If
117i'm using <term>HTTPS</term>, I can be reasonably sure that the only
118parties who can decipher the communication are:<ul><li>myself <li>the
119web server</ul> But who is the web server really?
120
121<h3>How do we know who we're talking to?</h3>
122
123Near the little <q>lock</q>, many modern browsers will show you the
124name of the site you are connecting to.  The first thing is to make
125sure that this is who you think it is.  If you are about to send
126confidential information to your local credit union via their web page
127(e.g. <code>lespeoples.org</code>), you should be sure that the name
128near the lock is the name of your credit union.  If the machine you
129are connecting to is something different
130(e.g. <code>bigbadbank.com</code>), then all the cryptography in the
131world won't help you keep your information private, because you are
132sending it to the wrong folks!
133
134<p> But if the name <em>does</em> match, there could still be
135problems: some nasty group could be intercepting your communications,
136and claiming to be the group you actually want to talk to.  This isn't
137veering into paranoia here: the global network is very flexible; it
138relies on wide-scale co-operation; and the malicious actors are often
139tireless and conscienceless machines, not individual humans.
140
141<p> So how does your browser know to show that lock, since anyone
142could claim to be anyone else?  <captionedimage><img src="tooltip.png"
143alt="image of lock in browser with tooltip showing certificate
144authority"/><br/><cap>browser lock showing
145tooltip</cap></captionedimage> Because during the initial claim of
146identity, the web server presents a certificate which is
147cryptographically signed by an <term>Certificate Authority</term>
148(<term>CA</term>) who your browser already knows about and trusts.  On
149some modern web browsers, if you hover your mouse over the
150<q>lock</q>, a tool tip will pop up showing which <term>CA</term>
151signed off on the certificate presented by the web server.  In the
152image here, you can see that the authority who signed this certificate
153is <q>Equifax</q>.
154
155<h3>Who do you trust?</h3>
156
157But wait a minute!  Who said that <q>Equifax</q> is an authority who
158can verify that folks are who they say they are?  As any good
159anarchist would ask, why should you trust this authority?  At the
160moment, you trust them implicitly because your web browser comes
161pre-configured to trust them.  Many modern browsers ship with 30 or
162more of these <term>CA</term>s trusted <em>automatically</em>.  If any
163one of these authorities is compromised or malicious, they could
164create fake certificates with whatever name they want, which means
165that, with only a few other small modifications, they could intercept
166(and tamper with) communications you intend to be private and
167untamperable.
168
169<p>Who are these authorities?  Why are they included by default in our
170web browsers?  Do they really do a good job in verifying identities
171before signing certificates?  Do they have your best interests in
172mind?  Do they share your political principles?  If they received an
173unethical request from a corrupt governmental power or financial
174sponsor, would they comply, or would they resist?
175
176<p>I don't have the answers to these questions about any particular
177<term>CA</term>.  But I think that the current technical
178infrastructure gives them incentives to behave in untrustworthy ways.
179We have very little reason to think that these <term>CA</term>s have
180the average web user (or server administrator) in mind when they
181decide policy, which makes our implicit trust in them all the more
182unjustified.
183
184<h2>Relevant Architecture Components</h2>
185
186What is it about the architecture of the Web that encourages this
187insecurity and lack of integrity?  This requires a basic understanding
188of the underlying protocols used to create secure web connections.
189The Internet is a collection of co-operating machines, all passing
190messages to each other in various forms.  Viewed from another angle,
191the Internet is also a collection of interacting protocols, which fit
192together in certain ways.
193
194<h3>TLS</h3>
195
196<p><term>HTTPS</term> is, at its root, <term>HTTP</term> (the common
197protocol by which web browsers talk to web servers) tunneled through
198<a href="http://www.ietf.org/rfc/rfc4346.txt"><term>Transport Layer
199Security</term></a>, or <term>TLS</term><term>TLS</term> itself
200grew out of the <term>Secure Sockets Layer</term>, or
201<term>SSL</term><term>TLS</term> and <term>SSL</term> are generic
202protocols which define methods for encrypting a potentially lengthy
203bidirectional communications session.  We call the side of the
204communications session that waits and listens for new connections the
205<term>server</term>, and the side that actively initiates connections
206the <term>client</term>.  In the case of <term>HTTPS</term>, your web
207browser acts as a <term>TLS</term> <term>client</term>.
208
209<p><term>TLS</term> (like many session-based protocols) begins with a
210<q>handshake</q>, which is used by the <term>client</term> and
211<term>server</term> to establish their shared assumptions.  You can
212think of this as two complete strangers on a phone call: they run
213through the languages they speak, in an attempt to find a common
214language in which they can communicate.
215
216<p>Assuming both <term>client</term> and <term>server</term> find that
217each other <q>speaks</q> some common form of <term>TLS</term>, the
218handshake continues with the <term>server</term> offering the client a
219<em>single</em> certificate asserting the <term>server</term>'s
220identity.
221
222<h3>X.509 v3 certificates</h3>
223
224
225<p>The certificate presented is a combination of a cryptographic
226<term>public key</term> with an identifying name of the <q>subject</q>
227(typically the name of the server), where the combination of these two
228things is signed by a <term>Certificate Authority</term>.  The
229signature is a statement by the <term>Certificate Authority</term>
230that the <term>public key</term> shown does in fact belong to the
231subject.
232
233<p>You can think of these three parts of the certificate as a state
234driver's license.  The certificate's <q>public key</q> is sort of like
235the driver's license ID number.  The certificate's <q>subject</q> is
236the driver's name, photo, and other identifying characteristics.  The
237certificate's <q>signature</q> is like the hologram on a state
238driver's license.  The <acronym title="Department of Motor
239Vehicles">DMV</acronym> plays the role of the <term>Certificate
240Authority</term>.  Only the DMV can make that hologram, and by
241applying it over the ID number and the statistics, the DMV is saying
242that this particular driver has this particular ID number.  The
243specific format of the certificate used in <term>TLS</term> is not a
244driver's license, of course.  It is specified by the
245<term>X.509</term> standard.
246
247<p><a
248href="http://www.ietf.org/rfc/rfc3280.txt"><term>X.509</term></a>
249covers a lot of different things, but for the purposes of this
250discussion, we're only interested in how it specifies the certificates
251used in <term>TLS</term>.  In particular, I want to focus on two
252things: how the web server is identified, and how the signature is
253attached to the identity/public key combination.
254
255<p>The server is identified by a long string of which only the bit
256after the last <code>CN=</code> is really inspected by your web
257browser.  Here's an example subject from a real-world certificate:
258
259<pre>/O=secure.mayfirst.org/OU=Domain Validated/OU=Go to https://www.thawte.com/repository/index.html/OU=Thawte SSL123 certificate/CN=secure.mayfirst.org</pre>
260
261<p>The identity of the signer (aka the <term>issuer</term>) is also
262present in the certificate, and a <em>single</em> signature is allowed
263within the certificate.
264
265<p>Your browser (or other <term>TLS</term>-capable client) takes the
266certificate, looks through its list of trusted <term>certificate
267authorities</term> for the signer.  If it doesn't see the signer in
268that list, it treats the certificate as invalid.  If the signer is
269present in the list of trusted <term>CA</term>s, your client uses
270information it already has about the signer to verify that the
271signature is in fact legitimate.
272
273<p>There's an extra step that can be thrown in here sometimes called
274<q>certificate chaining</q>, where the server presents not only its own
275certificate, but also the certificate of its <term>issuer</term>,
276where the assumption is that the <term>issuer</term>'s own certificate
277is signed by a <term>CA</term> that the client already trusts.
278
279<p>But however the trust is followed, we end with one conclusion: the
280client must already know of and trust the ultimate signer of the
281certificate, and there can only be one ultimate signer for any
282certificate.  If the client doesn't know of and trust that signer,
283they are merely guessing that the machine on the other end of the
284connection is the intended machine.
285
286
287<h2>Concentration of Power, Financial Incentives, and Trust</h2>
288
289<p>So again, the question is: who are these <term>Certificate
290Authorities</term>?  What is their background?  Who operates them?
291What are their political convictions?
292
293<h3>How does a typical certificate authority stay afloat?</h3>
294
295The biggest <term>Certificate Authority</term> today at the beginning
296of 2007 is <a href="http://verisign.com/">VeriSign</a>.  With their
297purchase of <a href="http://thawte.com/">Thawte</a> in 1999 and of of
298<a href="http://geotrust.com/">GeoTrust</a> in 2006, they are by far
299the largest issuer of certificates to the general public (over 70% in
300aggregate, according to <a
301href="http://news.netcraft.com/archives/2006/05/17/verisign_to_buy_geotrust_combining_top_ssl_providers.html">Netcraft</a>).
302
303<p>Verisign has a lot of other businesses, but it makes its
304<term>CA</term> money by selling certification to the entities
305requesting it.  That is, if you decide to set up a new web site on a
306server named <code>example.com</code>, and you want to provide secured
307web access via <code>https://example.com/</code>, you might begin by
308paying VeriSign for a certificate that identifies your server as
309<code>example.com</code>.  Why should VeriSign certify you with this
310name?  For one thing, because you're paying them to do so.  But their
311responsibility as a <term>CA</term> should include more rigorous
312checking.  And they do so &mdash; but just a little bit more &mdash;
313often relying on the <code>example.com</code> DNS and e-mail (both
314forgeable systems) to be configured properly and securely.
315
316<p>At any rate, the <em>site operator</em> is the one who foots the
317bill for the certificate, and the <term>CA</term> has little
318disincentive to turn down certification, since it would presumably
319mean they'd lose paying customers.  If the <term>CA</term> were to
320engage in massive, wide-scale illegitimate certification, there's a
321possibility that browser vendors would drop them as a trusted root
322<term>CA</term>, but it would probably take a really large scandal,
323and it would likely take months (at least) for browser vendors to
324actively drop trust for the <term>CA</term>.  This has never been
325done, as far as I know.
326
327<h3>Who can be a <term>Certificate Authority</term>?</h3>
328
329The kicker in all of this is that Verisign and the other commercial
330<term>Certificate Authorities</term> aren't using any expensive
331hardware or software to issue certificates.  Free tools like <a
332href="http://openssl.org/">OpenSSL</a> or <a
333href="http://www.gnu.org/software/gnutls/">GnuTLS</a> form the
334technical basis of most <term>CA</term>s, and there are free graphical
335frontends (like <a href="http://tinyca.sm-zone.net/">TinyCA</a>) which
336make running a <term>Certificate Authority</term> a relatively simple
337task.  These tools can be run on bottom-of-the-barrel hardware, and
338being a <term>CA</term> doesn't even require a heavy-duty connection
339to the Internet.
340
341<p>So if anyone can technically be a <term>CA</term>, how come people
342aren't doing it?  For one thing, doing legitimate verification of
343identities is actually significant work.  But the verification done by
344most <term>CA</term>s (including VeriSign) doesn't come close to this
345level of work, so that shouldn't be holding people back.  It turns out
346the architecture of <term>TLS</term> itself discourages diversity.
347
348<h3>Why does the architecture encourage concentration?</h3>
349
350Remember that a <term>TLS</term> (<term>HTTPS</term>) server can only
351offer a single certificate.  For hassle-free, secure connections, the
352signer of that certificate must already be trusted by the client (web
353browser).  As a site administrator, you need to decide who is going to
354sign your certificate.  Most browsers out there already <q>trust</q>
355the big corporate <term>CA</term>s.  If a new independent
356<term>CA</term> were to spring up, it won't be trusted by any of the
357browsers, which means connections using a certificate from the new
358<term>CA</term> would likely cause errors for your site's visitors.
359Since you can only choose one, you probably will go with the existing
360goliath, even if you feel no political affinity with them, and even if
361you resent paying money for their signature which could have been
362better used elsewhere.
363
364<p>As an individual who uses the web, your browser already
365<q>trusts</q> the big corporate CAs.  Most of the web sites you visit
366are probably run by admnistrators who have made the tradeoff above.
367Why should you ask your browser to trust a new <term>CA</term>, even
368if it's one you personally actually trust more?  It can be a hassle to
369maintain a list of trusted authorities, and it seems especially
370fruitless when the new authority you've added isn't actually used by
371any site that you visit.  So why bother?  And you're certainly not
372going to tell your browser to stop <q>trusting</q> the big corporate
373<term>CA</term>s, because nearly every site you visit has certificates
374issued by one of them.
375
376<p>What's worse, to make any change in the situation at all, there
377would need to be a massive break.  The day that a site offers a new
378certificate signed by a new authority, <em>every one of its
379visitors</em> will see that cert, and will get errors if they don't
380already trust the new authority.  The site administrator is pretty
381much guaranteed to cause problems for hir visitors by switching away
382from the mega-<term>CA</term>s.
383
384<p>This seems like a no-win situation, but there are ways out.
385
386<h2>Alternate Architectures</h2>
387
388The <term>TLS</term> architecture is the cause of this concentration
389of power, and changes to the architecture can permit or even encourage
390its dissolution.
391
392<h3>What could change the incentives?</h3>
393
394As usual, we need to follow the money.  One of the reasons the big
395<term>CA</term>s have little reason to provide real security via
396heavy-duty verification before certification is because they lack
397significant competition.  Making it easier to start and run a separate
398<term>Certificate Authority</term>, while actually encouraging its
399adoption would be a good thing.
400
401<p>If we were to modify the <term>TLS</term> protocol so that a server
402could offer multiple certificates at once, that would make it much
403easier to do a smooth transtion away from un-trustworthy big
404<term>CA</term>s, because sites and users would no longer need the
405massive, disruptive transition that switching certificates would
406entail.  One year, a web site could offer certificates from Verisign
407and a new, politically-active <term>CA</term>, while explaining to
408their users the reason for switching away, and then the next year, the
409site could drop the VeriSign certificate entirely.
410
411<p>An analogous change would be to enable multiple signatures on a
412single certificate.  Recall that a single <term>X.509</term>
413certificate contains a public key, a subject, and a signature binding
414the two together from a <term>CA</term>.  There's no reason (in
415principle) that we couldn't declare a certificate as a public key, a
416subject, and a <em>set of signatures</em>, each from a different
417<term>CA</term>.  It turns out that there is a proposal for this kind
418of alternate, multi-signature certificate (using the
419<term>OpenPGP</term> standard), which i'll talk about later.
420
421<p>But why should you trust a lot of small <term>CA</term>s more than
422a handful of big ones?  The answer is that you wouldn't (and
423shouldn't) trust all the small <term>CA</term>s.  You might trust a
424handful of smaller <term>CA</term>s, who you have a personal
425relationship with.  Or you could spread your trust out over a wider
426range, deciding that you don't give full trust to any single
427<term>CA</term>.  Instead, you could require certification by any 3 of
428the 20 <term>CA</term>s that you trust marginally.  Although CA might
429be compromised, but it would be a harder job to infiltrate 3 of them.
430
431<p>If <term>CA</term>s are able to really compete on trustworthiness
432(which they can't right now because of the architecture), you could
433simply dismiss the <term>CA</term>s who are known to do a terrible job
434of verification, or who you don't trust for other reasons.  For
435example why should you trust the <term>Certificate Authority</term>
436run by an oppressive government?
437
438<p>Once it becomes easier to phase in trust of new, alternative
439<term>Certificate Authorities</term>, we need to think about which
440ones technologically-aware activists would want to support.  I suggest
441that a full change in the funding model is needed.  Instead of being
442paid for by the site owner, a new-model <term>Certificate
443Authority</term> could operate independently, funded by its members
444who, by joining, help shape policy about what sort of verification
445should be required to grant a certificate.
446
447<p>With the ability to have multiple signatures, there's nothing
448stopping individuals from acting as their own <term>CA</term>s as
449well.  Do you run your own web site?  Certify it!  Does your
450organization have a web site?  You and your colleagues could each
451certify it.  This sort of decentralization is healthy, fosters
452community networks, and can cut out the big corporate middlemen.
453
454<h3>What else exists?</h3>
455
456<h4><term>EV</term> Certificates</h4> The big corporate middlemen don't
457want to be cut out, of course.  A plan is afoot from some of the
458larger <term>CA</term>s called <a
459href="http://www.cabforum.org/certificates.html"><term>Extended
460Validation</term> (<term>EV</term>) Certificates</a>.  From what I
461can tell, this is simply the big <term>CA</term>s offering to actually
462do a serious level of identity verification &mdash; what they should
463have been doing all along!  The bills for an <term>EV</term> cert,
464likely even heftier than usual, will probably continue to be paid by
465the sites requesting the certificates.
466
467<p>This does nothing to change the financial dynamics that make the
468system currently so untrustworthy.  But it does relegate sites who
469can't pay the new larger fees to a second-class level of
470<q>security</q>, and it minimizes the number of entities considered
471officially capable of being an <term>EV</term>-cert-granting
472<term>CA</term>, further consolidating the power of the few at the
473top.
474
475<h4>CACert.org</h4>
476
477Another interesting player is <a href="http://cacert.org">CACert</a>.
478This is a group that has set up to operate in the fashion of a typical
479certificate authority, but has set up <a
480href="http://wiki.cacert.org/wiki/FAQ/AssuranceIntroduction">a
481sophisticated, clear system</a> explaining what it will take for them
482to grant you certification, based strictly on a network of trust built
483among their membership.  This is a pretty good model, but it's a shame
484that they're the only one implementing anything like it.  There should
485be multiple organizations with comparable models to this, so that each
486user could make hir own decisions about who they actually trust.
487
488<p>Another downside to CACert is the fact that their certificates are
489<em>still issued only by one agency</em> &mdash; the CACert
490<term>CA</term>.  Even though they explicitly say they will only grant
491certificates according to their model, if their infrastructure is
492somehow compromised, it's possible for an attacker (or malicious
493employee) to issue certificates as CACert without following their
494published protocol.
495
496<h3>Don't throw out the baby with the bathwater</h3>
497
498All of this might seem more complicated than it needs to be; it's
499worth asking whether we need any of this at all.  I want to make it
500clear that <em>we do need secure communications</em>.  As activists,
501politically-outspoken workers, anti-authoritarians, or simply people
502who want to preserve our right to dissent, we need to be able to
503communicate to each other without eavesdropping or &mdash; worse
504&mdash; interference or impersonation.  As members of a capitalist
505society, we are also purchasers and vendors of goods and services, and
506monetary donors and recipients.  We need those transactions to be
507handled safely, so that we don't have our financial backing usurped.
508
509<p>More than just needing secure communications, we need secure
510communications without faceless, unaccountable, politically-fickle,
511mercenary gatekeepers.  We need to take control of our own
512communications by taking responsibility for them.
513
514<h2>Moving forward</h2>
515
516So where can we go from here on the specific problem of the stunted
517<term>TLS</term> architecture?
518
519<h3>An alternate architecture exists!</h3>
520
521I mentioned earlier that there is an alternate proposal &mdash; <a
522href="http://www.ietf.org/internet-drafts/draft-ietf-tls-openpgp-keys-11.txt"><term>OpenPGP</term>
523Certificates instead of <term>X.509</term> certificates</a> &mdash;
524which allows multiple signatures per certificate.  The proposal is
525designed to be implementable in parallel with existing
526<term>X.509</term> certificates.  However, it is not widely
527implemented or adopted yet.
528
529<p>Most programs which use <term>TLS</term> do not actually implement
530their TLS functionality directly.  Instead, they make use of software
531<term>libraries</term>, which are collections of code that can be used
532by many programs.
533
534<p>At least one TLS library exists which can use OpenPGP certificates:
535the free <a href="http://www.gnu.org/software/gnutls/">GnuTLS
536library</a> has supported <term>OpenPGP</term> certificates in
537addition to <term>X.509</term> certificates since at least the end of
5382003.  Tools (like web browsers) which use the GnuTLS library
539basically can get this extra feature without any extra work.
540
541<p>However, the <a href="http://openssl.org/">OpenSSL library</a> is
542by far the most widely-used free library, and it only includes support
543for <term>X.509</term> certificates.  Some developers <a
544href="http://www.mail-archive.com/openssl-dev@openssl.org/msg21728.html">are
545discussing adding OpenPGP support for OpenSSL</a>, but it's doubtful
546that anything will be ready in the near future.  Tools which
547use OpenSSL are going to take a while to migrate to this new
548architecture.
549
550<p>So what needs to happen?  Web browsers (and other TLS-enabled
551clients) need to start working with the new architecture.  Web servers
552(and other TLS-enabled servers) need to start working with it as well.
553
554<p>One of the reasons to focus on Free Software (as covered by Amanda
555Hickman elsewhere in this book) is that we have an opportunity to
556contribute changes that we want to see.  The big proprietary software
557makers may not share our agendas, or may actually be antagonistic.
558
559<h3>Web Browser Buy-in</h3>
560
561<a href="http://mozilla.com/firefox/">Mozilla Firefox</a> is probably
562the widest-distributed Free Browser today.  In my version of it on my
563<a href="http://debian.org/">debian</a> operating system, it actually
564already uses the GnuTLS library, but I haven't reviewed the sources to
565see how it gets used (it could be used for library features unrelated
566to certificate verification).  Furthermore, there is no clear way
567through the Firefox graphical interface to manage OpenPGP
568<term>CA</term>s, the way there is to manage <term>X.509</term>
569<term>CA</term>s.  So that needs work.  Firefox is also the basis for
570the proprietary Netscape browser, so any fix to Firefox could have an
571effect there.  Many other Free browsers also derive from Firefox, so a
572fix here would be a big win.
573
574<p><a href="http://www.konqueror.org/">Konqueror</a> is another
575leading Free browser with an effect on other tools (Macintosh's <a
576href="http://www.apple.com/safari/">Safari</a> is based on Konqueror).
577It seems to use an SSL wrapper library (<tt>kssl</tt>) to talk to
578other libraries, but it appears to use OpenSSL exclusively at the
579moment.  A fix to <tt>kssl</tt> to allow it to talk to GnuTLS would
580actually enable OpenPGP certificates for all the software in the <a
581href="http://kde.org/">KDE</a> suite.
582
583<p>Finally, a couple of text-mode browsers, <a
584href="http://elinks.or.cz/"><tt>elinks</tt></a> and the venerable <a
585href="http://lynx.browser.org/"><tt>lynx</tt></a> appear to use the
586GnuTLS library these days.
587
588<h3>Web Server Buy-in</h3>
589
590<a href="http://httpd.apache.org//"><tt>apache</tt></a> is the
591flagship Free web server.  While the standard way to make apache work
592with <term>TLS</term> is the OpenSSL libraries via <a
593href="http://www.modssl.org/"><tt>mod_ssl</tt></a>, a new module
594called <a
595href="http://www.outoforder.cc/projects/apache/mod_gnutls/"><tt>mod_gnutls</tt></a>
596aims to make <tt>apache</tt> work with GnuTLS.  However,
597<tt>mod_gnutls</tt> is still in its infancy, and is not clear if it is
598able to support OpenPGP keys or not.
599
600<p>Other web servers operate behind separate processes which handle
601all the <term>TLS</term> wrapping.  These servers should be more
602easily switched to a library which supports <term>OpenPGP</term>.  And
603<tt>gnutls-serv</tt> appears to offer itself as a rudimentary web
604server as well, if you needed a server to test browsers.
605
606<h3>Next Steps</h3>
607
608<p>What can you do, yourself?  Depending on how you use computers,
609there are different things you might want to do.  If some of them seem
610confusing or you aren't sure how to start them, ask for help!  There
611are web forums, mailing lists, and user groups filled with people who
612are interested in helping out.
613
614<dl>
615
616<dt>All users</dt><dd>If you are a typical computer user these days,
617using standard tools, you can't switch to this new architecture all by
618yourself yet.  But you can prepare yourself for a move to a more open,
619secure architecture in a number of ways: <ul><li>Adopt free software,
620which are the most likely tools to move to this new architecture
621first.  Start with your web browser: If you are not using Mozilla
622Firefox, Konqueror, or some other free browser as your primary web
623browser, try to make the switch.<li>Learn about encryption by setting
624yourself up with some tools.  You can actually run GPG (an
625implementation of the <term>OpenPGP</term> standard) freely on any
626modern operating system. There are <a
627href="http://enigmail.mozdev.org/">graphical front-ends</a> and <a
628href="http://www.gnupg.org/gph/en/manual.html">tutorials</a< available
629online which might help you get a feel for managing certificates,
630signatures, and alternate authorities.<p>When using your web browser
631with normal <term>HTTPS</term> connections, start checking who the
632issuer is, and thinking about the chains of trust explicitly.</dd>
633
634<dt>Webmaster</dt><dd>If you manage a website, and your site doesn't
635use <term>HTTPS</term>, consider offering it as an option so that your
636users can communicate with your site securely.  For technical reasons,
637this will usually mean that you need your web site to have its own IP
638address.  In the process of doing this, you'll also need to generate
639an <term>X.509</term> certificate, as discussed here.  You can either
640generate your own certificate (self-signed), get a commercial
641<term>Certificate Authority</term> to sign one for you, or you could
642ask for a cert from an alternate CA (such as CACert.org).  Ask your
643system administrator if your web server is one of the few which
644supports OpenPGP certificates.  If it does, generate and install one.
645If you're not sure how to do any of these steps, ask for help!</dd>
646
647<dt>System Administrator</dt><dd>If you maintain a web server which
648offers <term>HTTPS</term>, consider offering support for
649<term>OpenPGP</term> certificates.  If you administer an
650<code>apache</code> server, you might want to experiment with
651<code>mod_gnutls</code> where you would normally use
652<code>mod_ssl</code>.</dd>
653
654<dt>Programmer</dt><dd>If you can read or write code, consider digging
655into one of the software packages above.  If you see features that
656make sense but are not-yet ready for the public, test them and give
657feedback.  If you see features that are needed but lacking, write up a
658proposal and pass it by the primary maintainer of the software,
659offering to implement it yourself if you think you can.</dd>
660
661</dl>
662
663
664<h3>Who will be the new authorities?</h3>
665
666If we do shift to this new architecture, who will offer these
667new-style certificates?  Initially, I imagine that VeriSign and any
668other very big commercial <term>CA</term>s won't do it, because of the
669threat to their business model.  But smaller <term>CA</term>s might be
670convinced to offer this service as an add-on to their existing
671business.  And now groups like <a
672href="http://mayfirst.org/">MayFirst</a> can simply and easily sign on
673as additional certifying agencies.
674
675<p><a href="http://cacert.org/">CACert.org</a> already offers OpenPGP
676signatures, so it could probably be used immediately as an initial
677authority.
678
679<p>And most importantly, everyone who is aware and interested in these
680things can perform their own certifications, and publish them freely.
681
682<h2>Back to the larger issue</h2>
683
684This article goes into some technical detail on one particular corner
685of technical infrastructure that we use regularly, and looks at ways
686that architectural choices shape the social forces and structures
687attached to the infrastructure.  But this is just one small corner.
688Most technological protocols we adhere to have social ramifications
689which are worthy of consideration.  The <term>Domain Name
690System</term>, or <term>DNS</term> is another example: the US
691government at the moment wields a heavy influence over its direction
692because of some architectural choices, and the placement of a few key
693servers.  This has international ramifications, and has actually
694caused some political tension recently.
695
696<p>The technical decisions made in the early days of e-mail (as
697discussed in one of Jamie McClelland's articles in this book) continue
698to shape our lives and our communication choices today, and new
699extensions to the basic e-mail protocols will continue to have impacts
700on how we can talk to each other.
701
702<p>Technical choices about how we store the music and movies that we
703make and listen to, documents and other data, all have social
704ramifications and are worthy of inspection and political
705consideration.  And if the consideration reveals that there is
706technical work to be done to improve the social consequences, we need
707to take that work on, and support others who have similar social goals
708by adopting their work, even if it means occasional short-term
709inconvenience or cost.
710
711<p>If we make these social decisions in solidarity with each other,
712together we can build towards an egalitarian, democratic,
713non-hierarchical culture that spans the globe.  The alternative is a
714fragmented society, where we are connected only to each other by the
715mechanisms of financial and cultural control, subjected to the whims
716of a small, powerful elite.  So let's get to work!
717
718
719<hr>
720<address></address>
721<!-- hhmts start -->Last modified: Tue Feb 20 21:39:19 EST 2007 <!-- hhmts end -->
722</body> </html>
Note: See TracBrowser for help on using the repository browser.