summaryrefslogtreecommitdiff
path: root/doc/MonkeySpec
blob: c36e7deb402432857191caf6b796cf3df9095ab1 (plain)
  1. THE MONKEYSPHERE
  2. ================
  3. AGENDA
  4. ======
  5. [x] clowning
  6. [ ] work
  7. [x] jrollins will talk and gesture - in progress
  8. COMPONENTS
  9. ==========
  10. * client-side componants
  11. ** "Marmoset": update known_hosts file with public key of server(s):
  12. *** be responsible for removing keys from the file as key revocation happens
  13. *** be responsible for updating a key in the file where there is a key replacement
  14. *** must result in a file that is parsable by the existing ssh client without errors
  15. *** manual management must be allowed without stomping on it
  16. *** provide a simple, intelligible, clear policy for key acceptance
  17. *** questions: should this query keyserver & update known host files? (we already
  18. have awesome tool that queries keyservers and updates a web of trust (gpg)
  19. ** "Howler": simple script that could be placed as a trigger function (in your .ssh/config)
  20. *** runs on connection to a certain host
  21. *** triggers update to known_hosts file then makes connection
  22. *** proxy-command | pre-hook script | wrapper script
  23. ** "Langur": policy-editor for viewing/editing policies
  24. * server-side componants
  25. ** "Rhesus" updates a per-user authorized_keys file, instead of updating a
  26. known_hosts file from a public key by matching a specified user-id (for given
  27. user: update authkeys file with public keys derived from authorized_uids
  28. file)
  29. *** Needs to operate with the same principles that Marmoset client-side does
  30. ** "Tamarin" triggers Rhesus during an attempt to initiate a connection or a scheduler (or both)
  31. ** "Barbary" - policy editor / viewer
  32. * common componants
  33. ** Create a ssh keypair from a openpgp keypair
  34. from ssh_config(5):
  35. LocalCommand
  36. Specifies a command to execute on the local machine after suc‐
  37. cessfully connecting to the server. The command string extends
  38. to the end of the line, and is executed with /bin/sh. This
  39. directive is ignored unless PermitLocalCommand has been enabled.
  40. NOTES
  41. =====
  42. * Daniel and Elliot lie. <check>
  43. * We will use a distributed VCS, each developer will create their own git repository and publish it publically for others to pull from, mail out
  44. * public project page doesn't perhaps make sense yet
  45. * approximate goal - using the web of trust to authenticate ppl for SSH
  46. * outline of various components of monkeysphere
  47. * M: what does it mean to be in the monkeysphere? not necessarily a great coder.
  48. * J: interested in seeing project happen, not in actually doing it. anybody can contribute as much as they want.
  49. * J: if we put the structure in place to work on monkeysphere then we don't have to do anything
  50. * D: we are not creating
  51. * understand gpg's keyring better, understanding tools better, building scripts
  52. * Some debian packages allow automated configuration of config files.
  53. * GENERAL GOAL - use openpgp web-of-trust to authenticate ppl for SSH
  54. * SPECIFIC GOAL - allow openssh to tie into pgp web-of-trust without modifying either openpgp and openssh
  55. * DESIGN GOALS - authentication, use the existing generic OpenSSH client, the admin can make it default, although end-user should be decide to use monkeysphere or not
  56. * DESIGN GOAL - use of monkeysphere should not radically change connecting-to-server experience
  57. * GOAL - pick a monkey-related name for each component
  58. Dramatis Personae: http://en.wikipedia.org/wiki/Alice_and_Bob
  59. Backstory: http://www.conceptlabs.co.uk/alicebob.html
  60. * Use Case: Bob wants to sign on to the computer "mangabey" via monkeysphere
  61. framework. He doesn't have access to the machine, but he knows Alice, who is
  62. the admin of magabey. Alice creates a user bob and puts bob's userid in the
  63. auth_user_ids file for bob. Tamarin triggers which causes Rhesus to take all
  64. the things in the auth_userids file, takes those users, look son a keyserver
  65. finds the public keys for the users, converts the gpg public keys into ssh
  66. public keys and inserts those into a user_authorized_keys file. Bob goes to
  67. connect, bob's ssh client which is monkeysphere enbaled, howler is triggered
  68. which triggers marmoset which looks out into the web of trust and find an
  69. OpenPGP key that has a userid that matches the URI of magabey. Marmoset checks
  70. to see if this key for mangabey has been signed by any keys that you trust
  71. (based on your policy). Has this key been signed by somebody that you trust?
  72. If yes, connect, if no: abort or fail-through or whatever. Alice has signed
  73. this uid, so Marmoset says "OK, this server has been verified" it then
  74. converts the gpg public key into a ssh public key and then adds this gpg key
  75. to the known_host file. ssh says, "you" are about to connect to magabey and
  76. you know this is magabey because alice says so and you trust alice". The gpg
  77. private key of bob has to be converted (somehow, via agent or something) into
  78. a ssh private_key. SSH connection happens.
  79. Host identity piece of monkeysphere could be used without buying into the
  80. authorization component.
  81. Monkeysphere is authentication layer that allows the sysadmin to perform
  82. authorization on user identities instead of on keys, it additionally allows the
  83. sysadmin also to authenticate the server to the end-user.
  84. git clone http://git.mlcastle.net/monkeysphere.git/ monkeysphere
  85. Fix gpgkey2ssh so that the entire key fingerprint will work, accept full fingerprint, or accept a pipe and do the conversion
  86. Write manpage for gpgkey2ssh
  87. gpg private key (start with passwordless) to PEM encoded private key: perl libraries, libopencdk / gnutls, gpgme
  88. setup remote git repo
  89. think through / plan merging of known_hosts (& auth_keys?)
  90. think about policies and their representation