0

作成したXMLファイルに署名したいと思います。署名するには、このチュートリアルに従います。

http://msdn.microsoft.com/en-us/library/ms229745.aspx

ファイルの検証に関するこのチュートリアルも読みました。

http://msdn.microsoft.com/en-us/library/ms229950.aspx

両方とも問題なく正しくコンパイルできましたが、これを使用して、偽造されていないことが保証されているXMLを生成できるということはわかりません。

私の考え(これは間違っており、修正する必要があります):XMLを作成し、それらのチュートリアルのコードを使用して署名します。そのコードを使用して確認することもできます。問題ありません。XMLを変更したときに機能して検出します。しかし、他の誰かがチュートリアルからコードを取り出して、独自のXMLを作成し、それを自分で署名して、私のプログラムで使用できないのはどうしてですか?検証プログラムはまだそれを検証しませんか?

4

3 に答える 3

2

このチュートリアルでは、RSA署名キーを使用します。

signedXml.SigningKey = Key;

このリンクは次のように述べています。

RSACryptoServiceProviderクラスを使用して非対称キーを生成します。CspParametersオブジェクトをRSACryptoServiceProviderクラスのコンストラクターに渡すと、キーがキーコンテナーに自動的に保存されます。

この例を実行すると、新しいRSAキーが作成され、ローカルマシンのキーコンテナに保存されました。RSA鍵には、署名用の秘密鍵と署名を検証するための公開鍵が含まれています。公開鍵は、署名されたメッセージを確認する必要があるすべての人に配布できます。公開鍵は通常、証明書を使用してパッケージ化および配布されます

あなただけが秘密鍵を所有していると仮定すると、受信者は公開鍵を持っている(そして実装が安全であると仮定して)、検証ステップがその改ざんを検出しない限り、誰もその署名された文書を改ざんすることはできません。

同じサンプルを実行している他の人は、公開鍵が検証するドキュメントに署名するために使用できない新しい一意のRSA鍵を生成する必要があります。

于 2012-05-23T00:35:50.823 に答える
2

これらのチュートリアルが機能する理由を理解するには、2つの背景情報を理解する必要があります。

これらの記事を少し読んだら、次の図を見てください。

デジタル署名図 ウィキペディアから取られた図(具体的には、ここ

于 2012-05-23T00:41:43.007 に答える
0

どちらのリンクも、検証を示す記事を参照しています。非対称キーがどのように機能するかを読むことでメリットが得られます。XMLに署名するときは、自分だけがアクセスでき、誰もが利用できる公開鍵だけが復号化できる秘密鍵を使用して署名します。あなた以外の誰もあなたの秘密鍵を持っているでしょう。

于 2012-05-23T00:29:23.900 に答える