共用方式為


對稱金鑰證明

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

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

對稱金鑰建立

根據預設,裝置佈建服務會在使用自動啟用 [產生對稱金鑰] 選項建立新的對稱金鑰時,建立長度為 64 位元組的新對稱密鑰。

Screenshot that shows a new individual enrollment with the autogenerate keys option selected.

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

詳細的證明程序

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

SAS 令牌具有使用對稱密鑰建立的哈希 簽章 。 裝置布建服務會重新建立簽章,以確認證明期間呈現的安全性令牌是否為正宗。

SAS 權杖具有下列格式:

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

下列為每個權杖的元件:

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

如需建立 SAS 令牌的程式代碼範例,請參閱 SAS 令牌

使用對稱金鑰的個別註冊

當裝置使用個別註冊進行證明時,裝置會使用個別註冊項目中定義的對稱密鑰來建立 SAS 令牌的哈希簽章。

使用對稱金鑰群組註冊

不同於個別註冊,裝置佈建時不會直接使用註冊群組的對稱密鑰。 相反地,透過註冊群組佈建的裝置會使用衍生的裝置密鑰。 衍生的裝置金鑰是裝置註冊標識碼的哈希,並使用註冊群組的對稱密鑰來計算。 然後,裝置可以使用其衍生的裝置密鑰來簽署用來向 DPS 註冊的 SAS 令牌。 由於裝置在註冊時傳送其註冊標識碼,DPS 可以使用註冊群組對稱密鑰來重新產生裝置的衍生裝置密鑰,並驗證 SAS 令牌上的簽章。

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

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

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

Azure CLI 的IoT擴充功能提供 compute-device-key 用來產生衍生裝置密鑰的命令。 此命令可從 PowerShell 或 Bash 殼層中的 Windows 或 Linux 系統使用。

將自變數的值取代為註冊群組的主--key

將 自變數的值 --registration-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) 哈希每個裝置註冊識別符。

Diagram that shows device keys being assigned at a factory.

每個裝置的身分識別會以安裝在處理站的註冊標識元和衍生裝置密鑰來表示。 裝置密鑰永遠不會複製到另一個位置,而且群組金鑰永遠不會儲存在裝置上。

如果未在處理站安裝裝置密鑰, 則應使用硬體安全性模組 HSM 安全地儲存裝置身分識別。

下一步

既然您已瞭解對稱密鑰證明,請參閱下列文章以深入瞭解: