來源:infoq-馬國耀
程式碼簽名是一種網際網路信任機制,它使軟體使用者在下載和執行網際網路上的可執行程式碼之前先信任它。由於費用及流程的原因,該機制目前尚未向獨立開發者直接開放。但是,現在已經有一些 商店開始向獨立開發者發售Thawte程式碼簽名證照,年費為99美金。
使用數字簽名並不能阻止惡意行為——它只能保證程式碼不被非原作者之外的第三方篡改。Tim Heuer最近寫過一篇部落格,總結了開發者獲取證照的流程,給出了需記住的幾點建議。Thawte提供5中不同的證照,分別面向不同的程式碼簽名實現——Authenticode、Office/VBA、Java、Adobe AIR和Mac。若使用Authenticode證照,你甚至可以給在瀏覽之外執行或本地安裝的Silverlight應用簽名。
程式碼簽名是如何工作的呢?它使用了私鑰-公鑰對和單向hash演算法。軟體釋出者使用自己的私鑰對可執行程式碼做簽名,而讓終端使用者使用他(軟體釋出者)的公鑰做驗證。CA機構使用自己的私鑰對軟體釋出者的公鑰做簽名。因為CA機構是被大多數作業系統信任的,所以終端使用者就能信任軟體釋出者的公鑰,進而信任其可執行程式碼。Scott Corley對該過程有更詳細的解釋。
除了使用CA之外,你還可以將自己的公鑰公佈出去(對方通過下載或安裝獲得你的公鑰),或者在大型可控的部署環境中使用私有CA(如大公司的內部使用者)。此外,在Android或iOS等新平臺中這些方法已經夠用,自簽名應用甚至是典型的做法。