FineArt News

應用程式的身分證

如何證明你就是你?

王小明因為生病要到醫院拿藥,首先要證明自己的身份,可能有下面狀況:

  • 狀況一:他告訴醫院:我叫王小明
  • 狀況二:他告訴醫院:我叫王小明,而且你看看這是我的識別證
  • 狀況三:他告訴醫院:我叫王小明,這是我的身份證
  • 狀況四:他告訴醫院:我叫王小明,這是我的身份證,還有我的健保卡

在上面的例子中,很明顯的,狀況一是空口說白話,除非認識你的人,別人無法證明你就是王小明,狀況二也有問題,因為識別證很容易仿造,我們沒有辦法信任這個識別證是否正確,而狀況三就好多了,因為身份證是國家核發,比較沒有仿造的問題,狀況四就更好了,不僅有國家頒發的身份證,而且還有健保卡認證,是雙重認證。

所以要證明你就是你,一定要有第三方的證明才可以,例如:上面例子中的身份證,上面附有相片,就是國家幫你證明你就是你,當然,如果有二個俱有公信力的第三方,同時證明你就是你,也就是雙重認證,那就更保險了,例如上面例子中,的身分證加上健保卡的雙重認證。

 

如何證明這個程式就是你想要執行的程式?

這個說法有點繞口,舉例來說,假如你要執行WINWORD,你要如何確定這個WINWORD,就是微軟出品的WINWORD,而不是駭客隨便仿造一個檔名叫做WINWORD的程式,故意騙你去執行?

所以如果只看檔名,就去執行這個程式,是很危險的,就像上面的狀況一樣,一個程式沒有辦法僅僅使用檔案名稱來證明自己,所以,必須觀看這個程式的簽章,用程式的簽章,來證明程式是正確的。

使用程式簽章,來證明程式的身份,但是,程式是如何加上簽章的呢?請看下圖參考,我們可以使用簽章工具 + 憑證,在程式發行前加入簽章,也就是在程式的尾巴部位,加上一段編碼,來證明這個程式的內容,(1) 沒有被修改過, (2) 專屬於某個軟體公司的。

程式簽章的演算法,通常使用公開金鑰的方案,利用憑證來對程式進行簽章,詳細的演算法部分,有興趣的人可以上網Google一下,所以我們也可以說:使用憑證來證明程式(由憑證產生簽章 )。事實上,如果你懂得使用簽章產生工具,任何人都可以產生自己的憑證,我們可以再用這個自己產生的憑證,對程式進行簽章。所以一個程式並不是有了簽章,就表示這個程式值得信任,因為由憑證的產生流程來看,何人都可以產生成憑證,表示憑證可能被造假,所以要判斷程式是否值得信任,主要是要看這個憑證是不是值得信任。自己產生出來的憑證,沒有辦法被第三方信任,就像上面狀況二的識別證(可能是仿冒的識別證),換句話說,自己產生的憑證,無法被大家所認可,不具備公信力。所以有些公司,專門去做這個憑證發行的工作,也就是數位認證公司,這些公司比較具有公信力,讓全世界的使用者都可以信任,比較有名的像是 GlobalSign、Verisign等等。

如果向數位認證公司申請憑證,並且繳交年費,數位認證公司會根據當地政府的情況,向申請人進行徵信,確定申請的資料,符合事實,就會賣給你數位憑證公司簽發的憑證,我們如果使用這種憑證去簽署程式,就可以受到使用應用程式的人的信任。因為第三方的數位認證公司,證明了簽署人的憑證正確,而這個憑證,又簽署在程式上面,所以我們基於信任第三方的數位認證公司,就可以信任數位認證公司簽發的憑證,再進一步信任由這個憑證簽發的程式。

這種情況就像上面的狀況三,數位認證公司簽發的憑證,只能有限度的證明:"這個軟體的確是由某家軟體公司開發",而這家軟體公司開發的軟體是不是有問題?有沒有隱藏駭客工具?則無法由簽章看出。可使用檔案總管,在檔案的[右鍵],按下[內容],下圖為一般應用程式簽章,可避免應用程式被駭客仿冒檔名。如果你是簽署一般的程式,只需要申請一般的憑證即可(當然你也可以自己產生憑證,再用憑證去簽章自己的程式,但是這樣就沒有公信力了)。如果是開發 Windows Kernel Mode Driver ( 核心驅動程式 ),必須符合  (1) 申請第三方認證的加強型( EV ) 憑證,再簽署 Driver (2) 送微軟審核後,加入了微軟簽章,才能允許載入 Windows 核心。

所謂的第三方認證的加強型EV憑證,實際上就是數位認證公司在徵信申請者的時候,詢問得更詳細,而且申請EV的費用也會更高,因為驅動程式,須要更高等級的信任,所以必須先使用加強型的簽章,有了加強型的簽章的Driver,提交給微軟的審核後,會再附上微軟的簽章。有了微軟的簽章,才能在Windows開機的時候,載入這個驅動程式,就像上面例子中的狀況四,驅動程式必須同時具備EV簽章以及微軟簽章,才能證明這個驅動程式是可以被信任的。

 

結論

下面的表格,說明了各種程式的信任程度:

 

私人簽章

有公信力簽章

EV 簽章

微軟簽章

說明

一般程式

 

 

 

 

無法信任

一般程式

V

 

 

 

無法信任

一般程式

 

V

Option

 

可信任

驅動程式

 

 

V

V

可信任

最後還是要強調,使用憑證對稱應用程式進行簽章,即使採用付費的信任憑證,也只能夠證明程式的發行者,的確是某家軟體公司,但是沒有辦法證明,這個程式是不是包含有惡意的功能在裡面,或漏洞能被利用。

一般來說,如果是能夠證明應用程式,是某家軟體公司開發的軟體,也就足夠,通常就會因為信任這家軟體公司,而進一步信任其所開發的程式,但是這個信任是心理上的,並不是絕對沒有問題,從技術的手段上面來說,應用程式的簽章,只能證明應用程式是由某公司所開發。