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

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

TLS article: touching up some changes.

File size: 33.7 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.  You can think of these three parts as a state driver's
232license.  The certificate's <q>key</q> is sort of like the driver's
233license ID number.  The certificate's <q>subject</q> is the driver's
234name, photo, and other identifying characteristics.  The certificate's
235<q>signature</q> is like the hologram on a state driver's license.
236Only the <acronym title="Department of Motor Vehicles">DMV</acronym>
237can make that hologram, and by applying it over the ID number and the
238statistics, the DMV is saying that this particular driver has this
239particular ID number.  The specific format of the certificate used in
240<term>TLS</term> is not a driver's license, of course.  It is
241specified by the <term>X.509</term> standard.
242
243<p><a href="http://www.ietf.org/rfc/rfc3280.txt"><term>X.509</term></a>
244covers a lot of different things, but for the purposes of this
245discussion, we're only interested in how it specifies the certificates
246used in <term>TLS</term>.  In particular, I want to focus on two
247things: how the server is identified, and how the signature is
248attached to the identity/public key combination.
249
250<p>The server is identified by a long string of which only the bit
251after the last <code>CN=</code> is really inspected by your web
252browser.  Here's an example subject from a real-world certificate:
253
254<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>
255
256<p>The identity of the signer (aka the <term>issuer</term>) is also
257present in the certificate, and a <em>single</em> signature is allowed
258within the certificate.
259
260<p>Your browser (or other <term>TLS</term>-capable client) takes the
261certificate, looks through its list of trusted <term>certificate
262authorities</term> for the signer.  If it doesn't see the signer in
263that list, it treats the certificate as invalid.  If the signer is
264present in the list of trusted <term>CA</term>s, your client uses
265information it already has about the signer to verify that the
266signature is in fact legitimate.
267
268<p>There's an extra step that can be thrown in here sometimes called
269<q>certificate chaining</q>, where the server presents not only its own
270certificate, but also the certificate of its <term>issuer</term>,
271where the assumption is that the <term>issuer</term>'s own certificate
272is signed by a <term>CA</term> that the client already trusts.
273
274<p>But however the trust is followed, we end with one conclusion: the
275client must already know of and trust the ultimate signer of the
276certificate, and there can only be one ultimate signer for any
277certificate.  If the client doesn't know of and trust that signer,
278they are merely guessing that the machine on the other end of the
279connection is the intended machine.
280
281
282<h2>Concentration of Power, Financial Incentives, and Trust</h2>
283
284<p>So again, the question is: who are these <term>Certificate
285Authorities</term>?  What is their background?  Who operates them?
286What are their political convictions?
287
288<h3>How does a typical certificate authority stay afloat?</h3>
289
290The biggest <term>Certificate Authority</term> today at the beginning
291of 2007 is <a href="http://verisign.com/">VeriSign</a>.  With their
292purchase of <a href="http://thawte.com/">Thawte</a> in 1999 and of of
293<a href="http://geotrust.com/">GeoTrust</a> in 2006, they are by far
294the largest issuer of certificates to the general public (over 70% in
295aggregate, according to <a
296href="http://news.netcraft.com/archives/2006/05/17/verisign_to_buy_geotrust_combining_top_ssl_providers.html">Netcraft</a>).
297
298<p>Verisign has a lot of other businesses, but it makes its
299<term>CA</term> money by selling certification to the entities
300requesting it.  That is, if you decide to set up a new web site on a
301server named <code>example.com</code>, and you want to provide secured
302web access via <code>https://example.com/</code>, you might begin by
303paying VeriSign for a certificate that identifies your server as
304<code>example.com</code>.  Why should VeriSign certify you with this
305name?  For one thing, because you're paying them to do so.  But their
306responsibility as a <term>CA</term> should include more rigorous
307checking.  And they do so &mdash; but just a little bit more &mdash;
308often relying on the <code>example.com</code> DNS and e-mail (both
309forgeable systems) to be configured properly and securely.
310
311<p>At any rate, the <em>site operator</em> is the one who foots the
312bill for the certificate, and the <term>CA</term> has little
313disincentive to turn down certification, since it would presumably
314mean they'd lose paying customers.  If the <term>CA</term> were to
315engage in massive, wide-scale illegitimate certification, there's a
316possibility that browser vendors would drop them as a trusted root
317<term>CA</term>, but it would probably take a really large scandal,
318and it would likely take months (at least) for browser vendors to
319actively drop trust for the <term>CA</term>.  This has never been
320done, as far as I know.
321
322<h3>Who can be a <term>Certificate Authority</term>?</h3>
323
324The kicker in all of this is that Verisign and the other commercial
325<term>Certificate Authorities</term> aren't using any expensive
326hardware or software to issue certificates.  Free tools like <a
327href="http://openssl.org/">OpenSSL</a> or <a
328href="http://www.gnu.org/software/gnutls/">GnuTLS</a> form the
329technical basis of most <term>CA</term>s, and there are free graphical
330frontends (like <a href="http://tinyca.sm-zone.net/">TinyCA</a>) which
331make running a <term>Certificate Authority</term> a relatively simple
332task.  These tools can be run on bottom-of-the-barrel hardware, and
333being a <term>CA</term> doesn't even require a heavy-duty connection
334to the Internet.
335
336<p>So if anyone can technically be a <term>CA</term>, how come people
337aren't doing it?  For one thing, doing legitimate verification of
338identities is actually significant work.  But the verification done by
339most <term>CA</term>s (including VeriSign) doesn't come close to this
340level of work, so that shouldn't be holding people back.  It turns out
341the architecture of <term>TLS</term> itself discourages diversity.
342
343<h3>Why does the architecture encourage concentration?</h3>
344
345Remember that a <term>TLS</term> (<term>HTTPS</term>) server can only
346offer a single certificate.  For hassle-free, secure connections, the
347signer of that certificate must already be trusted by the client (web
348browser).  As a site administrator, you need to decide who is going to
349sign your certificate.  Most browsers out there already <q>trust</q>
350the big corporate <term>CA</term>s.  If a new independent
351<term>CA</term> were to spring up, it won't be trusted by any of the
352browsers, which means connections using a certificate from the new
353<term>CA</term> would likely cause errors for your site's visitors.
354Since you can only choose one, you probably will go with the existing
355goliath, even if you feel no political affinity with them, and even if
356you resent paying money for their signature which could have been
357better used elsewhere.
358
359<p>As an individual who uses the web, your browser already
360<q>trusts</q> the big corporate CAs.  Most of the web sites you visit
361are probably run by admnistrators who have made the tradeoff above.
362Why should you ask your browser to trust a new <term>CA</term>, even
363if it's one you personally actually trust more?  It can be a hassle to
364maintain a list of trusted authorities, and it seems especially
365fruitless when the new authority you've added isn't actually used by
366any site that you visit.  So why bother?  And you're certainly not
367going to tell your browser to stop <q>trusting</q> the big corporate
368<term>CA</term>s, because nearly every site you visit has certificates
369issued by one of them.
370
371<p>What's worse, to make any change in the situation at all, there
372would need to be a massive break.  The day that a site offers a new
373certificate signed by a new authority, <em>every one of its
374visitors</em> will see that cert, and will get errors if they don't
375already trust the new authority.  The site administrator is pretty
376much guaranteed to cause problems for hir visitors by switching away
377from the mega-<term>CA</term>s.
378
379<p>This seems like a no-win situation, but there are ways out.
380
381<h2>Alternate Architectures</h2>
382
383The <term>TLS</term> architecture is the cause of this concentration
384of power, and changes to the architecture can permit or even encourage
385its dissolution.
386
387<h3>What could change the incentives?</h3>
388
389As usual, we need to follow the money.  One of the reasons the big
390<term>CA</term>s have little reason to provide real security via
391heavy-duty verification before certification is because they lack
392significant competition.  Making it easier to start and run a separate
393<term>Certificate Authority</term>, while actually encouraging its
394adoption would be a good thing.
395
396<p>If we were to modify the <term>TLS</term> protocol so that a server
397could offer multiple certificates at once, that would make it much
398easier to do a smooth transtion away from un-trustworthy big
399<term>CA</term>s, because sites and users would no longer need the
400massive, disruptive transition that switching certificates would
401entail.  One year, a web site could offer certificates from Verisign
402and a new, politically-active <term>CA</term>, while explaining to
403their users the reason for switching away, and then the next year, the
404site could drop the VeriSign certificate entirely.
405
406<p>An analogous change would be to enable multiple signatures on a
407single certificate.  Recall that a single <term>X.509</term>
408certificate contains a public key, a subject, and a signature binding
409the two together from a <term>CA</term>.  There's no reason (in
410principle) that we couldn't declare a certificate as a public key, a
411subject, and a <em>set of signatures</em>, each from a different
412<term>CA</term>.  It turns out that there is a proposal for this kind
413of alternate, multi-signature certificate (using the
414<term>OpenPGP</term> standard), which i'll talk about later.
415
416<p>But why should you trust a lot of small <term>CA</term>s more than
417a handful of big ones?  The answer is that you wouldn't (and
418shouldn't) trust all the small <term>CA</term>s.  You might trust a
419handful of smaller <term>CA</term>s, who you have a personal
420relationship with.  Or you could spread your trust out over a wider
421range, deciding that you don't give full trust to any single
422<term>CA</term>.  Instead, you could require certification by any 3 of
423the 20 <term>CA</term>s that you trust marginally.  Although CA might
424be compromised, but it would be a harder job to infiltrate 3 of them.
425
426<p>If <term>CA</term>s are able to really compete on trustworthiness
427(which they can't right now because of the architecture), you could
428simply dismiss the <term>CA</term>s who are known to do a terrible job
429of verification, or who you don't trust for other reasons.  For
430example why should you trust the <term>Certificate Authority</term>
431run by an oppressive government?
432
433<p>Once it becomes easier to phase in trust of new, alternative
434<term>Certificate Authorities</term>, we need to think about which
435ones technologically-aware activists would want to support.  I suggest
436that a full change in the funding model is needed.  Instead of being
437paid for by the site owner, a new-model <term>Certificate
438Authority</term> could operate independently, funded by its members
439who, by joining, help shape policy about what sort of verification
440should be required to grant a certificate.
441
442<p>With the ability to have multiple signatures, there's nothing
443stopping individuals from acting as their own <term>CA</term>s as
444well.  Do you run your own web site?  Certify it!  Does your
445organization have a web site?  You and your colleagues could each
446certify it.  This sort of decentralization is healthy, fosters
447community networks, and can cut out the big corporate middlemen.
448
449<h3>What else exists?</h3>
450
451<h4><term>EV</term> Certificates</h4> The big corporate middlemen don't
452want to be cut out, of course.  A plan is afoot from some of the
453larger <term>CA</term>s called <a
454href="http://www.cabforum.org/certificates.html"><term>Extended
455Validation</term> (<term>EV</term>) Certificates</a>.  From what I
456can tell, this is simply the big <term>CA</term>s offering to actually
457do a serious level of identity verification &mdash; what they should
458have been doing all along!  The bills for an <term>EV</term> cert,
459likely even heftier than usual, will probably continue to be paid by
460the sites requesting the certificates.
461
462<p>This does nothing to change the financial dynamics that make the
463system currently so untrustworthy.  But it does relegate sites who
464can't pay the new larger fees to a second-class level of
465<q>security</q>, and it minimizes the number of entities considered
466officially capable of being an <term>EV</term>-cert-granting
467<term>CA</term>, further consolidating the power of the few at the
468top.
469
470<h4>CACert.org</h4>
471
472Another interesting player is <a href="http://cacert.org">CACert</a>.
473This is a group that has set up to operate in the fashion of a typical
474certificate authority, but has set up <a
475href="http://wiki.cacert.org/wiki/FAQ/AssuranceIntroduction">a
476sophisticated, clear system</a> explaining what it will take for them
477to grant you certification, based strictly on a network of trust built
478among their membership.  This is a pretty good model, but it's a shame
479that they're the only one implementing anything like it.  There should
480be multiple organizations with comparable models to this, so that each
481user could make hir own decisions about who they actually trust.
482
483<p>Another downside to CACert is the fact that their certificates are
484<em>still issued only by one agency</em> &mdash; the CACert
485<term>CA</term>.  Even though they explicitly say they will only grant
486certificates according to their model, if their infrastructure is
487somehow compromised, it's possible for an attacker (or malicious
488employee) to issue certificates as CACert without following their
489published protocol.
490
491<h3>Don't throw out the baby with the bathwater</h3>
492
493All of this might seem more complicated than it needs to be; it's
494worth asking whether we need any of this at all.  I want to make it
495clear that <em>we do need secure communications</em>.  As activists,
496politically-outspoken workers, anti-authoritarians, or simply people
497who want to preserve our right to dissent, we need to be able to
498communicate to each other without eavesdropping or &mdash; worse
499&mdash; interference or impersonation.  As members of a capitalist
500society, we are also purchasers and vendors of goods and services, and
501monetary donors and recipients.  We need those transactions to be
502handled safely, so that we don't have our financial backing usurped.
503
504<p>More than just needing secure communications, we need secure
505communications without faceless, unaccountable, politically-fickle,
506mercenary gatekeepers.  We need to take control of our own
507communications by taking responsibility for them.
508
509<h2>Moving forward</h2>
510
511So where can we go from here on the specific problem of the stunted
512<term>TLS</term> architecture?
513
514<h3>An alternate architecture exists!</h3>
515
516I mentioned earlier that there is an alternate proposal &mdash; <a
517href="http://www.ietf.org/internet-drafts/draft-ietf-tls-openpgp-keys-11.txt"><term>OpenPGP</term>
518Certificates instead of <term>X.509</term> certificates</a> &mdash;
519which allows multiple signatures per certificate.  The proposal is
520designed to be implementable in parallel with existing
521<term>X.509</term> certificates.  However, it is not widely
522implemented or adopted yet.
523
524<p>Most programs which use <term>TLS</term> do not actually implement
525their TLS functionality directly.  Instead, they make use of software
526<term>libraries</term>, which are collections of code that can be used
527by many programs.
528
529<p>At least one TLS library exists which can use OpenPGP certificates:
530the free <a href="http://www.gnu.org/software/gnutls/">GnuTLS
531library</a> has supported <term>OpenPGP</term> certificates in
532addition to <term>X.509</term> certificates since at least the end of
5332003.  Tools (like web browsers) which use the GnuTLS library
534basically can get this extra feature without any extra work.
535
536<p>However, the <a href="http://openssl.org/">OpenSSL library</a> is
537by far the most widely-used free library, and it only includes support
538for <term>X.509</term> certificates.  Some developers <a
539href="http://www.mail-archive.com/openssl-dev@openssl.org/msg21728.html">are
540discussing adding OpenPGP support for OpenSSL</a>, but it's doubtful
541that anything will be ready in the near future.  Tools which
542use OpenSSL are going to take a while to migrate to this new
543architecture.
544
545<p>So what needs to happen?  Web browsers (and other TLS-enabled
546clients) need to start working with the new architecture.  Web servers
547(and other TLS-enabled servers) need to start working with it as well.
548
549<p>One of the reasons to focus on Free Software (as covered by Amanda
550Hickman elsewhere in this book) is that we have an opportunity to
551contribute changes that we want to see.  The big proprietary software
552makers may not share our agendas, or may actually be antagonistic.
553
554<h3>Web Browser Buy-in</h3>
555
556<a href="http://mozilla.com/firefox/">Mozilla Firefox</a> is probably
557the widest-distributed Free Browser today.  In my version of it on my
558<a href="http://debian.org/">debian</a> operating system, it actually
559already uses the GnuTLS library, but I haven't reviewed the sources to
560see how it gets used (it could be used for library features unrelated
561to certificate verification).  Furthermore, there is no clear way
562through the Firefox graphical interface to manage OpenPGP
563<term>CA</term>s, the way there is to manage <term>X.509</term>
564<term>CA</term>s.  So that needs work.  Firefox is also the basis for
565the proprietary Netscape browser, so any fix to Firefox could have an
566effect there.  Many other Free browsers also derive from Firefox, so a
567fix here would be a big win.
568
569<p><a href="http://www.konqueror.org/">Konqueror</a> is another
570leading Free browser with an effect on other tools (Macintosh's <a
571href="http://www.apple.com/safari/">Safari</a> is based on Konqueror).
572It seems to use an SSL wrapper library (<tt>kssl</tt>) to talk to
573other libraries, but it appears to use OpenSSL exclusively at the
574moment.  A fix to <tt>kssl</tt> to allow it to talk to GnuTLS would
575actually enable OpenPGP certificates for all the software in the <a
576href="http://kde.org/">KDE</a> suite.
577
578<p>Finally, a couple of text-mode browsers, <a
579href="http://elinks.or.cz/"><tt>elinks</tt></a> and the venerable <a
580href="http://lynx.browser.org/"><tt>lynx</tt></a> appear to use the
581GnuTLS library these days.
582
583<h3>Web Server Buy-in</h3>
584
585<a href="http://httpd.apache.org//"><tt>apache</tt></a> is the
586flagship Free web server.  While the standard way to make apache work
587with <term>TLS</term> is the OpenSSL libraries via <a
588href="http://www.modssl.org/"><tt>mod_ssl</tt></a>, a new module
589called <a
590href="http://www.outoforder.cc/projects/apache/mod_gnutls/"><tt>mod_gnutls</tt></a>
591aims to make <tt>apache</tt> work with GnuTLS.  However,
592<tt>mod_gnutls</tt> is still in its infancy, and is not clear if it is
593able to support OpenPGP keys or not.
594
595<p>Other web servers operate behind separate processes which handle
596all the <term>TLS</term> wrapping.  These servers should be more
597easily switched to a library which supports <term>OpenPGP</term>.  And
598<tt>gnutls-serv</tt> appears to offer itself as a rudimentary web
599server as well, if you needed a server to test browsers.
600
601<h3>Who will be the new authorities?</h3>
602
603If we do shift to this new architecture, who will offer these
604new-style certificates?  Initially, I imagine that VeriSign and any
605other very big commercial <term>CA</term>s won't do it, because of the
606threat to their business model.  But smaller <term>CA</term>s might be
607convinced to offer this service as an add-on to their existing
608business.  And now groups like <a
609href="http://mayfirst.org/">MayFirst</a> can simply and easily sign on
610as additional certifying agencies.
611
612<p><a href="http://cacert.org/">CACert.org</a> already offers OpenPGP
613signatures, so it could probably be used immediately as an initial
614authority.
615
616<p>And of course, everyone who is aware and interested in these things
617can perform their own certifications, and publish them freely.
618
619<h2>Back to the larger issue</h2>
620
621This article goes into some technical detail on one particular corner
622of technical infrastructure that we use regularly, and looks at ways
623that architectural choices shape the social forces and structures
624attached to the infrastructure.  But this is just one small corner.
625Most technological protocols we adhere to have social ramifications
626which are worthy of consideration.  The <term>Domain Name
627System</term>, or <term>DNS</term> is another example: the US
628government at the moment wields a heavy influence over its direction
629because of some architectural choices, and the placement of a few key
630servers.  This has international ramifications, and has actually
631caused some political tension recently.
632
633<p>The technical decisions made in the early days of e-mail (as
634discussed in one of Jamie McClelland's articles in this book) continue
635to shape our lives and our communication choices today, and new
636extensions to the basic e-mail protocols will continue to have impacts
637on how we can talk to each other.
638
639<p>Technical choices about how we store the music and movies that we
640make and listen to, documents and other data, all have social
641ramifications and are worthy of inspection and political
642consideration.  And if the consideration reveals that there is
643technical work to be done to improve the social consequences, we need
644to take that work on, and support others who have similar social goals
645by adopting their work, even if it means occasional short-term
646inconvenience or cost.
647
648<p>If we make these social decisions in solidarity with each other,
649together we can build towards an egalitarian, democratic,
650non-hierarchical culture that spans the globe.  The alternative is a
651fragmented society, where we are connected only to each other by the
652mechanisms of financial and cultural control, subjected to the whims
653of a small, powerful elite.  So let's get to work!
654
655
656<hr>
657<address></address>
658<!-- hhmts start -->Last modified: Tue Feb 20 10:13:41 EST 2007 <!-- hhmts end -->
659</body> </html>
Note: See TracBrowser for help on using the repository browser.