• 検索結果がありません。

セミナー構成 1 部概要 (13:30~14:20) 暗号アルゴリズム実装試験の概要 暗号アルゴリズム及び試験内容の説明 AES 2 部 RSA(14:30~15:30) 暗号アルゴリズム及び試験内容の説明 RSA-OAEP RSA-PSS 3 部擬似乱数生成器 (15:40~16:30) 暗号アル

N/A
N/A
Protected

Academic year: 2021

シェア "セミナー構成 1 部概要 (13:30~14:20) 暗号アルゴリズム実装試験の概要 暗号アルゴリズム及び試験内容の説明 AES 2 部 RSA(14:30~15:30) 暗号アルゴリズム及び試験内容の説明 RSA-OAEP RSA-PSS 3 部擬似乱数生成器 (15:40~16:30) 暗号アル"

Copied!
105
0
0

読み込み中.... (全文を見る)

全文

(1)

暗号モジュールの

暗号アルゴリズム実装試験セミナー

2008年2月20日

独立行政法人 情報処理推進機構

セキュリティセンタ−

情報セキュリティ認証室

(2)

セミナー構成

1部 概要(13:30∼14:20)

暗号アルゴリズム実装試験の概要

暗号アルゴリズム及び試験内容の説明

AES

2部 RSA(14:30∼15:30)

暗号アルゴリズム及び試験内容の説明

RSA-OAEP

RSA-PSS

3部 擬似乱数生成器(15:40∼16:30)

暗号アルゴリズムの説明

Hash_DRBG (NIST SP800-90)について

質疑応答

(3)

暗号アルゴリズム実装試験の概要

暗号アルゴリズム実装試験とは

• 試験目的

:暗号モジュールに承認されたセキュリティ機能が適正に

実装されていることを確認。

• 試験対象

:暗号モジュールに実装された承認されたセキュリティ機能。

• 試験方法

:暗号アルゴリズム実装試験ツール

JCATT

®

を使用。

(ただし, JCATTがサポートしていないセキュリティ機能は

ベンダによる自己確認)

(4)

4 4

JCMVPで承認されたセキュリティ機能

技術分類 暗号名称

公開鍵暗号 署名 DSA, ECDSA, RSASSA-PKCS1-v1_5, RSASSA-PSS

守秘 RSA-OAEP, RSAES-PKCS1-v1_5

鍵確立 DH, ECDH, PSEC-KEM

共通鍵暗号 64ビットブロック暗号 CIPHERUNICORN-E, Hierocrypt-L1, MISTY1, 3-key Triple DES

128ビットブロック暗号 AES, Camellia, CIPHERUNICORN-A, Hierocrypt-3, SC2000

ストリーム暗号 MUGI, MULTI-S01, 128-bit RC4

その他 ハッシュ関数 RIPEMD-160, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512

メッセージ認証 CCM, CMAC, HMAC-SHA-1, HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, HMAC-SHA-512

擬似乱数生成系 ・ ISO/IEC 18031( Hash_DRBG, CTR_DRBG, OFB_DRBG )

・ NIST SP800-90(Hash_DRBG, HMAC_DRBG, CTR_DRBG)

・ NIST-Recommended Random Number Generator Based on ANSI X9.31 Appendix A.2.4 Using the 3-key Triple DES and AES Algorithms

・PRNG based on SHA-1 for general purpose in FIPS 186-2 (+ change notice 1) Appendix 3.1

・PRNG based on SHA-1 for general purpose in FIPS 186-2 (+ change notice 1) revised Appendix 3.1

・PRNG based on SHA-1 in ANSI X9.42-2001 Annex C.1

(5)

暗号アルゴリズム実装試験の位置付け

申請者 暗号モジュールの ベンダ, 供給者など 試験機関 認証機関 独立行政法人 情報処理推進機構 運用ガイダンス FSM VEドキュメント 試験方法 セキュリティ 要件 セキュリティポリシ 暗号モジュール 試験報告書 認証報告書 暗号モジュール 認証書 ブロック図 ソースコード 暗号アルゴリズム 実装 暗号モジュール 暗号アルゴリズム 実装試験 暗号モジュール 試験 暗号アルゴリズム 確認 暗号モジュール 認証 暗号アルゴリズム 実装試験報告書 JCATT セキュリティポリシ 暗号アルゴリズム 確認書

・暗号モジュール試験の一部として実施

(6)

暗号アルゴリズム実装試験フロー

・全ての動作環境

(OS)と暗号アルゴ

リズム指定

・回答ファイル作成

・質問ファイル,

正解ファイル作成

・回答ファイルと

正解ファイルの照合

・全てOK

・試験報告書作成

ベンダ

試験機関

OK/NG

質問ファイル 回答ファイル

・立会い試験

ツールで判定

認証機関

・暗号アルゴリズム

確認書作成

(7)

暗号アルゴリズム実装試験ツール試験項目

1.

署名

DSA, ECDSA

ドメインパラメータ生成機能試験, ドメインパラメータ検証機能試験

鍵ペア生成機能試験,

署名生成機能試験, 署名検証機能試験

RSASSA-PKCS1-V1_5, RSA-PSS

鍵ペア生成機能試験,

署名生成機能試験

,

署名検証機能試験

2.

守秘

RSA-OAEP, RSAES-PKCS1-V1_5

鍵ペア生成機能試験,

暗号化機能試験

, 復号機能試験

3.

鍵確立

DH, ECDH

ドメインパラメータ生成機能試験, ドメインパラメータ検証機能試験

鍵ペア生成機能試験, 公開鍵検証機能試験,

鍵共有機能試験

PSEC-KEM

鍵ペア生成機能試験,

セッション鍵暗号化機能試験

, セッション鍵復号機能試験

※各暗号アルゴリズム確認書を発行する条件は

,

下線付きの試験対象機能を少なくとも

1つ実装し,

暗号アルゴリズム実装試験に合格することとする。

(8)

暗号アルゴリズム実装試験ツール試験項目

4.

共通鍵暗号

CIPHERUNICORN-E, Hierocrypt-L1, MISTY1, 3-key Triple DES,

AES, Camellia, CIPHERUNICORN-A, Hierocrypt-3, SC2000

種々の平文(暗号文)に対する既知入出力試験, 種々の鍵に対する既知入出力試

験, マルチブロックメッセージ試験, モンテカルロ試験, Sbox既知入出力試験

5.

ストリーム暗号

MUGI

種々の鍵に対する既知入出力試験

, モンテカルロ試験

MULTI-S01, 128-bit RC4

種々の平文(暗号文)に対する既知入出力試験

, 種々の鍵に対する既知入出力試

, モンテカルロ試験

6.

ハッシュ関数

RIPEMD-160, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512

短いメッセージに対する試験

, 選択された長いメッセージに対する試験,

(9)

暗号アルゴリズム実装試験ツール試験項目

7.

メッセージ認証

CCM , CMAC, HMAC-SHA-1, HMAC-SHA-224, HMAC-SHA-256,

HMAC-SHA-384, HMAC-SHA-512

短いメッセージに対する試験

, 選択された長いメッセージに対する試験,

擬似ランダムメッセージに対する試験

8.

擬似乱数生成関数

PRNG based on SHA-1 for general purpose in FIPS 186-2 (+ change

notice 1) Appendix 3.1,

PRNG based on SHA-1 for general purpose in FIPS 186-2 (+ change

notice 1) revised Appendix 3.1,

PRNG based on SHA-1 in ANSI X9.42-2001 Annex C.1,

Hash_DRBG, CTR_DRBG and OFB_DRBG in ISO/IEC 18031,

NIST SP800-90(Hash_DRBG, HMAC_DRBG, CTR_DRBG),

NIST-Recommended Random Number Generator Based on ANSI X9.31

Appendix A.2.4 Using the 3-key Triple DES and AES Algorithms

種々のシードに対する試験

, モンテカルロ試験

参考:暗号アルゴリズム試験仕様書

(2006年度版)

(10)

JCATTで現在試験できないセキュリティ機能

1.

共通鍵暗号

CTRモード

カウンタが内部インクリメンタルカウンタ以外の実装

⇒ ベンダ自己確認

2.

擬似乱数生成器

Hash_DRBG, HMAC_DRBG, CTR_DRBG(NIST SP800-90)

⇒ ベンダ自己確認

3.

鍵共有

DH

ASN.1に基づく鍵導出関数を使用したもの。

⇒ ベンダ自己確認

DRBG: Deterministic Random Bit Generator。 決定論的乱数ビット列生成器。

DH: Diffie-Hellman

(11)

共通鍵暗号:AES

AES (Advanced Encryption Standard)

仕様:FIPS PUB 197

http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

ブロック長:128-bit

(12)

共通鍵暗号:AES

暗号化/復号

入力

平文/暗号文(ブロック長:128-bit)

鍵(鍵長:128, 192, 256-bit)

出力

暗号文/平文(ブロック長:128-bit)

処理

128-bitの平文・暗号文を8-bitの行列要素とした4*(Nb(=4))行列

表示して, 演算を行う。

拡大鍵

1ワード=32-bitとして, Nb *(Nr+1)ワードの拡大鍵を生成して使

用する。ここで鍵長128, 192, 256-bit に対応して, Nr=10,12,14

である。

(Nr+1)回のXORを必要とする。

(13)

拡大鍵 平文 暗号文

AESアルゴリズム

-暗号化-•

暗号化処理の流れ

SubBytes:行列要素の置換

ShiftRows:

行単位の左シフト処理

MixColumns:

列ベクトル単位のデータの変換

AddRoundKey:

列ベクトルと拡大鍵wとのXOR演算

Nb:4,

Nr:10,12,14

for 128, 192, 256-bit key,

w:拡大鍵, 要素数Nb *(Nr+1)

Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin

byte state[4,Nb] //内部変数(4行, Nb列の行列) state = in

AddRoundKey(state, w[0, Nb-1]) // for round = 1 step 1 to Nr–1

SubBytes(state) // ShiftRows(state) // MixColumns(state) //

AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for

SubBytes(state) ShiftRows(state)

AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) out = state

(14)

拡大鍵

暗号文 平文

InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin

byte state[4,Nb] //内部変数(4行, Nb列の行列) state = in

AddRoundKey(state, w[Nr*Nb,(Nr+1)*Nb-1]) // for round = Nr-1 step -1 downto 1

InvShiftRows(state) // InvSubBytes(state) //

AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) // end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) out = state end

復号処理の流れ

AESアルゴリズム

-復号-Nb:4,

Nr:10,12,14

for 128, 192, 256-bit key,

w:拡大鍵, 要素数Nb *(Nr+1)

InvSubBytes:行列要素の置換

InvShiftRows:

行単位の右シフト処理

InvMixColumns:

列ベクトル単位のデータの変換

AddRoundKey:

列ベクトルと拡大鍵wとのXOR演算

(15)

共通鍵暗号:利用モード

利用モード

ブロック長よりも長いメッセージを暗号化する際の

メカニズム

仕様:SP800-38A

JCATTでAESと組合わせて試験できる

利用モード

ECB (Electronic Codebook)モード

CBC (Cipher Block Chaining)モード

CFB (Cipher Feedback)モード

OFB (Output Feedback)モード

(16)

ECBモード

動作:各ブロックを独立に暗号化又は復号

特徴:シンプル, 並列処理可能

平文

ブロック1

暗号文

ブロック1

暗号化

平文

ブロックn

暗号文

ブロックn

暗号化

・・・

暗号文

ブロック1

平文

ブロック1

復号

暗号文

ブロックn

平文

ブロックn

復号

・・・

暗号化

復号

(17)

CBCモード

動作:直前の暗号文ブロックと平文ブロックとのXORを演算してから暗号化。

直前の暗号文ブロックと復号した暗号文ブロックのXORを演算して復号。

特徴:復号のみ並列処理可能

初期化

ベクトル(IV)

平文

ブロック1

暗号文

ブロック1

暗号化

平文

ブロック2

暗号文

ブロック2

暗号化

平文

ブロック3

暗号文

ブロック3

暗号化

初期化

ベクトル(IV)

平文

ブロック1

暗号文

ブロック1

復号

平文

ブロック2

暗号文

ブロック2

復号

平文

ブロック3

暗号文

ブロック3

復号

暗号化

復号

(18)

CFBモード

動作:直前の暗号文ブロックを暗号化して入力ブロックとのXORを演算。

特徴:復号のみ並列処理可能

初期化

ベクトル(IV)

暗号文

ブロック1

暗号化

暗号文

ブロック2

暗号化

暗号文

ブロック3

暗号化

平文

ブロック1

暗号文

ブロック1

暗号化

平文

ブロック2

暗号文

ブロック

2

暗号化

平文

ブロック3

暗号文

ブロック

3

暗号化

初期化

ベクトル(IV)

平文

ブロック

3

平文

ブロック

1

平文

ブロック2

暗号化

復号

(19)

OFBモード

動作:初期化ベクトル(IV)を暗号化して入力ブロックとのXORを演算。

特徴:暗号化と復号が同じ構造, 前準備可能

初期化

ベクトル(IV)

暗号文

ブロック1

暗号化

平文

ブロック2

暗号文

ブロック2

暗号化

平文

ブロック3

暗号文

ブロック3

暗号化

平文

ブロック1

初期化

ベクトル(IV)

暗号文

ブロック1

暗号化

平文

ブロック2

暗号文

ブロック2

暗号化

平文

ブロック3

暗号文

ブロック3

暗号化

平文

ブロック1

暗号化

復号

(20)

CTRモード

動作:カウンタブロックを暗号化して入力ブロックとのXORを演算。

特徴:暗号化と復号が同じ構造, 前準備可能, 並列処理可能

平文

ブロック1

暗号文

ブロック1

暗号化

暗号化

平文

ブロック2

暗号文

ブロック2

暗号化

平文

ブロック3

暗号文

ブロック3

暗号化

平文

ブロック1

暗号文

ブロック1

暗号化

平文

ブロック2

暗号文

ブロック2

暗号化

平文

ブロック3

暗号文

ブロック3

暗号化

復号

外部カウンタ1 内部カウンタ1 外部カウンタ2 内部カウンタ2 外部カウンタ3 内部カウンタ3 外部カウンタ1 内部カウンタ1 外部カウンタ2 内部カウンタ2 外部カウンタ3 内部カウンタ3 カウンタ 初期化 カウンタ 初期化

(21)

AES暗号アルゴリズム実装試験項目

既知入出力試験

種々の平文(暗号文)に対する既知入出力試験

(KAT-Text)

種々の鍵に対する既知入出力試験(KAT-key)

GFSbox 既知入出力試験(KAT-GFSbox)

KeySbox 既知入出力試験(KAT-KeySbox)

マルチブロックメッセージ試験(MMT)

モンテカルロ試験(MCT)

参考:

The Advanced Encryption Standard Algorithm Validation Suite

(22)

既知入出力試験 (KAT-Text)

種々の平文(暗号文)に

対する既知入出力試

験(KAT-Text)

1個の鍵

平文(又は暗号文) を

様々に変化させ,暗号

文(または平文) が期待

値と一致するかどうかを

試験する。

質問ファイル抜粋

[Bitlength of Key] 128

[Key for KAT-Text]

00000000 00000000 00000000 00000000 [Plaintext for KAT-Text]

80000000 00000000 00000000 00000000 C0000000 00000000 00000000 00000000 E0000000 00000000 00000000 00000000 F0000000 00000000 00000000 00000000 F8000000 00000000 00000000 00000000 FC000000 00000000 00000000 00000000 FE000000 00000000 00000000 00000000 FF000000 00000000 00000000 00000000 FF800000 00000000 00000000 00000000 FFC00000 00000000 00000000 00000000 FFE00000 00000000 00000000 00000000 FFF00000 00000000 00000000 00000000 --省略- -FFFFFFFF -FFFFFFFF -FFFFFFFF FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

※分かりやすくするために空白を追加

⇒暗号鍵。

⇒鍵長。

⇒平文。

(23)

既知入出力試験 (KAT-Key)

種々の鍵に対する既知入出

力試験(KAT-Key)

1個の平文(又は暗号文)

鍵を様々に変化させ,暗号文

(または平文) が期待値と一致

するかどうかを試験する。

質問ファイル抜粋

[Plaintext for KAT-Key]

00000000 00000000 00000000 00000000 [Key for KAT-Key]

80000000 00000000 00000000 00000000 C0000000 00000000 00000000 00000000 E0000000 00000000 00000000 00000000 F0000000 00000000 00000000 00000000 F8000000 00000000 00000000 00000000 FC000000 00000000 00000000 00000000 FE000000 00000000 00000000 00000000 FF000000 00000000 00000000 00000000 FF800000 00000000 00000000 00000000 FFC00000 00000000 00000000 00000000 FFE00000 00000000 00000000 00000000 FFF00000 00000000 00000000 00000000 --省略- -FFFFFFFF -FFFFFFFF -FFFFFFFF FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

※分かりやすくするために空白を追加

⇒暗号鍵。

⇒平文。

(24)

既知入出力試験 (KAT-GFSbox)

GFSboxに対する既知

入出力試験

(KAT-GFSbox)

1個の鍵

Sboxテーブルのエント

リーを全て1回以上引く

ように作成された複数の

平文(又は暗号文) を

使って,暗号文(または平

文) が期待値と一致する

かどうかを試験する。

質問ファイル抜粋

[Key for KAT-GFSbox]

00000000 00000000 00000000 00000000 [Plaintext for KAT-GFSbox]

F34481EC 3CC627BA CD5DC3FB 08F273E6 9798C464 0BAD75C7 C3227DB9 10174E72 96AB5C2F F612D9DF AAE8C31F 30C42168 6A118A87 4519E64E 9963798A 503F1D35 CB9FCEEC 81286CA3 E989BD97 9B0CB284 B26AEB18 74E47CA8 358FF223 78F09144 58C8E00B 2631686D 54EAB84B 91F0ACA1 [IV for KAT-GFSbox]

00000000 00000000 00000000 00000000

⇒暗号鍵。

⇒初期化ベクトル。

⇒平文。

(25)

既知入出力試験 (KAT-keySbox)

KeySboxに対する

既知入出力試験

(KAT-KeySbox)

1個の平文(又は暗号文)

Sboxテーブルのエント

リーを全て1回以上引くよ

うに作成された複数の鍵

を使って,暗号文(または

平文) が期待値と一致す

るかどうかを試験する。

質問ファイル抜粋

[Plaintext for KAT-KeySbox]

00000000000000000000000000000000 [IV for KAT-KeySbox]

00000000000000000000000000000000 [Key for KAT-KeySbox]

10A58869D74BE5A374CF867CFB473859 CAEA65CDBB75E9169ECD22EBE6E54675 A2E2FA9BAF7D20822CA9F0542F764A41 B6364AC4E1DE1E285EAF144A2415F7A0 64CF9C7ABC50B888AF65F49D521944B2 47D6742EEFCC0465DC96355E851B64D9 3EB39790678C56BEE34BBCDECCF6CDB5 64110A924F0743D500CCADAE72C13427 −−省略−− E234CDCA2606B81F29408D5F6DA21206 13237C49074A3DA078DC1D828BB78C6F 3071A2A48FE6CBD04F1A129098E308F8 90F42EC0F68385F2FFC5DFC03A654DCE FEBD9A24D8B65C1C787D50A4ED3619A9

⇒暗号鍵。

⇒初期化ベクトル。

⇒平文。

(26)

マルチブロックメッセージ試験(MMT)

MMTでは, ランダムに与えられた複数ブロック分の平文(ま

たは暗号文),IV,カウンタに対する暗号文(または平文) が

期待値と一致するかどうか検証を行う。

ただし,MMT ブロック数の規定値は10。

質問ファイル抜粋

[Number of Blocks for MMT]

10

[Key for MMT]

7ae100eaafe60081b7ccbd1f34d7173b

[IV for MMT]

ECF8A3A30533EF9967519EC782EBA8F7

[Plaintext for MMT]

2807d57da0f660670e65b1fac64ba1b4b912eabd9fc9ddee65cc90ac864649a54cbe4ab9950167

3439633908c58531c69b64ca530e68dcf7ad363a328255e0101dccea7e4cbaffae712c3475328e

a845a9dce495c8b0bcd8c77b083103d482fdbc7c48d8ca524ec14bc05404a68f35026d7de12e0a

5765717e4c853b918dc98db570655124849d89e985b412e55af9a850ea11094b64364e41528c3d

6255782a

⇒ブロック数。

⇒暗号鍵。

⇒初期化ベクトル(IV)。

⇒平文。

(27)

モンテカルロ試験(MCT)

ランダムに与えられた1 ブロック分の平文(または暗号文),鍵,IV(ECB

モードを除く)に対して,指定された利用モードで計算される暗号文 (また

は平文)が期待値と一致するかどうか検証を行う。

[Number of Inner-loop for MCT] 1000

[Number of Outer-loop for MCT] 100

[Initial Key for MCT]

08152CDDCEDCBBE8909A0DE520C80D3D [Initial Plaintext for MCT]

2D8A66FDC53DCEE76A50E16B9365EBC0 Key[0] = Key // 初期鍵

PT = PT_0 // 初期平文

for (i=0; i<outerloop; i++){

for (j=0; j<innerloop; j++){

// ECB モード暗号化

CT[j] = Encryption(Key[i], PT) PT = CT[j] } Output CT[innerloop-1] If ( 鍵長==128 ビット){

Key[i+1] = Key[i] xor CT[innerloop-1] } //--鍵長が192及び256 ビットの // 処理については省略- -}

ブロック長, 各モード, 暗号化・復号,

鍵長によって対応するMCT擬似コード

は異なる。

暗号アルゴリズム試験仕様書を参照。

質問ファイル抜粋

•MCT擬似コード(ECBモード/暗号化)

⇒出力

(28)

AES暗号化:

質問ファイル及び回答ファイルのフォーマット(1/2)

上記パラメータに対する暗号文 [Ciphertext for KAT-GFSbox]

KAT-GFSbox用カウンタ(CTRモードのみ) [Counter for KAT-GFSbox]

KAT-GFSbox用カウンタ(CTRモードのみ) [Counter for KAT-GFSbox]

KAT-GFSbox用IV [IV for KAT-GFSbox]

KAT-GFSbox用IV [IV for KAT-GFSbox]

KAT-GFSbox用平文 [Plaintext for KAT-GFSBox]

KAT-GFSbox用平文 [Plaintext for KAT-GFSBox]

KAT-GFSbox用鍵 [Key for KAT-GFSbox]

KAT-GFSbox用鍵 [Key for KAT-GFSbox]

上記パラメータに対する暗号文 [Ciphertext for KAT-Key]

KAT-Key用鍵 [Key for KAT-Key]

KAT-Key用鍵 [Key for KAT-Key]

KAT-Key用カウンタ(CTRモードのみ) [Counter for KAT-Key]

KAT-Key用カウンタ(CTRモードのみ) [Counter for KAT-Key]

KAT-Key用IV [IV for KAT-Key]

KAT-Key用IV [IV for KAT-Key]

KAT-Key用平文 [Plaintext for KAT-Key]

KAT-Key用平文 [Plaintext for KAT-Key]

上記パラメータに対する暗号文 [Ciphertext for KAT-Text]

KAT-TEXT用カウンタ(CTRモードのみ) [Counter for KAT-Text]

KAT-TEXT用カウンタ(CTRモードのみ) [Counter for KAT-Text]

KAT-TEXT用IV [IV for KAT-Text]

KAT-TEXT用IV [IV for KAT-Text]

KAT-TEXT用平文 [Plaintext for KAT-Text]

KAT-TEXT用平文 [Plaintext for KAT-Text]

KAT-TEXT用鍵 [Key for KAT-Text]

KAT-TEXT用鍵 [Key for KAT-Text]

カウンタのビット幅(CTRモードのみ) [Bitlength of Counter] カウンタのビット幅(CTRモードのみ) [Bitlength of Counter] 鍵のビット長;128/192/256 [Bitlength of Key] 鍵のビット長;128/192/256 [Bitlength of Key] ECB/CBC/OFB/CFB1/CFB8/CFB128/CTR [Modes of Operation] ECB/CBC/OFB/CFB1/CFB8/CFB128/CTR [Modes of Operation] Encryption(固定) [Function Name] Encryption(固定) [Function Name] AES(固定) [Algorithm Name] AES(固定) [Algorithm Name] 暗号 化 データ タグ データ タグ 回答ファイルフォーマット 質問ファイルフォーマット 機能

KAT-TEXT

KAT-Key

KAT-GFSbox

(29)

AES暗号化:

質問ファイル及び回答ファイルのフォーマット(2/2)

上記パラメータに対する暗号文 [Ciphertext for MCT]

MCT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MCT]

MCT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MCT]

MCT用IVの初期値 [Initial IV for MCT]

MCT用IVの初期値 [Initial IV for MCT]

MCT用平文の初期値 [Initial Plaintext for MCT]

MCT用平文の初期値 [Initial Plaintext for MCT]

MCT用鍵の初期値 [Initial Key for MCT]

MCT用鍵の初期値 [Initial Key for MCT]

MCTの外側ループの回数 [Number of Outer-loop for MCT]

MCTの外側ループの回数 [Number of Outer-loop for MCT]

MCTの内側ループの回数 [Number of Inner-loop for MCT]

MCTの内側ループの回数 [Number of Inner-loop for MCT]

上記パラメータに対する暗号文 [Ciphertext for MMT] MMT用平文 [Plaintext for MMT] MMT用平文 [Plaintext for MMT] MMT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MMT]

MMT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MMT]

MMT用IV [IV for MMT] MMT用IV [IV for MMT] MMT用鍵 [Key for MMT] MMT用鍵 [Key for MMT] MMTのブロック数 [Number of Blocks for MMT]

MMTのブロック数 [Number of Blocks for MMT]

上記パラメータに対する暗号文 [Ciphertext for KAT-KeySbox]

KAT-KeySbox用鍵 [Key for KAT-KeySbox]

KAT-KeySbox用鍵 [Key for KAT-KeySbox]

KAT-KeySbox用カウンタ(CTRモードのみ) [Counter for KAT-KeySbox]

KAT-KeySbox用カウンタ(CTRモードのみ) [Counter for KAT-KeySbox]

KAT-KeySbox用IV [IV for KAT-KeySbox]

KAT-KeySbox用IV [IV for KAT-KeySbox]

KAT-KeySbox用平文 [Plaintext for KAT-KeySBox]

KAT-KeySbox用平文 [Plaintext for KAT-KeySBox]

暗号 化 データ タグ データ タグ 回答ファイルフォーマット 質問ファイルフォーマット 機能

KAT-KeySbox

MMT

MCT

(30)

AES復号:

質問ファイル及び回答ファイルのフォーマット(1/2)

上記パラメータに対する平文 [Plaintext for KAT-GFSbox]

KAT-GFSbox用カウンタ(CTRモードのみ) [Counter for KAT-GFSbox]

KAT-GFSbox用カウンタ(CTRモードのみ) [Counter for KAT-GFSbox]

KAT-GFSbox用IV [IV for KAT-GFSbox]

KAT-GFSbox用IV [IV for KAT-GFSbox]

KAT-GFSbox用暗号文 [Ciphertext for KAT-GFSBox]

KAT-GFSbox用暗号文 [Ciphertext for KAT-GFSBox]

KAT-GFSbox用鍵 [Key for KAT-GFSbox]

KAT-GFSbox用鍵 [Key for KAT-GFSbox]

上記パラメータに対する平文 [Plaintext for KAT-Key]

KAT-Key用鍵 [Key for KAT-Key]

KAT-Key用鍵 [Key for KAT-Key]

KAT-Key用カウンタ(CTRモードのみ) [Counter for KAT-Key]

KAT-Key用カウンタ(CTRモードのみ) [Counter for KAT-Key]

KAT-Key用IV [IV for KAT-Key]

KAT-Key用IV [IV for KAT-Key]

KAT-Key用暗号文 [Ciphertext for KAT-Key]

KAT-Key用暗号文 [Ciphertext for KAT-Key]

上記パラメータに対する平文 [Plaintext for KAT-Text]

KAT-TEXT用カウンタ(CTRモードのみ) [Counter for KAT-Text]

KAT-TEXT用カウンタ(CTRモードのみ) [Counter for KAT-Text]

KAT-TEXT用IV [IV for KAT-Text]

KAT-TEXT用IV [IV for KAT-Text]

KAT-TEXT用暗号文 [Ciphertext for KAT-Text]

KAT-TEXT用暗号文 [Ciphertext for KAT-Text]

KAT-TEXT用鍵 [Key for KAT-Text]

KAT-TEXT用鍵 [Key for KAT-Text]

カウンタのビット幅(CTRモードのみ) [Bitlength of Counter] カウンタのビット幅(CTRモードのみ) [Bitlength of Counter] 鍵のビット長;128/192/256 [Bitlength of Key] 鍵のビット長;128/192/256 [Bitlength of Key] ECB/CBC/OFB/CFB1/CFB8/CFB128/CTR [Modes of Operation] ECB/CBC/OFB/CFB1/CFB8/CFB128/CTR [Modes of Operation] Decryption(固定) [Function Name] Decryption(固定) [Function Name] AES(固定) [Algorithm Name] AES(固定) [Algorithm Name] 復号 データ タグ データ タグ 回答ファイルフォーマット 質問ファイルフォーマット 機能

KAT-TEXT

KAT-Key

KAT-GFSbox

(31)

AES復号:

質問ファイル及び回答ファイルのフォーマット(2/2)

上記パラメータに対する平文 [Plaintext for MCT]

MCT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MCT]

MCT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for MCT]

MCT用IVの初期値 [Initial IV for MCT]

MCT用IVの初期値 [Initial IV for MCT]

MCT用暗号文の初期値 [Initial Ciphertext for MCT]

MCT用暗号文の初期値 [Initial Ciphertext for MCT]

MCT用鍵の初期値 [Initial Key for MCT]

MCT用鍵の初期値 [Initial Key for MCT]

MCTの外側ループの回数 [Number of Outer-loop for MCT]

MCTの外側ループの回数 [Number of Outer-loop for MCT]

MCTの内側ループの回数 [Number of Inner-loop for MCT]

MCTの内側ループの回数 [Number of Inner-loop for MCT]

上記パラメータに対する平文 [Plaintext for MMT] MMT用暗号文 [Ciphertext for MMT] MMT用暗号文 [Ciphertext for MMT] MMT用カウンタ初期値(CTRモードのみ) [Initial Value of Counter for

MMT] MMT用カウンタ初期値(CTRモードのみ)

[Initial Value of Counter for MMT]

MMT用IV [IV for MMT] MMT用IV [IV for MMT] MMT用鍵 [Key for MMT] MMT用鍵 [Key for MMT] MMTのブロック数 [Number of Blocks for MMT]

MMTのブロック数 [Number of Blocks for MMT]

上記パラメータに対する平文 [Plaintext for KAT-KeySbox]

KAT-KeySbox用鍵 [Key for KAT-KeySbox]

KAT-KeySbox用鍵 [Key for KAT-KeySbox]

KAT-KeySbox用カウンタ(CTRモードの み)

[Counter for KAT-KeySbox] KAT-KeySbox用カウンタ(CTRモードのみ)

[Counter for KAT-KeySbox]

KAT-KeySbox用IV [IV for KAT-KeySbox]

KAT-KeySbox用IV [IV for KAT-KeySbox]

KAT-KeySbox用暗号文 [Ciphertext for KAT-KeySBox]

KAT-KeySbox用暗号文 [Ciphertext for KAT-KeySBox]

復号 データ タグ データ タグ 回答ファイルフォーマット 質問ファイルフォーマット 機能

KAT-KeySbox

MMT

MCT

(32)

AES暗号アルゴリズム実装試験の

申し込みに必要な情報

機能

暗号化,復号

利用モード

ECB,CBC,CFB,OFB,CTR

鍵長

128,192,256

カウンタ種別

内部カウンタ,外部カウンタ

鍵長

•128-bit

•192-bit

•256-bit

利用モード

•ECB (Electronic Codebook),

•CBC (Cipher Block Chaining),

•CFB (Cipher Feedback),

•OFB (Output Feedback),

•CTR (Counter)

X

X

機能

•暗号化

•復号

質問ファイル数

(33)

暗号アルゴリズム確認書の

確認条件記載例

ECB(e/d;128,192,256),CBC(e/d;128,192,256),

CTR(int;128,192,256)

AES

nnn

確認条件

暗号アルゴリズム

確認番号

確認条件記載項目

利用モード(ECB/CBC/CFB/OFB/CTR)

機能(e:暗号化, d:復号)

鍵長(128/192/256)

その他

CTRモードについては,

カウンタ種別(int:内部カウンタ, ext:外部カウンタ)

確認条件記載例

(34)

暗号モジュールの

暗号アルゴリズム実装試験セミナー

第2部:RSA

守秘: RSA-OAEP

•暗号化/復号

署名: RSA-PSS

•署名生成/署名検証

(35)

公開鍵暗号:RSA

守秘

公開鍵で暗号化

プライベート鍵で復号

署名

プライベート鍵で署名生成

公開鍵で署名検証

(36)

36

公開鍵暗号:RSA

RSAパラメータ

素数

p,q

公開鍵

n(=pq):法

e:指数

プライベート鍵

CRTなし

d:秘密指数

CRTあり

p, q, dP, dQ, qInv

性質

オイラーのφ関数

1, 2, …, nまでの自然数の

うち, nと互いに素なものの個数。

プライベート鍵

CRTなし

CRTあり

))

(

(mod

1

n

d

e

)

1

)(

1

(

)

(

)

(

)

(

n

p

q

p

q

1

))

(

,

gcd(

e

n

※CRT:Chinese Remainder Theorem

※gcd:greatest common divisor

最大公約数

)

(n

))

1

(mod(

1

p

dP

e

))

1

(mod(

1

q

dQ

e

)

(mod

1

p

qInv

q

・合同式

)

(mod m

b

a

b

mx

a

(37)

公開鍵暗号:RSA

承認されたセキュリティ機能

守秘

RSA-OAEP

←こちらについて説明

RSAES-PKCS1-v1_5

署名

RSASSA-PKCS1-v1_5

RSA-PSS

←こちらについて説明

仕様

PKCS#1 v2.1: RSA Cryptography Standard, June

14, 2002.

ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf

(38)

公開鍵暗号:RSA <守秘>

暗号化

受信者の公開鍵を用いる。

メッセージ

m

n 未満の正の整数。

暗号文

c

復号

受信者のプライベート鍵を用いて復号する

平文

m’

m

'

c

d

(mod

n

)

n

m

c

e

mod

(39)

公開鍵暗号:RSA-OAEP 暗号化(1)

RSA-OAEP

暗号化

内部で使用する関数

Hash ハッシュ関数(ハッシュ関数の出力長は

hLen

(バイト))

SHA-1, SHA-256, SHA-384, SHA-512

MGF マスク生成関数

入力

(n, e) 受信者の公開鍵 (法 n の長さは

k

(バイト))

M

暗号化したいメッセージ(長さは

mLen

(バイト))

L

メッセージに関連したラベル (デフォルトで空文字)

出力

C 暗号文(長さは

k

(バイト))

(40)

公開鍵暗号: RSA-OAEP 暗号化(2)

処理概要

1.

長さチェック

ラベル

L の長さ制限(ハッシュ関数との関連)

ならば, エラー表示

2

2hLen

k

mLen

4.

暗号文の出力

3.

暗号化処理

2.

メッセージの前処理

L

(n,e)

M

C

Hash

MGF

公開鍵 メッセージ ラベル

暗号文

ハッシュ関数

マスク生成関数

(41)

公開鍵暗号: RSA-OAEP 暗号化(3)

処理概要

2.

メッセージの前処理

L

Hash

PS

M

lHash

01

mLen

k-mLen-2hLen-2

1

k-hLen-1

M

seed

hLen

DB=

MGF

MGF

maskedDB

maskedSeed

00

1

EM=

凡例

•白背景・・・入力

•緑背景・・・中間

•青字・・・長さ

•丸枠・・・関数

0x00で埋める

MGF:入力文字列と

カウンタをハッシュ関数への

入力として用いて, 必要な

長さのバイト列を生成する。

擬似乱数生成器から

(42)

EM

OS2IP

(n,e)

m

RSAEP

c

I2OSP

C

前頁より

公開鍵:

バイト列(仕様書中ではoctet stringsと表記)

EM(長さ

k (バイト))を整数mに変換する

整数

cをバイト列C (長さ

k

(バイト))に

変換する

暗号文:

の計算式に従い,

cを計算する。

c

m

n

e

mod

公開鍵暗号: RSA-OAEP 暗号化(4)

処理概要

3.

暗号化処理

(43)

公開鍵暗号: RSA

-マスク生成関数(1)-•

マスク生成関数(MGF:Mask Generation Function)

※ANSI X9.44に記載のものと同様

内部で使用する関数

Hash ハッシュ関数(ハッシュ関数の出力長は

hLen

(バイト))

SHA-1, SHA-256, SHA-384, SHA-512

入力

mgfSeed マスクを生成する元となるシード, バイト列

maskLen 生成したいマスクの長さ(バイト単位), 最大2

32

hLen

出力

(44)

公開鍵暗号: RSA

-マスク生成関数(2)-•

マスク生成関数(MGF:Mask Generation Function)

処理概要

4

counter

I2OSP

mgfSeed

Hash

T

0

1

I2OSP

mgfSeed

Hash

T

1

1

I2OSP

mgfSeed

Hash

T

m

0

maskLen

mask

hLen

1

/ hLen

maskLen

m

整数からバイト列への変換

(45)

公開鍵暗号: RSA-OAEP

暗号化機能試験(1)

試験項目

試験1

JCATT

®

が与えた公開鍵(n, e) および平文,ならびに指定され

たハッシュ関数およびマスク生成関数MGF およびラベルL に対

して

IUT

が生成した暗号文を,

JCATT

®

が復号した時に,もとの

平文に復号されること。

同じ平文,同じ公開鍵,同じラベル値に対して,複数(別途規定

する数) 暗号文を生成させた時,同じ暗号文が生成されないこと。

JCATT

®

: Japan Cryptographic Algorithm Implementation Testing Tool,

暗号アルゴリズム実装試験ツール

(46)

公開鍵暗号: RSA-OAEP

暗号化機能試験(2)

試験項目

試験2(任意で実施する試験)

JCATT

®

が与えた公開鍵(n, e),平文およびラベルL,ならびに指

定された擬似乱数生成関数,指定されたハッシュ関数およびマ

スク生成関数MGF と, 乱数シードに対して正しい暗号文を

IUT

が生成すること。

試験3(任意で実施する試験)

JCATT

®

が与えた公開鍵(n, e),平文およびラベルL,ならびに指

定されたハッシュ関数,マスク生成関数MGF および中間値seed

対して正しい暗号文を

IUT

が生成すること。

(47)

公開鍵暗号: RSA-OAEP

暗号化機能試験(3)

申し込む際に必要な情報

公開鍵

nのビット長

1024, 1536, 2048, 3072, 4096

指数

eのタイプ選択

65537, ランダム

関数の選択

使用するハッシュ関数

SHA-1, SHA-256, SHA-384, SHA-512

マスク生成関数(MGF)

ANSI X9.44 SHA-1, ANSI X9.44 SHA-256,

ANSI X9.44 SHA-384, ANSI X9.44 SHA-512

試験の選択

試験1, 試験2(擬似乱数生成関数の指定), 試験3

復号と

(48)

公開鍵暗号: RSA-OAEP

暗号化機能試験(4)

試験1の場合(質問ファイル抜粋)

[Bitlength of Modulus] 1024 [Hash] M_Hash_SHA256 [MGF] M_MGF_ANSI944_SHA256 [n] C110E0F94823D8DAA43AF0E3DBF4264FB634F68E28951F504F B0EF7757F68604D57D78ABB86F0066FA0228B5D2EE4B9E1618 5DAA127B5349042AB4C3AAEB300749A099B1A22449B7093256 EDCC6E38EC22F38CA9BC7D3CA21303B6F4F3E9A5877E0C5A33 16A70856B043554F84FDB2A19F22222BEA67DB6F62EB324236 4A1671 [e] 010001 [L] [Bitlength of L] 0 [Seed S] [Bitlength of Seed S] 0 [Bitlength of Plaintexts] 64 [Bitlength of Ss] 0 [Number of Plaintexts] 10 [Plaintexts] 28102857CDE5F494 CA0B68026018407B 63D5F4134B4EA3A8 275C6A859A88C972 3B9654EAF30279D2 A77953D4E837BE0E 982D2357B7B658FC BD00584A65368C3C E1280758E89A5C78 AD5C4702C515F57F [Ss]

[Number of Ciphertexts for RGT] 10 ⇒公開鍵e=65537。 ⇒ラベルL, 長さ0。 ┌→同じ平文に対して 10個の暗号文を生成。 ⇒平文10個。 64-bit。 ⇒法nのビット長。 ⇒法n。 ⇒ハッシュ関数:SHA-256 ⇒MGF:ANSI X9.44 SHA-256 ⇒試験2で 使う。 ⇒試験3で使う。

(49)

公開鍵暗号: RSA-OAEP 復号(1)

RSA-OAEP

復号

内部で使用する関数

Hash ハッシュ関数(ハッシュ関数の出力長は

hLen

(バイト))

SHA-1, SHA-256, SHA-384, SHA-512

MGF マスク生成関数

入力

K

受信者のプライベート鍵 (法

n の長さは

k

(バイト))

C

復号したい暗号文(長さは

k

(バイト))

L

メッセージとの関連が検証されるラベル

出力

M メッセージ(長さは

mLen

(バイト))

(50)

公開鍵暗号: RSA-OAEP 復号(2)

処理概要

L

K

C

プライベート鍵 暗号文

ラベル

Hash

MGF

ハッシュ関数

マスク生成関数

M

1.

長さチェック

2.

復号処理

3.

メッセージを取り出す処理

4.

メッセージを出力

メッセージ

(51)

C

OS2IP

K

c

RSADP

m

I2OSP

EM

プライベート鍵:

バイト列

C(長さ

k (バイト))を

整数

cに変換する

整数

mをバイト列EM

(長さ

k

(バイト))に変換する

CRTなしの場合, 計算式

に従い,

mを計算する。

n

c

m

d

mod

公開鍵暗号: RSA-OAEP 復号(3)

暗号文

処理概要

2.

復号処理

(52)

L

Hash

PS

M

lHash’

01

mLen

k-mLen-2hLen-2

1

k-2hLen-1

M

seed

hLen

DB=

MGF

MGF

maskedDB

maskedSeed

Y

1

EM=

k

lHash

hLen

?

公開鍵暗号: RSA-OAEP 復号(4)

処理概要

3.

メッセージを取り出す処理

(53)

公開鍵暗号: RSA-OAEP

復号機能試験(1)

試験項目

与えられたプライベート鍵(n, d) または(p, q, dP, dQ,

qInv) と,与えられたラベルL と,指定されたハッシュ関数

及びマスク生成関数MGF と,

与えられた暗号文に対して,

もとの平文に復号できること。

与えられたプライベート鍵(n, d) または(p, q, dP, dQ,

qInv) と,与えられたラベルL と,指定されたハッシュ関数

及びマスク生成関数MGF と,

改竄された暗号文に対して

不正検出を正しく行うこと。

(54)

公開鍵暗号: RSA-OAEP

復号機能試験(2)

申し込む際に必要な情報

プライベート鍵

nのビット長

1024, 1536, 2048, 3072, 4096

プライベート鍵のタイプ選択

CRTあり, CRTなし

関数の選択

使用するハッシュ関数

SHA-1, SHA-256, SHA-384, SHA-512

マスク生成関数(MGF)

ANSI X9.44 SHA-1, ANSI X9.44 SHA-256,

ANSI X9.44 SHA-384, ANSI X9.44 SHA-512

暗号化と

異なる部分

(55)

公開鍵暗号: RSA-OAEP

復号機能試験(3)

質問ファイル抜粋

[Bitlength of Modulus] 1024 [Hash] M_Hash_SHA256 [MGF] M_MGF_ANSI944_SHA256 [Secret Key Type] TYPE2 [d] 18DD6DB2FEEA48C616CE353F370C1AE896A0157EC8A817D 40E330D6125E75D80C5F798B0D6E1B313B79331B77BBB1E EC3E6C8170709905B5310DA2E7439E6E7D2B26266AEB842 3A73A9AC4110350507D747A2C71B4FC419383FB9DE50D31 72A1E525163A0CA447B0C3D50B253499F73B33976212A04 0CA9F7947C52174413725 [n] 9BE5A018CE25343868FDDB5EC942BF8CD67CC5EA79C9071 CF37B9DA79228671C8457EB4E5220A3FEB3E4B15928D781 371F1790ED19C1AB945B7513C20CE8C7767850B80BC21DB 727436B4F9C58B0E101427AA45383C4D6BD876CAFBA2A03 D427927BE2903F5996E3D8135AC3C86557DBED55F7D38F7 [L] [Bitlength of L] 0 [Bitlength of Plaintexts] 64 [Number of Ciphertexts] 10 [Ciphertexts] 478551F4F9F67DED434A28F02C0CC0796B762B 543D9116B66618C57DD45C91E60C1598D4011D E48A2FE7F71D0878AF1C20205C39A5305A81CE 87AEF1D482AF20B07315D10D7FCF3A48E2E76A 5DC6C1B36A11B9523DABEC75BD4BF0D6E7E80C C9B6295C4859ED7C8DAAE447F97052B5892C5A CC2E3022A5571E83A17D08E90BC7 --省略- -⇒法nのビット長。 ⇒プライベート鍵:CRTなし。 ⇒10個の暗号文。 ⇒ハッシュ関数:SHA-256 ⇒MGF:ANSI X9.44 SHA-256 ⇒プライベート鍵d。 ⇒法n。 ⇒ラベルL, 長さ0。 ⇒平文の ビット長。

復号できる場合には, 元の平文を,

復号できない場合には,

”decryption error”を回答ファイルに記述。

(56)

公開鍵暗号: RSA <署名>

署名生成

署名者のプライベート鍵を用いて“暗号化”する。

署名検証

(57)

公開鍵暗号: RSA-PSS

署名生成(1)

RSA-PSS

署名生成

内部で使用する関数

Hash ハッシュ関数(ハッシュ関数の出力長は

hLen

(バイト))

SHA-1, SHA-256, SHA-384, SHA-512

MGF マスク生成関数

入力

K 署名者のプライベート鍵

M 署名したいメッセージ(バイト列)。

出力

S 長さ

k

(バイト)の署名。ここで,

k

は法

n の長さ。

(58)

公開鍵暗号: RSA-PSS

署名生成(2)

処理概要

K

M

Hash

MGF

ハッシュ関数

マスク生成関数

S

1.

符号化処理

2.

署名生成処理

3.

署名の出力

署名

プライベート鍵

メッセージ

(59)

padding

1

mHash

salt

emLen-sLen-hLen-2

1

sLen

M

hLen

M’=

MGF

maskedDB

H

bc

8

EM=

emLen

Hash

Hash

padding

2

01

salt

DB=

hLen

emLen-hLen-1

1

公開鍵暗号: RSA-PSS

署名生成(3)

処理概要

1.

符号化処理

8emLen-emBitsビット

分は0に設定

0x00で埋める

=

(60)

公開鍵暗号: RSA-PSS

署名生成(4)

処理概要

2.

署名生成処理

EM

OS2IP

K

m

RSASP1

s

I2OSP

S

前頁より

プライベート鍵:

バイト列

EM(長さ

k (バイト))を

整数

mに変換する

整数

s をバイト列 S (長さ

k

(バイト))に

変換する。

署名:

CRT無しの場合, 計算式

に従い,

sを計算する。

n

m

s

d

mod

(61)

公開鍵暗号: RSA-PSS

署名生成機能試験(1)

試験項目

試験1

JCATT

®

が与えたプライベート鍵(n, d) または(p, q,

dP, dQ, qInv),平文に対して

IUT

が生成した署名を,

JCATT

®

が署名検証した時に署名検証合格となるこ

と。

salt 長が 0 でない場合,同じ平文,同じプライベート

鍵に対して,複数(別途規定する数) 署名を生成させ

た時,

IUT

が同じ署名を生成しないこと。

(62)

公開鍵暗号: RSA-PSS

署名生成機能試験(2)

試験項目

試験2

(任意で実施する試験)

JCATT

®

が与えたプライベート鍵(n, d) または(p, q,

dP, dQ, qInv) ,平文,ならびに指定されたハッシュ関

数,擬似乱数生成関数,乱数シードに対して

IUT

正しい署名を生成すること.

試験3

(任意で実施する試験)

JCATT

®

が与えたプライベート鍵(n, d) または(p, q,

dP, dQ, qInv) ,平文,ならびに指定されたハッシュ関

数,

salt に対して

IUT

が正しい署名を生成すること.

(63)

公開鍵暗号: RSA-PSS

署名生成機能試験(3)

申し込む際に必要な情報

プライベート鍵

nのビット長

1024, 1536, 2048, 3072, 4096

プライベート鍵のタイプ選択

CRTあり, CRTなし

関数の選択

使用するハッシュ関数

SHA-1, SHA-256, SHA-384, SHA-512

マスク生成関数(MGF)

ANSI X9.44 SHA-1, ANSI X9.44 SHA-256,

ANSI X9.44 SHA-384, ANSI X9.44 SHA-512

試験の選択

試験1, 試験2(擬似乱数生成関数の指定), 試験3

その他

saltのビット長

署名検証と

異なる部分

(64)

公開鍵暗号: RSA-PSS

署名生成機能試験(4)

試験1の場合(質問ファイルの抜粋)

[Bitlength of Modulus] 1024 [Hash] M_Hash_SHA256 [MGF] M_MGF_ANSI944_SHA256 [Secret Key Type] TYPE2 [d] 3709FDD34CAC1BAC88D217A5E43FF0A6AFAD13E0D049 1190A61FFA5C7E20F5ADD6A5049163C91504CD4EA1C8 93A3D3D9EC9E16AC69D09F861F433F4C43E3574D8DD9 EE3543620B6A6607F36DEDB03A4D2CC2A11D3420E0A9 5FCA6B299FA147E589112C739D51603BDD883C88A515 F9C99E35E2A9883FACB2D878E269231E2229 [n] B093113903E6666BBD534384E9E9082F7C1D3C5F6B42 334BFBCFDF6809779CB8A63EDF52091BBE0EFDEED82E 400CED062B0EADDFC13F7B4C92C13FBD93445FDC83C3 A4EAB00CF6C68FDA3349CED8A4D221AD12987D8E1E11 84251C5470F8CBBB19F48A049F19B6E764EB8DE099D5 4115C72B2B0604C6582634A872BDB8405B13 [Seed Salt]

[Bitlength of Seed Salt] 0 [Bitlength of Plaintexts] 1024 [SaltFlag] 0 [Bitlength of Salt] 256 [Number of Plaintexts] 10 [Plaintexts] DDB8778F88379BB3602CA8C8D2E6628B2 89836E6059AB59CF473FAB7B9A52C1111 2A0890CCF6F37EF2211277F7325D511FB AB83E5148CF9C73FEDECFF8FB3E341211 0362C54555783D771B2FA5F74F70F71C8 0E28A10487BCA0B61F13961901908AD78 6C7FC3A11C1E0FAC930E7A9F437317A10 4A2251361D3C207A99F2BFC02 --省略—

[Number of Signatures for RGT] 10 ⇒法n。 ⇒プライベート鍵:CRTなし。 salt生成のため の擬似乱数生 成シード。 ⇒salt の入力フラグ。 0:指定なし。 ⇒salt のビット長。 ⇒署名したいメッセージ。 ┌→同じメッセージ に対して10個の署名 を生成。 ⇒ハッシュ関数:SHA-256 ⇒MGF:ANSI X9.44 SHA-256 ⇒プライベート鍵 d。 ⇒法nのビット長。

(65)

公開鍵暗号: RSA-PSS

署名検証(1)

RSA-PSS

署名検証

内部で使用する関数

Hash ハッシュ関数(ハッシュ関数の出力長は

hLen

(バイト))

SHA-1, SHA-256, SHA-384, SHA-512

MGF マスク生成関数

入力

(n, e) 署名者の公開鍵

M

署名を検証する元になるメッセージ(バイト列)。

S 検証される署名。長さは

k

(バイト) で, 公開鍵 n の長

さに等しい。

出力

(66)

公開鍵暗号: RSA-PSS

署名検証(2)

処理概要

1.

長さチェック

署名

S

の長さが

k バイトでない場合, エラー処理。

4.

検証結果出力

3.

比較・抽出部分

2.

RSAアルゴリズムを使った処理

S

(n,e)

M

検証結果

Hash

MGF

公開鍵

メッセージ

署名

ハッシュ関数

マスク生成関数

(67)

S

OS2IP

(n, e)

s

RSADP

m

I2OSP

EM

公開鍵:

バイト列

S

(長さ

k (バイト))を

整数

sに変換する

整数

mをバイト列EM (長さ

(バイト))に変換する

に従い,

mを計算する。

n

s

m

e

mod

8

/

)

1

(modBits

emLen

公開鍵暗号: RSA-PSS

署名検証(3)

処理概要

2.

RSAアルゴリズムを使った処理

(68)

公開鍵暗号: RSA-PSS

署名検証(4)

padding

1

mHash

salt

sLen

M

hLen

M’=

MGF

maskedDB

H

bc

8

emLen

Hash

Hash

salt

hLen

emLen-hLen-1

1

EM

H

?

H’

前頁より

emLen-hLen-1

処理概要

3.

抽出・比較部分

(69)

公開鍵暗号: RSA-PSS

署名検証機能試験(1)

試験項目

– JCATT

®

が与えた公開鍵(n, e),平文および署名,

ならびに指定されたハッシュ関数に対して,

IUT

が署名検証合格と判定すること。

– JCATT

®

が改竄した平文,署名,または公開鍵

に対して,

IUT

が署名検証不合格と判定するこ

と。

(70)

公開鍵暗号: RSA-PSS

署名検証機能試験(2)

申し込む際に必要な情報

公開鍵

nのビット長

1024, 1536, 2048, 3072, 4096

指数

eのタイプ選択

65537, ランダム

関数の選択

使用するハッシュ関数

SHA-1, SHA-256, SHA-384, SHA-512

マスク生成関数(MGF)

ANSI X9.44 SHA-1, ANSI X9.44 SHA-256,

ANSI X9.44 SHA-384, ANSI X9.44 SHA-512

その他

saltのビット長

署名生成と

異なる部分

(71)

公開鍵暗号: RSA-PSS

署名検証機能試験(3)

質問ファイル抜粋

[Bitlength of Modulus] 1024 [Hash] M_Hash_SHA256 [MGF] M_MGF_ANSI944_SHA256 [n] C35659997E98B59415B350905029D5F79A92FE 48C3E7501C1E255231765D91021D011F4E66A4 1609A80478D46678799D8A7ABEB7CDBD3F9434 DDA680A0078E0B410719FE5CEF0D472CDE9EBB 3E2F527A42E65AFDE0ECA644A86ED6C83CE20D F0ED4F376D6FB4105538E243F40E1282C821F5 7FF2ECA95F633F41849C11261D35 [Bitlength of Salt] 256 [Bitlength of Plaintexts] 1024 [Number of Signatures] 10 [e] 8a8566948c755b4ab205f1dab6cb65bc6ef4a7a26df3524b4f e821c6dd8b5cd6c368f8b9a29c0ec8ca6322f987908750d388 298e1bbf497b6c931f74852583850d9b150fa3c54e0144c94b f70b60071fb715a66f14d5c28735ad8a0aa697ee1342b96e73 229cc21e67e8c05ec62b09429c764d5a62ec48734ca1aa1291 ff83f9 --省略- -[Signatures] 3D99B7D1AA1D0274A8FF64BCEDFAB327D2806E8C093054886A 0C6002173DDB30F2C1F1482934E80D6C182A8DFD6B4439994F A8EF1C4D3A2E6AEB322623D73F62B153487167F13BF92D28E0 324E79B4E1C4B8E5C50DEE55B50D60931CA80CCF6EA9CDBDC5 7B08F657FB13BBFBE2DA86EB8EA3696C5D9892E5575224159D C7A8FD --省略- -[Plaintexts] 4E1049022DD3DEEFBD767592F70050F253AB3DBA91F4121ACD 90C9990D630A654ED343F94328CBE8594B1A96803DC0579C7D 56FD0DB976984EA529DFE136FDE2AD2DFF6C97657A5EF7664B AC46758BF81C96FCF040F89CC5FC192A1DF6F8AC38421B3E0C 28FFEFD8E49CCFDDD077439A867632E58A25B1DBF1D7CF3071 0435D2 --省略- -⇒法nのビット長。salt のビット長。 ⇒メッセージ のビット長。 ⇒署名, メッセージの ⇒公開鍵e。 ⇒署名。 ⇒メッセージ。 ⇒ハッシュ関数:SHA-256 ⇒MGF:ANSI X9.44 SHA-256 ⇒法n。

(72)

暗号モジュールの

暗号アルゴリズム実装試験セミナー

第3部:擬似乱数生成器

NIST SP800-90

(73)

擬似乱数生成器

承認されたセキュリティ機能

PRNG based on SHA-1 ANSI X9.42-2001 Annex C.1

PRNG based on SHA-1 for general purpose in FIPS 186-2

(+change notice 1) Appendix 3.1

PRNG based on SHA-1 for general purpose in FIPS 186-2

(+change notice 1) revised Appendix 3.1

Hash_DRBG, CTR_DRBG and OFB_DRBG in ISO/IEC 18031

– NIST SP800-90(Hash_DRBG, HMAC_DRBG, CTR_DRBG)

– NIST-Recommended Random Number Generator Based on

ANSI X9.31 Appendix A.2.4 Using the 3-key Triple DES and

AES Algorithms

※2008年2月18日に承認。

注意事項

JIS X 19790

7.7.1 乱数ビット列生成器 (RBG)

RBG 及びその動作モードは,

ISO/IEC 18031 に適合しなければならな

い。

(74)

擬似乱数生成器

ISO/IEC 18031適合の取扱い

JCMVP運用ガイダンス, 3.8.1. 擬似乱数生成器の仕様

背景

JIS X 19790 の細分箇条7.7.1 には「RBG 及びその動作

モードは, ISO/IEC 18031 に適合しなければなりません。」

と規定されています。

質問

ISO/IEC 18031 のHash_DRBGの内部関数Hashgen()内

のdata の取扱いやCTR_DRBGの内部関数

Block_Cipher_df()内の内部変数L,N,i の長さの取扱いなど

不明確な点が多い。そのため, どのように実装したらよいで

すか?

(75)

擬似乱数生成器

ISO/IEC 18031適合の取扱い

JCMVP運用ガイダンス, 3.8.1. 擬似乱数生成器の仕様

回答

ISO/IEC 18031 はANSI X9.82 の古いドラフト版を元に2005 年11 月

に作成されていますが, ANSI X9.82 の2007 年6 月ドラフト版を元に

NIST より SP800-90 Recommendation for Random Number

Generation Using Deterministic Random Bit Generators

(Revised_March 2007)が作成されています。

そのため, ISO/IEC 18031 の不明確な点を詳細に記述した仕様が

SP800-90 と考えられます。そこで,

Hash_DRBG とCTR_DRBG に関

してISO/IEC 18031 に適合するとは, SP800-90 に従ってそれらを実装

することと解釈します。

補足

このガイダンスはJIS X 19790 の暗号モジュールセキュリティ要件のみ

に適用されます。試験用提供物件に規格を明示する場合、ISO/IEC

18031 ではなく、NIST SP800-90 と記載して下さい。

(76)

擬似乱数生成器

NIST SP800-90について

NIST SP800-90

“Recommendation for Random Number

Generation Using Deterministic Random Bit

Generators (Revised)”

仕様

http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf

擬似乱数生成器

Hash_DRBG

←こちらについて説明

HMAC_DRBG

CTR_DRBG

Dual_EC_DRBG

←JCMVPでは承認されていない。

(77)

擬似乱数生成器:

DRBG(NIST SP800-90)の基本構成(1)

基本構成

内部状態

擬似乱数を生成するための元

データ(Seed等)を格納する。

エントロピー入力

擬似乱数を生成するための

Seedを作る元になる。

nonce

エントロピー入力とあわせ

てSeedを作る元になる。

その他の入力

additional input

reseed関数及びgenerate

関数が呼ばれる場合に使

用される。オプション。

personalization string

DRBGのインスタンスを特

徴付ける文字列。

関数群

1.

Instantiate関数

エントロピー入力から内部状態

を生成する

2.

Reseed関数

内部状態とエントロピー入力か

ら内部状態を更新する。

3.

Generate関数

擬似乱数を出力する。

4.

Uninstantiate関数

内部状態を削除する。

5.

Health test関数

DRBGが正しく動いているか診

断する。

※上記1,2,3については, それぞれ対応する 下位アルゴリズムを呼出す。下位アルゴ リズムは、Hash_DRBG、 HMAC_DRBG、CTR_DRBG、 Dual_EC_DRBGのそれぞれで異なる。

参照

関連したドキュメント

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

1号機 2号機 3号機 4号機 5号機

・ 改正後薬機法第9条の2第1項各号、第 18 条の2第1項各号及び第3項 各号、第 23 条の2の 15 の2第1項各号及び第3項各号、第 23 条の

2 号機の RCIC の直流電源喪失時の挙動に関する課題、 2 号機-1 及び 2 号機-2 について検討を実施した。 (添付資料 2-4 参照). その結果、

章番号 ページ番号 変更後 変更前 変更理由.. 1 補足説明資

さらに、1 号機、2 号機及び 3

Ⅲで、現行の振替制度が、紙がなくなっても紙のあった時に認められてき

アクセス・調査装置 遮へい付 接続管 隔離弁.