DICE(Device Identifier Composition Engine)란?

TCG(Trusted Computing Group)가 정한, 기기 고유의 비밀과 부팅하는 각 계층 펌웨어의 측정값으로부터 계층별 비밀이나 키를 일방향 함수로 도출하는 구조. 각 계층은 다음 계층의 비밀을 만든 뒤 자신의 비밀을 읽을 수 없게 하고 나서 제어를 넘긴다. 펌웨어가 바뀌면 도출되는 키도 바뀌므로, 변조된 펌웨어는 올바른 키를 사용할 수 없다. TPM이 없는 작은 마이컴에서도 기기 식별과 증명을 실현할 수 있다.

일본어 명칭: DICE(Device Identifier Composition Engine)

DICE(Device Identifier Composition Engine)은(는) 하드웨어 보안의 최신 동향 등 1개 분야의 연습 문제 1개에 나와요.

분야: 하드웨어 보안의 최신 동향

계층별로 비밀을 도출한다

제조 시에 기기별로 다른 비밀(UDS: Unique Device Secret)을 퓨즈나 PUF 등으로 준비합니다. 전원을 켜면 처음 동작하는 작은 하드웨어나 ROM의 코드가 UDS와 다음에 동작하는 펌웨어의 해시값으로부터 일방향 함수로 CDI(Compound Device Identifier)라고 부르는 비밀을 만들고, UDS를 읽을 수 없게 한 뒤 제어를 넘깁니다. 다음 계층도 마찬가지로 자신의 CDI와 다음 계층의 측정값으로부터 다음 CDI를 만들고, 자신의 CDI를 지운 뒤 다음으로 진행합니다. 이렇게 각 계층의 비밀은 그 계층까지 부팅한 모든 펌웨어의 내용에 결부됩니다.

키와 인증서

각 계층은 자신의 CDI로부터 서명용 키 쌍을 결정적으로 만들 수 있습니다. 첫 계층에서 만드는 기기 식별용 키(DeviceID)는 펌웨어가 같은 한 바뀌지 않으므로, 제조 시에 제조사가 인증서를 발급해 둘 수 있습니다. 그 위 계층의 키(Alias 키 등)에는 아래 계층이 측정값을 포함한 인증서를 발급하고, 인증서의 연쇄로 '어느 기기가 어느 펌웨어로 동작하고 있는지'를 외부에 보여 줄 수 있습니다. 이것이 DICE에 의한 증명의 기본입니다.

이점과 주의점

필요한 하드웨어는 UDS를 보호하는 구조와 일방향 함수를 계산하는 작은 회로나 ROM의 코드뿐이므로, 저렴한 마이컴에도 넣기 쉬운 것이 이점입니다. 뒤 계층에 취약점이 있어 탈취되더라도, 앞 계층의 CDI나 UDS는 지워져 있으므로 유출되지 않습니다. 한편 펌웨어를 업데이트하면 도출되는 키가 바뀌므로, 업데이트 후에 새 인증서를 발급하는 절차 등을 설계해 두어야 합니다.

도전해 보기: DICE(Device Identifier Composition Engine) 관련 문제

TCG가 정한 DICE(Device Identifier Composition Engine)의 구조로 올바른 것은?

  1. A모든 기기에 같은 비밀 값을 넣어 두고, 펌웨어가 업데이트되어 바뀌어도 제조 시와 같은 키를 계속 사용한다
  2. B부팅할 때마다 서버에서 새 키를 네트워크로 다운로드하여 사용하고, 기기 안에는 비밀 값을 아무것도 갖지 않게 해 둔다
  3. C기기 고유의 비밀과 다음 계층 펌웨어의 측정값으로부터 그 계층의 비밀을 도출하고, 각 계층은 다음으로 넘어가기 전에 자신의 비밀을 읽을 수 없게 한다
정답과 해설 보기

정답: C. 기기 고유의 비밀과 다음 계층 펌웨어의 측정값으로부터 그 계층의 비밀을 도출하고, 각 계층은 다음으로 넘어가기 전에 자신의 비밀을 읽을 수 없게 한다

DICE에서는 전원을 켠 직후에 동작하는 작은 하드웨어나 ROM의 코드가, 기기 고유의 비밀(UDS)과 처음에 동작하는 펌웨어의 해시값으로부터 일방향 함수로 CDI라고 부르는 비밀을 만듭니다. 그 펌웨어는 다시 다음 계층의 측정값을 사용해 다음 계층의 CDI를 만들고, 자신의 CDI를 지운 뒤 제어를 넘깁니다. 펌웨어가 바뀌어 쓰이면 도출되는 비밀도 바뀌므로, 변조된 펌웨어는 올바른 키를 내세울 수 없으며, 뒤 계층이 탈취되어도 앞 계층의 비밀은 새어 나가지 않습니다. TPM이 없는 작은 마이컴에서도 적은 하드웨어로 기기 식별과 증명을 실현할 수 있습니다.

자주 묻는 질문

DICE와 TPM의 차이는 무엇인가요?

TPM은 키 보관이나 측정값 기록, 서명 등을 수행하는 독립된 부품(또는 그 기능)으로, 비교적 많은 회로를 필요로 합니다. DICE는 측정값으로부터 키를 도출하는 절차를 정한 것으로, 아주 작은 하드웨어로 실현할 수 있으며, 측정 결과가 기록이 아니라 키 자체에 반영됩니다. 목적은 비슷하지만 보호하는 방식과 필요한 규모가 다릅니다.

펌웨어를 업데이트하면 키가 바뀌어 곤란하지 않나요?

바뀌는 것 자체가 보안상의 이점이기도 하며, 오래된 펌웨어의 키는 업데이트 후에는 사용할 수 없게 됩니다. 실제 설계에서는 기기 식별용 키는 바뀌지 않는 계층에서 만들고, 바뀌는 계층의 키에는 업데이트할 때마다 새 인증서를 발급하는 등 계층에 따라 취급을 나눕니다.

해설 속 DICE(Device Identifier Composition Engine)

DICE(Device Identifier Composition Engine)이(가) 나오는 문제 (1)

  1. TCG가 정한 DICE(Device Identifier Composition Engine)의 구조로 올바른 것은?

관련 용어

TPM 마이컴(마이크로컨트롤러) 기밀 컴퓨팅(Confidential Computing) 레이저 오류 주입(Laser Fault Injection) 로직 로킹(Logic Locking) 섀도 스택(Shadow Stack) 수론 변환(Number-Theoretic Transform) 일시적 실행 공격(Transient Execution Attack) 제어 흐름 무결성(Control-Flow Integrity) 포인터 인증(PAC)

용어집으로 돌아가기