TPM 기반 인증서 자동화, 보안과 편의성을 동시에!

by DD
2개월 전
조회수 2

ACME device-attest-01 챌린지를 활용하여 TPM 기반의 디바이스 인증 및 TLS/SSH 인증서 발급 자동화 시도

step-ca를 기반으로, 자체 attestation CA(Certificate Authority) 구축 및 PKCS11을 통한 키 관리 구현

attezt-agent를 통해 PKCS11 인터페이스를 제공하고, p11-kit을 활용하여 TPM 키 접근성을 확보

단기 인증서(Short-lived Certificates) 발급을 통해 보안성을 강화하고, mTLS(Mutual TLS) 인증을 위한 Nginx 설정 예시 제공

ACME device-attest-01 챌린지 및 Attestation CA

본 프로젝트는 ACME(Automatic Certificate Management Environment) device-attest-01 챌린지를 활용하여 TPM(Trusted Platform Module) 기반의 디바이스 인증을 구현한다. Attestation CA(Certificate Authority)는 디바이스의 무결성을 검증하고, EK(Endorsement Key) 해시를 기반으로 인증서를 발급한다. 데이터 미저장 정책(Zero-Retention Policy)을 통해 보안성을 강화하고, 단기 인증서(Short-lived Certificates) 발급을 통해 키 유출 위험을 최소화한다. step-ca를 사용하여 ACME 서버를 구축하고, Webauthn 표준을 준수하는 attestation format을 사용한다.

PKCS11 및 attezt-agent 아키텍처

attezt 프로젝트는 PKCS11(Public-Key Cryptography Standards #11) 인터페이스를 통해 TPM 키에 접근한다. PKCS11은 C 기반의 복잡한 인터페이스를 제공하므로, attezt-agent를 통해 p11-kit RPC 서버를 구축하여 접근성을 개선한다. attezt-agentACME 클라이언트 역할을 수행하며, p11-kit-client.so 모듈을 통해 PKCS11 소켓을 제공한다. 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 TPM 키를 안전하게 관리하고, mTLS(Mutual TLS) 인증을 위한 Nginx 설정을 제공한다.

TPM 기반 SSH 인증서 발급의 가능성

저자는 ACME를 통해 SSH 인증서를 발급하는 방안을 모색하며, IMA(Integrity Measurement Architecture) 서브시스템 또는 systemd를 활용하여 호스트네임 및 사용자 정보를 TPM 이벤트 로그에 기록하는 방법을 제안한다. 멀티모달 분석(Multimodal Analysis)을 통해 다양한 정보를 수집하고, ACME를 통해 SSH 인증서에 필요한 속성을 지정하는 방안을 제시한다. GDPR 규제 준수(GDPR Compliance)를 위해 개인 정보 보호에 유의해야 하며, 장기 인증서(Long-lived Certificates) 대신 단기 인증서(Short-lived Certificates)를 사용하는 것이 보안 측면에서 유리하다.

커뮤니티 반응 및 향후 과제

커뮤니티에서는 TPM 기반 인증서의 실용성에 대한 긍정적인 평가와 함께, 장기 인증서(Long-lived Certificates) 대신 단기 인증서(Short-lived Certificates)를 사용하는 것에 대한 논의가 이루어졌다. Revocation(인증서 폐기)의 어려움과 확장성(Scalability) 문제를 지적하며, DevID 및 AK(Attestation Key) 인증서를 한 번 발급받아 장기간 사용하는 방안을 제안했다. 비 Linux 환경에서의 지원 및 다양한 Common Name(CN) 추가 기능에 대한 요구사항이 제기되었다.

ACME device attestation, smallstep and pkcs11: attezt