README.eap-srp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. EAP with MD5-Challenge and SRP-SHA1 support
  2. by James Carlson, Sun Microsystems
  3. Version 2, September 22nd, 2002
  4. 1. What it does
  5. The Extensible Authentication Protocol (EAP; RFC 2284) is a
  6. security protocol that can be used with PPP. It provides a means
  7. to plug in multiple optional authentication methods.
  8. This implementation includes the required default MD5-Challenge
  9. method, which is similar to CHAP (RFC 1994), as well as the new
  10. SRP-SHA1 method. This latter method relies on an exchange that is
  11. not vulnerable to dictionary attacks (as is CHAP), does not
  12. require the server to keep a cleartext copy of the secret (as in
  13. CHAP), supports identity privacy, and produces a temporary shared
  14. key that could be used for data encryption.
  15. The SRP-SHA1 method is based on draft-ietf-pppext-eap-srp-03.txt,
  16. a work in progress.
  17. 2. Required libraries
  18. Two other packages are required first. Download and install
  19. OpenSSL and Thomas Wu's SRP implementation.
  20. http://www.openssl.org/ (or ftp://ftp.openssl.org/source/)
  21. http://srp.stanford.edu/
  22. Follow the directions in each package to install the SSL and SRP
  23. libraries. Once SRP is installed, you may run tconf as root to
  24. create known fields, if desired. (This step is not required.)
  25. 3. Installing the patch
  26. The EAP-SRP patch described here is integrated into this version
  27. of pppd. The following patch may be used with older pppd sources:
  28. ftp://playground.sun.com/carlsonj/eap/ppp-2.4.1-eap-1.tar.gz
  29. Configure, compile, and install as root. You may want to edit
  30. pppd/Makefile after configuring to enable or disable optional
  31. features.
  32. % ./configure
  33. % make
  34. % su
  35. # make install
  36. If you use csh or tcsh, run "rehash" to pick up the new commands.
  37. If you're using Solaris, and you run into trouble with the
  38. pseudonym feature on the server side ("no DES here" shows in the
  39. log file), make sure that you have the "domestic" versions of the
  40. DES libraries linked. You should see "crypt_d" in "ldd
  41. /usr/local/bin/pppd". If you see "crypt_i" instead, then make
  42. sure that /usr/lib/libcrypt.* links to /usr/lib/libcrypt_d.*. (If
  43. you have the international version of Solaris, then you won't have
  44. crypt_d. You might want to find an alternative DES library.)
  45. 4. Adding the secrets
  46. On the EAP SRP-SHA1 client side, access to the cleartext secret is
  47. required. This can be done in two ways:
  48. - Enter the client name, server name, and password in the
  49. /etc/ppp/srp-secrets file. This file has the same format as
  50. the existing chap-secrets and pap-secrets files.
  51. clientname servername "secret here"
  52. - Use the "password" option in any of the standard
  53. configuration files (or the command line) to specify the
  54. secret.
  55. password "secret here"
  56. On the EAP SRP-SHA1 server side, a secret verifier is required.
  57. This is a one-way hash of the client's name and password. To
  58. generate this value, run the srp-entry program (see srp-entry(8)).
  59. This program prompts for the client name and the passphrase (the
  60. secret). The output will be an entry, such as the following,
  61. suitable for use in the server's srp-secrets file. Note that if
  62. this is transferred by cut-and-paste, the entry must be a single
  63. line of text in the file.
  64. pppuser srpserver 0:LFDpwg4HBLi4/kWByzbZpW6pE95/iIWBSt7L.DAkHsvwQphtiq0f6reoUy/1LC1qYqjcrV97lCDmQHQd4KIACGgtkhttLdP3KMowvS0wLXLo25FPJeG2sMAUEWu/HlJPn2/gHyh9aT.ZxUs5MsoQ1E61sJkVBc.2qze1CdZiQGTK3qtWRP6DOpM1bfhKtPoVm.g.MiCcTMWzc54xJUIA0mgKtpthE3JrqCc81cXUt4DYi5yBzeeGTqrI0z2/Gj8Jp7pS4Fkq3GmnYjMxnKfQorFXNwl3m7JSaPa8Gj9/BqnorJOsnSMlIhBe6dy4CYytuTbNb4Wv/nFkmSThK782V:2cIyMp1yKslQgE *
  65. The "secret" field consists of three entries separated by colons.
  66. The first entry is the index of the modulus and generator from
  67. SRP's /etc/tpasswd.conf. If the special value 0 is used, then the
  68. well-known modulus/generator value is used (this is recommended,
  69. because it is much faster). The second value is the verifier
  70. value. The third is the password "salt." These latter two values
  71. are encoded in base64 notation.
  72. For EAP MD5-Challenge, both client and server use the existing
  73. /etc/ppp/chap-secrets file.
  74. 5. Configuration options
  75. There are two main options relating to EAP available for the
  76. client. These are:
  77. refuse-eap - refuse to authenticate with EAP
  78. srp-use-pseudonym - use the identity privacy if
  79. offered by server
  80. The second option stores a pseudonym, if offered by the EAP
  81. SRP-SHA1 server, in the $HOME/.ppp_pseudonym file. The pseudonym
  82. is typically an encrypted version of the client identity. During
  83. EAP start-up, the pseudonym stored in this file is offered to the
  84. peer as the identity. If this is accepted by the peer, then
  85. eavesdroppers will be unable to determine the identity of the
  86. client. Each time the client is authenticated, the server will
  87. offer a new pseudoname to the client using an obscured (reversibly
  88. encrypted) message. Thus, access across successive sessions
  89. cannot be tracked.
  90. There are two main options for EAP on the server:
  91. require-eap - require client to use EAP
  92. srp-pn-secret "string" - set server's pseudoname secret
  93. The second option sets the long-term secret used on the server to
  94. encrypt the user's identity to produce pseudonames. The
  95. pseudoname is constructed by hashing this string with the current
  96. date (to the nearest day) with SHA1, then using this hash as the
  97. key for a DES encryption of the client's name. The date is added
  98. to the hash for two reasons. First, this allows the pseudonym to
  99. change daily. Second, it allows the server to decode any previous
  100. pseudonym by trying previous dates.
  101. See the pppd(8) man page for additional options.
  102. 6. Comments welcome!
  103. This is still an experimental implementation. It has been tested
  104. and reviewed carefully for correctness, but may still be
  105. incomplete or have other flaws. All comments are welcome. Please
  106. address them to the author:
  107. james.d.carlson@sun.com
  108. or, for EAP itself or the SRP extensions to EAP, to the IETF PPP
  109. Extensions working group:
  110. ietf-ppp@merit.edu