no need for recursive removal of a single file
[monkeysphere.git] / website / similar.mdwn
1 [[meta title="Similar Projects"]]
2
3 The monkeysphere isn't the only project intending to implement a PKI
4 for OpenSSH.  We provide links to these other projects because they're
5 interesting, though we have concerns with their approaches.
6
7 [[toc ]]
8
9 All of the other projects we've found so far require a patched version
10 of OpenSSH, which makes adoption more difficult.  Most people don't
11 build their own software, and simply overlaying a patched binary is
12 associated with significant maintenance (and therefore security)
13 problems.  
14
15 While ultimately contributing a patch to
16 [OpenSSH](http://openssh.com/) (or 
17 [any](http://mina.apache.org/sshd/)
18 [free](http://www.chiark.greenend.org.uk/~sgtatham/putty/)
19 [SSH](http://www.lysator.liu.se/~nisse/lsh/)
20 [implementation](http://matt.ucc.asn.au/dropbear/dropbear.html)) is
21 not a bad thing, we hope to be able to better establish the use of a
22 PKI without resorting to source modification.
23
24 ## openssh-gpg ##
25
26 [openssh-gpg](http://www.red-bean.com/~nemo/openssh-gpg/) is a patch
27 against OpenSSH to support OpenPGP certificates.  According to its
28 documentation, it is intended to support [`pgp-sign-rsa` and
29 `pgp-sign-dss` public key algorithms for hosts, as specified by the
30 IETF](http://tools.ietf.org/html/rfc4253#section-6.6).
31
32 Some concerns with `openssh-gpg`:
33
34  * This patch is old; it doesn't appear to have been maintained beyond
35    OpenSSH 3.6p1.  As of this writing, OpenSSH 5.1p1 is current.
36
37  * It only provides infrastructure in one direction: the user
38    authenticating the host by name.  There doesn't seem to be a
39    mechanism for dealing with identifying users by name, or allowing
40    users to globally revoke or update keys.
41
42  * The choice of User ID (`anything goes here (and here!)
43    <ssh@foo.example.net>`) for host keys overlaps with the current use
44    of the User ID space.  While it's unlikely that someone actually
45    uses this e-mail address in the web of trust, it would be a nasty
46    collision, as the holder of that key could impersonate the server
47    in question.  The monkeysphere uses [User IDs of the form
48    `ssh://foo.example.net`](http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/)
49    to avoid collisions with existing use.
50
51  * It's not clear that `openssh-gpg` acknowledges or respects the
52    [usage flags](http://tools.ietf.org/html/rfc4880#section-5.2.3.21)
53    on the host keys.  This means that it could accept a "sign-only"
54    key as suitable for authenticating a host, despite the
55    clearly-marked intentions of the key-holder.
56
57 ## Perspectives OpenSSH client ##
58
59 [The Perspectives project](http://www.cs.cmu.edu/~perspectives/) at
60 CMU has released an [openssh client that uses network
61 notaries](http://www.cs.cmu.edu/~perspectives/openssh.html) to bolster
62 your confidence in newly-seen keys.  This offers a defense against a
63 narrow MITM attack (e.g. by someone who controls your local gateway)
64 by simply verifying that other machines from around the network see
65 the same keys for the remote host that you're seeing.
66
67 This tactic is quite useful, but doesn't take the system as far as it
68 could go, and doesn't tie into any existing web of trust.
69
70 Some concerns with the Perspectives OpenSSH client:
71
72  * This client won't help if you are connecting to machines behind
73    firewalls, on NAT'ed LANs, with source IP filtering, or otherwise
74    in a restricted network state, because the notaries won't be able
75    to reach it.
76
77  * There is still a question of why you should trust these particular
78    notaries during your verification.  Who are the notaries?  How
79    could they be compromised?
80
81  * It only provides infrastructure in one direction: the user
82    authenticating the host by name.  There is no mechanism for dealing
83    with identifying users by name, or allowing users to globally
84    revoke or change keys.
85
86  * It doesn't provide any mechanism for key rotation or revocation:
87    Perspectives won't help you if you need to re-key your machine.
88
89  * The most common threat which Perspectives protects against (a
90    narrow MITM attack, e.g. the attacker controls your gateway) often
91    coincides with the ability of the attacker to filter arbitrary
92    traffic to your node.  But in this case, the attacker could filter
93    out your traffic to the notaries (or the responses from the
94    notaries).  Such filtering (rejecting unknown UDP traffic, as
95    Perspectives appears to use UDP port 15217) is unfortunately
96    common, particuarly on public networks, even when the gateway is
97    not malicious.  This reduces the utility of the Perspectives
98    approach.
99
100 ## OpenSSH with X.509v3 certificates ##
101
102 Roumen Petrov [maintains a patch to OpenSSH that works with the X.509
103 PKI model](http://www.roumenpetrov.info/openssh/).  This is the
104 certificate hierarchy commonly used by TLS (and SSL).
105
106 Some concerns about OpenSSH with X.509v3:
107
108  * the X.509 certificate specification itself [encourages corporate
109    consolidation and centralized global "trust" because of its
110    single-issuer architectural
111    limitation](http://lair.fifthhorseman.net/~dkg/tls-centralization/).
112    This results in an expensive and cumbersome system for smaller
113    players, and it also doesn't correspond to the true distributed
114    nature of human-to-human trust.  Furthermore, centralized global
115    "trusted authorities" create a tempting target for attack, and a
116    single-point-of-failure if an attack is successful.
117
118    Depending on how you declare your trust relationships, OpenPGP is
119    capable of providing the same hierarchical structure as X.509, but
120    it is not limited to such a structure.  The OpenPGP Web of Trust
121    model is more flexible and more adaptable to represent real-world
122    trust than X.509's rigid hierarchy.
123
124  * X.509 certificates can identify hosts by name, but not by
125    individual service.  This means that a compromised web or e-mail
126    server with access to the X.509 key for that service could re-use
127    its certificate as an SSH server, and it would be able to
128    masquerade successfully.
129
130    The monkeysphere uses [User IDs of the form
131    `ssh://foo.example.net`](http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/),
132    so they are not by-default shared across services on the same host
133    (you can still share a key across services on the same host if you
134    like, but the service User IDs can be certified independently of
135    one another).