私は自動更新機能を実装しており、ベストプラクティスを使用してこれを安全に行う方法についてアドバイスが必要です。ダウンロードしたファイルのAuthenticode署名を使用して、実行することが安全であることを確認します(つまり、当社から発信され、改ざんされていないことを確認します)。私の質問は、質問#2008519と非常によく似ています。自動アップデータの弊社からのAuthenticode署名を確認してください
自動アップデート機能のAuthenticodeシグネチャを確認する最も安全な方法は何ですか?証明書のどのフィールドをチェックする必要がありますか?要件は次のとおりです:(1)チェック署名が有効であること、(2)署名がチェックされていること、(3)証明書の有効期限が切れたときに古いクライアントが更新され、
は、ここに私の研究から、いくつかの背景情報/アイデアだ:私は、これは2つのステップに分けることができ信じている:
は、署名が有効であることを確認してください。私はこれがWinVerifyTrustを使用して容易になるはずだと信じていますhttp://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx - 私はここで問題を期待していません。
署名が当社以外の会社ではないことを確認してください。これは答えがより難しいと思われる:
1つの可能性は、署名の文字列のいくつかをチェックすることです。 MS KBの記事#323809のコードで入手できますが、この記事ではこのタイプのアプリケーション(またはその他の分野)についてどのフィールドをチェックするべきかについては推奨していません。 Question #1072540は、証明書情報を取得する方法も示していますが、実際に確認するフィールドはお勧めしません。私の懸念は、文字列が最良のチェックではないかもしれないということです。たとえば、別の人が同じ名前の証明書を取得できる場合はどうなりますか?または、将来、文字列を変更する正当な理由がある場合は、
question #2008519の人物には非常によく似た要件があります。 「TrustedByUs」機能の必要性は、私のものと同じです。しかし、彼は公開鍵を比較することでチェックを行っています。これは短期間では機能しますが、自動更新機能では機能しないようです。コード署名証明書は2〜3年間有効です。したがって、今後2年間で新しい証明書を購入すると、古いクライアントは公開鍵の変更によりこれ以上更新できなくなります。
フォローアップ:私はブライアンの提案を多かれ少なかれ取り上げました。 (1)WinTrustVerifyでAuthenticode署名を検証する、(2)Authenticode署名を検査すること、その文字列が私の会社名と一致することを確認します。(3)追加の措置として、私はDSAと別の署名を行います。署名は実行可能ファイルと一緒に送信され、チェックされます。 –
Microsoftの[Windows Authenticode Portable Executable Signature Format](http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx)も参照してください。 – jww