[要約] RFC 2898は、パスワードベースの暗号化に関する仕様であり、PKCS #5のバージョン2.0を定義しています。このRFCの目的は、パスワードを使用してデータを安全に暗号化するための手法を提供することです。
Network Working Group B. Kaliski Request for Comments: 2898 RSA Laboratories Category: Informational September 2000
PKCS #5: Password-Based Cryptography Specification Version 2.0
PKCS#5:パスワードベースの暗号化仕様バージョン2.0
Status of this Memo
本文書の位置付け
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
このメモは、インターネットコミュニティに情報を提供します。いかなる種類のインターネット標準を指定しません。このメモの配布は無制限です。
Copyright Notice
著作権表示
Copyright (C) The Internet Society (2000). All Rights Reserved.
Copyright(c)The Internet Society(2000)。無断転載を禁じます。
Abstract
概要
This memo represents a republication of PKCS #5 v2.0 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from that specification.
このメモは、RSA LaboratoriesのPublic-Key Cryptography Standards(PKCS)シリーズからのPKCS#5 V2.0の再公開を表し、PKCSプロセス内でChange Controlが保持されます。 この文書の本文は、セキュリティ上の考慮事項セクションを除き、その仕様から直接取得されます。
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構文をカバーするパスワードベースの暗号化の実装に関する推奨事項を提供します。
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 [25]. It is expected that application standards and implementation profiles based on these specifications may include additional constraints.
推奨事項は、コンピューターおよび通信システム内の一般的なアプリケーションを対象としているため、かなりの柔軟性が含まれます。これらは、PKCS#8 [25]のように、プライベートキーなどの機密情報の保護を特に意図しています。これらの仕様に基づいたアプリケーション標準と実装プロファイルには、追加の制約が含まれる場合があります。
Other cryptographic techniques based on passwords, such as password-based key entity authentication and key establishment protocols [4][5][26] are outside the scope of this document. Guidelines for the selection of passwords are also outside the scope.
パスワードベースのキーエンティティ認証や主要な確立プロトコル[4] [5] [26]など、パスワードに基づいた他の暗号化手法は、このドキュメントの範囲外です。パスワードの選択に関するガイドラインも範囲外です。
Table of Contents
目次
1. Introduction ............................................... 3 2. Notation ................................................... 3 3. Overview ................................................... 4 4. Salt and iteration count ................................... 6 4.1 Salt ................................................... 6 4.2 Iteration count ........................................ 8 5. Key derivation functions ................................... 8 5.1 PBKDF1 ................................................. 9 5.2 PBKDF2 ................................................. 9 6. Encryption schemes ......................................... 11 6.1 PBES1 .................................................. 12 6.1.1 Encryption operation ............................ 12 6.1.2 Decryption operation ............................ 13 6.2 PBES2 .................................................. 14 6.2.1 Encryption operation ............................ 14 6.2.2 Decryption operation ............................ 15 7. Message authentication schemes ............................. 15 7.1 PBMAC1 ................................................. 16 7.1.1 MAC generation .................................. 16 7.1.2 MAC verification ................................ 16 8. Security Considerations .................................... 17 9. Author's Address............................................ 17 A. ASN.1 syntax ............................................... 18 A.1 PBKDF1 ................................................. 18 A.2 PBKDF2 ................................................. 18 A.3 PBES1 .................................................. 20 A.4 PBES2 .................................................. 20 A.5 PBMAC1 ................................................. 21 B. Supporting techniques ...................................... 22 B.1 Pseudorandom functions ................................. 22 B.2 Encryption schemes ..................................... 23 B.3 Message authentication schemes ......................... 26 C. ASN.1 module ............................................... 26 Intellectual Property Considerations ............................ 30 Revision history ................................................ 30 References ...................................................... 31 Contact Information & About PKCS ................................ 33 Full Copyright Statement ........................................ 34
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 [25]. It is expected that application standards and implementation profiles based on these specifications may include additional constraints.
推奨事項は、コンピューターおよび通信システム内の一般的なアプリケーションを対象としているため、かなりの柔軟性が含まれます。これらは、PKCS#8 [25]のように、プライベートキーなどの機密情報の保護を特に意図しています。これらの仕様に基づいたアプリケーション標準と実装プロファイルには、追加の制約が含まれる場合があります。
Other cryptographic techniques based on passwords, such as password-based key entity authentication and key establishment protocols [4][5][26] are outside the scope of this document. Guidelines for the selection of passwords are also outside the scope.
パスワードベースのキーエンティティ認証や主要な確立プロトコル[4] [5] [26]など、パスワードに基づいた他の暗号化手法は、このドキュメントの範囲外です。パスワードの選択に関するガイドラインも範囲外です。
This document supersedes PKCS #5 version 1.5 [24], but includes compatible techniques.
このドキュメントは、PKCS#5バージョン1.5 [24]に取って代わりますが、互換性のある手法が含まれています。
C ciphertext, an octet string
c cyphertext、オクテット文字列
c iteration count, a positive integer
c反復カウント、正の整数
DK derived key, an octet string
DK派生キー、オクテット文字列
dkLen length in octets of derived key, a positive integer
派生キーのオクテットのdklen長、正の整数
EM encoded message, an octet string
emエンコードされたメッセージ、オクテット文字列
Hash underlying hash function
ハッシュ基礎となるハッシュ関数
hLen length in octets of pseudorandom function output, a positive integer
擬似ランダム関数出力のオクテットのhlen長、正の整数
l length in blocks of derived key, a positive integer
L派生キーのブロックの長さ、正の整数
IV initialization vector, an octet string
IV初期化ベクトル、オクテット文字列
K encryption key, an octet string KDF key derivation function
k暗号化キー、オクテット文字列KDFキー派生関数
M message, an octet string
mメッセージ、オクテット文字列
P password, an octet string
Pパスワード、オクテット文字列
PRF underlying pseudorandom function
PRF基礎となる擬似ランダム関数
PS padding string, an octet string
PSパディングストリング、オクテットストリング
psLen length in octets of padding string, a positive integer
パディングストリングのオクテットのpslenの長さ、正の整数
S salt, an octet string
S塩、オクテットの弦
T message authentication code, an octet string
Tメッセージ認証コード、Octet文字列
T_1, ..., T_l, U_1, ..., U_c intermediate values, octet strings
t_1、...、t_l、u_1、...、u_c中間値、オクテット文字列
01, 02, ..., 08 octets with value 1, 2, ..., 8
01、02、...、08値1、2、...、8
\xor bit-wise exclusive-or of two octet strings
\ xorビットごとの排他的または2つのオクテット文字列の排他的
|| || octet length operator
|| concatenation operator
||連結演算子
<i..j> substring extraction operator: extracts octets i through j, 0 <= i <= j
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 [8] 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とThompson [8]が説明するパスワードベースの暗号化に対する一般的なアプローチは、パスワードと塩を組み合わせてキーを作成することです。塩は、パスワードから派生したキーの大きなセットへのインデックスと見なすことができ、秘密にする必要はありません。相手が可能なパスワードのテーブル(いわゆる「辞書攻撃」)を作成することは可能かもしれませんが、各パスワードに可能なキーが多数あるため、可能なキーのテーブルを構築することは困難です。したがって、対戦相手は、各塩のパスワードを個別に検索することに限定されます。
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つのアプローチは、比較的高価な重要な派生技術を構築することであり、それにより徹底的な検索のコストを増加させることです。これを行う1つの方法は、キー派生手法に反復カウントを含めることです。キーが導出される根本機能を反復する回数を示します。1000の控えめな数の反復は、キーを計算する際に正当な当事者にとって負担とはならないが、対戦相手にとって大きな負担になるだろう。
Salt and iteration count formed the basis for password-based encryption in PKCS #5 v1.5, and 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 V1.5のパスワードベースの暗号化の基礎を形成し、さまざまな暗号操作にも採用されました。したがって、ここで定義されているパスワードベースのキー導出は、パスワード、塩、および反復カウントの関数であり、後者の2つの量を秘密に保つ必要はありません。
From a password-based key derivation function, it is straightforward to define password-based encryption and message authentication schemes. As in PKCS #5 v1.5, 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 v1.5のように、ここのパスワードベースの暗号化スキームは、従来のスキームのキーがパスワードから派生している基礎となる従来の暗号化スキームに基づいています。同様に、パスワードベースのメッセージ認証スキームは、基礎となる従来のスキームに基づいています。この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.
パスワードベースのキー派生関数は、ここで定義されている暗号化とメッセージ認証スキームだけ以外のアプリケーションを見つけることが期待されています。たとえば、関数の個別のアプリケーションで各キーを導出するのではなく、キー導入関数の単一のアプリケーションでキーのセットを導出する場合があります。セット内のキーは、キー導出関数の出力のサブストリングとして取得されます。このアプローチは、セッション指向のプロトコルで主要な設立の一部として採用される場合があります。別のアプリケーションはパスワードチェックです。ここで、キー導入関数の出力が(塩と反復数とともに)その後のパスワードの検証を目的として保存されます。
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 [27] are two possibilities. (ASCII is a subset of UTF-8.) Although the selection of passwords is outside the scope of this document, guidelines have been published [17] that may well be taken into account.
このドキュメント全体で、パスワードは、テキスト文字列としての解釈が不特定の任意の長さのオクテット文字列と見なされます。ただし、相互運用性のために、アプリケーションはいくつかの一般的なテキストエンコーディングルールに従うことをお勧めします。ASCIIとUTF-8 [27]は2つの可能性です。(ASCIIはUTF-8のサブセットです。)パスワードの選択はこのドキュメントの範囲外ですが、ガイドラインが公開されており[17]、考慮される可能性があります。
Inasmuch as salt and iteration count are central to the techniques defined in this document, some further discussion is warranted.
塩と反復数がこの文書で定義されている技術の中心であるため、さらにいくつかの議論が必要です。
A salt in password-based cryptography has traditionally served the purpose of producing a large set of keys corresponding to a given password, among which one is selected at random according to the salt. An individual key in the set is selected by applying a key derivation function KDF, as
パスワードベースの暗号化の塩は、伝統的に、特定のパスワードに対応する大きなキーセットを生成する目的を果たしてきました。その中には、塩に従ってランダムに選択されています。セット内の個々のキーは、キー派生関数KDFを適用することによって選択されます。
DK = KDF (P, S)
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 corresponding to a dictionary of passwords, or even the most likely keys. 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. This addresses some of the concerns about interactions between multiple uses of the same key, which may apply for 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 a 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.
注記。乱数ジェネレーターまたは擬似ランダムジェネレーターが利用できない場合、塩(またはそのランダム部分)を生成するための決定論的な代替手段は、パスワードベースのキー派生関数をパスワードに適用し、Message Mを処理するメッセージを適用することです。たとえば、塩はs = kdf(p、m)としてキー誘導関数で計算できます。メッセージmが小さなメッセージ空間(たとえば、「はい」または「いいえ」)に属することが知られている場合、このアプローチは推奨されませんが、それ以来、少数の可能な塩のみがあります。
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. For the methods in this document, a minimum of 1000 iterations is recommended. This will increase the cost of exhaustive search for passwords significantly, without a noticeable impact in the cost of deriving individual keys.
反復カウントは、従来、パスワードからキーを生成するコストを増やす目的であり、それによって攻撃の難しさも増加しています。このドキュメントの方法には、最低1000回の反復が推奨されます。これにより、個々のキーを導き出すコストに顕著な影響を与えることなく、パスワードの徹底的な検索のコストが大幅に増加します。
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.
このセクションでは、2つの関数を指定します:PBKDF1とPBKDF2。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で説明されているように、塩を変えることにより、パスワードから任意の数のキーを導き出すことができます。
PBKDF1 applies a hash function, which shall be MD2 [6], MD5 [19] or SHA-1 [18], 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.
PBKDF1は、キーを導出するために、MD2 [6]、MD5 [19]、またはSHA-1 [18]でなければならないハッシュ関数を適用します。導出されたキーの長さは、Hash関数出力の長さで囲まれています。これは、MD2とMD5で16オクテット、SHA-1で20オクテットです。PBKDF1は、PKCS#5 V1.5のキー導出プロセスと互換性があります。
PBKDF1 is recommended only for compatibility with existing applications since the keys it produces may not be large enough for some applications.
PBKDF1は、生成するキーが一部のアプリケーションには十分に大きくない場合があるため、既存のアプリケーションとの互換性にのみ推奨されます。
PBKDF1 (P, S, c, dkLen)
PBKDF1(P、S、C、Dklen)
Options: Hash underlying hash function
オプション:ハッシュ基礎となるハッシュ関数
Input: P password, an octet string S salt, an eight-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
出力:dk派生キー、dklen-octet文字列
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. パスワードPと塩Sの連結に合わせて、基礎となるハッシュ関数ハッシュを適用し、最初のdklenオクテットを抽出して、導出されたキーDKを生成します。
T_1 = Hash (P || S) , T_2 = Hash (T_1) , ... T_c = Hash (T_{c-1}) , DK = Tc<0..dkLen-1>
3. Output the derived key DK.
3. 派生キーDKを出力します。
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)
PBKDF2(P、S、C、Dklen)
Options: PRF underlying pseudorandom function (hLen denotes the length in octets of the pseudorandom function output)
オプション:PRF基礎となる擬似ランダム関数(HLENは、擬似ランダム関数出力のオクテットの長さを示します)
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
出力:dk派生キー、dklen-octet文字列
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-octetブロックの数と丸めて、rを最後のブロックのオクテットの数とします。
l = CEIL (dkLen / hLen) , r = dkLen - (l - 1) * hLen .
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) ,
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の最初のcERATEの排他的または合計として定義され、塩SおよびブロックインデックスIの連結I:
F (P, S, c, i) = U_1 \xor U_2 \xor ... \xor U_c
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}) .
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は、相手からある程度の並列性を除去するために再帰的に計算されます。彼らは排他的であり、再帰が小さな価値のセットに退化することに関する懸念を減らすために一緒に存在します。
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.
このセクションでは、2つのスキームが指定されています:PBES1とPBES2。PBES2は新しいアプリケーションに推奨されます。PBES1は、既存のアプリケーションとの互換性のためにのみ含まれており、新しいアプリケーションには推奨されません。
PBES1 combines the PBKDF1 function (Section 5.1) with an underlying block cipher, which shall be either DES [15] or RC2(tm) [21] in CBC mode [16]. PBES1 is compatible with the encryption scheme in PKCS #5 v1.5.
PBES1は、PBKDF1関数(セクション5.1)と基礎となるブロック暗号を組み合わせます。これは、CBCモード[16]のDES [15]またはRC2(TM)[21]のいずれかです。PBES1は、PKCS#5 V1.5の暗号化スキームと互換性があります。
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つの暗号化スキームのみをサポートしているため、それぞれがいくつかのアプリケーションに十分な大きさでない可能性のあるキーサイズ(56または64ビット)を備えています。
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の暗号化操作は、次の手順で構成されており、パスワードPの下でメッセージmを暗号化して暗号文Cを生成します。
1. Select an eight-octet salt S and an iteration count c, as outlined in Section 4.
1. セクション4で概説されているように、8オクテットの塩と反復カウント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 at derived key DK of length 16 octets:
2. PBKDF1キー派生関数(セクション5.1)をパスワードP、SALT S、および反復カウントCに適用して、長さ16オクテットの派生キーDKで生成します。
DK = PBKDF1 (P, S, c, 16) .
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オクテットと次の8オクテットで構成される初期化ベクターIVで構成される暗号化キーKに分離します。
K = DK<0..7> , IV = DK<8..15> .
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 ,
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)オクテットで構成されています。パディングストリング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.
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 [3].)
エンコードされたメッセージのオクテットの長さは8倍になり、エンコードされたメッセージからメッセージを明確に回復することが可能になります。(このパディングルールはRFC 1423 [3]から取得されます。)
5. Encrypt the encoded message EM with the underlying block cipher (DES or RC2) in cipher block chaining 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 [9]). For RC2, the "effective key bits" shall be 64 bits.
5. エンコードされたメッセージEMを暗号化キーKを使用して暗号化キーKの下にある暗号ブロックチェーンモードで、基礎となるブロックCipher(DESまたはRC2)を暗号化して暗号化します。パリティビットが無視された56ビットDESキーの([9]を参照)。RC2の場合、「効果的なキービット」は64ビットでなければなりません。
6. Output the ciphertext C.
6. ciphertext 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は、アルゴリズムのIdentifier値で復号化を実行する当事者に伝えることができます(付録A.3を参照)。
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の復号化操作は、次の手順で構成されており、パスワードPの下で暗号文Cを復号化してメッセージMを回復します。
1. Obtain the eight-octet salt S and the iteration count c.
1. 8オクテットの塩と反復カウント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、SALT S、および反復カウントCに適用して、長さ16オクテットの派生キーDKを生成します。
DK = PBKDF1 (P, S, c, 16)
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オクテットと次の8オクテットで構成される初期化ベクターIVで構成される暗号化キーKに分離します。
K = DK<0..7> , IV = DK<8..15> .
k = dk <0..7>、iv = dk <8..15>。
4. Decrypt the ciphertext C with the underlying block cipher (DES or RC2) in cipher block chaining 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. 暗号化キーKの下で暗号ブロックチェーンモードの基礎となるブロック暗号(DESまたはRC2)で暗号文Cを初期化ベクトルIVで暗号ブロックチェーンモードで復号化して、エンコードされたメッセージEMを回復します。Ciphertext Cのオクテットの長さが8倍の倍数ではない場合、出力「復号化誤差」と停止します。
5. Separate the encoded message EM into a message M and a padding string PS:
5. エンコードされたメッセージemをメッセージmとパディングストリングpsに分離します:
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が1〜8の値PSLENを使用して、それぞれの数値PSLENオクテットで構成されています。この方法でエンコードされたメッセージEMを分離できない場合は、「復号化エラー」を出力して停止します。
6. Output the recovered message M.
6. 回復したメッセージを出力します。
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は、新しいアプリケーションに推奨されます。
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の暗号化操作は、次の手順で構成されています。これは、パスワードPの下にメッセージmを暗号化して暗号文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) .
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. ciphertext 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、および基礎となる暗号化スキームの識別子は、アルゴリズムのididentifier値で復号化を実行する当事者に伝えることができます(付録A.4を参照)。
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の復号化操作は、次の手順で構成されており、パスワードPの下で暗号文Cを復号化してメッセージmを回復します。
1. Obtain the salt S for the operation.
1. 操作のために塩を入手してください。
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) .
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. 回復したメッセージを出力します。
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 message authentication code 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検証操作はメッセージ認証コードを検証します。同じキー。パスワードベースのメッセージ認証スキームでは、キーはパスワードです。
One scheme is specified in this section: PBMAC1.
このセクションでは、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を参照)を参照してください。基礎となるメッセージ認証スキームのキーの長さとその他のパラメーターは、スキームに依存します。
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生成操作は、次の手順で構成されており、パスワードPの下でメッセージmを処理してメッセージ認証コードTを生成し、選択したキー派生関数KDFと選択した基礎となるメッセージ認証スキームを適用します。
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) .
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、およびキー派生関数と基礎となるメッセージ認証スキームの識別子は、アルゴリズムのididentifier値で検証を実行する当事者に伝えることができます(付録A.5を参照)。
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検証操作は、次の手順で構成されており、パスワードPの下でメッセージmを処理してメッセージ認証コードを確認します。
1. Obtain the salt S and the iteration count c.
1. 塩と反復カウント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) .
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の下に基礎となるメッセージ認証スキームを使用してメッセージを処理して、メッセージ認証コードTを確認します。
5. If the message authentication code verifies, output "correct"; else output "incorrect."
5. メッセージ認証コードが検証された場合、出力「正しい」;それ以外の場合は、「正しくありません」。
Password-based cryptography is generally limited in the security that it can provide, particularly for methods such as those defined in this document where off-line 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 are selected well, and relevant guidelines (e.g., [17]) should be taken into account. It is also important that passwords be protected well if stored.
パスワードベースの暗号化は、一般に、特にオフラインのパスワード検索が可能なこのドキュメントで定義されている方法などの方法で提供できるセキュリティが制限されています。塩と反復カウントの使用は攻撃の複雑さを高める可能性がありますが(推奨事項についてはセクション4を参照)、パスワードを適切に選択することが不可欠であり、関連するガイドライン([17]など)を考慮する必要があります。また、保存すると、パスワードを適切に保護することも重要です。
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の推奨事項は、塩値を選択する際に考慮する必要があります。
Burt Kaliski RSA Laboratories 20 Crosby Drive Bedford, MA 01730 USA
Burt Kaliski RSA Laboratories 20 Crosby Drive Bedford、MA 01730 USA
EMail: bkaliski@rsasecurity.com
APPENDICES
付録
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 [9][10][11][12][13][14].)
このセクションでは、キー派生関数、暗号化スキーム、メッセージ認証スキーム、およびサポート手法のASN.1構文を定義します。これらの定義の意図したアプリケーションには、主要な管理、暗号化されたデータ、および整合性保護データのためのPKCS#8およびその他の構文が含まれます。(ASN.1のさまざまな側面は、いくつかのISO/IEC標準[9] [10] [11] [12] [13] [14]で指定されています。)
The object identifier pkcs-5 identifies the arc of the OID tree from which the PKCS #5-specific OIDs in this section are derived:
オブジェクト識別子PKCS-5は、このセクションのPKCS#5固有のOIDが導出されるOIDツリーのアークを識別します。
rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 113549} pkcs OBJECT IDENTIFIER ::= {rsadsi 1} pkcs-5 OBJECT IDENTIFIER ::= {pkcs 5}
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.
PBES1のオブジェクト識別子は既存のアプリケーションに十分であり、新しいアプリケーションにはPBKDF2が推奨されるため、PBKDF1にはオブジェクト識別子は与えられません。
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 PKDF2-params have the following meanings:
タイプPKDF2-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.
- 塩は、塩値、または塩値の供給源を指定します。これは、PKCS#5の将来のバージョン用に予約されているセットPBKDF2-SaltSourcesにOIDを備えたOctet文字列またはアルゴリズム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.
ソルトソースアプローチは、アルゴリズムID、アプリケーションデータ、またはその両方でパラメーターの関数として塩値を生成する方法を示すことを目的としています。たとえば、セクション4.1で提案されているように、派生キーに関する詳細情報を指定する構造のエンコードから塩値が生成されることを示している場合があります。情報の一部は、例えば暗号化アルゴリズム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は、基礎となる擬似ランダム機能を識別します。これは、SET PBKDF2-PRFSにOIDを備えたアルゴリズムIDでなければなりません。PKCS#5のこのバージョンでは、ID-HMACWithSha1(付録B.1.1を参照)およびアプリケーションによって除外されたその他のOIDで構成されます。
PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= { {NULL IDENTIFIED BY id-hmacWithSHA1}, ... }
The default pseudorandom function is HMAC-SHA-1:
デフォルトの擬似ランダム関数はHMAC-SHA-1です。
algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::= {algorithm id-hmacWithSHA1, parameters NULL : NULL}
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について、アルゴリズムIdentifierの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.
- 塩は、8オクテットの弦である塩値を指定します。
- iterationCount specifies the iteration count.
- IterationCountは反復カウントを指定します。
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:
アルゴリズムIdentifier内のこの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).
- KeyDedivationFuncは、基礎となるキー派生関数を識別します。これは、SET PBES2-KDFSに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. Example underlying encryption schemes are given in Appendix B.2.
- encryptionscheme基礎となる暗号化スキームを識別します。これは、設定されたPBES2-ENCSにOIDを含むアルゴリズムIDであり、その定義はアプリケーションに委ねられています。基礎となる暗号化スキームの例は、付録B.2に示されています。
PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }
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:
アルゴリズムIdentifier内のこのOIDに関連付けられたパラメーターフィールドには、型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-KDFSであることを除いて、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. Example underlying encryption schemes are given in Appendix B.3.
Messageauthschemeフィールドは、基礎となるメッセージ認証スキームを識別します。これは、設定されたPBMAC1-MACSにOIDを備えたアルゴリズムIDであり、その定義はアプリケーションに委ねられています。基礎となる暗号化スキームの例は、付録B.3に示されています。
PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }
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}
An example pseudorandom function for PBKDF2 (Section 5.2) is HMAC-SHA-1.
PBKDF2(セクション5.2)の疑似ランダム関数の例はHMAC-SHA-1です。
HMAC-SHA-1 is the pseudorandom function corresponding to the HMAC message authentication code [7] based on the SHA-1 hash function [18]. 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ハッシュ関数[18]に基づくHMACメッセージ認証コード[7]に対応する擬似ランダム関数です。擬似ランダム関数は、メッセージ認証コードが計算され、完全な長さの出力と同じ関数です。(擬似ランダム関数PRFの最初の引数はHMACの「キー」として機能し、2番目はHMACの「テキスト」として機能します。PBKDF2の場合、「キー」はパスワードであり、「テキスト」は塩です。)HMAC-SHA-1には、可変キーの長さと20-OCTET(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).
アルゴリズムIDIDENTIFIERのこのOIDに関連付けられたパラメーターフィールドには、型nullが必要です。このオブジェクト識別子は、オブジェクトセットPBKDF2-PRFSに使用されます(付録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.
注記。HMAC-SHA-1はメッセージ認証コードとして設計されていますが、そのセキュリティの証明は、より強力な仮定の下で、疑似ランダム機能の要件に対応するために容易に変更されます。
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 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は、「キー」と「テキスト」を別々の引数として扱い、構造を持つために「テキスト」を必要としないため、好ましいです。
Example pseudorandom functions for PBES2 (Section 6.2) are DES-CBC-Pad, DES-EDE2-CBC-Pad, RC2-CBC-Pad, and RC5-CBC-Pad.
PBES2(セクション6.2)の擬似ランダム機能の例は、DES-CBC-PAD、DES-EDE2-CBC-PAD、RC2-CBC-PAD、およびRC5-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)。
DES-CBC-Pad is single-key DES [15] in CBC mode [16] with the RFC 1423 padding operation (see Section 6.1.1). 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は、RFC 1423パディング操作を備えたCBCモード[16]のシングルキーDES [15]です(セクション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実装者のワークショップ契約で定義)は、DES-CBCパッド暗号化スキームを識別します。
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に関連付けられたパラメーターフィールドには、CBCモードの初期化ベクトルを指定するタイプのオクテット文字列(サイズ(8))が必要です。
DES-EDE3-CBC-Pad is three-key triple-DES in CBC mode [1] with the RFC 1423 padding operation. 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は、RFC 1423パディング操作を備えたCBCモード[1]の3キートリプルデスです。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に関連付けられたパラメーターフィールドには、CBCモードの初期化ベクトルを指定するタイプのオクテット文字列(サイズ(8))が必要です。
Note. An OID for DES-EDE3-CBC without padding is given in ANSI X9.52 [1]; the one given here is preferred since it specifies padding.
注記。パディングのないdes-ede3-CBCのoidは、ANSI x9.52 [1]に与えられています。ここで与えられたものは、パディングを指定しているため好まれています。
RC2-CBC-Pad is the RC2(tm) encryption algorithm [21] in CBC mode with the RFC 1423 padding operation. 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は、RFC 1423パディング操作を備えたCBCモードのRC2(TM)暗号化アルゴリズム[21]です。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
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オクテットの初期化ベクトルです。
RC5-CBC-Pad is the RC5(tm) encryption algorithm [20] in CBC mode with a generalization of the RFC 1423 padding operation. This scheme is fully specified in [2]. 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は、RFC 1423パディング操作の一般化を伴うCBCモードのRC5(TM)暗号化アルゴリズム[20]です。このスキームは[2]で完全に指定されています。RC5-CBC-PADは、0〜256オクテットの可変キー長を持ち、64ビットブロックサイズと128ビットブロックサイズの両方をサポートしています。前者については、8オクテットの初期化ベクトルがあり、後者の場合は16オクテットの初期化ベクトルがあります。RC5-CBC-PADには、暗号化操作に8から127の変動数の「ラウンド」もあります。
Note: The generalization of the padding operation is as follows. For RC5 with a 64-bit block size, the padding string is as defined in RFC 1423. 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で定義されています。128ビットブロックサイズのRC5の場合、パディングストリングは16-(|| m || mod 16)オクテットで構成されます。16-(|| m || mod 16)。
The object identifier rc5-CBC-PAD [2] identifies RC5-CBC-Pad encryption scheme:
オブジェクト識別子RC5-CBC-PAD [2]は、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:
アルゴリズムIdentifierのこのOIDに関連付けられたパラメーターフィールドには、型RC5-CBCパラメーターを備えている必要があります。
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パラメーターのフィールドには、次の意味があります。
- version is the version of the algorithm, which shall be v1-0.
- バージョンはアルゴリズムのバージョンであり、v1-0とします。
- rounds is the number of rounds in the encryption operation, which shall be between 8 and 127.
- ラウンドは、暗号化操作のラウンド数であり、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オクテット文字列です。デフォルトは、ゼロオクテットで構成される適切な長さの文字列です。
An example message authentication scheme for PBMAC1 (Section 7.1) is HMAC-SHA-1.
PBMAC1(セクション7.1)のメッセージ認証スキームの例はHMAC-SHA-1です。
HMAC-SHA-1 is the HMAC message authentication scheme [7] based on the SHA-1 hash function [18]. HMAC-SHA-1 has a variable key length and a 20-octet (160-bit) message authentication code.
HMAC-SHA-1は、SHA-1ハッシュ関数[18]に基づくHMACメッセージ認証スキーム[7]です。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)に使用されることを目的としています。
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.0 ASN.1 Module -- Revised March 25, 1999
-- This module has been checked for conformance with the -- ASN.1 standard by the OSS ASN.1 Tools
PKCS5v2-0 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-5(5) modules(16) pkcs5v2-0(1)}
DEFINITIONS ::= BEGIN
-- Basic object identifiers
- 基本的なオブジェクト識別子
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
-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}, ... }
-- PBES1
-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
-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
-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}, ... }
id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
desCBC OBJECT IDENTIFIER ::= {iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 7} -- from OIW
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 }
END
終わり
Intellectual Property Considerations
知的財産の考慮事項
RSA Security makes no patent claims on the general constructions described in this document, although specific underlying techniques may be covered. Among the underlying techniques, the RC5 encryption algorithm (Appendix B.2.4) is protected by U.S. Patents 5,724,428 [22] and 5,835,600 [23].
RSAセキュリティは、このドキュメントで説明されている一般的な構造に関する特許請求を行いませんが、特定の基礎となる手法がカバーされる場合があります。基礎となる手法の中で、RC5暗号化アルゴリズム(付録B.2.4)は、米国の特許5,724,428 [22]および5,835,600 [23]によって保護されています。
RC2 and RC5 are trademarks of RSA Security.
RC2とRC5は、RSAセキュリティの商標です。
License to copy this document is granted provided that it is identified as RSA Security Inc. Public-Key Cryptography Standards (PKCS) in all material mentioning or referencing this document.
このドキュメントをコピーするライセンスは、このドキュメントに言及または参照するすべての資料で、RSA Security Inc. Public-Key Cryptography Standards(PKCS)として識別されていることを条件に付与されます。
RSA Security makes no representations regarding intellectual property claims by other parties. Such determination is the responsibility of the user.
RSAセキュリティは、他の当事者による知的財産請求に関しては何も表明しません。このような決定は、ユーザーの責任です。
Revision history
改訂履歴
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の暗号化プロセスを引き続きサポートしています。
References
参考文献
[1] American National Standard X9.52 - 1998, Triple Data Encryption Algorithm Modes of Operation. Working draft, Accredited Standards Committee X9, July 27, 1998.
[1] American National Standard X9.52-1998、トリプルデータ暗号化アルゴリズムモードモード。ワーキングドラフト、認定標準委員会X9、1998年7月27日。
[2] Baldwin, R. and R. Rivest, "The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms", RFC 2040, October 1996.
[2] Baldwin、R。およびR. Rivest、「RC5、RC5-CBC、RC5-CBC-PAD、およびRC5-CTSアルゴリズム」、RFC 2040、1996年10月。
[3] Balenson, D., "Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers", RFC 1423, February 1993.
[3] Balenson、D。、「インターネット電子メールのプライバシー強化:パートIII:アルゴリズム、モード、識別子」、RFC 1423、1993年2月。
[4] S.M. Bellovin and M. Merritt. Encrypted key exchange: Password-based protocols secure against dictionary attacks. In Proceedings of the 1992 IEEE Computer Society Conference on Research in Security and Privacy, pages 72-84, IEEE Computer Society, 1992.
[4] S.M.ベロビンとM.メリット。暗号化されたキー交換:パスワードベースのプロトコルは、辞書攻撃に対して安全です。1992年のIEEE Computer Society Conference on Research in Security and Privacy Conference、Pages 72-84、IEEE Computer Society、1992。
[5] D. Jablon. Strong password-only authenticated key exchange. ACM Computer Communications Review, October 1996.
[5] D. Jablon。強力なパスワードのみの認証されたキー交換。ACM Computer Communications Review、1996年10月。
[6] Kaliski, B., "The MD2 Message-Digest Algorithm", RFC 1319, April 1992.
[6] Kaliski、B。、「The MD2 Message-Digest Algorithm」、RFC 1319、1992年4月。
[7] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.
[7] Krawczyk、H.、Bellare、M。、およびR. Canetti、「HMAC:メッセージ認証のためのキードハッシング」、RFC 2104、1997年2月。
[8] Robert Morris and Ken Thompson. Password security: A case history. Communications of the ACM, 22(11):594-597, November 1979.
[8] ロバート・モリスとケン・トンプソン。パスワードセキュリティ:ケース履歴。ACMの通信、22(11):594-597、1979年11月。
[9] ISO/IEC 8824-1:1995: Information technology - Abstract Syntax Notation One (ASN.1) - Specification of basic notation. 1995.
[9] ISO/IEC 8824-1:1995:情報技術 - 抽象的構文表記1(ASN.1) - 基本表記の仕様。1995年。
[10] ISO/IEC 8824-1:1995/Amd.1:1995 Information technology - Abstract Syntax Notation One (ASN.1) - Specification of basic notation - Amendment 1 - Rules of extensibility. 1995.
[10] ISO/IEC 8824-1:1995/AMD.1:1995情報技術 - 要約構文表記1(ASN.1) - 基本表記の仕様 - 修正1-拡張性の規則。1995年。
[11] ISO/IEC 8824-2:1995 Information technology - Abstract Syntax Notation One (ASN.1) - Information object specification. 1995.
[11] ISO/IEC 8824-2:1995情報技術 - 要約構文表記1(ASN.1) - 情報オブジェクト仕様。1995年。
[12] ISO/IEC 8824-2:1995/Amd.1:1995 Information technology - Abstract Syntax Notation One (ASN.1) - Information object specification - Amendment 1 - Rules of extensibility. 1995.
[12] ISO/IEC 8824-2:1995/AMD.1:1995情報技術 - 要約構文表記1(ASN.1) - 情報オブジェクト仕様 - 修正1-拡張性の規則。1995年。
[13] ISO/IEC 8824-3:1995 Information technology - Abstract Syntax Notation One (ASN.1) - Constraint specification. 1995.
[13] ISO/IEC 8824-3:1995情報技術 - 要約構文表記1(ASN.1) - 制約仕様。1995年。
[14] ISO/IEC 8824-4:1995 Information technology - Abstract Syntax Notation One (ASN.1) - Parameterization of ASN.1 specifications. 1995.
[14] ISO/IEC 8824-4:1995情報技術 - 要約構文表記1(ASN.1) - ASN.1仕様のパラメーター化。1995年。
[15] National Institute of Standards and Technology (NIST). FIPS PUB 46-2: Data Encryption Standard. December 30, 1993.
[15] 国立標準技術研究所(NIST)。FIPS Pub 46-2:データ暗号化標準。1993年12月30日。
[16] National Institute of Standards and Technology (NIST). FIPS PUB 81: DES Modes of Operation. December 2, 1980.
[16] 国立標準技術研究所(NIST)。FIPS Pub 81:DES Modes of Operation。1980年12月2日。
[17] National Institute of Standards and Technology (NIST). FIPS PUB 112: Password Usage. May 30, 1985.
[17] 国立標準技術研究所(NIST)。FIPS Pub 112:パスワードの使用。1985年5月30日。
[18] National Institute of Standards and Technology (NIST). FIPS PUB 180-1: Secure Hash Standard. April 1994.
[18] 国立標準技術研究所(NIST)。FIPS Pub 180-1:安全なハッシュ標準。1994年4月。
[19] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992.
[19] Rivest、R。、「The Md5 Message-Digest Algorithm」、RFC 1321、1992年4月。
[20] R.L. Rivest. The RC5 encryption algorithm. In Proceedings of the Second International Workshop on Fast Software Encryption, pages 86-96, Springer-Verlag, 1994.
[20] R.L. Rivest。RC5暗号化アルゴリズム。Fast Software暗号化に関する第2回国際ワークショップの議事録、86〜96ページ、Springer-Verlag、1994年。
[21] Rivest, R., "A Description of the RC2(r) Encryption Algorithm", RFC 2268, March 1998.
[21] Rivest、R。、「RC2(R)暗号化アルゴリズムの説明」、RFC 2268、1998年3月。
[22] R.L. Rivest. Block-Encryption Algorithm with Data-Dependent Rotations. U.S. Patent No. 5,724,428, March 3, 1998.
[22] R.L. Rivest。データ依存の回転を伴うブロック暗号化アルゴリズム。米国特許第5,724,428号、1998年3月3日。
[23] R.L. Rivest. Block Encryption Algorithm with Data-Dependent Rotations. U.S. Patent No. 5,835,600, November 10, 1998.
[23] R.L. Rivest。データ依存の回転を伴うブロック暗号化アルゴリズム。1998年11月10日、米国特許第5,835,600号。
[24] RSA Laboratories. PKCS #5: Password-Based Encryption Standard. Version 1.5, November 1993.
[24] RSA研究所。PKCS#5:パスワードベースの暗号化標準。バージョン1.5、1993年11月。
[25] RSA Laboratories. PKCS #8: Private-Key Information Syntax Standard. Version 1.2, November 1993.
[25] RSA研究所。PKCS#8:プライベートキー情報構文標準。バージョン1.2、1993年11月。
[26] T. Wu. The Secure Remote Password protocol. In Proceedings of the 1998 Internet Society Network and Distributed System Security Symposium, pages 97-111, Internet Society, 1998.
[26] T.ウー。安全なリモートパスワードプロトコル。1998年のインターネットソサエティネットワークおよび分散システムセキュリティシンポジウムの議事録、97〜111ページ、インターネットソサエティ、1998年。
[27] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC 2279, January 1998.
[27] Yergeau、F。、「UTF-8、ISO 10646の変換形式」、RFC 2279、1998年1月。
Contact Information & About PKCS
連絡先情報とPKCに関する
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, SET, S/MIME, and SSL.
パブリックキー暗号化基準は、パブリックキー暗号化の展開を加速する目的で、世界中の安全なシステム開発者と協力して、RSA研究所が作成した仕様です。PKCS文書は、パブリックキーテクノロジーの早期採用者の小さなグループとの会議の結果として、1991年に最初に公開されました。PKCSシリーズからの貢献は、ANSI X9ドキュメント、PKIX、セット、S/MIME、SSLなど、多くの正式および事実上の基準の一部になりました。
Further development of PKCS occurs through mailing list discussions and occasional workshops, and suggestions for improvement are welcome. For more information, contact:
PKCのさらなる開発は、メーリングリストのディスカッションと時折のワークショップを通じて行われ、改善の提案を歓迎します。詳細については、お問い合わせください。
PKCS Editor RSA Laboratories 20 Crosby Drive Bedford, MA 01730 USA pkcs-editor@rsasecurity.com http://www.rsalabs.com/pkcs/
PKCS編集者RSA Laboratories 20 Crosby Drive Bedford、MA 01730 USA pkcs-editor@rsasecurity.com http://www.rsalabs.com/pkcs/
Full Copyright Statement
完全な著作権声明
Copyright (C) The Internet Society (2000). All Rights Reserved.
Copyright(c)The Internet Society(2000)。無断転載を禁じます。
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
このドキュメントと翻訳は他の人にコピーされて提供される場合があります。また、それについてコメントまたは説明する派生作品、またはその実装を支援することは、いかなる種類の制限なしに、準備、コピー、公開、および部分的に配布される場合があります。、上記の著作権通知とこの段落がそのようなすべてのコピーとデリバティブ作品に含まれている場合。ただし、このドキュメント自体は、インターネット協会や他のインターネット組織への著作権通知や参照を削除するなど、いかなる方法でも変更できない場合があります。インターネット標準プロセスに従うか、英語以外の言語に翻訳するために必要な場合に従う必要があります。
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
上記の限られた許可は永続的であり、インターネット社会またはその後継者または譲受人によって取り消されることはありません。
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
このドキュメントと本書に含まれる情報は、「現状」に基づいて提供されており、インターネット社会とインターネットエンジニアリングタスクフォースは、ここにある情報の使用が行われないという保証を含むがこれらに限定されないすべての保証を否認します。特定の目的に対する商品性または適合性の権利または黙示的な保証を侵害します。
Acknowledgement
謝辞
Funding for the RFC Editor function is currently provided by the Internet Society.
RFCエディター機能の資金は現在、インターネット協会によって提供されています。