|
ネットワーク WG Request for Comments: 3713 分類: 情報提供 |
M. Matsui J. Nakajima 三菱電機株式会社 盛合 志帆 株式会社ソニー・コンピュータエンタテインメント 2004年4月 |
本書は、インターネット・コミュニティに対して情報を提供するものである。 本書は、いかなる種類のインターネット標準を定義するものではない。 本書の配布は、制限されていない。
Copyright (C) The Internet Society (2004). All Rights Reserved.
本書は、Camellia暗号化アルゴリズムを説明する。 Camelliaは、128bitのブロック・サイズ、および、128、 192および256bitキーでのブロック暗号である。 このアルゴリズムに関する説明は、 キー・スケジューリング部分とデータ・ランダム化部分と共に提示されている。
Camelliaは、2000年、NTTと三菱電機により共同で開発された [CamelliaSpec]。 Camelliaは、128bitのブロック・サイズと 128、 192および256bitキー・サイズを定義する。 これは、AES(Advanced Encryption Standard)と同じインターフェースである。 Camelliaは、ソフトウェアとハードウェアの両方のインプリメンテーションに対する適性、 そして、高度なレベルのセキュリティが特徴である。 実用面からの観点から見ると、Camelliaは、 インターネットや多くのアプリケーションで広く使われている32bitプロセッサ、 スマート・カードで使われる8bitプロセッサ、暗号ハードウェア、 組み込みシステムなどでのソフトウェアおよびハードウェアのインプリメンテーションにおける柔軟性を確保するよう設計されている [CamelliaTech]。 さらに、キーセットアップ時間は特に優れており、 そのキーの「軽快さ」は、AESのものよりずっと優れている。
Camelliaは、暗号アルゴリズムを検証するためのいくつかのプロジェクトで、 広範囲な暗号コミュニティにより精査されている。 特に、Camelliaは、EU NESSIE (New European Schemes for Signatures, Integrity and Encryption)プロジェクト [NESSIE] により「推薦される暗号プリミティブ」として選択されており、また、 日本の電子政府システム(e-Government systems)に対する暗号技術のリストに含まれている。 (これらの技術は、Japan CRYPTREC (Cryptography Research and Evaluation Committees) [CRYPTREC])によって選択されているものである)。
Camelliaは、「キー・スケジューリング部分」と「データ・ランダム化部分」に分割される。
アルゴリズムを説明するために、本書においては以下の演算子が使われている。
| & | ビット単位AND演算 |
| | | ビット単位OR演算 |
| ^ | ビット単位排他的OR演算 |
| << | 論理的左シフト演算 |
| >> | 論理的右シフト演算 |
| <<< | 左回転演算 |
| ~y | ビット単位tのyの補数 |
| 0x | HEX表示 |
注意: 論理左シフト演算は、無限データ幅で行われる。
MASK8、MASK32、MASK64およびMASK128の定数値は、以下のように定義されている。
MASK8 = 0xff;
MASK32 = 0xffffffff;
MASK64 = 0xffffffffffffffff;
MASK128 = 0xffffffffffffffffffffffffffffffff;
Camelliaのキー・スケジューリング部分では、 KLとKRの128bit変数が以下のように定義されている。 128bitキーに関しては、128bitキーであるKがKLとして使われ、 そして、KRは、0となっている。 192bitキーに関しては、キーKの左端128bitがKLとして使われ、 Kの右端64bitと、Kの右端64bitの補数の連結がKRとして使われる。 256bitのキーに関しては、キーKの左端128bitがKLとして使われ、 そして、Kの右端128bitがKRとして使われる。
128 bit key K:
KL = K; KR = 0;
192 bit key K:
KL = K >> 64;
KR = ((K & MASK64) << 64) | (~(K & MASK64));
256 bit key K:
KL = K >> 128; KR = K & MASK128;
128bit変数であるKAとKBは、以下のようにKLとKRから生成される。 注意:KBは、シークレット・キーの長さが192または256の場合にのみ使われる。 D1とD2は、64bitの仮変数である。 F-関数は、2.4節で説明されている。
D1 = (KL ^ KR) >> 64;
D2 = (KL ^ KR) & MASK64;
D2 = D2 ^ F(D1, Sigma1);
D1 = D1 ^ F(D2, Sigma2);
D1 = D1 ^ (KL >> 64);
D2 = D2 ^ (KL & MASK64);
D2 = D2 ^ F(D1, Sigma3);
D1 = D1 ^ F(D2, Sigma4);
KA = (D1 << 64) | D2;
D1 = (KA ^ KR) >> 64;
D2 = (KA ^ KR) & MASK64;
D2 = D2 ^ F(D1, Sigma5);
D1 = D1 ^ F(D2, Sigma6);
KB = (D1 << 64) | D2;
64bit定数であるSigma1, Sigma2, ..., Sigma6は、F-関数で「キー」として使われる。 これらの定数値は、以下のようにHEX表記で示される。
Sigma1 = 0xA09E667F3BCC908B;
Sigma2 = 0xB67AE8584CAA73B2;
Sigma3 = 0xC6EF372FE94F82BE;
Sigma4 = 0x54FF53A5F1D36F1C;
Sigma5 = 0x10E527FADE682D1D;
Sigma6 = 0xB05688C2B3E6C1FD;
64bitのサブキーは、KL、KR、KAおよびKBを回転(ローテーション)させ、 それらの左端半分または右端半分を取り込むことにより生成される。
128bitキーに対しては、64bitサブキーkw1, ..., kw4, k1, ..., k18,ke1, ..., ke4 が以下のように生成される。
kw1 = (KL <<< 0) >> 64;
kw2 = (KL <<< 0) & MASK64;
k1 = (KA <<< 0) >> 64;
k2 = (KA <<< 0) & MASK64;
k3 = (KL <<< 15) >> 64;
k4 = (KL <<< 15) & MASK64;
k5 = (KA <<< 15) >> 64;
k6 = (KA <<< 15) & MASK64;
ke1 = (KA <<< 30) >> 64;
ke2 = (KA <<< 30) & MASK64;
k7 = (KL <<< 45) >> 64;
k8 = (KL <<< 45) & MASK64;
k9 = (KA <<< 45) >> 64;
k10 = (KL <<< 60) & MASK64;
k11 = (KA <<< 60) >> 64;
k12 = (KA <<< 60) & MASK64;
ke3 = (KL <<< 77) >> 64;
ke4 = (KL <<< 77) & MASK64;
k13 = (KL <<< 94) >> 64;
k14 = (KL <<< 94) & MASK64;
k15 = (KA <<< 94) >> 64;
k16 = (KA <<< 94) & MASK64;
k17 = (KL <<< 111) >> 64;
k18 = (KL <<< 111) & MASK64;
kw3 = (KA <<< 111) >> 64;
kw4 = (KA <<< 111) & MASK64;
192bitおよび256bitキーに対しては、 64bitサブキーkw1, ..., kw4, k1, ..., k24, ke1, ..., ke6が以下のように生成される。
kw1 = (KL <<< 0) >> 64;
kw2 = (KL <<< 0) & MASK64;
k1 = (KB <<< 0) >> 64;
k2 = (KB <<< 0) & MASK64;
k3 = (KR <<< 15) >> 64;
k4 = (KR <<< 15) & MASK64;
k5 = (KA <<< 15) >> 64;
k6 = (KA <<< 15) & MASK64;
ke1 = (KR <<< 30) >> 64;
ke2 = (KR <<< 30) & MASK64;
k7 = (KB <<< 30) >> 64;
k8 = (KB <<< 30) & MASK64;
k9 = (KL <<< 45) >> 64;
k10 = (KL <<< 45) & MASK64;
k11 = (KA <<< 45) >> 64;
k12 = (KA <<< 45) & MASK64;
ke3 = (KL <<< 60) >> 64;
ke4 = (KL <<< 60) & MASK64;
k13 = (KR <<< 60) >> 64;
k14 = (KR <<< 60) & MASK64;
k15 = (KB <<< 60) >> 64;
k16 = (KB <<< 60) & MASK64;
k17 = (KL <<< 77) >> 64;
k18 = (KL <<< 77) & MASK64;
ke5 = (KA <<< 77) >> 64;
ke6 = (KA <<< 77) & MASK64;
k19 = (KR <<< 94) >> 64;
k20 = (KR <<< 94) & MASK64;
k21 = (KA <<< 94) >> 64;
k22 = (KA <<< 94) & MASK64;
k23 = (KL <<< 111) >> 64;
k24 = (KL <<< 111) & MASK64;
kw3 = (KB <<< 111) >> 64;
kw4 = (KB <<< 111) & MASK64;
128bitのプレーンテキストMは、左側64bitのD1と右側64bit D2に分割される。
D1 = M >> 64;
D2 = M & MASK64;
暗号化は、6 round毎に挿入されるFL-およびFLINV-関数で、 18 round Feistel構造を使って行われる。 F-関数、FL-関数およびFLINV-関数は、 2.4節で説明されている。
D1 = D1 ^ kw1; // Prewhitening
D2 = D2 ^ kw2;
D2 = D2 ^ F(D1, k1); // Round 1
D1 = D1 ^ F(D2, k2); // Round 2
D2 = D2 ^ F(D1, k3); // Round 3
D1 = D1 ^ F(D2, k4); // Round 4
D2 = D2 ^ F(D1, k5); // Round 5
D1 = D1 ^ F(D2, k6); // Round 6
D1 = FL (D1, ke1); // FL
D2 = FLINV(D2, ke2); // FLINV
D2 = D2 ^ F(D1, k7); // Round 7
D1 = D1 ^ F(D2, k8); // Round 8
D2 = D2 ^ F(D1, k9); // Round 9
D1 = D1 ^ F(D2, k10); // Round 10
D2 = D2 ^ F(D1, k11); // Round 11
D1 = D1 ^ F(D2, k12); // Round 12
D1 = FL (D1, ke3); // FL
D2 = FLINV(D2, ke4); // FLINV
D2 = D2 ^ F(D1, k13); // Round 13
D1 = D1 ^ F(D2, k14); // Round 14
D2 = D2 ^ F(D1, k15); // Round 15
D1 = D1 ^ F(D2, k16); // Round 16
D2 = D2 ^ F(D1, k17); // Round 17
D1 = D1 ^ F(D2, k18); // Round 18
D2 = D2 ^ kw3; // Postwhitening
D1 = D1 ^ kw4;
128bit暗号テキスト(ciphertext) Cは、以下のようにD1とD2から成る。
C = (D2 << 64) | D1;
128bitのプレーンテキストMは、 左側64bit D1と右側64bit D2に分割される。
D1 = M >> 64;
D2 = M & MASK64;
暗号化は、6 round毎に挿入されるFL-およびFLINV-関数で、 24 round Feistel構造を使って行われる。 F-関数、FL-関数およびFLINV-関数は、 2.4節で説明されている。
D1 = D1 ^ kw1; // Prewhitening
D2 = D2 ^ kw2;
D2 = D2 ^ F(D1, k1); // Round 1
D1 = D1 ^ F(D2, k2); // Round 2
D2 = D2 ^ F(D1, k3); // Round 3
D1 = D1 ^ F(D2, k4); // Round 4
D2 = D2 ^ F(D1, k5); // Round 5
D1 = D1 ^ F(D2, k6); // Round 6
D1 = FL (D1, ke1); // FL
D2 = FLINV(D2, ke2); // FLINV
D2 = D2 ^ F(D1, k7); // Round 7
D1 = D1 ^ F(D2, k8); // Round 8
D2 = D2 ^ F(D1, k9); // Round 9
D1 = D1 ^ F(D2, k10); // Round 10
D2 = D2 ^ F(D1, k11); // Round 11
D1 = D1 ^ F(D2, k12); // Round 12
D1 = FL (D1, ke3); // FL
D2 = FLINV(D2, ke4); // FLINV
D2 = D2 ^ F(D1, k13); // Round 13
D1 = D1 ^ F(D2, k14); // Round 14
D2 = D2 ^ F(D1, k15); // Round 15
D1 = D1 ^ F(D2, k16); // Round 16
D2 = D2 ^ F(D1, k17); // Round 17
D1 = D1 ^ F(D2, k18); // Round 18
D1 = FL (D1, ke5); // FL
D2 = FLINV(D2, ke6); // FLINV
D2 = D2 ^ F(D1, k19); // Round 19
D1 = D1 ^ F(D2, k20); // Round 20
D2 = D2 ^ F(D1, k21); // Round 21
D1 = D1 ^ F(D2, k22); // Round 22
D2 = D2 ^ F(D1, k23); // Round 23
D1 = D1 ^ F(D2, k24); // Round 24
D2 = D2 ^ kw3; // Postwhitening
D1 = D1 ^ kw4;
128bit暗号テキスト(ciphertext) Cは、以下のようにD1とD2から成る。
C = (D2 << 64) | D1;
Camelliaの解読プロシージャは、サブキーの順序を逆にするだけで、 暗号化プロシジャと同じ方法で行うことができる。
つまり以下のようになる。
128bitキー:
kw1 <-> kw3
kw2 <-> kw4
k1 <-> k18
k2 <-> k17
k3 <-> k16
k4 <-> k15
k5 <-> k14
k6 <-> k13
k7 <-> k12
k8 <-> k11
k9 <-> k10
ke1 <-> ke4
ke2 <-> ke3
192bitまたは256bitキー:
kw1 <-> kw3
kw2 <-> kw4
k1 <-> k24
k2 <-> k23
k3 <-> k22
k4 <-> k21
k5 <-> k20
k6 <-> k19
k7 <-> k18
k8 <-> k17
k9 <-> k16
k10 <-> k15
k11 <-> k14
k12 <-> k13
ke1 <-> ke6
ke2 <-> ke5
ke3 <-> ke4
F-関数は、2つのパラメータを取る。 ひとつは、64bitのインプット・データF_INで、他方は、 64bitのサブキーKEである。 F-関数は、64bitのデータF_OUTを返す。
F(F_IN, KE)
begin
var x as 64 bit unsigned integer;
var t1, t2, t3, t4, t5, t6, t7, t8 as 8 bit unsigned integer;
var y1, y2, y3, y4, y5, y6, y7, y8 as 8 bit unsigned integer;
x = F_IN ^ KE;
t1 = x >> 56;
t2 = (x >> 48) & MASK8;
t3 = (x >> 40) & MASK8;
t4 = (x >> 32) & MASK8;
t5 = (x >> 24) & MASK8;
t6 = (x >> 16) & MASK8;
t7 = (x >> 8) & MASK8;
t8 = x & MASK8;
t1 = SBOX1[t1];
t2 = SBOX2[t2];
t3 = SBOX3[t3];
t4 = SBOX4[t4];
t5 = SBOX2[t5];
t6 = SBOX3[t6];
t7 = SBOX4[t7];
t8 = SBOX1[t8];
y1 = t1 ^ t3 ^ t4 ^ t6 ^ t7 ^ t8;
y2 = t1 ^ t2 ^ t4 ^ t5 ^ t7 ^ t8;
y3 = t1 ^ t2 ^ t3 ^ t5 ^ t6 ^ t8;
y4 = t2 ^ t3 ^ t4 ^ t5 ^ t6 ^ t7;
y5 = t1 ^ t2 ^ t6 ^ t7 ^ t8;
y6 = t2 ^ t3 ^ t5 ^ t7 ^ t8;
y7 = t3 ^ t4 ^ t5 ^ t6 ^ t8;
y8 = t1 ^ t4 ^ t5 ^ t6 ^ t7;
F_OUT = (y1 << 56) | (y2 << 48) | (y3 << 40) | (y4 << 32) | (y5 << 24) | (y6 << 16) | (y7 << 8) | y8;
return FO_OUT;
end.
SBOX1、SBOX2、SBOX3およびSBOX4は、 8bitインプット/アウトプット・データを持つルックアップ・テーブルである。 SBOX2、SBOX3およびSBOX4は、SBOX1を使って以下のように定義されている。
SBOX2[x] = SBOX1[x] <<< 1;
SBOX3[x] = SBOX1[x] <<< 7;
SBOX4[x] = SBOX1[x <<< 1];
SBOX1は、以下のテーブルによって定義されている。 例えば、SBOX1[0x3d]は、86となる。
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00: | 112 | 130 | 44 | 236 | 179 | 39 | 192 | 229 | 228 | 133 | 87 | 53 | 234 | 12 | 174 | 65 |
| 10: | 35 | 239 | 107 | 147 | 69 | 25 | 165 | 33 | 237 | 14 | 79 | 78 | 29 | 101 | 146 | 189 |
| 20: | 134 | 184 | 175 | 143 | 124 | 235 | 31 | 206 | 62 | 48 | 220 | 95 | 94 | 197 | 11 | 26 |
| 30: | 166 | 225 | 57 | 202 | 213 | 71 | 93 | 61 | 217 | 1 | 90 | 214 | 81 | 86 | 108 | 77 |
| 40: | 139 | 13 | 154 | 102 | 251 | 204 | 176 | 45 | 116 | 18 | 43 | 32 | 240 | 177 | 132 | 153 |
| 50: | 223 | 76 | 203 | 194 | 52 | 126 | 118 | 5 | 109 | 183 | 169 | 49 | 209 | 23 | 4 | 215 |
| 60: | 20 | 88 | 58 | 97 | 222 | 27 | 17 | 28 | 50 | 15 | 156 | 22 | 83 | 24 | 242 | 34 |
| 70: | 254 | 68 | 207 | 178 | 195 | 181 | 122 | 145 | 36 | 8 | 232 | 168 | 96 | 252 | 105 | 80 |
| 80: | 170 | 208 | 160 | 125 | 161 | 137 | 98 | 151 | 84 | 91 | 30 | 149 | 224 | 255 | 100 | 210 |
| 90: | 16 | 196 | 0 | 72 | 163 | 247 | 117 | 219 | 138 | 3 | 230 | 218 | 9 | 63 | 221 | 148 |
| a0: | 135 | 92 | 131 | 2 | 205 | 74 | 144 | 51 | 115 | 103 | 246 | 243 | 157 | 127 | 191 | 226 |
| b0: | 82 | 155 | 216 | 38 | 200 | 55 | 198 | 59 | 129 | 150 | 111 | 75 | 19 | 190 | 99 | 46 |
| c0: | 233 | 121 | 167 | 140 | 159 | 110 | 188 | 142 | 41 | 245 | 249 | 182 | 47 | 253 | 180 | 89 |
| d0: | 120 | 152 | 6 | 106 | 231 | 70 | 113 | 186 | 212 | 37 | 171 | 66 | 136 | 162 | 141 | 250 |
| e0: | 114 | 7 | 185 | 85 | 248 | 238 | 172 | 10 | 54 | 73 | 42 | 104 | 60 | 56 | 241 | 164 |
| f0: | 64 | 40 | 211 | 123 | 187 | 201 | 67 | 193 | 21 | 227 | 173 | 244 | 119 | 199 | 128 | 158 |
FL-関数は、2つのパラメータを取る。 ひとつは、64bitインプット・データFL_INであり、他方は、 64bitサブキーKEである。 FL-関数は、64bitデータFL_OUTを返す。
FL(FL_IN, KE)
begin
var x1, x2 as 32 bit unsigned integer;
var k1, k2 as 32 bit unsigned integer;
x1 = FL_IN >> 32;
x2 = FL_IN & MASK32;
k1 = KE >> 32;
k2 = KE & MASK32;
x2 = x2 ^ ((x1 & k1) <<< 1); x1 = x1 ^ (x2 | k2);
FL_OUT = (x1 << 32) | x2;
end.
FLINV-関数は、FL-関数の逆の関数である。
FLINV(FLINV_IN, KE)
begin
var y1, y2 as 32 bit unsigned integer;
var k1, k2 as 32 bit unsigned integer;
y1 = FLINV_IN >> 32;
y2 = FLINV_IN & MASK32;
k1 = KE >> 32; k2 = KE & MASK32;
y1 = y1 ^ (y2 | k2); y2 = y2 ^ ((y1 & k1) <<< 1);
FLINV_OUT = (y1 << 32) | y2;
end.
Camelliaに対してCBC (Cipher Block Chaining)モードで128bitキーを持つオブジェクト識別子(Object Identifier)は以下となっている。
id-camellia128-cbc OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) 392 200011 61 security(1)
algorithm(1) symmetric-encryption-algorithm(1) camellia128-cbc(2) }
Camelliaに対してCBC (Cipher Block Chaining)モードで192bitキーを持つオブジェクト識別子(Object Identifier)は以下となっている。
id-camellia192-cbc OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) 392 200011 61 security(1)
algorithm(1) symmetric-encryption-algorithm(1) camellia192-cbc(3) }
Camelliaに対してCBC (Cipher Block Chaining)モードで256bitキーを持つオブジェクト識別子(Object Identifier)は以下となっている。
id-camellia256-cbc OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) 392 200011 61 security(1)
algorithm(1) symmetric-encryption-algorithm(1) camellia256-cbc(4) }
上記のアルゴリズムは、初期化ベクター(Initialization Vector (IV))を必要とする。 IVの値を決定するために、 上記のアルゴリズムは以下のようにパラメータを読み込む。
CamelliaCBCParameter ::= CamelliaIV -- Initialization Vector
CamelliaIV ::= OCTET STRING (SIZE(16))
これらのオブジェクト・識別子が使われる場合、 プレーンテキストは、RFC2315 [RFC2315] に準じて暗号化の前にパディングされる。
暗号解析における技術分野での最近の進歩は目をみはるものがある。 強力な暗号解析テクニック(差分解読法や線形解読法など)に対するセキュリティの定量的評価は、 どのような新しいブロック暗号を設計する場合でも必要不可欠であると考えられている。 Camelliaのセキュリティについては、 我々は最新の暗号解析テクニックを使って評価した。 それにより、我々は、 Camelliaが2-128以上の確率の差分及び線形特性を持っていないと確認した。 つまり、このことは、差分攻撃や線形攻撃が、 フルの18ラウンドのCamelliaに対して成功するということはまったくといっていいほど不可能であることを意味する。 さらに、Camelliaは、高階差分攻撃、補間攻撃、関連鍵攻撃、 丸め差分攻撃などの高度な暗号解析攻撃に対してもセキュリティを提供するよう設計されている [Camellia]。
| [CamelliaSpec] |
Aoki, K., Ichikawa, T., Kanda, M., Matsui, M., Moriai,
S., Nakajima, J. and T. Tokita, "Specification of Camellia --- a 128 bit Block Cipher". http://info.isl.ntt.co.jp/camellia/ |
| [CamelliaTech] |
Aoki, K., Ichikawa, T., Kanda, M., Matsui, M., Moriai,
S., Nakajima, J. and T. Tokita, "Camellia: A 128 bit Block Cipher Suitable for Multiple Platforms". http://info.isl.ntt.co.jp/camellia/ |
| [Camellia] |
Aoki, K., Ichikawa, T., Kanda, M., Matsui, M., Moriai,
S., Nakajima, J. and T. Tokita, "Camellia: A 128 bit Block Cipher Suitable for Multiple Platforms - Design and Analysis -", In Selected Areas in Cryptography, 7th Annual International Workshop, SAC 2000, Waterloo, Ontario, Canada, 2000年8月, Proceedings, Lecture Notes in Computer Science 2012, pp.39-56, Springer- Verlag, 2001年. |
| [CRYPTREC] |
"CRYPTREC Advisory Committee Report FY2002", 総務省および経済産業省, 2003年3月. http://www.soumu.go.jp/joho_tsusin/security/cryptrec.html, 独立行政法人情報処理推進機構(IPA)のCRYPTRECのページ http://www.ipa.go.jp/security/enc/CRYPTREC/index-e.html (日本語) http://www.ipa.go.jp/security/enc/CRYPTREC/index.html |
| [NESSIE] | New European Schemes for Signatures, Integrity and Encryption (NESSIE) project. http://www.cryptonessie.org |
| [RFC2315] |
Kaliski, B., "PKCS #7: Cryptographic Message Syntax Version 1.5", RFC 2315(English), 1998年3月. |
以下は、Camelliaのテスト・データをHEXで示したものである。
128 bit key Key :
01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Plaintext : 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Ciphertext: 67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43
192 bit key Key :
01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 : 00 11 22 33 44 55 66 77
Plaintext : 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Ciphertext: b4 99 34 01 b3 e9 96 f8 4e e5 ce e7 d7 9b 09 b9
256 bit key Key :
01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 : 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff
Plaintext : 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Ciphertext: 9a cc 23 7d ff 16 d7 6c 20 ef 7c 91 9e 3a 75 09
本書が作成された時、盛合 志帆は、NTT に勤務していた。
Mitsuru Matsui
三菱電機株式会社
Information Technology R&D Center
電話: +81-467-41-2190
Fax: +81-467-41-2185
EMail: matsui@iss.isl.melco.co.jp
Junko Nakajima
三菱電機株式会社
電話: +81-467-41-2190
Fax: +81-467-41-2185
EMail: june15@iss.isl.melco.co.jp
盛合 志帆
株式会社ソニー・コンピュータエンタテインメント
電話: +81-3-6438-7523
Fax: +81-3-6438-8629
EMail: shiho@rd.scei.sony.co.jp
camellia@isl.ntt.co.jp (Camellia team)
Copyright (C) The Internet Society (2004).
本書は、BCP 78に含まれている権利、 ライセンスおよび制限の対象となっており、 本書で明記されている場合を除いて、 著者がそれらのすべての権利を有するものとする。
本書および本書に含まれている情報は、 「そのまま」の状態で提供されるものとし、寄稿者、 その寄稿者が代表する、または、 それにより後援されている組織(ある場合)、 インターネット・ソサエティ(INTERNET SOCIETY)およびインターネット・エンジニアリング・タスク・フォースは、 明示的にも暗黙のうちにも、そうとは限定されないが、 本書での情報が、いかなる権利をも侵害しないとか、 特定の目的に対して商品性や適性を意図した保証を含むすべての保証を拒否するものである。
IETFは、実装の特許申請、あるいは、 本書に記述された以外の技術の利用、もしくは、 そのような権利のもとで利用可能/利用不可なライセンスの程度について主張される可能性があるいかなる知的財産権もしくは他の権利の正当性もしくは範囲について中立である。; また、そのような権利を識別するためのあらゆる努力をしてきたと表現するものではない。 RFC文書での権利に関してのプロシジャに関する情報は、 BCP 78およびBCP 79で見つけることができる。
IETF事務局に公開されたIPRのコピー、および、 ライセンスが提供されるとするいかなる保証、あるいは、 本仕様の実施者またはユーザによりそのような所有権の汎用ライセンスの使用に対する許可を取得しようとした結果のコピーは、 IETFのオンライン・レポジトリー(http://www.ietf.org/ipr)から得ることができる。
IETFは、 この基準を確立するのに必要であろうテクノロジーに対応する著作権、 特許あるいは特許申請や他の所有権に関して、 関心のある関係者の注意を喚起するものである。 もしそれに関する情報がある場合、IETF(ietf-ipr@ietf.org)に連絡すること。
RFCエディター機能に対する資金提供は、現在、 インターネット・ソサエティ(Internet Society)により提供されている。