More work on web pages.
[monkeysphere.git] / website / index.mdwn
1 The Monkeysphere project's goal is to extend the web of trust model
2 and other features of OpenPGP to other areas of the Internet to help
3 us securely identify each other while we work online.
4
5 Specifically, the Monkeysphere is a framework to leverage the OpenPGP
6 web of trust for OpenSSH authentication.  In other words, it allows
7 you to use your OpenPGP keys when using secure shell to both identify
8 yourself and the servers you administer or connect to.  OpenPGP keys
9 are tracked via GnuPG, and managed in the known\_hosts and
10 authorized\_keys files used by OpenSSH for connection authentication.
11
12 [[bugs]] | [[download]] | [[news]] | [[documentation|doc]] |
13 [[development|dev]]
14
15 ## Conceptual overview ##
16
17 Everyone who has used secure shell is familiar with the prompt given
18 the first time you log in to a new server, asking if you want to trust
19 the server's key by verifying the key fingerprint.  Unfortunately,
20 unless you have access to the server's key fingerprint through a
21 secure out-of-band channel, there is no way to verify that the
22 fingerprint you are presented with is in fact that of the server your
23 really trying to connect to.
24
25 Many users also take advantage of OpenSSH's ability to use RSA or DSA
26 keys for authenticating to a server (known as "PubkeyAuthentication"),
27 rather than relying on a password exchange.  But again, the public
28 part of the key needs to be transmitted to the server through a secure
29 out-of-band channel (usually via a separate password-based SSH
30 connection) in order for this type of authentication to work
31
32 [OpenSSH](http://openssh.com/) currently provides a functional way to
33 managing the RSA and DSA keys required for these interactions through
34 the known\_hosts and authorized\_keys files.  However, it lacks any
35 type of [Public Key Infrastructure
36 (PKI)](http://en.wikipedia.org/wiki/Public_Key_Infrastructure) that
37 can verify that the keys being used really are the one required or
38 expected.
39
40 The basic idea of the Monkeysphere is to create a framework that uses
41 [GnuPG](http://www.gnupg.org/)'s keyring manipulation capabilities and
42 public keyserver communication to manage the keys that OpenSSH uses
43 for connection authentication.  
44
45 The Monkeysphere therefore provides an effective PKI for OpenSSH,
46 including the possibility for key transitions, transitive
47 identifications, revocations, and expirations.  It also actively
48 invites broader participation in the
49 [OpenPGP](http://en.wikipedia.org/wiki/Openpgp) [web of
50 trust](http://en.wikipedia.org/wiki/Web_of_trust).
51
52 ## Technical details ##
53
54 Under the Monkeysphere, both parties to an OpenSSH connection (client
55 and server) explicitly designate who they trust to certify the
56 identity of the other party.  These trust designations are explicitly
57 indicated with traditional GPG keyring trust models.  Monkeysphere
58 then manages the keys in the known\_hosts and authorized\_keys files
59 directly, in such a way that is completely transparent to SSH.  No
60 modification is made to the SSH protocol on the wire (it continues to
61 use raw RSA public keys), and no modification is needed to the OpenSSH
62 software.
63
64 To emphasize: *no modifications to SSH are required to use the
65 Monkeysphere*.  OpenSSH can be used as is; completely unpatched and
66 "out of the box".
67
68 ## Philosophy ##
69
70 Humans (and
71 [monkeys](http://www.scottmccloud.com/comics/mi/mi-17/mi-17.html))
72 have the innate capacity to keep track of the identities of only a
73 finite number of people. After our social sphere exceeds several dozen
74 or several hundred (depending on the individual), our ability to
75 remember and distinguish people begins to break down. In other words,
76 at a certain point, we can't know for sure that the person we ran into
77 in the produce aisle really is the same person who we met at the party
78 last week.
79
80 For most of us, this limitation has not posed much of a problem in our
81 daily, off-line lives.  With the Internet, however, we have an ability
82 to interact with vastly larger numbers of people than we had
83 before. In addition, on the Internet we lose many of our tricks for
84 remembering and identifying people (physical characteristics, sound of
85 the voice, etc.).
86
87 Fortunately, with online communications we have easy access to tools
88 that can help us navigate these problems.
89 [OpenPGP](http://en.wikipedia.org/wiki/Openpgp) (a cryptographic
90 protocol commonly used for sending signed and encrypted email
91 messages) is one such tool. In its simplest form, it allows us to
92 sign our communication in such a way that the recipient can verify the
93 sender.
94
95 OpenPGP goes beyond this simple use to implement a feature known as
96 the [web of trust](http://en.wikipedia.org/wiki/Web_of_trust). The web
97 of trust allows people who have never met in person to communicate
98 with a reasonable degree of certainty that they are who they say they
99 are. It works like this: Person A trusts Person B. Person B verifies
100 Person C's identity.  Then, Person A can verify Person C's identity
101 because of their trust of Person B.
102
103 The Monkeyshpere's broader goals are to extend the use of OpenPGP from
104 email communications to other activities, such as:
105
106  * conclusively identifying the remote server in a remote login session
107  * granting access to servers to people we've never directly met
108
109 ## Links ##
110
111 * [OpenSSH](http://openssh.com/)
112 * [GnuPG](http://www.gnupg.org/)
113 * [Secure Shell Authentication Protocol RFC 4252](http://tools.ietf.org/html/rfc4252)
114 * [OpenPGP RFC 4880](http://tools.ietf.org/html/rfc4880)
115
116 ----
117
118 This wiki is powered by [ikiwiki](http://ikiwiki.info).