0

検証をスキップした後、GACからインストールおよびロードできる遅延署名付きアセンブリのセットを使用しています(sn -Vr * .. ..

プロセスとしての遅延署名には公開鍵ファイルのみが必要なので

  1. sn -k keys.snk(公開鍵と秘密鍵の両方)
  2. sn -p keys.snk pkey.snk(公開鍵のみ)
  3. プロジェクトのプロパティにpkey.snkを追加し、[遅延記号のみ]をオンにします
  4. sn -v(アセンブリが遅延署名されていることを表示します)
  5. sn -e(pkeyを抽出)
  6. fc(差分が見つかりません)

SNKファイルの最初の160バイトはPKey ...であり、残りの436バイトは秘密鍵を表していることがわかりました。

開発目的では、sn-Vrまたはsn -R keys.snk(遅延署名されたものを置き換える新しい公開/秘密鍵のペア)で十分ですが、アセンブリから公開鍵を抽出してペアリングするかどうかを知りたいです。あなた自身の秘密鍵でうまくいくでしょう...

これは潜在的なセキュリティの抜け穴である可能性があります(アセンブリは公開鍵トークンで検索されるため)...これを可能にする組み込みツールが.Net Framework/SDKにないのも不思議ではありません。

SNKファイル構造(ファイル形式)全体が文書化されているところはありますか?このアプローチは、一般的に機能しますか?どう思いますか?

4

1 に答える 1

1

誰かがランダムなキーペアを生成し、キーペアの公開キーを別のアセンブリの公開キーに置き換えてから、自分のアセンブリに署名してその公開キーを使用することを懸念しているようです。

これは機能しません。
キーペアの公開鍵は秘密鍵から暗号的に導出され、アセンブリは正しい秘密鍵を使用してのみ計算できる値で署名されます。
各秘密鍵は異なる署名を生成し、それらは互換性がありません。

詳細については、こちらを参照してください。

于 2009-12-23T01:37:08.740 に答える