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

各種制約

ドキュメント内 調査: テストケース設計書 (ページ 148-172)

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 )   制約とサブジェクトのエンコーディングが不一致 

ドキュメント内 調査: テストケース設計書 (ページ 148-172)

関連したドキュメント