[要約] RFC 2268は、RC2(r)暗号アルゴリズムの詳細な説明を提供しており、その目的はセキュアなデータの暗号化と復号化を実現するための手法を提供することです。

Network Working Group                                          R. Rivest
Request for Comments: 2268           MIT Laboratory for Computer Science
Category: Informational                      and RSA Data Security, Inc.
                                                              March 1998
        

A Description of the RC2(r) Encryption Algorithm

RC2(r)暗号化アルゴリズムの説明

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 (1998). All Rights Reserved.

Copyright(C)The Internet Society(1998)。全著作権所有。

1. Introduction
1. はじめに

This memo is an RSA Laboratories Technical Note. It is meant for informational use by the Internet community.

このメモは、RSA Laboratoriesテクニカルノートです。これは、インターネットコミュニティによる情報提供を目的としています。

This memo describes a conventional (secret-key) block encryption algorithm, called RC2, which may be considered as a proposal for a DES replacement. The input and output block sizes are 64 bits each. The key size is variable, from one byte up to 128 bytes, although the current implementation uses eight bytes.

このメモは、DESの代替案として考えられるRC2と呼ばれる従来の(秘密鍵)ブロック暗号化アルゴリズムについて説明しています。入力と出力のブロックサイズはそれぞれ64ビットです。現在の実装では8バイトを使用していますが、キーのサイズは1バイトから128バイトまで可変です。

The algorithm is designed to be easy to implement on 16-bit microprocessors. On an IBM AT, the encryption runs about twice as fast as DES (assuming that key expansion has been done).

このアルゴリズムは、16ビットマイクロプロセッサに簡単に実装できるように設計されています。 IBM ATでは、暗号化はDESの約2倍の速さで実行されます(鍵の拡張が行われたと想定)。

1.1 Algorithm description
1.1 アルゴリズムの説明

We use the term "word" to denote a 16-bit quantity. The symbol + will denote twos-complement addition. The symbol & will denote the bitwise "and" operation. The term XOR will denote the bitwise "exclusive-or" operation. The symbol ~ will denote bitwise complement. The symbol ^ will denote the exponentiation operation. The term MOD will denote the modulo operation.

「ワード」という用語は、16ビットの量を表すために使用します。記号+は、2の補数の加算を示します。記号&は、ビット単位の「and」演算を示します。 XORという用語は、ビット単位の「排他的論理和」演算を示します。記号〜はビット単位の補数を示します。記号^は、べき乗演算を示します。 MODという用語は、モジュロ演算を表します。

There are three separate algorithms involved:

関与する3つの個別のアルゴリズムがあります。

Key expansion. This takes a (variable-length) input key and produces an expanded key consisting of 64 words K[0],...,K[63].

キー拡張。これは(可変長)入力キーを受け取り、64ワードK [0]、...、K [63]で構成される拡張キーを生成します。

Encryption. This takes a 64-bit input quantity stored in words R[0], ..., R[3] and encrypts it "in place" (the result is left in R[0], ..., R[3]).

暗号化。これは、ワードR [0]、...、R [3]に格納されている64ビットの入力量を受け取り、それを「インプレース」で暗号化します(結果はR [0]、...、R [3]に残ります) )。

Decryption. The inverse operation to encryption.

解読。暗号化の逆の操作。

2. Key expansion
2. キー拡張

Since we will be dealing with eight-bit byte operations as well as 16-bit word operations, we will use two alternative notations

8ビットのバイト演算と16ビットのワード演算を扱うため、2つの代替表記法を使用します。

for referring to the key buffer:

キーバッファーを参照する場合:

For word operations, we will refer to the positions of the buffer as K[0], ..., K[63]; each K[i] is a 16-bit word.

ワード操作の場合、バッファの位置をK [0]、...、K [63]と呼びます。各K [i]は16ビットワードです。

For byte operations, we will refer to the key buffer as L[0], ..., L[127]; each L[i] is an eight-bit byte.

バイト操作では、キーバッファーをL [0]、...、L [127]と呼びます。各L [i]は8ビットのバイトです。

These are alternative views of the same data buffer. At all times it will be true that

これらは、同じデータバッファーの代替ビューです。常にそれは本当です

K[i] = L[2*i] + 256*L[2*i+1].

K [i] = L [2 * i] + 256 * L [2 * i + 1]。

(Note that the low-order byte of each K word is given before the high-order byte.)

(各Kワードの下位バイトは、上位バイトの前にあることに注意してください。)

We will assume that exactly T bytes of key are supplied, for some T in the range 1 <= T <= 128. (Our current implementation uses T = 8.) However, regardless of T, the algorithm has a maximum effective key length in bits, denoted T1. That is, the search space is 2^(8*T), or 2^T1, whichever is smaller.

1 <= T <= 128の範囲の一部のTに対して、正確にTバイトのキーが指定されていると想定します(現在の実装ではT = 8を使用しています)。ただし、Tに関係なく、アルゴリズムには最大の有効キー長がありますT1で表されるビット単位。つまり、検索スペースは2 ^(8 * T)または2 ^ T1のどちらか小さい方です。

The purpose of the key-expansion algorithm is to modify the key buffer so that each bit of the expanded key depends in a complicated way on every bit of the supplied input key.

キー拡張アルゴリズムの目的は、拡張されたキーの各ビットが、提供された入力キーのすべてのビットに複雑に依存するように、キーバッファーを変更することです。

The key expansion algorithm begins by placing the supplied T-byte key into bytes L[0], ..., L[T-1] of the key buffer.

鍵拡張アルゴリズムは、提供されたTバイトの鍵を鍵バッファーのバイトL [0]、...、L [T-1]に配置することから始まります。

The key expansion algorithm then computes the effective key length in bytes T8 and a mask TM based on the effective key length in bits T1. It uses the following operations:

次に、キー拡張アルゴリズムは、バイトT8の有効キー長と、ビットT1の有効キー長に基づいてマスクTMを計算します。次の操作を使用します。

   T8 = (T1+7)/8;
   TM = 255 MOD 2^(8 + T1 - 8*T8);
        

Thus TM has its 8 - (8*T8 - T1) least significant bits set.

したがって、TMには8-(8 * T8-T1)の最下位ビットが設定されています。

For example, with an effective key length of 64 bits, T1 = 64, T8 = 8 and TM = 0xff. With an effective key length of 63 bits, T1 = 63, T8 = 8 and TM = 0x7f.

たとえば、有効なキーの長さが64ビットの場合、T1 = 64、T8 = 8、TM = 0xffとなります。 63ビットの有効キー長では、T1 = 63、T8 = 8、TM = 0x7fです。

Here PITABLE[0], ..., PITABLE[255] is an array of "random" bytes based on the digits of PI = 3.14159... . More precisely, the array PITABLE is a random permutation of the values 0, ..., 255. Here is the PITABLE in hexadecimal notation:

ここでPITABLE [0]、...、PITABLE [255]は、PI = 3.14159 ...の数字に基づく「ランダム」バイトの配列です。より正確には、配列PITABLEは値0、...、255のランダムな順列です。16進表記のPITABLEは次のとおりです。

        0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
   00: d9 78 f9 c4 19 dd b5 ed 28 e9 fd 79 4a a0 d8 9d
   10: c6 7e 37 83 2b 76 53 8e 62 4c 64 88 44 8b fb a2
   20: 17 9a 59 f5 87 b3 4f 13 61 45 6d 8d 09 81 7d 32
   30: bd 8f 40 eb 86 b7 7b 0b f0 95 21 22 5c 6b 4e 82
   40: 54 d6 65 93 ce 60 b2 1c 73 56 c0 14 a7 8c f1 dc
   50: 12 75 ca 1f 3b be e4 d1 42 3d d4 30 a3 3c b6 26
   60: 6f bf 0e da 46 69 07 57 27 f2 1d 9b bc 94 43 03
   70: f8 11 c7 f6 90 ef 3e e7 06 c3 d5 2f c8 66 1e d7
   80: 08 e8 ea de 80 52 ee f7 84 aa 72 ac 35 4d 6a 2a
   90: 96 1a d2 71 5a 15 49 74 4b 9f d0 5e 04 18 a4 ec
   a0: c2 e0 41 6e 0f 51 cb cc 24 91 af 50 a1 f4 70 39
   b0: 99 7c 3a 85 23 b8 b4 7a fc 02 36 5b 25 55 97 31
   c0: 2d 5d fa 98 e3 8a 92 ae 05 df 29 10 67 6c ba c9
   d0: d3 00 e6 cf e1 9e a8 2c 63 16 01 3f 58 e2 89 a9
   e0: 0d 38 34 1b ab 33 ff b0 bb 48 0c 5f b9 b1 cd 2e
   f0: c5 f3 db 47 e5 a5 9c 77 0a a6 20 68 fe 7f c1 ad
        

The key expansion operation consists of the following two loops and intermediate step:

キー拡張操作は、次の2つのループと中間ステップで構成されています。

   for i = T, T+1, ..., 127 do
     L[i] = PITABLE[L[i-1] + L[i-T]];
        

L[128-T8] = PITABLE[L[128-T8] & TM];

L [128-T8] = PITABLE [L [128-T8]&TM];

   for i = 127-T8, ..., 0 do
     L[i] = PITABLE[L[i+1] XOR L[i+T8]];
        

(In the first loop, the addition of L[i-1] and L[i-T] is performed modulo 256.)

(最初のループでは、L [i-1]とL [i-T]の加算は256を法として実行されます。)

The "effective key" consists of the values L[128-T8],..., L[127]. The intermediate step's bitwise "and" operation reduces the search space for L[128-T8] so that the effective number of key bits is T1. The expanded key depends only on the effective key bits, regardless of the supplied key K. Since the expanded key is not itself modified during encryption or decryption, as a pragmatic matter one can expand the key just once when encrypting or decrypting a large block of data.

「有効なキー」は、値L [128-T8]、...、L [127]で構成されます。中間ステップのビット単位の「and」演算は、L [128-T8]の検索スペースを減らし、キービットの有効数がT1になるようにします。拡張キーは、提供されたキーKに関係なく、有効なキービットのみに依存します。拡張キー自体は暗号化または復号化中に変更されないため、実用的な問題として、大きなブロックを暗号化または復号化するときにキーを一度だけ拡張できます。データ。

3. Encryption algorithm
3. 暗号化アルゴリズム

The encryption operation is defined in terms of primitive "mix" and "mash" operations.

暗号化操作は、基本的な「ミックス」操作と「マッシュ」操作で定義されます。

Here the expression "x rol k" denotes the 16-bit word x rotated left by k bits, with the bits shifted out the top end entering the bottom end.

ここで、「x rol k」という表現は、上端からシフトアウトされたビットが下端に入り、16ビットのワードxを左にkビット回転したものを示します。

3.1 Mix up R[i]
3.1 R [i]を混ぜる

The primitive "Mix up R[i]" operation is defined as follows, where s[0] is 1, s[1] is 2, s[2] is 3, and s[3] is 5, and where the indices of the array R are always to be considered "modulo 4," so that R[i-1] refers to R[3] if i is 0 (these values are

プリミティブな「Mix up R [i]」操作は次のように定義されます。s[0]は1、s [1]は2、s [2]は3、s [3]は5、インデックスは配列Rは常に「モジュロ4」と見なされるため、iが0の場合、R [i-1]はR [3]を参照します(これらの値は

"wrapped around" so that R always has a subscript in the range 0 to 3 inclusive):

Rが常に0から3までの範囲の添え字を持つように「ラップアラウンド」します):

   R[i] = R[i] + K[j] + (R[i-1] & R[i-2]) + ((~R[i-1]) & R[i-3]);
   j = j + 1;
   R[i] = R[i] rol s[i];
        

In words: The next key word K[j] is added to R[i], and j is advanced. Then R[i-1] is used to create a "composite" word which is added to R[i]. The composite word is identical with R[i-2] in those positions where R[i-1] is one, and identical to R[i-3] in those positions where R[i-1] is zero. Then R[i] is rotated left by s[i] bits (bits rotated out the left end of R[i] are brought back in at the right). Here j is a "global" variable so that K[j] is always the first key word in the expanded key which has not yet been used in a "mix" operation.

つまり、次のキーワードK [j]がR [i]に追加され、jが進みます。次に、R [i-1]を使用して、R [i]に追加される「複合」単語を作成します。複合語は、R [i-1]が1である位置ではR [i-2]と同一であり、R [i-1]が0である位置ではR [i-3]と同一です。次に、R [i]がs [i]ビットだけ左に回転されます(R [i]の左端から回転されたビットは、右に戻されます)。ここで、jは「グローバル」変数であるため、K [j]は常に「ミックス」操作でまだ使用されていない拡張キーの最初のキーワードです。

3.2 Mixing round
3.2 混合ラウンド

A "mixing round" consists of the following operations:

「ミキシングラウンド」は、次の操作で構成されます。

   Mix up R[0]
   Mix up R[1]
   Mix up R[2]
   Mix up R[3]
        
3.3 Mash R[i]
3.3 マッシュR [i]

The primitive "Mash R[i]" operation is defined as follows (using the previous conventions regarding subscripts for R):

基本的な「Mash R [i]」操作は次のように定義されます(Rの添え字に関する以前の規則を使用)。

   R[i] = R[i] + K[R[i-1] & 63];
        

In words: R[i] is "mashed" by adding to it one of the words of the expanded key. The key word to be used is determined by looking at the low-order six bits of R[i-1], and using that as an index into the key array K.

つまり、R [i]は拡張キーの単語の1つを追加することによって「マッシュ」されます。使用するキーワードは、R [i-1]の下位6ビットを調べ、それをキー配列Kへのインデックスとして使用することによって決定されます。

3.4 Mashing round
3.4 マッシングラウンド

A "mashing round" consists of:

「マッシングラウンド」は次の要素で構成されます。

   Mash R[0]
   Mash R[1]
   Mash R[2]
   Mash R[3]
        
3.5 Encryption operation
3.5 暗号化操作

The entire encryption operation can now be described as follows. Here j is a global integer variable which is affected by the mixing operations.

暗号化操作全体は次のように記述できます。ここで、jは混合操作の影響を受けるグローバル整数変数です。

1. Initialize words R[0], ..., R[3] to contain the 64-bit input value.

1. ワードR [0]、...、R [3]を初期化して、64ビットの入力値を含めます。

2. Expand the key, so that words K[0], ..., K[63] become defined.

2. キーを展開して、単語K [0]、...、K [63]が定義されるようにします。

3. Initialize j to zero.

3. jをゼロに初期化します。

4. Perform five mixing rounds.

4. 5回の混合ラウンドを実行します。

5. Perform one mashing round.

5. マッシングラウンドを1回行う。

6. Perform six mixing rounds.

6. 6回の混合ラウンドを実行します。

7. Perform one mashing round.

7. マッシングラウンドを1回行う。

8. Perform five mixing rounds.

8. 5回の混合ラウンドを実行します。

Note that each mixing round uses four key words, and that there are 16 mixing rounds altogether, so that each key word is used exactly once in a mixing round. The mashing rounds will refer to up to eight of the key words in a data-dependent manner. (There may be repetitions, and the actual set of words referred to will vary from encryption to encryption.)

各混合ラウンドは4つのキーワードを使用し、混合ラウンドは全部で16あるため、各キーワードは混合ラウンドで1回だけ使用されることに注意してください。マッシュラウンドは、データに依存する方法で最大8つのキーワードを参照します。 (繰り返しがある場合があり、参照される実際の単語のセットは暗号化ごとに異なります。)

4. Decryption algorithm
4. 復号化アルゴリズム

The decryption operation is defined in terms of primitive operations that undo the "mix" and "mash" operations of the encryption algorithm. They are named "r-mix" and "r-mash" (r- denotes the reverse operation).

復号化操作は、暗号化アルゴリズムの「混合」および「マッシュ」操作を元に戻す基本操作の観点から定義されています。それらは「r-mix」と「r-mash」と名付けられています(r-は逆の操作を示します)。

Here the expression "x ror k" denotes the 16-bit word x rotated right by k bits, with the bits shifted out the bottom end entering the top end.

ここで、「x ror k」という表現は、下端からシフトアウトされたビットが上端に入るように、kビットだけ右回転された16ビットワードxを示します。

4.1 R-Mix up R[i]
4.1 RミックスアップR [i]

The primitive "R-Mix up R[i]" operation is defined as follows, where s[0] is 1, s[1] is 2, s[2] is 3, and s[3] is 5, and where the indices of the array R are always to be considered "modulo 4," so that R[i-1] refers to R[3] if i is 0 (these values are "wrapped around" so that R always has a subscript in the range 0 to 3 inclusive):

プリミティブ「R-Mix up R [i]」操作は次のように定義されます。s[0]は1、s [1]は2、s [2]は3、s [3]は5、そして配列Rのインデックスは常に「モジュロ4」と見なされるため、R [i-1]はiが0の場合にR [3]を参照します(これらの値は「ラップアラウンド」されているため、Rには常に下付き文字が含まれます) 0から3までの範囲):

   R[i] = R[i] ror s[i];
   R[i] = R[i] - K[j] - (R[i-1] & R[i-2]) - ((~R[i-1]) & R[i-3]);
   j = j - 1;
        

In words: R[i] is rotated right by s[i] bits (bits rotated out the right end of R[i] are brought back in at the left). Here j is a "global" variable so that K[j] is always the key word with greatest index in the expanded key which has not yet been used in a "r-mix" operation. The key word K[j] is subtracted from R[i], and j is decremented. R[i-1] is used to create a "composite" word which is subtracted from R[i]. The composite word is identical with R[i-2] in those positions where R[i-1] is one, and identical to R[i-3] in those positions where R[i-1] is zero.

言い換えると、R [i]はs [i]ビットだけ右に回転します(R [i]の右端から回転したビットは左に戻されます)。ここで、jは「グローバル」変数であるため、K [j]は常に、「r-mix」操作でまだ使用されていない拡張キーの最大インデックスを持つキーワードです。キーワードK [j]がR [i]から減算され、jがデクリメントされます。 R [i-1]は、R [i]から差し引かれる「複合」単語を作成するために使用されます。複合語は、R [i-1]が1である位置ではR [i-2]と同一であり、R [i-1]が0である位置ではR [i-3]と同一です。

4.2 R-Mixing round
4.2 R混合ラウンド

An "r-mixing round" consists of the following operations:

「rミキシングラウンド」は、次の操作で構成されます。

   R-Mix up R[3]
   R-Mix up R[2]
   R-Mix up R[1]
   R-Mix up R[0]
        
4.3 R-Mash R[i]
4.3 RマッシュR [i]

The primitive "R-Mash R[i]" operation is defined as follows (using the previous conventions regarding subscripts for R):

プリミティブ「R-Mash R [i]」操作は次のように定義されます(Rの添え字に関する以前の規則を使用)。

   R[i] = R[i] - K[R[i-1] & 63];
        

In words: R[i] is "r-mashed" by subtracting from it one of the words of the expanded key. The key word to be used is determined by looking at the low-order six bits of R[i-1], and using that as an index into the key array K.

つまり、R [i]は拡張キーの単語の1つを差し引くことで「r-マッシュ」されます。使用するキーワードは、R [i-1]の下位6ビットを調べ、それをキー配列Kへのインデックスとして使用することによって決定されます。

4.4 R-Mashing round
4.4 Rマッシングラウンド

An "r-mashing round" consists of:

「r-mashing round」は以下で構成されます。

   R-Mash R[3]
   R-Mash R[2]
   R-Mash R[1]
   R-Mash R[0]
        
4.5 Decryption operation
4.5 復号化操作

The entire decryption operation can now be described as follows. Here j is a global integer variable which is affected by the mixing operations.

復号化操作全体は、次のように説明できます。ここで、jは混合操作の影響を受けるグローバル整数変数です。

1. Initialize words R[0], ..., R[3] to contain the 64-bit ciphertext value.

1. ワードR [0]、...、R [3]を初期化して、64ビットの暗号文の値を含めます。

2. Expand the key, so that words K[0], ..., K[63] become defined.

2. キーを展開して、単語K [0]、...、K [63]が定義されるようにします。

3. Initialize j to 63.

3. jを63に初期化します。

4. Perform five r-mixing rounds.

4. 5回のRミキシングラウンドを実行します。

5. Perform one r-mashing round.

5. Rマッシングラウンドを1回実行します。

6. Perform six r-mixing rounds.

6. 6回のRミキシングラウンドを実行します。

7. Perform one r-mashing round.

7. Rマッシングラウンドを1回実行します。

8. Perform five r-mixing rounds.

8. 5回のRミキシングラウンドを実行します。

5. Test vectors
5. テストベクター

Test vectors for encryption with RC2 are provided below.

RC2による暗号化のテストベクタを以下に示します。

All quantities are given in hexadecimal notation.

すべての数量は16進表記で示されています。

Key length (bytes) = 8 Effective key length (bits) = 63 Key = 00000000 00000000 Plaintext = 00000000 00000000 Ciphertext = ebb773f9 93278eff

キーの長さ(バイト)= 8有効なキーの長さ(ビット)= 63キー= 00000000 00000000平文= 00000000 00000000暗号文= ebb773f9 93278eff

Key length (bytes) = 8 Effective key length (bits) = 64 Key = ffffffff ffffffff Plaintext = ffffffff ffffffff Ciphertext = 278b27e4 2e2f0d49

キーの長さ(バイト)= 8有効なキーの長さ(ビット)= 64キー= ffffffff ffffffffプレーンテキスト= ffffffff ffffffff暗号文= 278b27e4 2e2f0d49

Key length (bytes) = 8 Effective key length (bits) = 64 Key = 30000000 00000000 Plaintext = 10000000 00000001 Ciphertext = 30649edf 9be7d2c2

キーの長さ(バイト)= 8有効なキーの長さ(ビット)= 64キー= 30000000 00000000平文= 10000000 00000001暗号文= 30649edf 9be7d2c2

Key length (bytes) = 1 Effective key length (bits) = 64 Key = 88 Plaintext = 00000000 00000000 Ciphertext = 61a8a244 adacccf0

キーの長さ(バイト)= 1有効なキーの長さ(ビット)= 64キー= 88平文= 00000000 00000000暗号文= 61a8a244 adacccf0

Key length (bytes) = 7 Effective key length (bits) = 64 Key = 88bca90e 90875a Plaintext = 00000000 00000000 Ciphertext = 6ccf4308 974c267f

キーの長さ(バイト)= 7有効なキーの長さ(ビット)= 64キー= 88bca90e 90875a平文= 00000000 00000000暗号文= 6ccf4308 974c267f

Key length (bytes) = 16 Effective key length (bits) = 64 Key = 88bca90e 90875a7f 0f79c384 627bafb2 Plaintext = 00000000 00000000 Ciphertext = 1a807d27 2bbe5db1

キーの長さ(バイト)= 16有効なキーの長さ(ビット)= 64キー= 88bca90e 90875a7f 0f79c384 627bafb2平文= 00000000 00000000暗号文= 1a807d27 2bbe5db1

Key length (bytes) = 16 Effective key length (bits) = 128 Key = 88bca90e 90875a7f 0f79c384 627bafb2 Plaintext = 00000000 00000000 Ciphertext = 2269552a b0f85ca6

キーの長さ(バイト)= 16有効なキーの長さ(ビット)= 128キー= 88bca90e 90875a7f 0f79c384 627bafb2平文= 00000000 00000000暗号文= 2269552a b0f85ca6

Key length (bytes) = 33 Effective key length (bits) = 129 Key = 88bca90e 90875a7f 0f79c384 627bafb2 16f80a6f 85920584 c42fceb0 be255daf 1e

キーの長さ(バイト)= 33有効なキーの長さ(ビット)= 129キー= 88bca90e 90875a7f 0f79c384 627bafb2 16f80a6f 85920584 c42fceb0 be255daf 1e

Plaintext = 00000000 00000000 Ciphertext = 5b78d3a4 3dfff1f1

平文= 00000000 00000000暗号文= 5b78d3a4 3dfff1f1

6. RC2 Algorithm Object Identifier
6. RC2アルゴリズムオブジェクト識別子

The Object Identifier for RC2 in cipher block chaining mode is

暗号ブロック連鎖モードのRC2のオブジェクト識別子は

   rc2CBC OBJECT IDENTIFIER
     ::= {iso(1) member-body(2) US(840) rsadsi(113549)
          encryptionAlgorithm(3) 2}
        

RC2-CBC takes parameters

RC2-CBCはパラメーターを取ります

   RC2-CBCParameter ::= CHOICE {
     iv IV,
     params SEQUENCE {
       version RC2Version,
       iv IV
     }
   }
        

where

ただし

   IV ::= OCTET STRING -- 8 octets
   RC2Version ::= INTEGER -- 1-1024
        

RC2 in CBC mode has two parameters: an 8-byte initialization vector (IV) and a version number in the range 1-1024 which specifies in a roundabout manner the number of effective key bits to be used for the RC2 encryption/decryption.

CBCモードのRC2には2つのパラメーターがあります。8バイトの初期化ベクトル(IV)と、RC2暗号化/復号化に使用される有効なキービットの数をラウンドアバウト方式で指定する1〜1024のバージョン番号です。

The correspondence between effective key bits and version number is as follows:

有効キービットとバージョン番号の対応は次のとおりです。

1. If the number EKB of effective key bits is in the range 1-255, then the version number is given by Table[EKB], where the 256-byte translation table Table[] is specified below. Table[] specifies a permutation on the numbers 0-255; note that it is not the same table that appears in the key expansion phase of RC2.

1. 有効なキービットのEKBの数が1〜255の範囲にある場合、バージョン番号はTable [EKB]で指定されます。ここで、256バイトの変換テーブルTable []を以下に指定します。 Table []は、0〜255の数値の順列を指定します。 RC2の主要な拡張フェーズで表示されるのと同じテーブルではないことに注意してください。

2. If the number EKB of effective key bits is in the range 256-1024, then the version number is simply EKB.

2. 有効なキービットのEKB数が256〜1024の範囲にある場合、バージョン番号は単にEKBです。

The default number of effective key bits for RC2 is 32. If RC2-CBC is being performed with 32 effective key bits, the parameters should be supplied as a simple IV, rather than as a SEQUENCE containing a version and an IV.

RC2のデフォルトの有効キービット数は32です。RC2-CBCが32の有効キービットで実行されている場合、パラメーターは、バージョンとIVを含むシーケンスとしてではなく、単純なIVとして指定する必要があります。

0 1 2 3 4 5 6 7 8 9 a b c d e f

0 1 2 3 4 5 6 7 8 9 a b c d e f

   00: bd 56 ea f2 a2 f1 ac 2a b0 93 d1 9c 1b 33 fd d0
   10: 30 04 b6 dc 7d df 32 4b f7 cb 45 9b 31 bb 21 5a
   20: 41 9f e1 d9 4a 4d 9e da a0 68 2c c3 27 5f 80 36
   30: 3e ee fb 95 1a fe ce a8 34 a9 13 f0 a6 3f d8 0c
   40: 78 24 af 23 52 c1 67 17 f5 66 90 e7 e8 07 b8 60
   50: 48 e6 1e 53 f3 92 a4 72 8c 08 15 6e 86 00 84 fa
   60: f4 7f 8a 42 19 f6 db cd 14 8d 50 12 ba 3c 06 4e
   70: ec b3 35 11 a1 88 8e 2b 94 99 b7 71 74 d3 e4 bf
   80: 3a de 96 0e bc 0a ed 77 fc 37 6b 03 79 89 62 c6
   90: d7 c0 d2 7c 6a 8b 22 a3 5b 05 5d 02 75 d5 61 e3
   a0: 18 8f 55 51 ad 1f 0b 5e 85 e5 c2 57 63 ca 3d 6c
   b0: b4 c5 cc 70 b2 91 59 0d 47 20 c8 4f 58 e0 01 e2
   c0: 16 38 c4 6f 3b 0f 65 46 be 7e 2d 7b 82 f9 40 b5
   d0: 1d 73 f8 eb 26 c7 87 97 25 54 b1 28 aa 98 9d a5
   e0: 64 6d 7a d4 10 81 44 ef 49 d6 ae 2e dd 76 5c 2f
   f0: a7 1c c9 09 69 9a 83 cf 29 39 b9 e9 4c ff 43 ab
        

A. Intellectual Property Notice

A.知的財産権に関する通知

RC2 is a registered trademark of RSA Data Security, Inc. RSA's copyrighted RC2 software is available under license from RSA Data Security, Inc.

RC2はRSA Data Security、Inc.の登録商標です。RSAの著作権で保護されたRC2ソフトウェアは、RSA Data Security、Inc.からのライセンスに基づいて入手できます。

B. Author's Address

B.著者のアドレス

Ron Rivest RSA Laboratories 100 Marine Parkway, #500 Redwood City, CA 94065 USA

Ron Rivest RSA Laboratories 100 Marine Parkway、#500 Redwood City、CA 94065 USA

Phone: (650) 595-7703 EMail: rsa-labs@rsa.com

電話:(650)595-7703メール:rsa-labs@rsa.com

C. Full Copyright Statement

C.完全な著作権表示

Copyright (C) The Internet Society (1998). All Rights Reserved.

Copyright(C)The Internet Society(1998)。全著作権所有。

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.

このドキュメントとここに含まれる情報は「現状有姿」で提供され、インターネット社会およびインターネット技術タスクフォースは、明示または黙示を問わず、ここに記載されている情報の使用が保証するものに限定されない一切の保証を含みません。商品性または特定の目的への適合性に関する権利または黙示の保証を侵害すること。