TPM(Trusted Platform Module)은 마더보드에 내장된 보안 칩으로, 암호화 키 생성·저장, 플랫폼 무결성 측정, 원격 증명 기능을 제공한다. TPM 2.0은 Windows 11의 필수 요구사항이다.
TPM 핵심 기능
| 기능 | 설명 | 사용 예 |
|---|
| PCR (Platform Config Register) | 부팅 측정값 저장 (SHA-256) | 무결성 검증 |
| EK (Endorsement Key) | TPM 고유 키 (교체 불가) | 원격 증명 |
| SRK (Storage Root Key) | 키 계층 루트 | 키 보호 |
| Seal/Unseal | PCR 조건부 키 잠금 | BitLocker |
| Attestation | 플랫폼 상태 서명 증명 | 원격 신뢰 |
부팅 측정 (Measured Boot)
BIOS/UEFI 펌웨어 → PCR[0]: 측정
MBR/부트로더 → PCR[4]: 측정
OS 커널 → PCR[8]: 측정
드라이버 → PCR[9]: 측정
...
각 단계: PCR[n] = SHA256(PCR[n-1] || 새로운_측정값)
→ 부팅 체인 전체가 TPM에 기록됨
→ Secure Boot: 서명된 코드만 실행
→ BitLocker: PCR 값이 맞아야 볼륨 키 해제
TPM 2.0 활용 (Python tpm2-pytss)
python
from tpm2_pytss import *
with ESAPI() as ectx:
# PCR 읽기 (측정값 확인)
pcr_selection = TPML_PCR_SELECTION.parse("sha256:0,1,2,3,7")
_, _, pcr_values = ectx.PCR_Read(pcr_selection)
for i, digest in enumerate(pcr_values[0].digests):
print(f"PCR[{i}]: {bytes(digest).hex()}")
# 난수 생성 (TRNG)
random_bytes = ectx.GetRandom(32)
print(f"Random: {bytes(random_bytes).hex()}")
# RSA 키 생성 (TPM 내부 저장)
key_template = TPM2B_PUBLIC(...) # RSA2048 설정
primary, _, _, _, _ = ectx.CreatePrimary(
ESYS_TR.OWNER, key_template
)
TPM vs HSM vs Secure Enclave
| 항목 | TPM | HSM | Secure Enclave |
|---|
| 위치 | 마더보드 솔더링 | 외장 장치 | CPU 내부 |
| 성능 | 낮음 | 높음 | 중간 |
| 비용 | 저렴 | 고가 | CPU 포함 |
| 주 용도 | 부팅 무결성 | 대량 암호 연산 | 앱 데이터 보호 |
| FIPS 140 | 레벨 1-2 | 레벨 3-4 | 비공식 |
관련 문서
- •[hardware-security-module|[HSM]]
- •[[secure-enclave|보안 엔클레이브]]
- •[[key-management|키 관리 시스템]]