2013-04-10 37 views
3

我有一個數字簽名的二進制APP.EXE。證書由商業CA頒發。在文件屬性(在Windows上),數字簽名信息說這個數字簽名是好的。如果我以某種方式修改二進制文件(例如,通過在資源黑客改變資源)的數字簽名信息說,該數字簽名是無效X509Certificate2.Verify行爲

我試圖以編程方式驗證證書,但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?這是驗證文件數字簽名的正確方法嗎?

回答

1

我想你是誤會了數字簽名驗證的過程。粗略驗證數字簽名過程包含兩個步驟,第一步驗證簽名完整性(檢查在簽名應用後沒有人修改文檔),第二步驗證證書狀態(檢查證書是否有效,未過期或撤銷)。

所以如果修改簽署APP.EXE你打破了你的簽名,但如果證書是有效的它是在這兩種情況下,你的證書驗證是確定的原因仍然有效。

如果不是驗證只有證書您驗證簽名,因爲當你修改APP.EXE你打破了簽名,結果將是在App-modified.exe假。

希望這有助於

相關問題