共用方式為


對稱金鑰證明

本文說明搭配裝置布建服務使用對稱金鑰時的身分識別證明程式。 對稱密鑰認證是一種透過裝置佈建服務實例驗證設備的簡便方法。 此證明方法代表不熟悉裝置佈建或沒有嚴格安全性需求的開發人員的「Hello world」體驗。 使用 TPMX.509 憑證 的裝置證明更安全,而且應該用於更嚴格的安全性需求。

對稱金鑰註冊也為安全性功能有限的舊版裝置提供一種方式,可透過 Azure IoT 啟動至雲端。

對稱金鑰建立

依預設,在啟用自動 產生對稱金鑰選項 的情況下建立新註冊時,Device Provisioning Service 會建立長度為 64 位元組的新對稱金鑰。

螢幕擷取畫面,顯示已選取自動產生金鑰選項的新個別註冊。

您也可以停用此選項,以提供自己的對稱金鑰進行註冊。 對稱金鑰必須採用 Base 64 格式,且金鑰長度介於 16 個位元組到 64 個位元組之間。

詳細的證明流程

裝置佈建服務的對稱金鑰證明是使用與 IoT 中樞所支援相同的安全性權杖進行裝置識別。 這些安全性權杖是共用存取簽章 (SAS) 權杖。

SAS 權杖包含了使用對稱金鑰所建立的雜湊簽章。 裝置佈建服務會重新創建簽名,以驗證驗證過程中提供的安全性權杖是否真實。

SAS 權杖具有下列形式:

SharedAccessSignature sig={signature}&se={expiry}&skn={policyName}&sr={URL-encoded-resourceURI}

以下是每個代幣的組成部分:

價值觀 Description
{簽名} HMAC-SHA256 簽名字串。 針對個別註冊,此簽章是使用對稱金鑰(主要或次要)來進行雜湊運算而產生的。 對於註冊群組,衍生自註冊群組索引鍵的索引鍵會用來執行雜湊。 雜湊是在表單的訊息上執行:URL-encoded-resourceURI + "\n" + expiry重要事項: 金鑰必須先從 base64 解碼,才能用於執行 HMAC-SHA256 計算。 此外,簽名結果必須經過 URL 編碼。
{resourceURI} 可以使用此權杖存取的註冊端點 URI,開頭為裝置佈建服務執行個體的範圍 ID。 例如, {Scope ID}/registrations/{Registration ID}
{到期} UTF8 字串,表示自 1970 年 1 月 1 日 00:00:00 UTC 紀元以來的秒數。
{URL-encoded-resourceURI} 小寫資源 URI 的小寫 URL 編碼
{政策名稱} 此權杖所參考的共用存取原則名稱。 使用對稱金鑰證明佈建時使用的原則名稱是 註冊

如需建立 SAS 權杖的程式碼範例,請參閱 SAS 權杖結構

使用對稱金鑰的個別註冊

當裝置使用個別註冊進行驗證時,裝置會使用個別註冊紀錄中定義的對稱金鑰來建立 SAS 權杖的雜湊簽章。

使用對稱密鑰的群組註冊

與個別註冊不同,裝置在佈建時不會直接使用註冊群組的對稱金鑰。 相反地,透過註冊群組佈建的裝置會使用衍生裝置金鑰來執行此動作。 衍生裝置金鑰是裝置註冊識別碼的雜湊,並使用註冊群組的對稱金鑰進行計算。 然後,裝置可使用其衍生裝置金鑰來簽屬用來透過 DPS 註冊的 SAS 權杖。 由於裝置會在註冊時傳送其註冊標識碼,因此 DPS 可以使用註冊群組對稱金鑰來重新產生裝置的衍生裝置金鑰,並驗證 SAS 權杖上的簽章。

首先,會針對透過註冊群組進行驗證的每個裝置定義唯一的註冊識別碼。 登錄 ID 是不區分大小寫的字串 (最多 128 個字元長),由英數字元加上有效的特殊字元組成: - . _ :。 最後一個字元必須是英數字元或虛線 ('-')。 註冊標識碼應該是識別裝置的唯一標識碼。 例如,可用於唯一識別裝置的 MAC 位址或序號。 在這種情況下,註冊ID可以由MAC地址和序列號組成,類似於以下示例:

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

為裝置定義註冊 ID 之後,註冊群組的對稱金鑰會用來計算註冊 ID 的 HMAC-SHA256 雜湊,以產生衍生裝置金鑰。 下列索引標籤提供計算衍生裝置金鑰的一些範例方法。

Azure CLI 的 IoT 延伸模組提供 compute-device-key 產生衍生裝置金鑰的命令。 此命令可以從 Windows 或 Linux 系統、PowerShell 或 Bash shell 中使用。

--key 引數的值取代為註冊群組的主要金鑰

--registration-id 引數的值替換為您的註冊 ID。

az iot dps enrollment-group compute-device-key --key 8isrFI1sGsIlvvFSSFRiMfCNzv21fjbE/+ah/lSh3lF8e2YG1Te7w1KpZhJFFXJrqYKi9yegxkqIChbqOS9Egw== --registration-id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

範例結果:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

產生的裝置金鑰接著會用來產生用於證明的 SAS 權杖。 註冊群組中的每個裝置都必須使用從唯一衍生金鑰產生的安全憑證來進行證明。 註冊群組對稱金鑰無法直接用於證明。

安裝衍生裝置金鑰

理想情況下,設備密鑰是在工廠派生和安裝的。 此方法可確保群組金鑰永遠不會包含在部署到裝置的任何軟體中。 當將 MAC 位址或序號指派給裝置時,可以派生金鑰並將其注入裝置,至於如何儲存金鑰則由製造商自行決定。

請參看下圖中顯示的裝置金鑰表,其中的裝置金鑰是由工廠對於每個裝置註冊識別碼使用群組註冊金鑰 (K) 進行雜湊處理而產生的。

顯示在工廠指派的裝置金鑰的圖表。

原廠安裝的註冊識別碼和衍生裝置金鑰代表每個裝置的身分識別。 裝置金鑰永遠不會複製到其他位置,群組金鑰也永遠不會儲存在裝置上。

如果裝置金鑰未安裝在原廠中,則應該使用 硬體安全性模組 (HSM) 來安全地儲存裝置身分識別。

後續步驟

現在您已瞭解對稱金鑰證明,請查看下列文章以深入瞭解: