4

デジタル署名されたバイナリ app.exe があります。証明書は商用 CA によって発行されます。ファイルのプロパティ (Windows の場合) で、デジタル署名情報に、This digital signature is OKと表示されます。なんらかの方法でバイナリを変更すると (たとえば、Resource Hacker のリソースを変更することによって)、デジタル署名情報は、This digital signature is not valid と表示されます。

プログラムで証明書を検証しようとしましたが、X509Certificate2.Verify()trueは、元のファイル (app.exe) または改ざんされたファイル (app-modified.exe) のどちらを使用しても返されます。

string filename = "app.exe"; // "app-modified.exe"
X509Certificate cert1 = X509Certificate.CreateFromSignedFile(filename);
X509Certificate2 cert2 = new X509Certificate2(cert1);
bool isValid = cert2.Verify();

この関数が両方の場合に true を返すのはなぜですか? これは、ファイルのデジタル署名を検証する適切な方法ですか?

4

1 に答える 1