リソースの署名、検証、復号化、暗号化
XMLリソースは署名することができ、署名は検証、復号化、暗号化を行うことができます。Windows証明書ストアまたは Javaキーストアのキーも使用できます。
|
任意のユーザーとしてテストするには、以下の要件を満たす必要があります。
|
Windows証明書ストアとJavaキーストア
Windows証明書ストアまたはJavaキーストアに保存された証明書(鍵)は、「 CertificateData 」モジュールで使用できます。
ModuleAttribute「 Certificate 」には、以下の2つの特殊化が含まれています: CertificateStoreDataとJavaKeyStoreData 。特殊化は、テストケース(see chapter "一般化と特別化")の作成中に選択されます。
特殊化に関しては、Modules CertificateStoreData と JavaKeyStoreData をご利用ください。
これらのモジュールは標準サブセットの一部です。「 Standard modules」->「Engines」->「Parameter data 」の下にあります。
CertificateStoreData
通常の範囲のタスクでは、証明書ストア(LocalMachineまたはCurrentUser)に「 StoreLocation 」ModuleAttributeが使用されます。一方、ModuleAttribute「 StoreName 」(有効な指定のリストは http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspxにあります)とModuleAttribute「 FindOptions 」は、どの証明書が使用されるかを特定します。
署名や復号などの操作には、秘密鍵へのアクセスが必要です。Windowsではアクセスを制限することができます。現在のユーザーに必要な権限がない場合は、ここで別のユーザーを指定できます。
|
この例では、ユーザ固有の証明書ストア「 CurrentUser 」内のストア「 My 」にある証明書が指定されています。 これはサムプリントで識別され、ModuleAttribute「 FindType」の値は「 FindByThumbprint 」に設定され、ModuleAttribute「FindValue 」は鍵の具体的な値を用いて指定されます。
Windows証明書ストアの使用例 |
JavaKeyStoreData
特殊化 JavaKeyStoreData を使用する場合、一意の鍵を選択するには、ModuleAttributeの「 StoreFile 」、「 StorePassword 」、「 KeyAlias」、「KeyPassword 」が必要です。
|
この例では、テストステップの値「 StoreFile 」を使用して、キーストアのファイルへのパスを指定しています。キーストアのパスワードは「 StorePassword 」で指定し、鍵のアクセスパラメータは「 KeyAlias 」と「 KeyPassword 」で指定します。
Javaキーストアの使用例 |
XML署名を作成する
XML署名は、データの完全性と作成者を保証するために使用します。Toscaは、xml-dsig標準に準拠したXML署名をサポートしています(http://www.w3.org/TR/xmldsig-core/も参照してください)。署名も秘密鍵を使用して作成されます。データの受取人は、対応する公開鍵を用いてその有効性を確認することができます。
Windows証明書ストアまたは Javaキーストアからの証明書を使用して、SignXML resourceModule でXMLリソースに署名できます。このモジュールは標準サブセットの一部です。「 Standard modules」->「Engines」->「XML 」の下にあります。
署名タイプは、 Enveloped 型と Enveloping 型の両方に対応しています。
Module「 Sign XML Resource 」には、XMLリソースに署名するために必要なすべてのModuleAttributeが含まれています。
これには、ModuleAttribute「 Certificate 」による使用証明書の指定と、ModuleAttribute「 Signature 」による署名の詳細の指定が含まれます。署名鍵の公開鍵は、属性「 IncludeKeyInfo 」からも提供できます。これにより、受信者は署名を確認することができます。
ModuleAttribute「 Certificate 」は、以下の2つの特殊化を受け取ることができます: Javaキーストアには JavaKeyStoreData 、Windows証明書ストアには CertificateStoreData 。
|
この例では、リソース「 library 」の最後のブックが署名され、その結果がリソース「 signedLibrary 」に保存されます。さらに、ModuleAttribute「 FindOptions 」の鍵は、サムプリントを介して、ユーザーの証明書ストアから取得されます。署名はenveloping 型で作成されます。署名されたオブジェクトは、XPathの book[last()] を介して見つかった最後のブックです。
テストケースのサンプル |
XML署名を確認する
Module「 Verify Signed XML Resource 」は、署名付きXMLを確認する際に使用します。
このモジュールは標準サブセットの一部です。「 Standard modules」->「Engines」->「XML 」の下にあります。
ModuleAttribute「 Certificate 」は、以下の2つの特殊化を受け取ることができます: Javaキーストアには JavaKeyStoreData、Windows証明書ストアにはCertificateStoreData 。両方の特殊化のより正確な説明は、
|
この例では、リソース「 signedLibrary 」が検証されています。検証の期待される結果は、パラメータ「 ExpectedResult 」で指定されます。
テストケースのサンプル |
XMLコンテンツの暗号化と復号化
暗号化はデータの安全性を保証します。Toscaは、対称暗号化方式AESと、非対称暗号化方式RSAP-OAEPおよびRSA1.5をサポートしています。W3の「XML Encryption Syntax and Processing(XML暗号化構文と処理)」という題名の勧告に従って、XMLコンテンツは以下の表に示すように暗号化することができます: http://www.w3.org/TR/xmlenc-core/ 。
セッション鍵はRSAP-OAEPまたはRSA 1.5で暗号化され、データはAES-WRAP(http://www.w3.org/TR/xmlenc-core/)で暗号化されます。そのアルゴリズムは以下の表のとおりです。
|
対称暗号化でサポートされているアルゴリズム |
|---|
|
AES-128 |
|
AES-192 |
|
AES-256 |
データを暗号化するには、 ModuleEncrypt XML Resource を使用してください。
データを復号するには、 ModuleDecrypt XML Resouce を使用してください。
これらのモジュールは標準サブセットの一部です。「 Standard modules」->「Engines」->「XML」->「Encryption 」の下にあります。
対応している暗号化の粒度
スーパー暗号化を除き、 http://www.w3.org/TR/xmlenc-core/#sec-eg-Granularity に記載されているすべての粒度タイプに対応しています。
-
要素の暗号化
-
要素コンテンツの暗号化
-
データとXMLドキュメントの暗号化
ModuleAttribute「 XPath 」を使用して、この粒度を構造化できます。ModuleAttributeが空の場合、ドキュメント全体が自動的に暗号化されます。
鍵は、プレーンテキストまたは16進数で作成することも、Windows証明書ストアからインポートすることもできます。
まず、 TestStepValueEncryptionMethod に対してテストケースで特殊化を選択する必要があります。
-
証明書ストア(see chapter "Windows証明書ストアとJavaキーストア")による暗号化には、特殊化 SessionKeyEncryption を有効にする必要があります。
-
対称暗号化に対しては、特殊化 SymmetricKeyEncryption を有効にする必要があります。
テストステップの値「 KeyType 」は対称暗号化用で、特殊化 PlainTextSymmetricKeyとHexCodeSymmetricKey が含まれています。どちらの特殊化もプレーンテキストおよび16進コード用です。
PlainTextSymmetricKey の長さは、AES暗号化タイプの鍵長とバイト単位で一致する必要があります。
|
暗号化タイプ「 AES-128 」を選択した場合、鍵(PlainTextSymmetricKey)は「 16 」文字(16バイトは128ビットに相当)で構成されている必要があります。
|
プレーンテキストでの暗号化
16進値での暗号化
Windows証明書ストアからインポートした鍵での暗号化
復号化は暗号化と同じように機能します。暗号化されたノードは自動的に識別されるため、テストステップの値「 XPath 」を指定する必要はありません。
ModuleAttribute「 EncryptionMethod 」は、暗号化と同様の方法で使用されます。
モジュール「 Decrypt XML Resource 」
|
この例には以下のステップが含まれています。
暗号化と復号化のサンプルワークフロー |