[要約] RFC 8018は、PKCS #5: Password-Based Cryptography Specification Version 2.1に関する文書で、パスワードベースの暗号化技術に関する標準を定めています。この規格は、パスワードを用いて秘密鍵やデータを安全に暗号化・復号するための方法を提供し、主にデータの保護や認証システムで利用されます。関連するRFCとしては、RFC 2898(PKCS #5: Password-Based Cryptography Specification Version 2.0)があり、RFC 8018はこの更新版にあたります。また、RFC 4086(Randomness Requirements for Security)も、安全な暗号鍵生成に関連する重要なガイドラインを提供しています。

Internet Engineering Task Force (IETF)                  K. Moriarty, Ed.
Request for Comments: 8018                                      Dell EMC
Obsoletes: 2898                                               B. Kaliski
Category: Informational                                         Verisign
ISSN: 2070-1721                                                 A. Rusch
                                                                     RSA
                                                            January 2017
        

PKCS #5: Password-Based Cryptography Specification Version 2.1

PKCS#5:パスワードベースの暗号化仕様バージョン2.1

Abstract

概要

This document provides recommendations for the implementation of password-based cryptography, covering key derivation functions, encryption schemes, message authentication schemes, and ASN.1 syntax identifying the techniques.

このドキュメントでは、鍵導出関数、暗号化スキーム、メッセージ認証スキーム、およびテクニックを識別するASN.1構文をカバーする、パスワードベースの暗号化の実装に関する推奨事項を提供します。

This document represents a republication of PKCS #5 v2.1 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.

このドキュメントは、RSA Laboratoriesの公開鍵暗号化標準(PKCS)シリーズからのPKCS#5 v2.1の再版を表しています。このRFCを公開することにより、変更管理がIETFに移されます。

This document also obsoletes RFC 2898.

このドキュメントはRFC 2898も廃止します。

Status of This Memo

本文書の状態

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントは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). Not all documents approved by the IESG are a candidate for any level of Internet Standard; see Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。 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/rfc8018.

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

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  . . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Notation  . . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   5
   4.  Salt and Iteration Count  . . . . . . . . . . . . . . . . . .   7
     4.1.  Salt  . . . . . . . . . . . . . . . . . . . . . . . . . .   7
     4.2.  Iteration Count . . . . . . . . . . . . . . . . . . . . .   9
   5.  Key Derivation Functions  . . . . . . . . . . . . . . . . . .   9
     5.1.  PBKDF1  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     5.2.  PBKDF2  . . . . . . . . . . . . . . . . . . . . . . . . .  11
   6.  Encryption Schemes  . . . . . . . . . . . . . . . . . . . . .  13
     6.1.  PBES1 . . . . . . . . . . . . . . . . . . . . . . . . . .  13
       6.1.1.  PBES1 Encryption Operation  . . . . . . . . . . . . .  13
       6.1.2.  PBES1 Decryption Operation  . . . . . . . . . . . . .  15
     6.2.  PBES2 . . . . . . . . . . . . . . . . . . . . . . . . . .  15
       6.2.1.  PBES2 Encryption Operation  . . . . . . . . . . . . .  16
       6.2.2.  PBES2 Decryption Operation  . . . . . . . . . . . . .  16
   7.  Message Authentication Schemes  . . . . . . . . . . . . . . .  17
     7.1.  PBMAC1  . . . . . . . . . . . . . . . . . . . . . . . . .  17
       7.1.1.  PBMAC1 Generation Operation . . . . . . . . . . . . .  17
       7.1.2.  PBMAC1 Verification Operation . . . . . . . . . . . .  18
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  18
   9.  Normative References  . . . . . . . . . . . . . . . . . . . .  19
   Appendix A.  ASN.1 Syntax . . . . . . . . . . . . . . . . . . . .  23
     A.1.  PBKDF1  . . . . . . . . . . . . . . . . . . . . . . . . .  23
     A.2.  PBKDF2  . . . . . . . . . . . . . . . . . . . . . . . . .  23
     A.3.  PBES1 . . . . . . . . . . . . . . . . . . . . . . . . . .  25
     A.4.  PBES2 . . . . . . . . . . . . . . . . . . . . . . . . . .  26
     A.5.  PBMAC1  . . . . . . . . . . . . . . . . . . . . . . . . .  26
   Appendix B.  Supporting Techniques  . . . . . . . . . . . . . . .  27
     B.1.  Pseudorandom Functions  . . . . . . . . . . . . . . . . .  28
       B.1.1.  HMAC-SHA-1  . . . . . . . . . . . . . . . . . . . . .  28
       B.1.2.  HMAC-SHA-2  . . . . . . . . . . . . . . . . . . . . .  29
     B.2.  Encryption Schemes  . . . . . . . . . . . . . . . . . . .  29
       B.2.1.  DES-CBC-Pad . . . . . . . . . . . . . . . . . . . . .  30
       B.2.2.  DES-EDE3-CBC-Pad  . . . . . . . . . . . . . . . . . .  30
       B.2.3.  RC2-CBC-Pad . . . . . . . . . . . . . . . . . . . . .  30
       B.2.4.  RC5-CBC-Pad . . . . . . . . . . . . . . . . . . . . .  31
       B.2.5.  AES-CBC-Pad . . . . . . . . . . . . . . . . . . . . .  32
     B.3.  Message Authentication Schemes  . . . . . . . . . . . . .  33
       B.3.1.  HMAC-SHA-1  . . . . . . . . . . . . . . . . . . . . .  33
       B.3.2.  HMAC-SHA-2  . . . . . . . . . . . . . . . . . . . . .  33
   Appendix C.  ASN.1 Module . . . . . . . . . . . . . . . . . . . .  34
   Appendix D.  Revision History of PKCS #5  . . . . . . . . . . . .  38
   Appendix E.  About PKCS . . . . . . . . . . . . . . . . . . . . .  39
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  40
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  40
        
1. Introduction
1. はじめに

This document provides recommendations for the implementation of password-based cryptography, covering the following aspects:

このドキュメントでは、パスワードベースの暗号化の実装に関する推奨事項を提供し、次の側面をカバーしています。

- key derivation functions - encryption schemes - message authentication schemes - ASN.1 syntax identifying the techniques

- 鍵導出関数-暗号化スキーム-メッセージ認証スキーム-技法を識別するASN.1構文

The recommendations are intended for general application within computer and communications systems and, as such, include a fair amount of flexibility. They are particularly intended for the protection of sensitive information such as private keys as in PKCS #8 [PKCS8] [RFC5958]. It is expected that application standards and implementation profiles based on these specifications may include additional constraints.

推奨事項は、コンピュータおよび通信システム内の一般的なアプリケーションを対象としているため、かなりの柔軟性が含まれています。特に、PKCS#8 [PKCS8] [RFC5958]のような秘密鍵などの機密情報の保護を目的としています。これらの仕様に基づくアプリケーション標準および実装プロファイルには、追加の制約が含まれる場合があります。

Other cryptographic techniques based on passwords, such as password-based key entity authentication and key establishment protocols [BELLOV] [JABLON] [WU] are outside the scope of this document. Guidelines for the selection of passwords are also outside the scope. This document supersedes PKCS #5 version 2.0 [RFC2898] but includes compatible techniques.

パスワードベースのキーエンティティ認証やキー確立プロトコル[BELLOV] [JABLON] [WU]など、パスワードに基づく他の暗号化手法は、このドキュメントの範囲外です。パスワード選択のガイドラインも範囲外です。このドキュメントはPKCS#5バージョン2.0 [RFC2898]に取って代わりますが、互換性のあるテクニックが含まれています。

This document represents a republication of PKCS #5 v2.1 [PKCS5_21] from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series.

このドキュメントは、RSA Laboratoriesの公開鍵暗号規格(PKCS)シリーズからのPKCS#5 v2.1 [PKCS5_21]の再版を表しています。

2. Notation
2. 表記
   C       ciphertext, an octet string

   c       iteration count, a positive integer

   DK      derived key, an octet string

   dkLen   length in octets of derived key, a positive integer

   EM      encoded message, an octet string

   Hash    underlying hash function

   hLen    length in octets of pseudorandom function output, a positive
           integer

   l       length in blocks of derived key, a positive integer
        
   IV      initialization vector, an octet string

   K       encryption key, an octet string

   KDF     key derivation function

   M       message, an octet string

   P       password, an octet string

   PRF     underlying pseudorandom function

   PS      padding string, an octet string

   psLen   length in octets of padding string, a positive integer

   S       salt, an octet string

   T       message authentication code, an octet string

   T_1, ..., T_l, U_1, ..., U_c
           intermediate values, octet strings

   01, 02, ..., 08
           octets with value 1, 2, ..., 8

   \xor    bit-wise exclusive-or of two octet strings

   ||  ||  octet length operator

   ||      concatenation operator

   <i..j>  substring extraction operator: extracts octets i through j,
           0 <= i <= j
        
3. Overview
3. 概観

In many applications of public-key cryptography, user security is ultimately dependent on one or more secret text values or passwords. Since a password is not directly applicable as a key to any conventional cryptosystem, however, some processing of the password is required to perform cryptographic operations with it. Moreover, as passwords are often chosen from a relatively small space, special care is required in that processing to defend against search attacks.

公開鍵暗号化の多くのアプリケーションでは、ユーザーのセキュリティは最終的に1つ以上の秘密のテキスト値またはパスワードに依存しています。ただし、パスワードは従来の暗号システムのキーとして直接適用できないため、パスワードを使用して暗号化操作を実行するには、パスワードの処理が必要です。さらに、パスワードは比較的狭いスペースから選択されることが多いため、検索攻撃を防ぐためにその処理には特別な注意が必要です。

A general approach to password-based cryptography, as described by Morris and Thompson [MORRIS] for the protection of password tables, is to combine a password with a salt to produce a key. The salt can be viewed as an index into a large set of keys derived from the password and need not be kept secret. Although it may be possible for an opponent to construct a table of possible passwords (a so-called "dictionary attack"), constructing a table of possible keys will be difficult, since there will be many possible keys for each password. An opponent will thus be limited to searching through passwords separately for each salt.

Morris and Thompson [MORRIS]がパスワードテーブルの保護について説明しているように、パスワードベースの暗号化に対する一般的なアプローチは、パスワードをソルトと組み合わせてキーを生成することです。ソルトは、パスワードから派生した大量のキーのセットのインデックスと見なすことができ、秘密にしておく必要はありません。対戦相手が可能なパスワードのテーブルを作成することは可能ですが(いわゆる「辞書攻撃」)、パスワードごとに可能なキーが多数あるため、可能なキーのテーブルを作成することは困難です。したがって、対戦相手は、ソルトごとに個別にパスワードを検索することに制限されます。

Another approach to password-based cryptography is to construct key derivation techniques that are relatively expensive, thereby increasing the cost of exhaustive search. One way to do this is to include an iteration count in the key derivation technique, indicating how many times to iterate some underlying function by which keys are derived. A modest number of iterations (say, 1000) is not likely to be a burden for legitimate parties when computing a key, but will be a significant burden for opponents.

パスワードベースの暗号化への別のアプローチは、比較的高価な鍵導出技術を構築することであり、それによって徹底的な検索のコストが増加します。これを行う1つの方法は、キー導出技法に反復カウントを含めることです。これは、キーが導出される基になる関数を反復する回数を示します。適度な反復回数(たとえば、1000回)は、キーを計算するときに正当な当事者にとって負担になる可能性は低いですが、反対者にとっては大きな負担になります。

Salt and iteration count formed the basis for password-based encryption in PKCS #5 v2.0, and are adopted here as well for the various cryptographic operations. Thus, password-based key derivation as defined here is a function of a password, a salt, and an iteration count, where the latter two quantities need not be kept secret.

PKCS#5 v2.0では、ソルトとイテレーションのカウントがパスワードベースの暗号化の基礎を形成し、ここでもさまざまな暗号化操作に採用されています。したがって、ここで定義されているパスワードベースのキーの導出は、パスワード、ソルト、および反復回数の関数であり、後者の2つの量を秘密にする必要はありません。

From a password-based key derivation function, it is straightforward to define password-based encryption and message authentication schemes. As in PKCS #5 v2.0, the password-based encryption schemes here are based on an underlying, conventional encryption scheme, where the key for the conventional scheme is derived from the password. Similarly, the password-based message authentication scheme is based on an underlying conventional scheme. This two-layered approach makes the password-based techniques modular in terms of the underlying techniques they can be based on.

パスワードベースの鍵導出関数から、パスワードベースの暗号化およびメッセージ認証スキームを定義することは簡単です。 PKCS#5 v2.0と同様に、ここでのパスワードベースの暗号化スキームは、基本的な従来の暗号化スキームに基づいており、従来のスキームのキーはパスワードから導出されます。同様に、パスワードベースのメッセージ認証スキームは、基礎となる従来のスキームに基づいています。この2層のアプローチにより、パスワードベースの手法は、基礎となる手法の観点からモジュール化されます。

It is expected that the password-based key derivation functions may find other applications than just the encryption and message authentication schemes defined here. For instance, one might derive a set of keys with a single application of a key derivation function, rather than derive each key with a separate application of the function. The keys in the set would be obtained as substrings of the output of the key derivation function. This approach might be employed as part of key establishment in a session-oriented protocol. Another application is password checking, where the output of the key derivation function is stored (along with the salt and iteration count) for the purposes of subsequent verification of a password.

パスワードベースの鍵導出関数は、ここで定義された暗号化およびメッセージ認証方式だけでなく、他のアプリケーションを見つける可能性があると予想されます。たとえば、関数の個別のアプリケーションで各キーを導出するのではなく、キー導出関数の単一のアプリケーションで一連のキーを導出する場合があります。セット内のキーは、キー導出関数の出力のサブストリングとして取得されます。このアプローチは、セッション指向プロトコルでのキー確立の一部として採用される可能性があります。もう1つのアプリケーションはパスワードチェックです。パスワードの後続の検証のために、キー導出関数の出力が(ソルトおよび反復回数とともに)保存されます。

Throughout this document, a password is considered to be an octet string of arbitrary length whose interpretation as a text string is unspecified. In the interest of interoperability, however, it is recommended that applications follow some common text encoding rules. ASCII and UTF-8 [RFC3629] are two possibilities. (ASCII is a subset of UTF-8.)

このドキュメント全体を通して、パスワードはテキスト文字列としての解釈が指定されていない任意の長さのオクテット文字列と見なされます。ただし、相互運用性のために、アプリケーションはいくつかの一般的なテキストエンコーディングルールに従うことをお勧めします。 ASCIIとUTF-8 [RFC3629]は2つの可能性があります。 (ASCIIはUTF-8のサブセットです。)

Although the selection of passwords is outside the scope of this document, guidelines have been published [NISTSP63] that may well be taken into account.

パスワードの選択はこのドキュメントの範囲外ですが、考慮に入れられる可能性のあるガイドラインが公開されています[NISTSP63]。

4. Salt and Iteration Count
4. ソルトと反復回数

Inasmuch as salt and iteration count are central to the techniques defined in this document, some further discussion is warranted.

ソルトとイテレーションの数は、このドキュメントで定義されているテクニックの中心であるので、さらに議論する必要があります。

4.1. Salt
4.1. ソルト

A salt in password-based cryptography has traditionally served the purpose of producing a large set of keys corresponding to a given password, one of which is selected at random according to the salt. An individual key in the set is selected by applying a key derivation function KDF, as

パスワードベースの暗号化におけるソルトは、伝統的に、与えられたパスワードに対応する大量のキーのセットを生成する目的を果たしてきました。そのうちの1つはソルトに従ってランダムに選択されます。セット内の個々のキーは、次のようにキー導出関数KDFを適用することによって選択されます。

                              DK = KDF (P, S)
        

where DK is the derived key, P is the password, and S is the salt. This has two benefits:

ここで、DKは派生キー、Pはパスワード、Sはソルトです。これには2つの利点があります。

1. It is difficult for an opponent to precompute all the keys, or even the most likely keys, corresponding to a dictionary of passwords. If the salt is 64 bits long, for instance, there will be as many as 2^64 keys for each password. An opponent is thus limited to searching for passwords after a password-based operation has been performed and the salt is known.

1. パスワードの辞書に対応するすべてのキー、または最も可能性の高いキーでさえ、対戦相手が事前に計算することは困難です。たとえば、ソルトが64ビット長の場合、パスワードごとに2 ^ 64個のキーがあります。したがって、対戦相手は、パスワードベースの操作が実行され、ソルトがわかった後に、パスワードを検索することに制限されます。

2. It is unlikely that the same key will be selected twice. Again, if the salt is 64 bits long, the chance of "collision" between keys does not become significant until about 2^32 keys have been produced, according to the Birthday Paradox. The fact that collisions are unlikely addresses some concerns about interactions between multiple uses of the same key that may arise when using some encryption and authentication techniques.

2. 同じキーが2回選択されることはほとんどありません。ここでも、ソルトが64ビット長の場合、誕生日パラドックスによると、約2 ^ 32のキーが生成されるまで、キー間の「衝突」の可能性は重要になりません。衝突が発生する可能性が低いという事実は、いくつかの暗号化および認証技術を使用するときに発生する可能性のある、同じキーの複数の使用間の相互作用に関するいくつかの懸念に対処しません。

In password-based encryption, the party encrypting a message can gain assurance that these benefits are realized simply by selecting a large and sufficiently random salt when deriving an encryption key from a password. A party generating a message authentication code can gain such assurance in a similar fashion.

パスワードベースの暗号化では、メッセージを暗号化する当事者は、パスワードから暗号化キーを取得するときに、大きくて十分にランダムなソルトを選択するだけでこれらの利点が実現されることを保証できます。メッセージ認証コードを生成する当事者は、同様の方法でそのような保証を得ることができます。

The party decrypting a message or verifying a message authentication code, however, cannot be sure that a salt supplied by another party has actually been generated at random. It is possible, for instance, that the salt may have been copied from another password-based operation in an attempt to exploit interactions between multiple uses of the same key. For instance, suppose two legitimate parties exchange an encrypted message, where the encryption key is an 80-bit key derived from a shared password with some salt. An opponent could take the salt from that encryption and provide it to one of the parties as though it were for a 40-bit key. If the party reveals the result of decryption with the 40-bit key, the opponent may be able to solve for the 40-bit key. In the case that 40-bit key is the first half of the 80-bit key, the opponent can then readily solve for the remaining 40 bits of the 80-bit key.

ただし、メッセージを復号化したり、メッセージ認証コードを検証したりする当事者は、他の当事者から提供されたソルトが実際にランダムに生成されたことを確認できません。たとえば、同じキーの複数の使用間の相互作用を悪用するために、ソルトが別のパスワードベースの操作からコピーされた可能性があります。たとえば、2つの正当な当事者が暗号化されたメッセージを交換するとします。暗号化キーは、ソルトを含む共有パスワードから派生した80ビットのキーです。対戦相手は、その暗号化からソルトを取り出し、それを40ビットの鍵の場合と同じようにパーティーの1つに提供できます。パーティが40ビットキーを使用した復号化の結果を明らかにした場合、相手は40ビットキーを解決できる可能性があります。 40ビットのキーが80ビットのキーの前半である場合、対戦相手は80ビットのキーの残りの40ビットを簡単に解決できます。

To defend against such attacks, either the interaction between multiple uses of the same key should be carefully analyzed, or the salt should contain data that explicitly distinguishes between different operations. For instance, the salt might have an additional, non-random octet that specifies whether the derived key is for encryption, for message authentication, or for some other operation.

このような攻撃を防ぐには、同じキーの複数の使用間の相互作用を注意深く分析するか、ソルトに異なる操作を明確に区別するデータを含める必要があります。たとえば、ソルトには、派生キーが暗号化、メッセージ認証、またはその他の操作のいずれであるかを指定する、追加のランダムでないオクテットがある場合があります。

Based on this, the following is recommended for salt selection:

これに基づいて、ソルトの選択には以下が推奨されます。

1. If there is no concern about interactions between multiple uses of the same key (or a prefix of that key) with the password-based encryption and authentication techniques supported for a given password, then the salt may be generated at random and need not be checked for a particular format by the party receiving the salt. It should be at least eight octets (64 bits) long.

1. 同じキー(またはそのキーのプレフィックス)の複数の使用と、特定のパスワードでサポートされているパスワードベースの暗号化および認証技術との相互作用の心配がない場合、ソルトはランダムに生成される可能性があるため、チェックする必要はありません。ソルトを受け取る側による特定のフォーマット。少なくとも8オクテット(64ビット)である必要があります。

2. Otherwise, the salt should contain data that explicitly distinguishes between different operations and different key lengths, in addition to a random part that is at least eight octets long, and this data should be checked or regenerated by the party receiving the salt. For instance, the salt could have an additional non-random octet that specifies the purpose of the derived key. Alternatively, it could be the encoding of a structure that specifies detailed information about the derived key, such as the encryption or authentication technique and a sequence number among the different keys derived from the password. The particular format of the additional data is left to the application.

2. それ以外の場合、ソルトには、少なくとも8オクテット長のランダムな部分に加えて、さまざまな操作とさまざまなキーの長さを明確に区別するデータが含まれている必要があり、このデータはソルトを受信する側によって確認または再生成される必要があります。たとえば、ソルトは派生キーの目的を指定する追加の非ランダムオクテットを持つことができます。あるいは、暗号化や認証の手法、パスワードから派生したさまざまなキーのシーケンス番号など、派生キーに関する詳細情報を指定する構造のエンコードにすることもできます。追加データの特定の形式はアプリケーションに委ねられます。

Note: If a random number generator or pseudorandom generator is not available, a deterministic alternative for generating the salt (or the random part of it) is to apply a password-based key derivation function to the password and the message M to be processed. For instance, the salt could be computed with a key derivation function as S = KDF (P, M). This approach is not recommended if the message M is known to belong to a small message space (e.g., "Yes" or "No"), however, since then there will only be a small number of possible salts.

注:乱数ジェネレーターまたは疑似乱数ジェネレーターが使用できない場合、ソルト(またはそのランダムな部分)を生成するための決定論的な代替方法は、パスワードベースの鍵導出関数をパスワードと処理するメッセージMに適用することです。たとえば、ソルトは、S = KDF(P、M)のようなキー導出関数で計算できます。メッセージMが小さいメッセージスペースに属することがわかっている場合(たとえば、「はい」または「いいえ」)、このアプローチはお勧めできません。その場合、可能なソルトの数が少なくなるためです。

4.2. Iteration Count
4.2. 反復回数

An iteration count has traditionally served the purpose of increasing the cost of producing keys from a password, thereby also increasing the difficulty of attack. Mathematically, an iteration count of c will increase the security strength of a password by log2(c) bits against trial-based attacks like brute force or dictionary attacks.

従来、反復回数は、パスワードからキーを生成するコストを増加させ、それによって攻撃の難易度を増加させるという目的を果たしてきました。数学的には、cの反復回数は、ブルートフォース攻撃や辞書攻撃などの試行ベースの攻撃に対して、log2(c)ビットだけパスワードのセキュリティ強度を高めます。

Choosing a reasonable value for the iteration count depends on environment and circumstances, and varies from application to application. This document follows the recommendations made in FIPS Special Publication 800-132 [NISTSP132], which says

反復回数に適切な値を選択することは、環境と状況に依存し、アプリケーションごとに異なります。このドキュメントは、FIPS Special Publication 800-132 [NISTSP132]で行われた推奨事項に従っています。

The iteration count shall be selected as large as possible, as long as the time required to generate the key using the entered password is acceptable for the users. [...] A minimum iteration count of 1,000 is recommended. For especially critical keys, or for very powerful systems or systems where user-perceived performance is not critical, an iteration count of 10,000,000 may be appropriate.

入力されたパスワードを使用してキーを生成するのに必要な時間がユーザーにとって許容範囲内である限り、反復回数はできるだけ大きく選択する必要があります。 [...]最小反復数は1,000をお勧めします。特に重要なキー、またはユーザーが認識したパフォーマンスが重要ではない非常に強力なシステムの場合、10,000,000の反復回数が適切な場合があります。

5. Key Derivation Functions
5. 主要な派生関数

A key derivation function produces a derived key from a base key and other parameters. In a password-based key derivation function, the base key is a password, and the other parameters are a salt value and an iteration count, as outlined in Section 3.

キー導出関数は、ベースキーおよびその他のパラメータから導出キーを生成します。セクション3で概説するように、パスワードベースのキー導出関数では、ベースキーはパスワードであり、他のパラメータはソルト値と反復回数です。

The primary application of the password-based key derivation functions defined here is in the encryption schemes in Section 6 and the message authentication scheme in Section 7. Other applications are certainly possible, hence the independent definition of these functions.

ここで定義されているパスワードベースの鍵導出関数の主な用途は、セクション6の暗号化スキームとセクション7のメッセージ認証スキームにあります。他のアプリケーションも確かに可能であるため、これらの関数の独立した定義です。

Two functions are specified in this section: PBKDF1 and PBKDF2. PBKDF2 is recommended for new applications; PBKDF1 is included only for compatibility with existing applications and is not recommended for new applications.

このセクションでは、PBKDF1とPBKDF2の2つの関数を指定します。 PBKDF2は新しいアプリケーションに推奨されます。 PBKDF1は、既存のアプリケーションとの互換性のためにのみ含まれており、新しいアプリケーションには推奨されません。

A typical application of the key derivation functions defined here might include the following steps:

ここで定義されている主要な派生関数の一般的なアプリケーションには、次の手順が含まれる場合があります。

1. Select a salt S and an iteration count c, as outlined in Section 4.

1. セクション4で概説されているように、ソルトSと反復回数cを選択します。

2. Select a length in octets for the derived key, dkLen.

2. 派生キーdkLenの長さをオクテット単位で選択します。

3. Apply the key derivation function to the password, the salt, the iteration count and the key length to produce a derived key.

3. キー導出関数をパスワード、ソルト、反復回数、およびキー長に適用して、導出キーを生成します。

4. Output the derived key.

4. 派生キーを出力します。

Any number of keys may be derived from a password by varying the salt, as described in Section 3.

セクション3で説明するように、ソルトを変更することにより、任意の数のキーをパスワードから導出できます。

5.1. PBKDF1
5.1. PBKDF1

PBKDF1 applies a hash function, which shall be MD2 [RFC1319], MD5 [RFC1321], or SHA-1 [NIST180], to derive keys. The length of the derived key is bounded by the length of the hash function output, which is 16 octets for MD2 and MD5 and 20 octets for SHA-1. PBKDF1 is compatible with the key derivation process in PKCS #5 v1.5 [PKCS5_15].

PBKDF1はハッシュ関数(MD2 [RFC1319]、MD5 [RFC1321]、またはSHA-1 [NIST180])を適用してキーを導出します。派生キーの長さは、ハッシュ関数出力の長さによって制限されます。これは、MD2およびMD5の場合は16オクテット、SHA-1の場合は20オクテットです。 PBKDF1は、PKCS#5 v1.5 [PKCS5_15]の鍵導出プロセスと互換性があります。

PBKDF1 is recommended only for compatibility with existing applications since the keys it produces may not be large enough for some applications.

PBKDF1は、既存のアプリケーションとの互換性のためだけに使用することをお勧めします。これにより、PBKDF1が生成するキーは、アプリケーションによっては十分に大きくない場合があります。

   PBKDF1 (P, S, c, dkLen)

   Options:        Hash       underlying hash function

   Input:          P          password, an octet string
                   S          salt, an octet string
                   c          iteration count, a positive integer
                   dkLen      intended length in octets of derived key,
                              a positive integer, at most 16 for MD2 or
                              MD5 and 20 for SHA-1
   Output:         DK         derived key, a dkLen-octet string
        

Steps:

手順:

1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output "derived key too long" and stop.

1. MD2およびMD5の場合、dkLen> 16、またはSHA-1の場合、dkLen> 20の場合、「派生キーが長すぎます」と出力して停止します。

2. Apply the underlying hash function Hash for c iterations to the concatenation of the password P and the salt S, then extract the first dkLen octets to produce a derived key DK:

2. 基礎となるハッシュ関数Hash for cの反復をパスワードPとソルトSの連結に適用し、最初のdkLenオクテットを抽出して、派生キーDKを生成します。

                            T_1 = Hash (P || S) ,
                            T_2 = Hash (T_1) ,
                            ...
                            T_c = Hash (T_{c-1}) ,
                            DK = T_c<0..dkLen-1>
        

3. Output the derived key DK.

3. 派生キーDKを出力します。

5.2. PBKDF2
5.2. 静かに

PBKDF2 applies a pseudorandom function (see Appendix B.1 for an example) to derive keys. The length of the derived key is essentially unbounded. (However, the maximum effective search space for the derived key may be limited by the structure of the underlying pseudorandom function. See Appendix B.1 for further discussion.) PBKDF2 is recommended for new applications.

PBKDF2は、疑似ランダム関数(例については付録B.1を参照)を適用してキーを導出します。派生キーの長さは基本的に無制限です。 (ただし、派生キーの最大有効検索スペースは、基になる疑似乱数関数の構造によって制限される場合があります。詳細については、付録B.1を参照してください。)新規アプリケーションにはPBKDF2をお勧めします。

   PBKDF2 (P, S, c, dkLen)

   Options:        PRF        underlying pseudorandom function (hLen
                              denotes the length in octets of the
                              pseudorandom function output)

   Input:          P          password, an octet string
                   S          salt, an octet string
                   c          iteration count, a positive integer
                   dkLen      intended length in octets of the derived
                              key, a positive integer, at most
                              (2^32 - 1) * hLen

   Output:         DK         derived key, a dkLen-octet string
        

Steps:

手順:

1. If dkLen > (2^32 - 1) * hLen, output "derived key too long" and stop.

1. dkLen>(2 ^ 32-1)* hLenの場合、「派生キーが長すぎます」と出力して停止します。

2. Let l be the number of hLen-octet blocks in the derived key, rounding up, and let r be the number of octets in the last block:

2. lを派生キーのhLenオクテットブロックの数に切り上げ、rを最後のブロックのオクテットの数とします。

                   l = CEIL (dkLen / hLen)
                   r = dkLen - (l - 1) * hLen
        

Here, CEIL (x) is the "ceiling" function, i.e., the smallest integer greater than, or equal to, x.

ここで、CEIL(x)は「天井」関数です。つまり、x以上の最小の整数です。

3. For each block of the derived key apply the function F defined below to the password P, the salt S, the iteration count c, and the block index to compute the block:

3. 派生キーの各ブロックについて、以下で定義される関数FをパスワードP、ソルトS、反復回数c、およびブロックインデックスに適用して、ブロックを計算します。

                   T_1 = F (P, S, c, 1) ,
                   T_2 = F (P, S, c, 2) ,
                   ...
                   T_l = F (P, S, c, l) ,
        

where the function F is defined as the exclusive-or sum of the first c iterates of the underlying pseudorandom function PRF applied to the password P and the concatenation of the salt S and the block index i:

ここで、関数Fは、パスワードPに適用される基になる疑似ランダム関数PRFの最初の反復の排他的論理和、およびソルトSとブロックインデックスiの連結として定義されます。

                   F (P, S, c, i) = U_1 \xor U_2 \xor ... \xor U_c
        

where

ただし

                   U_1 = PRF (P, S || INT (i)) ,
                   U_2 = PRF (P, U_1) ,
                   ...
                   U_c = PRF (P, U_{c-1}) .
        

Here, INT (i) is a four-octet encoding of the integer i, most significant octet first.

ここで、INT(i)は整数iの4オクテットエンコーディングで、最も重要なオクテットが最初です。

4. Concatenate the blocks and extract the first dkLen octets to produce a derived key DK:

4. ブロックを連結し、最初のdkLenオクテットを抽出して、派生キーDKを生成します。

                   DK = T_1 || T_2 ||  ...  || T_l<0..r-1>
        

5. Output the derived key DK.

5. 派生キーDKを出力します。

Note: The construction of the function F follows a "belt-and-suspenders" approach. The iterates U_i are computed recursively to remove a degree of parallelism from an opponent; they are exclusive-ored together to reduce concerns about the recursion degenerating into a small set of values.

注:関数Fの構築は、「ベルトアンドサスペンダー」アプローチに従います。反復U_iは、対戦相手からある程度の並列処理を削除するために再帰的に計算されます。それらは、再帰が小さな値のセットに退化することに関する懸念を減らすために、排他的論理和がとられています。

6. Encryption Schemes
6. 暗号化スキーム

An encryption scheme, in the symmetric setting, consists of an encryption operation and a decryption operation, where the encryption operation produces a ciphertext from a message under a key, and the decryption operation recovers the message from the ciphertext under the same key. In a password-based encryption scheme, the key is a password.

対称設定の暗号化スキームは、暗号化操作と復号化操作で構成されます。暗号化操作では、キーの下のメッセージから暗号文が生成され、復号化操作では、同じキーの下の暗号文からメッセージが復元されます。パスワードベースの暗号化スキームでは、キーはパスワードです。

A typical application of a password-based encryption scheme is a private-key protection method, where the message contains private-key information, as in PKCS #8. The encryption schemes defined here would be suitable encryption algorithms in that context.

パスワードベースの暗号化スキームの一般的なアプリケーションは、PKCS#8のように、メッセージに秘密鍵情報が含まれる秘密鍵保護方式です。ここで定義されている暗号化スキームは、そのコンテキストに適した暗号化アルゴリズムです。

Two schemes are specified in this section: PBES1 and PBES2. PBES2 is recommended for new applications; PBES1 is included only for compatibility with existing applications and is not recommended for new applications.

このセクションでは、PBES1とPBES2の2つのスキームを指定します。 PBES2は新しいアプリケーションに推奨されます。 PBES1は、既存のアプリケーションとの互換性のためにのみ含まれており、新しいアプリケーションには推奨されません。

6.1. PBES1
6.1. PBS1

PBES1 combines the PBKDF1 function (Section 5.1) with an underlying block cipher, which shall be either DES [NIST46] or RC2 [RFC2268] in cipher block chaining (CBC) mode [NIST81]. PBES1 is compatible with the encryption scheme in PKCS #5 v1.5 [PKCS5_15].

PBES1は、PBKDF1関数(5.1節)を、DES [NIST46]またはRC2 [RFC2268]のいずれかである暗号化ブロックチェーン(CBC)モード[NIST81]の基礎となるブロック暗号と組み合わせます。 PBES1は、PKCS#5 v1.5 [PKCS5_15]の暗号化スキームと互換性があります。

PBES1 is recommended only for compatibility with existing applications, since it supports only two underlying encryption schemes, each of which has a key size (56 or 64 bits) that may not be large enough for some applications.

PBES1は、既存のアプリケーションとの互換性のためにのみ推奨されます。これは、基盤となる暗号化スキームが2つしかサポートされていないためです。

6.1.1. PBES1 Encryption Operation
6.1.1. PBES1暗号化操作

The encryption operation for PBES1 consists of the following steps, which encrypt a message M under a password P to produce a ciphertext C:

PBES1の暗号化操作は次の手順で構成され、メッセージMをパスワードPで暗号化して暗号文Cを生成します。

1. Select an eight-octet salt S and an iteration count c, as outlined in Section 4.

1. セクション4で概説されているように、8オクテットソルトSと反復カウントcを選択します。

2. Apply the PBKDF1 key derivation function (Section 5.1) to the password P, the salt S, and the iteration count c to produce a derived key DK of length 16 octets:

2. PBKDF1キー導出関数(セクション5.1)をパスワードP、ソルトS、および反復回数cに適用して、長さ16オクテットの導出キーDKを生成します。

                    DK = PBKDF1 (P, S, c, 16)
        

3. Separate the derived key DK into an encryption key K consisting of the first eight octets of DK and an initialization vector IV consisting of the next eight octets:

3. 派生キーDKを、DKの最初の8オクテットで構成される暗号化キーKと、次の8オクテットで構成される初期化ベクトルIVに分離します。

                    K   = DK<0..7>
                    IV  = DK<8..15>
        

4. Concatenate M and a padding string PS to form an encoded message EM:

4. Mとパディング文字列PSを連結して、エンコードされたメッセージEMを形成します。

                    EM = M || PS
        

where the padding string PS consists of 8-(||M|| mod 8) octets each with value 8-(||M|| mod 8). The padding string PS will satisfy one of the following statements:

ここで、パディング文字列PSは、値がそれぞれ8-(|| M || mod 8)の8-(|| M || mod 8)オクテットで構成されています。パディング文字列PSは、次のステートメントのいずれかを満たします。

                    PS = 01, if ||M|| mod 8 = 7 ;
                    PS = 02 02, if ||M|| mod 8 = 6 ;
                    ...
                    PS = 08 08 08 08 08 08 08 08, if ||M|| mod 8 = 0.
        

The length in octets of the encoded message will be a multiple of eight, and it will be possible to recover the message M unambiguously from the encoded message. (This padding rule is taken from RFC 1423 [RFC1423].)

エンコードされたメッセージのオクテットの長さは8の倍数であり、エンコードされたメッセージからメッセージMを明確に復元することが可能です。 (このパディングルールはRFC 1423 [RFC1423]から取得されています。)

5. Encrypt the encoded message EM with the underlying block cipher (DES or RC2) in CBC mode under the encryption key K with initialization vector IV to produce the ciphertext C. For DES, the key K shall be considered as a 64-bit encoding of a 56-bit DES key with parity bits ignored (see [NIST46]). For RC2, the "effective key bits" shall be 64 bits.

5. 暗号化されたメッセージEMを、初期化ベクトルIVで暗号化キーKの下にあるCBCモードの基礎となるブロック暗号(DESまたはRC2)で暗号化して、暗号文Cを生成します。DESの場合、キーKは、パリティビットを無視した56ビットのDESキー([NIST46]を参照)。 RC2の場合、「有効キービット」は64ビットです。

6. Output the ciphertext C.

6. 暗号文Cを出力します。

The salt S and the iteration count c may be conveyed to the party performing decryption in an AlgorithmIdentifier value (see Appendix A.3).

ソルトSと反復カウントcは、AlgorithmIdentifier値で復号を実行するパーティに伝えられます(付録A.3を参照)。

6.1.2. PBES1 Decryption Operation
6.1.2. PBES1復号化操作

The decryption operation for PBES1 consists of the following steps, which decrypt a ciphertext C under a password P to recover a message M:

PBES1の復号化操作は次の手順で構成され、パスワードMで暗号文Cを復号化してメッセージMを復元します。

1. Obtain the eight-octet salt S and the iteration count c.

1. 8オクテットのソルトSと反復回数cを取得します。

2. Apply the PBKDF1 key derivation function (Section 5.1) to the password P, the salt S, and the iteration count c to produce a derived key DK of length 16 octets:

2. PBKDF1キー導出関数(セクション5.1)をパスワードP、ソルトS、および反復回数cに適用して、長さ16オクテットの導出キーDKを生成します。

                    DK = PBKDF1 (P, S, c, 16)
        

3. Separate the derived key DK into an encryption key K consisting of the first eight octets of DK and an initialization vector IV consisting of the next eight octets:

3. 派生キーDKを、DKの最初の8オクテットで構成される暗号化キーKと、次の8オクテットで構成される初期化ベクトルIVに分離します。

                     K = DK<0..7>
                     IV  = DK<8..15>
        

4. Decrypt the ciphertext C with the underlying block cipher (DES or RC2) in CBC mode under the encryption key K with initialization vector IV to recover an encoded message EM. If the length in octets of the ciphertext C is not a multiple of eight, output "decryption error" and stop.

4. 暗号化されたメッセージEMを回復するために、初期化ベクトルIVを使用した暗号化キーKの下で、CBCモードの基礎となるブロック暗号(DESまたはRC2)で暗号文Cを復号化します。暗号文Cのオクテットの長さが8の倍数でない場合は、「復号化エラー」を出力して停止します。

5. Separate the encoded message EM into a message M and a padding string PS:

5. エンコードされたメッセージEMをメッセージMとパディング文字列PSに分離します。

                     EM = M || PS
        

where the padding string PS consists of some number psLen octets each with value psLen, where psLen is between 1 and 8. If it is not possible to separate the encoded message EM in this manner, output "decryption error" and stop.

ここで、パディング文字列PSは、それぞれ値psLenを持ついくつかのpsLenオクテットで構成されます。ここで、psLenは1〜8です。この方法でエンコードされたメッセージEMを分離できない場合は、「復号化エラー」を出力して停止します。

6. Output the recovered message M.

6. 復元されたメッセージMを出力します。

6.2. PBES2
6.2. PBES2

PBES2 combines a password-based key derivation function, which shall be PBKDF2 (Section 5.2) for this version of PKCS #5, with an underlying encryption scheme (see Appendix B.2 for examples). The key length and any other parameters for the underlying encryption scheme depend on the scheme.

PBES2は、このバージョンのPKCS#5のPBKDF2(セクション5.2)であるパスワードベースの鍵導出関数と、基礎となる暗号化スキーム(例については付録B.2を参照)を組み合わせたものです。基になる暗号化スキームのキーの長さおよびその他のパラメーターは、スキームによって異なります。

PBES2 is recommended for new applications.

PBES2は新しいアプリケーションに推奨されます。

6.2.1. PBES2 Encryption Operation
6.2.1. PBES2暗号化操作

The encryption operation for PBES2 consists of the following steps, which encrypt a message M under a password P to produce a ciphertext C, applying a selected key derivation function KDF and a selected underlying encryption scheme:

PBES2の暗号化操作は、次の手順で構成されます。これは、メッセージMをパスワードPで暗号化して暗号文Cを生成し、選択された鍵導出関数KDFと選択された基礎となる暗号化スキームを適用します。

1. Select a salt S and an iteration count c, as outlined in Section 4.

1. セクション4で概説されているように、ソルトSと反復回数cを選択します。

2. Select the length in octets, dkLen, for the derived key for the underlying encryption scheme.

2. 基礎となる暗号化スキームの派生キーに対して、オクテットの長さdkLenを選択します。

3. Apply the selected key derivation function to the password P, the salt S, and the iteration count c to produce a derived key DK of length dkLen octets:

3. 選択した鍵導出関数をパスワードP、salt S、および反復回数cに適用して、長さdkLenオクテットの導出鍵DKを生成します。

                     DK = KDF (P, S, c, dkLen)
        

4. Encrypt the message M with the underlying encryption scheme under the derived key DK to produce a ciphertext C. (This step may involve selection of parameters such as an initialization vector and padding, depending on the underlying scheme.)

4. 派生キーDKの下にある基本的な暗号化スキームでメッセージMを暗号化して、暗号文Cを生成します(このステップには、基本的なスキームに応じて、初期化ベクトルやパディングなどのパラメーターの選択が含まれる場合があります)。

5. Output the ciphertext C.

5. 暗号文Cを出力します。

The salt S, the iteration count c, the key length dkLen, and identifiers for the key derivation function and the underlying encryption scheme may be conveyed to the party performing decryption in an AlgorithmIdentifier value (see Appendix A.4).

ソルトS、反復回数c、キーの長さdkLen、キー導出関数の識別子、および基礎となる暗号化スキームは、AlgorithmIdentifier値で復号を実行するパーティに伝達できます(付録A.4を参照)。

6.2.2. PBES2 Decryption Operation
6.2.2. PBES2復号化操作

The decryption operation for PBES2 consists of the following steps, which decrypt a ciphertext C under a password P to recover a message M:

PBES2の復号化操作は次の手順で構成され、パスワードMで暗号文Cを復号化してメッセージMを復元します。

1. Obtain the salt S for the operation.

1. 操作用の塩Sを取得します。

2. Obtain the iteration count c for the key derivation function.

2. キー導出関数の反復回数cを取得します。

3. Obtain the key length in octets, dkLen, for the derived key for the underlying encryption scheme.

3. 基になる暗号化スキームの派生キーのキー長、オクテット、dkLenを取得します。

4. Apply the selected key derivation function to the password P, the salt S, and the iteration count c to produce a derived key DK of length dkLen octets:

4. 選択した鍵導出関数をパスワードP、salt S、および反復回数cに適用して、長さdkLenオクテットの導出鍵DKを生成します。

                    DK = KDF (P, S, c, dkLen)
        

5. Decrypt the ciphertext C with the underlying encryption scheme under the derived key DK to recover a message M. If the decryption function outputs "decryption error", then output "decryption error" and stop.

5. 派生鍵DKの下で基本となる暗号化スキームを使用して暗号文Cを復号化し、メッセージMを復元します。復号化関数が「復号化エラー」を出力した場合は、「復号化エラー」を出力して停止します。

6. Output the recovered message M.

6. 復元されたメッセージMを出力します。

7. Message Authentication Schemes
7. メッセージ認証スキーム

A message authentication scheme consists of a MAC (Message Authentication Code) generation operation and a MAC verification operation, where the MAC generation operation produces a MAC from a message under a key, and the MAC verification operation verifies the message authentication code under the same key. In a password-based message authentication scheme, the key is a password.

メッセージ認証方式は、MAC(メッセージ認証コード)生成操作とMAC検証操作で構成されます。MAC生成操作は、キーの下のメッセージからMACを生成し、MAC検証操作は、同じキーの下のメッセージ認証コードを検証します。 。パスワードベースのメッセージ認証スキームでは、キーはパスワードです。

One scheme is specified in this section: PBMAC1.

このセクションでは、1つのスキーム、PBMAC1を指定しています。

7.1. PBMAC1
7.1. PBMAC1

PBMAC1 combines a password-based key derivation function, which shall be PBKDF2 (Section 5.2) for this version of PKCS #5, with an underlying message authentication scheme (see Appendix B.3 for an example). The key length and any other parameters for the underlying message authentication scheme depend on the scheme.

PBMAC1は、このバージョンのPKCS#5のPBKDF2(セクション5.2)であるパスワードベースの鍵導出関数と、基礎となるメッセージ認証方式(例については付録B.3を参照)を組み合わせたものです。基になるメッセージ認証スキームのキーの長さおよびその他のパラメーターは、スキームによって異なります。

7.1.1. PBMAC1 Generation Operation
7.1.1. PBMAC1生成操作

The MAC generation operation for PBMAC1 consists of the following steps, which process a message M under a password P to generate a message authentication code T, applying a selected key derivation function KDF and a selected underlying message authentication scheme:

PBMAC1のMAC生成操作は、選択された鍵導出関数KDFと選択された基礎となるメッセージ認証スキームを適用して、メッセージ認証コードTを生成するためにパスワードPの下でメッセージMを処理する次のステップで構成されます。

1. Select a salt S and an iteration count c, as outlined in Section 4.

1. セクション4で概説されているように、ソルトSと反復回数cを選択します。

2. Select a key length in octets, dkLen, for the derived key for the underlying message authentication function.

2. 基礎となるメッセージ認証関数の派生キーとして、キーの長さ(オクテット)dkLenを選択します。

3. Apply the selected key derivation function to the password P, the salt S, and the iteration count c to produce a derived key DK of length dkLen octets:

3. 選択した鍵導出関数をパスワードP、salt S、および反復回数cに適用して、長さdkLenオクテットの導出鍵DKを生成します。

                    DK = KDF (P, S, c, dkLen)
        

4. Process the message M with the underlying message authentication scheme under the derived key DK to generate a message authentication code T.

4. 派生キーDKの下にある基本的なメッセージ認証スキームを使用してメッセージMを処理し、メッセージ認証コードTを生成します。

5. Output the message authentication code T.

5. メッセージ認証コードTを出力します。

The salt S, the iteration count c, the key length dkLen, and identifiers for the key derivation function and underlying message authentication scheme may be conveyed to the party performing verification in an AlgorithmIdentifier value (see Appendix A.5).

ソルトS、反復回数c、キーの長さdkLen、およびキー導出関数と基になるメッセージ認証方式の識別子は、AlgorithmIdentifier値で検証を実行する関係者に伝達できます(付録A.5を参照)。

7.1.2. PBMAC1 Verification Operation
7.1.2. PBMAC1検証操作

The MAC verification operation for PBMAC1 consists of the following steps, which process a message M under a password P to verify a message authentication code T:

PBMAC1のMAC検証操作は、次の手順で構成されます。この手順では、パスワードMの下でメッセージMを処理して、メッセージ認証コードTを検証します。

1. Obtain the salt S and the iteration count c.

1. ソルトSと反復回数cを取得します。

2. Obtain the key length in octets, dkLen, for the derived key for the underlying message authentication scheme.

2. 基になるメッセージ認証方式の派生キーのキー長、オクテット、dkLenを取得します。

3. Apply the selected key derivation function to the password P, the salt S, and the iteration count c to produce a derived key DK of length dkLen octets:

3. 選択した鍵導出関数をパスワードP、salt S、および反復回数cに適用して、長さdkLenオクテットの導出鍵DKを生成します。

                    DK = KDF (P, S, c, dkLen)
        

4. Process the message M with the underlying message authentication scheme under the derived key DK to verify the message authentication code T.

4. 派生キーDKの下にある基になるメッセージ認証スキームを使用してメッセージMを処理し、メッセージ認証コードTを確認します。

5. If the message authentication code verifies, output "correct"; else output "incorrect".

5. メッセージ認証コードが検証した場合、「正しい」と出力します。それ以外の場合は「不正」と出力します。

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

Password-based cryptography is generally limited in the security that it can provide, particularly for methods such as those defined in this document where offline password search is possible. While the use of salt and iteration count can increase the complexity of attack (see Section 4 for recommendations), it is essential that passwords

パスワードベースの暗号化は一般に、特にこのドキュメントで定義されているようなオフラインパスワード検索が可能な方法で提供できるセキュリティに制限があります。ソルトと反復回数を使用すると攻撃の複雑さが増す可能性がありますが(推奨事項についてはセクション4を参照)、パスワードは重要です。

are selected well, and relevant guidelines (e.g., [NISTSP63]) should be taken into account. It is also important that passwords be protected well if stored.

適切に選択されており、関連するガイドライン([NISTSP63]など)を考慮する必要があります。保管する場合は、パスワードを適切に保護することも重要です。

In general, different keys should be derived from a password for different uses to minimize the possibility of unintended interactions. For password-based encryption with a single algorithm, a random salt is sufficient to ensure that different keys will be produced. In certain other situations, as outlined in Section 4, a structured salt is necessary. The recommendations in Section 4 should thus be taken into account when selecting the salt value.

一般に、意図しない対話の可能性を最小限に抑えるために、さまざまな用途のパスワードからさまざまなキーを派生させる必要があります。単一のアルゴリズムを使用するパスワードベースの暗号化の場合、ランダムなソルトで十分に異なるキーが生成されます。他の特定の状況では、セクション4で概説されているように、構造化されたソルトが必要です。したがって、ソルトの値を選択する際には、セクション4の推奨事項を考慮する必要があります。

For information on security considerations for MD2 [RFC1319], see [RFC6149]; for MD5 [RFC1321], see [RFC6151]; and for SHA-1 [NIST180], see [RFC6194].

MD2 [RFC1319]のセキュリティに関する考慮事項については、[RFC6149]を参照してください。 MD5 [RFC1321]については、[RFC6151]を参照してください。 SHA-1 [NIST180]については、[RFC6194]を参照してください。

9. Normative References
9. 引用文献

[ANSIX952] ANSI, "Triple Data Encryption Algorithm Modes of Operation", Accredited Standards Committee X9, X9.52-1998, July 1998.

[ANSIX952] ANSI、「トリプルデータ暗号化アルゴリズムの動作モード」、認定標準委員会X9、X9.52-1998、1998年7月。

[BELLOV] Bellovin, S. and M. Merritt, "Encrypted Key Exchange: Password-based Protocols Secure against Dictionary Attacks", Proceedings of the IEEE Symposium on Research in Security and Privacy, pages 72-84, IEEE Computer Society, DOI 10.1109/RISP.1992.213269, 1992.

[BELLOV] Bellovin、S。およびM. Merritt、「暗号化鍵交換:辞書攻撃に対して安全なパスワードベースのプロトコル」、セキュリティとプライバシーの研究に関するIEEEシンポジウムの議事録、72〜84ページ、IEEE Computer Society、DOI 10.1109 /RISP.1992.213269、1992。

[COCHRAN] Cochran, M., "Notes on the Wang et al. 2^63 SHA-1 Differential Path", Cryptology ePrint Archive: Report 2007/474, August 2008, <http://eprint.iacr.org/2007/474>.

[COCHRAN] Cochran、M。、「Wang et al。2 ^ 63 SHA-1 Differential Pathに関する注記」、Cryptology ePrint Archive:Report 2007 / 474、2008年8月、<http://eprint.iacr.org/2007 / 474>。

[ISO8824-1] International Organization for Standardization, "Information technology - Abstract Syntax Notation One (ASN.1) - Specification of basic notation", ISO/IEC 8824-1:2008, 2008.

[ISO8824-1]国際標準化機構、「情報技術-抽象構文記法1(ASN.1)-基本記法の仕様」、ISO / IEC 8824-1:2008、2008。

[ISO8824-2] International Organization for Standardization, "Information technology - Abstract Syntax Notation One (ASN.1) - Information object specification", ISO/IEC 8824-2:2008, 2008.

[ISO8824-2]国際標準化機構、「情報技術-抽象構文記法1(ASN.1)-情報オブジェクト仕様」、ISO / IEC 8824-2:2008、2008。

[ISO8824-3] International Organization for Standardization, "Information technology - Abstract Syntax Notation One (ASN.1) - Constraint specification", ISO/IEC 8824-3:2008, 2008.

[ISO8824-3]国際標準化機構、「情報技術-抽象構文記法1(ASN.1)-制約仕様」、ISO / IEC 8824-3:2008、2008。

[ISO8824-4] International Organization for Standardization, "Information technology - Abstract Syntax Notation One (ASN.1) - Parameterization of ASN.1 specifications", ISO/IEC 8824-4:2008, 2008.

[ISO8824-4]国際標準化機構、「情報技術-抽象構文記法1(ASN.1)-ASN.1仕様のパラメーター化」、ISO / IEC 8824-4:2008、2008。

[JABLON] Jablon, D., "Strong Password-Only Authenticated Key Exchange", ACM SIGCOMM Computer Communication Review, Volume 26, Issue 5, DOI 10.1145/242896.242897, October 1996.

[JABLON] Jablon、D。、「Strong Password-Only Authenticated Key Exchange」、ACM SIGCOMM Computer Communication Review、Volume 26、Issue 5、DOI 10.1145 / 242896.242897、1996年10月。

[MORRIS] Morris, R. and K. Thompson, "Password security: A case history", Communications of the ACM, Vol. 22, Issue 11, pages 594-597, DOI 10.1145/359168.359172, November 1979.

[MORRIS] Morris、R。およびK. Thompson、「パスワードセキュリティ:ケース履歴」、Communications of the ACM、Vol。 22、Issue 11、594-597ページ、DOI 10.1145 / 359168.359172、1979年11月。

[NIST46] National Institute of Standards and Technology (NIST), "Data Encryption Standard", FIPS PUB 46-3, October 1999.

[NIST46]国立標準技術研究所(NIST)、「データ暗号化標準」、FIPS PUB 46-3、1999年10月。

[NIST81] National Institute of Standards and Technology (NIST), "DES Modes of Operation", FIPS PUB 81, December 2, 1980.

[NIST81]国立標準技術研究所(NIST)、「DES Modes of Operation」、FIPS PUB 81、1980年12月2日。

[NIST180] National Institute of Standards and Technology, "Secure Hash Standard (SHS)", FIPS PUB 180-4, DOI 10.6028/NIST.FIPS.180-4, August 2015.

[NIST180]米国国立標準技術研究所、「Secure Hash Standard(SHS)」、FIPS PUB 180-4、DOI 10.6028 / NIST.FIPS.180-4、2015年8月。

[NIST197] National Institute of Standards and Technology (NIST), "Advance Encryption Standard (AES)", FIPS PUB 197, November 2001.

[NIST197]米国国立標準技術研究所(NIST)、「高度暗号化標準(AES)」、FIPS PUB 197、2001年11月。

[NIST198] National Institute of Standards and Technology (NIST), "The Keyed - Hash Message Authentication Code (HMAC)", FIPS PUB 198-1, July 2008.

[NIST198]米国国立標準技術研究所(NIST)、「鍵付き-ハッシュメッセージ認証コード(HMAC)」、FIPS PUB 198-1、2008年7月。

[NISTSP63] National Institute of Standards and Technology (NIST), "Electronic Authentication Guideline", NIST Special Publication 800-63-2, DOI 10.6028/NIST.SP.800-63-2, August 2013.

[NISTSP63]国立標準技術研究所(NIST)、「電子認証ガイドライン」、NIST Special Publication 800-63-2、DOI 10.6028 / NIST.SP.800-63-2、2013年8月。

[NISTSP132] National Institute of Standards and Technology (NIST), "Recommendation for Password-Based Key Derivation, Part 1: Storage Applications", NIST Special Publication 800-132, DOI 10.6028/NIST.SP.800-132, December 2010.

[NISTSP132]米国国立標準技術研究所(NIST)、「パスワードベースのキー導出に関する推奨事項、パート1:ストレージアプリケーション」、NIST Special Publication 800-132、DOI 10.6028 / NIST.SP.800-132、2010年12月。

[PKCS5_15] RSA Laboratories, "PKCS #5: Password-Based Encryption Standard Version 1.5", November 1993.

[PKCS5_15] RSA Laboratories、「PKCS#5:Password-Based Encryption Standard Version 1.5」、1993年11月。

[PKCS5_21] RSA Laboratories, "PKCS #5: Password-Based Encryption Standard Version 2.1", October 2012.

[PKCS5_21] RSA Laboratories、「PKCS#5:Password-Based Encryption Standard Version 2.1」、2012年10月。

[PKCS8] Kaliski, B., "Public-Key Cryptography Standards (PKCS) #8: Private-Key Information Syntax Specification Version 1.2", RFC 5208, DOI 10.17487/RFC5208, May 2008, <http://www.rfc-editor.org/info/rfc5208>.

[PKCS8] Kaliski、B。、「Public-Key Cryptography Standards(PKCS)#8:Private-Key Information Syntax Specification Version 1.2」、RFC 5208、DOI 10.17487 / RFC5208、2008年5月、<http://www.rfc- editor.org/info/rfc5208>。

[RC5] Rivest, R.L., "The RC5 encryption algorithm", In Proceedings of the Second International Workshop on Fast Software Encryption, pages 86-96, Springer-Verlag, DOI 10.1007/3-540-60590-8_7, 1994.

[RC5] Rivest、R.L。、「The RC5 encryption algorithm」、Proceedings of the Second International Workshop on Fast Software Encryption、pages 86-96、Springer-Verlag、DOI 10.1007 / 3-540-60590-8_7、1994。

[RFC1319] Kaliski, B., "The MD2 Message-Digest Algorithm", RFC 1319, DOI 10.17487/RFC1319, April 1992, <http://www.rfc-editor.org/info/rfc1319>.

[RFC1319] Kaliski、B。、「MD2メッセージダイジェストアルゴリズム」、RFC 1319、DOI 10.17487 / RFC1319、1992年4月、<http://www.rfc-editor.org/info/rfc1319>。

[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, DOI 10.17487/RFC1321, April 1992, <http://www.rfc-editor.org/info/rfc1321>.

[RFC1321] Rivest、R。、「The MD5 Message-Digest Algorithm」、RFC 1321、DOI 10.17487 / RFC1321、1992年4月、<http://www.rfc-editor.org/info/rfc1321>。

[RFC1423] Balenson, D., "Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers", RFC 1423, DOI 10.17487/RFC1423, February 1993, <http://www.rfc-editor.org/info/rfc1423>.

[RFC1423]バレンソン、D。、「インターネット電子メールのプライバシー強化:パートIII:アルゴリズム、モード、および識別子」、RFC 1423、DOI 10.17487 / RFC1423、1993年2月、<http://www.rfc-editor.org / info / rfc1423>。

[RFC2040] Baldwin, R. and R. Rivest, "The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms", RFC 2040, DOI 10.17487/RFC2040, October 1996, <http://www.rfc-editor.org/info/rfc2040>.

[RFC2040] Baldwin、R。およびR. Rivest、「RC5、RC5-CBC、RC5-CBC-Pad、およびRC5-CTSアルゴリズム」、RFC 2040、DOI 10.17487 / RFC2040、1996年10月、<http:// www .rfc-editor.org / info / rfc2040>。

[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, DOI 10.17487/RFC2104, February 1997, <http://www.rfc-editor.org/info/rfc2104>.

[RFC2104] Krawczyk、H.、Bellare、M。、およびR. Canetti、「HMAC:Keyed-Hashing for Message Authentication」、RFC 2104、DOI 10.17487 / RFC2104、1997年2月、<http://www.rfc-editor .org / info / rfc2104>。

[RFC2268] Rivest, R., "A Description of the RC2(r) Encryption Algorithm", RFC 2268, DOI 10.17487/RFC2268, March 1998, <http://www.rfc-editor.org/info/rfc2268>.

[RFC2268] Rivest、R。、「A Description of the RC2(r)Encryption Algorithm」、RFC 2268、DOI 10.17487 / RFC2268、March 1998、<http://www.rfc-editor.org/info/rfc2268>。

[RFC2898] Kaliski, B., "PKCS #5: Password-Based Cryptography Specification Version 2.0", RFC 2898, DOI 10.17487/RFC2898, September 2000, <http://www.rfc-editor.org/info/rfc2898>.

[RFC2898] Kaliski、B。、「PKCS#5:Password-Based Cryptography Specification Version 2.0」、RFC 2898、DOI 10.17487 / RFC2898、2000年9月、<http://www.rfc-editor.org/info/rfc2898> 。

[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, <http://www.rfc-editor.org/info/rfc3629>.

[RFC3629] Yergeau、F。、「UTF-8、ISO 10646の変換フォーマット」、STD 63、RFC 3629、DOI 10.17487 / RFC3629、2003年11月、<http://www.rfc-editor.org/info/ rfc3629>。

[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, DOI 10.17487/RFC5652, September 2009, <http://www.rfc-editor.org/info/rfc5652>.

[RFC5652] Housley、R。、「Cryptographic Message Syntax(CMS)」、STD 70、RFC 5652、DOI 10.17487 / RFC5652、2009年9月、<http://www.rfc-editor.org/info/rfc5652>。

[RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, DOI 10.17487/RFC5958, August 2010, <http://www.rfc-editor.org/info/rfc5958>.

[RFC5958]ターナー、S。、「非対称鍵パッケージ」、RFC 5958、DOI 10.17487 / RFC5958、2010年8月、<http://www.rfc-editor.org/info/rfc5958>。

[RFC6149] Turner, S. and L. Chen, "MD2 to Historic Status", RFC 6149, DOI 10.17487/RFC6149, March 2011, <http://www.rfc-editor.org/info/rfc6149>.

[RFC6149]ターナー、S。およびL.チェン、「MD2 to Historic Status」、RFC 6149、DOI 10.17487 / RFC6149、2011年3月、<http://www.rfc-editor.org/info/rfc6149>。

[RFC6151] Turner, S. and L. Chen, "Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms", RFC 6151, DOI 10.17487/RFC6151, March 2011, <http://www.rfc-editor.org/info/rfc6151>.

[RFC6151]ターナーS.およびL.チェン、「MD5メッセージダイジェストおよびHMAC-MD5アルゴリズムの更新されたセキュリティに関する考慮事項」、RFC 6151、DOI 10.17487 / RFC6151、2011年3月、<http://www.rfc- editor.org/info/rfc6151>。

[RFC6194] Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms", RFC 6194, DOI 10.17487/RFC6194, March 2011, <http://www.rfc-editor.org/info/rfc6194>.

[RFC6194] Polk、T.、Chen、L.、Turner、S。、およびP. Hoffman、「SHA-0およびSHA-1メッセージダイジェストアルゴリズムのセキュリティに関する考慮事項」、RFC 6194、DOI 10.17487 / RFC6194、3月2011、<http://www.rfc-editor.org/info/rfc6194>。

[WANG] Wang, X., Yao, A.C., and F. Yao, "Cryptanalysis on SHA-1", presented by Adi Shamir at the rump session of CRYPTO 2005, <http://csrc.nist.gov/groups/ST/hash/documents/ Wang_SHA1-New-Result.pdf>.

[WANG] Wang、X.、Yao、AC、およびF. Yao、「SHA-1の暗号解読」、CRYPTO 2005のランプセッションでAdi Shamirが発表<http://csrc.nist.gov/groups/ ST /ハッシュ/ドキュメント/ Wang_SHA1-New-Result.pdf>。

[WU] Wu, T., "The Secure Remote Password protocol", In Proceedings of the 1998 Internet Society Network and Distributed System Security Symposium, pages 97-111, Internet Society, 1998, <https://www.isoc.org/isoc/conferences/ndss/98/wu.pdf>.

[WU] Wu、T。、「The Secure Remote Password protocol」、Proceedings of the 1998 Internet Society Network and Distributed System Security Symposium、pages 97-111、Internet Society、1998、<https://www.isoc.org /isoc/conferences/ndss/98/wu.pdf>。

Appendix A. ASN.1 Syntax
付録A. ASN.1構文

This section defines ASN.1 syntax for the key derivation functions, the encryption schemes, the message authentication scheme, and supporting techniques. The intended application of these definitions includes PKCS #8 and other syntax for key management, encrypted data, and integrity-protected data. (Various aspects of ASN.1 are specified in several ISO/IEC standards [ISO8824-1] [ISO8824-2] [ISO8824-3] [ISO8824-4].)

このセクションでは、鍵導出関数、暗号化スキーム、メッセージ認証スキーム、およびサポート技術のASN.1構文を定義します。これらの定義の用途には、PKCS#8と、キー管理、暗号化されたデータ、および整合性保護されたデータのためのその他の構文が含まれます。 (ASN.1のさまざまな側面は​​、いくつかのISO / IEC規格[ISO8824-1] [ISO8824-2] [ISO8824-3] [ISO8824-4]で指定されています。)

The object identifier pkcs-5 identifies the arc of the OID tree from which the OIDs (specific to PKCS #5) in this section are derived:

オブジェクト識別子pkcs-5は、このセクションのOID(PKCS#5に固有)の派生元であるOIDツリーの弧を識別します。

   rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 113549}
   pkcs OBJECT IDENTIFIER   ::= {rsadsi 1}
   pkcs-5 OBJECT IDENTIFIER ::= {pkcs 5}
        
A.1. PBKDF1
A.1. PBKDF1

No object identifier is given for PBKDF1, as the object identifiers for PBES1 are sufficient for existing applications, and PBKDF2 is recommended for new applications.

PBKES1のオブジェクト識別子は既存のアプリケーションには十分であり、PBKDF2は新しいアプリケーションに推奨されるため、PBKDF1にはオブジェクト識別子が指定されていません。

A.2. PBKDF2
A.2. 静かに

The object identifier id-PBKDF2 identifies the PBKDF2 key derivation function (Section 5.2).

オブジェクト識別子id-PBKDF2は、PBKDF2キー導出関数を識別します(セクション5.2)。

      id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type PBKDF2-params:

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドは、タイプPBKDF2-paramsを持つ必要があります。

   PBKDF2-params ::= SEQUENCE {
       salt CHOICE {
           specified OCTET STRING,
           otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
       },
       iterationCount INTEGER (1..MAX),
       keyLength INTEGER (1..MAX) OPTIONAL,
       prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
       algid-hmacWithSHA1 }
        

The fields of type PBKDF2-params have the following meanings:

タイプPBKDF2-paramsのフィールドには次の意味があります。

- salt specifies the salt value or the source of the salt value. It shall either be an octet string or an algorithm ID with an OID in the set PBKDF2-SaltSources, which is reserved for future versions of PKCS #5.

- saltは、ソルト値またはソルト値のソースを指定します。 PKCS#5の将来のバージョン用に予約されている、PBKDF2-SaltSourcesセットのOIDを持つオクテット文字列またはアルゴリズムIDのいずれかです。

The salt-source approach is intended to indicate how the salt value is to be generated as a function of parameters in the algorithm ID, application data, or both. For instance, it may indicate that the salt value is produced from the encoding of a structure that specifies detailed information about the derived key as suggested in Section 4.1. Some of the information may be carried elsewhere, e.g., in the encryption algorithm ID. However, such facilities are deferred to a future version of PKCS #5.

salt-sourceアプローチは、アルゴリズムID、アプリケーションデータ、またはその両方のパラメーターの関数として、salt値を生成する方法を示すことを目的としています。たとえば、セクション4.1で提案されているように、salt値が派生キーに関する詳細情報を指定する構造のエンコードから生成されることを示す場合があります。一部の情報は、暗号化アルゴリズムIDなど、他の場所に保持される場合があります。ただし、そのような機能は、PKCS#5の将来のバージョンに委ねられています。

In this version, an application may achieve the benefits mentioned in Section 4.1 by choosing a particular interpretation of the salt value in the specified alternative.

このバージョンでは、アプリケーションは、指定された代替案でソルト値の特定の解釈を選択することにより、セクション4.1で説明されている利点を実現できます。

      PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... }
        

- iterationCount specifies the iteration count. The maximum iteration count allowed depends on the implementation. It is expected that implementation profiles may further constrain the bounds.

- iterationCountは反復回数を指定します。許可される最大反復回数は、実装によって異なります。実装プロファイルは境界をさらに制約することが予想されます。

- keyLength, an optional field, is the length in octets of the derived key. The maximum key length allowed depends on the implementation; it is expected that implementation profiles may further constrain the bounds. The field is provided for convenience only; the key length is not cryptographically protected. If there is concern about interaction between operations with different key lengths for a given salt (see Section 4.1), the salt should distinguish among the different key lengths.

- オプションのフィールドであるkeyLengthは、派生キーのオクテット単位の長さです。許可されるキーの最大長は実装によって異なります。実装プロファイルは境界をさらに制約することが予想されます。このフィールドは便宜のためにのみ提供されています。キーの長さは暗号で保護されていません。指定されたソルト(セクション4.1を参照)に対して異なるキー長の操作間の相互作用が懸念される場合、ソルトは異なるキー長を区別する必要があります。

- prf identifies the underlying pseudorandom function. It shall be an algorithm ID with an OID in the set PBKDF2-PRFs, which for this version of PKCS #5 shall consist of id-hmacWithSHA1 (see Appendix B.1.1) and any other OIDs defined by the application.

- prfは、基になる疑似乱数関数を識別します。これは、セットPBKDF2-PRFにOIDを含むアルゴリズムIDである必要があります。このバージョンのPKCS#5では、id-hmacWithSHA1(付録B.1.1を参照)とアプリケーションで定義されたその他のOIDで構成されます。

      PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
        {NULL IDENTIFIED BY id-hmacWithSHA1},
        {NULL IDENTIFIED BY id-hmacWithSHA224},
        {NULL IDENTIFIED BY id-hmacWithSHA256},
        {NULL IDENTIFIED BY id-hmacWithSHA384},
        {NULL IDENTIFIED BY id-hmacWithSHA512},
        {NULL IDENTIFIED BY id-hmacWithSHA512-224},
        {NULL IDENTIFIED BY id-hmacWithSHA512-256},
        ...
      }
        

The default pseudorandom function is HMAC-SHA-1:

デフォルトの疑似ランダム関数はHMAC-SHA-1です。

         algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
             {algorithm id-hmacWithSHA1, parameters NULL : NULL}
        
A.3. PBES1
A.3. PBS1

Different object identifiers identify the PBES1 encryption scheme (Section 6.1) according to the underlying hash function in the key derivation function and the underlying block cipher, as summarized in the following table:

次の表にまとめられているように、鍵導出関数の基になるハッシュ関数と基になるブロック暗号に従って、さまざまなオブジェクト識別子がPBES1暗号化スキーム(6.1節)を識別します。

           Hash Function  Block Cipher      OID
                MD2           DES         pkcs-5.1
                MD2           RC2         pkcs-5.4
                MD5           DES         pkcs-5.3
                MD5           RC2         pkcs-5.6
               SHA-1          DES         pkcs-5.10
               SHA-1          RC2         pkcs-5.11
        
      pbeWithMD2AndDES-CBC OBJECT IDENTIFIER  ::= {pkcs-5 1}
      pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER  ::= {pkcs-5 4}
      pbeWithMD5AndDES-CBC OBJECT IDENTIFIER  ::= {pkcs-5 3}
      pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER  ::= {pkcs-5 6}
      pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10}
      pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11}
        

For each OID, the parameters field associated with the OID in an AlgorithmIdentifier shall have type PBEParameter:

OIDごとに、AlgorithmIdentifierのOIDに関連付けられたパラメーターフィールドのタイプはPBEParameterです。

   PBEParameter ::= SEQUENCE {
      salt OCTET STRING (SIZE(8)),
      iterationCount INTEGER }
        

The fields of type PBEParameter have the following meanings:

タイプPBEParameterのフィールドには以下の意味があります。

- salt specifies the salt value, an eight-octet string.

- saltは、8オクテットの文字列であるソルト値を指定します。

- iterationCount specifies the iteration count.

- iterationCountは反復回数を指定します。

A.4. PBES2
A.4. PBES2

The object identifier id-PBES2 identifies the PBES2 encryption scheme (Section 6.2).

オブジェクト識別子id-PBES2は、PBES2暗号化スキームを識別します(セクション6.2)。

   id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type PBES2-params:

AlgorithmIdentifierでこのOIDに関連付けられているパラメータフィールドは、タイプPBES2-paramsを持つ必要があります。

   PBES2-params ::= SEQUENCE {
      keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},
      encryptionScheme AlgorithmIdentifier {{PBES2-Encs}} }
        

The fields of type PBES2-params have the following meanings:

タイプPBES2-paramsのフィールドには次の意味があります。

- keyDerivationFunc identifies the underlying key derivation function. It shall be an algorithm ID with an OID in the set PBES2-KDFs, which for this version of PKCS #5 shall consist of id-PBKDF2 (Appendix A.2).

- keyDerivationFuncは、基になるキー派生関数を識別します。これは、セットPBES2-KDFにOIDが含まれるアルゴリズムIDである必要があります。このバージョンのPKCS#5では、id-PBKDF2(付録A.2)で構成されます。

   PBES2-KDFs ALGORITHM-IDENTIFIER ::=
      { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }
        

- encryptionScheme identifies the underlying encryption scheme. It shall be an algorithm ID with an OID in the set PBES2-Encs, whose definition is left to the application. Examples of underlying encryption schemes are given in Appendix B.2.

- encryptionSchemeは、基礎となる暗号化スキームを識別します。これは、セットPBES2-Encs内のOIDを持つアルゴリズムIDであり、その定義はアプリケーションに委ねられます。基礎となる暗号化スキームの例を付録B.2に示します。

   PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }
        
A.5. PBMAC1
A.5. PBMAC1

The object identifier id-PBMAC1 identifies the PBMAC1 message authentication scheme (Section 7.1).

オブジェクト識別子id-PBMAC1は、PBMAC1メッセージ認証方式を識別します(セクション7.1)。

   id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14}
   The parameters field associated with this OID in an
   AlgorithmIdentifier shall have type PBMAC1-params:
        
   PBMAC1-params ::=  SEQUENCE {
      keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
      messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}} }
        

The keyDerivationFunc field has the same meaning as the corresponding field of PBES2-params (Appendix A.4) except that the set of OIDs is PBMAC1-KDFs.

keyDerivationFuncフィールドは、OIDのセットがPBMAC1-KDFであることを除いて、PBES2-params(付録A.4)の対応するフィールドと同じ意味を持っています。

   PBMAC1-KDFs ALGORITHM-IDENTIFIER ::=
      { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }
        

The messageAuthScheme field identifies the underlying message authentication scheme. It shall be an algorithm ID with an OID in the set PBMAC1-MACs, whose definition is left to the application. Examples of underlying encryption schemes are given in Appendix B.3.

messageAuthSchemeフィールドは、基になるメッセージ認証スキームを識別します。これは、セットPBMAC1-MACs内のOIDを持つアルゴリズムIDである必要があり、その定義はアプリケーションに委ねられます。基礎となる暗号化スキームの例を付録B.3に示します。

   PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }
        
Appendix B. Supporting Techniques
付録B.サポート技術

This section gives several examples of underlying functions and schemes supporting the password-based schemes in Sections 5, 6, and 7.

このセクションでは、セクション5、6、および7のパスワードベースのスキームをサポートする基本的な関数とスキームのいくつかの例を示します。

While these supporting techniques are appropriate for applications to implement, none of them is required to be implemented. It is expected, however, that profiles for PKCS #5 will be developed that specify particular supporting techniques.

これらのサポート手法はアプリケーションの実装に適していますが、実装する必要はありません。ただし、特定のサポート手法を指定するPKCS#5のプロファイルが開発されることが予想されます。

This section also gives object identifiers for the supporting techniques. The object identifiers digestAlgorithm and encryptionAlgorithm identify the arcs from which certain algorithm OIDs referenced in this section are derived:

このセクションでは、サポート手法のオブジェクト識別子も示します。オブジェクト識別子digestAlgorithmおよびencryptionAlgorithmは、このセクションで参照されている特定のアルゴリズムOIDの派生元であるアークを識別します。

   digestAlgorithm OBJECT IDENTIFIER ::= {rsadsi 2} encryptionAlgorithm
   OBJECT IDENTIFIER ::= {rsadsi 3}
        
B.1. Pseudorandom Functions
B.1. 疑似ランダム関数

Examples of pseudorandom function for PBKDF2 (Section 5.2) include HMAC with SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256. Applications may employ other schemes as well.

PBKDF2(セクション5.2)の疑似ランダム関数の例には、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512 / 224、SHA-512 / 256を備えたHMACが含まれます。アプリケーションは他のスキームも使用できます。

B.1.1. HMAC-SHA-1
B.1.1. HMAC-SHA-1

HMAC-SHA-1 is the pseudorandom function corresponding to the HMAC message authentication code [RFC2104] based on the SHA-1 hash function [NIST180]. The pseudorandom function is the same function by which the message authentication code is computed, with a full-length output. (The first argument to the pseudorandom function PRF serves as HMAC's "key", and the second serves as HMAC's "text". In the case of PBKDF2, the "key" is thus the password and the "text" is the salt.) HMAC-SHA-1 has a variable key length and a 20-octet (160-bit) output value.

HMAC-SHA-1は、SHA-1ハッシュ関数[NIST180]に基づくHMACメッセージ認証コード[RFC2104]に対応する擬似ランダム関数です。疑似ランダム関数は、メッセージ認証コードが計算されるのと同じ関数であり、全長出力を備えています。 (擬似ランダム関数PRFの最初の引数はHMACの「キー」として機能し、2番目の引数はHMACの「テキスト」として機能します。PBKDF2の場合、「キー」はパスワードであり、「テキスト」はソルトです。) HMAC-SHA-1には、可変キー長と20オクテット(160ビット)の出力値があります。

Although the length of the key to HMAC-SHA-1 is essentially unbounded, the effective search space for pseudorandom function outputs may be limited by the structure of the function. In particular, when the key is longer than 512 bits, HMAC-SHA-1 will first hash it to 160 bits. Thus, even if a long derived key consisting of several pseudorandom function outputs is produced from a key, the effective search space for the derived key will be at most 160 bits. Although the specific limitation for other key sizes depends on details of the HMAC construction, one should assume, to be conservative, that the effective search space is limited to 160 bits for other key sizes as well.

HMAC-SHA-1のキーの長さは本質的に無制限ですが、疑似ランダム関数出力の有効な検索スペースは、関数の構造によって制限される場合があります。特に、鍵が512ビットより長い場合、HMAC-SHA-1は最初にそれを160ビットにハッシュします。したがって、いくつかの擬似ランダム関数出力からなる長い派生キーがキーから生成されたとしても、派生キーの有効な検索スペースは最大で160ビットになります。他のキーサイズの特定の制限はHMAC構造の詳細に依存しますが、他のキーサイズの場合も、有効な検索スペースは160ビットに制限されていると控えめに考える必要があります。

(The 160-bit limitation should not generally pose a practical limitation in the case of password-based cryptography, since the search space for a password is unlikely to be greater than 160 bits.)

(パスワードの検索スペースが160ビットを超える可能性は低いため、パスワードベースの暗号化の場合、160ビットの制限は一般的に実用的な制限となるべきではありません。)

The object identifier id-hmacWithSHA1 identifies the HMAC-SHA-1 pseudorandom function:

オブジェクト識別子id-hmacWithSHA1は、HMAC-SHA-1擬似ランダム関数を識別します。

   id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type NULL. This object identifier is employed in the object set PBKDF2-PRFs (Appendix A.2).

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドのタイプはNULLです。このオブジェクト識別子は、オブジェクトセットPBKDF2-PRF(付録A.2)で使用されます。

Note: Although HMAC-SHA-1 was designed as a message authentication code, its proof of security is readily modified to accommodate requirements for a pseudorandom function, under stronger assumptions. A hash function may also meet the requirements of a pseudorandom function under certain assumptions. For instance, the direct application of a hash function to the concatenation of the "key" and the "text" may be appropriate, provided that "text" has appropriate structure to prevent certain attacks. HMAC-SHA-1 is preferable, however, because it treats "key" and "text" as separate arguments and does not require "text" to have any structure.

注:HMAC-SHA-1はメッセージ認証コードとして設計されましたが、そのセキュリティの証明は、より強力な仮定の下で、疑似ランダム関数の要件に対応するように簡単に変更できます。ハッシュ関数は、特定の仮定の下で疑似ランダム関数の要件を満たすこともできます。たとえば、「テキスト」が特定の攻撃を防ぐために適切な構造を持っている場合、「キー」と「テキスト」の連結にハッシュ関数を直接適用することが適切な場合があります。ただし、HMAC-SHA-1は「キー」と「テキスト」を別々の引数として扱い、「テキスト」に構造を持たせる必要がないため、より望ましいです。

During 2004 and 2005, there were a number of attacks on SHA-1 that reduced its perceived effective strength against collision attacks to 62 bits instead of the expected 80 bits (e.g., Wang et al. [WANG], confirmed by M. Cochran [COCHRAN]). However, since these attacks centered on finding collisions between values, they are not a direct security consideration here because the collision-resistant property is not required by the HMAC authentication scheme.

2004年と2005年の間に、SHA-1への攻撃が多数あり、衝突攻撃に対する知覚される有効強度が予想される80ビットではなく62ビットに減少しました(たとえば、Wang et al。[WANG]、M。Cochranによって確認されました[ COCHRAN])。ただし、これらの攻撃は値間の衝突を見つけることに集中しているため、HMAC認証方式では衝突耐性のあるプロパティは必要ないため、ここでは直接的なセキュリティの考慮事項ではありません。

B.1.2. HMAC-SHA-2
B.1.2. HMAC-SHA-2

HMAC-SHA-2 refers to the set of pseudorandom functions corresponding to the HMAC message authentication code (now a FIPS standard [NIST198]) based on the new SHA-2 functions (FIPS 180-4 [NIST180]). HMAC-SHA-2 has a variable key length and variable output value depending on the hash function chosen (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, or SHA-512/256) -- that is, 28, 32, 48, or 64 octets.

HMAC-SHA-2は、新しいSHA-2関数(FIPS 180-4 [NIST180])に基づくHMACメッセージ認証コード(現在はFIPS標準[NIST198])に対応する疑似ランダム関数のセットを指します。 HMAC-SHA-2には、選択したハッシュ関数(SHA-224、SHA-256、SHA-384、SHA-512、SHA-512 / 224、またはSHA-512 / 256)に応じて、可変キー長と可変出力値があります。 -つまり、28、32、48、または64オクテットです。

Using the new hash functions extends the search space for the produced keys. Where SHA-1 limits the search space to 20 octets, SHA-2 sets new limits of 28, 32, 48, and 64 octets.

新しいハッシュ関数を使用すると、生成されたキーの検索スペースが拡張されます。 SHA-1が検索領域を20オクテットに制限する場合、SHA-2は28、32、48、および64オクテットの新しい制限を設定します。

Object identifiers for HMAC are defined as follows:

HMACのオブジェクト識別子は次のように定義されています。

   id-hmacWithSHA224 OBJECT IDENTIFIER ::= {digestAlgorithm 8}
   id-hmacWithSHA256 OBJECT IDENTIFIER ::= {digestAlgorithm 9}
   id-hmacWithSHA384 OBJECT IDENTIFIER ::= {digestAlgorithm 10}
   id-hmacWithSHA512 OBJECT IDENTIFIER ::= {digestAlgorithm 11}
   id-hmacWithSHA512-224 OBJECT IDENTIFIER ::= {digestAlgorithm 12}
   id-hmacWithSHA512-256 OBJECT IDENTIFIER ::= {digestAlgorithm 13}
        
B.2. Encryption Schemes
B.2. 暗号化スキーム

An example encryption scheme for PBES2 (Section 6.2) is AES-CBC-Pad. The schemes defined in PKCS #5 v2.0 [RFC2898], DES-CBC-Pad, DES-EDE3-CBC-Pad, RC2-CBC-Pad, and RC5-CBC-Pad, are still supported, but DES-CBC-Pad, DES-EDE3-CBC-Pad, RC2-CBC-Pad are now considered legacy and should only be used for backwards compatibility reasons.

PBES2(セクション6.2)の暗号化スキームの例は、AES-CBC-Padです。 PKCS#5 v2.0 [RFC2898]、DES-CBC-Pad、DES-EDE3-CBC-Pad、RC2-CBC-Pad、RC5-CBC-Padで定義されているスキームは引き続きサポートされますが、DES-CBC-パッド、DES-EDE3-CBC-Pad、RC2-CBC-Padはレガシーと見なされ、下位互換性の理由でのみ使用する必要があります。

The object identifiers given in this section are intended to be employed in the object set PBES2-Encs (Appendix A.4).

このセクションで提供されるオブジェクト識別子は、オブジェクトセットPBES2-Encs(付録A.4)で使用されることを目的としています。

B.2.1. DES-CBC-Pad
B.2.1. DES-CBC-Pad

DES-CBC-Pad is single-key DES [NIST46] in CBC mode [NIST81] with the padding operation specified in RFC 1423 [RFC1423] (see Section 6.1.1 of this document). DES-CBC-Pad has an eight-octet encryption key and an eight-octet initialization vector. The key is considered as a 64-bit encoding of a 56-bit DES key with parity bits ignored.

DES-CBC-Padは、CBCモード[NIST81]のシングルキーDES [NIST46]であり、RFC 1423 [RFC1423](このドキュメントのセクション6.1.1を参照)で指定されているパディング操作を備えています。 DES-CBC-Padには、8オクテットの暗号鍵と8オクテットの初期化ベクトルがあります。鍵は、パリティビットを無視した56ビットDES鍵の64ビットエンコーディングと見なされます。

The object identifier desCBC (defined in the NIST/OSI Implementors' Workshop agreements) identifies the DES-CBC-Pad encryption scheme:

オブジェクト識別子desCBC(NIST / OSI Implementors 'Workshop契約で定義)は、DES-CBC-Pad暗号化スキームを識別します。

   desCBC OBJECT IDENTIFIER ::=
      {iso(1) identified-organization(3) oiw(14) secsig(3)
       algorithms(2) 7}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type OCTET STRING (SIZE(8)), specifying the initialization vector for CBC mode.

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドのタイプはOCTET STRING(SIZE(8))で、CBCモードの初期化ベクトルを指定します。

B.2.2. DES-EDE3-CBC-Pad
B.2.2. DES-EDE3-CBC-Pad

DES-EDE3-CBC-Pad is three-key triple-DES in CBC mode [ANSIX952] with the padding operation specified in RFC 1423 [RFC1423]. DES-EDE3-CBC-Pad has a 24-octet encryption key and an eight-octet initialization vector. The key is considered as the concatenation of three eight-octet keys, each of which is a 64-bit encoding of a 56-bit DES key with parity bits ignored.

DES-EDE3-CBC-Padは、CBCモード[ANSIX952]の3つのキーのトリプルDESであり、RFC 1423 [RFC1423]で指定されているパディング操作を備えています。 DES-EDE3-CBC-Padには、24オクテットの暗号鍵と8オクテットの初期化ベクトルがあります。キーは、3つの8オクテットキーの連結と見なされます。各キーは、パリティビットが無視された56ビットDESキーの64ビットエンコーディングです。

The object identifier des-EDE3-CBC identifies the DES-EDE3-CBC-Pad encryption scheme:

オブジェクト識別子des-EDE3-CBCは、DES-EDE3-CBC-Pad暗号化スキームを識別します。

   des-EDE3-CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 7}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type OCTET STRING (SIZE(8)), specifying the initialization vector for CBC mode.

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドのタイプはOCTET STRING(SIZE(8))で、CBCモードの初期化ベクトルを指定します。

Note: An OID for DES-EDE3-CBC without padding is given in ANSI X9.52 [ANSIX952]; the one given here is preferred since it specifies padding.

注:埋め込みなしのDES-EDE3-CBCのOIDは、ANSI X9.52 [ANSIX952]で提供されています。パディングを指定するため、ここで指定されたものが推奨されます。

B.2.3. RC2-CBC-Pad
B.2.3. RC2-CBC-Pad

RC2-CBC-Pad is the RC2 encryption algorithm [RFC2268] in CBC mode with the padding operation specified in RFC 1423 [RFC1423]. RC2-CBC-Pad has a variable key length, from one to 128 octets, a separate "effective key bits" parameter from one to 1024 bits that limits the effective search space independent of the key length, and an eight-octet initialization vector.

RC2-CBC-Padは、CBCモードのRC2暗号化アルゴリズム[RFC2268]であり、RFC 1423 [RFC1423]で指定されているパディング操作を備えています。 RC2-CBC-Padには、1〜128オクテットの可変キー長、1〜1024ビットの個別の「有効キービット」パラメーターがあり、キー長に関係なく有効検索スペースを制限し、8オクテットの初期化ベクトルがあります。

The object identifier rc2CBC identifies the RC2-CBC-Pad encryption scheme:

オブジェクト識別子rc2CBCは、RC2-CBC-Pad暗号化スキームを識別します。

   rc2CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 2}
        

The parameters field associated with OID in an AlgorithmIdentifier shall have type RC2-CBC-Parameter:

AlgorithmIdentifierのOIDに関連付けられたパラメーターフィールドは、タイプRC2-CBC-Parameterを持つ必要があります。

   RC2-CBC-Parameter ::= SEQUENCE {
       rc2ParameterVersion INTEGER OPTIONAL,
       iv OCTET STRING (SIZE(8)) }
        

The fields of type RC2-CBCParameter have the following meanings:

タイプRC2-CBCParameterのフィールドには、次の意味があります。

- rc2ParameterVersion is a proprietary RSA Security Inc. encoding of the "effective key bits" for RC2. The following encodings are defined:

- rc2ParameterVersionは、RC2の「有効なキービット」のRSA Security Inc.独自のエンコーディングです。次のエンコーディングが定義されています。

Effective Key Bits Encoding 40 160 64 120 128 58 b >= 256 b

有効なキービットエンコーディング40160 64120128 58 b> = 256 b

If the rc2ParameterVersion field is omitted, the "effective key bits" defaults to 32. (This is for backward compatibility with certain very old implementations.)

rc2ParameterVersionフィールドが省略されている場合、「有効キービット」はデフォルトで32になります(これは、特定の非常に古い実装との下位互換性のためです)。

- iv is the eight-octet initialization vector.

- ivは8オクテットの初期化ベクトルです。

B.2.4. RC5-CBC-Pad
B.2.4. RC5-CBC-Pad

RC5-CBC-Pad is the RC5 encryption algorithm [RC5] in CBC mode with the padding operation specified in RFC 5652 [RFC5652], which is a generalization of the padding operation specified in RFC 1423 [RFC1423]. The scheme is fully specified in [RFC2040]. RC5-CBC-Pad has a variable key length, from 0 to 256 octets, and supports both a 64-bit block size and a 128-bit block size. For the former, it has an eight-octet initialization vector, and for the latter, a 16-octet initialization vector. RC5-CBC-Pad also has a variable number of "rounds" in the encryption operation, from 8 to 127.

RC5-CBC-Padは、CBCモードのRC5暗号化アルゴリズム[RC5]で、RFC 5652 [RFC5652]で指定されたパディング操作を使用します。これは、RFC 1423 [RFC1423]で指定されたパディング操作の一般化です。スキームは[RFC2040]で完全に指定されています。 RC5-CBC-Padは、0〜256オクテットの可変キー長を持ち、64ビットブロックサイズと128ビットブロックサイズの両方をサポートします。前者の場合、8オクテットの初期化ベクトルがあり、後者の場合、16オクテットの初期化ベクトルがあります。 RC5-CBC-Padには、暗号化操作で「ラウンド」の数が8〜127の可変数もあります。

Note: For RC5 with a 64-bit block size, the padding string is as defined in RFC 1423 [RFC1423]. For RC5 with a 128-bit block size, the padding string consists of 16-(||M|| mod 16) octets each with value 16-(||M|| mod 16).

注:64ビットブロックサイズのRC5の場合、パディング文字列はRFC 1423 [RFC1423]で定義されています。 128ビットブロックサイズのRC5の場合、パディング文字列は、16-(|| M || mod 16)オクテットで構成され、それぞれの値は16-(|| M || mod 16)です。

The object identifier rc5-CBC-PAD [RFC2040] identifies the RC5-CBC-Pad encryption scheme:

オブジェクト識別子rc5-CBC-PAD [RFC2040]は、RC5-CBC-Pad暗号化スキームを識別します。

   rc5-CBC-PAD OBJECT IDENTIFIER ::= {encryptionAlgorithm 9}
        

The parameters field associated with this OID in an AlgorithmIdentifier shall have type RC5-CBC-Parameters:

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドは、タイプRC5-CBC-Parametersを持つ必要があります。

   RC5-CBC-Parameters ::= SEQUENCE {
      version INTEGER {v1-0(16)} (v1-0),
      rounds INTEGER (8..127),
      blockSizeInBits INTEGER (64 | 128),
      iv OCTET STRING OPTIONAL }
        

The fields of type RC5-CBC-Parameters have the following meanings:

タイプRC5-CBC-Parametersのフィールドには以下の意味があります。

- version is the version of the algorithm, which shall be v1-0.

- versionはアルゴリズムのバージョンであり、v1-0でなければなりません。

- rounds is the number of rounds in the encryption operation, which shall be between 8 and 127.

- roundsは、暗号化操作のラウンド数であり、8から127の間でなければなりません。

- blockSizeInBits is the block size in bits, which shall be 64 or 128.

- blockSizeInBitsは、ビット単位のブロックサイズで、64または128になります。

- iv is the initialization vector, an eight-octet string for 64-bit RC5 and a 16-octet string for 128-bit RC5. The default is a string of the appropriate length consisting of zero octets.

- ivは初期化ベクトルで、64ビットRC5の場合は8オクテットの文字列、128ビットRC5の場合は16オクテットの文字列です。デフォルトは、0オクテットで構成される適切な長さの文字列です。

B.2.5. AES-CBC-Pad
B.2.5. AES-CBC-Pad

AES-CBC-Pad is the AES encryption algorithm [NIST197] in CBC mode with the padding operation specified in RFC 5652 [RFC5652]. AES-CBC-Pad has a variable key length of 16, 24, or 32 octets and has a 16-octet block size. It has a 16-octet initialization vector.

AES-CBC-Padは、RFC 5652 [RFC5652]で指定されているパディング操作を使用するCBCモードのAES暗号化アルゴリズム[NIST197]です。 AES-CBC-Padは、16、24、または32オクテットの可変キー長を持ち、16オクテットのブロックサイズを持っています。 16オクテットの初期化ベクトルがあります。

Note: For AES, the padding string consists of 16-(||M|| mod 16) octets each with value 16-(||M|| mod 16).

注:AESの場合、パディング文字列は、それぞれ16-(|| M || mod 16)の値を持つ16-(|| M || mod 16)オクテットで構成されます。

For AES, object identifiers are defined depending on key size and operation mode. For example, the 16-octet (128-bit) key AES encryption scheme in CBC mode would be aes128-CBC-Pad identifying the AES-CBC-PAD encryption scheme using a 16-octet key:

AES の場合、キー サイズと動作モードに応じてオブジェクト識別子が定義されます。 たとえば、CBC モードでの 16 オクテット (128 ビット) キーの AES 暗号化方式は aes128-CBC-Pad となり、16 オクテット キーを使用する AES-CBC-PAD 暗号化方式を識別します。

   aes128-CBC-PAD OBJECT IDENTIFIER ::= {aes 2}
        

The AES object identifier is defined in Appendix C.

AESオブジェクト識別子は、付録Cで定義されています。

The parameters field associated with this OID in an AlgorithmIdentifier shall have type OCTET STRING (SIZE(16)), specifying the initialization vector for CBC mode.

AlgorithmIdentifierでこのOIDに関連付けられているパラメーターフィールドのタイプはOCCET STRING(SIZE(16))で、CBCモードの初期化ベクトルを指定します。

B.3. Message Authentication Schemes
B.3. メッセージ認証スキーム

An example message authentication scheme for PBMAC1 (Section 7.1) is HMAC-SHA-1.

PBMAC1(セクション7.1)のメッセージ認証方式の例は、HMAC-SHA-1です。

B.3.1. HMAC-SHA-1
B.3.1. HMAC-SHA-1

HMAC-SHA-1 is the HMAC message authentication scheme [RFC2104] based on the SHA-1 hash function [NIST180]. HMAC-SHA-1 has a variable key length and a 20-octet (160-bit) message authentication code.

HMAC-SHA-1は、SHA-1ハッシュ関数[NIST180]に基づくHMACメッセージ認証方式[RFC2104]です。 HMAC-SHA-1には、可変キー長と20オクテット(160ビット)のメッセージ認証コードがあります。

The object identifier id-hmacWithSHA1 (see Appendix B.1.1) identifies the HMAC-SHA-1 message authentication scheme. (The object identifier is the same for both the pseudorandom function and the message authentication scheme; the distinction is to be understood by context.) This object identifier is intended to be employed in the object set PBMAC1-Macs (Appendix A.5).

オブジェクト識別子id-hmacWithSHA1(付録B.1.1を参照)は、HMAC-SHA-1メッセージ認証方式を識別します。 (オブジェクト識別子は、疑似ランダム関数とメッセージ認証スキームの両方で同じです。区別はコンテキストによって理解されます。)このオブジェクト識別子は、オブジェクトセットPBMAC1-Macs(付録A.5)で使用することを目的としています。

B.3.2. HMAC-SHA-2
B.3.2. HMAC-SHA-2

HMAC-SHA-2 refers to the set of HMAC message authentication schemes [NIST198] based on the SHA-2 functions [NIST180]. HMAC-SHA-2 has a variable key length and a message authentication code whose length is based on the hash function chosen (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, or SHA-512/256) -- that is, 28, 32, 48, or 64 octets.

HMAC-SHA-2は、SHA-2関数[NIST180]に基づくHMACメッセージ認証スキームのセット[NIST198]を指します。 HMAC-SHA-2には、可変キー長と、選択したハッシュ関数(SHA-224、SHA-256、SHA-384、SHA-512、SHA-512 / 224、またはSHA- 512/256)-つまり、28、32、48、または64オクテット。

The object identifiers id-hmacWithSHA224, id-hmacWithSHA256, id-hmacWithSHA384, id-hmacWithSHA512, id-hmacWithSHA512-224, and id-hmacWithSHA512-256 (see Appendix B.1.2) identify the HMAC-SHA-2 schemes. The object identifiers are the same for both the pseudorandom functions and the message authentication schemes; the distinction is to be understood by context. These object identifiers are intended to be employed in the object set PBMAC1-Macs (Appendix A.5).

オブジェクト識別子id-hmacWithSHA224、id-hmacWithSHA256、id-hmacWithSHA384、id-hmacWithSHA512、id-hmacWithSHA512-224、およびid-hmacWithSHA512-256(付録B.1.2を参照)は、HMAC-SHA-2スキームを識別します。オブジェクト識別子は、擬似ランダム関数とメッセージ認証スキームの両方で同じです。違いは文脈によって理解されるべきです。これらのオブジェクト識別子は、オブジェクトセットPBMAC1-Macs(付録A.5)で使用するためのものです。

Appendix C. ASN.1 Module
付録C. ASN.1モジュール

For reference purposes, the ASN.1 syntax in the preceding sections is presented as an ASN.1 module here.

参考のために、前のセクションのASN.1構文は、ここではASN.1モジュールとして示されています。

   -- PKCS #5 v2.1 ASN.1 Module
   -- Revised October 27, 2012
        
   -- This module has been checked for conformance with the
   -- ASN.1 standard by the OSS ASN.1 Tools
        
   PKCS5v2-1 {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-5(5)
      modules(16) pkcs5v2-1(2)
   }
        
   DEFINITIONS EXPLICIT TAGS ::=
        

BEGIN

ベギン

   -- ========================
   -- Basic object identifiers
   -- ========================
        
   nistAlgorithms OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) country(16)
                                         us(840) organization(1)
                                         gov(101) csor(3) 4}
   oiw    OBJECT IDENTIFIER ::= {iso(1) identified-organization(3) 14}
   rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 113549}
   pkcs   OBJECT IDENTIFIER ::= {rsadsi 1}
   pkcs-5 OBJECT IDENTIFIER ::= {pkcs 5}
        
   -- =======================
   -- Basic types and classes
   -- =======================
        
   AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::=
     SEQUENCE {
       algorithm ALGORITHM-IDENTIFIER.&id({InfoObjectSet}),
       parameters ALGORITHM-IDENTIFIER.&Type({InfoObjectSet}
       {@algorithm}) OPTIONAL
   }
        
   ALGORITHM-IDENTIFIER ::= TYPE-IDENTIFIER
        
   -- ======
   -- PBKDF2
   -- ======
   PBKDF2Algorithms ALGORITHM-IDENTIFIER ::= {
      {PBKDF2-params IDENTIFIED BY id-PBKDF2},
      ...
   }
        
   id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
        
   algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
      {algorithm id-hmacWithSHA1, parameters NULL : NULL}
        
   PBKDF2-params ::= SEQUENCE {
       salt CHOICE {
         specified OCTET STRING,
         otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
       },
       iterationCount INTEGER (1..MAX),
       keyLength INTEGER (1..MAX) OPTIONAL,
       prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
       algid-hmacWithSHA1
   }
        
   PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... }
        
   PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
     {NULL IDENTIFIED BY id-hmacWithSHA1},
     {NULL IDENTIFIED BY id-hmacWithSHA224},
     {NULL IDENTIFIED BY id-hmacWithSHA256},
     {NULL IDENTIFIED BY id-hmacWithSHA384},
     {NULL IDENTIFIED BY id-hmacWithSHA512},
     {NULL IDENTIFIED BY id-hmacWithSHA512-224},
     {NULL IDENTIFIED BY id-hmacWithSHA512-256},
     ...
   }
        
   -- =====
   -- PBES1
   -- =====
        
   PBES1Algorithms ALGORITHM-IDENTIFIER ::= {
      {PBEParameter IDENTIFIED BY pbeWithMD2AndDES-CBC}  |
      {PBEParameter IDENTIFIED BY pbeWithMD2AndRC2-CBC}  |
      {PBEParameter IDENTIFIED BY pbeWithMD5AndDES-CBC}  |
      {PBEParameter IDENTIFIED BY pbeWithMD5AndRC2-CBC}  |
      {PBEParameter IDENTIFIED BY pbeWithSHA1AndDES-CBC} |
      {PBEParameter IDENTIFIED BY pbeWithSHA1AndRC2-CBC},
      ...
   }
   pbeWithMD2AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 1}
   pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 4}
   pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3}
   pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6}
   pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10}
   pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11}
        
   PBEParameter ::= SEQUENCE {
       salt OCTET STRING (SIZE(8)),
       iterationCount INTEGER
   }
        
   -- =====
   -- PBES2
   -- =====
        
   PBES2Algorithms ALGORITHM-IDENTIFIER ::= {
      {PBES2-params IDENTIFIED BY id-PBES2},
      ...
   }
        
   id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}
        
   PBES2-params ::= SEQUENCE {
      keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},
      encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}
   }
        
   PBES2-KDFs ALGORITHM-IDENTIFIER ::= {
      {PBKDF2-params IDENTIFIED BY id-PBKDF2},
      ...
   }
        
   PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }
        
   -- ======
   -- PBMAC1
   -- ======
        
   PBMAC1Algorithms ALGORITHM-IDENTIFIER ::= {
      {PBMAC1-params IDENTIFIED BY id-PBMAC1},
      ...
   }
        
   id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14}
        
   PBMAC1-params ::=  SEQUENCE {
       keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
       messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}}
   }
        
   PBMAC1-KDFs ALGORITHM-IDENTIFIER ::= {
      {PBKDF2-params IDENTIFIED BY id-PBKDF2},
      ...
   }
        
   PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }
        
   -- =====================
   -- Supporting techniques
   -- =====================
        
   digestAlgorithm OBJECT IDENTIFIER     ::= {rsadsi 2}
   encryptionAlgorithm OBJECT IDENTIFIER ::= {rsadsi 3}
        
   SupportingAlgorithms ALGORITHM-IDENTIFIER ::= {
      {NULL IDENTIFIED BY id-hmacWithSHA1}                   |
      {OCTET STRING (SIZE(8)) IDENTIFIED BY desCBC}          |
      {OCTET STRING (SIZE(8)) IDENTIFIED BY des-EDE3-CBC}    |
      {RC2-CBC-Parameter IDENTIFIED BY rc2CBC}               |
      {RC5-CBC-Parameters IDENTIFIED BY rc5-CBC-PAD},        |
      {OCTET STRING (SIZE(16)) IDENTIFIED BY aes128-CBC-PAD} |
      {OCTET STRING (SIZE(16)) IDENTIFIED BY aes192-CBC-PAD} |
      {OCTET STRING (SIZE(16)) IDENTIFIED BY aes256-CBC-PAD},
       ...
   }
        
   id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
   id-hmacWithSHA224 OBJECT IDENTIFIER ::= {digestAlgorithm 8}
   id-hmacWithSHA256 OBJECT IDENTIFIER ::= {digestAlgorithm 9}
   id-hmacWithSHA384 OBJECT IDENTIFIER ::= {digestAlgorithm 10}
   id-hmacWithSHA512 OBJECT IDENTIFIER ::= {digestAlgorithm 11}
   id-hmacWithSHA512-224 OBJECT IDENTIFIER ::= {digestAlgorithm 12}
   id-hmacWithSHA512-256 OBJECT IDENTIFIER ::= {digestAlgorithm 13}
        
   desCBC OBJECT IDENTIFIER ::= {oiw secsig(3) algorithms(2) 7}
        
   des-EDE3-CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 7}
        
   rc2CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 2}
        
   RC2-CBC-Parameter ::= SEQUENCE {
      rc2ParameterVersion INTEGER OPTIONAL,
      iv OCTET STRING (SIZE(8))
   }
   rc5-CBC-PAD OBJECT IDENTIFIER ::= {encryptionAlgorithm 9}
        
   RC5-CBC-Parameters ::= SEQUENCE {
      version INTEGER {v1-0(16)} (v1-0),
      rounds INTEGER (8..127),
      blockSizeInBits INTEGER (64 | 128),
      iv OCTET STRING OPTIONAL
   }
        
   aes OBJECT IDENTIFIER ::= { nistAlgorithms 1 }
   aes128-CBC-PAD OBJECT IDENTIFIER ::= { aes 2 }
   aes192-CBC-PAD OBJECT IDENTIFIER ::= { aes 22 }
   aes256-CBC-PAD OBJECT IDENTIFIER ::= { aes 42 }
        

END

終わり

Appendix D. Revision History of PKCS #5
付録D. PKCS#5の改訂履歴

Versions 1.0 - 1.3

バージョン1.0-1.3

Versions 1.0 - 1.3 were distributed to participants in RSA Data Security Inc.'s Public-Key Cryptography Standards meetings in February and March 1991.

バージョン1.0-1.3は、1991年2月と3月にRSA Data Security Inc.の公開鍵暗号規格会議の参加者に配布されました。

Version 1.4

バージョン1.4

Version 1.4 was part of the June 3, 1991 initial public release of PKCS. Version 1.4 was published as NIST/OSI Implementors' Workshop document SEC-SIG-91-20.

バージョン1.4は、1991年6月3日のPKCSの最初のパブリックリリースの一部でした。バージョン1.4は、NIST / OSI実装者向けワークショップドキュメントSEC-SIG-91-20として公開されました。

Version 1.5

バージョン1.5

Version 1.5 incorporated several editorial changes, including updates to the references and the addition of a revision history.

バージョン1.5には、参照の更新や変更履歴の追加など、いくつかの編集上の変更が組み込まれています。

Version 2.0

バージョン2.0

Version 2.0 incorporates major editorial changes in terms of the document structure, and introduces the PBES2 encryption scheme, the PBMAC1 message authentication scheme, and independent password-based key derivation functions. This version continues to support the encryption process in version 1.5.

バージョン2.0は、ドキュメント構造の点で主要な編集上の変更を組み込んでおり、PBES2暗号化スキーム、PBMAC1メッセージ認証スキーム、および独立したパスワードベースの鍵導出関数を導入しています。このバージョンは、バージョン1.5の暗号化プロセスを引き続きサポートします。

Version 2.1

バージョン2.1

This document transfers PKCS #5 into the IETF and includes some minor changes from the authors for this submission.

このドキュメントは、PKCS#5をIETFに転送し、この提出に関する作成者からのいくつかのマイナーな変更を含みます。

o Introduces AES/CBC as an encryption scheme for PBES2 and HMAC with the hash functions SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256 as pseudorandom functions for PBKDF2 and message authentication schemes for PBMAC1.

o PBKDF2およびPBKDF2の疑似ランダム関数としてハッシュ関数SHA-224、SHA-256、SHA-384、SHA-512、SHA-512 / 224、およびSHA-512 / 256を備えたPBES2およびHMACの暗号化スキームとしてAES / CBCを導入PBMAC1のメッセージ認証スキーム。

o Changes references for PKCS #5 to RFC 2898 and for PKCS #8 to RFCs 5208 and 5898.

o PKCS#5の参照をRFC 2898に、PKCS#8の参照をRFC 5208および5898に変更します。

o Incorporates corrections of two editorial errata reported on PKCS #5 [RFC2898].

o PKCS#5 [RFC2898]で報告された2つの編集エラッタの修正が組み込まれています。

o Added security considerations for MD2, MD5, and SHA-1.

o MD2、MD5、およびSHA-1のセキュリティに関する考慮事項を追加しました。

Appendix E. About PKCS
付録E. PKCSについて

The Public-Key Cryptography Standards are specifications produced by RSA Laboratories in cooperation with secure systems developers worldwide for the purpose of accelerating the deployment of public-key cryptography. First published in 1991 as a result of meetings with a small group of early adopters of public-key technology, the PKCS documents have become widely referenced and implemented. Contributions from the PKCS series have become part of many formal and de facto standards, including ANSI X9 documents, PKIX, Secure Electronic Transaction (SET), S/MIME, and SSL.

公開鍵暗号規格は、公開鍵暗号の展開を加速する目的で、RSA Laboratoriesが世界中の安全なシステム開発者と協力して作成した仕様です。 PKCS文書は、1991年に公開鍵技術の早期採用者の小さなグループとの会議の結果として最初に公開され、広く参照および実装されました。 PKCSシリーズからの貢献は、ANSI X9ドキュメント、PKIX、Secure Electronic Transaction(SET)、S / MIME、SSLなど、多くの正式な事実上の標準の一部となっています。

Further development of most PKCS documents occurs through the IETF. Suggestions for improvement are welcome.

ほとんどのPKCSドキュメントのさらなる開発は、IETFを通じて行われます。改善のための提案は大歓迎です。

Acknowledgements

謝辞

This document is based on a contribution of RSA Laboratories, the research center of RSA Security Inc.

このドキュメントは、RSA Security Inc.の研究センターであるRSA Laboratoriesの寄稿に基づいています。

RC2 and RC5 are trademarks of EMC Corporation.

RC2およびRC5はEMC Corporationの商標です。

Authors' Addresses

著者のアドレス

Kathleen M. Moriarty (editor) Dell EMC 176 South Street Hopkinton, MA 01748 United States of America

キャスリーンM.モリアーティ(編集者)Dell EMC 176サウスストリートホプキントン、MA 01748アメリカ合衆国

   Email: Kathleen.Moriarty@Dell.com
        

Burt Kaliski Verisign 12061 Bluemont Way Reston, VA 20190 United States of America

Burt Kaliski Verisign 12061 Bluemont Way Reston、VA 20190アメリカ合衆国

   Email: bkaliski@verisign.com
   URI:   http://verisignlabs.com
        

Andreas Rusch RSA 345 Queen Street Brisbane, QLD 4000 Australia

Andreas Rusch RSA 345 Queen StreetブリスベンQLD 4000オーストラリア

   Email: andreas.rusch@rsa.com