Windows 10 IoT Core의 TPM(신뢰할 수 있는 플랫폼 모듈)

TPM이란?

TPM(신뢰할 수 있는 플랫폼 모듈)은 난수 생성 기능, 안전한 암호화 키 생성 및 사용 제한 사항을 포함하는 암호화 공동 프로세서입니다. 원격 증명 및 봉인된 스토리지와 같은 기능도 포함됩니다. TPM의 기술 사양은 TCG(신뢰할 수 있는 컴퓨팅 그룹)를 통해 공개적으로 사용할 수 있습니다. 최신 버전 TPM 2.0(2014년 10월 릴리스)은 새로운 기능을 추가하고 이전 TPM 1.2의 약점을 수정하는 사양의 주요 재설계입니다.

왜 TPM인가요?

TPM을 통합하는 컴퓨터는 암호화 키를 만들고 암호화하여 TPM에서만 암호 해독할 수 있습니다. 키 "래핑" 또는 "바인딩"이라고도 하는 이 프로세스는 공개로부터 키를 보호하는 데 도움이 될 수 있습니다. 각 TPM에는 TPM 자체 내에 저장되는 스토리지 루트 키라는 기본 "래핑" 키가 있습니다. TPM에서 만든 키의 프라이빗 부분은 다른 구성 요소, 소프트웨어, 프로세스 또는 사용자에게 노출되지 않습니다.

TPM을 통합하는 컴퓨터는 래핑되었을 뿐만 아니라 특정 플랫폼 측정에 연결된 키를 만들 수도 있습니다. 이러한 유형의 키는 해당 플랫폼 측정값이 키를 만들 때와 동일한 값을 갖는 경우에만 래핑 해제할 수 있습니다. 이 프로세스를 TPM의 키 "봉인"이라고 합니다. 키 암호를 해독하는 것을 "unsealing"이라고 합니다. TPM은 TPM 외부에서 생성된 데이터를 봉인하고 봉인 해제할 수도 있습니다. 이 봉인된 키와 BitLocker 드라이브 암호화와 같은 소프트웨어를 사용하면 특정 하드웨어 또는 소프트웨어 조건이 충족될 때까지 데이터를 잠글 수 있습니다.

TPM을 사용하면 키 쌍의 프라이빗 부분이 운영 체제에서 제어하는 메모리와 별도로 유지됩니다. 키는 TPM에 봉인할 수 있으며, 키를 봉인 해제하고 사용하기 위해 해제하기 전에 시스템 상태에 대한 특정 보증(시스템의 "신뢰도"를 정의하는 보증)을 만들 수 있습니다. TPM은 자체 내부 펌웨어 및 논리 회로를 사용하여 지침을 처리하기 때문에 운영 체제에 의존하지 않으며 운영 체제 또는 애플리케이션 소프트웨어에 존재할 수 있는 취약성에 노출되지 않습니다.

TPM 아키텍처

TPM 1.2와 TPM 2.0 간의 차이입니다.
TPM 사양은 두 번 개발되었습니다. 처음으로 1.1b에서 1.2로 개발되었으며 사양 위원회가 요청/식별한 새로운 기능을 통합했습니다. 이 기능 크리프 형태의 진화는 최종 TPM 1.2 사양을 매우 복잡하게 만들었습니다. 결국, SHA-1(TPM 1.2에서 가장 강력한 상용 알고리즘)의 암호화 약점이 밝혀져 변경이 필요하게 됩니다. TPM 아키텍처는 처음부터 다시 디자인되어 TPM 2.0의 훨씬 더 통합되고 통합된 디자인을 구현했습니다.

이전 TPM 1.2와 비교한 변경 내용 및 향상된 기능은 다음과 같습니다.

  • 추가 암호화 알고리즘 지원
  • 애플리케이션에 대한 TPM의 가용성 향상
  • 향상된 권한 부여 메커니즘
  • 간소화된 TPM 관리
  • 플랫폼 서비스의 보안을 강화하기 위한 추가 기능

참고 항목

Windows IoT Core는 TPM 2.0만 지원하며 오래된 TPM 1.2를 지원하지 않습니다.

TBS란?

TBS(TPM 기본 서비스) 기능은 TPM 리소스를 투명하게 공유할 수 있는 시스템 서비스입니다. RPC(원격 프로시저 호출)를 통해 동일한 물리적 컴퓨터의 여러 애플리케이션 간에 TPM 리소스를 공유합니다. 호출 애플리케이션에서 지정한 우선 순위를 사용하여 애플리케이션 간에 TPM 액세스를 중앙 집중화합니다.

TPM은 플랫폼에 대한 신뢰를 제공하도록 설계된 암호화 함수를 제공합니다. TPM은 하드웨어에서 구현되므로 리소스가 유한합니다. TCG는 이러한 리소스를 사용하여 애플리케이션 소프트웨어에 대해 신뢰할 수 있는 작업을 제공하는 TSS(TPM 소프트웨어 스택)를 정의합니다. 그러나 TPM 리소스를 사용할 수 있는 운영 체제 소프트웨어와 함께 TSS 구현을 실행하기 위한 프로비저닝은 이루어지지 않습니다. TBS 기능은 TBS와 통신하는 각 소프트웨어 스택이 컴퓨터에서 실행될 수 있는 다른 소프트웨어 스택에 검사 TPM 리소스를 사용하도록 설정하여 이 문제를 해결합니다.

Windows IoT Core에서 사용할 수 있는 TPM 솔루션

소프트웨어 TPM(sTPM), fTPM(펌웨어 TPM), dTPM(불연속 TPM)에 대한 몇 가지 단어...

펌웨어 TPM(fTPM)

fTPM(펌웨어 TPM)에는 현재 Raspberry Pi 2 또는 3에서 구현되지 않은 특별한 프로세서/SoC 지원이 필요합니다. MinnowBoard Max에는 펌웨어 버전 0.80 이상이 필요합니다. DragonBoard410c는 기본적으로 사용하도록 설정된 fTPM 기능을 기본적으로 제공합니다.

불연속 TPM(dTPM)

dTPM(불연속 TPM)은 기본적으로 가장 신뢰할 수 있는 솔루션으로 간주됩니다.
Windows IoT Core에서 지원되는 dTPM 칩 및 PCB 모듈의 여러 제조업체가 있습니다.

제조업체 웹 페이지 모듈 형식 TPM 칩
인 피니언 Infineon TPM Evalboard 인피니언 SLB9670 TPM 2.0
Pi3g Pi3g.com 대량 제품 및 에발보드 인피니언 SLB9670 TPM 2.0

소프트웨어 TPM(sTPM)

STPM(소프트웨어 TPM)을 TPM 시뮬레이터라고도 합니다. Windows IoT Core에서 지원되는 플랫폼 독립적입니다.

참고 항목

sTPM은 개발 목적으로만 사용되며 실제 보안 혜택을 제공하지 않습니다.

샘플

  • Urchin 라이브러리 샘플 이 자습서에서는 Urchin 라이브러리를 사용하여 TPM 기능을 연습하는 샘플 C++ 애플리케이션을 만드는 방법을 보여 줍니다. Urchin은 TPM 2.0 참조 구현에서 파생된 사양 규격 라이브러리입니다. 클라이언트에 모든 데이터 구조를 마샬링/마샬링 해제하고, 권한 부여를 올바르게 계산하고, 매개 변수 암호화를 수행하고, 감사를 수행하는 기능을 제공합니다.

추가 리소스