다음을 통해 공유


TPM 증명

이 문서에서는 DPS(Device Provisioning Service)에서 TPM(신뢰할 수 있는 플랫폼 모듈) 증명을 사용하여 디바이스를 프로비전할 때 관련된 개념을 설명합니다. 이 문서는 배포를 위한 디바이스 준비에 관련된 모든 사람에게 적합합니다.

TPM(신뢰할 수 있는 플랫폼 모듈)은 HSM(하드웨어 보안 모듈)의 한 형식입니다. 이 문서에서는 개별, 펌웨어 또는 통합 TPM을 사용하고 있다고 가정합니다. 소프트웨어 에뮬레이트된 TPM은 프로토타입 또는 테스트에 적합하지만 개별, 펌웨어 또는 통합 TPM과 동일한 수준의 보안을 제공하지 않습니다. 프로덕션에서는 소프트웨어 TPM을 사용하지 않는 것이 좋습니다.

이 문서는 HMAC 키 지원 및 해당 인증 키가 있는 TPM 2.0을 사용하는 디바이스에 해당합니다. TPM은 신뢰할 수 있는 컴퓨팅 그룹에서 업계 차원의 ISO 표준이며, TPM 2.0 사양 완료 또는 ISO/IEC 11889 사양에서 TPM에 대해 자세히 알아볼 수 있습니다. 또한 이 문서에서는 사용자가 공용 및 프라이빗 키 쌍과 암호화에 사용되는 방법에 대해 잘 알고 있다고 가정합니다.

디바이스 프로비저닝 서비스 디바이스 SDK는 이 문서에 설명되어 있는 모든 작업을 처리합니다. 디바이스에서 SDK를 사용하는 경우 TPM 지원을 구현할 필요가 없습니다. 이 문서는 디바이스에서 프로비전할 때 TPM 보안 칩에서 일어나는 일과 보안이 유지되는 이유를 개념적으로 이해하도록 도와 줍니다.

개요

TPM은 신뢰의 보안 루트로 EK(인증 키)라고 하는 것을 사용합니다. EK는 TPM에 고유하며 이를 기본적으로 변경하면 디바이스를 새 디바이스로 변경합니다.

TPM에는 SRK(저장소 루트 키)라는 또 다른 형식의 키가 있습니다. SRK는 TPM의 소유권을 가져온 후 TPM의 소유자에 의해 생성될 수 있습니다. TPM의 소유권을 얻는 것은 "누군가가 HSM에 암호를 설정한다"고 알리는 TPM만의 방법입니다. TPM 디바이스가 새 소유자에게 판매되는 경우 새 소유자는 TPM의 소유권을 가져와 새 SRK를 생성할 수 있습니다. 새 SRK 생성으로 이전 소유자는 TPM을 사용할 수 없습니다. SRK는 TPM의 소유자에게 고유하므로 해당 소유자에 대한 TPM 자체로 데이터를 봉인하는 데 SRK를 사용할 수 있습니다. SRK는 해당 키를 저장하도록 소유자에 대한 샌드박스를 제공하고 디바이스 또는 TPM이 판매되는 경우 액세스 취소 가능성을 제공합니다. 이는 새 집으로 이사하는 것과 같습니다. 소유권을 가져오는 것은 문에 대한 잠금을 변경하고 이전 소유자(SRK)가 남긴 모든 가구를 파괴하지만 집의 주소(EK)를 변경할 수 없습니다.

디바이스가 설정되면 EK와 SRK를 모두 사용할 수 있습니다.

TPM의 소유권을 가져오는 것을 보여 주는 다이어그램.

TPM 소유권을 얻는 것과 관련된 구체적인 단계는 제조업체, 사용 중인 TPM 도구 집합 및 디바이스 운영 체제에 따라 다릅니다.

디바이스 프로비저닝 서비스는 EK(EK_pub)의 공용 부분을 사용하여 디바이스를 식별하고 등록합니다. 디바이스 공급 업체는 제조 또는 최종 테스트하는 동안 EK_pub를 읽을 수 있으며 프로비전에 연결할 때 디바이스를 인식할 수 있도록 EK_pub를 프로비저닝 서비스에 업로드할 수 있습니다. 디바이스 프로비저닝 서비스는 SRK 또는 소유자를 확인하지 않으므로 TPM을 "지우는 것"은 고객 데이터를 지우지만 EK(및 다른 공급 업체 데이터)는 유지되고 디바이스는 프로비전에 연결할 때 디바이스 프로비저닝 서비스에서 여전히 인식됩니다.

증명 프로세스

TPM이 있는 디바이스를 Device Provisioning Service에 연결하면 서비스는 먼저 등록 목록에 저장된 EK_pub에 대해 제공된 EK_pub를 확인합니다. EK_pubs가 일치하지 않으면 디바이스 프로비전이 허용되지 않습니다. EK_pub가 일치하는 경우 서비스는 디바이스에서 nonce 챌린지를 통해 EK의 프라이빗 부분 소유권을 증명하도록 요구하며, 이는 ID를 증명하는 데 사용되는 안전한 챌린지입니다. 디바이스 프로비저닝 서비스는 nonce를 생성한 다음, 초기 등록 호출 중에 디바이스에서 제공되는 SRK 및 EK_pub로 이를 차례로 암호화합니다. TPM은 항상 EK 보안의 프라이빗 부분을 유지합니다. 이는 위조를 방지하고 SAS 토큰이 승인된 디바이스에 안전하게 프로비전되도록 합니다.

증명 프로세스를 자세히 살펴보겠습니다.

디바이스에서 IoT Hub 할당 요청

먼저 디바이스가 디바이스 프로비저닝 서비스에 연결되고 프로비전을 요청합니다. 이 과정에서 디바이스는 TPM에서 해당 등록 ID, ID 범위 및 EK_pub와 SRK_pub가 있는 서비스를 제공합니다. 서비스는 디바이스에 암호화된 nonce를 다시 전달하고 디바이스에서 nonce의 암호를 해독하고 다시 연결하고 프로비전을 마치도록 SAS 토큰에 서명하는 데 사용하도록 요청합니다.

디바이스에서 프로비전 요청

Nonce 챌린지

디바이스는 nonce를 사용하고 EK 및 SRK의 프라이빗 부분을 사용하여 TPM으로 nonce의 암호를 해독합니다. nonce 암호화의 순서는 변경할 수 없는 EK에서 새 소유자가 TPM의 소유권을 가져오는 경우 변경할 수 있는 SRK로 신뢰를 위임합니다.

Nonce의 암호 해독

Nonce의 유효성 검사 및 자격 증명 수신

디바이스는 암호가 해독된 nonce를 사용하여 SAS 토큰에 서명하고 서명된 SAS 토큰을 사용하여 디바이스 프로비저닝 서비스에 연결을 다시 설정할 수 있습니다. Nonce 챌린지가 완료되면 서비스는 디바이스에서 프로비전을 허용합니다.

디바이스에서 EK 소유권의 유효성을 검사하도록 Device Provisioning 서비스에 연결 다시 설정