Аттестация симметричных ключей

В этой статье описывается процесс аттестации удостоверения при использовании симметричных ключей с помощью Службы подготовки устройств. Аттестация симметричных ключей — это простой подход к аутентификации устройства в экземпляре Службы подготовки устройств. Этот метод аттестации представляет собой интерфейс "Hello world" для разработчиков, которые не знакомы с подготовкой устройств или не имеют строгих требований к безопасности. Аттестация устройства с помощью доверенного платформенного модуля или сертификата X.509 является более защищенной. Эти способы следует использовать при наличии более строгих требований к безопасности.

Регистрация симметричного ключа также позволяет устаревшим устройствам с ограниченными возможностями безопасности загружаться в облако через Azure IoT.

Создание симметричных ключей

По умолчанию служба подготовки устройств создает новые симметричные ключи с длиной 64 байта при создании новых регистраций с автоматически включенным параметром "Создать симметричные ключи".

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

Вы также можете предоставить собственные симметричные ключи для регистраций, отключив этот параметр. Симметричные ключи должны быть в формате Base 64 и иметь длину ключа в диапазоне от 16 байт до 64 байт.

Подробный процесс аттестации

Аттестация симметричного ключа со службой подготовки устройств выполняется с помощью одинаковых маркеров безопасности, поддерживаемых центрами Интернета вещей для идентификации устройств. Это маркеры подписанного URL-адреса (SAS).

Для маркеров SAS предоставлена хэшированная подпись, созданная с использованием симметричного ключа. Служба подготовки устройств повторно создает подпись для проверки подлинности маркера безопасности, представленного во время аттестации.

Маркеры SAS предоставляются в следующем формате:

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

Рассмотрим компоненты каждого маркера:

значение Описание
{signature} Строка подписи HMAC-SHA256. В отдельных регистрациях для выполнения хэширования эта подпись создается с использованием симметричного ключа (первичного или вторичного). Для групп регистраций ключ, полученный из ключа группы регистрации, используется для выполнения хэширования. Хэширование выполняется для сообщения в формате: URL-encoded-resourceURI + "\n" + expiry. Важно. Ключ должен быть декодирован из Base64 перед использованием для вычислений HMAC-SHA256. Кроме того, результат подписи необходимо закодировать в формате URL-адреса.
{resourceURI} URI конечной точки регистрации, доступ к которой может осуществляться с помощью этого маркера. Начинается с идентификатора области для экземпляра Службы подготовки устройств. Например: {Scope ID}/registrations/{Registration ID}
{expiry} Строки в формате UTF8, отображающие количество секунд с начала эры 00:00:00 (в формате UTC) 1 января 1970 г.
{URL-encoded-resourceURI} Строчное URL-кодирование строчного URL ресурса
{policyName} Имя политики общего доступа, к которой относится этот маркер. Имя политики, используемое при подготовке с применением аттестации симметричного ключа, — registration.

Примеры кода, создающие маркер SAS, см. в разделе "Маркеры SAS".

Отдельные регистрации с симметричными ключами

Если аттестация устройства выполняется с применением отдельной регистрации, это устройство использует симметричный ключ, определенный в записи об этой регистрации, для создания хэшированной подписи маркера SAS.

Групповые регистрации с симметричными ключами

В отличие от отдельной регистрации, симметричный ключ группы регистрации не используется непосредственно устройствами при подготовке. Вместо этого устройства, которые подготавливают группу регистрации, используют производный ключ устройства. Производный ключ устройства — это хэш идентификатора регистрации устройства и вычисляется с помощью симметричного ключа группы регистрации. Затем устройство может использовать производный ключ устройства для подписи маркера SAS, который он использует для регистрации в DPS. Так как устройство отправляет идентификатор регистрации при регистрации, DPS может использовать симметричный ключ группы регистрации для повторного создания производного ключа устройства и проверки подписи маркера SAS.

Во-первых, для каждого устройства, выполняющего проверку подлинности через группу регистрации, определяется уникальный идентификатор регистрации. Идентификатор регистрации — это строка без учета регистра (до 128 символов длиной) буквенно-цифровых символов, а также допустимые специальные символы: - . _ : Последний символ должен быть буквенно-цифровым или дефисом ('-'). Идентификатор регистрации должен быть уникальным, идентифицирующий устройство. Например, MAC-адрес или серийный номер, доступный для уникального определения устройства. В этом случае идентификатор регистрации может состоять из MAC-адреса и серийного номера, как показано ниже:

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

После определения идентификатора регистрации устройства для получения производного ключа применяется симметричный ключ группы регистраций с целью вычисления хэш-кода HMAC-SHA256 этого идентификатора. Некоторые примеры подходов к вычислению производного ключа устройства приведены на вкладках ниже.

Расширение Интернета вещей для Azure CLI предоставляет команду compute-device-key для создания производных ключей устройств. Эту команду можно использовать в системах с ОС Windows или Linux с помощью PowerShell или оболочки Bash.

Замените значение аргумента --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 следует использовать для безопасного хранения удостоверения устройства.

Следующие шаги

Теперь, когда вы понимаете аттестацию симметричного ключа, проверка следующие статьи, чтобы узнать больше: