• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 2, 文章 - 73, 評論 - 60, 引用 - 0
            數(shù)據(jù)加載中……

            Smartphone 應用程序安全與代碼簽名模型開發(fā)人員實用指南

            Smartphone 應用程序安全與代碼簽名模型開發(fā)人員實用指南
            發(fā)布日期 : 2/28/2005 | 更新日期 : 2/28/2005

            James Pratt
            Microsoft

            適用于:
            Microsoft® Windows® Powered Smartphone 2002
            Windows Mobile™ 2003 software for Smartphones
            Windows Mobile 2003 Second Edition software for Smartphones
            Microsoft ActiveSync®
            Microsoft Visual Studio® .NET 2003
            Microsoft eMbedded Visual C++® version 3.0
            Microsoft eMbedded Visual C++ version 4.0

            摘要:本文介紹應用程序開發(fā)人員必須了解的有關(guān) Smartphone 應用程序安全模型的內(nèi)容、以及當某款基于 Windows Mobile 的 Smartphone 推向市場時移動運營商所擁有的不同策略選擇。

            本頁內(nèi)容

            摘要 摘要
            應用程序安全背景 應用程序安全背景
            代碼簽名實踐 代碼簽名實踐
            小結(jié) 小結(jié)
            附錄 A:受保護的注冊表項 附錄 A:受保護的注冊表項
            附錄 B:特權(quán) API 列表 附錄 B:特權(quán) API 列表

            摘要

            Microsoft™ 基于 Windows Mobile 的 Smartphone 是根據(jù)數(shù)字代碼簽名實現(xiàn)應用程序安全模型的。希望以基于 Windows Mobile 的 Smartphone 為目標的應用程序開發(fā)人員需要了解 Smartphone 應用程序安全模型、以及當某款基于 Windows Mobile 的 Smartphone 推向市場時移動運營商所擁有的不同策略選擇。

            如果您是一位了解構(gòu)建 Pocket PC 或 Smartphone 應用程序的 Smartphone 開發(fā)人員,并且還在構(gòu)建 Pocket PC 和/或 Smartphone 安裝包 (.cab),本文將提供您所需的一切,以幫助您了解 Smartphone 應用程序安全模型、特權(quán)與非特權(quán)應用程序的不同之處、如何確定您的應用程序是否需要特權(quán)信任、如何配置進行 Smartphone 開發(fā)的開發(fā)環(huán)境,以及如何通過代碼簽名供應商進行應用程序簽名。

            應用程序安全背景

            Mobile2Market FAQ 提供了一個非常不錯的針對應用程序安全與代碼簽名的高級指南。在閱讀本文之前,您可能希望閱讀 Mobile2Market FAQ,以便為您提供有價值的背景知識。

            數(shù)字代碼簽名

            數(shù)字代碼簽名是一種驗證數(shù)字內(nèi)容來源的方式。在 Windows Mobile 領(lǐng)域中,有時會將它與徽標認證混淆。徽標認證是驗證某個 Windows Mobile 應用程序是否符合一組實現(xiàn) Windows Mobile 應用程序的指導原則的過程。當前的指導原則可以在 Mobile2Market 站點上找到。經(jīng)過認證的應用程序在應用程序中和它的包裝上都標有“Designed for Windows Mobile”徽標。“Designed for Windows Mobile”徽標不擔保應用程序是由它聲明的軟件供應商構(gòu)建的,也不擔保如果它由該軟件供應商構(gòu)建,它沒有在軟件供應商發(fā)出它和您接收到它的這段時間內(nèi)遭到惡意篡改。而代碼簽名確實提供了這些擔保。

            讓人感到不解的是,數(shù)字代碼簽名既使用數(shù)字證書,又有一個單獨的徽標認證程序。其實,這兩者有完全不同的目的和目標。

            究竟為什么要進行數(shù)字代碼簽名?

            數(shù)字代碼簽名不是基于 Windows Mobile 的 Smartphone 所獨有的。每次 Microsoft® Internet Explorer 詢問您是否希望安裝 Active X® 控件,然后詢問您是否希望“信任來自 X 公司的內(nèi)容”時,應用程序是在要求您決定是否信任內(nèi)容提供商。Internet Explorer 斷言相關(guān)的包在簽名后沒有更改過。如果您信任該來源,那么您就可以信任該應用程序,因為它來源于一個經(jīng)過驗證的源。代碼簽名將驗證數(shù)字內(nèi)容的來源以及自從它簽名后沒有更改過的事實。

            用于 Smartphone Windows Mobile 軟件的應用程序安全

            通過禁止用戶從一個未知源安裝應用程序,基于 Windows Mobile 的 Smartphone 應用程序安全可以幫助保護最終用戶的 Smartphone 設(shè)備的完整性。

            應用程序安全是一種通過代碼簽名實施的策略決策。在移動運營商將電話推向市場之前,他們會做出策略決策。移動運營商在任何時候都可以更改策略決策。

            基于 Windows Mobile 的 Smartphone 實現(xiàn)了周邊安全和運行時安全。周邊安全控件可以安裝 在設(shè)備上。運行時安全控件可以在設(shè)備上執(zhí)行。例如,您只需安裝一種鈴聲或一個主屏幕,然而您需要安裝并執(zhí)行一個應用程序。如果您創(chuàng)建內(nèi)容并安裝在沒有包含任何可執(zhí)行組件的設(shè)備上,則您只需考慮周邊安全。如果您在創(chuàng)建一些可執(zhí)行的東西(例如應用程序或組件),那么您需要考慮周邊安全和運行時安全。

            Smartphone 包含三個不同的證書存儲區(qū):一個非特權(quán)執(zhí)行信任存儲區(qū)、一個特權(quán)執(zhí)行信任存儲區(qū)和一個安裝信任存儲區(qū)。證書存儲區(qū)包含安裝在電話上的數(shù)字證書的公共部分。證書的公共版可以用來驗證應用程序的數(shù)字簽名,但不能用來對應用程序進行簽名。

            什么時候我需要擁有超越非特權(quán)執(zhí)行模式的特權(quán)?

            大多數(shù)應用程序只需要非特權(quán)執(zhí)行模式,例如游戲和有助于提高工作效率的個人應用程序。如果您計劃在應用程序中完成以下某件事情,您可能需要特權(quán)執(zhí)行模式,因此應當使用特權(quán)證書進行簽名:

            • 修改系統(tǒng)注冊表項(參閱附錄 A

            • 訪問 SMS 子系統(tǒng)(SmsXXX 函數(shù))

            • 進行或截獲電話呼叫并訪問其他的 exTAPI API

            • 訪問 SIM 管理子系統(tǒng)(SimXXX 函數(shù))

            • 直接通過無線電接口層訪問無線電設(shè)備(不通過 Smartphone SDK 提供)

            • 使用低級系統(tǒng) API,例如 Kernel IOControl

            • 編寫用來插入到系統(tǒng)進程或者特權(quán)進程的組件,例如 DLL。一個常見的例子是 Microsoft ActiveSync® 服務提供程序,它作為設(shè)備端 ActiveSync 應用程序應歸類為特權(quán)應用程序。

              附錄 B 包含了需要特權(quán)訪問的 API 列表。

            特權(quán)與非特權(quán)執(zhí)行模式

            Smartphone 應用程序安全模型的設(shè)計很靈活,可以滿足各種移動運營商的網(wǎng)絡(luò)的需要。特權(quán)與非特權(quán)應用程序的概念指的是給定應用程序訪問設(shè)備上的功能和 API 的權(quán)限級別:

            • 特權(quán)信任應用程序可以完全訪問系統(tǒng)和 API。在特權(quán)證書存儲區(qū)進行證書簽名的應用程序以這種執(zhí)行特權(quán)運行。

            • 非特權(quán)信任應用程序可以有限訪問系統(tǒng)和 API。在非特權(quán)證書存儲區(qū)進行證書簽名的應用程序以這種執(zhí)行特權(quán)運行。

            • 不受信任應用程序不允許加載到 Smartphone 并且不能訪問系統(tǒng)或 API。

            由運營商選擇 Smartphone 安全策略。這種策略可能允許不受信任的應用程序以非特權(quán)訪問模式運行,也可能需要對應用程序進行數(shù)字簽名。下一節(jié)討論安全策略矩陣。

            什么是可能的安全策略?

            對于安裝應用程序(周邊安全),運營商的策略選擇很簡單:

            • 允許安裝未經(jīng)簽名的安裝包

            • 不允許安裝未經(jīng)簽名的安裝包

            在 Smartphone 2003 中,有另外一種模式,這種模式詢問用戶是否希望安裝應用程序。

            對于執(zhí)行應用程序(運行時安全),移動運營商必須選擇是否允許應用程序或組件以特權(quán)和非特權(quán)信任模式運行。下表顯示了需要通過其進行簽名才能運行的證書類型(取決于策略)。在 Smartphone 2002 中:

            策略

            執(zhí)行模式

            執(zhí)行模式

             

             

            非特權(quán)

            特權(quán)

            不受限制

            標準

            需要運營商特權(quán)證書

            受限

            需要 Mobile2Market 非特權(quán)證書

            需要運營商特權(quán)證書

            基于 Windows Mobile 2003 的 Smartphone 還可以支持提示模式。運營商不是簡單地否認用戶安裝或運行應用程序的能力,而是可以通過指定提示模式來推遲針對用戶的決策。在這種情況中,系統(tǒng)會提示并詢問用戶是否允許運行或安裝應用程序。執(zhí)行策略如下:

            策略

            執(zhí)行模式

            執(zhí)行模式

             

             

            非特權(quán)

            特權(quán)

            不受限制

            標準

            需要 Mobile2Market 非特權(quán)證書(提示模式一樣)

            需要 Mobile2Market 或運營商特權(quán)證書

            受限

            需要 Mobile2Market 非特權(quán)證書

            需要 Mobile2Market 或運營商特權(quán)證書

            如果您訪問 Mobile2Market Build Applications 頁,則可以找到主流移動運營商所采用的安全策略決策。

            代碼簽名實踐

            作為一名軟件開發(fā)人員,在開發(fā)代碼和部署應用程序的過程中,代碼簽名會對您產(chǎn)生影響。在開發(fā)過程中,您需要了解如何用證書配置仿真程序或設(shè)備來支持開發(fā)。當您想要部署應用程序時,您需要了解如何對應用程序進行數(shù)字簽名、需要對哪些組件進行簽名,以及如何對這些組件進行簽名。

            在開始開發(fā) Smartphone 應用程序之前,您需要準備您的 Smartphone 設(shè)備和開發(fā)環(huán)境。對于 Smartphone 2002,您將了解如何配置 eMbedded Visual C++® 3.0 以及如何選擇是否使用特權(quán)或非特權(quán)證書進行簽名。對于 Smartphone 2003,您將了解如何配置 eMbedded Visual C++ 4.0 和 Microsoft Visual Studio® .NET 2003,以便使它們使用一套相同的證書,從而簡化開發(fā)過程。

            Smartphone 2002 2003 的共同配置步驟

            對于 Smartphone 2002 和 Smartphone 2003,您需要使用 SDK 工具目錄的命令提示來執(zhí)行一些配置步驟。如果您已經(jīng)在默認的位置安裝了這些工具,則工具的目錄為:

            平臺

            工具目錄

            Smartphone 2002

            C:\Windows CE Tools\wce300\Smartphone 2002\tools

            Smartphone 2003

            C:\Program Files\Windows CE Tools\wce420\SMARTPHONE 2003\Tools

            按照下面這些步驟打開命令提示,并將目錄切換到工具目錄:

            1. 單擊 Start 菜單,然后單擊 Run(或者按下 Windows 徽標鍵和 R)。Run 對話框打開。

            2. 在編輯字段中鍵入 cmd,然后按下 ENTER 鍵。命令窗口打開。

            1. 打開命令窗口
            1. 將目錄切換到上面特定于平臺的工具目錄。鍵入 cd <tools path>,然后按下 ENTER 鍵。

            2. 將目錄切換到特定于平臺的工具目錄

            創(chuàng)建開發(fā)證書

            Smartphone 2002 和 2003 SDK 附帶有稱為 spdps 的工具,該工具可用于創(chuàng)建特權(quán)開發(fā)人員證書,以便對設(shè)備端開發(fā)工具進行簽名,并將該證書提供給 Smartphone 和 Smartphone 仿真程序。應當單獨對 Smartphone 2002 和 Smartphone 2003 運行 spdps 命令,以確保仿真程序配置有適當?shù)淖C書和對您的調(diào)試工具進行簽名。

            spdps 工具安裝在 SDK 工具目錄中。按照前面的步驟打開命令提示,并將目錄切換到適當?shù)墓ぞ吣夸洠?/p>

            平臺

            工具名稱

            工具目錄

            Smartphone 2002

            sp2002dps

            C:\Windows CE Tools\wce300\Smartphone 2002\tools

            Smartphone 2003

            spdps

            C:\Program Files\Windows CE Tools\wce420\SMARTPHONE 2003\Tools

            現(xiàn)在用 /create 與 /device 參數(shù)運行前表中指定的工具;例如,鍵入“sp2002dps /create /device”,<ENTER> 將會運行 Smartphone 2002 的工具。在發(fā)出該命令之前,您必須將設(shè)備連接到 PC 和已建立的 ActiveSync 連接中。

            圖 3 顯示的是您期望看到的情形。

            3. 按下 ENTER 返回特定于平臺的工具的結(jié)果

            我們在這里做的是對所有的設(shè)備端開發(fā)組件、遠程工具和具有本地創(chuàng)建證書的調(diào)試器進行簽名。這些工具需要對設(shè)備進行特權(quán)訪問,因此我們將本地創(chuàng)建的證書“推”到了設(shè)備的特權(quán)執(zhí)行信任存儲區(qū),這樣設(shè)備將允許組件以特權(quán)進程運行。

            有些移動運營商可能選擇不支持即裝即用開發(fā)的設(shè)備配置。在這種情況下,您將會看到下面的錯誤:

            無標題

            4. 選擇不支持即裝即用開發(fā)的設(shè)備配置會返回一個錯誤

            如果您的電話不支持即裝即用開發(fā),您需要聯(lián)系移動運營商,看看他們是否提供配置電話的服務,這樣您可以為其進行開發(fā)。例如,他們可能在 Web 上有一個開發(fā)人員計劃,您可以加入并能夠進行電話開發(fā)。

            如果您在多個電話上進行開發(fā),則您可以使用 spdps /device 命令將開發(fā)證書“推”到每個電話中。在這種情況下,您只需要使用 /device 參數(shù)。

            無標題

            5. 使用一個參數(shù)

            當您使用不帶 /create 開關(guān)的 /device 時,實用工具會要求您選擇一種證書。

            無標題

            6. 選擇一種證書

            eVC 第一次以 Smartphone 設(shè)備為目標時,會自動創(chuàng)建“<username> Default Development Certificate”。可以通過 spdps /create 創(chuàng)建“Smartphone Privileged Development Certificate for <username>”。在這種情況下,我們希望選擇“Smartphone Privileged Development Certificate for <username>”以“推”到設(shè)備中。該過程完成后,您將會看到一個同前面一樣的成功屏幕。

            切記,如果您硬重置電話或者電池完全沒電,您需要通過重復這些步驟來重新配置電話。

            Smartphone 2002 的特定配置步驟

            對于 Smartphone 2002,您只能使用 eMbedded Visual C++ 3.0 來開發(fā)應用程序。采用上面提及的步驟,您可以在設(shè)備的特權(quán)和非特權(quán)證書存儲區(qū)上創(chuàng)建一個已知的證書。這將會幫助您確定您的應用程序是否需要進行特權(quán)或非特權(quán)簽名。這種方法重點在于通過仿真程序配置實際的 Smartphone 設(shè)備。仿真程序配備有開放式安全策略,這使得您能夠開發(fā)任何類型的應用程序。由于運營商選擇他們自己的安全策略,因此只有在您作為開發(fā)人員面對設(shè)備時才需要知道您使用哪一種證書進行簽名。

            Smartphone 2003 的特定配置步驟

            您可以使用兩種工具來為 Smartphone 2003 開發(fā)應用程序。前面的步驟已經(jīng)配置好設(shè)備,這樣 eMbedded Visual C++ 4.0 就可以將應用程序部署到設(shè)備和仿真程序并進行調(diào)試。Smartphone 2003 SDK 附帶有特權(quán)和非特權(quán)開發(fā)證書。這些證書已經(jīng)加載到了仿真程序特權(quán)和非特權(quán)證書存儲區(qū)中。Visual Studio .NET 2003 使用非特權(quán)證書作為默認的證書。這部分重點在于配置您的設(shè)備,以便可以使用這些證書,這樣您所有的工具和仿真程序就都有一套一致的證書。

            將測試證書添加到個人證書存儲區(qū)

            首先,您必須在您的開發(fā) PC 上將 SDK 工具目錄附帶的證書添加到個人證書存儲區(qū)中。這些證書文件稱為 TestCert_Privileged.pfx and TestCert_UnPrivileged.pfx。為了將各個證書安裝到個人證書存儲區(qū)中,您需要:

            1. 在 Explorer 中雙擊 .pfx 文件。

            2. 單擊“Next”。

            3. 再次單擊“Next”。

            4. 再次單擊“Next”— 證書沒有密碼。

            5. 選擇“Automatically select cert store”,然后單擊“Next”。

            6. 單擊“Finish”。

            將證書提供給設(shè)備

            一旦您將證書添加到個人證書存儲區(qū),您就需要將它們添加到設(shè)備。這里您需要使用 rapiconfig 工具。Smartphone 2003 SDK 附帶有將這些證書添加到適當設(shè)備證書存儲區(qū)中的配置文件。使用前面給出的指導打開命令提示,并切換到 SDK 工具目錄。類型:

            rapiconfig /p sdktestcerts.xml <press enter>
            

            您應看到:

            7. 使用 rapiconfig 工具切換目錄

            配置 eMbedded Visual C++ 4.0 項目

            現(xiàn)在您的設(shè)備包含了 SDK 測試證書。最后一步是更新 eMbedded Visual C++ 4.0 項目,這樣在部署它時它使用非特權(quán)測試證書來對應用程序進行簽名。在 eMbedded Visual C++ 4.0 中:

            1. 轉(zhuǎn)到 Project,然后選擇“Settings”。

            2. 滾動到最右側(cè)的選項卡“Security”(參見步驟 7 中的注釋)。

            3. 只選中頂部的復選框(對該應用程序進行簽名)。

            4. 按下上面的“Browse”按鈕。

            5. 選擇稱為“Smartphone 2003 Unprivileged Test Signing Authority”的證書,然后單擊“OK”。

            6. 取消選中“Configure device to trust signed applications”復選框。

              我們已經(jīng)將證書提供到我們希望它們位于其中的存儲區(qū);因此我們不希望工具再次提供它們。通過取消選中該框,我們可以防止錯誤的證書進入到錯誤的存儲區(qū)中。

            7. 單擊“OK”。

              Security 選項卡僅出現(xiàn)在 Smartphone 項目中。確保主 IDE 中的目標平臺設(shè)置為 Smartphone 而不是 Pocket PC。即使您創(chuàng)建的是一個 Smartphone 項目,eMbedded Visual C++ 4.0 有時也會默認選擇 Pocket PC,而不是 Smartphone。

            配置 Visual Studio .NET 2003

            Visual Studio 默認情況下,.NET 2003 使用 Smartphone 2003 SDK 所附帶的證書。用適當?shù)淖C書配置設(shè)備的步驟就是完成配置 Visual Studio .NET 2003 以自動用非特權(quán)證書對應用程序進行簽名所需的步驟。

            如果您確定您的 Visual Studio .NET 2003 應用程序需要進行特權(quán)簽名,您就需要使用稱為“Smartphone 2003 Privileged Test Signing Authority”的特權(quán)測試證書對應用程序組件(.exe 與 .dll)進行手動簽名。您可以使用 signcode 工具來做到這一點。signcode 工具的使用在為部署進行應用程序簽名 一節(jié)中進行介紹。

            這使得您能夠通過從設(shè)備啟動可執(zhí)行文件來運行 一個需要特權(quán)信任的應用程序。然而,如果您從開發(fā)環(huán)境運行或調(diào)試應用程序,它將會使用非特權(quán)證書再次對應用程序進行簽名。

            考慮特權(quán)訪問的開發(fā)

            訪問特權(quán)注冊表項

            您可以打開和瀏覽特權(quán)注冊表項和值,但是您不能創(chuàng)建、修改,或者刪除項或值。所有的注冊表訪問函數(shù)都返回一個 LONG 值。當您試圖對一個要求特權(quán)訪問的項執(zhí)行創(chuàng)建、修改或刪除時,返回值將為 ERROR_ACCESS_DENIED (0x05)。一定要檢查這些注冊表函數(shù)返回值并得體地失敗!

            附錄 A 中有一個特權(quán)注冊表項列表。

            調(diào)用特權(quán) API

            如果您的應用程序中某個 API 失敗,那可能是您調(diào)用了一個特權(quán) API 而沒有以特權(quán)信任模式運行。在這種情況下,函數(shù)調(diào)用會失敗。每個函數(shù)指示它失敗的方式是不同的,一般是通過一些返回值來指示。這本身不足以指示調(diào)用失敗,因為您需要以特權(quán)信任模式運行。

            如果由于您需要特權(quán)信任而懷疑某個函數(shù)調(diào)用失敗,您可以調(diào)用 GetLastError 函數(shù)。如果返回值為 0x05 (ERROR_ACCESS_DENIED),則表明為了使用該函數(shù)您可能需要以特權(quán)信任模式運行。

            參閱說明由于需要特權(quán)簽名而引發(fā)問題時如何進行經(jīng)驗測試的章節(jié)。

            附錄 B 中有一個特權(quán) API 列表。

            編寫 DLL 與其他的組件

            對于一個可執(zhí)行文件來說,從其他的可執(zhí)行組件(例如 DLL)加載功能是很常見的。通常,這是以運行時或者鏈接時加載函數(shù)的形式進行。有些標準的 Smartphone 應用程序允許通過編寫實現(xiàn)特定功能的 DLL 來擴展其自身,例如 ActiveSync、Inbox 和 Home Screen。

            當某個 Smartphone 可執(zhí)行文件試圖加載另一個組件時,系統(tǒng)要檢查可執(zhí)行文件的特權(quán)級別。如果它發(fā)現(xiàn)組件的信任級別低,它就不允許加載該組件。

            幾乎所有的系統(tǒng)可執(zhí)行文件都是以特權(quán)信任模式運行的,記住這一點尤為重要。

            對于 Smartphone 2002,試圖將一個非特權(quán)組件加載到一個特權(quán)進程中將會失敗而且系統(tǒng)不會給出任何提示。例如,您可能會試圖創(chuàng)建一個 ActiveSync 服務提供程序。雖然您已經(jīng)正確地在桌面和設(shè)備上安裝了組件,而在桌面端,服務提供程序以 ActiveSync 選項的形式出現(xiàn),當您試圖進行同步時,沒有傳輸數(shù)據(jù),因為您的組件從來就沒有加載到設(shè)備端。根據(jù)經(jīng)驗,任何插入到系統(tǒng)應用程序的組件都需要用特權(quán)證書進行簽名。

            對于 Smartphone 2003,試圖將非特權(quán)組件加載到一個特權(quán)進程中的結(jié)果取決于安全策略。如有運營商允許提示模式,則系統(tǒng)會提示用戶并請求決定是否加載組件。詢問用戶:

            This program needs a component from an unknown source that may not be trustworthy.
            Do you want to load this component?
            

            如果運營商不支持提示模式,則該行為與 Smartphone 2002 的一樣。

            如果由于它需要特權(quán)簽名而使我的應用程序或組件失敗,我應如何進行經(jīng)驗測試?

            如果您遵循了前面的配置指導,您的開發(fā)環(huán)境應當配置成自動用一個已知的非特權(quán)證書對應用程序進行簽名。如果您遵循了這些配置指導并認為應用程序或組件可能需要特權(quán)簽名,則您可以進行經(jīng)驗測試,方法是用您知道的設(shè)備特權(quán)存儲區(qū)中的一個特權(quán)證書來進行簽名。假定您已經(jīng)利用前面的指導配置了環(huán)境,您可以通過以下步驟來幫助識別與安全有關(guān)的失敗。

            eMbedded Visual C++ 3.0 4.0

            對于 eMbedded Visual C++ 系列,您需要在項目設(shè)置中更改用來進行應用程序或組件簽名的證書。取決于您使用的是 eMbedded Visual C++ 3.0 還是 4.0£¬您需要進行稍有點不同的選擇。

            由于 Smartphone 2002 仿真程序附帶有開放式安全策略,所以您不能使用仿真程序來對 Smartphone 2002 執(zhí)行這種測試。

            eVC 版本

            證書名稱

            3.0

            <username> 的 Smartphone 特權(quán)開發(fā)證書

            4.0

            Smartphone 2003 特權(quán)測試簽名頒發(fā)機構(gòu)

            1. 轉(zhuǎn)到 Project 并選擇 Settings。

            2. 滾動到最右側(cè)的選項卡 Security(參見步驟 7 中的注釋)。

            3. 只選中上面的復選框(對該應用程序進行簽名)

            4. 按下上面的 Browse 按鈕。

            5. 從上表選擇證書。

            6. 取消選中“Configure device to trust signed applications”復選框。

              我們已經(jīng)將證書提供到了我們希望它們位于其中的存儲區(qū);因此我們不希望工具再次提供它們。通過取消選中該框,我們可以防止錯誤的證書進入到錯誤的存儲區(qū)中。

            7. 單擊“OK”。

              Security 選項卡僅出現(xiàn)在 Smartphone 項目中。確保主 IDE 中的目標平臺設(shè)置為 Smartphone 而不是 Pocket PC。即使您創(chuàng)建的是一個 Smartphone 項目,eMbedded Visual C++ 4.0 有時會默認選擇 Pocket PC,而不是Smartphone。

            如果您現(xiàn)在重新構(gòu)建所有的 應用程序或組件,則會使用一個特權(quán)證書進行簽名。如果您的應用程序或組件現(xiàn)在像您所期望的那樣開始正常工作,應用程序就需要進行特權(quán)簽名。

            Visual Studio .NET 2003

            用 Visual Studio .NET 2003測試稍有不同。在這種情況下,您需要使用 signcode 工具來對組件進行手動簽名,然后嘗試部署它們。關(guān)于使用 signcode 的指導在本文檔的為部署進行應用程序簽名 一節(jié)中。您需要選擇 Smartphone 2003 特權(quán)測試簽名頒發(fā)機構(gòu) 證書來對應用程序或組件進行簽名。切記,Visual Studio .NET 2003 只支持 Smartphone 2003。

            查詢 Smartphone 的證書存儲區(qū)中有哪些證書

            Smartphone 2003 和 Smartphone 2002 SDK 都附帶有一個稱為 rapiconfig 的工具。rapiconfig 允許您對電話上的證書存儲區(qū)進行查詢。2002 和 2003 SDK 都附帶有一個名為 querystore.xml 的示例文件。您可以使用該文檔來確切地查詢電話在其特權(quán)、非特權(quán)以及安裝存儲區(qū)中有哪些證書。您將學會如何做到這些,包括:

            1. 為特權(quán)、非特權(quán)以及安裝存儲區(qū)創(chuàng)建適當?shù)?.xml 文件。

            2. 使用 rapiconfig 獲取電話信息。

            3. 識別電話是否為開發(fā)而鎖定。

            創(chuàng)建查詢文件

            模板 querystore.xml 如下所示:

            <!-- Sample XML to query a certificate store  -->
            <wap-provisioningdoc>
            <characteristic type="CertificateStore">
            <characteristic-query type="{Enter certificate store name over here}" />
            </characteristic>
            </wap-provisioningdoc>
            

            您需要創(chuàng)建該文檔的三個名為 querystore_priv.xml、querystore_unpriv.xml 和 querystore_spc.xml 的副本。名稱并不重要;然而,在整個示例中我們將要使用這些名稱。在 SDK 工具目錄中制作 querystore.xml 的多個副本,這樣它們就可以更容易地與命令行工具 rapiconfig 一起使用。

            您可以使用記事本、喜愛的文本或 XML 編輯器來編輯這些文件。

            對于_

            替換_

            使用_

            Querystore_unpriv.xml

            {在此輸入證書存儲區(qū)的名稱}

            非特權(quán)執(zhí)行信任 Authorities

            Querystore_priv.xml

            {在此輸入證書存儲區(qū)的名稱}

            特權(quán)執(zhí)行信任 Authorities

            Querystore_spc.xml

            {在此輸入證書存儲區(qū)的名稱}

            SPC

            Using RAPIConfig

            請參閱“配置開發(fā)環(huán)境”一節(jié),打開 SDK 工具目錄中的命令提示。rapiconfig 工具的工作方式對于 2002 和 2003 有點不同。2002 版輸出在屏幕上;而 2003 版輸出到一個文件。下面的指令將產(chǎn)生三個 .xml 文件。每個 .xml 文件都包含有某個特定存儲區(qū)中的證書列表。

            Smartphone 2002

            rapiconfig /p querystore_unpriv.xml > unpriv_certs.xml <press enter>
            rapiconfig /p querystore_priv.xml  > priv_certs.xml <press enter>
            rapiconfig /p querystore_spc.xml  > spc_certs.xml <press enter>
            

            Smartphone 2003

            rapiconfig /p querystore_unpriv.xml <press enter>
            copy rapiconfigout.xml priv_certs.xml
            rapiconfig /p querystore_priv.xml <press enter>
            copy rapiconfigout.xml priv_certs.xml
            rapiconfig /p querystore_spc.xml <press enter>
            copy rapiconfigout.xml spc_certs.xml
            

            您現(xiàn)在有三個文件,每個都包含有某個證書存儲區(qū)中的證書列表:

            文件

            證書列表_

            priv_certs.xml

            特權(quán)存儲區(qū)

            priv_certs.xml

            非特權(quán)存儲區(qū)

            spc_certs.xml

            安裝存儲區(qū)

            如果您從 rapiconfig 獲得一條錯誤消息,您應當檢查下一部分。

            如果由于開發(fā)您的 Smartphone 被鎖定,將會發(fā)生什么情況?

            運營商可以控制的電話安全的一個方面就是開發(fā)人員是否能夠從他們的開發(fā)機器連接到電話。如果運營商選擇了受限的策略,您將會接收到一條錯誤消息:

             Config failed (0x80070005): Access is denied
            

            如果是這種情況,您就需要聯(lián)系運營商,弄清楚他們是否為開發(fā)人員制定了一個允許您根據(jù)他們的特定電話硬件進行開發(fā)的計劃。

            如果 .xml 文件中有錯誤,您也會接收到一條拒絕訪問錯誤消息;但是錯誤號將為 0x80042004。

            為部署進行應用程序簽名

            要對應用程序進行簽名,您需要獲得受一個或多個目標電話信任的數(shù)字證書。該數(shù)字證書的信任級別必須達到運行所需的執(zhí)行特權(quán);也就是說,如果需要特權(quán)信任執(zhí)行,則需用特權(quán)證書進行簽名。如果只需要非特權(quán)信任執(zhí)行,則需用非特權(quán)證書進行簽名。對于大多數(shù)應用程序來說,非特權(quán)信任執(zhí)行足夠了。

            獲得證書

            Mobile2Market 在所有附帶基于 Windows Mobile 的 Smartphones 的非特權(quán)存儲區(qū)中都有證書。為了對應用程序進行簽名,以便使其在各種手機中工作,我們建議您從 Mobile2Market Participate Now 一節(jié)中的一個參與證書供應商處購買證書。

            從這些供應商處獲得的證書通常是不受電話信任的。您必須使用此證書來對應用程序進行簽名,然后將經(jīng)過簽名的應用程序提交給(通常通過 Web 接口)您的證書供應商。然后,該證書供應商會讓一個自動進程用 Smartphone 信任的證書對應用程序進行簽名,并為您提供一個下載該應用程序的鏈接。完成這些后,該供應商就可以驗證您的身份,從而幫助維護電話信任證書的完整性。

            該證書通常附帶有包含所需 PIN 代碼的物理 USB 設(shè)備。供應商會給您發(fā)送如何裝配的指導。

            對應用程序和安裝程序進行簽名

            一旦您已經(jīng)完成開發(fā)并獲得證書,就可以通過 5 個簡單的步驟來創(chuàng)建經(jīng)過簽名的應用程序:

            1. 可以用從一個 Mobile2Market 證書供應商處購買的證書來對應用程序的可執(zhí)行組件(.exe 和 .dll)進行簽名。下面是關(guān)于如何完成這些的指導。

            2. 通過 Web 接口將經(jīng)過簽名的應用程序組件提交給證書供應商。聯(lián)系您的證書供應商以獲得具體指導。受電話信任的證書簽名的一個或多個文件將返回給您。

            3. 將這些組件構(gòu)建到安裝包 (.cab) 文件中。

            4. 使用從某個 Mobile2Market 證書供應商處購買的證書對 .cab 文件進行簽名。本文后面的部分有關(guān)于如何這樣做的指導。

            5. 通過 Web 接口將經(jīng)過簽名的 .cab 文件提交給您的證書供應商。聯(lián)系您的證書供應商以獲得具體指導。經(jīng)過簽名的 .cab 文件將返回給您。

            然后,可以將該 .cab 文件安裝在所有基于 Windows Mobile 的 Smartphone 上。該應用程序無需提示即可自己運行。

            為了對 .exe、.dll 或 .cab 文件進行簽名,您需要使用 signcode.exe 工具,對于 Smartphone 2002 和 Smartphone 2003,該工具都安裝在 Tools 目錄中。這兩種工具完全相同。運行該工具時,系統(tǒng)將呈現(xiàn)一個向?qū)А?/p>

            8. 打開數(shù)字簽名向?qū)?/strong>

            單擊 Next,系統(tǒng)將詢問您想要對哪個文件進行簽名。您必須為每個要簽名的組件(即為每個 .exe 和 .dll 以及您最終的 .cab 文件)運行一次該工具。可以看到我已經(jīng)從我的項目的 ARMRel 目錄中選擇了 Signing Demo.exe。

            9. 在數(shù)字簽名向?qū)е羞x擇文件

            單擊 Next 后,系統(tǒng)將詢問您是想要 Typical 設(shè)置還是 Advanced 設(shè)置;選擇 Typical。下一屏讓您選擇簽名所使用的證書。選擇 Select From Store,然后,個人證書存儲區(qū)中將為您呈現(xiàn)一個證書列表。您要使用的不是我們現(xiàn)在已經(jīng)用完的本地創(chuàng)建的證書,而是從供應商處購買的證書。

            用 codesign 簽名不會用完包含提供程序的簽名事件。只有在通過供應商的 Web 站點將本地簽名的應用程序提交給他們時,才會使用簽名事件。

            10. 選擇簽名證書

            您應該很容易就能夠識別您的 Mobile2Market 證書,因為 Issued By 字段和您從中購買證書的公司名相同。例如,我選擇了 Geotrust 證書。一旦單擊了 OK,就可以單擊 Next。

            下一屏將詢問可選的描述數(shù)據(jù);您可以單擊 Next。您也不需要添加時間戳,所以可單擊時間戳屏幕上的 Next。

            現(xiàn)在,您已經(jīng)成功地導航了該向?qū)А螕?Finish,系統(tǒng)會對您的 .exe、.dll 或 .cab 進行簽名。現(xiàn)在,您已準備好將組件提交給您的簽名供應商。請參考供應商的指導來完成這些,但一般情況下一定要登錄他們的 Web 站點,通常要使用他們發(fā)送的 USB 證書來驗證身份。一旦登錄,您就可以上載組件,并將這些組件用受 Smartphone 信任的證書進行簽名。

            對需要特權(quán)訪問的應用程序進行簽名

            對于某些安全策略,運營商擁有特權(quán)證書存儲區(qū)中的證書。如果確定需要特權(quán)執(zhí)行信任,那么您就需與您的運營商聯(lián)系,通常通過他們的開發(fā)人員計劃來確定如何用該證書對您的應用程序進行簽名。

            運營商可以自行決定是否為您提供該項服務。

            小結(jié)

            Smartphone 應用程序安全策略和代碼簽名開始時可能會讓人畏縮,似乎很復雜。而實際上它非常簡單,通過本文,您現(xiàn)在可以了解 Smartphone 的不同證書存儲區(qū)、如何將證書放置在這些存儲區(qū)中,以及在開始部署時如何確保用正確的證書來對應用程序進行簽名。使用這些簡單的方法,可以確保您用正確的信任級別來對應用程序進行簽名。

            如果您有關(guān)于本文內(nèi)容的任何反饋,請發(fā)送郵件到 wmsecfbk@microsoft.com

            附錄 A:受保護的注冊表項

            注冊表項

            HKEY_LOCAL_MACHINE\Comm

            HKEY_LOCAL_MACHINE\Drivers

            HKEY_LOCAL_MACHINE\HARDWARE

            HKEY_LOCAL_MACHINE\SYSTEM

            HKEY_LOCAL_MACHINE\Init

            HKEY_LOCAL_MACHINE\Security

            HKEY_LOCAL_MACHINE\WDMDrivers

            HKEY_LOCAL_MACHINE\Services

            HKEY CLASSES_ROOT (device specific)

            附錄 B:特權(quán) API 列表

            組件

            API

            Public

            SetInterruptEvent

            SetSystemMemoryDivision

            CESetThreadPriority

            CeSetThreadQuantum

            ForcePageout

            VirtualCopy

            LockPages

            UnlockPages

            SetProcPermissions

            SetKMode

            ReadProcessMemory

            WriteProcessMemory

            SetCleanRebootFlag

            PowerOffSystem

            DebugActiveProcess

            CreateProcess(僅 DEBUG_ONLY_THIS_PROCESS 和 DEBUG_PROCESS 調(diào)試標志)

            KernelIOControl

            擴展的電話應用程序接口 (ExTAPI)

            lineRegister

            lineSetCallBarringPassword

            lineSetCallBarringState

            lineUnregister

            lineSetPreferredOperator

            lineSetEquipmentState

            lineGetGeneralInfo

            lineManageCalls

            lineSetGprsClass

            lineGetNumberCalls

            lineSetHSCSDState

            lineGetUSSD

            lineSendUSSD

            lineSetSendCallerIDState

            lineSetCallWaitingState

            SIM 管理器

            simUnlockPhone

            simSetLockingStatus

            simGetSmsStorageStatus

            simChangeLockingPassword

            simReadMessage

            simWriteMessage

            simDeleteMessage

            simReadRecord

            simWriteRecord

            simGetRecordInfo

            短消息服務

            SmsSetMessageNotification

            SmsClearMessageNotification

            SmsReceiveAllMessagesFromSIM

            SmsSetSMSC

            連接管理器

            ConnMgrProviderMessage

            Critical Process Monitor (CPM)

            CPMRegister (Reboot)

            CPMShutdown

            CPMStatus

            CPMRegisterTest

            無線電接口層

            全部 RIL API

            RIL API 所需的信任級別可通過將下列注冊表項的值從 2 更改為 1 而得以修改:
            [HKEY_LOCAL_MACHINE\Security\Policy\APIs\RILGSM] @="2"

            posted on 2007-12-17 11:14 郭天文 閱讀(369) 評論(0)  編輯 收藏 引用 所屬分類: Windows Mobile

            99久久99这里只有免费的精品| 久久电影网| 2020最新久久久视精品爱| 久久天天躁狠狠躁夜夜av浪潮| 99久久这里只精品国产免费| 亚洲国产一成人久久精品| 成人精品一区二区久久| 亚洲中文字幕无码久久2017| 国产 亚洲 欧美 另类 久久| 色综合久久中文字幕无码| 精品久久久久久无码中文野结衣 | 久久影院综合精品| 精品综合久久久久久88小说 | 久久精品国产亚洲AV香蕉| 久久婷婷成人综合色综合| 免费精品99久久国产综合精品| 国内精品久久久久影院薰衣草| 久久av高潮av无码av喷吹| 久久精品国产福利国产秒| 亚洲级αV无码毛片久久精品| 青青青青久久精品国产h久久精品五福影院1421 | 99久久精品这里只有精品 | 国产一区二区三区久久精品| 性做久久久久久久久浪潮| 久久久久亚洲精品男人的天堂| 欧美伊香蕉久久综合类网站| 无码超乳爆乳中文字幕久久| 国产亚洲精久久久久久无码77777| 久久精品成人免费国产片小草| 91亚洲国产成人久久精品网址| 国内精品久久久久影院免费| 久久丫精品国产亚洲av| 久久婷婷五月综合国产尤物app | 久久综合久久综合久久| 精品国产福利久久久| 国产欧美久久久精品| 久久精品国产亚洲麻豆| 亚洲综合久久综合激情久久| 精品免费久久久久国产一区| 午夜精品久久影院蜜桃| 久久婷婷色香五月综合激情 |