1

次のシナリオに苦労しています。

  1. XML メッセージはクライアント側で作成され、mozilla の window.crypto.signText を使用してデジタル署名されます。署名後、メッセージと署名は Web サービス (.net) 経由でサーバーに送信されます。この時点まではすべて問題ありません。

  2. サーバー上で、XML は、公にアクセス可能な別の XML ドキュメントに含まれるものとします。否認防止を付与するために、署名も公開する必要があります。

Q: 切り離された Pkcs#7 を XML-DSIG (.net フレームワーク内の機能など) に変換するスムーズなオプションはありますか?

Q2: または、外部プラグインを使用せずに XML-DSIG をクライアント側で作成することは可能ですか?

あなたの助けのためのTnx!

アロイス・ポーリン

4

1 に答える 1

4

デジタル署名フォーマット XML と PKCS#7 の両方の性質上、一方から他方への変換はできません。

非常に簡単に説明すると、PKCS#7形式の署名には、とりわけ、データ ダイジェストと OID (オブジェクト識別子) を含む DigestInfo と呼ばれる特定のデータ構造が含まれており、ユーザーの秘密鍵で暗号化されています。XML-Dsig形式は、元の XML データと特定の XML-DSig データ構造のダイジェストから計算された別のデータ値に、暗号化アルゴリズムの最終ステップ (再びユーザーの秘密鍵を使用) を適用します。したがって、両方の暗号化された値は同じではないため、ユーザーの秘密鍵を使用してデータに署名することによってのみ、XML-DSig 署名を生成することができます。この秘密鍵にはアクセスできません (したがって名前は private です)。

その説明から、最初の質問に対する答えは、「いいえ、スムーズなオプションはありません。まったく不可能です」 .

したがって、唯一のオプションは、クライアント側で XML-DSig を直接生成することです。これは、標準の Javascript では不可能であり、Firefox の window.crypto (PKCS7 分離署名のみを生成する) では不可能です。私の会社 ( www.isigma.es ) では、デジタル署名業界では一般的なソリューションであるアプレットを使用して解決しています (多くの商用ソリューションと、いくつかのオープン ソース ソリューションがあります)。ブラウザのプラグインが必要ない場合、これはオプションではないかもしれません。

CAPICOM (Microsoft セットアップで使用できる Windows ベースの Active/X コンポーネント) も XML-DSig を生成せず、CMS/PKCS7 のみを生成します。

于 2010-03-24T00:44:25.153 に答える