개요
Trusted platform module (TPM)은 software attestation을 위해서 도입되었다. TPM은 추가적인 chip을 메인보드에 심어서 작동한다. TPM은 암호화 알고리즘 엔진, 암호화키 생성, 해시 엔진, 난수 생성과 같은 기능을 제공하고 암호화 키 저장을 위한 비휘발성 메모리를 제공한다.
TPM은 다음과 같은 기능을 제공한다.
- 하드웨어 난수 생성
- 암호화 키 생성
- Remote attestation제공: 하드웨어와 소프트웨어 설정에 대한 해시키를 생성시킬 수 가 있기때문에, Remote의 사용자는 하드웨어나 소프트웨어의 변경이 있는지 없는지 검사할수 있다.
- 데이터 암호화
Use cases
Platform integrity
TPM은 하드웨어 그리고 소프트웨어의 무결성을 증명할 수 있다. UEFI는 TPM을 통해서 Root of trust를 획든한다. TPM은 하드웨어의 특정 부분에 Modificaton이 있는지 검출할 수 있기 떄문에, UEFI가 수정되었는지 확인할 수 있고, UEFI의 무결성을 증명할 수 있다. 그후, Trusted execution technology를 통해서 Trust chain을 형성, Computer의 하드웨어와 소프트웨어의 무결성을 증명할 수 있다.
Disk encryption
TPM을 통해서 Disk를 암호화 하기 위해서 사용된 key를 TPM을 통해서 생성함으로써, 안전한 디스크 암호화를 수행할 수 있다.
Limitations
- TPM이 제공하는 소프트웨어 Attestation은 소프트웨어가 업데이트하는 경우 사용할 수 없다. 대부분의 경우에, 소프트웨어는 계속해서 업데이트가 이루어지기 때문에, 이 기능을 Pratical하게 사용하는 예시는 별로 없다.
- TPM은 Physical access가 가능한 경우에는 공격을 막지 못한다. 예를 들어서 공격자는 CPU와 TPM모듈 사이의 Bus를 공격함으로써 정보를 탈취할 수 있다.
- TPM이 제공하는 Secure booting (TXT))는 Initial platform이 안전하다는 가정으로 이루어지지만, 대부분의 경우 Initial platform은 비용절감을 위하여 ROM이 아닌 Reprogrammable ROM, Flash memory에 저장되기 때문에, platform을 다시 프로그래밍하면 무결성을 공격할 수 있다.