移動網(wǎng)絡中的代碼簽名
在傳統(tǒng)的軟件交付模式中,購買者通過檢查包裝來確定應用程序的來源及完整性。然而,在移動網(wǎng)絡下載的軟件存在風險,因為發(fā)行商的身份更難以確定。不慎在無線網(wǎng)絡環(huán)境中引入惡意軟件,不僅會給終端用戶的智能手機帶來風險,還會影響整個設備網(wǎng)絡,使所有用戶遭受攻擊,并導致服務中斷,嚴重損害網(wǎng)絡提供商的聲譽和財務業(yè)績。
為保護智能手機用戶,應用程序軟件商店(如Windows Marketplace)現(xiàn)在要求應用代碼簽名技術(shù),用數(shù)字簽名對移動軟件代碼進行“簽名”。創(chuàng)建一個“數(shù)字壓縮包”,不僅能夠驗證軟件代碼的來源,還能確保代碼并未被修改。
代碼簽名基于公共密鑰加密法技術(shù)。開發(fā)者或軟件發(fā)行商使用“私有”密鑰,在軟件代碼中加設一個數(shù)字簽名。例如,Windows Mobile 7移動平臺,在移動應用程序下載過程中,使用“公共”密鑰驗證簽名,將應用程序簽名中的散列碼與所下載程序中的散列碼進行對比。
數(shù)字簽名中的散列碼用以確認文件內(nèi)容,檢驗文件在簽名后代碼是否被更改或損壞。用戶能夠驗證文件內(nèi)容及軟件的完整性,同時,發(fā)行商應該有能力及時有效召回損壞的證書。
在傳統(tǒng)代碼簽名證書中,開發(fā)者使用相同的數(shù)字簽名簽署所有代碼。但移動應用具有獨特挑戰(zhàn),因為它要求獨特的部署和管理方法。開發(fā)者和發(fā)行商必須有能力迅速召回有漏洞、有錯誤及有泄露的代碼,但不影響合法開發(fā)者所發(fā)布的其它版本及應用程序。
理想情況下,移動代碼簽名的實現(xiàn)有兩個數(shù)字認證——一個用來識別發(fā)行商,另一個用來識別內(nèi)容。在這種情況下,發(fā)行商使用發(fā)行商身份標識號來簽名代碼,然后上傳,再通過安全接口,由應用認證中心所提供的代碼簽名服務進行驗證。一旦簽名生效,它便會生成唯一的內(nèi)容身份識別號,其中包括發(fā)行商身份和應用程序信息。接下來,認證中心可以使用內(nèi)容身份識別號對內(nèi)容重新進行簽名,隨后,它就可以被確定為可信的并允許發(fā)布的代碼了。如果應用程序中有潛在而敏感的應用程序編程接口(API),那么在簽發(fā)內(nèi)容身份標識號前,便要求有第三方評估(如微軟Privileged Access for Marketplace)。
重新簽名過程技術(shù)對最終用戶設備是透明的,因為在客戶端設備層面只會執(zhí)行一項檢驗。但對于開發(fā)商和網(wǎng)絡提供商來說,分配具體的證書有利于簡便地識別并召回有問題的代碼,而并不影響應用程序的其余部分。這些方案和功能為網(wǎng)絡運營商提供了更多的操控力和更好的網(wǎng)絡保障,不會影響創(chuàng)新或最終用戶體驗。
大多情況下,來自受信源的簽名代碼可以被自動接收。安全警報也會提示終端用戶查看簽名信息,確定這一代碼的可信度。某些網(wǎng)絡提供商只接受已簽名的應用程序,以便最大限度地降低網(wǎng)絡風險;有些網(wǎng)絡提供商則要求代碼簽名,以便應用程序能夠訪問潛在敏感的應用程序編程接口(API)。如果移動平臺(如Windows Mobile 7)沒能將應用程序的簽名識別為有效簽名,那么該平臺將完全不會運行這一程序。
