[要約] RFC 5802は、SCRAM SASLおよびGSS-APIメカニズムに関する仕様であり、認証メカニズムのセキュリティを向上させるためにソルトを使用します。目的は、安全な認証プロトコルを提供し、パスワードの保護と認証の強化を実現することです。

Internet Engineering Task Force (IETF)                         C. Newman
Request for Comments: 5802                                        Oracle
Category: Standards Track                                   A. Menon-Sen
ISSN: 2070-1721                                   Oryx Mail Systems GmbH
                                                             A. Melnikov
                                                             Isode, Ltd.
                                                             N. Williams
                                                                  Oracle
                                                               July 2010
        

Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms

塩ングチャレンジ応答認証メカニズム(スクラム)SASLおよびGSS-APIメカニズム

Abstract

概要

The secure authentication mechanism most widely deployed and used by Internet application protocols is the transmission of clear-text passwords over a channel protected by Transport Layer Security (TLS). There are some significant security concerns with that mechanism, which could be addressed by the use of a challenge response authentication mechanism protected by TLS. Unfortunately, the challenge response mechanisms presently on the standards track all fail to meet requirements necessary for widespread deployment, and have had success only in limited use.

インターネットアプリケーションプロトコルによって最も広く展開および使用される安全な認証メカニズムは、Transport Layer Security(TLS)によって保護されているチャネル上のクリアテキストパスワードの送信です。そのメカニズムにはいくつかの重要なセキュリティ上の懸念があり、TLSによって保護されているチャレンジ応答認証メカニズムの使用によって対処できます。残念ながら、現在標準追跡のチャレンジ応答メカニズムは、すべての展開に必要な要件を満たすことができず、限られた使用のみで成功しています。

This specification describes a family of Simple Authentication and Security Layer (SASL; RFC 4422) authentication mechanisms called the Salted Challenge Response Authentication Mechanism (SCRAM), which addresses the security concerns and meets the deployability requirements. When used in combination with TLS or an equivalent security layer, a mechanism from this family could improve the status quo for application protocol authentication and provide a suitable choice for a mandatory-to-implement mechanism for future application protocol standards.

この仕様では、セキュリティの懸念に対処し、展開要件を満たす、塩分チャレンジ応答認証メカニズム(SCRAM)と呼ばれる、単純な認証とセキュリティレイヤー(SASL; RFC 4422)認証メカニズムのファミリーについて説明します。TLSまたは同等のセキュリティレイヤーと組み合わせて使用すると、このファミリからのメカニズムは、アプリケーションプロトコル認証の現状を改善し、将来のアプリケーションプロトコル標準の必須メカニズムに適した選択肢を提供できます。

Status of This Memo

本文書の位置付け

This is an Internet Standards Track document.

これは、インターネット標準トラックドキュメントです。

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 5741.

このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 5741のセクション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/rfc5802.

このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、http://www.rfc-editor.org/info/rfc5802で取得できます。

Copyright Notice

著作権表示

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

Copyright(c)2010 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ドキュメント(http://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、単純化されたBSDライセンスで説明されているように保証なしで提供される簡略化されたBSDライセンステキストを含める必要があります。

Table of Contents

目次

   1. Introduction ....................................................4
   2. Conventions Used in This Document ...............................5
      2.1. Terminology ................................................5
      2.2. Notation ...................................................6
   3. SCRAM Algorithm Overview ........................................7
   4. SCRAM Mechanism Names ...........................................8
   5. SCRAM Authentication Exchange ...................................9
      5.1. SCRAM Attributes ..........................................10
      5.2. Compliance with SASL Mechanism Requirements ...............13
   6. Channel Binding ................................................14
      6.1. Default Channel Binding ...................................15
   7. Formal Syntax ..................................................15
   8. SCRAM as a GSS-API Mechanism ...................................19
      8.1. GSS-API Principal Name Types for SCRAM ....................19
      8.2. GSS-API Per-Message Tokens for SCRAM ......................20
      8.3. GSS_Pseudo_random() for SCRAM .............................20
   9. Security Considerations ........................................20
   10. IANA Considerations ...........................................22
   11. Acknowledgements ..............................................23
   12. References ....................................................24
      12.1. Normative References .....................................24
      12.2. Normative References for GSS-API Implementors ............24
      12.3. Informative References ...................................25
   Appendix A. Other Authentication Mechanisms .......................27
   Appendix B. Design Motivations ....................................27
        
1. Introduction
1. はじめに

This specification describes a family of authentication mechanisms called the Salted Challenge Response Authentication Mechanism (SCRAM) which addresses the requirements necessary to deploy a challenge-response mechanism more widely than past attempts (see Appendix A and Appendix B). When used in combination with Transport Layer Security (TLS; see [RFC5246]) or an equivalent security layer, a mechanism from this family could improve the status quo for application protocol authentication and provide a suitable choice for a mandatory-to-implement mechanism for future application protocol standards.

この仕様では、過去の試みよりも広く課題反応メカニズムを展開するために必要な要件に対処する塩分チャレンジ応答認証メカニズム(SCRAM)と呼ばれる認証メカニズムのファミリーについて説明します(付録Aおよび付録Bを参照)。輸送層のセキュリティ(TLS; [RFC5246]を参照)または同等のセキュリティレイヤーと組み合わせて使用すると、このファミリからのメカニズムは、アプリケーションプロトコル認証の現状を改善し、義務的な実装メカニズムに適した選択を提供できます。将来のアプリケーションプロトコル標準。

For simplicity, this family of mechanisms does not presently include negotiation of a security layer [RFC4422]. It is intended to be used with an external security layer such as that provided by TLS or SSH, with optional channel binding [RFC5056] to the external security layer.

簡単にするために、このメカニズムのファミリには現在、セキュリティ層の交渉は含まれていません[RFC4422]。これは、TLSまたはSSHによって提供されるような外部セキュリティレイヤーで使用され、オプションのチャネル結合[RFC5056]が外部セキュリティレイヤーに使用されることを目的としています。

SCRAM is specified herein as a pure Simple Authentication and Security Layer (SASL) [RFC4422] mechanism, but it conforms to the new bridge between SASL and the Generic Security Service Application Program Interface (GSS-API) called "GS2" [RFC5801]. This means that this document defines both, a SASL mechanism and a GSS-API mechanism.

ここでは、純粋な単純な認証とセキュリティレイヤー(SASL)[RFC4422]メカニズムとして指定されていますが、SASLと「GS2」[RFC5801]と呼ばれる一般的なセキュリティサービスアプリケーションプログラムインターフェイス(GSS-API)の間の新しいブリッジに適合します。これは、このドキュメントがSASLメカニズムとGSS-APIメカニズムの両方を定義することを意味します。

SCRAM provides the following protocol features:

スクラムは次のプロトコル機能を提供します。

o The authentication information stored in the authentication database is not sufficient by itself to impersonate the client. The information is salted to prevent a pre-stored dictionary attack if the database is stolen.

o 認証データベースに保存されている認証情報は、クライアントになりすましても十分ではありません。データベースが盗まれた場合、事前に保存された辞書攻撃を防ぐために情報は塩漬けです。

o The server does not gain the ability to impersonate the client to other servers (with an exception for server-authorized proxies).

o サーバーは、クライアントを他のサーバーに偽装する機能を獲得しません(サーバーが許可されたプロキシを除く)。

o The mechanism permits the use of a server-authorized proxy without requiring that proxy to have super-user rights with the back-end server.

o このメカニズムは、プロキシがバックエンドサーバーでスーパーユーザーの権利を持つことを要求することなく、サーバーを許可するプロキシの使用を可能にします。

o Mutual authentication is supported, but only the client is named (i.e., the server has no name).

o 相互認証はサポートされていますが、クライアントのみが名前が付けられています(つまり、サーバーには名前がありません)。

o When used as a SASL mechanism, SCRAM is capable of transporting authorization identities (see [RFC4422], Section 2) from the client to the server.

o SASLメカニズムとして使用される場合、スクラムは、クライアントからサーバーに承認のアイデンティティ([RFC4422]、セクション2を参照)を輸送することができます。

A separate document defines a standard LDAPv3 [RFC4510] attribute that enables storage of the SCRAM authentication information in LDAP. See [RFC5803].

個別のドキュメントは、LDAPでのスクラム認証情報の保存を有効にする標準のLDAPV3 [RFC4510]属性を定義します。[RFC5803]を参照してください。

For an in-depth discussion of why other challenge response mechanisms are not considered sufficient, see Appendix A. For more information about the motivations behind the design of this mechanism, see Appendix B.

他のチャレンジ応答メカニズムが十分でない理由についての詳細な説明については、付録Aを参照してください。このメカニズムの設計の背後にある動機の詳細については、付録Bを参照してください。

2. Conventions Used in This Document
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].

「必須」、「そうしない」、「必須」、「必要」、「しない」、「そうしない」、「そうではない」、「そうでない」、「推奨」、「5月」、および「オプション」は、[RFC2119]に記載されているように解釈される。

Formal syntax is defined by [RFC5234] including the core rules defined in Appendix B of [RFC5234].

正式な構文は、[RFC5234]の付録Bで定義されているコアルールを含む[RFC5234]で定義されます。

Example lines prefaced by "C:" are sent by the client and ones prefaced by "S:" by the server. If a single "C:" or "S:" label applies to multiple lines, then the line breaks between those lines are for editorial clarity only, and are not part of the actual protocol exchange.

「c:」で前飾られた行の例は、クライアントによって送信され、「s:」がサーバーによって前に送られます。単一の「c:」または「s:」が複数の行に適用される場合、それらの線の間の線が編集の明確さのみであり、実際のプロトコル交換の一部ではありません。

2.1. Terminology
2.1. 用語

This document uses several terms defined in [RFC4949] ("Internet Security Glossary") including the following: authentication, authentication exchange, authentication information, brute force, challenge-response, cryptographic hash function, dictionary attack, eavesdropping, hash result, keyed hash, man-in-the-middle, nonce, one-way encryption function, password, replay attack, and salt. Readers not familiar with these terms should use that glossary as a reference.

このドキュメントでは、以下を含む[RFC4949](「インターネットセキュリティ用語集」)で定義されたいくつかの用語を使用します:認証、認証交換、認証情報、ブルートフォース、チャレンジ応答、暗号化ハッシュ機能、辞書攻撃、盗聴、ハッシュ結果、キー付きハッシュハッシュ、中間の中間、nonce、一方向暗号化機能、パスワード、リプレイ攻撃、塩。これらの用語に精通していない読者は、その用語集を参照として使用する必要があります。

Some clarifications and additional definitions follow:

いくつかの明確化と追加の定義が次のとおりです。

o Authentication information: Information used to verify an identity claimed by a SCRAM client. The authentication information for a SCRAM identity consists of salt, iteration count, "StoredKey" and "ServerKey" (as defined in the algorithm overview) for each supported cryptographic hash function.

o 認証情報:スクラムクライアントが請求された身元を確認するために使用される情報。スクラムアイデンティティの認証情報は、塩、反復カウント、「StoredKey」、および「ServerKey」(アルゴリズムの概要で定義されている)で構成されています。

o Authentication database: The database used to look up the authentication information associated with a particular identity. For application protocols, LDAPv3 (see [RFC4510]) is frequently used as the authentication database. For network-level protocols such as PPP or 802.11x, the use of RADIUS [RFC2865] is more common.

o 認証データベース:特定のIDに関連付けられた認証情報を検索するために使用されるデータベース。アプリケーションプロトコルの場合、LDAPV3([RFC4510]を参照)は、認証データベースとして頻繁に使用されます。PPPや802.11xなどのネットワークレベルのプロトコルの場合、RADIUS [RFC2865]の使用がより一般的です。

o Base64: An encoding mechanism defined in [RFC4648] that converts an octet string input to a textual output string that can be easily displayed to a human. The use of base64 in SCRAM is restricted to the canonical form with no whitespace.

o base64:[RFC4648]で定義されたエンコードメカニズムは、オクテット文字列の入力をテキスト出力文字列に変換し、それを人間に簡単に表示できます。ScramでのBase64の使用は、空白のない標準形式に制限されています。

o Octet: An 8-bit byte.

o Octet:8ビットバイト。

o Octet string: A sequence of 8-bit bytes.

o Octet String:8ビットバイトのシーケンス。

o Salt: A random octet string that is combined with a password before applying a one-way encryption function. This value is used to protect passwords that are stored in an authentication database.

o 塩:一方向暗号化関数を適用する前にパスワードと組み合わせるランダムなオクテット文字列。この値は、認証データベースに保存されているパスワードを保護するために使用されます。

2.2. Notation
2.2. 表記

The pseudocode description of the algorithm uses the following notations:

アルゴリズムの擬似コードの説明は、次の表記を使用します。

o ":=": The variable on the left-hand side represents the octet string resulting from the expression on the right-hand side.

o ":=":左側の変数は、右側の式から生じるオクテット文字列を表します。

o "+": Octet string concatenation.

o "":Octet Stringの連結。

o "[ ]": A portion of an expression enclosed in "[" and "]" may not be included in the result under some circumstances. See the associated text for a description of those circumstances.

o 「[]」:「["と"]に囲まれた式の一部は、状況によっては結果に含まれない場合があります。これらの状況の説明については、関連するテキストを参照してください。

o Normalize(str): Apply the SASLprep profile [RFC4013] of the "stringprep" algorithm [RFC3454] as the normalization algorithm to a UTF-8 [RFC3629] encoded "str". The resulting string is also in UTF-8. When applying SASLprep, "str" is treated as a "stored strings", which means that unassigned Unicode codepoints are prohibited (see Section 7 of [RFC3454]). Note that implementations MUST either implement SASLprep or disallow use of non US-ASCII Unicode codepoints in "str".

o 正規化(STR):「StringPrep」アルゴリズム[RFC3454]のSASLPREPプロファイル[RFC4013]を、正規化アルゴリズムとしてUTF-8 [RFC3629]を「STR」とエンコードします。結果の文字列もUTF-8です。SASLPREPを適用する場合、「STR」は「保存された文字列」として扱われます。つまり、未割り当てのユニコードコードポイントは禁止されています([RFC3454]のセクション7を参照)。実装は、「str」で非us-asciiユニコードコードポイントのSASLPrepを実装するか、禁止する必要があることに注意してください。

o HMAC(key, str): Apply the HMAC keyed hash algorithm (defined in [RFC2104]) using the octet string represented by "key" as the key and the octet string "str" as the input string. The size of the result is the hash result size for the hash function in use. For example, it is 20 octets for SHA-1 (see [RFC3174]).

o HMAC(キー、STR):「キー」で表されるオクテット文字列をキーとして表現し、オクテット文字列「str」を入力文字列として表現するHMACキー付きハッシュアルゴリズム([RFC2104]で定義)を適用します。結果のサイズは、使用中のハッシュ関数のハッシュ結果サイズです。たとえば、SHA-1の20オクテットです([RFC3174]を参照)。

o H(str): Apply the cryptographic hash function to the octet string "str", producing an octet string as a result. The size of the result depends on the hash result size for the hash function in use.

o H(str):暗号化ハッシュ関数をOctet string "str"に適用し、結果としてOctet Stringを生成します。結果のサイズは、使用中のハッシュ関数のハッシュ結果サイズに依存します。

o XOR: Apply the exclusive-or operation to combine the octet string on the left of this operator with the octet string on the right of this operator. The length of the output and each of the two inputs will be the same for this use.

o XOR:排他的または操作を適用して、この演算子の左側のオクテット文字列をこの演算子の右側のオクテット文字列と組み合わせます。出力の長さと2つの入力のそれぞれは、この使用に対して同じです。

o Hi(str, salt, i):

o こんにちは(str、塩、i):

     U1   := HMAC(str, salt + INT(1))
     U2   := HMAC(str, U1)
     ...
     Ui-1 := HMAC(str, Ui-2)
     Ui   := HMAC(str, Ui-1)
        

Hi := U1 XOR U2 XOR ... XOR Ui

こんにちは:= u1 xor u2 xor ... xor ui

where "i" is the iteration count, "+" is the string concatenation operator, and INT(g) is a 4-octet encoding of the integer g, most significant octet first.

ここで、「i」は反復カウントです」、「文字列連結演算子、int(g)は整数Gの4オクテットエンコードであり、最初に最も重要なオクテットです。

Hi() is, essentially, PBKDF2 [RFC2898] with HMAC() as the pseudorandom function (PRF) and with dkLen == output length of HMAC() == output length of H().

hi()は、基本的に、pbkdf2 [rfc2898]を擬似ランダム関数(PRF)として、およびdklen == hmac()==出力のh()のdklen ==出力長です。

3. SCRAM Algorithm Overview
3. スクラムアルゴリズムの概要

The following is a description of a full, uncompressed SASL SCRAM authentication exchange. Nothing in SCRAM prevents either sending the client-first message with the SASL authentication request defined by an application protocol ("initial client response"), or sending the server-final message as additional data of the SASL outcome of authentication exchange defined by an application protocol. See [RFC4422] for more details.

以下は、完全で圧縮されていないSASLスクラム認証交換の説明です。スクラムのいずれも、アプリケーションプロトコル(「初期クライアント応答」)で定義されたSASL認証要求を使用してクライアントファーストメッセージを送信すること、またはアプリケーションで定義された認証交換のSASLアウトカムの追加データとしてサーバーファイナルメッセージを送信することはありません。プロトコル。詳細については、[RFC4422]を参照してください。

Note that this section omits some details, such as client and server nonces. See Section 5 for more details.

このセクションでは、クライアントやサーバーのnoncesなどの詳細を省略していることに注意してください。詳細については、セクション5を参照してください。

To begin with, the SCRAM client is in possession of a username and password (*) (or a ClientKey/ServerKey, or SaltedPassword). It sends the username to the server, which retrieves the corresponding authentication information, i.e., a salt, StoredKey, ServerKey, and the iteration count i. (Note that a server implementation may choose to use the same iteration count for all accounts.) The server sends the salt and the iteration count to the client, which then computes the following values and sends a ClientProof to the server:

そもそも、スクラムクライアントはユーザー名とパスワード(*)(またはclientkey/serverkey、またはsaltedpassword)を所有しています。ユーザー名をサーバーに送信し、対応する認証情報、つまり塩、StoredKey、ServerKey、および反復カウントiを取得します。(サーバーの実装は、すべてのアカウントで同じ反復カウントを使用することを選択する場合があることに注意してください。)サーバーは、クライアントに塩と反復カウントを送信し、次の値を計算し、サーバーにクライアントプルーフを送信します。

(*) Note that both the username and the password MUST be encoded in UTF-8 [RFC3629].

(*)ユーザー名とパスワードの両方がUTF-8 [RFC3629]でエンコードする必要があることに注意してください。

Informative Note: Implementors are encouraged to create test cases that use both usernames and passwords with non-ASCII codepoints. In particular, it's useful to test codepoints whose "Unicode Normalization Form C" and "Unicode Normalization Form KC" are different. Some examples of such codepoints include Vulgar Fraction One Half (U+00BD) and Acute Accent (U+00B4).

有益なメモ:実装者は、非ASCIIコードポイントでユーザー名とパスワードの両方を使用するテストケースを作成することをお勧めします。特に、「ユニコード正規化フォームC」と「ユニコード正規化形式KC」が異なるコードポイントをテストすると便利です。このようなコードポイントの例には、下品な分数(u 00bd)および急性アクセント(u 00b4)が含まれます。

     SaltedPassword  := Hi(Normalize(password), salt, i)
     ClientKey       := HMAC(SaltedPassword, "Client Key")
     StoredKey       := H(ClientKey)
     AuthMessage     := client-first-message-bare + "," +
                        server-first-message + "," +
                        client-final-message-without-proof
     ClientSignature := HMAC(StoredKey, AuthMessage)
     ClientProof     := ClientKey XOR ClientSignature
     ServerKey       := HMAC(SaltedPassword, "Server Key")
     ServerSignature := HMAC(ServerKey, AuthMessage)
        

The server authenticates the client by computing the ClientSignature, exclusive-ORing that with the ClientProof to recover the ClientKey and verifying the correctness of the ClientKey by applying the hash function and comparing the result to the StoredKey. If the ClientKey is correct, this proves that the client has access to the user's password.

サーバーは、クライアントの署名を計算することによりクライアントを認証し、クライアントキーを回復するためにクライアントプルーフを排除し、ハッシュ関数を適用して結果をStoredKeyと比較することにより、クライアントキーの正しさを検証します。ClientKeyが正しい場合、これはクライアントがユーザーのパスワードにアクセスできることを証明します。

Similarly, the client authenticates the server by computing the ServerSignature and comparing it to the value sent by the server. If the two are equal, it proves that the server had access to the user's ServerKey.

同様に、クライアントはサーバーをServersignatureを計算し、サーバーから送信した値と比較することにより、サーバーを認証します。2つが等しい場合、サーバーがユーザーのサーバーキーにアクセスできることを証明します。

The AuthMessage is computed by concatenating messages from the authentication exchange. The format of these messages is defined in Section 7.

AuthMessageは、認証交換からメッセージを連結することによって計算されます。これらのメッセージの形式は、セクション7で定義されています。

4. SCRAM Mechanism Names
4. スクラムメカニズム名

A SCRAM mechanism name is a string "SCRAM-" followed by the uppercased name of the underlying hash function taken from the IANA "Hash Function Textual Names" registry (see http://www.iana.org), optionally followed by the suffix "-PLUS" (see below). Note that SASL mechanism names are limited to 20 octets, which means that only hash function names with lengths shorter or equal to 9 octets (20-length("SCRAM-")-length("-PLUS") can be used. For cases when the underlying hash function name is longer than 9 octets, an alternative 9-octet (or shorter) name can be used to construct the corresponding SCRAM mechanism name, as long as this alternative name doesn't conflict with any other hash function name from the IANA "Hash Function Textual Names" registry. In order to prevent future conflict, such alternative names SHOULD be registered in the IANA "Hash Function Textual Names" registry.

スクラムメカニズム名は文字列「スクラム」です。その後、IANA「ハッシュ関数のテキスト名」レジストリ(http://www.iana.orgを参照)から取得した基礎となるハッシュ関数の上級名が続きます。"-plus"(以下を参照)。SASLメカニズム名は20オクテットに制限されていることに注意してください。つまり、9オクテット(20長さ( "scram-") - 長さ( " - プラス")が短いまたは等しい長さのハッシュ関数名のみが使用できます。ケースの場合は使用できます。基礎となるハッシュ関数名が9オクテットよりも長い場合、この代替名が他のハッシュ関数名と矛盾しない限り、対応するスクラムメカニズム名を構築するために、代替の9オクテット(または短い)名を使用できます。IANA「ハッシュ関数テキスト名」レジストリ。将来の競合を防ぐために、そのような代替名はIANA「ハッシュ関数テキスト名」レジストリに登録する必要があります。

For interoperability, all SCRAM clients and servers MUST implement the SCRAM-SHA-1 authentication mechanism, i.e., an authentication mechanism from the SCRAM family that uses the SHA-1 hash function as defined in [RFC3174].

相互運用性のために、すべてのスクラムクライアントとサーバーは、[RFC3174]で定義されているSHA-1ハッシュ関数を使用するスクラムファミリーの認証メカニズム、つまり[RFC3174]でsha-1ハッシュ機能を実装する必要があります。

The "-PLUS" suffix is used only when the server supports channel binding to the external channel. If the server supports channel binding, it will advertise both the "bare" and "plus" versions of whatever mechanisms it supports (e.g., if the server supports only SCRAM with SHA-1, then it will advertise support for both SCRAM-SHA-1 and SCRAM-SHA-1-PLUS). If the server does not support channel binding, then it will advertise only the "bare" version of the mechanism (e.g., only SCRAM-SHA-1). The "-PLUS" exists to allow negotiation of the use of channel binding. See Section 6.

「-plus」接尾辞は、サーバーが外部チャネルへのチャネルバインディングをサポートする場合にのみ使用されます。サーバーがチャネルバインディングをサポートする場合、サポートするあらゆるメカニズムの「ベア」バージョンと「プラス」バージョンの両方を宣伝します(たとえば、サーバーがSHA-1でスクラムのみをサポートする場合、Scram-Sha-の両方のサポートを宣伝します。1およびSCRAM-SHA-1-PLUS)。サーバーがチャネルバインディングをサポートしていない場合、メカニズムの「裸の」バージョンのみを宣伝します(たとえば、Scram-Sha-1のみ)。「-Plus」は、チャネルバインディングの使用の交渉を可能にするために存在します。セクション6を参照してください。

5. SCRAM Authentication Exchange
5. スクラム認証交換

SCRAM is a SASL mechanism whose client response and server challenge messages are text-based messages containing one or more attribute-value pairs separated by commas. Each attribute has a one-letter name. The messages and their attributes are described in Section 5.1, and defined in Section 7.

スクラムは、クライアントの応答とサーバーチャレンジメッセージが、コンマで区切られた1つ以上の属性値ペアを含むテキストベースのメッセージであるSASLメカニズムです。各属性には1文字の名前があります。メッセージとその属性はセクション5.1で説明され、セクション7で定義されています。

SCRAM is a client-first SASL mechanism (see [RFC4422], Section 5, item 2a), and returns additional data together with a server's indication of a successful outcome.

スクラムは、クライアントファーストSASLメカニズムであり([RFC4422]、セクション5、アイテム2Aを参照)、サーバーの成功した結果を示して追加データを返します。

This is a simple example of a SCRAM-SHA-1 authentication exchange when the client doesn't support channel bindings (username 'user' and password 'pencil' are used):

これは、クライアントがチャネルバインディング(ユーザー名「ユーザー」とパスワード「ペンシル」が使用されている)をサポートしていない場合のScram-Sha-1認証交換の簡単な例です。

   C: n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL
   S: r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,
      i=4096
   C: c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,
      p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=
   S: v=rmF9pqV8S7suAoZWja4dJRkFsKQ=
      First, the client sends the "client-first-message" containing:
        

o a GS2 header consisting of a flag indicating whether channel binding is supported-but-not-used, not supported, or used, and an optional SASL authorization identity;

o チャネルバインディングがサポートされているかどうかを示すフラグで構成されるGS2ヘッダー、しかし使用されていない、サポートされていない、または使用されていない、およびオプションのSASL認証ID。

o SCRAM username and a random, unique nonce attributes.

o スクラムユーザー名とランダムで一意のNonCe属性。

Note that the client's first message will always start with "n", "y", or "p"; otherwise, the message is invalid and authentication MUST fail. This is important, as it allows for GS2 extensibility (e.g., to add support for security layers).

クライアントの最初のメッセージは、常に「n」、「y」、または「p」から始まることに注意してください。それ以外の場合、メッセージは無効であり、認証が失敗する必要があります。これは、GS2の拡張性を可能にするため、重要です(たとえば、セキュリティレイヤーのサポートを追加するため)。

In response, the server sends a "server-first-message" containing the user's iteration count i and the user's salt, and appends its own nonce to the client-specified one.

これに応じて、サーバーは、ユーザーの反復カウントIとユーザーの塩を含む「サーバーファーストメッセージ」を送信し、クライアントが指定したものに独自の非CEを追加します。

The client then responds by sending a "client-final-message" with the same nonce and a ClientProof computed using the selected hash function as explained earlier.

次に、クライアントは、以前に説明したように、選択したハッシュ関数を使用して計算された同じノンセとクライアントプルーフを使用して「クライアントファイナルメッセージ」を送信することで応答します。

The server verifies the nonce and the proof, verifies that the authorization identity (if supplied by the client in the first message) is authorized to act as the authentication identity, and, finally, it responds with a "server-final-message", concluding the authentication exchange.

サーバーはNONCEと証明を検証し、認証ID(最初のメッセージでクライアントが提供する場合)が認証IDとして機能することを許可されていることを確認し、最後に、「サーバーファイナルメッセージ」で応答します。認証交換を終了します。

The client then authenticates the server by computing the ServerSignature and comparing it to the value sent by the server. If the two are different, the client MUST consider the authentication exchange to be unsuccessful, and it might have to drop the connection.

次に、クライアントはサーバーを計算し、サーバーから送信された値と比較することにより、サーバーを認証します。2つが異なる場合、クライアントは認証交換が失敗していると考える必要があり、接続をドロップする必要がある場合があります。

5.1. SCRAM Attributes
5.1. スクラム属性

This section describes the permissible attributes, their use, and the format of their values. All attribute names are single US-ASCII letters and are case-sensitive.

このセクションでは、許容属性、それらの使用、およびそれらの値の形式について説明します。すべての属性名は単一のUS-ASCII文字であり、ケースに敏感です。

Note that the order of attributes in client or server messages is fixed, with the exception of extension attributes (described by the "extensions" ABNF production), which can appear in any order in the designated positions. See Section 7 for authoritative reference.

クライアントメッセージまたはサーバーメッセージの属性の順序は、拡張属性(「拡張」ABNF生産で記述されている)を除き、指定された位置に任意の順序で表示できることに注意してください。権威ある参照については、セクション7を参照してください。

o a: This is an optional attribute, and is part of the GS2 [RFC5801] bridge between the GSS-API and SASL. This attribute specifies an authorization identity. A client may include it in its first message to the server if it wants to authenticate as one user, but subsequently act as a different user. This is typically used by an administrator to perform some management task on behalf of another user, or by a proxy in some situations.

o A:これはオプションの属性であり、GSS-APIとSASLの間のGS2 [RFC5801]ブリッジの一部です。この属性は、承認IDを指定します。クライアントは、1人のユーザーとして認証したい場合は、サーバーへの最初のメッセージにそれを含めることができますが、その後は別のユーザーとして機能します。これは通常、管理者が別のユーザーに代わって管理タスクを実行するために、または状況によってはプロキシによって使用されます。

Upon the receipt of this value the server verifies its correctness according to the used SASL protocol profile. Failed verification results in failed authentication exchange.

この値を受け取ると、サーバーは使用済みのSASLプロトコルプロファイルに従って正確性を検証します。検証に失敗した結果、認証交換に失敗します。

If this attribute is omitted (as it normally would be), the authorization identity is assumed to be derived from the username specified with the (required) "n" attribute.

この属性が(通常そうであるように)省略されている場合、認証IDは(必須) "n"属性で指定されたユーザー名から導き出されると想定されます。

The server always authenticates the user specified by the "n" attribute. If the "a" attribute specifies a different user, the server associates that identity with the connection after successful authentication and authorization checks.

サーバーは、「n」属性によって指定されたユーザーを常に認証します。「a」属性が別のユーザーを指定する場合、サーバーは、認証と承認チェックの成功後、そのアイデンティティを接続に関連付けます。

The syntax of this field is the same as that of the "n" field with respect to quoting of '=' and ','.

このフィールドの構文は、 '='および '、'の引用に関して「n」フィールドの構文と同じです。

o n: This attribute specifies the name of the user whose password is used for authentication (a.k.a. "authentication identity" [RFC4422]). A client MUST include it in its first message to the server. If the "a" attribute is not specified (which would normally be the case), this username is also the identity that will be associated with the connection subsequent to authentication and authorization.

o n:この属性は、パスワードが認証に使用されるユーザーの名前を指定します(別名「認証ID」[RFC4422])。クライアントは、サーバーへの最初のメッセージにそれを含める必要があります。「a」属性が指定されていない場合(通常はそうです)、このユーザー名は、認証と承認に続いて接続に関連付けられるアイデンティティでもあります。

Before sending the username to the server, the client SHOULD prepare the username using the "SASLprep" profile [RFC4013] of the "stringprep" algorithm [RFC3454] treating it as a query string (i.e., unassigned Unicode code points are allowed). If the preparation of the username fails or results in an empty string, the client SHOULD abort the authentication exchange (*).

ユーザー名をサーバーに送信する前に、クライアントはそれをクエリ文字列として扱う「stringprep」アルゴリズム[RFC3454]の「saslprep」プロファイル[RFC4013]を使用してユーザー名を準備する必要があります(つまり、未割り当てのユニコードコードポイントが許可されます)。ユーザー名の準備が失敗したり、空の文字列になった場合、クライアントは認証交換(*)を中止する必要があります。

(*) An interactive client can request a repeated entry of the username value.

(*)インタラクティブなクライアントは、ユーザー名値の繰り返しのエントリを要求できます。

Upon receipt of the username by the server, the server MUST either prepare it using the "SASLprep" profile [RFC4013] of the "stringprep" algorithm [RFC3454] treating it as a query string (i.e., unassigned Unicode codepoints are allowed) or otherwise be prepared to do SASLprep-aware string comparisons and/or index lookups. If the preparation of the username fails or results in an empty string, the server SHOULD abort the authentication exchange. Whether or not the server prepares the username using "SASLprep", it MUST use it as received in hash calculations.

サーバーによるユーザー名を受信すると、サーバーは、クエリ文字列(すなわち、符号化されていないUnicode CodePointsが許可されている)として扱う「StringPrep」アルゴリズム[RFC3454]の「SASLPREP」プロファイル[RFC4013]を使用して準備する必要があります。SASLPrep-Awareの文字列比較および/またはインデックス検索を行う準備をしてください。ユーザー名の準備が失敗したり、空の文字列になった場合、サーバーは認証交換を中止する必要があります。サーバーが「saslprep」を使用してユーザー名を準備するかどうかにかかわらず、ハッシュ計算で受信したとおりに使用する必要があります。

The characters ',' or '=' in usernames are sent as '=2C' and '=3D' respectively. If the server receives a username that contains '=' not followed by either '2C' or '3D', then the server MUST fail the authentication.

ユーザー名の文字 '、' = 'は、それぞれ「= 2c」と「= 3d」として送信されます。サーバーが「2C」または「3D」のいずれも続けない「=」が含まれないユーザー名を受信した場合、サーバーは認証に失敗する必要があります。

o m: This attribute is reserved for future extensibility. In this version of SCRAM, its presence in a client or a server message MUST cause authentication failure when the attribute is parsed by the other end.

o M:この属性は、将来の拡張性のために予約されています。このバージョンのスクラムでは、クライアントまたはサーバーメッセージでの存在は、属性がもう一方の端によって解析された場合、認証障害を引き起こす必要があります。

o r: This attribute specifies a sequence of random printable ASCII characters excluding ',' (which forms the nonce used as input to the hash function). No quoting is applied to this string. As described earlier, the client supplies an initial value in its first message, and the server augments that value with its own nonce in its first response. It is important that this value be different for each authentication (see [RFC4086] for more details on how to achieve this). The client MUST verify that the initial part of the nonce used in subsequent messages is the same as the nonce it initially specified. The server MUST verify that the nonce sent by the client in the second message is the same as the one sent by the server in its first message.

o R:この属性は、「」を除くランダムな印刷可能なASCII文字のシーケンスを指定します(これはハッシュ関数への入力として使用される非CEを形成します)。この文字列には引用符は適用されません。前述のように、クライアントは最初のメッセージに初期値を提供し、サーバーは最初の応答で独自のNONCEでその値を強化します。これを達成する方法の詳細については、この値が認証ごとに異なることが重要です([RFC4086]を参照)。クライアントは、後続のメッセージで使用されたNONCEの初期部分が、最初に指定されたNONCEと同じであることを確認する必要があります。サーバーは、2番目のメッセージでクライアントから送信されたNONCEが最初のメッセージでサーバーによって送信されたメッセージと同じであることを確認する必要があります。

o c: This REQUIRED attribute specifies the base64-encoded GS2 header and channel binding data. It is sent by the client in its second authentication message. The attribute data consist of:

o C:この必要な属性は、Base64エンコードGS2ヘッダーとチャネル結合データを指定します。2番目の認証メッセージでクライアントから送信されます。属性データは次のとおりです。

* the GS2 header from the client's first message (recall that the GS2 header contains a channel binding flag and an optional authzid). This header is going to include channel binding type prefix (see [RFC5056]), if and only if the client is using channel binding;

* クライアントの最初のメッセージからのGS2ヘッダー(GS2ヘッダーにはチャネル結合フラグとオプションのAuthzidが含まれていることを思い出してください)。このヘッダーには、クライアントがチャネルバインディングを使用している場合にのみ、チャネルバインディングタイプのプレフィックス([RFC5056]を参照)を含める予定です。

* followed by the external channel's channel binding data, if and only if the client is using channel binding.

* クライアントがチャネルバインディングを使用している場合にのみ、外部チャネルのチャネル結合データが続きます。

o s: This attribute specifies the base64-encoded salt used by the server for this user. It is sent by the server in its first message to the client.

o S:この属性は、このユーザーにサーバーが使用するbase64エンコード塩を指定します。サーバーから最初のメッセージでクライアントに送信されます。

o i: This attribute specifies an iteration count for the selected hash function and user, and MUST be sent by the server along with the user's salt.

o I:この属性は、選択したハッシュ関数とユーザーの反復カウントを指定し、ユーザーの塩とともにサーバーから送信する必要があります。

For the SCRAM-SHA-1/SCRAM-SHA-1-PLUS SASL mechanism, servers SHOULD announce a hash iteration-count of at least 4096. Note that a client implementation MAY cache ClientKey&ServerKey (or just SaltedPassword) for later reauthentication to the same service, as it is likely that the server is going to advertise the same salt value upon reauthentication. This might be useful for mobile clients where CPU usage is a concern.

SCRAM-SHA-1/SCRAM-SHA-1-PLUS SASLメカニズムの場合、サーバーは少なくとも4096のハッシュ反復範囲を発表する必要があります。サーバーが再認可時に同じ塩値を宣伝する可能性が高いため、サービス。これは、CPUの使用が懸念事項であるモバイルクライアントに役立つ可能性があります。

o p: This attribute specifies a base64-encoded ClientProof. The client computes this value as described in the overview and sends it to the server.

o P:この属性は、Base64エンコードされたクライアントプルーフを指定します。クライアントは、概要に記載されているようにこの値を計算し、サーバーに送信します。

o v: This attribute specifies a base64-encoded ServerSignature. It is sent by the server in its final message, and is used by the client to verify that the server has access to the user's authentication information. This value is computed as explained in the overview.

o V:この属性は、Base64エンコードされたServersignatureを指定します。サーバーから最終メッセージで送信され、サーバーがユーザーの認証情報にアクセスできることを確認するためにクライアントが使用します。この値は、概要で説明されているように計算されます。

o e: This attribute specifies an error that occurred during authentication exchange. It is sent by the server in its final message and can help diagnose the reason for the authentication exchange failure. On failed authentication, the entire server-final-message is OPTIONAL; specifically, a server implementation MAY conclude the SASL exchange with a failure without sending the server-final-message. This results in an application-level error response without an extra round-trip. If the server-final-message is sent on authentication failure, then the "e" attribute MUST be included.

o E:この属性は、認証交換中に発生したエラーを指定します。サーバーから最終メッセージで送信され、認証交換の失敗の理由を診断するのに役立ちます。認証に失敗した場合、サーバーファイナルメッセージ全体がオプションです。具体的には、サーバーの実装では、SASL交換がサーバーファイナルメッセージを送信せずに障害で締めくくる場合があります。これにより、追加の往復なしでアプリケーションレベルのエラー応答が発生します。サーバーファイナルメッセージが認証障害で送信される場合、「e」属性を含める必要があります。

o As-yet unspecified mandatory and optional extensions. Mandatory extensions are encoded as values of the 'm' attribute (see ABNF for reserved-mext in section 7). Optional extensions use as-yet unassigned attribute names.

o まだ不特定の必須およびオプションの拡張機能。必須の拡張機能は、「M」属性の値としてエンコードされます(セクション7の予約済みのMEXTについてはABNFを参照)。オプションの拡張機能は、未割り当ての属性名を使用します。

Mandatory extensions sent by one peer but not understood by the other MUST cause authentication failure (the server SHOULD send the "extensions-not-supported" server-error-value).

1つのピアから送信されたが、他のピアが理解していない必須拡張機能は認証障害を引き起こす必要があります(サーバーは「拡張機能なし」サーバーとエラーの価値を送信する必要があります)。

Unknown optional extensions MUST be ignored upon receipt.

未知のオプションの拡張機能は、受領時に無視する必要があります。

5.2. Compliance with SASL Mechanism Requirements
5.2. SASLメカニズム要件のコンプライアンス

This section describes compliance with SASL mechanism requirements specified in Section 5 of [RFC4422].

このセクションでは、[RFC4422]のセクション5で指定されているSASLメカニズム要件のコンプライアンスについて説明します。

1) "SCRAM-SHA-1" and "SCRAM-SHA-1-PLUS".

1) 「Scram-Sha-1」および「Scram-Sha-1-Plus」。

2a) SCRAM is a client-first mechanism.

2a)スクラムは、クライアントファーストメカニズムです。

2b) SCRAM sends additional data with success.

2b)スクラムは、成功した追加データを送信します。

3) SCRAM is capable of transferring authorization identities from the client to the server.

3) Scramは、クライアントからサーバーに承認のアイデンティティを転送することができます。

4) SCRAM does not offer any security layers (SCRAM offers channel binding instead).

4) Scramはセキュリティレイヤーを提供しません(Scramは代わりにチャネルバインディングを提供します)。

5) SCRAM has a hash protecting the authorization identity.

5) Scramには、認証アイデンティティを保護するハッシュがあります。

6. Channel Binding
6. チャネルバインディング

SCRAM supports channel binding to external secure channels, such as TLS. Clients and servers may or may not support channel binding, therefore the use of channel binding is negotiable. SCRAM does not provide security layers, however, therefore it is imperative that SCRAM provide integrity protection for the negotiation of channel binding.

Scramは、TLSなどの外部セキュアチャネルへのチャネル結合をサポートします。クライアントとサーバーは、チャネルバインディングをサポートしている場合とサポートしていない場合があるため、チャネルバインディングの使用は交渉可能です。スクラムはセキュリティレイヤーを提供していないため、スクラムがチャネル拘束の交渉に完全性保護を提供することが不可欠です。

Use of channel binding is negotiated as follows:

チャネルバインディングの使用は、次のように交渉されます。

o Servers that support the use of channel binding SHOULD advertise both the non-PLUS (SCRAM-<hash-function>) and PLUS-variant (SCRAM-<hash-function>-PLUS) mechanism name. If the server cannot support channel binding, it SHOULD advertise only the non-PLUS-variant. If the server would never succeed in the authentication of the non-PLUS-variant due to policy reasons, it MUST advertise only the PLUS-variant.

o チャネルバインディングの使用をサポートするサーバーは、非Plus(scram- <hash-function>)とPlus-Variant(scram- <hash-function> -plus)メカニズム名の両方を宣伝する必要があります。サーバーがチャネルバインディングをサポートできない場合、非プラス変数のみを宣伝する必要があります。政策上の理由により、サーバーが非プラス変動の認証に成功しない場合、プラス変のみを宣伝する必要があります。

o If the client supports channel binding and the server does not appear to (i.e., the client did not see the -PLUS name advertised by the server), then the client MUST NOT use an "n" gs2-cbind-flag.

o クライアントがチャネルバインディングをサポートし、サーバーが表示されない場合(つまり、クライアントがサーバーによって宣伝されている-Plus名が表示されなかった場合)、クライアントは「N」GS2-CBIND-FLAGを使用してはなりません。

o Clients that support mechanism negotiation and channel binding MUST use a "p" gs2-cbind-flag when the server offers the PLUS-variant of the desired GS2 mechanism.

o メカニズムのネゴシエーションとチャネルバインディングをサポートするクライアントは、サーバーが目的のGS2メカニズムのプラス変動を提供する場合、「P」GS2-CBIND-FLAGを使用する必要があります。

o If the client does not support channel binding, then it MUST use an "n" gs2-cbind-flag. Conversely, if the client requires the use of channel binding then it MUST use a "p" gs2-cbind-flag. Clients that do not support mechanism negotiation never use a "y" gs2- cbind-flag, they use either "p" or "n" according to whether they require and support the use of channel binding or whether they do not, respectively.

o クライアントがチャネルバインディングをサポートしていない場合、「n」GS2-CBIND-FLAGを使用する必要があります。逆に、クライアントがチャネルバインディングの使用を必要とする場合、「P」GS2-CBIND-FLAGを使用する必要があります。メカニズムの交渉をサポートしていないクライアントは、「Y」GS2- cbind-flagを使用することはありません。チャネルバインディングの使用を必要とし、そうでないかどうかに応じて「P」または「N」を使用します。

o Upon receipt of the client-first message, the server checks the channel binding flag (gs2-cbind-flag).

o クライアントファーストメッセージを受信すると、サーバーはチャネルバインディングフラグ(GS2-CBIND-FLAG)をチェックします。

* If the flag is set to "y" and the server supports channel binding, the server MUST fail authentication. This is because if the client sets the channel binding flag to "y", then the client must have believed that the server did not support channel binding -- if the server did in fact support channel binding, then this is an indication that there has been a downgrade attack (e.g., an attacker changed the server's mechanism list to exclude the -PLUS suffixed SCRAM mechanism name(s)).

* フラグが「Y」に設定され、サーバーがチャネルバインディングをサポートする場合、サーバーは認証に失敗する必要があります。これは、クライアントがチャネルバインディングフラグを「Y」に設定した場合、クライアントはサーバーがチャネルバインディングをサポートしていないと信じていたに違いありません。ダウングレード攻撃でした(たとえば、攻撃者がサーバーのメカニズムリストを変更して、-Plus Suffixed Scramメカニズム名を除外しました)。

* If the channel binding flag was "p" and the server does not support the indicated channel binding type, then the server MUST fail authentication.

* チャネルバインディングフラグが「P」であり、サーバーが指定されたチャネルバインディングタイプをサポートしていない場合、サーバーは認証に失敗する必要があります。

The server MUST always validate the client's "c=" field. The server does this by constructing the value of the "c=" attribute and then checking that it matches the client's c= attribute value.

サーバーは、常にクライアントの「C =」フィールドを検証する必要があります。サーバーは、「c =」属性の値を構築し、クライアントのc =属性値と一致することを確認することにより、これを行います。

For more discussions of channel bindings, and the syntax of channel binding data for various security protocols, see [RFC5056].

チャネルバインディングの詳細、およびさまざまなセキュリティプロトコルのチャネル結合データの構文については、[RFC5056]を参照してください。

6.1. Default Channel Binding
6.1. デフォルトのチャネルバインディング

A default channel binding type agreement process for all SASL application protocols that do not provide their own channel binding type agreement is provided as follows.

独自のチャネルバインディングタイプの一致を提供しないすべてのSASLアプリケーションプロトコルのデフォルトのチャネルバインディングタイプ合意プロセスは、次のように提供されます。

'tls-unique' is the default channel binding type for any application that doesn't specify one.

「TLS-Unique」は、1つを指定しないアプリケーションのデフォルトのチャネルバインディングタイプです。

Servers MUST implement the "tls-unique" [RFC5929] channel binding type, if they implement any channel binding. Clients SHOULD implement the "tls-unique" [RFC5929] channel binding type, if they implement any channel binding. Clients and servers SHOULD choose the highest-layer/innermost end-to-end TLS channel as the channel to which to bind.

サーバーは、チャネルバインディングを実装する場合、「TLS-Unique」[RFC5929]チャネル結合タイプを実装する必要があります。クライアントは、チャネルバインディングを実装する場合は、「TLS-Unique」[RFC5929]チャネルバインディングタイプを実装する必要があります。クライアントとサーバーは、バインドするチャネルとして、最高層/最も内側のエンドツーエンドTLSチャネルを選択する必要があります。

Servers MUST choose the channel binding type indicated by the client, or fail authentication if they don't support it.

サーバーは、クライアントが示すチャネルバインディングタイプを選択するか、サポートしていない場合は認証を失敗する必要があります。

7. Formal Syntax
7. 正式な構文

The following syntax specification uses the Augmented Backus-Naur form (ABNF) notation as specified in [RFC5234]. "UTF8-2", "UTF8-3", and "UTF8-4" non-terminal are defined in [RFC3629].

次の構文仕様では、[RFC5234]で指定されているように、拡張されたBackus-NAURフォーム(ABNF)表記を使用します。「UTF8-2」、「UTF8-3」、および「UTF8-4」非末端は[RFC3629]で定義されています。

   ALPHA = <as defined in RFC 5234 appendix B.1>
   DIGIT = <as defined in RFC 5234 appendix B.1>
   UTF8-2 = <as defined in RFC 3629 (STD 63)>
   UTF8-3 = <as defined in RFC 3629 (STD 63)>
   UTF8-4 = <as defined in RFC 3629 (STD 63)>
        
   attr-val        = ALPHA "=" value
                     ;; Generic syntax of any attribute sent
                     ;; by server or client
        
   value           = 1*value-char
        
   value-safe-char = %x01-2B / %x2D-3C / %x3E-7F /
                     UTF8-2 / UTF8-3 / UTF8-4
                     ;; UTF8-char except NUL, "=", and ",".
        
   value-char      = value-safe-char / "="
        
   printable       = %x21-2B / %x2D-7E
                     ;; Printable ASCII except ",".
                     ;; Note that any "printable" is also
                     ;; a valid "value".
        
   base64-char     = ALPHA / DIGIT / "/" / "+"
        
   base64-4        = 4base64-char
        

base64-3 = 3base64-char "="

base64-3 = 3base64-char "="

   base64-2        = 2base64-char "=="
        
   base64          = *base64-4 [base64-3 / base64-2]
        
   posit-number = %x31-39 *DIGIT
                     ;; A positive number.
        
   saslname        = 1*(value-safe-char / "=2C" / "=3D")
                     ;; Conforms to <value>.
        

authzid = "a=" saslname ;; Protocol specific.

authzid = "a =" saslname ;;プロトコル固有。

   cb-name         = 1*(ALPHA / DIGIT / "." / "-")
                      ;; See RFC 5056, Section 7.
                      ;; E.g., "tls-server-end-point" or
                      ;; "tls-unique".
        
   gs2-cbind-flag  = ("p=" cb-name) / "n" / "y"
                     ;; "n" -> client doesn't support channel binding.
                     ;; "y" -> client does support channel binding
                     ;;        but thinks the server does not.
                     ;; "p" -> client requires channel binding.
                     ;; The selected channel binding follows "p=".
        
   gs2-header      = gs2-cbind-flag "," [ authzid ] ","
                     ;; GS2 header for SCRAM
                     ;; (the actual GS2 header includes an optional
                     ;; flag to indicate that the GSS mechanism is not
                     ;; "standard", but since SCRAM is "standard", we
                     ;; don't include that flag).
        

username = "n=" saslname ;; Usernames are prepared using SASLprep.

username = "and =" sasl name ;;ユーザー名はSASLPrepを使用して準備されています。

   reserved-mext  = "m=" 1*(value-char)
                     ;; Reserved for signaling mandatory extensions.
                     ;; The exact syntax will be defined in
                     ;; the future.
        

channel-binding = "c=" base64 ;; base64 encoding of cbind-input.

チャネルバインディング= "c =" base64 ;;cbind-inputのbase64エンコーディング。

proof = "p=" base64

証明= "p =" base64

nonce = "r=" c-nonce [s-nonce] ;; Second part provided by server.

nonce = "r =" c-nonce [s-nonce] ;;サーバーによって提供される2番目の部分。

   c-nonce         = printable
        
   s-nonce         = printable
        

salt = "s=" base64

SALT = "s =" base64

verifier = "v=" base64 ;; base-64 encoded ServerSignature.

verifier = "v =" base64 ;;Base-64エンコードされたServersignature。

iteration-count = "i=" posit-number ;; A positive number.

iteration-count = "i =" posit-number ;;正の数。

client-first-message-bare = [reserved-mext ","] username "," nonce ["," extensions]

client-first-message-bare = [reserved-mext "、"] username "、" nonce ["、" extensions]

   client-first-message =
                     gs2-header client-first-message-bare
        

server-first-message = [reserved-mext ","] nonce "," salt "," iteration-count ["," extensions]

server-first-message = [reserved-mext "、"] nonce "、" salt "、" iteration-count ["、" extensions]

client-final-message-without-proof = channel-binding "," nonce ["," extensions]

クライアントファイナルメサージ付きプルーフ=チャンネルバインディング "、" nonce ["、" extensions]

client-final-message = client-final-message-without-proof "," proof

クライアントファイナルメサージ=クライアントファイナルメサージとプルーフと "、"プルーフ

server-error = "e=" server-error-value

server-error = "e =" server-error-value

   server-error-value = "invalid-encoding" /
                  "extensions-not-supported" /  ; unrecognized 'm' value
                  "invalid-proof" /
                  "channel-bindings-dont-match" /
                  "server-does-support-channel-binding" /
                    ; server does not support channel binding
                  "channel-binding-not-supported" /
                  "unsupported-channel-binding-type" /
                  "unknown-user" /
                  "invalid-username-encoding" /
                    ; invalid username encoding (invalid UTF-8 or
                    ; SASLprep failed)
                  "no-resources" /
                  "other-error" /
                  server-error-value-ext
           ; Unrecognized errors should be treated as "other-error".
           ; In order to prevent information disclosure, the server
           ; may substitute the real reason with "other-error".
        

server-error-value-ext = value ; Additional error reasons added by extensions ; to this document.

server-error-value-ext = value;拡張機能によって追加された追加のエラー理由。この文書に。

   server-final-message = (server-error / verifier)
                     ["," extensions]
        
   extensions = attr-val *("," attr-val)
                     ;; All extensions are optional,
                     ;; i.e., unrecognized attributes
                     ;; not defined in this document
                     ;; MUST be ignored.
        
   cbind-data    = 1*OCTET
      cbind-input   = gs2-header [ cbind-data ]
                     ;; cbind-data MUST be present for
                     ;; gs2-cbind-flag of "p" and MUST be absent
                     ;; for "y" or "n".
        
8. SCRAM as a GSS-API Mechanism
8. GSS-APIメカニズムとしてのスクラム

This section and its sub-sections and all normative references of it not referenced elsewhere in this document are INFORMATIONAL for SASL implementors, but they are NORMATIVE for GSS-API implementors.

このセクションとそのサブセクションと、このドキュメントの他の場所で参照されていないすべての規範的参照は、SASLの実装者にとって情報ですが、GSS-API実装者にとっては規範的です。

SCRAM is actually also a GSS-API mechanism. The messages are the same, but a) the GS2 header on the client's first message and channel binding data is excluded when SCRAM is used as a GSS-API mechanism, and b) the RFC2743 section 3.1 initial context token header is prefixed to the client's first authentication message (context token).

スクラムは実際にはGSS-APIメカニズムでもあります。メッセージは同じですが、a)クライアントの最初のメッセージとチャネルバインディングデータのGS2ヘッダーは、スクラムがGSS-APIメカニズムとして使用される場合に除外されます。最初の認証メッセージ(コンテキストトークン)。

The GSS-API mechanism OID for SCRAM-SHA-1 is 1.3.6.1.5.5.14 (see Section 10).

Scram-Sha-1のGSS-APIメカニズムOIDは1.3.6.1.5.5.14です(セクション10を参照)。

SCRAM security contexts always have the mutual_state flag (GSS_C_MUTUAL_FLAG) set to TRUE. SCRAM does not support credential delegation, therefore SCRAM security contexts alway have the deleg_state flag (GSS_C_DELEG_FLAG) set to FALSE.

スクラムセキュリティコンテキストには、常にumuntion_stateフラグ(gss_c_mutual_flag)がtrueに設定されています。Scramは資格委員会をサポートしていないため、Scram Security Contextsは、DELEG_STATEフラグ(GSS_C_DELEG_FLAG)がFalseに設定されていることを常にサポートしています。

8.1. GSS-API Principal Name Types for SCRAM
8.1. スクラム用のGSS-API主な名前タイプ

SCRAM does not explicitly name acceptor principals. However, the use of acceptor principal names to find or prompt for passwords is useful. Therefore, SCRAM supports standard generic name syntaxes for acceptors such as GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743], Section 4.1). Implementations should use the target name passed to GSS_Init_sec_context(), if any, to help retrieve or prompt for SCRAM passwords.

スクラムは、アクセプタープリンシパルに明示的に名前を付けません。ただし、パスワードを見つけたりプロンプトしたりするためにアクセプターの主名を使用することは有用です。したがって、スクラムは、GSS_C_NT_HOSTBASED_SERVICE([RFC2743]、セクション4.1を参照)などのアクセプターの標準的な汎用名構文をサポートします。実装は、gss_init_sec_context()に渡されたターゲット名を使用して、スクラムのパスワードを取得またはプロンプトするのを助けるために使用する必要があります。

SCRAM supports only a single name type for initiators: GSS_C_NT_USER_NAME. GSS_C_NT_USER_NAME is the default name type for SCRAM.

スクラムは、イニシエーターの単一名タイプのみをサポートしています:GSS_C_NT_USER_NAME。GSS_C_NT_USER_NAMEは、スクラムのデフォルト名タイプです。

There is no name canonicalization procedure for SCRAM beyond applying SASLprep as described in Section 5.1.

セクション5.1で説明されているように、SASLPREPを適用する以外にスクラムの名前の標準化手順はありません。

The query, display, and exported name syntaxes for SCRAM principal names are all the same. There are no SCRAM-specific name syntaxes (SCRAM initiator principal names are free-form); -- applications should use generic GSS-API name types such as GSS_C_NT_USER_NAME and GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743], Section 4). The exported name token does, of course, conform to [RFC2743], Section 3.2, but the "NAME" part of the token is just a SCRAM user name.

スクラムプリンシパル名のクエリ、ディスプレイ、およびエクスポート名構文はすべて同じです。スクラム固有の名前の構文はありません(スクラムイニシエーターの主名は自由形式です)。 - アプリケーションは、GSS_C_NT_USER_NAMEやGSS_C_NT_HOSTBASET_SERVICE([RFC2743]、セクション4を参照)などの汎用GSS-API名タイプを使用する必要があります。トークンのエクスポートされた名前は、もちろん[RFC2743]、セクション3.2に準拠していますが、トークンの「名前」の部分はスクラムユーザー名です。

8.2. GSS-API Per-Message Tokens for SCRAM
8.2. スクラムのためのGSS-APIメッセージ1トークン

The per-message tokens for SCRAM as a GSS-API mechanism SHALL be the same as those for the Kerberos V GSS-API mechanism [RFC4121] (see Section 4.2 and sub-sections), using the Kerberos V "aes128-cts-hmac-sha1-96" enctype [RFC3962].

GSS-APIメカニズムとしてのスクラムのためのメッセージごとのトークンは、Kerberos V "AES128-CTS-HMACを使用して、Kerberos v GSS-APIメカニズム[RFC4121](セクション4.2およびサブセクションを参照)のトークンと同じでなければなりません。-sha1-96 "enctype [rfc3962]。

The replay_det_state (GSS_C_REPLAY_FLAG), sequence_state (GSS_C_SEQUENCE_FLAG), conf_avail (GSS_C_CONF_FLAG) and integ_avail (GSS_C_CONF_FLAG) security context flags are always set to TRUE.

REPLAY_DET_STATE(GSS_C_REPLAY_FLAG)、Sequence_State(GSS_C_Sequence_Flag)、conf_avail(gss_c_conf_flag)、integ_avail(gss_c_conf_flag)セキュリティコンテキストフラグは常に真実に設定されています。

The 128-bit session "protocol key" SHALL be derived by using the least significant (right-most) 128 bits of HMAC(StoredKey, "GSS-API session key" || ClientKey || AuthMessage). "Specific keys" are then derived as usual as described in Section 2 of [RFC4121], [RFC3961], and [RFC3962].

128ビットセッション「プロトコルキー」は、最も有意な(右最大の)128ビットのHMAC(storedKey、 "GSS-APIセッションキー" || clientKey || authmessage)を使用して導出されます。「特定のキー」は、[RFC4121]、[RFC3961]、および[RFC3962]のセクション2で説明されているように、通常どおり導出されます。

The terms "protocol key" and "specific key" are Kerberos V5 terms [RFC3961].

「プロトコルキー」および「特定のキー」という用語は、Kerberos V5用語[RFC3961]です。

SCRAM does support PROT_READY, and is PROT_READY on the initiator side first upon receipt of the server's reply to the initial security context token.

ScramはProT_Readyをサポートし、最初に最初にイニシエーター側にあり、最初のセキュリティコンテキストトークンに対するサーバーの返信を受信しました。

8.3. GSS_Pseudo_random() for SCRAM
8.3. gss_pseudo_random()for scram

The GSS_Pseudo_random() [RFC4401] for SCRAM SHALL be the same as for the Kerberos V GSS-API mechanism [RFC4402]. There is no acceptor-asserted sub-session key for SCRAM, thus GSS_C_PRF_KEY_FULL and GSS_C_PRF_KEY_PARTIAL are equivalent for SCRAM's GSS_Pseudo_random(). The protocol key to be used for the GSS_Pseudo_random() SHALL be the same as the key defined in Section 8.2.

スクラムのGSS_PSEUDO_RANDOM()[RFC4401]は、Kerberos v GSS-APIメカニズム[RFC4402]の場合と同じでなければなりません。スクラムにはアクセプターアサートされたサブセッションキーはありません。したがって、GSS_C_PRF_KEY_FULLとGSS_C_PRF_KEY_PARTIALは、SCRAMのGSS_PSEUDO_RANDOM()と同等です。gss_pseudo_random()に使用されるプロトコルキーは、セクション8.2で定義されているキーと同じでなければなりません。

9. Security Considerations
9. セキュリティに関する考慮事項

If the authentication exchange is performed without a strong security layer (such as TLS with data confidentiality), then a passive eavesdropper can gain sufficient information to mount an offline dictionary or brute-force attack that can be used to recover the user's password. The amount of time necessary for this attack depends on the cryptographic hash function selected, the strength of the password, and the iteration count supplied by the server. An external security layer with strong encryption will prevent this attack.

認証交換が強力なセキュリティレイヤー(データの機密性を備えたTLSなど)なしで実行される場合、パッシブ盗聴者は、ユーザーのパスワードを回復するために使用できるオフライン辞書またはブルートフォース攻撃を取り付けるのに十分な情報を得ることができます。この攻撃に必要な時間は、選択した暗号化ハッシュ関数、パスワードの強度、およびサーバーが提供する反復カウントに依存します。強力な暗号化を備えた外部セキュリティレイヤーは、この攻撃を防ぎます。

If the external security layer used to protect the SCRAM exchange uses an anonymous key exchange, then the SCRAM channel binding mechanism can be used to detect a man-in-the-middle attack on the security layer and cause the authentication to fail as a result. However, the man-in-the-middle attacker will have gained sufficient information to mount an offline dictionary or brute-force attack. For this reason, SCRAM allows to increase the iteration count over time. (Note that a server that is only in possession of "StoredKey" and "ServerKey" can't automatically increase the iteration count upon successful authentication. Such an increase would require resetting the user's password.)

スクラム交換を保護するために使用される外部セキュリティレイヤーが匿名のキー交換を使用する場合、スクラムチャネル結合メカニズムを使用してセキュリティレイヤーに対する中間の攻撃を検出し、結果として認証が失敗します。ただし、中間の攻撃者は、オフライン辞書またはブルートフォース攻撃を実施するのに十分な情報を得ることができます。このため、スクラムは、時間の経過とともに反復カウントを増やすことができます。(「StoredKey」と「ServerKey」を所有しているサーバーは、認証が成功すると反復を自動的に増加させることはできないことに注意してください。このような増加には、ユーザーのパスワードをリセットする必要があります。)

If the authentication information is stolen from the authentication database, then an offline dictionary or brute-force attack can be used to recover the user's password. The use of salt mitigates this attack somewhat by requiring a separate attack on each password. Authentication mechanisms that protect against this attack are available (e.g., the EKE class of mechanisms). RFC 2945 [RFC2945] is an example of such technology. The WG elected not to use EKE like mechanisms as a basis for SCRAM.

認証情報が認証データベースから盗まれた場合、オフラインの辞書またはブルートフォース攻撃を使用してユーザーのパスワードを回復できます。塩を使用すると、各パスワードに個別の攻撃が必要になることにより、この攻撃をやや軽減します。この攻撃から保護する認証メカニズムが利用可能です(たとえば、メカニズムのEKEクラス)。RFC 2945 [RFC2945]は、そのような技術の例です。WGは、スクラムの基礎としてEKEのようなメカニズムを使用しないことを選択しました。

If an attacker obtains the authentication information from the authentication repository and either eavesdrops on one authentication exchange or impersonates a server, the attacker gains the ability to impersonate that user to all servers providing SCRAM access using the same hash function, password, iteration count, and salt. For this reason, it is important to use randomly generated salt values.

攻撃者が認証リポジトリから認証情報を取得し、1つの認証交換で盗聴するか、サーバーになりすましている場合、攻撃者は、同じハッシュ関数、パスワード、反復カウント、および、および同じハッシュ機能、パスワード、および反復カウントを使用してスクラムアクセスを提供するすべてのサーバーにそのユーザーになりすましする能力を獲得します。塩。このため、ランダムに生成された塩値を使用することが重要です。

SCRAM does not negotiate a hash function to use. Hash function negotiation is left to the SASL mechanism negotiation. It is important that clients be able to sort a locally available list of mechanisms by preference so that the client may pick the appropriate mechanism to use from a server's advertised mechanism list. This preference order is not specified here as it is a local matter. The preference order should include objective and subjective notions of mechanism cryptographic strength (e.g., SCRAM with a successor to SHA-1 may be preferred over SCRAM with SHA-1).

スクラムは、使用するハッシュ関数をネゴシエートしません。ハッシュ関数の交渉は、SASLメカニズムの交渉に任されています。クライアントは、クライアントがサーバーの広告メカニズムリストから使用する適切なメカニズムを選択できるように、優先順位によってメカニズムのローカルで利用可能なリストを並べ替えることができることが重要です。この優先順序は、ローカルな問題であるため、ここでは指定されていません。優先順序には、メカニズムの暗号的強度の客観的および主観的な概念を含める必要があります(たとえば、SHA-1の後継者とのスクラムは、SHA-1を使用したスクラムよりも好まれる場合があります)。

Note that to protect the SASL mechanism negotiation applications normally must list the server mechanisms twice: once before and once after authentication, the latter using security layers. Since SCRAM does not provide security layers, the only ways to protect the mechanism negotiation are a) use channel binding to an external channel, or b) use an external channel that authenticates a user-provided server name.

SASLメカニズムを保護するには、ネゴシエーションアプリケーションが通常、サーバーメカニズムを2回リストする必要があることに注意してください。認証の前後に1回、後者はセキュリティレイヤーを使用しています。スクラムはセキュリティレイヤーを提供しないため、メカニズムの交渉を保護する唯一の方法は、a)外部チャネルへのチャネルバインディングを使用するか、b)ユーザーが提供するサーバー名を認証する外部チャネルを使用します。

SCRAM does not protect against downgrade attacks of channel binding types. The complexities of negotiating a channel binding type, and handling down-grade attacks in that negotiation, were intentionally left out of scope for this document.

スクラムは、チャネルバインディングタイプのダウングレード攻撃から保護しません。チャネルバインディングタイプの交渉の複雑さ、およびその交渉におけるダウングレード攻撃の処理の複雑さは、この文書の範囲から意図的に除外されました。

A hostile server can perform a computational denial-of-service attack on clients by sending a big iteration count value.

敵対的なサーバーは、大きな反復カウント値を送信することにより、クライアントに対して計算拒否攻撃を実行できます。

See [RFC4086] for more information about generating randomness.

ランダム性の生成の詳細については、[RFC4086]を参照してください。

10. IANA Considerations
10. IANAの考慮事項

IANA has added the following family of SASL mechanisms to the SASL Mechanism registry established by [RFC4422]:

IANAは、[RFC4422]によって確立されたSASLメカニズムレジストリに次のファミリーを追加しました。

To: iana@iana.org Subject: Registration of a new SASL family SCRAM

宛先:iana@iana.org件名:新しいSASLファミリースクラムの登録

SASL mechanism name (or prefix for the family): SCRAM-* Security considerations: Section 7 of [RFC5802] Published specification (optional, recommended): [RFC5802] Person & email address to contact for further information: IETF SASL WG <sasl@ietf.org> Intended usage: COMMON Owner/Change controller: IESG <iesg@ietf.org> Note: Members of this family MUST be explicitly registered using the "IETF Review" [RFC5226] registration procedure. Reviews MUST be requested on the SASL mailing list <sasl@ietf.org> (or a successor designated by the responsible Security AD).

SASLメカニズム名(またはファミリのプレフィックス):スクラム - *セキュリティ上の考慮事項:[RFC5802]のセクション7 [RFC5802]公開された仕様(オプション、推奨):[RFC5802]連絡先への連絡先情報:IETF SASL WG <SASL@ietf.org>意図された使用法:共通所有者/変更コントローラー:iesg <iesg@ietf.org>注:この家族のメンバーは、「IETFレビュー」[RFC5226]登録手順を使用して明示的に登録する必要があります。レビューは、SASLメーリングリスト<sasl@ietf.org>(または責任あるセキュリティ広告によって指定された後継者)で要求する必要があります。

Note to future SCRAM-mechanism designers: each new SCRAM-SASL mechanism MUST be explicitly registered with IANA and MUST comply with SCRAM-mechanism naming convention defined in Section 4 of this document.

将来のスクラムメカニズムデザイナーへの注意:新しいスクラムSASLメカニズムは、IANAに明示的に登録されている必要があり、このドキュメントのセクション4で定義されているScram-Mechanism Naming Conventionに準拠する必要があります。

IANA has added the following entries to the SASL Mechanism registry established by [RFC4422]:

IANAは、[RFC4422]によって確立されたSASLメカニズムレジストリに次のエントリを追加しました。

To: iana@iana.org Subject: Registration of a new SASL mechanism SCRAM-SHA-1

宛先:iana@iana.org件名:新しいSASLメカニズムの登録Scram-Sha-1

SASL mechanism name (or prefix for the family): SCRAM-SHA-1 Security considerations: Section 7 of [RFC5802] Published specification (optional, recommended): [RFC5802] Person & email address to contact for further information: IETF SASL WG <sasl@ietf.org> Intended usage: COMMON Owner/Change controller: IESG <iesg@ietf.org> Note:

SASLメカニズム名(またはファミリのプレフィックス):SCRAM-SHA-1セキュリティ上の考慮事項:[RFC5802]のセクション7 [RFC5802]公開された仕様(オプション、推奨):[RFC5802]連絡先への個人および電子メールアドレス詳細について:IETF SASL WG <<sasl@ietf.org>意図された使用法:共通所有者/変更コントローラー:iesg <iesg@ietf.org>注:

To: iana@iana.org Subject: Registration of a new SASL mechanism SCRAM-SHA-1-PLUS

宛先:iana@iana.org件名:新しいSASLメカニズムの登録Scram-Sha-1-Plus

SASL mechanism name (or prefix for the family): SCRAM-SHA-1-PLUS Security considerations: Section 7 of [RFC5802] Published specification (optional, recommended): [RFC5802] Person & email address to contact for further information: IETF SASL WG <sasl@ietf.org> Intended usage: COMMON Owner/Change controller: IESG <iesg@ietf.org> Note:

SASLメカニズム名(またはファミリのプレフィックス):スクラム-Sha-1-Plusセキュリティ上の考慮事項:[RFC5802のセクション7]公開された仕様(オプション、推奨):[RFC5802]連絡先への個人および電子メールアドレス詳細:IETF SASLwg <sasl@ietf.org>意図された使用法:共通所有者/変更コントローラー:iesg <iesg@ietf.org>注:

Per this document, IANA has assigned a GSS-API mechanism OID for SCRAM-SHA-1 from the iso.org.dod.internet.security.mechanisms prefix (see "SMI Security for Mechanism Codes" registry).

このドキュメントに従って、IANAはISO.org.dod.internet.security.mechanismsプレフィックスからスクラム-Sha-1のGSS-APIメカニズムOIDを割り当てています(「メカニズムコードのSMIセキュリティ」レジストリを参照)。

11. Acknowledgements
11. 謝辞

This document benefited from discussions on the SASL WG mailing list. The authors would like to specially thank Dave Cridland, Simon Josefsson, Jeffrey Hutzelman, Kurt Zeilenga, Pasi Eronen, Ben Campbell, Peter Saint-Andre, and Tobias Markmann for their contributions to this document. A special thank you to Simon Josefsson for shepherding this document and for doing one of the first implementations of this specification.

このドキュメントは、SASL WGメーリングリストに関する議論の恩恵を受けました。著者は、この文書への貢献について、Dave Cridland、Simon Josefsson、Jeffrey Hutzelman、Kurt Zeilenga、Pasi Eronen、Ben Campbell、Peter Saint-Andre、Tobias Markmannに特別に感謝したいと思います。このドキュメントを羊飼いし、この仕様の最初の実装の1つを行ってくれたSimon Josefssonに特別に感謝します。

12. References
12. 参考文献
12.1. Normative References
12.1. 引用文献

[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.

[RFC2104] Krawczyk、H.、Bellare、M。、およびR. CaNetti、「HMAC:メッセージ認証のためのキー付きハッシング」、RFC 2104、1997年2月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するためのキーワード」、BCP 14、RFC 2119、1997年3月。

[RFC3174] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1 (SHA1)", RFC 3174, September 2001.

[RFC3174] Eastlake、D。およびP. Jones、「US Secure Hash Algorithm 1(SHA1)」、RFC 3174、2001年9月。

[RFC3454] Hoffman, P. and M. Blanchet, "Preparation of Internationalized Strings ("stringprep")", RFC 3454, December 2002.

[RFC3454] Hoffman、P。およびM. Blanchet、「国際化された文字列の準備(「StringPrep」)」、RFC 3454、2002年12月。

[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.

[RFC3629] Yergeau、F。、「UTF-8、ISO 10646の変換形式」、STD 63、RFC 3629、2003年11月。

[RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for User Names and Passwords", RFC 4013, February 2005.

[RFC4013] Zeilenga、K。、「SASLPREP:ユーザー名とパスワードのStringPrepプロファイル」、RFC 4013、2005年2月。

[RFC4422] Melnikov, A. and K. Zeilenga, "Simple Authentication and Security Layer (SASL)", RFC 4422, June 2006.

[RFC4422] Melnikov、A。およびK. Zeilenga、「Simple Authentication and Security Layer(SASL)」、RFC 4422、2006年6月。

[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006.

[RFC4648] Josefsson、S。、「Base16、Base32、およびBase64データエンコーディング」、RFC 4648、2006年10月。

[RFC5056] Williams, N., "On the Use of Channel Bindings to Secure Channels", RFC 5056, November 2007.

[RFC5056]ウィリアムズ、N。、「チャンネルを保護するためのチャネルバインディングの使用について」、RFC 5056、2007年11月。

[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC5234] Crocker、D。およびP. Overell、「構文仕様のためのBNFの増強:ABNF」、STD 68、RFC 5234、2008年1月。

[RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings for TLS", RFC 5929, July 2010.

[RFC5929] Altman、J.、Williams、N。、およびL. Zhu、「TLSのチャネルバインディング」、RFC 5929、2010年7月。

12.2. Normative References for GSS-API Implementors
12.2. GSS-API実装者の規範的参照

[RFC2743] Linn, J., "Generic Security Service Application Program Interface Version 2, Update 1", RFC 2743, January 2000.

[RFC2743] Linn、J。、「Generic Security Service Application Program Interfaceバージョン2、Update 1」、RFC 2743、2000年1月。

[RFC3961] Raeburn, K., "Encryption and Checksum Specifications for Kerberos 5", RFC 3961, February 2005.

[RFC3961] Raeburn、K。、「Kerberos 5の暗号化とチェックサム仕様」、RFC 3961、2005年2月。

[RFC3962] Raeburn, K., "Advanced Encryption Standard (AES) Encryption for Kerberos 5", RFC 3962, February 2005.

[RFC3962] Raeburn、K。、「Kerberos 5の高度な暗号化標準(AES)暗号化」、RFC 3962、2005年2月。

[RFC4121] Zhu, L., Jaganathan, K., and S. Hartman, "The Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2", RFC 4121, July 2005.

[RFC4121] Zhu、L.、Jaganathan、K。、およびS. Hartman、「Kerberosバージョン5ジェネリックセキュリティサービスアプリケーションプログラムインターフェイス(GSS-API)メカニズム:バージョン2、RFC 4121、2005年7月。

[RFC4401] Williams, N., "A Pseudo-Random Function (PRF) API Extension for the Generic Security Service Application Program Interface (GSS-API)", RFC 4401, February 2006.

[RFC4401]ウィリアムズ、N。、「一般的なセキュリティサービスアプリケーションプログラムインターフェイス(GSS-API)の擬似ランダム関数(PRF)API拡張」、RFC 4401、2006年2月。

[RFC4402] Williams, N., "A Pseudo-Random Function (PRF) for the Kerberos V Generic Security Service Application Program Interface (GSS-API) Mechanism", RFC 4402, February 2006.

[RFC4402]ウィリアムズ、N。、「Kerberos v Generic Security Service Application Program Interface(GSS-API)メカニズムの擬似ランダム関数(PRF)」、RFC 4402、2006年2月。

[RFC5801] Josefsson, S. and N. Williams, "Using Generic Security Service Application Program Interface (GSS-API) Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family", RFC 5801, July 2010.

[RFC5801] Josefsson、S。およびN. Williams、「一般的な認証およびセキュリティ層(SASL)のジェネリックセキュリティサービスアプリケーションプログラムインターフェイス(GSS-API)メカニズム:GS2メカニズムファミリー」、RFC 5801、2010年7月。

12.3. Informative References
12.3. 参考引用

[CRAMHISTORIC] Zeilenga, K., "CRAM-MD5 to Historic", Work in Progress, November 2008.

[Cramhistoric] Zeilenga、K。、「Cram-Md5 to Historic」、2008年11月、進行中の作業。

[DIGESTHISTORIC] Melnikov, A., "Moving DIGEST-MD5 to Historic", Work in Progress, July 2008.

[Digesthistoric] Melnikov、A。、「Digest-MD5を歴史的に移動する」、2008年7月、進行中の作業。

[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, "Remote Authentication Dial In User Service (RADIUS)", RFC 2865, June 2000.

[RFC2865] Rigney、C.、Willens、S.、Rubens、A。、およびW. Simpson、「リモート認証ダイヤルインユーザーサービス(RADIUS)」、RFC 2865、2000年6月。

[RFC2898] Kaliski, B., "PKCS #5: Password-Based Cryptography Specification Version 2.0", RFC 2898, September 2000.

[RFC2898] Kaliski、B。、「PKCS#5:パスワードベースの暗号化仕様バージョン2.0」、RFC 2898、2000年9月。

[RFC2945] Wu, T., "The SRP Authentication and Key Exchange System", RFC 2945, September 2000.

[RFC2945] Wu、T。、「SRP認証とキー交換システム」、RFC 2945、2000年9月。

[RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005.

[RFC4086] Eastlake、D.、Schiller、J。、およびS. Crocker、「セキュリティのランダム性要件」、BCP 106、RFC 4086、2005年6月。

[RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006.

[RFC4510] Zeilenga、K。、「Lightweight Directory Access Protocol(LDAP):技術仕様ロードマップ」、RFC 4510、2006年6月。

[RFC4616] Zeilenga, K., "The PLAIN Simple Authentication and Security Layer (SASL) Mechanism", RFC 4616, August 2006.

[RFC4616] Zeilenga、K。、「プレーンシンプルな認証およびセキュリティレイヤー(SASL)メカニズム」、RFC 4616、2006年8月。

[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", RFC 4949, August 2007.

[RFC4949] Shirey、R。、「インターネットセキュリティ用語集、バージョン2」、RFC 4949、2007年8月。

[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.

[RFC5226] Narten、T。およびH. Alvestrand、「RFCSでIANA考慮事項セクションを書くためのガイドライン」、BCP 26、RFC 5226、2008年5月。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.

[RFC5246] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)プロトコルバージョン1.2」、RFC 5246、2008年8月。

[RFC5803] Melnikov, A., "Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted Challenge Response Authentication Mechanism (SCRAM) Secrets", RFC 5803, July 2010.

[RFC5803] Melnikov、A。、「塩ングチャレンジ応答認証メカニズム(SCRAM)Secretsを保存するためのLightweight Directory Access Protocol(LDAP)スキーマ」、RFC 5803、2010年7月。

[tls-server-end-point] IANA, "Registration of TLS server end-point channel bindings", available from http://www.iana.org, June 2008.

[TLS-Server-End-Point] IANA、「TLSサーバーエンドポイントチャネルバインディングの登録」、http://www.iana.org、2008年6月から入手可能。

Appendix A. Other Authentication Mechanisms
付録A. その他の認証メカニズム

The DIGEST-MD5 [DIGESTHISTORIC] mechanism has proved to be too complex to implement and test, and thus has poor interoperability. The security layer is often not implemented, and almost never used; everyone uses TLS instead. For a more complete list of problems with DIGEST-MD5 that led to the creation of SCRAM, see [DIGESTHISTORIC].

Digest-MD5 [消化器]メカニズムは、実装およびテストするには複雑すぎることが証明されているため、相互運用性が低下しています。多くの場合、セキュリティレイヤーは実装されておらず、ほとんど使用されていません。代わりに誰もがTLSを使用します。スクラムの作成につながったDigest-MD5の問題のより完全なリストについては、[Digesthistoric]を参照してください。

The CRAM-MD5 SASL mechanism, while widely deployed, also has some problems. In particular, it is missing some modern SASL features such as support for internationalized usernames and passwords, support for passing of authorization identity, and support for channel bindings. It also doesn't support server authentication. For a more complete list of problems with CRAM-MD5, see [CRAMHISTORIC].

CRAM-MD5 SASLメカニズムは、広く展開されていますが、いくつかの問題があります。特に、国際化されたユーザー名とパスワードのサポート、承認アイデンティティの合格のサポート、チャネルバインディングのサポートなど、最新のSASL機能が欠落しています。また、サーバー認証もサポートしていません。Cram-MD5の問題のより完全なリストについては、[Cramhistoric]を参照してください。

The PLAIN [RFC4616] SASL mechanism allows a malicious server or eavesdropper to impersonate the authenticating user to any other server for which the user has the same password. It also sends the password in the clear over the network, unless TLS is used. Server authentication is not supported.

Plain [RFC4616] SASLメカニズムにより、悪意のあるサーバーまたは盗聴者が、ユーザーが同じパスワードを持っている他のサーバーに認証ユーザーを偽装することができます。また、TLSが使用されない限り、ネットワーク上のクリアでパスワードを送信します。サーバー認証はサポートされていません。

Appendix B. Design Motivations
付録B. デザインの動機

The following design goals shaped this document. Note that some of the goals have changed since the initial version of the document.

次の設計目標は、このドキュメントを形作りました。ドキュメントの初期バージョン以来、いくつかの目標が変更されたことに注意してください。

o The SASL mechanism has all modern SASL features: support for internationalized usernames and passwords, support for passing of authorization identity, and support for channel bindings.

o SASLメカニズムには、すべての最新のSASL機能があります。国際化されたユーザー名とパスワードのサポート、承認アイデンティティの合格のサポート、およびチャネルバインディングのサポート。

o The protocol supports mutual authentication.

o プロトコルは相互認証をサポートします。

o The authentication information stored in the authentication database is not sufficient by itself to impersonate the client.

o 認証データベースに保存されている認証情報は、クライアントになりすましても十分ではありません。

o The server does not gain the ability to impersonate the client to other servers (with an exception for server-authorized proxies), unless such other servers allow SCRAM authentication and use the same salt and iteration count for the user.

o サーバーは、他のサーバーがスクラム認証を許可し、ユーザーに同じ塩と反復カウントを使用しない限り、クライアントを他のサーバーに偽装する機能を獲得しません(サーバーが認可されたプロキシを除く)。

o The mechanism is extensible, but (hopefully) not over-engineered in this respect.

o メカニズムは拡張可能ですが、(できれば)この点では過剰に設計されていません。

o The mechanism is easier to implement than DIGEST-MD5 in both clients and servers.

o メカニズムは、クライアントとサーバーの両方でDigest-MD5よりも実装しやすいです。

Authors' Addresses

著者のアドレス

Chris Newman Oracle 800 Royal Oaks Monrovia, CA 91016 USA

クリスニューマンオラクル800ロイヤルオークスモンロビア、カリフォルニア91016 USA

   EMail: chris.newman@oracle.com
        

Abhijit Menon-Sen Oryx Mail Systems GmbH

Abhijit Menon-Sen Oryx Mail Systems Gmbh

   EMail: ams@toroid.org
        

Alexey Melnikov Isode, Ltd.

Alexey Melnikov Isode、Ltd。

   EMail: Alexey.Melnikov@isode.com
        

Nicolas Williams Oracle 5300 Riata Trace Ct Austin, TX 78727 USA

ニコラス・ウィリアムズオラクル5300リアタトレースCTオースティン、テキサス78727 USA

   EMail: Nicolas.Williams@oracle.com