質問

OK http://www.csharp411.com/ net-assembly-faq-part-3-strong-names-and-signing /

それでもまだわかりません...

プロジェクトのプロパティを開いて、「署名」に移動するとしましょう。タブをクリックし、[アセンブリに署名する]をオンにします。パスワードを使用して新しいアセンブリを生成します。公開キーと秘密キーの両方を含む.pfx拡張子を持つ厳密な名前のキーファイルが作成され、VSはコンパイル時にアセンブリにデジタル署名しますか?

秘密鍵はどうですか?プライベートにすべきではなく、開発者である私だけがそれを持つべきでしょうか?アセンブリは公開鍵のみで署名されるべきではありませんか?

これを私に説明できますか?基本的に、プロジェクトのアセンブリに署名し、ユーザーが自分でアセンブリを開発したかどうかを確認できるようにします(秘密キーを保持するのは私だけだと思います)。

役に立ちましたか?

解決

あなたは基本的に正しい。

キーペアを作成し、署名に使用します。ただし、pfx(またはsnk)ファイルは出荷しないでください。このファイルには公開鍵と秘密鍵の両方が含まれているため、安全に保管する必要があります。

公開鍵は、署名プロセスの一部としてアセンブリに追加されます。

アセンブリにアプリケーションが読み込まれると、この署名がチェックされます。エンドユーザーはGACで公開キートークンを確認することもできますが、実際には便利なプロセスではありません。そして、何らかの方法で公開鍵トークンを伝える必要があります。

そして、全体は、キーファイルをプライベートに保つ能力と同じくらい信頼性が高いだけです。

また、理想的には、会社ごとに1つのキーしか持たないことに注意してください。 (多くの)同僚と共有することに不安がある場合は、遅延署名を調査してください。

他のヒント

デジタル署名では、バイナリのハッシュを計算し、生成したキーペアの秘密キーを使用して生成されたハッシュを暗号化します。これに加えて、VSは公開キーもアセンブリに追加します。これがクライアント側で実行されると、ランタイムはアセンブリの公開キーを使用して署名(ハッシュ)を解読し、これをクライアントでバイナリの計算されたハッシュと照合します。一致する場合、バイナリが改ざんされていないことを意味します。

アセンブリ署名は、公開鍵暗号方式(PKI)に基づいています。簡単に言うと、PKIで何かに暗号で署名する場合、秘密鍵は署名に使用されますが、公開鍵は署名の検証に使用されます。秘密鍵を使用して署名を検証することはできません。作成するだけです。公開鍵を使用して署名を作成することはできません。検証のみを行ってください。

それを考えると、秘密鍵を安全かつ秘密に保つことが非常に重要です。最高レベルのセキュリティを維持し、最高レベルの信頼性を顧客に提供する場合は、おそらく遅延署名を使用し、1人の個人または部門が完全な公開/秘密キーペアの管理を担当することをお勧めします。 。開発者は秘密鍵にアクセスできないようにし、遅延署名オプションを使用して、セキュリティと信頼性を損なうことなく厳密な名前のアセンブリを開発できます。

署名=秘密鍵を使用してアセンブリのSHA1ハッシュを暗号化する
検証= PublicKeyで復号化された署名と計算されたアセンブリのハッシュとの比較

したがって、PublicKeyを持つユーザーはアセンブリを検証できますが、PrivateKeyを持つ作成者のみがアセンブリに署名できます。

PublicKeyトークン= PublicKeyのSHA1ハッシュのリトルエンディアンバイト順の最後の64ビット。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top