Saturday, March 31, 2007

About digital signature

當我們用API把digital signature抓出來之後,怎樣證明這個檔案真的由此issuer所發行? 通常為了保證這個檔案真的是由issuer所發出,會請第三者保證這個issuer無誤。 但是怎麼確定這個第三者是公正的?那就會請到第三者的第三者...然後再請第三者的第三者第三者.... 如此循環下去,稱為Certificate chain,最後一定會遇到一個root,就稱為root certificate。 這樣的作法會遇到一個問題,那就是有可能certification被revoke了。 所以再使用API作驗證的時候,通常會作 revokation checking。 API驗證的作法可以參考: http://msdn2.microsoft.com/en-us/library/aa388208.aspx 另外,Platform SDK也有tool可以作驗證,不想寫驗證程式的話或許可以利用(?!) http://msdn2.microsoft.com/en-us/library/aa387764.aspx 這個工具也可以拿來sign程式,只不過要先拿到certificate就是了... 另外要確定一個檔案是否安全的方法就是透過Windows Catalog Database Windows記錄了通過微軟認證的安全file或是driver,並且把它們儲存在catalog database。 所以經由catalog database我們也可以得知一個程式是否可以被trust。 只是我覺得這個 catalog database似乎永遠太小....要hit還滿難的.... 要使用catalog database可以參考CryptCAT* API family. 流程就是先算檔案的hash value,然後依照此hash value找尋catalog file。 只要找到catalog file,就可以獲得許多的資訊。

No comments: