10

自動更新機能を実装していますが、ベストプラクティスを使用してこれを安全に行う方法についてアドバイスが必要です。ダウンロードしたファイルのAuthenticode署名を使用して、安全に実行できることを確認したいと思います(つまり、当社が作成したものであり、改ざんされていないことを確認します)。私の質問は質問#2008519と非常によく似ています。

結論としての質問:自動更新機能のAuthenticode署名をチェックするための最良で最も安全な方法は何ですか?証明書のどのフィールドをチェックする必要がありますか?要件は次のとおりです。(1)署名が有効であることを確認し、(2)署名であることを確認し、(3)証明書の有効期限が切れて新しい証明書を取得しても、古いクライアントは引き続き更新できます。

これが私の研究からのいくつかの背景情報/アイデアです:これは2つのステップに分けることができると私は信じています:

  1. 署名が有効であることを確認します。http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspxで概説されているように、これはWinVerifyTrustを使用して簡単にできるはずです-ここでは問題はないと思います。

  2. 署名が他の会社ではなく、当社に対応していることを確認してください。これは答えるのがより難しい質問のようです:

1つの可能性は、署名の文字列の一部をチェックすることです。MS KBの記事#323809のコードを介して取得できますが、この記事では、このタイプのアプリケーション(またはその他のアプリケーション)でチェックする必要のあるフィールドについては推奨していません。 質問#1072540は、証明書情報を取得する方法も示していますが、実際に確認するフィールドは推奨されていません。私の懸念は、文字列が最善のチェ​​ックではない可能性があることです。たとえば、別の人が同じ名前の証明書を取得できる場合はどうなりますか?または、将来的に文字列を変更する正当な理由がある場合はどうなりますか?

質問#2008519の人には、非常によく似た要件があります。彼の「TrustedByUs」関数の必要性は私のものと同じです。ただし、彼は公開鍵を比較してチェックを行います。これは短期的には機能しますが、自動更新機能では機能しないようです。これは、コード署名証明書が有効なのは最大2〜3年であるためです。したがって、将来、2年以内に新しい証明書を購入すると、公開鍵の変更により、古いクライアントはそれ以上更新できなくなります。

4

1 に答える 1

4

質問#2008519の人には、非常によく似た要件があります。彼の「TrustedByUs」関数の必要性は私のものと同じです。ただし、彼は公開鍵を比較してチェックを行います。これは短期的には機能しますが、自動更新機能では機能しないようです。これは、コード署名証明書が有効なのは最大2〜3年であるためです。したがって、将来、2年以内に新しい証明書を購入すると、公開鍵の変更により、古いクライアントはそれ以上更新できなくなります。

懸念されるのは、人があなたを信頼するのではなく、アプリケーションがあなたを信頼することなので、自己署名を使用して、アプリケーション自体に必要な公開鍵を埋め込むことができます。これにより、プロセスをより細かく制御できます。これは、管理下にないユーザーまたはアプリケーションに信頼を与えるように依頼する場合は不適切ですが、この場合、アプリケーションは管理下にあるため、正常に機能します。これにより、他の人の似たような証明書を自分のものと間違える心配を非常に簡単に回避できます。

于 2011-01-04T16:41:11.363 に答える