4 オリジナルテスト
4.3 テスト項目
4.3.6 各種制約
受け入れポリシ org- polic y- 1 init- polic y- mapping- inihibit default(false) init- explic it- polic y true
init- any- polic y- inhibit default(false)
( 4) 証明書パス中の証明書ポリシが正しくマッピングされてないケース
polic y- X polic y- B2 issuerDomainPolic y
subjec tDomainPolic y
polic y- B polic y- Y C A- X - > BC A BC A - > C A- Y polic y- X
user- initial-polic y- set
E E - Y c ertitic atePolic y
polic y- X polic y- B polic y- Y
c ertific atePolic y
(a) テストケース名
policyMapping-accept (b) 認証パス
認証パス : 3000702 subjec t
中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 3000721 3000020 3000020
<相互認証証明書> CA3 3000712 3000030 3000030
<署名者証明書> CA3-EE 3000799 なし なし (c) パス検証における入力値
期待値 1
受け入れポリシ org- polic y- 1 init- polic y- mapping- inihibit default(false) init- explic it- polic y true
init- any- polic y- inhibit default(false)
証局へと発行する相互認証証明書に名前制約を含めることを必須としている。
また、GPKI では特に必須としていないが、認証パスの長さを制限するために、
パス長制約がX.509で定義されている。
本テスト項目では、EEがこれら各種制約を含めた認証パスの構築・検証を行い、
署名データを正しく検証できることを確認する。
( 1) 証明書パスの長さを制約したケース
polic y- X polic y- B issuerDomainPolic y
subjec tDomainPolic y
polic y- B polic y- Y C A- X - > BC A BC A - > C A- Y polic y- X
user- initial-polic y- set
E E - Y c ertitic atePolic y
polic y- X polic y- B polic y- Y
c ertific atePolic y
c onstraints pathLen=0
(a) テストケース名 pathLenConstraint (b) 認証パス
認証パス : 3000801 subjec t
中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 3000811 3000020 3000020
<相互認証証明書> CA3 3000712 3000030 3000030
<署名者証明書> CA3-EE 3000799 なし なし (c) パス検証における入力値
期待値 1
受け入れポリシ org- polic y- 1 init- polic y- mapping- inihibit default(false) init- explic it- polic y true
init- any- polic y- inhibit default(false)
( 2) 証明書パス中の証明書ポリシを制約したケース
C A- X - > BC A BC A - > C A- Y NULL
user- initial-polic y- set
E E - Y c ertitic atePolic y
NULL NULL polic y- X
c ertific atePolic y
requireE xplic it Polic y=0 c onstraints
(a) テストケース名 policyConst-rEP (b) 認証パス
認証パス : 3000901 subjec t
中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 3000911 3000020 3000020
<相互認証証明書> CA3 3000912 3000030 3000030
<署名者証明書> CA3-EE 3000699 なし なし (c) パス検証における入力値
期待値 1
受け入れポリシ org- polic y- 1 init- polic y- mapping- inihibit default(false) init- explic it- polic y true
init- any- polic y- inhibit default(false)
( 3) 証明書パス中でのポリシマッピングを制約したケース
polic y- X polic y- B issuerDomainPolic y
subjec tDomainPolic y
polic y- B polic y- Y C A- X - > BC A BC A - > C A- Y polic y- X
user- initial-polic y- set
E E - Y c ertitic atePolic y
polic y- X polic y- B polic y- Y
c ertific atePolic y
c onstraints
inhibitPolic y Mapping=0
(a) テストケース名 policyConst-iPM (b) 認証パス
認証パス : 3001001 subjec t
中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 3001011 3000020 3000020
<相互認証証明書> CA3 3000712 3000030 3000030
<署名者証明書> CA3-EE 3000799 なし なし (c) パス検証における入力値
期待値 1
受け入れポリシ org- polic y- 1 init- polic y- mapping- inihibit default(false) init- explic it- polic y true
init- any- polic y- inhibit default(false)
( 4) 証明書パス中での名前空間を制約したケース
c =J P, o=XXX c=J P, o=BC A Issuer
S ubject
c=J P, o=BC A c =US , o=Y Y Y
c=US , o=Y Y Y c=US , o=Y Y Y ,
c n=E E C A - X - > BC A BC A - > C A - Y E E - Y
c onstraints
permitted S ubtree= c =J P
(a) テストケース名 nameConst (b) 認証パス
認証パス : 3001101 subjec t
中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 3001111 3000020 3000020
<相互認証証明書> CA3 3001112 3001130 3001130
<署名者証明書> CA3-EE 3001199 なし なし (c) パス検証における入力値
期待値 1
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
4. 3. 7 DNのエンコードに関連するテストケース
DNのエンコード問題には大きく2箇所の部分で発生すると考えられる。
( 1) 各種制約の評価
2003年12 月31日以降、DNのエンコーディングにはUTF8が使用される。
この変更により、自己署名証明書を自己署名と認識しなくなる可能性がある。
本テストは RFC3280 のパス検証アルゴリズムの記述から名前を参照している部 分を抜き出し、ブラックボックステストを行う。
以下はRFC3280(日本認証サービス翻訳)からの関連部分の抜粋である。
6.1.3 基本証明書処理
b) 証明書iが自己発行であり、パスの中の最後の証明書でないならば、証明書 i のためのこのステップをスキップせよ。そうでないならば、サブジェクト名 が、X.500識別名のpermitted_subtreesの一つの中にあることを検証せよ、そ
して、subjectAltName拡張(クリティカルないしノンクリティカル)の中の各々
の代替名が、その名前タイプに対するpermitted_subtreesの一つの中にあるこ とを検証せよ。
c) 証明書iが自己発行であり、パスの中の最後の証明書でないならば、証明書 i のためのこのステップをスキップせよ。そうでないならば、サブジェクト名
が、X.500の識別名のexcluded_subtreesの一つの中にないことを検証せよ、
そして、subjectAltName 拡張(クリティカルないしノンクリティカル)の中の
各々の代替名が、その名前タイプに対するexcluded_subtreesの一つの中にな
6.1.4 証明書i+1の準備
h) 発行者とサブジェクトの名前が等しくないならば:
explicit_policy が 0 で な い な ら ば 、explicit_policy を 1 だ け 引 け 。 policy_mapping が 0 で な い な ら ば 、policy_mapping を 1 だ け 引 け 。 inhibit_any-policyが0でないならば、inhibit_any-policyを1だけ引け。
l) その証明書が自己発行されたものでなかったならば、max_path_lengthが0 より大きいことを検証して、max_path_lengthを1だけ引け。
6.1.5 まとめの手続
証明書 n が、自己発行されたものではなく、explicit_policy が、0に等しくな いならば、explicit_policyを1だけ引け。
これらの記述により、以下の拡張項目が影響を受ける。
- NameConstraints - PolicyConstraints - PolicyMappings - BasicConstraints
(a) Bas i c Cons t r ai nt s
検証パス中に現れる自己署名証明書はDNのエンコーディングの如何に関わ らず、パスの長さ制約に含まれないことを確認する。
公開鍵 B S ubjec t: C A(UT F 8) Issuer: C A(Printable)
pathL enC onstraints=1
公開鍵 C S ubjec t: E E 00(any)
Issuer: T A(UT F 8)
pathL enC onstraints=0 公開鍵 A
S ubjec t: C A(P rintable) Issuer: T A(P rintable)
pathL enC onstraints=1
公開鍵 E S ubjec t: C A(Printable)
Issuer: C A(UT F 8)
pathL enC onstraints=1
公開鍵 F S ubjec t: E E 01(any) Issuer: T A(P rintable)
pathL enC onstraints=0 公開鍵 D
S ubjec t: C A(UT F 8) Issuer: T A(P rintable)
pathL enC onstraints=1
( i ) Pr i nt abl e→UTF8 で失敗するケース (イ) テストケース名
NameRollOverWithBasicConstraints-01-01
(ロ) テスト目的
CAに関して、Name rolloverさせた結果、pathLenConstraintが正しく 減算されることを確認する。テスト結果の期待値は失敗
(ハ) 認証パス
認証パス:3001201 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 Op/ C A1 3001211 Op/ Op 3000020
CA2 Nu/ Op 3001212 Nu/ Nu 3001220 3001220
<署名者証明書> CA2-EE 3001299 なし なし
(ニ) パス検証における入力値
期待値 1
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
( i i ) Pr i nt abl e→UTF8 で成功するケース (イ) テストケース名
NameRollOverWithBasicConstraints-01-02 (ロ) テスト目的
CAに関して、Name rolloverさせた結果、pathLenConstraintが正しく 減算されることを確認する。テスト結果の期待値は成功
(ハ) 認証パス
認証パス:3001202 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 Op/ C A1 3001221 Op/ Op 3000020
CA2 Nu/ Op 3001212 Nu/ Nu 3001220 3001220
<署名者証明書> CA2-EE 3001299 なし なし
期待値 0
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
( i i i ) UTF8→Pr i nt abl e で成功するケース (イ) テストケース名
NameRollOverWithBasicConstraints-02-01 (ロ) テスト目的
CAに関して、Name rolloverさせた結果、pathLenConstraintが正しく 減算されることを確認する。テスト結果の期待値は失敗
(ハ) 認証パス
認証パス:3001301 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 Ou/ C A1 3001311 Ou/ Ou 3000022
CA2 Np/ Ou 3001312 Np/ Np 3000021 3000021
<署名者証明書> CA2-EE 3001399 なし なし
(ニ) パス検証における入力値
期待値 1
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
( i v) UTF8→Pr i nt abl e で失敗するケース (イ) テストケース名
NameRollOverWithBasicConstraints-02-02 (ロ) テスト目的
CAに関して、Name rolloverさせた結果、pathLenConstraintが正しく 減算されることを確認する。テスト結果の期待値は成功
(ハ) 認証パス
認証パス:3001302 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 Ou/ C A1 3001321 Ou/ Ou 3000022
CA2 Np/ Ou 3001312 Np/ Np 3000021 3000021
<署名者証明書> CA2-EE 3001399 なし なし
(ニ) パス検証における入力値
期待値 0
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false) (b) NameCons t r ai nt s
制約とサブジェクトに使用されているDNのエンコーディングがずれている 場合の挙動を確認する。
テストの項目としてはBasicConstraintsと同様に、自己署名であるかの判定関 連があり、制約とDNのマッチング問題、制約の更新問題の3点である。
( i ) 中間にある自己署名証明書に関するテスト(中間エンコーディング不一致)
公開鍵 G S ubjec t: C A(UT F 8) Issuer: T A(P rintable)
permittedS ubtrees={
O=Org(UT F 8),C =J P }
公開鍵 H S ubjec t: C A(Printable)
Issuer: C A(UT F 8)
公開鍵 I S ubjec t: E E 03(UT F 8) Issuer: C A(P rintable)
公開鍵 J S ubject: C A(P rintable)
Issuer: T A(P rintable)
permittedS ubtrees={
公開鍵 K S ubjec t: C A(UT F 8) Issuer: C A(Printable)
公開鍵 L S ubjec t: E E03(P rintable)
Issuer: C A(UT F 8)
(イ) NameRollOverWithNameConstraints-02-01 I. テストケース名
NameRollOverWithNameConstraints-02-01 II. テスト目的
CAに関して、Name rolloverさせた結果、NameConstraintsの処理に 関して、パスの中間に存在する自己署名を認識し、NameConstraintに関 する処理を無効化できるか確認する。テスト結果の期待値は成功。
III. 認証パス
認証パス:3001401 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 O/ C A1 3001411 O/ O 3000022
CA2 N/ O 3001312 N/ N 3000021 3000021
<署名者証明書> CA2-EE 3001499 なし なし
IV. パス検証における入力値
期待値 1
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false) (ロ) NameRollOverWithNameConstraints-02-02
I. テストケース名
NameRollOverWithNameConstraints-02-02 II. テスト目的
CAに関して、Name rolloverさせた結果、NameConstraintsの処理に 関して、パスの中間に存在する自己署名を認識し、NameConstraintに関 する処理を無効化できるか確認する。テスト結果の期待値は成功。
III. 認証パス
認証パス:3001401 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 O/ C A1 3001421 O/ O 3000020
CA2 N/ O 3001212 N/ N 3001220 3001220
<署名者証明書> CA2-EE 3001498 なし なし
IV. パス検証における入力値
期待値 0
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
( i i ) 制約とサブジェクトのエンコーディングが一致
公開鍵 O S ubjec t: C A(UT F 8) Issuer: T A(P rintable)
permittedS ubtrees={
O=Org(P rintable),C =J P }
公開鍵 P S ubjec t: E E 03(UT F 8)
Issuer: C A(UT F 8)
(イ) NameRollOrverWithNameConstraints-03-01 I. テストケース名
NameRollOrverWithNameConstraints-03-01 II. テスト目的
NameConstraintのエンコーディングとサブジェクトのエンコーディン
グがあっていない場合の挙動を確認する。期待値は成功。
III. 認証パス
認証パス:3001501 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 P u 3001411 3000022 3000022
<署名者証明書> EE Iu, S u 3000299 なし なし
IV. パス検証における入力値
期待値 0
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false) (ロ) NameRollOrverWithNameConstraints-03-04
I. テストケース名
NameRollOrverWithNameConstraints-03-04 II. テスト目的
NameConstraintのエンコーディングとサブジェクトのエンコーディン
グがあっていない場合の挙動を確認する。期待値は成功。
III. 認証パス
認証パス:3001504 subjec t 中間 証明書#
自己署名 証明書#
C R L #
<トラストアンカ証明書> CA1 なし 3000010 3000010
<相互認証証明書> CA2 P p 3001521 3000022 3000022
<署名者証明書> EE S p, Iu 3001599 なし なし IV. パス検証における入力値
期待値 0
受け入れポリシ
init- polic y- mapping- inihibit default(false) init- explic it- polic y default(false) init- any- polic y- inhibit default(false)
( i i i ) 制約とサブジェクトのエンコーディングが不一致