[要約] RFC 8070は、Kerberosにおける初期認証のための公開鍵暗号化(PKINIT)の新鮮さ拡張に関するものです。このRFCの目的は、PKINITプロトコルに新鮮さ拡張を追加することで、セキュリティを向上させることです。

Internet Engineering Task Force (IETF)                     M. Short, Ed.
Request for Comments: 8070                                      S. Moore
Category: Standards Track                                      P. Miller
ISSN: 2070-1721                                    Microsoft Corporation
                                                           February 2017
        

Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) Freshness Extension

Kerberos(PKINIT)フレッシュネス拡張における初期認証のための公開鍵暗号

Abstract

概要

This document describes how to further extend the Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) extension (defined in RFC 4556) to exchange an opaque data blob that a Key Distribution Center (KDC) can validate to ensure that the client is currently in possession of the private key during a PKINIT Authentication Service (AS) exchange.

このドキュメントでは、Kerberos(PKINIT)拡張(RFC 4556で定義)の初期認証用の公開キー暗号化をさらに拡張して、キー配布センター(KDC)が検証してクライアントが現在存在することを確認できる不透明なデータBLOBを交換する方法について説明しますPKINIT認証サービス(AS)交換中の秘密鍵の所有。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc8070.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc8070で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2017 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびこの文書の発行日に有効なIETF文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象となります。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1. Introduction ....................................................2
      1.1. Kerberos Message Flow Using KRB_AS_REQ without
           Pre-authentication .........................................3
      1.2. Requirements Language ......................................3
   2. Message Exchanges ...............................................4
      2.1. Generation of KRB_AS_REQ Message ...........................4
      2.2. Generation of KRB_ERROR Message ............................4
      2.3. Generation of KRB_AS_REQ Message ...........................4
      2.4. Receipt of KRB_AS_REQ Message ..............................5
      2.5. Receipt of Second KRB_ERROR Message ........................5
   3. PreAuthentication Data Types ....................................5
   4. Extended PKAuthenticator ........................................6
   5. IANA Considerations .............................................6
   6. Security Considerations .........................................7
   7. Interoperability Considerations .................................7
   8. Normative References ............................................8
   Acknowledgements ...................................................8
   Authors' Addresses .................................................9
        
1. Introduction
1. はじめに

The Kerberos PKINIT extension [RFC4556] defines two schemes for using asymmetric cryptography in a Kerberos pre-authenticator. One uses Diffie-Hellman key exchange and the other depends on public key encryption. The public key encryption scheme is less commonly used for two reasons:

Kerberos PKINIT拡張[RFC4556]は、Kerberos事前認証で非対称暗号を使用するための2つのスキームを定義しています。 1つはDiffie-Hellman鍵交換を使用し、もう1つは公開鍵暗号化に依存しています。公開鍵暗号化スキームは、次の2つの理由であまり一般的に使用されていません。

o Elliptic Curve Cryptography (ECC) Support for PKINIT [RFC5349] only specified Elliptic Curve Diffie-Hellman (ECDH) key agreement, so it cannot be used for public key encryption.

o 楕円曲線暗号(ECC)のPKINIT [RFC5349]のサポートでは、楕円曲線Diffie-Hellman(ECDH)鍵協定のみが指定されているため、公開鍵暗号化には使用できません。

o Public key encryption requires certificates with an encryption key, which is not deployed on many existing smart cards.

o 公開キーの暗号化には、暗号化キーを含む証明書が必要です。これは、多くの既存のスマートカードに展開されていません。

In the Diffie-Hellman exchange, the client uses its private key only to sign the AuthPack structure (specified in Section 3.2.1 of [RFC4556]), which is performed before any traffic is sent to the KDC. Thus, a client can generate requests with future times in the PKAuthenticator, and then send those requests at those future times. Unless the time is outside the validity period of the client's certificate, the KDC will validate the PKAuthenticator and return a Ticket-Granting Ticket (TGT) the client can use without possessing the private key.

Diffie-Hellman交換では、クライアントは秘密鍵を使用してAuthPack構造([RFC4556]のセクション3.2.1で指定)に署名するだけであり、トラフィックがKDCに送信される前に実行されます。したがって、クライアントはPKAuthenticatorで将来の時刻を含む要求を生成し、それらの将来の時刻にそれらの要求を送信できます。時間がクライアントの証明書の有効期間外である場合を除き、KDCはPKAuthenticatorを検証し、秘密鍵を所持せずにクライアントが使用できるチケット許可チケット(TGT)を返します。

As a result, a client performing PKINIT with the Diffie-Hellman key exchange does not prove current possession of the private key being used for authentication. It proves only prior use of that key. Ensuring that the client has current possession of the private key requires that the signed PKAuthenticator data include information that the client could not have predicted.

その結果、Diffie-Hellman鍵交換でPKINITを実行するクライアントは、認証に使用されている秘密鍵の現在の所持を証明しません。それはその鍵の以前の使用のみを証明します。クライアントが現在秘密鍵を所有していることを確認するには、署名されたPKAuthenticatorデータにクライアントが予測できなかった情報が含まれている必要があります。

1.1. Kerberos Message Flow Using KRB_AS_REQ without Pre-authentication
1.1. 事前認証なしのKRB_AS_REQを使用したKerberosメッセージフロー

Today, password-based AS exchanges [RFC4120] often begin with the client sending a KRB_AS_REQ without pre-authentication. When the principal requires pre-authentication, the KDC responds with a KRB_ERROR containing information needed to complete an AS exchange, such as the supported encryption types and salt values. This message flow is illustrated below:

今日、パスワードベースのAS交換[RFC4120]は、多くの場合、事前認証なしでクライアントがKRB_AS_REQを送信することから始まります。プリンシパルが事前認証を必要とする場合、KDCは、サポートされている暗号化タイプやソルト値など、AS交換を完了するために必要な情報を含むKRB_ERRORで応答します。このメッセージフローを以下に示します。

Client KDC

KDCクライアント

   AS-REQ without pre-authentication     ---->
                                         <----     KRB-ERROR
        
   AS-REQ                                ---->
                                         <----     AS-REP
        
   TGS-REQ                               ---->
                                         <----     TGS-REP
        

Figure 1

図1

We can use a similar message flow with PKINIT, allowing the KDC to provide a token for the client to include in its KRB_AS_REQ to ensure that the PA_PK_AS_REQ [RFC4556] was not pre-generated.

PKINITで同様のメッセージフローを使用して、KDCがクライアントにKRB_AS_REQに含めるトークンを提供し、PA_PK_AS_REQ [RFC4556]が事前に生成されていないことを確認できます。

1.2. Requirements Language
1.2. 要件言語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

このドキュメントのキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、および「OPTIONAL」は、 [RFC2119]で説明されているように解釈されます。

2. Message Exchanges
2. メッセージ交換

The following summarizes the message flow with extensions to [RFC4120] and [RFC4556] required to support a KDC-provided freshness token during the initial request for a ticket:

以下は、チケットの最初のリクエスト中にKDC提供の鮮度トークンをサポートするために必要な[RFC4120]と[RFC4556]の拡張機能を備えたメッセージフローをまとめたものです。

1. The client generates a KRB_AS_REQ, as specified in Section 2.9.3 of [RFC4120], that contains no PA_PK_AS_REQ and includes a freshness token request.

1. [RFC4120]のセクション2.9.3で指定されているように、クライアントはKRB_AS_REQを生成します。これにはPA_PK_AS_REQが含まれず、フレッシュネストークンリクエストが含まれます。

2. The KDC generates a KRB_ERROR, as specified in Section 3.1.4 of [RFC4120], providing a freshness token.

2. [RFC4120]のセクション3.1.4で指定されているように、KDCはKRB_ERRORを生成し、鮮度トークンを提供します。

3. The client receives the error, as specified in Section 3.1.5 of [RFC4120], extracts the freshness token, and includes it as part of the KRB_AS_REQ as specified in [RFC4120] and [RFC4556].

3. [RFC4120]のセクション3.1.5で指定されているように、クライアントはエラーを受け取り、鮮度トークンを抽出し、[RFC4120]および[RFC4556]で指定されているようにKRB_AS_REQの一部としてそれを含めます。

4. The KDC receives and validates the KRB_AS_REQ, as specified in Section 3.2.2 of [RFC4556], then additionally validates the freshness token.

4. [RFC4556]のセクション3.2.2で指定されているように、KDCはKRB_AS_REQを受信して​​検証し、さらに鮮度トークンを検証します。

5. The KDC and client continue, as specified in [RFC4120] and [RFC4556].

5. [RFC4120]と[RFC4556]で指定されているように、KDCとクライアントは続行します。

2.1. Generation of KRB_AS_REQ Message
2.1. KRB_AS_REQメッセージの生成

The client indicates support of freshness tokens by adding a padata element with padata-type PA_AS_FRESHNESS and padata-value of an empty octet string.

クライアントは、padataタイプのPA_AS_FRESHNESSおよび空のオクテット文字列のpadata-valueを持つpadata要素を追加することにより、鮮度トークンのサポートを示します。

2.2. Generation of KRB_ERROR Message
2.2. KRB_ERRORメッセージの生成

The KDC will respond with a KRB_ERROR [RFC4120] message with the error-code KDC_ERR_PREAUTH_REQUIRED [RFC4120] adding a padata element with padata-type PA_AS_FRESHNESS and padata-value of the freshness token to the METHOD-DATA object.

KDCは、KRB_ERROR [RFC4120]メッセージで応答し、エラーコードKDC_ERR_PREAUTH_REQUIRED [RFC4120]で、padataタイプPA_AS_FRESHNESSとpadata-valueの鮮度トークンのpadata要素をMETHOD-DATAオブジェクトに追加します。

2.3. Generation of KRB_AS_REQ Message
2.3. KRB_AS_REQメッセージの生成

After the client receives the KRB-ERROR message containing a freshness token, it extracts the PA_AS_FRESHNESS padata-value field of the PA-DATA structure as an opaque data blob. The PA_AS_FRESHNESS padata-value field of the PA-DATA structure SHALL then be added as an opaque blob in the freshnessToken field when the client generates the PKAuthenticator specified in Section 4 for the PA_PK_AS_REQ message. This ensures that the freshness token value will be included in the signed data portion of the KRB_AS_REQ value.

クライアントは、鮮度トークンを含むKRB-ERRORメッセージを受信した後、PA-DATA構造のPA_AS_FRESHNESS padata-valueフィールドを不透明なデータBLOBとして抽出します。次に、クライアントがPA_PK_AS_REQメッセージのセクション4で指定されたPKAuthenticatorを生成するときに、PA-DATA構造のPA_AS_FRESHNESS padata-valueフィールドを不透明度blobとしてfreshnessTokenフィールドに追加する必要があります。これにより、鮮度トークン値がKRB_AS_REQ値の署名済みデータ部分に含まれるようになります。

2.4. Receipt of KRB_AS_REQ Message
2.4. KRB_AS_REQメッセージの受信

If the realm requires freshness and the PA_PK_AS_REQ message does not contain the freshness token, the KDC MUST return a KRB_ERROR [RFC4120] message with the error-code KDC_ERR_PREAUTH_FAILED [RFC4120] with a padata element with padata-type PA_AS_FRESHNESS and padata-value of the freshness token to the METHOD-DATA object.

レルムがフレッシュネスを必要とし、PA_PK_AS_REQメッセージにフレッシュネストークンが含まれていない場合、KDCは、padata-type PA_AS_FRESHNESSおよびpadata-value of METHOD-DATAオブジェクトへの鮮度トークン。

When the PA_PK_AS_REQ message contains a freshness token, after validating the PA_PK_AS_REQ message normally, the KDC will validate the freshnessToken value in the PKAuthenticator in an implementation-specific way. If the freshness token is not valid, the KDC MUST return a KRB_ERROR [RFC4120] message with the error-code KDC_ERR_PREAUTH_EXPIRED [RFC6113]. The e-data field of the error contains a METHOD-DATA object [RFC4120], which specifies a valid PA_AS_FRESHNESS padata-value. Since the freshness tokens are validated by KDCs in the same realm, standardizing the contents of the freshness token is not a concern for interoperability.

PA_PK_AS_REQメッセージにフレッシュネストークンが含まれている場合、PA_PK_AS_REQメッセージを正常に検証した後、KDCは実装固有の方法でPKAuthenticatorのfreshnessToken値を検証します。フレッシュネストークンが有効でない場合、KDCはエラーコードKDC_ERR_PREAUTH_EXPIRED [RFC6113]を含むKRB_ERROR [RFC4120]メッセージを返さなければなりません(MUST)。エラーのe-dataフィールドには、有効なPA_AS_FRESHNESS padata-valueを指定するMETHOD-DATAオブジェクト[RFC4120]が含まれています。フレッシュネストークンは同じレルムのKDCによって検証されるため、フレッシュネストークンの内容を標準化することは相互運用性の問題ではありません。

2.5. Receipt of Second KRB_ERROR Message
2.5. 2番目のKRB_ERRORメッセージの受信

If a client receives a KDC_ERR_PREAUTH_EXPIRED KRB_ERROR message that includes a freshness token, it SHOULD retry using the new freshness token.

クライアントがフレッシュネストークンを含むKDC_ERR_PREAUTH_EXPIRED KRB_ERRORメッセージを受信した場合、新しいフレッシュネストークンを使用して再試行する必要があります。

3. PreAuthentication Data Types
3. 事前認証データ型

The following are the new PreAuthentication data types:

新しいPreAuthenticationデータ型は次のとおりです。

               +----------------------+-------------------+
               | Padata and Data Type | Padata-type Value |
               +----------------------+-------------------+
               |   PA_AS_FRESHNESS    |        150        |
               +----------------------+-------------------+
        
4. Extended PKAuthenticator
4. 拡張PKAuthenticator

The PKAuthenticator structure specified in Section 3.2.1 of [RFC4556] is extended to include a new freshnessToken as follows:

[RFC4556]のセクション3.2.1で指定されたPKAuthenticator構造が拡張され、次のように新しいfreshnessTokenが含まれるようになりました。

   PKAuthenticator ::= SEQUENCE {
      cusec        [0] INTEGER (0..999999),
      ctime        [1] KerberosTime,
                -- cusec and ctime are used as in [RFC4120], for
                -- replay prevention.
      nonce        [2] INTEGER (0..4294967295),
                -- Chosen randomly;  this nonce does not need to
                -- match with the nonce in the KDC-REQ-BODY.
      paChecksum   [3] OCTET STRING OPTIONAL,
                -- MUST be present.
                -- Contains the SHA1 checksum, performed over
                -- KDC-REQ-BODY.
      ...,
      freshnessToken     [4] OCTET STRING OPTIONAL,
                -- PA_AS_FRESHNESS padata value as received from the
                -- KDC. MUST be present if sent by KDC
      ...
   }
        
5. IANA Considerations
5. IANAに関する考慮事項

IANA has assigned numbers for PA_AS_FRESHNESS listed in a subregistry of the "Kerberos Parameters" registry titled "Pre-authentication and Typed Data" as follows:

IANAは、「事前認証と型付きデータ」というタイトルの「Kerberosパラメータ」レジストリのサブレジストリにリストされているPA_AS_FRESHNESSに次の番号を割り当てました。

                  +------+-----------------+-----------+
                  | Type |      Value      | Reference |
                  +------+-----------------+-----------+
                  | 150  | PA_AS_FRESHNESS | [RFC8070] |
                  +------+-----------------+-----------+
        
6. Security Considerations
6. セキュリティに関する考慮事項

The freshness token SHOULD include signing, encrypting, or sealing data from the KDC to determine authenticity and prevent tampering.

鮮度トークンには、KDCからのデータの署名、暗号化、または封印を含めて、信頼性を判断し、改ざんを防止する必要があります。

Freshness tokens serve to guarantee that the client had the key when constructing the AS-REQ. They are not required to be single use tokens or bound to specific AS exchanges. Part of the reason the token is opaque is to allow KDC implementers the freedom to add additional functionality as long as the tokens expire so that the "freshness" guarantee remains.

フレッシュネストークンは、AS-REQを構築するときにクライアントがキーを持っていることを保証するのに役立ちます。それらは、使い捨てトークンである必要も、特定のAS交換にバインドされる必要もありません。トークンが不透明である理由の1つは、KDCの実装者が、トークンの有効期限が切れる限り追加機能を自由に追加できるようにすることです。

7. Interoperability Considerations
7. 相互運用性に関する考慮事項

Since the client treats the KDC-provided data blob as opaque, changing the contents will not impact existing clients. Thus, extensions to the freshness token do not impact client interoperability.

クライアントはKDC提供のデータBLOBを不透明として扱うため、内容を変更しても既存のクライアントには影響しません。したがって、鮮度トークンの拡張はクライアントの相互運用性に影響を与えません。

Clients SHOULD NOT reuse freshness tokens across multiple exchanges. There is no guarantee that a KDC will allow a once-valid token to be used again. Thus, clients that do not retry with a new freshness token may not be compatible with KDCs, depending on how they choose to implement freshness validation.

クライアントは、複数の交換でフレッシュネストークンを再利用しないでください。 KDCが一度有効になったトークンを再度使用できることを保証するものではありません。したがって、新しいフレッシュネストークンで再試行しないクライアントは、フレッシュネス検証の実装方法によっては、KDCと互換性がない場合があります。

Since upgrading clients takes time, implementers may consider allowing both freshness-token based exchanges and "legacy" exchanges without use of freshness tokens. However, until freshness tokens are required by the realm, the existing risks of pre-generated PKAuthenticators will remain.

クライアントのアップグレードには時間がかかるため、実装者は、フレッシュネストークンを使用せずに、フレッシュネストークンベースの交換と「レガシー」交換の両方を許可することを検討する場合があります。ただし、鮮度トークンがレルムで必要になるまで、事前に生成されたPKAuthenticatorsの既存のリスクは残ります。

8. Normative References
8. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<http://www.rfc-editor.org/info/ rfc2119>。

[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos Network Authentication Service (V5)", RFC 4120, DOI 10.17487/RFC4120, July 2005, <http://www.rfc-editor.org/info/rfc4120>.

[RFC4120] Neuman、C.、Yu、T.、Hartman、S。、およびK. Raeburn、「The Kerberos Network Authentication Service(V5)」、RFC 4120、DOI 10.17487 / RFC4120、2005年7月、<http:// www.rfc-editor.org/info/rfc4120>。

[RFC4556] Zhu, L. and B. Tung, "Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)", RFC 4556, DOI 10.17487/RFC4556, June 2006, <http://www.rfc-editor.org/info/rfc4556>.

[RFC4556] Zhu、L。およびB. Tung、「Kerberosでの初期認証のための公開鍵暗号(PKINIT)」、RFC 4556、DOI 10.17487 / RFC4556、2006年6月、<http://www.rfc-editor.org/ info / rfc4556>。

[RFC5349] Zhu, L., Jaganathan, K., and K. Lauter, "Elliptic Curve Cryptography (ECC) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)", RFC 5349, DOI 10.17487/RFC5349, September 2008, <http://www.rfc-editor.org/info/rfc5349>.

[RFC5349] Zhu、L.、Jaganathan、K。、およびK. Lauter、「楕円曲線暗号(ECC)による、Kerberosでの初期認証のための公開鍵暗号(PKINIT)のサポート」、RFC 5349、DOI 10.17487 / RFC5349、2008年9月、<http://www.rfc-editor.org/info/rfc5349>。

[RFC6113] Hartman, S. and L. Zhu, "A Generalized Framework for Kerberos Pre-Authentication", RFC 6113, DOI 10.17487/RFC6113, April 2011, <http://www.rfc-editor.org/info/rfc6113>.

[RFC6113] Hartman、S。およびL. Zhu、「A Kerberos Pre-Authenticationの一般化されたフレームワーク」、RFC 6113、DOI 10.17487 / RFC6113、2011年4月、<http://www.rfc-editor.org/info/rfc6113 >。

Acknowledgements

謝辞

Douglas E. Engert, Sam Hartman, Henry B. Hotz, Nikos Mavrogiannopoulos, Martin Rex, Nico Williams, and Tom Yu were key contributors to the discovery of the freshness issue in PKINIT.

Douglas E. Engert、Sam Hartman、Henry B. Hotz、Nikos Mavrogiannopoulos、Martin Rex、Nico Williams、Tom Yuは、PKINITの鮮度の問題の発見に大きく貢献しました。

Sam Hartman, Greg Hudson, Jeffrey Hutzelman, Nathan Ide, Benjamin Kaduk, Bryce Nordgren, Magnus Nystrom, Nico Williams, and Tom Yu reviewed the document and provided suggestions for improvements.

Sam Hartman、Greg Hudson、Jeffrey Hutzelman、Nathan Ide、Benjamin Kaduk、Bryce Nordgren、Magnus Nystrom、Nico Williams、Tom Yuがドキュメントをレビューし、改善のための提案を行いました。

Authors' Addresses

著者のアドレス

Michiko Short (editor) Microsoft Corporation United States of America

Michiko Short(editor)Microsoft Corporation United States of America

   Email: michikos@microsoft.com
        

Seth Moore Microsoft Corporation United States of America

セスムーアマイクロソフトコーポレーションアメリカ合衆国

   Email: sethmo@microsoft.com
        

Paul Miller Microsoft Corporation United States of America

ポールミラーマイクロソフトコーポレーションアメリカ合衆国

   Email: paumil@microsoft.com