MCU/MUP에서 비밀 데이터를 안전하게 저장하는 방법

키는 시스템 보안의 기반입니다.

보안 시스템의 기초는 시스템 ID의 진정성을 제공하고 시스템 정보의 기밀성을 보장하는 데 사용되는 소유 키입니다. 시스템이 갖춰야 할 가장 기본적인 키는 다음과 같습니다:
  • 하드웨어 고유 키(HUK)는 각 물리적 장비가 소유한 독점 키로, 고유성과 비밀성을 모두 갖추고 있습니다. 연결된 장치의 다양한 애플리케이션과 독점 암호화된 데이터에 필요한 키를 생성합니다. 
  • 신뢰의 뿌리 공개 키(ROTPK) 서명을 확인하는 데 사용되는 공개 키로, 장치의 보안 부팅 프로세스 중에는 인증을 통과한 소프트웨어만 장치에서 실행할 수 있도록 보장합니다.

HUK든 ROTPK든 시스템의 보안을 보장하려면 수정해서는 안 됩니다. 

또한, 다양한 애플리케이션에 대응하여 암호화 및 해독에 사용되는 AES 키와 서명을 확인하는 데 사용되는 RSA 키 또는 ECC 키를 포함하여 다른 기능을 가진 키도 시스템에 존재할 수 있습니다. 

이러한 키 구조는 암호화를 기반으로 시스템 ID 확인, 데이터 보호, 전송 암호화 및 기타 기능을 제공합니다. 이 구조는 시스템 내 모든 보안의 기초가 됩니다. 따라서 키 자체의 저장 및 보호도 전체 시스템에서 가장 중요한 요소입니다. 키를 저장하는 데 사용되는 위치를 키 스토어(Key Store)라고 부릅니다.

키 스토어 의 특징

키의 보안을 보장하려면 키 스토어에 다음 기능이 장착되어 있어야 합니다. 

  • 저장된 모든 키는 분할할 수 없는 전체여야 합니다. 

 

키 스토어의 모든 키는 전체적으로 생성, 변경, 삭제되어야 합니다. 따라서 키의 콘텐츠 일부가 알려진 값으로 대체될 가능성이 있는 경우, 분할 및 무차별 공격에 의해 쉽게 공격받을 수 있습니다.
  • 키 유형에 따라 다양한 스토리지 유형이 제공되며, 여기에는 다음이 포함됩니다: 
  • 정적 스토리지

정적 저장 장치의 키는 변경할 수 없는 기능이 있어야 하며, 일반적으로 ROM 또는 퓨즈의 기능을 사용하여 변경할 수 있습니다. 그러나 정적 저장 키는 변경할 수 없지만 여전히 해지해야 합니다. 해지된 키는 더 이상 키 사용의 보안을 보장하기 위해 액세스하거나 사용할 수 없습니다. 

  • 단기 스토리지 
단기 스토리지의 키 수명은 짧습니다. 현재 연결 기간에만 존재하거나 현재 전원 연결 주기에 존재하거나 현재 장치 등록 기간에 존재할 수 있습니다. 이러한 기능은 일반적으로 플래시 또는 SRAM을 저장 매체로 사용하여 달성할 수 있습니다.
  • 키 사용 범위를 제한하도록 키 속성 설정

키의 사용 범위는 키의 사용량과 해당 암호 알고리즘에 따라 제한할 수 있으며, 여기에는 AES 암호화 및 해독, ECC 서명 및 인증 등에만 사용할 수 있도록 제한하는 것도 포함됩니다. 이러한 제한의 이유는 주로 다음과 같습니다: 

  • CPU에서 키에 대한 액세스를 제한하면 소프트웨어 취약점으로 인한 키 노출을 방지할 수 있습니다.
  • 키의 사용 범위를 제한하면 키가 깨졌을 때 손실 범위를 줄일 수 있습니다.
  • 다양한 알고리즘에 키를 사용하면 공격 위험이 증가합니다.
  • 다른 용도로 하나의 키를 사용하면 키 지속 시간 길이에 충돌이 발생할 수 있으므로 지속 시간을 연장해야 하며 실제로 키가 가장 오래 지속됩니다.
  • 물리적 공격 방지
키 스토어에 저장된 키는 전체 시스템 보안의 기초가 됩니다. 소프트웨어 취약점으로 인한 노출 위험을 방지해야 할 뿐만 아니라 물리적 특징을 활용하는 사이드 채널 공격과 패키지를 열고 칩에 저장된 내용을 직접 측정하는 공격을 포함한 물리적 공격으로부터 보호해야 합니다.
 

키 스토어 케이스 

누보톤 M2354 를 예로 들어 보겠습니다. 여기에는 키 저장소 하드웨어 장치가 포함되어 있고, 키 저장 기능을 제공하며, 128비트에서 4096비트 길이의 키를 저장합니다. 완전한 키를 단위로 사용하여 키를 쓰고, 삭제하고, 해지하며, 무결성 검사도 받습니다. 키에 문제가 생기면 해당 키는 유효하지 않아 더 이상 사용할 수 없습니다. 

키 스토어에는 세 가지 유형의 저장 매체가 제공됩니다: 서로 다른 키의 지속 시간 요구에 따라 OTP, 플래시, SRAM이 제공되며, 여기서 OTP는 HUK 및 ROTPK와 같이 수정할 수 없는 키를 저장하는 데 사용할 수 있습니다. 또한 플래시는 클라우드 연결 인증에 사용되는 키를 저장하는 데 사용할 수 있으며 SRAM은 클라우드 연결 중에 무작위로 암호화된 키를 보관하는 데 사용할 수 있습니다. 

또한 키 스토어에서 키를 생성할 때 관련 속성을 지정하여 키를 CPU 또는 특정 암호화 엔진에서만 사용하도록 제한하여 키 사용을 더욱 제한하고 키의 보안을 강화할 수 있습니다. 

키 스토어는 사이드 채널 공격의 경우 저장 작업을 수행할 때 물리적 기능으로 인한 정보 유출을 줄이기 위해 사일런트 액세스 기능을 지원합니다. 또한 패키지를 열고 물리학을 사용하여 저장된 내용을 측정하는 공격의 경우 데이터 스크램블링이 제공되어 이로부터 보호할 수 있습니다. 또한 변조 탐지가 트리거되면 하드웨어 링크를 활성화하여 키 스토어의 모든 키를 지우고 취소할 수 있도록 설정하여 키가 유출되지 않도록 할 수 있습니다.

결론

최신 보안 시스템은 암호화 보호에 의존하며, 아무리 좋은 암호화 알고리즘이라도 여전히 안전한 키 저장에 의존하여 결과를 얻을 수 있습니다. 키가 노출되면 해당 키에 구조화된 모든 비밀은 더 이상 안전하지 않으므로 키를 저장할 수 있을 만큼 안전한 키 스토어를 갖는 것이 전체 시스템에 필수적입니다.