📄 draft-ietf-dnsext-gss-tsig-06.txt
字号:
BOOLEAN mutual_state INTEGER minor_status OBJECT IDENTIFIER mech_type BOOLEAN deleg_state BOOLEAN sequence_state BOOLEAN anon_state BOOLEAN trans_state BOOLEAN prot_ready_state BOOLEAN conf_avail BOOLEAN integ_avail INTEGER lifetime_recIf returned major_status is set to one of the following errors GSS_S_DEFECTIVE_TOKEN GSS_S_DEFECTIVE_CREDENTIAL GSS_S_BAD_SIG (GSS_S_BAD_MIC) GSS_S_NO_CRED GSS_S_CREDENTIALS_EXPIRED GSS_S_BAD_BINDINGS GSS_S_OLD_TOKEN GSS_S_DUPLICATE_TOKEN GSS_S_NO_CONTEXT GSS_S_BAD_NAMETYPE GSS_S_BAD_NAME GSS_S_BAD_MECH GSS_S_FAILUREthen the the client MUST abandon the algorithm and MUST NOT use theGSS-TSIG algorithm to establish this security contex. This documentdoes not prescribe which other mechanism could be used to establisha security context. Next time when this client needs to establishsecurity context, the client MAY use GSS-TSIG algorithm.Success values of major_status are GSS_S_CONTINUE_NEEDED andGSS_S_COMPLETE. The exact success code is important during laterprocessing.Expires August 28, 2003 [Page 6]INTERNET-DRAFT GSS-TSIG February 28, 2003The values of replay_det_state and mutual_state indicate if thesecurity package provides replay detection and mutual authentication,respectively. If returned major_status is GSS_S_COMPLETE AND one or bothof these values are FALSE, the client MUST abandon this algorithm.Client's behavior MAY depend on other OUTPUT parameters accordingto the policy local to the client.The handle output_context_handle is unique to this negotiation andis stored in the client's mapping table as the context_handle thatmaps to target_name.3.1.2 Send TKEY Query to ServerAn opaque output_token returned by GSS_Init_sec_context is transmittedto the server in a query request with QTYPE=TKEY. The token itselfwill be placed in a Key Data field of the RDATA field in the TKEYresource record in the additional records section of the query. Theowner name of the TKEY resource record set queried for and the ownername of the supplied TKEY resource record in the additional recordssection MUST be the same. This name uniquely identifies the securitycontext to both the client and server, and thus the client SHOULD usea value which is globally unique as described in [RFC2930]. To achieveglobal uniqueness, the name MAY contain a UUID/GUID [ISO11578]. TKEY Record NAME = client-generated globally unique domain name string (as described in [RFC2930]) RDATA Algorithm Name = gss-tsig Mode = 3 (GSS-API negotiation - per [RFC2930]) Key Size = size of output_token in octets Key Data = output_tokenThe remaining fields in the TKEY RDATA, i.e. Inception, Expiration,Error, Other Size and Data Fields, MUST be set according to [RFC2930].The query is transmitted to the server.Note: if the original client call to GSS_Init_sec_context returned anymajor_status other than GSS_S_CONTINUE_NEEDED or GSS_S_COMPLETE, thenthe client MUST NOT send TKEY query. Client's behavior in this case isdescribed above in Section 3.1.1.3.1.3 Receive TKEY Query-Response from ServerUpon the reception of the TKEY query DNS server MUST respond accordingto the description in Section 4. This Section specifies the behaviorof the client after it receives the matching response to its query.Expires August 28, 2003 [Page 7]INTERNET-DRAFT GSS-TSIG February 28, 2003The next processing step depends on the value of major_status from themost recent call that client performed to GSS_Init_sec_context: eitherGSS_S_COMPLETE or GSS_S_CONTINUE.3.1.3.1 Value of major_status == GSS_S_COMPLETEIf the last call to GSS_Init_sec_context yielded a major_status valueof GSS_S_COMPLETE and a non-NULL output_token was sent to the server,then the client side component of the negotiation is complete and theclient is awaiting confirmation from the server.Confirmation is in the form of a query response with RCODE=NOERRORand with the last client supplied TKEY record in the answer sectionof the query. The response MUST be signed with a TSIG record. Notethat server is allowed to sign a response to unsigned client's querydue to modification to the RFC 2845 specified in Section 2.2 above.The signature in the TSIG record MUST be verified using the proceduredetailed in section 5, Sending and Verifying Signed Messages. If theresponse is not signed, OR if the response is signed but signature isinvalid, then an attacker has tampered with the message in transit orhas attempted to send the client a false response. In this case theclient MAY continue waiting for a response to its last TKEY query untilthe time period since the client sent last TKEY query expires. Such atime period is specified by the policy local to the client. This is anew option that allows DNS client to accept multiple answers for onequery ID and select one (not necessarily the first one) based on somecriteria.If the signature is verified the context state is advanced to ContextEstablished. Proceed to section 3.2 for usage of the security context.3.1.3.2 Value of major_status == GSS_S_CONTINUEIf the last call to GSS_Init_sec_context yielded a major_status valueof GSS_S_CONTINUE, then the negotiation is not yet complete. The serverwill return to the client a query-response with a TKEY record in theAnswer section. If the DNS message error is not NO_ERROR or error fieldin the TKEY record is not 0 (i.e. no error), then the client MUSTabandon this negotiation sequence. The client MUST delete an activecontext by calling GSS_Delete_sec_context providing the associatedcontext_handle. The client MAY repeat the negotiation sequence startingwith the uninitialized state as described in section 3.1. To preventinfinite looping the number of attempts to establish a security contextMUST be limited to ten or less.If the DNS message error is NO_ERROR and error filed in the TKEY recordis 0 (i.e. no error), then the client MUST pass a token specified in theKey Data field in the TKEY resource record to GSS_Init_sec_contextusing the same parameters values as in previous call except values forCONTEXT HANDLE input_context_handle and OCTET STRING input_token asdescribed below:Expires August 28, 2003 [Page 8]INTERNET-DRAFT GSS-TSIG February 28, 2003 INPUTS CONTEXT HANDLE input_context_handle = context_handle (this is the context_handle corresponding to the key_name which is the owner name of the TKEY record in the answer section in the TKEY query response) OCTET STRING input_token = token from Key field of TKEY recordDepending on the following OUTPUT values of GSS_Init_sec_context INTEGER major_status OCTET STRING output_tokenthe client MUST take one of the following actions:If OUTPUT major_status is set to one of the following values GSS_S_DEFECTIVE_TOKEN GSS_S_DEFECTIVE_CREDENTIAL GSS_S_BAD_SIG (GSS_S_BAD_MIC) GSS_S_NO_CRED GSS_S_CREDENTIALS_EXPIRED GSS_S_BAD_BINDINGS GSS_S_OLD_TOKEN GSS_S_DUPLICATE_TOKEN GSS_S_NO_CONTEXT GSS_S_BAD_NAMETYPE GSS_S_BAD_NAME GSS_S_BAD_MECH GSS_S_FAILUREthe client MUST abandon this negotiation sequence. This means that theclient MUST delete an active context by calling GSS_Delete_sec_contextproviding the associated context_handle. The client MAY repeat thenegotiation sequence starting with the uninitialized state as describedin section 3.1. To prevent infinite looping the number of attempts toestablish a security context MUST be limited to ten or less.If OUTPUT major_status is GSS_S_CONTINUE_NEEDED OR GSS_S_COMPLETE thenclient MUST act as described below.If the response from the server was signed, and the OUTPUT major_statusis GSS_S_COMPLETE,then the signature in the TSIG record MUST be verifiedusing the procedure detailed in section 5, Sending and Verifying SignedMessages. If the signature is invalid, then the client MUST abandon thisnegotiation sequence. This means that the client MUST delete an activecontext by calling GSS_Delete_sec_context providing the associatedcontext_handle. The client MAY repeat the negotiation sequence startingwith the uninitialized state as described in section 3.1. To preventinfinite looping the number of attempts to establish a security contextMUST be limited to ten or less.If major_status is GSS_S_CONTINUE_NEEDED the negotiation is not yetfinished. The token output_token MUST be passed to the server in a TKEYrecord by repeating the negotiation sequence beginning with sectionExpires August 28, 2003 [Page 9]INTERNET-DRAFT GSS-TSIG February 28, 20033.1.2. The client MUST place a limit on the number of continuations ina context negotiation to prevent endless looping. Such limit SHOULD NOTexceed value of 10.If major_status is GSS_S_COMPLETE and output_token is non-NULL, theclient-side component of the negotiation is complete but the tokenoutput_token MUST be passed to the server by repeating the negotiationsequence beginning with section 3.1.2.If major_status is GSS_S_COMPLETE and output_token is NULL, contextnegotiation is complete. The context state is advanced to ContextEstablished. Proceed to section 3.2 for usage of the security context.3.2 Context EstablishedWhen context negotiation is complete, the handle context_handle MUST beused for the generation and verification of transaction signatures.The procedures for sending and receiving signed messages are describedin section 5, Sending and Verifying Signed Messages.3.2.1 Terminating a ContextWhen the client is not intended to continue using the establishedsecurity context, the client SHOULD delete an active context bycalling GSS_Delete_sec_context providing the associated context_handle,AND client SHOULD delete the established context on the DNS serverby using TKEY RR with the Mode field set to 5, i.e. "key deletion"[RFC2930].4. Server Protocol DetailsAs on the client-side, the result of a successful context negotiationis a context handle used in future generation and verification of thetransaction signatures.A server MAY be managing several contexts with several clients.Clients identify their contexts by providing a key name in theirrequest. The server maintains a mapping of key names to handles: (key_name, context_handle)4.1 Negotiating ContextA server MUST recognize TKEY queries as security context negotiationmessages.Expires August 28, 2003 [Page 10]INTERNET-DRAFT GSS-TSIG February 28, 20034.1.1 Receive TKEY Query from ClientUpon receiving a query with QTYPE = TKEY, the server MUST examinewhether the Mode and Algorithm Name fields of the TKEY record in theadditional records section of the message contain values of 3 andgss-tsig, respectively. If they do, then the (key_name, context_handle)mapping table is searched for the key_name matching the owner name ofthe TKEY record in the additional records section of the query. If thename is found in the table and the security context for this name isestablished and not expired, then the server MUST respond to the querywith BADNAME error in the TKEY error field. If the name is found in thetable and the security context is not established, the correspondingcontext_handle is used in subsequent GSS operations. If the name isfound but the security context is expired, then the server deletes thissecurity context, as described in Section 4.2.1, and interprets thisquery as a start of new security context negotiation and performsoperations described in Section 4.1.2 and 4.1.3. If the name is notfound, then the server interprets this query as a start of new securitycontext negotiation and performs operations described in Section 4.1.2and 4.1.3.4.1.2 Call GSS_Accept_sec_contextThe server performs its side of a context negotiation by callingGSS_Accept_sec_context. The following input parameters MUST be used. Theoutcome of the call is indicated with the output values below. ConsultSections 2.2.2 "GSS_Accept_sec_context call" of the RFC 2743[RFC2743]for syntax definitions. INPUTS CONTEXT HANDLE input_context_handle = 0 if new negotiation,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -