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