draft-ietf-dnsext-gss-tsig-02.txt   draft-ietf-dnsext-gss-tsig-03.txt 
INTERNET-DRAFT Stuart Kwan INTERNET-DRAFT Stuart Kwan
<draft-ietf-dnsext-gss-tsig-02.txt> Praerit Garg <draft-ietf-dnsext-gss-tsig-03.txt> Praerit Garg
March 1, 2001 James Gilroy September 20, 2001 James Gilroy
Expires September 1, 2001 Levon Esibov Expires March 20, 2002 Levon Esibov
Jeff Westhead
Microsoft Corp. Microsoft Corp.
Randy Hall Randy Hall
Lucent Technologies Lucent Technologies
GSS Algorithm for TSIG (GSS-TSIG) GSS Algorithm for TSIG (GSS-TSIG)
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance This document is an Internet-Draft and is in full conformance
with all provisions of Section 10 of RFC2026. with all provisions of Section 10 of RFC2026.
skipping to change at page 2, line 16 skipping to change at page 2, line 16
1: Introduction......................................................2 1: Introduction......................................................2
2: Algorithm Overview................................................3 2: Algorithm Overview................................................3
2.1: GSS Details...................................................4 2.1: GSS Details...................................................4
3: Client Protocol Details...........................................4 3: Client Protocol Details...........................................4
3.1: Negotiating Context...........................................4 3.1: Negotiating Context...........................................4
3.1.1: Call GSS_Init_sec_context.................................5 3.1.1: Call GSS_Init_sec_context.................................5
3.1.2: Send TKEY Query to Server.................................6 3.1.2: Send TKEY Query to Server.................................6
3.1.3: Receive TKEY Query-Response from Server...................7 3.1.3: Receive TKEY Query-Response from Server...................7
3.2: Context Established...........................................9 3.2: Context Established...........................................9
3.2.1: Terminating a Context.....................................9 3.2.1: Terminating a Context....................................10
4: Server Protocol Details..........................................10 4: Server Protocol Details..........................................10
4.1: Negotiating Context..........................................10 4.1: Negotiating Context..........................................10
4.1.1: Receive TKEY Query from Client...........................10 4.1.1: Receive TKEY Query from Client...........................10
4.1.2: Call GSS_Accept_sec_context..............................10 4.1.2: Call GSS_Accept_sec_context..............................11
4.1.3: Send TKEY Query-Response to Client.......................11 4.1.3: Send TKEY Query-Response to Client.......................11
4.2: Context Established..........................................12 4.2: Context Established..........................................13
4.2.1: Terminating a Context....................................13 4.2.1: Terminating a Context....................................13
5: Sending and Verifying Signed Messages............................13 5: Sending and Verifying Signed Messages............................13
5.1: Sending a Signed Message - Call GSS_GetMIC...................13 5.1: Sending a Signed Message - Call GSS_GetMIC...................13
5.2: Verifying a Signed Message - Call GSS_VerifyMIC..............14 5.2: Verifying a Signed Message - Call GSS_VerifyMIC..............14
6: Example usage of GSS-TSIG algorithm..............................15 6: Example usage of GSS-TSIG algorithm..............................15
7: Security Considerations..........................................19 7: Security Considerations..........................................19
8: IANA Considerations..............................................19 8: IANA Considerations..............................................19
9: Conformance......................................................19 9: Conformance......................................................19
10:Acknowledgements.................................................20 10:Acknowledgements.................................................20
11:References.......................................................20 11:References.......................................................20
skipping to change at page 5, line 31 skipping to change at page 5, line 31
interoperability of the implementations of the GSS-TSIG interoperability of the implementations of the GSS-TSIG
mechanism client MUST specify a valid underlying security mechanism client MUST specify a valid underlying security
mechanism that enables use of Kerberos v5 (see Section 9 for mechanism that enables use of Kerberos v5 (see Section 9 for
more information). more information).
OCTET STRING input_token = NULL OCTET STRING input_token = NULL
BOOLEAN replay_det_req_flag = TRUE BOOLEAN replay_det_req_flag = TRUE
BOOLEAN mutual_req_flag = TRUE BOOLEAN mutual_req_flag = TRUE
BOOLEAN deleg_req_flag = TRUE BOOLEAN deleg_req_flag = TRUE
BOOLEAN sequence_req_flag = TRUE BOOLEAN sequence_req_flag = TRUE
BOOLEAN anon_req_flag = FALSE BOOLEAN anon_req_flag = FALSE
BOOLEAN conf_req_flag = TRUE
BOOLEAN integ_req_flag = TRUE BOOLEAN integ_req_flag = TRUE
INTEGER lifetime_req = 0 (0 requests a default INTEGER lifetime_req = 0 (0 requests a default
value). Client MAY instead specify another upper bound for the value). Client MAY instead specify another upper bound for the
lifetime of the context to be established in seconds. lifetime of the context to be established in seconds.
OCTET STRING chan_bindings = Any valid channel bindings OCTET STRING chan_bindings = Any valid channel bindings
as specified in Section 1.1.6 "Channel Bindings" in [RFC2734] as specified in Section 1.1.6 "Channel Bindings" in [RFC2743]
OUTPUTS OUTPUTS
INTEGER major_status INTEGER major_status
CONTEXT HANDLE output_context_handle CONTEXT HANDLE output_context_handle
OCTET STRING output_token OCTET STRING output_token
BOOLEAN replay_det_state BOOLEAN replay_det_state
BOOLEAN mutual_state BOOLEAN mutual_state
INTEGER minor_status INTEGER minor_status
OBJECT IDENTIFIER mech_type OBJECT IDENTIFIER mech_type
BOOLEAN deleg_state BOOLEAN deleg_state
skipping to change at page 9, line 15 skipping to change at page 9, line 15
the client MUST abandon this negotiation sequence. The client MUST the client MUST abandon this negotiation sequence. The client MUST
delete an active context by calling GSS_Delete_sec_context providing delete an active context by calling GSS_Delete_sec_context providing
the associated context_handle. The client MAY repeat the negotiation the associated context_handle. The client MAY repeat the negotiation
sequence starting with the uninitialized state as described in section sequence starting with the uninitialized state as described in section
3.1. To prevent infinite looping the number of attempts to establish a 3.1. To prevent infinite looping the number of attempts to establish a
security context must be limited. security context must be limited.
If OUTPUT major_status is GSS_S_CONTINUE_NEEDED OR GSS_S_COMPLETE then If OUTPUT major_status is GSS_S_CONTINUE_NEEDED OR GSS_S_COMPLETE then
client MUST act as described below. client MUST act as described below.
If the response from the server was signed, and the OUTPUT major_status
is GSS_S_COMPLETE,then the signature in the TSIG record MUST be verified
using the procedure detailed in section 5, Sending and Verifying Signed
Messages. If the signature is invalid, then the client MUST abandon this
negotiation sequence. The client MUST delete an active context by
calling GSS_Delete_sec_context providing the associated context_handle.
The client MAY repeat the negotiation sequence starting with the
uninitialized state as described in section 3.1. To prevent infinite
looping the number of attempts to establish a security context must be
limited.
If major_status is GSS_S_CONTINUE_NEEDED the negotiation is not yet If major_status is GSS_S_CONTINUE_NEEDED the negotiation is not yet
finished. The token output_token MUST be passed to the server in a TKEY finished. The token output_token MUST be passed to the server in a TKEY
record by repeating the negotiation sequence beginning with section record by repeating the negotiation sequence beginning with section
3.1.2. The client MUST place a limit on the number of continuations in 3.1.2. The client MUST place a limit on the number of continuations in
a context negotiation to prevent endless looping. Such limit SHOULD NOT a context negotiation to prevent endless looping. Such limit SHOULD NOT
exceed value of 10. exceed value of 10.
If major_status is GSS_S_COMPLETE and output_token is non-NULL, the If major_status is GSS_S_COMPLETE and output_token is non-NULL, the
client-side component of the negotiation is complete but the token client-side component of the negotiation is complete but the token
output_token MUST be passed to the server by repeating the negotiation output_token MUST be passed to the server by repeating the negotiation
skipping to change at page 12, line 11 skipping to change at page 12, line 26
GSS_S_NO_CONTEXT GSS_S_NO_CONTEXT
GSS_S_BAD_MECH GSS_S_BAD_MECH
GSS_S_FAILURE GSS_S_FAILURE
If OUTPUT major_status is set to GSS_S_COMPLETE or If OUTPUT major_status is set to GSS_S_COMPLETE or
GSS_S_CONTINUE_NEEDED then server MUST act as described below. GSS_S_CONTINUE_NEEDED then server MUST act as described below.
If major_status is GSS_S_COMPLETE the server component of the If major_status is GSS_S_COMPLETE the server component of the
negotiation is finished. If output_token is non-NULL, then it MUST be negotiation is finished. If output_token is non-NULL, then it MUST be
returned to the client in a Key Data field of the RDATA in TKEY. The returned to the client in a Key Data field of the RDATA in TKEY. The
error field in the TKEY record is set to NOERROR. error field in the TKEY record is set to NOERROR. The message MUST be
signed with a TSIG record as described in section 5, Sending and
Verifying Signed Messages. The context state is advanced to Context
Established. Section 4.2 discusses the usage of the security context.
If major_status is GSS_S_COMPLETE and output_token is NULL, then the If major_status is GSS_S_COMPLETE and output_token is NULL, then the
TKEY record received from the client MUST be returned in the Answer TKEY record received from the client MUST be returned in the Answer
section of the response. The message MUST be signed with a TSIG record section of the response. The message MUST be signed with a TSIG record
as described in section 5, Sending and Verifying Signed Messages. The as described in section 5, Sending and Verifying Signed Messages. The
context state is advanced to Context Established. Section 4.2 discusses context state is advanced to Context Established. Section 4.2 discusses
the usage of the security context. the usage of the security context.
If major_status is GSS_S_CONTINUE, the server component of the If major_status is GSS_S_CONTINUE, the server component of the
negotiation is not yet finished. The server responds to the TKEY negotiation is not yet finished. The server responds to the TKEY
skipping to change at page 15, line 28 skipping to change at page 15, line 42
This Section describes an example where a Client, client.example.com, This Section describes an example where a Client, client.example.com,
and a Server, server.example.com, establish a security context according and a Server, server.example.com, establish a security context according
to the algorithm described above. to the algorithm described above.
I. Client initializes security context negotiation I. Client initializes security context negotiation
To establish a security context with a server, server.example.com, the To establish a security context with a server, server.example.com, the
Client calls GSS_Init_sec_context with the following parameters Client calls GSS_Init_sec_context with the following parameters
(Note that some INPUT and OUTPUT parameters not critical for this (Note that some INPUT and OUTPUT parameters not critical for this
algorithm are not described in this example) algorithm are not described in this example)
CONTEXT HANDLE input_context_handle = 0 CONTEXT HANDLE input_context_handle = 0
INTERNAL NAME targ_name = "DNS/ server.example.com" INTERNAL NAME targ_name = "DNS@server.example.com"
OCTET STRING input_token = NULL OCTET STRING input_token = NULL
BOOLEAN replay_det_req_flag = TRUE BOOLEAN replay_det_req_flag = TRUE
BOOLEAN mutual_req_flag = TRUE BOOLEAN mutual_req_flag = TRUE
The OUTPUTS parameters returned by GSS_Init_sec_context include The OUTPUTS parameters returned by GSS_Init_sec_context include
INTEGER major_status = GSS_S_CONTINUE_NEEDED INTEGER major_status = GSS_S_CONTINUE_NEEDED
CONTEXT HANDLE output_context_handle context_handle CONTEXT HANDLE output_context_handle context_handle
OCTET STRING output_token output_token OCTET STRING output_token output_token
BOOLEAN replay_det_state = TRUE BOOLEAN replay_det_state = TRUE
BOOLEAN mutual_state = TRUE BOOLEAN mutual_state = TRUE
skipping to change at page 15, line 39 skipping to change at page 16, line 4
OCTET STRING input_token = NULL OCTET STRING input_token = NULL
BOOLEAN replay_det_req_flag = TRUE BOOLEAN replay_det_req_flag = TRUE
BOOLEAN mutual_req_flag = TRUE BOOLEAN mutual_req_flag = TRUE
The OUTPUTS parameters returned by GSS_Init_sec_context include The OUTPUTS parameters returned by GSS_Init_sec_context include
INTEGER major_status = GSS_S_CONTINUE_NEEDED INTEGER major_status = GSS_S_CONTINUE_NEEDED
CONTEXT HANDLE output_context_handle context_handle CONTEXT HANDLE output_context_handle context_handle
OCTET STRING output_token output_token OCTET STRING output_token output_token
BOOLEAN replay_det_state = TRUE BOOLEAN replay_det_state = TRUE
BOOLEAN mutual_state = TRUE BOOLEAN mutual_state = TRUE
Client verifies that replay_det_state and mutual_state values are Client verifies that replay_det_state and mutual_state values are
TRUE. Since the major_status is GSS_S_CONTINUE_NEEDED, which is a TRUE. Since the major_status is GSS_S_CONTINUE_NEEDED, which is a
success OUTPUT major_status value, client stores context_handle that success OUTPUT major_status value, client stores context_handle that
maps to "DNS/server.example.com" and proceeds to the next step. maps to "DNS@server.example.com" and proceeds to the next step.
II. Client sends a query with QTYPE = TKEY to server II. Client sends a query with QTYPE = TKEY to server
Client sends a query with QTYPE = TKEY for a client-generated globally Client sends a query with QTYPE = TKEY for a client-generated globally
unique domain name string, 789.client.example.com.server.example.com. unique domain name string, 789.client.example.com.server.example.com.
Query contains a TKEY record in its Additional records section with Query contains a TKEY record in its Additional records section with
the following fields (Note that some fields not specific to this the following fields (Note that some fields not specific to this
algorithm are not specified) algorithm are not specified)
NAME = 789.client.example.com.server.example.com. NAME = 789.client.example.com.server.example.com.
RDATA RDATA
Algorithm Name = gss-tsig Algorithm Name = gss-tsig
Mode = 3 (GSS-API negotiation - per [RFC2930]) Mode = 3 (GSS-API negotiation - per [RFC2930])
Key Size = size of output_token in octets Key Size = size of output_token in octets
Key Data = output_token Key Data = output_token
After the key_name 789.client.example.com.server.example.com. After the key_name 789.client.example.com.server.example.com.
is generated it is stored in the client's (target_name, key_name, is generated it is stored in the client's (target_name, key_name,
context_handle) mapping table. context_handle) mapping table.
skipping to change at page 17, line 11 skipping to change at page 17, line 18
placing in the answer section a TKEY record containing output_token in placing in the answer section a TKEY record containing output_token in
the Key Data RDATA field. The error field in the TKEY record is set to the Key Data RDATA field. The error field in the TKEY record is set to
0. The RCODE in the query response is set to NOERROR. 0. The RCODE in the query response is set to NOERROR.
VI. Client processes token returned by server VI. Client processes token returned by server
When the client receives the TKEY query response from the server, the When the client receives the TKEY query response from the server, the
client calls GSS_Init_sec_context with the following parameters (Note client calls GSS_Init_sec_context with the following parameters (Note
that some INPUT and OUTPUT parameters not critical for this algorithm that some INPUT and OUTPUT parameters not critical for this algorithm
are not described in this example) are not described in this example)
CONTEXT HANDLE input_context_handle = the context_handle stored CONTEXT HANDLE input_context_handle = the context_handle stored
in the client's mapping table entry (DNS/server.example.com., in the client's mapping table entry (DNS@server.example.com.,
789.client.example.com.server.example.com., context_handle) 789.client.example.com.server.example.com., context_handle)
INTERNAL NAME targ_name = "DNS/server.example.com" INTERNAL NAME targ_name = "DNS@server.example.com"
OCTET STRING input_token = token from Key field of TKEY OCTET STRING input_token = token from Key field of TKEY
record from the Answer section of the server's response record from the Answer section of the server's response
BOOLEAN replay_det_req_flag = TRUE BOOLEAN replay_det_req_flag = TRUE
BOOLEAN mutual_req_flag = TRUE BOOLEAN mutual_req_flag = TRUE
The OUTPUTS parameters returned by GSS_Init_sec_context include The OUTPUTS parameters returned by GSS_Init_sec_context include
INTEGER major_status = GSS_S_COMPLETE INTEGER major_status = GSS_S_COMPLETE
CONTEXT HANDLE output_context_handle = context_handle CONTEXT HANDLE output_context_handle = context_handle
OCTET STRING output_token = output_token OCTET STRING output_token = output_token
BOOLEAN replay_det_state = TRUE BOOLEAN replay_det_state = TRUE
skipping to change at page 21, line 25 skipping to change at page 21, line 25
USA USA USA USA
skwan@microsoft.com skwan@microsoft.com
James Gilroy Levon Esibov James Gilroy Levon Esibov
Microsoft Corporation Microsoft Corporation Microsoft Corporation Microsoft Corporation
One Microsoft Way One Microsoft Way One Microsoft Way One Microsoft Way
Redmond, WA 98052 Redmond, WA 98052 Redmond, WA 98052 Redmond, WA 98052
USA USA USA USA
levone@microsoft.com levone@microsoft.com
Randy Hall Randy Hall Jeff Westhead
Lucent Technologies Lucent Technologies Microsoft Corporation
400 Lapp Road 400 Lapp Road One Microsoft Way
Malvern PA 19355 Malvern PA 19355 Redmond, WA 98052
USA USA USA
randyhall@lucent.com randyhall@lucent.com
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/