Merge commit 'origin/silc.1.1.branch'
[silc.git] / doc / draft-riikonen-silc-ke-auth-01.nroff
index 97241e8c4e3eb5d34acc3d574ae7f77455f1cd8a..0adf9b83800b5831314e3d4f7f4f29f27aa37973 100644 (file)
@@ -166,6 +166,9 @@ servers.  In client connections usually all the packets are protected
 with this key except channel messages; channels has their own keys and 
 they are not exchanged with this protocol.
 
+The Diffie-Hellman implementation used in the SILC should be compliant
+to the PKCS #3.
+
 
 .ti 0
 2.1 Key Exchange Payloads
@@ -263,7 +266,13 @@ not include spaces (` ').
 |       Hash Alg Length         |                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
 |                                                               |
-~                        Hash Algorithms                        ~
+~                         Hash Algorithms                       ~
+|                                                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|         HMAC Length           |                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
+|                                                               |
+~                             HMACs                             ~
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |    Compression Alg Length     |                               |
@@ -342,10 +351,19 @@ o Encryption Alg Length (2 bytes) - The length of the encryption
 o Encryption Algorithms (variable length) - The list of
   encryption algorithms.
 
-o Hash Alg Length (2 bytes) - The length of the Hash algorithms
+o Hash Alg Length (2 bytes) - The length of the Hash algorithm
   list, not including any other field.
 
-o Hash Algorithms (variable length) - The list of Hash algorithms.
+o Hash Algorithms (variable length) - The list of Hash
+  algorithms.  The hash algorithms are mainly used in the
+  SKE protocol.
+
+o HMAC Length (2 bytes) - The length of the HMAC list, not
+  including any other field.
+
+o HMACs (variable length) - The list of HMACs.  The HMAC's
+  are used to compute the Message Authentication Codes (MAC)
+  of the SILC packets.
 
 o Compression Alg Length (2 bytes) - The length of the
   compression algorithms list, not including any other field.
@@ -431,7 +449,8 @@ o Public Key Type (2 bytes) - The public key (or certificate)
   certificate specification in [PGP].  See SPKI certificate
   specification in [SPKI].  If this field includes zero (0)
   or unsupported type number the protocol must be aborted
-  sending SILC_PACKET_FAILURE message.
+  sending SILC_PACKET_FAILURE message and the connection should
+  be closed immediately.
 
 o Public Data Length (2 bytes) - The length of the public
   data computed by the responder, not including any other
@@ -574,10 +593,10 @@ Setup:  p is a large and public safe prime.  This is one of the
 
 
 If any of these phases is to fail SILC_PACKET_FAILURE is sent to
-indicate that the key exchange protocol failed.  Any other packets must
-not be sent or accepted during the key exchange except the
-SILC_PACKET_KEY_EXCHANGE_*, SILC_PACKET_DISCONNECT, SILC_PACKET_FAILURE
-and/or SILC_PACKET_SUCCESS packets.
+indicate that the key exchange protocol has failed, and the connection
+should be closed immediately.  Any other packets must not be sent or
+accepted during the key exchange except the SILC_PACKET_KEY_EXCHANGE_*,
+SILC_PACKET_FAILURE and SILC_PACKET_SUCCESS packets.
 
 The result of this protocol is a shared secret key material KEY and
 a hash value HASH.  The key material itself is not fit to be used as 
@@ -791,17 +810,22 @@ defined:
     None of the provided hash functions were supported.
 
 
-7   SILC_SKE_STATUS_UNSUPPORTED_PUBLIC_KEY
+7   SILC_SKE_STATUS_UNSUPPORTED_HMAC
+
+    None of the provided HMACs were supported.
+
+
+8   SILC_SKE_STATUS_UNSUPPORTED_PUBLIC_KEY
 
     Provided public key type is not supported.
 
 
-8   SILC_SKE_STATUS_INCORRECT_SIGNATURE
+9   SILC_SKE_STATUS_INCORRECT_SIGNATURE
 
     Provided signature was incorrect.
 
 
-9   SILC_SKE_STATUS_BAD_VERSION
+10   SILC_SKE_STATUS_BAD_VERSION
 
     Provided version string was not acceptable.
 .in 3
@@ -838,8 +862,8 @@ The protocol is started by the connecting party by sending
 SILC_PACKET_CONNECTION_AUTH packet with Connection Auth Payload,
 described in the next section.  This payload must include the
 authentication data.  Authentication data is set according
-authentication method that must be known by both parties. If connecting
-party does not know what is the mandatory authentication method it must
+authentication method that must be known by both parties.  If connecting
+party does not know what is the mandatory authentication method it may
 request it from the server by sending SILC_PACKET_CONNECTION_AUTH_REQUEST
 packet.  This packet is not part of this protocol and is described in
 section Connection Auth Request Payload in [SILC2].  However, if
@@ -1012,6 +1036,18 @@ security of this protocol.
 [IRC]        Oikarinen, J., and Reed D., "Internet Relay Chat Protocol",
              RFC 1459, May 1993.
 
+[IRC-ARCH]   Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
+             April 2000.
+
+[IRC-CHAN]   Kalt, C., "Internet Relay Chat: Channel Management", RFC
+             2811, April 2000.
+
+[IRC-CLIENT] Kalt, C., "Internet Relay Chat: Client Protocol", RFC
+             2812, April 2000.
+
+[IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
+             2813, April 2000.
+
 [SSH-TRANS]  Ylonen, T., et al, "SSH Transport Layer Protocol", 
              Internet Draft.
 
@@ -1044,6 +1080,9 @@ security of this protocol.
 [HMAC]       Krawczyk, H., "HMAC: Keyed-Hashing for Message
              Authentication", RFC 2104, February 1997.
 
+[PKCS1]      Kalinski, B., and Staddon, J., "PKCS #1 RSA Cryptography
+             Specifications, Version 2.0", RFC 2437, October 1998.
+
 
 .ti 0
 6 Author's Address