デジタル署名-PKCS#7からXML -DSIGを取り外しました
-
22-09-2019 - |
質問
私は次のシナリオに苦労しています:
XML-Messageが作成され、Mozillaのwindow.crypto.signtextを使用してデジタルで署名されます。署名後、メッセージと署名はWebサービス(.NET)を介してサーバーに送信されます。この時点まではすべて問題ありません。
サーバーでは、XMLを別のXML-Documentに含めて、公開されます。署名は、非控除を付与するためにも公開する必要があります。
Q:分離したPKCS#7をXML-DSIG(.NETフレームワーク内の機能)に変換するスムーズなオプションはありますか?
Q2:外部プラグインを使用せずに、すでにクライアント側にXML-DSIGを作成することは可能ですか?
あなたの助けのためのtnx!
アロイス・ポーリン
解決
XMLとPKCS#7の両方のデジタル署名形式の性質により、一方から他方に変換することはできません。
非常に単純化された説明では、署名 PKCS#7 フォーマットには、他のものの中でも、データダイジェストとOID(オブジェクト識別子)を含むDigestINFOと呼ばれる特定のデータ構造が含まれており、ユーザーの秘密キーで微分されています。 xml-dsig Formatは、暗号化アルゴリズムの最終ステップ(ユーザーの秘密キーを使用)を適用します。元のXMLデータと特定のXML-DSIGデータ構造の消化から計算された異なるデータ値に適用されます。したがって、両方の暗号化された値は同じではないため、ユーザーのプライベートキーにデータに署名することにより、XML-DSIG署名を生成することのみが可能です。
その説明から、あなたの最初の質問への答えは 「いいえ、スムーズな選択肢はありません。まったく不可能です」.
したがって、唯一のオプションは、クライアント側でXML-DSIGを直接生成することです。標準のJavaScriptを使用しては不可能ですが、Firefoxのwindow.crypto(PKCS7デタッチされた署名のみを生成するだけです)ではありません。私の会社で(www.isigma.es)、アプレットを使用することにより、それはデジタル署名業界で一般的なソリューションであることを解決します(多くの商業的およびいくつかのオープンソースソリューションもあります)。ブラウザプラグインが必要ない場合、それはあなたの場合のオプションではないかもしれません。
Capicom(Microsoftセットアップで使用できるWindowsベースのアクティブ/Xコンポーネント)は、XML-DSIGを生成せず、CMS/PKCS7のみを生成します。