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