summaryrefslogtreecommitdiff
path: root/doc/MonkeySpec
blob: 45d6cf694ab64b5771cb29f8f6bd114875f66efc (plain)
  1. THE MONKEYSPHERE
  2. ================
  3. AGENDA
  4. ======
  5. [x] clowning
  6. [ ] work
  7. [x] jrollins will talk and gesture - in progress
  8. MONKEYNAMES
  9. ===========
  10. rhesus, marmoset, howler, langur, tamarin, barbary
  11. COMPONENTS
  12. ==========
  13. (names in "" are code names until we think of better ones.)
  14. common components
  15. -----------------
  16. * "rhesus": update known_hosts/authorized_keys files:
  17. - be responsible for removing keys from the file as key revocation
  18. happens
  19. - be responsible for updating a key in the file where there is a key
  20. replacement
  21. - must result in a file that is parsable by the existing ssh client
  22. without errors
  23. - manual management must be allowed without stomping on it
  24. - provide a simple, intelligible, clear policy for key acceptance
  25. * "langur": policy-editor for viewing/editing policies
  26. * gpg2ssh: utility to convert gpg keys to ssh
  27. known_hosts/authorized_keys lines
  28. * ssh2gpg: create openpgp keypair from ssh keypair
  29. server-side components
  30. ----------------------
  31. * "howler": service gpg key generator/publisher
  32. * "tamarin": script to trigger rhesus during attempt to initiate
  33. connection from client
  34. client-side components
  35. ----------------------
  36. * "marmoset": script to trigger rhesus during attempt to initiate
  37. connection to server
  38. - runs on connection to a certain host
  39. - triggers update to known_hosts file then makes connection
  40. - proxy-command | pre-hook script | wrapper script
  41. - (ssh_config "LocalCommand" is only run *after* connection)
  42. USE CASE
  43. ========
  44. Dramatis Personae: http://en.wikipedia.org/wiki/Alice_and_Bob
  45. Backstory: http://www.conceptlabs.co.uk/alicebob.html
  46. Bob wants to sign on to the computer "mangabey" via monkeysphere
  47. framework. He doesn't yet have access to the machine, but he knows
  48. Alice, who is the admin of magabey. Alice and Bob, being the
  49. contientious netizens that they are, have already published their
  50. personal gpg keys to the web of trust, and being good friends, have
  51. both signed each other's keys and marked each others keys with "full"
  52. trust.
  53. Alice uses howler to publish a gpg key for magabey with the special
  54. "ssh://magabey" URI userid. Alice signs magabey's gpg key and
  55. publishes her signature. Alice then creates a user "bob" on magabey,
  56. and puts Bob's userid in the auth_user_ids file for user bob on
  57. magabey. tamarin triggers on magabey, which triggers rhesus, which
  58. takes all userids in bob's auth_user_ids file, look on a keyserver to
  59. find the public keys for each user, converts the gpg public keys into
  60. ssh public keys if the key validity is acceptable, and finally insert
  61. those keys into an authorized_keys file for bob.
  62. Bob now adds the "ssh://magabey" userid to the auth_host_ids file in
  63. his account on his localhost. Bob now goes to connect to bob@magabey.
  64. Bob's ssh client, which is monkeysphere enabled, triggers marmoset,
  65. which triggers rhesus on Bob's computer, which takes all server
  66. userids in his auth_host_ids file, looks on a keyserver to find the
  67. public key for each server (based on the server's URI), converts the
  68. gpg public keys into ssh public keys if the key validity is
  69. acceptable, and finally insert those keys into Bob's known_hosts file.
  70. On Bob's side, since mangabey's key had "full" validity (since it was
  71. signed by Alice whom he fully trusts), Bob's ssh client deems magabey
  72. "known" and no further host key checking is required.
  73. On magabey's side, since Bob's key has "full" validity (since it had
  74. also been signed by Alice whom magabey fully trusts (since Alice told
  75. him to)), Bob is authenticated to log into bob@magabey.
  76. NOTES
  77. =====
  78. * Daniel and Elliot lie. <check>
  79. * We will use a distributed VCS, each developer will create their own
  80. git repository and publish it publicly for others to pull from, mail
  81. out
  82. * public project page doesn't perhaps make sense yet
  83. * approximate goal - using the web of trust to authenticate ppl for
  84. SSH
  85. * outline of various components of monkeysphere
  86. * M: what does it mean to be in the monkeysphere? not necessarily a
  87. great coder.
  88. * J: interested in seeing project happen, not in actually doing it.
  89. anybody can contribute as much as they want.
  90. * J: if we put the structure in place to work on monkeysphere then we
  91. don't have to do anything
  92. * D: we are not creating
  93. * understand gpg's keyring better, understanding tools better,
  94. building scripts
  95. * Some debian packages allow automated configuration of config files.
  96. * GENERAL GOAL - use openpgp web-of-trust to authenticate ppl for SSH
  97. * SPECIFIC GOAL - allow openssh to tie into pgp web-of-trust without
  98. modifying either openpgp and openssh
  99. * DESIGN GOALS - authentication, use the existing generic OpenSSH
  100. client, the admin can make it default, although end-user should be
  101. decide to use monkeysphere or not
  102. * DESIGN GOAL - use of monkeysphere should not radically change
  103. connecting-to-server experience
  104. * GOAL - pick a monkey-related name for each component
  105. Host identity piece of monkeysphere could be used without buying into
  106. the authorization component.
  107. Monkeysphere is authentication layer that allows the sysadmin to
  108. perform authorization on user identities instead of on keys, it
  109. additionally allows the sysadmin also to authenticate the server to
  110. the end-user.
  111. git clone http://git.mlcastle.net/monkeysphere.git/ monkeysphere