什麼是軟體程式碼數字簽名?

各種各樣包裝軟體,讓人應接不暇,大家用什麼防偽標誌識別正版軟體呢?在當今的網路時代中,很多軟體開發商可以通過網路不受時間、地域的限制而快速發行自己的軟體,但使用者無法辨認軟體的真偽和軟體程式碼的真實身份。在沒有間諜軟體和木馬程式之前,大家還能相信某個軟體就是正版軟體,但是網際網路的匿名性使使用者根本無法確認此軟體是否真是正版軟體。那麼如何保證軟體程式碼在網路傳輸過程中不會被非法修改或被病毒干擾,還能讓使用者非常清楚地識別軟體發行者的真實身份呢?答案就是程式碼數字簽名。

以QQ為例,如果某個程式沒有數字簽名,那麼它的安全性是得不到保證的,相反如果這個程式有數字簽名,那麼就可以保證它沒有被非法篡改或損壞。

軟體程式碼數字簽名採用的是PKI雙鑰技術。

開發商在自己電腦上生成私鑰和證書CSR檔案提交給實惠數字證書,同時提交有關身份證明檔案(如:營業執照或證明等)給實惠查驗,實惠驗證身份後用自己的私鑰給CSR檔案簽名後生成程式碼簽名證書(公鑰)給軟體開發商。這樣就完成了證書的申請和頒發。

開發商用程式碼簽名工具給要簽名的程式碼生成一個Hash表,再用其私鑰加密Hash表產生認證摘要,接著就把摘要連同其公鑰與軟體程式碼一起打包生成新的軟體程式碼,軟體開發商就可以把已經簽名的程式碼在網上發行了。

終端使用者從網上下載已經簽名的程式碼時,瀏覽器會從簽名程式碼中解讀出其公鑰和Hash表摘要,並與Windows的受信任的根證書相比較查驗公鑰證書的有效性和合法性,驗證簽名證書正確後,就可以確認此程式碼確實是來自真實的軟體開發商。

程式碼的一致性是使用簽名時使用的演算法對軟體程式碼生成一個Hash表,並使用公鑰也同樣生成一個Hash表認證摘要,比較兩個Hash表的認證摘要是否一致,如果一致,就表明此程式碼在傳輸過程中沒有任何修改,從而可以確認程式碼的一致性。

從上述過程的簡單介紹中可以看出:

(1)購買程式碼簽名證書一定要從Windows內建的受信任的根證書頒發機構購買(如:實惠),否則無法通過驗證。

(2)程式碼簽名後不僅保證了軟體開發商的真實身份,而且還保證了程式碼的完整性,以免程式碼被病毒干擾或被非法篡改。

(3)只有使用了Windows受信任的證書頒發機構(如:實惠)頒發的程式碼簽名證書籤名的程式碼才允許下載,所以,如果您要讓您的程式碼能讓使用者放心地下載,就一定要申請實惠的程式碼簽名證書。