アプリケーションにソフトウェアの自動更新を追加したいのですが、信頼できるルートCAからコード署名証明書を購入する準備がまだ整っていないため、自己署名証明書を使用してコード更新に署名します(.exeおよび.dll)今のところ。
質問:Microsoftの暗号化APIを使用して、証明書をインストールせずに、自己署名証明書で署名されたバイナリを検証するにはどうすればよいですか?チェックする.cerファイルはアプリケーションにバンドルされます。または、一般的な暗号ライブラリを使用する方が簡単ですか?
アプリケーションにソフトウェアの自動更新を追加したいのですが、信頼できるルートCAからコード署名証明書を購入する準備がまだ整っていないため、自己署名証明書を使用してコード更新に署名します(.exeおよび.dll)今のところ。
質問:Microsoftの暗号化APIを使用して、証明書をインストールせずに、自己署名証明書で署名されたバイナリを検証するにはどうすればよいですか?チェックする.cerファイルはアプリケーションにバンドルされます。または、一般的な暗号ライブラリを使用する方が簡単ですか?
独自の証明書を使用する場合は、X509 のことはすべてスキップできます。
やりたいことのために、最初に RSA 秘密鍵と公開鍵のペアを生成する必要があります。次に、公開鍵をアプリケーションに保存します。
更新がある場合は、MD5 や SHA-1、または使用したい任意のハッシュを取得して、サイトで署名します。次に、そのハッシュを秘密鍵で暗号化します。インストールされたアプリケーションは、更新と署名 (暗号化されたハッシュ) を取得します。アプリケーションがバイナリ ファイルを取得すると、そのハッシュを計算し、公開鍵を使用して他のファイルを復号化し、それらを比較します。それらが同一である場合、それは有効な更新です。そうでない場合は、それを拒否してユーザーまたは何かに警告します。
自己署名された X509 証明書では、メカニズムはまさにそれになりますが、公開鍵には、発行者の ID など、証明書と同じ ID となる一連の追加データが含まれます。
数年前、Win2k の時代に自己署名証明書を有効にする方法を聞いたことを思い出すようですが、それは非常にハックであり、公開展開にはまったく適しておらず、おそらく「修正」されています。他の暗号ライブラリの使用や独自の開発を検討している場合は、注意してください。良い暗号と悪い暗号を区別するのは非常に困難です。