KR20230145166A - 읽기 전용 메모리(rom) 보안 - Google Patents

읽기 전용 메모리(rom) 보안 Download PDF

Info

Publication number
KR20230145166A
KR20230145166A KR1020237031202A KR20237031202A KR20230145166A KR 20230145166 A KR20230145166 A KR 20230145166A KR 1020237031202 A KR1020237031202 A KR 1020237031202A KR 20237031202 A KR20237031202 A KR 20237031202A KR 20230145166 A KR20230145166 A KR 20230145166A
Authority
KR
South Korea
Prior art keywords
rom
encrypted
datum
data
address
Prior art date
Application number
KR1020237031202A
Other languages
English (en)
Inventor
루퍼트 제임스 스와브릭
마이클 스테파노 프리츠 샤프너
티모시 제이 첸
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230145166A publication Critical patent/KR20230145166A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

집적 회로(IC) 칩을 갖춘 장치는 보안 회로용 부트 ROM과 같은 읽기 전용 메모리(118)(ROM)에 대한 공격으로부터 보호할 수 있다. 공격자는 ROM 콘텐츠를 수정하거나 ROM 읽기(판독)를 리디렉션하여 IC를 제어할 수 있다. 이러한 공격에 대처하기 위해 예시적인 구현에서는 암호화된 ROM 데이터(410)를 ROM 어레이(404)에 저장한다. ROM 제어기(402)는 각 ROM 라인의 주소(414)를 해당 암호화된 ROM 데이텀(412)에 암호화 방식으로 연결하는 데 사용된다. 암호화된 ROM 데이텀에 액세스하기 위해, 암호화 회로는 해당 ROM 주소를 기반으로 생성된 키를 사용하여 암호화된 ROM 데이텀을 복호화한다. 무결성 검사 절차의 일부로서, 암호화된 ROM 데이터를 기반으로 다이제스트(516)가 계산될 수 있다. 잠재적인 공격을 더욱 저지하기 위해, 제어기가 조정된 주소(514)를 사용하여 ROM 어레이로부터 암호화된 데이터를 읽기 전에 ROM 주소(512)가 조정(예를 들어, 스크램블링)될 수 있다.

Description

읽기 전용 메모리(ROM) 보안
전자 장치는 제조, 통신, 운송, 의료, 상업, 사회적 상호 작용 및 엔터테인먼트에서 중요한 역할을 한다. 예를 들어, 전자 장치는 상거래 및 통신을 위한 클라우드 기반 분산 컴퓨팅 기능을 제공하는 서버 팜에 전원을 공급한다. 전자 장치는 또한 의료 장치에서 가전 제품, 차량에서 산업 도구에 이르기까지 다양한 유형의 현대 장비에 내장되어 있다. 개인 전자 장치는 휴대용 비디오 보기 및 스마트 디지털 어시스턴트에 대한 편리한 액세스를 가능하게 한다. 또한 다재다능한 전자 장치인 스마트폰은 손이 닿는 곳에 있어야 하는 필수품이 되었다. 전자 장치가 널리 보급되고 현대 생활의 여러 측면에서 중요해짐에 따라 장치 보안이 필수가 되었다.
많은 사람들은 일반적으로 "컴퓨터 바이러스"라고도 하는 맬웨어에 대해 잘 알고 있다. 일부 맬웨어는 전자 장치에 저장된 정보에 무단으로 액세스하거나 전자 장치를 손상시키도록 설계되었다. 몇 가지 전략을 통해 특정 유형의 맬웨어에 대응하여 보안 위협으로부터 사용자의 장치와 정보를 안전하게 보호할 수 있다. 이러한 전략에는 탄력적인 운영 체제를 사용하고 정기적으로 업데이트하고, 안전한 컴퓨팅 관행에 참여하고, 맬웨어 방지 프로그램을 설치하는 것이 포함된다. 불행하게도 이러한 전략은 전자 장치를 모든 맬웨어 공격에 대해 무적 상태로 만들 수 없다.
또한 전자 장치는 소프트웨어 기반 맬웨어가 수행하는 공격 외에 다른 유형의 공격에도 취약할 수 있다. 예를 들어, 전자 장치의 안전하고 신뢰할 수 있는 동작과 이러한 장치에 저장된 정보의 보안은 하드웨어에 대한 물리적 공격과 무선 통신에 대한 무선 주파수 공격으로 인해 위험에 처할 수 있다. 즉, 일부 형태의 공격은 악의적인 행위자가 전자 장치를 손상시키고 잠재적으로 장치와 함께 사용되는 모든 계정에 액세스할 수 있도록 위에 나열된 전략을 우회하거나 약화시킬 수 있다.
전자 장치에는 다양한 기능을 가능하게 하는 지능을 제공하는 하나 이상의 집적 회로(IC)가 포함되어 있다. 이러한 기능은 상거래를 용이하게 하고, 의료 액세스를 간소화하고, 엔터테인먼트를 제공하고, 소셜 미디어 상호 작용을 지원하고, 위에서 식별된 기타 서비스를 활성화한다. 전자 장치는 보호해야 할 정보를 저장하거나 사용할 수도 있다. 이러한 기능을 지원하고 안전한 동작을 용이하게 하기 위해 일부 전자 장치에는 IC의 일부인 보안 회로 형태의 하드웨어 기반 보호 기능이 포함되어 있다. 불행하게도 보안 회로에 대한 기존 접근 방식은 오늘날 전자 장치에 가해지는 다양한 소프트웨어, 하드웨어 및 무선 공격에 대응하기에는 부적절하다.
서버 컴퓨터 및 스마트폰과 같은 특정 전자 장치는 사용자에게 서비스를 제공할 책임이 있다. 사용자는 이러한 전자 장치를 사용하여 금융 서비스, 항공 여행 또는 공식 정부 문서와 같은 하나 이상의 계정을 사용하여 액세스하는 중요한 서비스를 얻는다. 전자 장치와 계정 간의 연결로 인해 손상된 전자 장치는 계정에 연결된 서비스에 대한 원치 않는 액세스를 허용하거나 계정 자체에 대한 무단 액세스를 허용할 수 있다. 또한 이러한 전자 장치는 이러한 계정과 관련된 서비스를 제공하기 위해 금융 데이터, 사용자 이름, 암호 및 암호화를 위한 비밀 키와 같이 보호되어야 하는 계정 관련 정보를 저장할 수 있다. 안타깝게도 맬웨어 방지 프로그램은 전자 장치에 대한 모든 공격 경로를 차단할 수 없다. 예를 들어 맬웨어 방지 프로그램은 소형 프로브를 사용하여 집적 회로(IC) 칩의 전압 수준을 감지하는 직접적인 물리적 공격에 대한 보호 기능을 제공하지 않을 수 있다. 결과적으로, 물리적 공격에 대응하는 것을 포함하여 전자 장치에 대한 공격을 식별, 차단, 격퇴 또는 방해할 수 있는 전자 장치 하드웨어 기반 액션에 통합하는 것이 유리하다.
따라서 전자 장치에는 악의적인 행위자의 공격에 대응하기 위한 보안 회로가 포함될 수 있다. 어떤 경우에는 보안 회로가 부적절하거나 의심스러운 활동을 감지하고 보호 액션을 취한다. 보안 회로는 다양한 방식으로 구현될 수 있다. 예를 들어, 컴퓨터 엔지니어는 보안 회로를 독립형 IC 칩이나 SoC(System-on-a-Chip)와 같은 다른 칩의 일부로 제작할 수 있다. 어떤 경우든 보안 회로는 보호된 엔클레이브(enclave), 신뢰할 수 있는 칩 플랫폼, 하드웨어 기반 RoT(RoT)(예: 실리콘 RoT) 또는 이들의 조합의 일부일 수 있다. 보안 회로가 전자 장치에 어떻게 또는 어디에 통합되는지에 관계없이 컴퓨터 엔지니어는 다음에 설명된 것처럼 다양한 유형의 공격에 대응하기 위해 보안 회로를 설계할 수 있다.
전자 장치에 대한 공격은 정보를 추론하기 위해 화면 이미지를 관찰하거나 반복적인 동작을 모니터링하는 프로그램, 메모리의 보호된 영역에서 데이터를 읽으려고 시도하는 애플리케이션, 회로의 직접적인 물리적 탐색 등의 형태를 취할 수 있다. 보안 회로는 이러한 공격 중 하나 이상에 대처하기 위해 여러 기능을 수행한다. 예를 들어 보안 회로는 사용 중, 전송 중 또는 저장 중에 암호화 키를 보호할 수 있다. 이를 위해 전용 메모리와 전용 데이터 버스를 사용할 수 있다. 보안 회로는 또한 고품질 의사 난수를 생성하거나 맬웨어로 동작할 수 있는 애플리케이션과 분리된 영역에서 암호화 엔진을 동작할 수 있다. 또한 보안 회로는 하드웨어가 정확하고 변조되지 않은 부팅 가능한 기본 입/출력 시스템(BIOS)을 사용하여 부팅되도록 보장할 수 있다.
따라서 보안 회로는 전자 장치에 대한 다양한 공격에 대처하기 위해 다양한 기능 세트를 구현하는 일을 담당할 수 있다. 그러나 보안 회로에 대한 기존 접근 방식은 임시 기반으로 설계된 하드웨어 아키텍처를 사용한다. 보안 회로의 서로 다른 회로 부분은 서로 상대적으로 분리되어 설계될 수도 있다. 결과적으로 다양한 보안 위협에 대처하도록 설계된 회로 부분이 의도한 대로 상호 운용되지 않아 하드웨어의 보안이 취약해질 수 있다. 또한 컴포넌트 간 통신이 불량하면 악의적인 공격자가 될 수 있는 또 다른 공격 경로가 생성된다. 또한 이 임시 접근 방식은 보안 회로의 설계 및 테스트 단계를 더 힘들고, 더 오래 걸리고, 더 많은 비용이 들게 한다. 이로 인해 보안 아키텍처가 개발될 때 일부 보안 위협이 무시되거나 부적절하게 해결될 수 있다. 따라서 이러한 임시 아키텍처는 다양하고 다양한 보안 위협으로부터 전자 장치를 보호하는 것을 더욱 어렵게 만든다.
그러나 이 문서는 일부 예에서 전자 장치에 대한 다양한 형태의 공격에 대처하기 위해 탄력적이고 프로그래밍 가능한 보안 하드웨어를 생성할 수 있는 적응 가능하고 유연한 프레임워크 또는 플랫폼을 제공하는 접근 방식을 설명한다. 보안 회로에 대한 일부 구현에서 서로 다른 유형의 회로 또는 서로 다른 보안 관련 기능을 제공하는 회로 부분은 그럼에도 불구하고 확실하고 일관된 신호를 생성하는 광범위한 프로토콜을 사용하여 통신한다. 통신 프로토콜을 사용하면 다양한 보안 관련 기능을 제공하는 회로가 지정된 설계 프레임워크에 따라 원활하게 상호 작용할 수 있다. 설계 프레임워크와 통신 프로토콜은 서로 별도로 설계된 회로 컴포넌트도 안정적이고 예측 가능한 상호 작용과 함께 일관되게 배포하는 데 적합하도록 호환 가능한 컴포넌트를 생성한다. 본 명세서에서 사용되는 바와 같이, "호환 가능한 컴포넌트(comportable components)"는 컴포넌트가 함께 사용하기에 적합하도록 공통 프레임워크를 준수하도록 설계된 컴포넌트를 포함한다. 경우에 따라 호환성은 집적 회로 칩의 두 개 이상의 보안 관련 컴포넌트 간에 어느 정도의 플러그 앤 플레이 기능을 제공한다.
보안 회로에는 프로세서 및 상호접속 외에도 여러 주변 장치가 포함될 수 있다. 여러 주변 장치의 각 주변 장치는 보안 회로의 안전 또는 적절한 기능에 기여하는 일부 기능을 수행할 수 있다. 따라서 각 주변 장치는 보안 관련 핵심 기능 또는 지원 기능을 제공할 수 있다. 데이터에 대한 액세스 제어 또는 암호화 작업 수행과 같은 기능은 보안 회로의 전반적인 목적을 지원한다. 이러한 목적에는 전자 장치의 다른 회로 및/또는 IC에 의한 보안 컴퓨팅을 가능하게 하는 기능을 제공하는 것이 포함될 수 있다. 예측 가능성과 상호 운용성을 위해 각 주변 장치는 호환 가능한 컴포넌트로 구현될 수 있다.
일반적으로 컴퓨팅 및 기타 전자 장치는 물리적 공격을 포함하여 데이터를 손상시키거나 도용할 수 있는 공격을 받기 쉽다. 하드웨어 RoT(Root of Trust) 체계는 일부 물리적 공격을 포함하여 많은 공격에 대처할 수 있다. RoT 실리콘은 보안 기능을 제공하는 집적 회로로 구현할 수 있다. 어떤 경우에는 실리콘 RoT 칩에 읽기 전용 메모리(ROM)가 포함되어 있어 ROM의 라인을 읽거나 수정하려고 시도할 수 있는 나쁜 행위자의 물리적 공격을 받을 수 있다. 이러한 물리적 공격은 ROM 엔트리(예: ROM 명령(명령어) 라인) 또는 일반적으로 ROM 데이터가 판독 및/또는 실행되는 동안 수행될 수 있다.
그러나 ROM은 공격에 저항하도록 설계되거나 구축될 수 있다. 또한, ROM 블록 또는 모듈은 보안 칩의 호환 가능한 컴포넌트(예: ROM 주변 장치)로 구현될 수 있다. 실리콘 RoT 칩 또는 기타 보안 회로에서 ROM을 보호하기 위해 ROM을 암호화할 수 있다. 이 문서에서는 암호화를 사용하여 ROM 주소와 ROM 데이터를 함께 묶는 방법에 대해 자세히 설명한다. 예를 들어, ROM 제어기는 해당 ROM 주소를 사용하여 ROM 데이텀(예를 들어, 특정 ROM 주소에 저장된 일부 또는 모든 데이터와 같은 ROM 메모리에 저장된 데이터 아이템)을 복호화하기 위한 키를 생성할 수 있다. 각각의 ROM 주소를 ROM 어레이에 저장된 관련 ROM 데이텀에 암호화 방식으로 연결함으로써 ROM에 대한(예: 상대적으로 좁은) 주소 버스에 대한 오류 공격을 사용하여 읽기를 다른 ROM 엔트리로 쉽게 리디렉션할 수 없다. 이러한 ROM 어레이 읽기(판독)는 코드 실행, 데이터 검색 또는 ROM 엔트리에 대한 무결성 검사 수행과 관련될 수 있다. 콘텐츠에 액세스하는 ROM 주소(예: ROM 데이터 중 해당 항목이 저장되는 ROM 메모리의 주소)에 대한 ROM 콘텐츠의 이러한 암호화 연결은 적이 암호 복호화 키를 알고 있는 경우에도 ROM을 보호할 수 있다.
실리콘 RoT 환경의 ROM이 무의식적으로 수정되지 않도록 보호하기 위해 ROM 데이터는 해싱 알고리즘을 사용하여 파생되고 ROM에 저장되는 예상된 다이제스트(또는 "다이제스트 값")와 연결될 수 있다. 부팅하는 동안, ROM은 저장된 예상된 다이제스트 값이 현재 ROM 데이터에서 동시에 계산되는 다른 다이제스트 값과 일치하는지 확인할 수 있다. 이 보호 접근 방식의 잠재적인 취약점은 공격자가 ROM 무결성 검사기를 동일한 데이터 비트 세트를 가진 다른 ROM 엔트리로 일시적으로 리디렉션하여 주소 버스에 대한 결함 공격을 숨기려고 시도할 수 있다는 것이다.
첫째, ROM 제어기와 ROM 어레이를 갖는 ROM의 무결성을 보호하기 위해 ROM 어레이에 저장된 ROM 데이터를 암호화할 수 있다. 전술한 바와 같이, ROM 데이터는 각각의 ROM 주소를 각각의 ROM 데이텀에 연결하는 방식으로 암호화될 수도 있다. 또한, ROM 제어기는 ROM 어레이에 액세스하는 데 사용되는 조정된 주소를 생성하기 위해 주소를 조정(예를 들어, 예를 들어, 키 또는 암호를 기반으로 하는 대체 및/또는 순열 알고리즘을 사용하는 것과 같은 스크램블)할 수 있다. 이 주소 조정은 공격자가 ROM 무결성 검사 중에 주소 버스를 리디렉션하려고 시도하는 경우 수정된 ROM이 감지되지 않는 위험을 더욱 줄일 수 있다.
리디렉션 기반 공격의 위험을 최소한 추가로 줄이기 위해, 이 문서에서는 ROM 어레이에 저장된 ROM 데이터의 중복 인스턴스의 양을 줄이기 위해 암호화 알고리즘 및/또는 암호화 키를 선택하는 방법을 설명한다. 암호화 알고리즘 및/또는 암호화 키를 반복적으로 변경하고 결과 ROM 엔트리를 검토함으로써 경우에 따라 중복 ROM 엔트리를 완전히 피하거나 생략할 수 있다. 이는 ROM 무결성 검사기가 동작하는 동안 대체 ROM 엔트리를 대상으로 하는 리디렉션 공격의 잠재적 효과를 최소한 제한하고 제거할 수 있다. 따라서 ROM 어레이는 서로 고유한 ROM 엔트리를 저장할 수 있으며, ROM 제어기는 해싱 알고리즘을 안전하게 적용하여 ROM의 현재 내용을 정확하게 반영하는 다이제스트 값을 계산할 수 있다.
ROM 보안을 위한 장치 및 기술에 대하여 다음 도면을 참조하여 설명한다. 특징 및 컴포넌트를 참조하기 위해 도면 전체에서 동일한 번호가 사용된다.
도 1은 ROM 보안이 구현될 수 있는 보안 회로를 포함하는 집적 회로(IC)를 갖는 예시적인 장치를 도시한다.
도 2는 ROM 블록과 같이 적합하도록 구현될 수 있는 복수의 예시적인 주변 장치를 포함하는 복수의 회로 컴포넌트를 포함한 예시적인 보안 회로를 도시한다.
도 3a는 다른 회로 컴포넌트와의 호환성을 지원하기 위해 적어도 하나의 인터페이스를 포함하는 예시적인 주변 장치를 도시한다.
도 3b는 호환 가능한 목표가 충족되도록 주변 장치 설계를 분석하는 접근 방식의 예를 보여준다.
도 3c는 레지스터 인터페이스 및 예시적인 통신 신호를 포함하는 예시적인 주변 장치를 도시한다.
도 4는 ROM 어레이의 암호화된 ROM 데이터에 액세스하는 것과 관련하여 ROM 제어기 및 ROM 어레이를 포함하는 예시적인 ROM을 도시한다.
도 5는 ROM 어레이의 암호화된 ROM 데이터의 무결성을 검사하는 맥락에서 ROM 제어기 및 ROM 어레이를 포함하는 예시적인 ROM을 도시한다.
도 6은 암호화된 ROM 데이터를 갖는 보안 회로의 ROM 주변 장치로서 구현될 수 있는 예시적인 ROM을 도시한다.
도 7은 도 6의 ROM의 ROM 어레이에 액세스하기 위한 다양한 신호를 갖는 예시적인 타이밍도를 도시한다.
도 8은 탄력적(resilient) ROM 무결성 검사 절차에 대한 구현에 따른 예시적인 방식을 도시한다.
도 9는 스타트업 또는 리셋과 같은 ROM의 무결성을 검사하기 위한 장치에 대한 예시적인 방법을 도시한다.
도 10은 탄력적 ROM 무결성 검사 절차에 따른 예시적인 방법을 도시한다.
도 11은 복호화를 통해 암호화된 ROM 데이터에 액세스하는 것과 같이 ROM 암호화를 구현하는 장치에 대한 예시적인 방법을 도시한다.
도 12는 암호화된 ROM 데이터를 포함하는 ROM 어레이에 액세스하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 13은 암호화된 ROM 데이터를 포함하는 ROM 어레이의 무결성을 검사하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 14는 하나 이상의 설명된 양태에 따라 ROM 보안을 구현할 수 있는 예시적인 전자 장치의 다양한 컴포넌트를 도시한다.
개요
전자 장치는 통신, 안전 및 제조와 관련된 장치와 같이 현대 사회에 중요한 기여를 한다. 각 전자 장치는 일부 기능을 제공하는 처리(프로세싱) 기능이 있는 집적 회로(IC)에 의존한다. 이러한 많은 기능의 중요한 특성으로 인해 전자 장치에는 보호 기능을 제공하는 보안 회로가 있는 IC가 포함될 수 있다. 보안 회로는 정보가 우발적으로 노출되거나 일부 기능이 유해하거나 승인되지 않은 방식으로 사용될 가능성을 줄인다. 보안 회로는 다양한 형태로 실현될 수 있으며 그 중 하나는 RoT(Root of Trust) 패러다임을 포함한다.
RoT 실리콘을 사용하면 하드웨어 기반 메커니즘이 정보에 대한 부적절한 액세스 방지, 장치의 무단 사용 방지 등의 측면에서 컴퓨팅을 안전하게 유지한다. 실리콘 RoT 원칙은 하드웨어 인프라와 여기에서 실행되는 소프트웨어가 모두 의도한 신뢰할 수 있는 상태로 유지되도록 하는 데 도움이 될 수 있다. 이를 위해 실리콘 RoT는 승인되고 검증 가능한 코드를 사용하여 중요한 시스템 컴포넌트가 안전하게 부팅되는지 확인할 수 있다. 따라서 서버 또는 다른 전자 장치가 올바른 펌웨어로 부팅되고 펌웨어가 낮은 수준의 맬웨어에 감염되지 않았는지 확인할 수 있다. 실리콘 RoT는 추가 또는 대체 보안 이점을 제공할 수 있다. 예를 들어 암호학적으로 고유한 시스템 ID를 제공할 수 있다. 이 고유 ID를 통해 운영자는 전자 장치가 합법적인지 확인할 수 있다. 또한 암호화 키 및 기타 정보를 위조 방지 사일로(silo)에 보관하여 장치에 물리적으로 액세스할 수 있는 사람도 정보를 얻지 못하도록 방지하거나 적어도 저지할 수 있다. 하드웨어에 고정된 RoT 서비스는 신뢰할 수 있는 변조 방지 감사 레코드 및 기타 런타임 보안 서비스도 제공할 수 있다.
칩 설계자는 실리콘 RoT 기술을 보안 기능 제공에 중점을 둔 개별 IC 칩에 통합할 수 있다. 또는 RoT 실리콘을 CPU(중앙 처리 장치) 칩 또는 패키지, GPU(그래픽 처리 장치) 칩 또는 카드, SoC(시스템 온 칩), 메모리 저장 장치 등을 포함하는 다른 회로와 통합할 수 있다. 일반적으로 보안 회로는 몇 가지 예를 들면 서버 마더보드, 네트워크 카드, 클라이언트 장치(예: 노트북 및 스마트폰), 소비자 라우터, 사물 인터넷(IoT) 장치, 고정 및 휴대용 저장 장치에서 동작할 수 있다. RoT를 실리콘에 고정함으로써 애플리케이션이나 전자 장치에 관계없이 하드웨어, 펌웨어 및 소프트웨어 수준에서 컴퓨팅 보안이 향상된다. 실리콘 RoT는 또한 직접 또는 네트워크를 통해 서로 통신하는 다양한 장치에서 보안을 강화한다. 일부 보안 및 회로 설계 원칙은 실리콘 또는 하드웨어 RoT 환경을 사용하여 이 문서에 설명되어 있지만, 설명된 원리는 일반적으로 보안 회로에 적용할 수 있기 때문에 이는 단지 예로서 수행된다.
오늘날의 컴퓨팅 환경에서 악의적인 행위자는 다양한 공격 벡터를 사용하여 무수한 수준에서 전자 장치를 공격할 수 있다. 예를 들어, 노트북에 저장되어 있지만 사용자가 보호하기를 원하는 정보를 얻기 위해 인터넷을 통해 전송되는 맬웨어를 사용하여 공격할 수 있다. 또한 공격에는 와이파이(Wi-Fi®) 라우터나 IoT 장치와 같은 전자 장치를 부팅하는 데 사용되는 펌웨어에 장치를 운반하는 동안 또는 장치가 관찰되지 않는 위치에서 동작하는 동안 맬웨어를 주입하는 것이 포함될 수 있다. 또 다른 예로, 악의적인 행위자는 전자 장치를 훔치고 장치에 직접적인 물리적 공격을 가할 충분한 시간을 가질 수 있다. 이러한 직접적인 물리적 공격에는 전선 절단, 전압 프로빙(probing), 레이저로 오류 주입, 추세를 관찰하고 정보를 추론하기 위해 코드를 반복적으로 실행하는 등이 포함될 수 있다.
따라서 보안 회로는 전자 장치에 대한 다양한 공격에 대처하기 위해 다양한 기능 세트를 구현하는 일을 담당할 수 있다. 그러나 보안 회로에 대한 기존 접근 방식은 임시 기반으로 설계된 하드웨어 아키텍처를 사용한다. 보안 회로의 서로 다른 회로 부분은 서로 상대적으로 분리되어 설계될 수도 있다. 결과적으로 다양한 보안 위협에 대처하도록 설계된 회로 부분이 의도한 대로 상호 운용되지 않아 하드웨어의 보안이 취약해질 수 있다. 또한 컴포넌트 간 통신이 불량하면 악의적인 공격자가 될 수 있는 또 다른 공격 경로가 생성된다. 또한 이 임시 접근 방식은 보안 회로의 설계 및 테스트 단계를 더 힘들고, 더 오래 걸리고, 더 많은 비용이 들게 한다. 이로 인해 보안 아키텍처가 개발될 때 일부 보안 위협이 무시되거나 부적절하게 해결될 수 있다. 따라서 이러한 임시 아키텍처는 다양하고 다양한 보안 위협으로부터 전자 장치를 보호하는 것을 더욱 어렵게 만든다.
그러나 이 문서에서는 전자 장치에 대한 다양한 형태의 공격에 대처하기 위해 탄력적이고 프로그래밍 가능한 보안 하드웨어를 생성할 수 있는 적응 가능하고 유연한 프레임워크 또는 플랫폼을 제공하는 접근 방식에 대해 설명한다. 보안 회로에 대한 일부 구현에서 서로 다른 유형의 회로 또는 서로 다른 보안 관련 기능을 제공하는 회로 부분은 그럼에도 불구하고 확실하고 일관된 신호를 생성하는 광범위한 프로토콜을 사용하여 통신한다. 통신 프로토콜을 사용하면 다양한 보안 관련 기능을 제공하는 회로가 지정된 설계 프레임워크에 따라 원활하게 상호 작용할 수 있다.
설계 프레임워크와 통신 프로토콜은 "호한 가능한(comportable)" 컴포넌트를 생성하므로 서로 별도로 설계된 회로 컴포넌트도 안정적이고 예측 가능한 상호 작용과 함께 일관되게 배포하는 데 적합하다. 예를 들어, 통신 및 기타 형태의 상호 작용(예: 버스, 인터페이스 또는 메모리와 같은 리소스 공유)은 예측 가능성 및 상호 운용성의 척도를 제공하기 위해 적어도 부분적으로 표준화될 수 있다. 본 명세서에서 사용되는 바와 같이, "호환 가능한 컴포넌트"는 컴포넌트가 함께 사용하기에 적합하도록 공통 프레임워크를 준수하도록 설계된 컴포넌트를 포함한다. 경우에 따라 호환성(comportability)은 집적 회로 칩의 두 개 이상의 보안 관련 컴포넌트 간에 어느 정도의 플러그 앤 플레이 기능을 제공한다.
일부 구현에서 보안 회로는 "중앙 집중식" 프로세서 및 상호접속 외에도 여러 주변 장치를 포함한다. 여러 주변 장치의 각 주변 장치는 보안 회로의 안전 또는 적절한 기능에 기여하는 일부 기능을 수행한다. 따라서, 각각의 주변 장치는 핵심 보안 관련 기능 또는 보조 보안 관련 기능을 제공할 수 있다. 데이터에 대한 액세스를 제어하거나 암호화 작업을 수행하는 것과 같은 기능은 전자 장치의 다른 회로 및/또는 IC에 의한 보안 컴퓨팅을 가능하게 하는 기능을 제공하는 것을 포함하는 보안 회로의 전반적인 목적을 지원한다. 예측 가능성과 상호 운용성을 위해 각 주변 장치는 호환 가능한 컴포넌트로 구현될 수 있다.
호환 가능한 컴포넌트 및/또는 주변 장치로 구현될 수 있는 회로 컴포넌트의 예는 ROM 블록 또는 모듈이다. ROM 블록은 ROM 어레이와 ROM 제어기를 포함할 수 있다. ROM 어레이에는 재시작 또는 전원 켜기 시나리오에서 전자 장치를 초기화하는 데 사용되는 부팅-레벨 명령이 포함될 수 있다. ROM 블록을 보호하기 위해 ROM 어레이의 데이터를 암호화할 수 있으며 ROM 제어기는 ROM에 대한 게이팅된 액세스(gated access)를 제공할 수 있다.
또한 ROM 블록은 암호화를 사용하여 ROM 주소와 관련 ROM 데이터를 함께 타이(tie)할 수 있다. 여기서 "타이(tie)"는 "연결하다"라는 의미로 사용될 수 있다. 특히, ROM 블록은 ROM 데이터의 암호화를 위한 알고리즘에서 ROM 주소를 파라미터로 사용하여 ROM 데이터의 ROM 데이터와 ROM 주소를 연관시킬 수 있다. 예를 들어, 마스크 ROM(예: 워드 라인과 비트 라인의 그리드가 있는 ROM; 일반적으로 워드 라인은 주소 입력을 제공하고 ROM 메모리는 비트 라인에서 데이터를 출력한다)은 PRINCE 암호(PRINCE cipher)와 같은 암호를 사용하여 스크램블(scramble)될 수 있다. 각각의 ROM 주소는 주소와 데이텀(datum)을 함께 연결하기 위해 여러 방식 중 임의의 방식으로 관련된 각각의 ROM 데이텀을 스크램블링하는 데 사용될 수 있다. 예를 들어, 각각의 주소는 각각의 ROM 데이텀을 복호화하는 데 사용될 수 있다. 일부 구현에서, 복호화된 ROM 데이터를 생성하기 위해 해당 ROM 데이텀의 버전에 적용되는 키스트림 값과 같은 적어도 하나의 키를 생성하기 위해 스크램블되지 않은 ROM 주소가 사용된다. 예를 들어 "카운터(CTR) 모드"에서 PRINCE와 같은 블록 암호(block cipher)를 사용할 수 있다. ROM 엔트리 또는 라인과 같은 각 ROM 데이텀은 ROM에 해당하는 비트(예를 들어, 보안 회로에 의해 수행되는 프로세스를 정의하는 사용자 데이터 또는 프로그램 명령을 인코딩하는 ROM 비트, 예를 들어 알고리즘을 정의하는 ROM 비트)와 해당 데이텀의 ROM 비트에 대한 오류 수정 코드(ECC: error-correction code) 값에 해당하는 비트를 포함할 수 있다.
따라서, ROM의 이 "암호화(encryption)"는 예를 들어 각 ROM 데이텀에 대한 암호 복호화 절차의 일부로 각 ROM 주소를 사용하여 ROM 주소와 ROM 데이터를 함께 연결하는 데 사용할 수 있다. 이 주소 기반 암호화 접근 방식은 주소 버스에 대한 오류 공격이 ROM 어레이의 읽기(판독)를 리디렉션(redirect)하는 데 쉽게 사용될 수 없도록 한다. ROM 주소와 데이터를 암호화 방식으로 함께 연결하면 정상적인 ROM 액세스를 리디렉션하는 공격을 막을 수 있다(예를 들어, 공격자가 NOP(no operation)로 전환하여 부트 코드에서 가져온 명령을 건너뛸 수 있도록 함). 이는 ROM 데이터를 요청하는 "외부 회로(external circuitry)"(예: 메인 프로세서)의 작업을 보호한다.
ROM을 스크램블링하면 저장된 ROM 코드를 변경하여 장치를 손상시키려는 공격자가 더 어려워진다. 예를 들어, 공격자가 원래의 암호화되지 않은 ROM 데이텀에서 1비트 변경을 원한다고 가정한다. 이 1비트 변경은 일반적으로 무결성 검사 실패의 원인이 되는 것을 피하면서 명령을 변경할 수 있다. 반면에 암호화된(예: 스크램블된) ROM 데이터의 경우, 공격자가 스크램블된 데이터를 수정하려는 경우 암호화된 ROM 데이텀에 대한 이러한 변경에는 예상되는 19비트(예: 39비트 워드의 약 절반)가 소요될 수 있다. 따라서 마스크 ROM 스크램블링은 마스크 ROM에 대한 편집에 대한 복원력(resilience)을 제공하고 ROM 매크로의 경계에서 결함 주입 공격을 더 어렵게 만든다.
예시적인 구현에서, 보안 회로의 ROM 블록의 ROM 데이터가 암호화된다. 암호화는 ROM 주소와 관련 ROM 데이터를 함께 연결하는 데 사용된다. ROM 주소 및/또는 관련 ROM 데이터는 스크램블링될 수 있다. 경우에 따라 ROM 주소는 ROM 데이터의 스크램블을 해제하는 데 사용된다. ROM 데이터는 해당 보안 값(예: ECC 비트)과 공동으로 스크램블링될 수 있다. 이 경우 ROM 라인별 보안 값을 함께 사용하여 ROM 라인으로 저장할 수 있다. ROM 주소를 사용하여 ROM 데이터의 스크램블을 해제하려면 ROM 주소를 사용하여 관련 ROM 데이터의 스크램블을 해제하는 키를 생성한다. 스크램블되지 않은 ROM 주소는 ROM의 엔트리를 읽기 위해 스크램블된 ROM 주소로 조정되거나 변환되어 ROM을 수정하려는 공격자의 노력을 더욱 복잡하게 만들고 방해하며 장치가 수정된 ROM으로 부팅되도록 할 수 있다.
다른 예시적인 구현에서, ROM 블록은 ROM 데이터의 무결성을 검증하기 위한 ROM 검사기 회로를 갖는 ROM 제어기 및 ROM 어레이를 포함한다. ROM 어레이(예: 마스크 ROM)을 변경한 후 공격자는 시작할 때 ROM 검사기와 ROM 어레이 간의 통신에 장애를 일으키거나 통신을 제어하여 이러한 변경 사항을 숨기려고 시도할 수 있다. 예를 들어, 공격자는 ROM 데이터의 변경 사항을 숨기기 위해 ROM 검사기 회로와 ROM 어레이 사이의 데이터 버스를 조작하려고 시도할 수 있다. 마찬가지로 공격자는 주소 버스의 하위 비트를 제어하려고 시도하여 수정된 워드를 건너뛰고 수정되지 않은 복사본을 가리키도록 ROM 액세스를 리디렉션하여 ROM 검사를 파괴(subverting)할 수 있다.
이러한 잠재적인 공격은 고정 키로 ROM을 스크램블하고 무결성 검사를 위해 스크램블된 데이터에 대해 해시를 실행하여 적어도 부분적으로 좌절될 수 있다. 따라서 스크램블링 방식의 확산 특성으로 인해 데이터 버스에 대한 공격이 더욱 어려워진다. 예를 들어 스크램블되지 않은 데이터에 단일 비트를 변경하려면 공격자는 ROM 어레이에서 많은 비트를 변경한 다음 데이터 버스에서 동일한 비트를 제어하여 변경 사항을 숨길 필요가 있다. 또한 주소 버스에 대한 공격은 스크램블링이 주소를 데이터 스크램블링 체계에 통합하는 방법에 의해 패배(defeated)할 수 있다.
추가 구현 예에서 ROM 데이터는 암호화되고 ROM 무결성 검사기는 암호화된 ROM 데이터에서 동작한다. ROM 무결성 검사기 회로는 각 부팅 시 또는 리셋 시 ROM 데이터가 변경되지 않았는지 확인할 수 있다. ROM 무결성 검사기 회로는 라인별로 동작할 수 있다. 예를 들어 무결성 검사기 회로는 다이제스트 값을 계산하기 위해 ROM 데이터가 여전히 암호화되어 있는 동안 해싱 알고리즘이 ROM의 각 라인에 적용되도록 할 수 있다. 후술하는 바와 같이, ROM으로부터 검색될 수 있는 예상된 다이제스트 값은 암호화된 ROM 데이터가 해싱 알고리즘을 수행하는 회로에 공급된 후에 계산된 다이제스트 값과 비교될 수 있다. 무결성 검사기 회로는 다이제스트 값이 일치하지 않으면 알람를 생성한다.
ROM 블록 또는 모듈에는 ROM 어레이와 ROM 제어기가 포함될 수 있다. 일반적으로 마스크 ROM과 같은 ROM 어레이의 내용(콘텐츠)은 일련의 보안 전략의 일부로 뒤섞일 수 있다. 부팅 시 ROM 제어기는 ROM 어레이에서 읽고 추출된 스크램블된 콘텐츠를 해싱 알고리즘을 적용할 수 있는 다이제스트 계산 회로와 같은 적어도 하나의 다이제스트 검사 모듈로 보낸다. 이 다이제스트 계산 회로는 SHA-3(Secure Hash Algorithm 3)과 같은 해싱 알고리즘을 사용하여 콘텐츠의 다이제스트를 계산한다. 다이제스트는 cSHAKE와 같은 SHA3의 사용자 지정 가능한 임의 메시지 길이 버전을 사용하여 계산할 수도 있으며, 이는 주어진 애플리케이션에 대해 해싱 함수를 고유하게 만들기 위해 회로가 ROM 데이터에 ROM 검사기 관련 함수 문자열을 접두사로 붙일 수 있도록 한다. ROM 데이터 라인은 다이제스트 계산 회로의 블록 크기와 정렬되지 않을 수 있으며, 이 경우 라인은 블록 길이로 채워질 수 있다(예: 0으로). ROM 제어기는 다이제스트 계산 회로에서 얻은 다이제스트를 예상된 다이제스트와 비교하여 ROM 어레이에 액세스할 수 있다. ROM 어레이는 예상된 다이제스트를 하나 이상의 ROM 주소 위치에 저장할 수 있다. ROM 제어기는 호스트 프로세서와 같은 ROM 외부의 회로에 계산된 다이제스트 값을 제공할 수도 있다. ROM 제어기는 예를 들어 다른 컴포넌트에 의해 액세스 가능한 ROM의 인터페이스 레지스터를 통해 계산된 다이제스트 값을 노출할 수 있다. 이를 통해 하나 이상의 다른 컴포넌트가 ROM 데이터가 변조되지 않았는지 확인할 수 있다.
예시적인 구현에서, 고정된 스크램블링 키는 적어도 대부분, 일부 경우에는 모두 ROM 라인이 서로 구별되거나 상이하도록 선택될 수 있다. 이는 주소 버스에 대한 오류 공격이 다이제스트 계산 회로와 통신하는 ROM 제어기를 동일한 ROM 명령을 저장하는 다른 라인으로 일시적으로 리디렉션하여 변경을 숨길 수 없음을 의미한다.
또한, 스크램블된 데이터를 해싱하는 것은 스크램블되지 않은 데이터를 해싱하는 것보다 더 내결함성이 있다. 스크램블되지 않은 ROM 데이터를 약간 변경하려는 공격자는 스크램블된 ROM 데이터를 비교적 많이 변경해야 한다. 해시는 스크램블된 데이터에 대해 계산되기 때문에 공격자는 변경 사항을 숨기기 위해 오류를 범하거나 많은 비트를 제어해야 한다. 따라서 ROM 데이터의 암호화와 암호 키의 선택을 종합하면 ROM 데이터 자체와 주소 버스에 대한 공격이 성공할 가능성이 훨씬 낮아질 수 있다.
다른 예시적인 구현에서, ROM의 다중 라인에 대한 적어도 하나의 다이제스트를 생성하는 것과 관련하여, 프로세스는 ROM에 저장될 때 중복 명령어 라인을 줄이는 암호화 알고리즘 및/또는 암호화 키를 선택하는 것을 수반할 수 있다. 또한, 중복 저장된 명령어 라인을 제거하는 암호화 알고리즘 및/또는 암호화 키를 선택할 수 있다. 따라서 스크램블링 알고리즘 및/또는 스크램블링 키는 ROM 데이터의 내용에 기초하여 선택되어 ROM 어레이에 저장된 결과 암호화된 비트의 가변성(variability)을 최대화하지는 않더라도 적어도 증가시킬 수 있다. 이러한 가변성(예: 고유성(uniqueness))은 동일한 저장된 ROM 값을 가진 엔트리가 거의 없기 때문에 공격자가 무결성 검사기를 확인해야 하는 하나의 ROM 엔트리에서 동일한 워드가 있는 다른 ROM 엔트리로 리디렉션하는 것을 어렵게 만든다. 이러한 기술을 사용하여 ROM의 스크램블된 데이터에 해싱 알고리즘을 적용할 수 있다. 즉, 저장된 ROM 데이터의 적어도 하나의 다이제스트는 해싱 알고리즘이 동작하는 값의 가변성을 증가시키기 위해 스크램블되지 않은 라인 대신에 ROM 데이터의 스크램블된 라인을 사용하여 계산될 수 있다.
이러한 방식으로 보안 회로는 실리콘 RoT 칩 및/또는 SoC에 통합될 수 있다. 이러한 보안 회로에는 ROM 블록을 비롯한 여러 주변 장치가 포함된다. ROM 보안의 일부 에스펙트(aspects)가 보안 회로 환경 및/또는 호환 가능한 디자인의 컨텍스트에서 설명되지만, 개시된 ROM 보안 개념은 다른 회로 환경 및 다른 디자인 패러다임에 적용 가능하다.
본 문서는 도 1 및 도 2를 참조하여 보안 환경 예시를 먼저 설명한다. 주변 장치 인터페이스 및 디자인 코드 분석의 예는 도 3a 내지 도 3c를 참조하여 다음에 설명된다. 이 문서는 도 4 내지 도 13을 참조하여 ROM 보안에 대한 에스펙트와 구현을 설명한다. 예시적인 전자 장치가 도 14를 참조하여 설명된다. 본 명세서에 기술된 각각의 환경, 양태 및 구현은 개별적으로 또는 임의의 조합으로 사용될 수 있다.
따라서, 관련된 도면을 참조하여 다양한 세부 수준의 예시적인 구현이 아래에서 설명된다. 아래 설명는 먼저 운영 환경의 예를 설명한 다음 하드웨어, 구성표 및 기술의 예를 설명한다. 이후에 순서도 또는 다이어그램을 참조하여 예시적인 방법을 설명한다. 마지막으로, 예시적인 컴퓨팅 장치가 설명된다.
ROM 보안을 위한 운영 환경의 예
도 1은 일반적으로 보안 회로(106)를 포함하는 집적 회로(104)(IC)를 갖는 예시적인 장치(102)를 100으로 도시한다. 장치(102), 집적 회로(104) 및/또는 보안 회로(106)는 본 명세서에 기술된 바와 같이 ROM 보안을 구현할 수 있다. 이 예에서, 장치(102)는 스마트폰으로 묘사된다. 그러나 장치(102)는 임의의 적절한 컴퓨팅 또는 전자 장치로 구현될 수 있다.
장치(102)의 예는 모바일 전자 장치 또는 모바일 장치, 모바일 통신 장치, 모뎀, 셀룰러 또는 모바일 전화, 모바일 스테이션, 게임 장치, 내비게이션 장치, 미디어 또는 엔터테인먼트 장치(예: 미디어 스트리머 또는 게임 제어기), 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 스마트 가전, 차량 기반 전자 시스템, 웨어러블 컴퓨팅 장치(예: 의류, 시계 또는 현실 변경 안경), 사물 인터넷(IoT) 장치, 센서, 재고 관리 장치, 기계 또는 장비의 전자 부품(예: 차량 또는 로봇), 메모리 저장 장치(예: SSD(Solid-State Drive)), 서버 컴퓨터 또는 그 일부(예: 서버 블레이드 또는 랙 또는 데이터 센터의 다른 부분) 등을 포함한다. 장치(102)의 예시된 예는 태블릿 장치(1021), 스마트 텔레비전(102-2), 데스크탑 컴퓨터(102-3), 서버 컴퓨터(102-4), 스마트 워치(102-5), 스마트폰(또는 문서 판독기)(102-6), 및 지능형 안경(102-7)을 포함한다.
예시적인 구현에서, 장치(102)는 적어도 하나의 집적 회로(104)를 포함한다. 집적 회로(104)는 모듈, 카드 또는 인쇄 회로 기판(PCB)(미도시)에 장착될 수 있다. PCB의 예는 가요성 PCB, 강성 PCB, 단층 또는 다층 PCB, 표면 실장 또는 스루홀 PCB, 이들의 조합 등을 포함한다. 각각의 집적 회로(104)는 범용 프로세서, 시스템 온 칩(SoC), 보안 지향(security-oriented) IC(예: RoT IC 칩), 메모리 칩, 통신 IC(예: 모뎀 또는 무선 주파수 IC), 그래픽 프로세서, 인공 지능(AI) 가속기, 이들의 조합 등으로서 실현될 수 있다. 집적 회로(104)는 단독으로 또는 다른 IC 칩과 함께 패키징될 수 있다.
도시된 바와 같이, 집적 회로(104)는 보안 회로(106)를 포함한다. 보안 회로(106)는 복수의 회로 컴포넌트(108-1...108-C, 여기서 C는 양의 정수를 나타냄) 및 인터커넥트(110)를 포함하는 다양한 부품을 포함할 수 있다. 인터커넥트(110)에 추가하여 회로 컴포넌트(108)의 예는 프로세서 및 복수의 주변 장치를 포함한다. 이들은 도 2에 묘사되어 있으며 아래에 설명되어 있다. 도 1에 명시적으로 도시되지는 않았지만, 집적 회로(104)는 보안 회로(106) 외에 다른 부분을 포함할 수 있다. 복수의 회로 컴포넌트(108-1...108-C) 및 인터커넥트(110)가 도시된 바와 같이 단일 IC에 함께 통합될 수 있지만, 컴포넌트는 대안적으로 2개 이상의 IC에 걸쳐 분산될 수 있다. 보안 회로(106)는 예를 들어, 보호 엔클레이브, 신뢰 칩 플랫폼, 하드웨어 기반 신뢰 루트(RoT) 칩(예를 들어, 실리콘 RoT) 등으로서 실현될 수 있다. 보안 회로(106)가 전자 장치에 어떻게 또는 어디에 통합되는지에 관계없이, 보안 회로(106)는 다양한 유형의 공격에 대응할 수 있다.
예시적인 동작에서, 일단 공격(또는 잠재적인 공격) 또는 변칙적 발생이 검출되면, 경고(alert)(112) 또는 인터럽트(114)가 일부 컴포넌트에 의해 생성된다. 예를 들어, 회로 컴포넌트(108)는 경고(112)를 생성할 수 있고 경고(112)를 경고 처리기로 전송할 수 있으며, 이는 아래에서 설명된다. 추가적으로 또는 대안적으로, 다른 회로 컴포넌트(108)는 프로세서에 의한 처리를 위해 인터럽트(114)를 생성할 수 있다. 경고(112), 인터럽트(114) 및 기타 신호는 보안 회로(106)의 프로세서 및/또는 주변 장치 간의 상호작용을 위한 공통 프레임워크에 따라 둘 이상의 컴포넌트(108) 간에 통신된다. 공통 프레임워크는 각 주변 장치의 인터페이스와 신호를 지정하여 상호 운용성을 촉진하고 여러 주변 장치에서 일관된 통신 프로토콜을 사용할 수 있다. 따라서, 보안 회로의 측면에서 호환성(comportability)의 일부 에스펙트가 제시되는 반면, 주변 장치의 호환성은 다른 유형의 회로와 함께 적용될 수도 있다. 예시적인 프레임워크 뿐만 아니라 예시적인 통신 인터페이스 및 인터페이스 스펙(specification)이 도 3a 내지 도 3c를 참조하여 아래에 설명된다.
일부 구현에서, 회로 컴포넌트(108)는 ROM(118) 또는 ROM 블록(118)으로 구현된다. ROM(118)은 주변 장치, 호환 가능한 컴포넌트, 이들의 조합 등으로서 보안 회로(106)에 통합될 수 있다. 예를 들어, 보안 회로(106)는 보안 회로(106) 또는 IC(104)를 초기화하기 위해 재시작의 일부로서 ROM(118)에 액세스할 수 있다. ROM(118)은 스타트-업 동작 외에 또는 스타트-업 동작 대신에 다른 목적을 위해 액세스될 수 있다. 이 ROM 액세스(116)는 ROM 데이터의 무결성 검사와 관련하여 본 명세서에서 설명되는 보안 패러다임의 일부로서 ROM(118)에 의해 게이트(gate)될 수 있다. ROM 액세스(116)는 또한 ROM 데이터를 ROM(118)의 ROM 데이터에 액세스하는 데 사용되는 ROM 주소에 연결함으로써 보호될 수 있다. ROM 보안의 이러한 에스펙트 및 기타 에스펙트는 도 4 내지 도 13을 참조하여 아래에서 설명된다. 그러나 도 2를 참조하여 보안 회로(106)의 예시적인 아키텍처가 다음에 설명된다.
도 2는 호환 가능하도록 구현될 수 있는 복수의 예시적인 주변 장치(250)를 포함하는 복수의 회로 컴포넌트를 포함하는 예시적인 보안 회로(106)를 도시한다. 도시된 바와 같이, 보안 회로(106)는 인터커넥트(110)에 연결된 프로세서(202)를 포함한다. 인터커넥트(110)는 예를 들어 버스, 스위칭 패브릭, 또는 다양한 회로 컴포넌트가 통신할 수 있게 하는 버스 네트워크를 사용하여 실현될 수 있다. (도 1의) 다중 회로 컴포넌트(108-1...108-C)는 인터커넥트(110) 및/또는 프로세서(202) 외에 다중 메모리 및 다중 주변 장치를 포함할 수 있다. 프로세서(202), 복수의 메모리 및 복수의 다른 주변 장치(250) 각각은 인터커넥트(110)에 직접적으로 또는 간접적으로 결합된다. 여기에 설명된 바와 같이, ROM(118)(예를 들어, 도 1 및 4 이하)은 도 2의 ROM(206)에 대응할 수 있다.
예시적인 구현에서, 다중 메모리는 판독(읽기) 전용 메모리(206)(ROM 206), 정적 랜덤 액세스 메모리(208)(SRAM 208) 및 플래시 메모리(210)를 포함할 수 있다. 복수의 주변 장치(250)는 경고 처리기(alert handler)(204), 고급 암호화 표준(AES: advanced encryption standard) 엔진(212)(AES 엔진 212), 해시 기반 메시지 인증 코드(HMAC: hash-based message authentication code) 엔진(214)(HMAC 엔진(214)), 직렬 주변 장치 인터페이스(SPI: serial peripheral interface) 장치(230)(SPI 장치(230)), 및 플래시 제어기(216)를 포함할 수 있다. 복수의 주변 장치(250)는 또한 범용 비동기 수신기/송신기(UART: universal asynchronous receiver/transmitter) 유닛(218)(UART 유닛(218)), 범용 입력/출력(GPIO: general-purpose input/output) 인터페이스(220)(GPIO 인터페이스(220)), 핀 멀티플렉서(pin multiplexer)(222)(핀 먹스(222)) 및 패드 제어기(Pad Controller)(224)를 포함할 수 있다. 복수의 주변 장치(250)는 난수 생성기(232)(RNG(232)) 및 타이머(234)를 더 포함할 수 있다. 또한, 주변 장치(250)는 도 2에 도시된 바와 같이 임의의 메모리를 포함할 수 있다. 메모리 및 기타 주변 장치(250)의 특정 예가 도 2에 도시되거나 여기에서 설명되지만, 보안 회로(106)의 주어진 구현은 프로세서, 제어기, 메모리, 모듈 또는 주변 장치(그 복제물 포함)의 더 많은, 더 적은 및/또는 다른 인스턴스를 포함할 수 있다.
예시된 회로 컴포넌트는 하나 이상의 클록 신호를 기반으로 동기식으로 동작될 수 있다. 도 2에는 도시되지 않았지만, 보안 회로(106)는 클록 신호를 생성하기 위한 적어도 하나의 클록 생성기를 포함할 수 있거나, 하나 이상의 개별 컴포넌트를 서로 독립적으로, 복수의 컴포넌트를 공동으로, 또는 전체 IC 칩을 리셋하기 위한 리셋 회로를 포함할 수 있다. 대안적으로, 보안 회로(106)는 보안 회로(106) 외부에 있는 소스로부터 적어도 하나의 클록 신호 또는 리셋 신호를 수신할 수 있으며, 소스는 별도의 칩 상에 있을 수도 있고 아닐 수도 있다. 하나 이상의 개별 주변 장치(250)는 각각의 개별 클록 도메인에서 동작할 수 있다. 예를 들어, 입/출력(I/O) 주변 장치는 각 I/O 장치 또는 채널에 로컬인 클록에 동기화될 수 있다. 서로 다른 클록 도메인의 주변 장치는 서로에 대해 비동기적으로 동작하거나 통신할 수 있다.
예시된 컴포넌트의 구현 예는 아래에 설명되어 있다. 프로세서(202)는 보안 회로(106)에 대한 "메인", "중앙" 또는 "코어" 프로세서로서 실현될 수 있다. 프로세서(202)는, 단지 예로서, 다단계 파이프라인을 갖는 32비트, 순차 RISC(reduced instruction set computing) 코어로 구현될 수 있다. 예를 들어 RISC-V 명령어 세트를 사용하여 프로세서는 M(기계) 및 U(사용자) 모드를 구현할 수 있다. 리셋 핀(reset pin)(미도시)을 활성화하면(예를 들어, 액티브 로우 리셋 핀의 D-A(de-assertion)를 통해) 프로세서(202)가 리셋을 종료하고 리셋 벡터에서 코드 실행을 시작하게 된다. 리셋 벡터는 ROM(206)에서 시작할 수 있으며, ROM(206)은 점프하기 전에 임베디드 플래시(e flash)의 코드를 확인한다. 즉, 리셋이 해제되기 전에 코드가 e 플래시에 인스턴스화되었을 것으로 예상된다. 일부 경우에, 보안 회로(106) 전체에 걸친 리셋은 다양한 회로 컴포넌트 간의 상호 운용성을 지원하기 위해 호환성 사양에 따라 비동기 활성 로우로 만들어질 수 있다. 리셋은 보안 대책으로서 경고 처리기(204)에 의해; 워치독 타이머에 의해; 기타 등등에 의해 생성될 수 있다. 리셋 신호는 또한 메모리 중 하나 또는 다른 주변 장치(250) 중 하나와 같은 다른 회로 컴포넌트로 전송될 수 있다.
디버그 모듈(226)(DM 226) 및 인터럽트 제어기(228)(ItC 228)가 프로세서(202)에 결합되며, 이들 중 어느 것도 적합(호환 가능)하게 만들어질 수 있다. 디버그 모듈(226)은 프로세서(202)에 대한 디버그 액세스를 제공한다. IC의 특정 핀과 인터페이싱함으로써, 디버그 모듈(226)의 로직은 프로세서(202)가 디버그 모드에 들어갈 수 있게 하고 코드를 디바이스(예를 들어, 명령을 에뮬레이션함으로써) 또는 메모리에 주입하는 기능을 제공한다. 인터럽트 제어기(228)는 프로세서(202)에 근접하게 배치될 수 있다. 인터럽트 제어기(228)는 보안 회로(106) 내로부터 인터럽트 소스의 벡터를 받아들일 수 있다. 인터럽트 제어기(228)는 또한 인터럽트를 처리하는 프로세서(202)로 전달하기 전에 인터럽트에 평준화(leveling) 및 우선순위를 할당할 수 있다.
프로세서(202)는 임의의 원하는 수준의 성능을 제공하거나 임의의 내부 회로 컴포넌트를 포함할 수 있다. 예를 들어, 프로세서(202)는 적어도 하나의 산술 논리 유닛(ALU: arithmetic logic unit)(예를 들어, 취해진 조건부 분기에서 레이턴시 주기를 제거하기 위해 분기 목표를 계산하기 위한 "추가" ALU를 포함함) 및 복수의 파이프라인 스테이지를 포함할 수 있다. 여러 파이프라인 단계에서 파이프라인은 레지스터 쓰기 저장을 수행하여 로드 및 저장의 대기시간 주기를 줄이고 로드 또는 저장에 대한 응답이 요청 후 주기에 제공되는 파이프라인 중단을 방지할 수 있다. 프로세서(202)는 단일 주기 곱셈기를 구현하거나 저장소에 대한 오류 응답에 대한 부정확한 예외(imprecise exception)를 생성할 수 있으며, 이는 프로세서가 응답을 기다리지 않고 저장소를 지나 실행을 계속할 수 있도록 한다. 도시되지는 않았지만, 구체적으로 프로세서(202) 또는 일반적으로 보안 회로(106)는 명령에 대한 단일 사이클 액세스 시간을 제공하기 위해 명령 캐시를 포함할 수 있다.
예시된 예에서, 보안 회로(106)는 명령어 및 데이터를 위한 3개의 메모리 주소 공간을 포함한다. ROM(206)은 리셋 해제 후 프로세서(202)의 타깃이다. ROM(206)은 코드의 다음 단계를 검사하기 전에 플랫폼 검사의 서브세트를 수행하기 위한 하드 코딩된 명령을 포함한다. 코드의 다음 단계(예: e-플래시 메모리에 저장된 부트 로더)는 장치의 실리콘에 하드 코딩되지 않은 첫 번째 코드 조각일 수 있다. 따라서 이 코드의 다음 단계는 보안을 강화하기 위해 무결성에 대한 서명 검사를 받는다. ROM(206)은 RSA(Rivest-Shamir-Adleman) 검사 알고리즘 또는 ECDSA(Elliptic Curve Digital Signature Algorithm)와 같은 많은 알고리즘 중 임의의 알고리즘을 부트 로더의 전체 콘텐츠에 구현함으로써 이 서명 검사를 실행할 수 있다.
플래시 메모리(210)는 코드 저장을 위한 임베디드 e-플래시(e-flash) 메모리로 구현될 수 있다. 이 e-플래시는 위에서 언급한 부트 로더뿐만 아니라 그 위에 계층화되는 운영 체제 및 애플리케이션을 수용할 수 있다. SPI 장치(230)는 e-플래시 메모리를 대량 로드하는 데 사용될 수 있다. 디버그 모듈(DM: Debug Module)(226)은 또한 코드 로딩을 위해 사용될 수 있다. SRAM(208)은 프로세서(202)에 의한 데이터 저장(예를 들어, 스택 및 힙 정보용)에 이용 가능한 스크래치 패드 SRAM으로서 동작할 수 있다. SRAM(208)은 코드를 저장할 수도 있다.
보안 회로(106)는 일련의 "주변 장치" 또는 "주변 디바이스"를 포함할 수 있다. 이러한 주변 장치(250)는 인터커넥트(110)을 통해 프로세서(202)에 결합되는 보조 실행 유닛일 수 있다. 이러한 주변 장치(250) 각각은 서로 간에 그리고 프로세서(202)와의 호환성을 보장하는 인터페이스 프레임워크를 따를 수 있다. 호환성 체계는 프로세서(202)가 주어진 주변 장치와 통신하는 방법(예를 들어, 인터커넥트(110)을 사용하여), 주변 장치가 칩 I/O와 통신하는 방법(예: 고정 또는 다중화 가능한 I/O를 통해), 주변 장치가 프로세서(202)와 통신하는 방법(예: 인터럽트 사용), 주변 장치가 경고 처리기(204)와 같은 다른 회로 컴포넌트에 보안 이벤트(예를 들어, 경고(알람) 표시를 사용하여)를 통신하는 방법, 주변 장치가 다른 주변 장치와 통신하는 방법(예를 들어, 적어도 하나의 레지스터를 통해 동기식 또는 비동기식으로). 또는 이들의 조합을 지정할 수 있다. 도시된 주변 장치(250)는 경고 처리기(204)에 의해 제공되는 경고 관련 기능, 프로세서(202), 하나 이상의 메모리, 칩 I/O 등에 관한 주변 장치를 포함할 수 있다. 따라서, 메모리는 또한 서로 또는 다른 도시된 회로 컴포넌트에 대한 주변 장치(250)를 포함할 수 있다.
회로 또는 칩 I/O 주변 장치는 핀 먹스(222) 및 패드 제어기(224)를 포함한다. 핀 먹스(222)는 주변 장치(250)의 적어도 일부와 보안 회로(106)의 이용 가능한 다중화 가능한 I/O 노드 사이의 신호 경로를 제공한다(예: 다양한 컴포넌트가 통합된 칩의 핀 또는 SoC의 다른 부분에 대한 인터페이스). 패드 제어기(224)는 각 회로(예를 들어, 칩)의 외부 I/O의 구동 강도(drive strength), 기술, 풀업 대 풀다운 등과 같은 제어 또는 패드 속성을 관리한다. 핀 먹스(222) 및 패드 제어기(224)는 그 자체가 인터커넥트(110) 상의 주변 장치이다. 따라서 각각은 소프트웨어 구성 가능성을 제공하는 적어도 하나의 레지스터 콜렉션을 갖거나 그렇지 않으면 이와 연관될 수 있다.
UART 유닛(218)은 단일 레인 듀플렉스 UART 기능과 같은 UART 기능을 구현할 수 있다. 그 출력 및 입력은 핀 먹스(222)를 통해 임의의 회로 I/O에 연결하도록 구성될 수 있다. GPIO 인터페이스(220)는 핀 먹스(Pin Mux)(222)를 통해 외부 회로에 대한 양방향 통신의 G 비트를 생성하며, 여기서 G는 16, 32 또는 64와 같은 양의 정수이다. 메모리 I/O와 관련하여 SPI 장치(230)는 펌웨어 모드를 구현할 수 있다. 여기서, 펌웨어 모드는 외부 드라이버가 현장 펌웨어 업데이트를 위해 펌웨어 업그레이드 코드를 플래시 메모리(210)의 뱅크로 보내는 능력을 제공하는 기능을 가능하게 할 수 있다. 펌웨어 모드는 SPI 트랜잭션을 사용하여 메모리 주소 지정을 포함할 수 있다. 도시되지는 않았지만, 보안 회로(106)는 I2C 장치의 명령을 가능하게 하는 I2C(inter-integrated circuit) 호스트를 포함할 수 있다. 이 I2C 장치 명령에는 표준, 전체 및 고속 모드가 포함될 수 있다.
암호화 엔진 및 경고 처리기(204)를 포함하는 여러 "핵심 보안" 주변 장치도 설명되어 있다. AES 엔진(212)은 하나 이상의 프로토콜 및 128b, 192b 또는 256b와 같은 다양한 키 크기를 사용하여 대칭 암호화 및 암호 복호화를 제공할 수 있다. 컴포넌트는 예를 들어 다른 블록 암호 동작 모드를 사용하여 암호화 또는 암호 복호화될 16바이트 수량으로 도착하는 데이터의 암호화 또는 암호 복호화를 선택할 수 있다. AES 엔진(212)은 ECB(Electronic Codebook) 모드, CBC(Cipher Block Chaining) 모드, CFB(Cipher Feedback) 모드, OFB(Output Feedback) 모드, CTR(Counter) 모드 등을 지원할 수 있다. 데이터 전송은 프로세서가 사용할 수 있도록 만들 수 있다. 예를 들어 키와 데이터 자료는 레지스터 쓰기를 통해 암호화 엔진으로 전달될 수 있다. 또는 잠재적으로 신뢰할 수 없는 프로세서 활동으로 인한 노출을 줄이기 위해 키 및 데이터 자료 전송을 위한 개인 채널을 포함할 수 있다.
HMAC 엔진(214)은 예를 들어 SHA(Secure Hash Algorithm) SHA-256을 해싱 알고리즘으로 활용할 수 있다. SHA-256은 해싱할 입력의 데이터 크기에 관계없이 다이제스트(또는 해시 출력) 길이가 256b인 해싱 알고리즘의 SHA-2 제품군의 구성원이다. 데이터는 해시 요청의 시작을 선언한 후 HMAC 주변 장치로 전송된다. 이는 내부 상태를 초기 조건(예: 한 번에 32b)으로 0으로 만든다. 컴포넌트 클라이언트가 데이터를 전송하면 클라이언트는 해시 요청의 완료를 나타낼 수 있다(선택 사항인 부분 워드 최종 쓰기 포함). 예시적인 이식성 인터페이스 방식에 따라, HMAC 엔진(214)은 해시 결과를 생성하고 그것을 요청 클라이언트에 의한 레지스터 판독을 위해 이용가능하게 만든다. 데이터 전송은 프로세서가 사용할 수 있게 만들거나 잠재적으로 신뢰할 수 없는 프로세서 활동에 대한 노출을 줄이기 위해 비공개로 만들 수 있다.
HMAC는 해싱 함수(예: SHA-256) 위에 계층화된 메시지 인증 프로토콜이며, HMAC는 암호화 목적으로 비밀 키를 혼합(믹스)한다. HMAC는 메시지의 해싱(SHA-256을 통해) 주위에 두 번과 같은 규정된 방식으로 비밀 키를 추가하는 특정 애플리케이션이다. 이 기능을 제공하기 위해 메시지 해시가 시작되기 전에 256b 키를 회로 컴포넌트에 프로그래밍할 수 있다. 인증 완료 시점은 다를 수 있으며 기본 SHA-256을 사용하는 것보다 대기시간이 더 길 수 있다. 여기서 다시, 해싱 정보 또는 비밀 키는 편의 또는 처리 효율성을 위해 프로세서가 사용할 수 있게 만들거나 보안을 강화하기 위해 어떤 방식으로 비공개로 만들 수 있다.
경고 처리기(204)는 다른 주변 장치(250)로부터 제공된 경고를 포함하여 경고를 처리하고 응답하는 일을 담당한다. 경고는 감지된 보안 위협에 대응하기 위해 적시에 처리되어야 하는 보안에 민감한 인터럽트로 간주될 수 있다. "표준" 인터럽트와 달리 경고는 프로세서(202)에서 실행되는 소프트웨어에 의해서만 처리되지 않는다. 경고는 소프트웨어에서 "일반" 인터럽트로 처리할 첫 번째 단계 요청을 트리거할 수 있다. 그러나 소프트웨어가 응답할 수 없고 경고 트리거 인터럽트를 적절하게 해결할 수 없으면 경고 처리기(204)가 두 번째 단계 응답을 트리거한다. 두 번째 단계 응답에는 프로세스 종료, 데이터 지우기 또는 다른 삭제, 회로 부분에서 전원 인출 또는 IC 칩 또는 그 일부의 리셋을 포함하는 보안 대책을 제정하는 것이 포함될 수 있다. 이는 프로세서(202)가 사용 중이거나 고정되어 있거나 공격을 받고 있는 경우에도 근본적인 문제(인식된 보안 위협)가 해결되도록 보장한다.
따라서, (예를 들어, 도 1의) 경고(112)는 경고 처리기(204)가 다른 주변 장치로부터 수신하고 잠재적인 보안 위협을 나타내는 상승된 인터럽트 유형 신호 또는 알람(경고) 표시로서 구현될 수 있다. 동작 중에, 경고 처리기(204)는 보안 회로(106)의 다른 회로 컴포넌트(108)로부터 경고(알람)를 수집하고 이들을 프로세서(202)가 처리할 수 있는 인터럽트로 변환할 수 있다. 그러나 프로세서(202)가 인터럽트를 클리어하지 않으면 경고 처리기(204)는 잠재적인 보안 위협을 해결하기 위해 하드웨어 응답을 제공한다.
일부 장치간 통신의 경우, 경고 처리기(204)는 주변 장치 소스로부터 차등 신호 동기식 또는 비동기식 경고 표시를 수신한다. 주변 장치(250)는 주변 장치(250)의 기능, 지식 또는 감지된 파라미터를 기반으로 경고를 생성할 수 있다. 다른 장치간 통신의 경우, 경고 처리기(204)는 강력한 하트비트 메커니즘으로서 경고 소스의 핑 테스트를 수행한다. 경고 처리기(204)의 핑 모니터(명시적으로 도시되지 않음)는 각 경고 소스로부터 주기적인 경고 응답을 요청하여 경고 소스와의 통신 채널이 기능하고 있음을 보장한다.
경고 처리기(204)는 또한 통신 실패에 기초하여 로컬 소싱 하드웨어 경고를 생성할 수 있다. 경고 소스 또는 에스컬레이션 처리기(핸들러)가 있는 차등 신호 또는 다른 규정된 통신 프로토콜이 실패하는 경우(예: 신호 무결성 검사가 실패하는 경우) 첫 번째 로컬 소스 경고가 생성된다. 경고 처리기(204)는 경고 소스 또는 에스컬레이션 처리기가 핑 요청에 응답하지 못하는 경우 이러한 두 번째 경고를 생성한다. 일반적으로, 경고 처리기(204)는 시스템 전체로부터 들어오는 경고를 수신하고, 경고를 분류하고, 분류된 경고에 기초하여 인터럽트를 발행하고, 프로세서(202)가 발행된 인터럽트를 제거하지 않는 경우 하드웨어 기반 응답으로 인터럽트를 에스컬레이션(escalate)할 수 있다. 따라서 경고 처리기(204)는 프로세서가 보안 경고를 처리할 수 없거나 처리하지 않는 경우 예를 들어 보안 응답을 위한 스탠드인(stand-in) 역할을 할 수 있다.
일부 아키텍처에서 보안 경고는 최소한 "표준(standard)" 인터럽트와 관련하여 드문 이벤트가 되도록 의도되었다. 따라서, 설계 단계에서 발생할 수 있는 이벤트가 자주 발생하지 않을 것으로 예상되는 정도와 잠재적인 보안 영향이 있는 경우에 가능한 이벤트를 경고 이벤트로 지정할 수 있다. 이러한 이벤트의 예로는 패리티 오류(공격을 나타낼 수 있음), 암호화 또는 보안 관련 컴포넌트에 대한 무단 작업, 환경 수정(예: 전압 또는 온도)을 나타내는 물리적 센서에서 감지된 값 등이 있다. 시스템은 경고를 프로세서(202)가 잠재적으로 주소 지정하기 위한 인터럽트로 변환하는 경고 처리기(204)를 통해 경고를 라우팅한다. 일부 구현에 대한 근본적인 기대는 보안 운영 체제가 경고로 인해 발생하는 그러한 인터럽트를 소프트웨어에서 처리하기 위한 프로토콜을 가지고 있다는 것이다. 만약 그렇다면, 보안 운영 체제는 일반적으로 인터럽트를 해결할 수 있고 경고 처리기(204)로 인터럽트를 지울 수 있다. 각각의 주변 장치(250)는 처리될 각각의 잠재적인 위협을 나타내는 개별 경고 목록을 제시할 수 있다. 주변 장치는 특정 인코딩 메커니즘을 사용하여 경고 표시로서 경고를 경고 처리기(204)에 전송할 수 있다.
보안 회로(106)는 또한 RNG(232)를 포함할 수 있다. 일반적으로 임의성은 공격자가 공격을 시작하기에 좋은 시간을 예측하지 못하도록 하는 실행의 변형을 제공함으로써 보안 기능에 기여할 수 있다. 예를 들어 난수는 ID 및 암호화 목적으로 사용되는 비밀 자료를 제공할 수 있다. RNG(232)는 민감한 데이터 값을 모호하게 하기 위해 알고리즘 계산에 시드(seeded)될 수 있다. 일반적으로 RNG 232는 번호 생성이 점점 더 무작위적이 되고 공격에 대해 강화될 수 있는 정도까지 더 나은 성능을 제공한다. RNG(232)는 "true(트루)" RNG(TRNG)로서 구현될 수 있으며, 이는 비결정론적인 일부 물리적 이벤트 또는 프로세스를 이용하기 위해 아날로그 부분을 갖는 설계를 수반할 수 있다. 예제 TRNG 설계는 준안정성, 전자 잡음, 타이밍 변동, 열 잡음, 양자 변동 등에 의존한다. TRNG는 결과 변수를 필터링하고 장치가 현재 무작위 함수에 대해 주어진 시간에 샘플링할 수 있는 엔트로피(pool of entropy 풀)로 보낸다. 경우에 따라 엔트로피 풀에 대한 인터페이스에 사용 가능한 임의 비트의 읽기 요청이 포함될 수 있다. TRNG 인터페이스는 사용 가능한 비트 수를 나타내며 요청하는 주변 장치 또는 소프트웨어는 이 풀에서 사용 가능한 비트 수까지 읽을 수 있다. 사용할 수 없는 엔트로피 비트 읽기를 시도하면 인터럽트 또는 경고가 트리거될 수 있다.
2개의 다른 주변 장치(250)는 타이머(234) 및 플래시 제어기(216)를 포함하며, 후자는 다음 단락에서 설명된다. 타이머(234)는 예를 들어 프로세서(202)에 의한 정확한 성능을 지원할 수 있다. 타이머(234)는 복수의 비트(예를 들어, 64비트)로 형성되고 일정 비율 내에서 보장된 주파수를 갖는 자유 실행 타이머로서 동작한다. 다른 타이머(명시적으로 도시되지 않음)는 프로세서가 응답하지 않는 경우에 프로세서(202)를 중단시키기 위한 감시 타이머로서 작용할 수 있다. 무응답은 웨지 형태(wedged)의 개발 코드, 보안 공격 등으로 인한 것일 수 있다.
플래시 제어기(216)는 코드 및 데이터 저장에 사용 가능한 플래시 메모리(210)를 제어한다. 이 데이터의 기본 읽기 경로는 표준 메모리 주소 공간에 있을 수 있다. 그러나 플래시가 표준 방식으로 기록되지 않기 때문에 해당 주소 공간에 대한 쓰기는 무시할 수 있다. 대신, 플래시 메모리(210)에 기록하기 위해 소프트웨어는 플래시 제어기(216)와 상호작용한다. 플래시 기능에는 읽기, 지우기 및 프로그램의 세 가지 기본 명령이 포함될 수 있다. 읽기 명령을 표준화할 수 있으며 칩 메모리 주소 공간을 사용할 수 있다. 소거(지우기) 명령은 페이지 크기가 플래시 제어기(216)에 의해 파라미터화되는 페이지 수준에서 수행된다. 소거 요청을 수신하면, 플래시 제어기(216)는 데이터를 "1" 상태(예를 들어, 워드당 0xFFFFFFFF)로 렌더링하는 대상 페이지의 내용을 지운다. 그 후 소프트웨어는 개별 워드를 임의의 값으로 프로그래밍할 수 있다. 플래쉬 비트는 한번 더 지우지 않고는 "1" 상태로 되돌리지 않기 때문에 현재 내용과 쓰여진 값을 앤드(AND)하여 미래의 내용이 효과적으로 변경된다. 삭제(소거 또는 지우기) 및 프로그램 명령은 상대적으로 느리다. 일반적인 소거 시간은 밀리초 단위로 측정되며 프로그램 시간은 마이크로초 범위이다. 비밀 데이터가 플래시 메모리(210)에 저장될 수 있기 때문에 보안도 중요하다. 따라서 일부 메모리 보호는 플래시 제어기(216)에 의해 제공될 수 있다.
보안 회로(106)는 특정 회로 컴포넌트 세트를 갖는 도 2에 도시되어 있다. 그러나 주어진 보안 회로(106)는 더 많거나 적거나 다른 회로 컴포넌트를 가질 수 있다. 회로 컴포넌트는 또한 상이하게 상호접속될 수 있거나 위에서 설명한 예시적인 방식 이외의 방식으로 동작할 수 있다. 또한, 일부 회로 컴포넌트는 생략될 수 있고 다른 회로 컴포넌트는 여러 경우에 구현될 수 있다. 예를 들어, 경고 처리기(204)는 복제되거나 분산될 수 있거나, 복수의 AES 암호화 엔진(AES 엔진)(212)이 일부 보안 회로(106)에 존재할 수 있다. 또한, 보안 회로(106)가 형성하는 IC 칩용 보안 회로(106)의 주변 장치(250) 중 GPIO 인터페이스(220)는 수십 개 중 하나의 코어만을 형성할 수 있다.
보안 ROM 주변 장치를 위한 호환 가능한 패러다임의 예제 체계, 기술 및 하드웨어
(예를 들어, 도 1 및 2의) 보안 회로(106)는 ROM(206 또는 118)과 같은 주변 장치(250)를 포함하는 호환 가능한 회로 컴포넌트를 포함할 수 있다. 이 섹션에서는 주변 장치를 호환 가능하게 만드는 방법의 예를 설명한다. 각 주변 장치(250)는 보안 회로(106)에 대한 호환성 사양을 준수할 수 있다. 적어도 하나의 인터페이스 체계 또는 통신 프로토콜을 정의하는 호환성 사양을 준수함으로써, 주변 장치(250)는 주변 장치(250)와 다른 주변 장치 사이에 일관되고 예상되는 상호 작용을 생성하는 적어도 하나의 인터페이스로 실현된다. 이를 통해 통신 예측 가능성과 확실성이 향상되고 보안 회로를 설계 및 테스트하는 데 소요되는 시간이 줄어든다.
도 3a는 다른 회로 컴포넌트와의 호환성을 지원하기 위해 적어도 하나의 인터페이스(302)를 포함하는 예시적인 주변 장치(250)를 300-1로 도시한다. 보다 일반적으로, 도 3a는 인터커넥트(110), 인터커넥트(110)에 연결된 프로세서(202), 및 인터커넥트(110)에 연결된 복수의 주변 장치를 포함한다. 따라서, 복수의 주변 장치는 인터커넥트(110)를 통해 적어도 프로세서(202)에 결합될 수 있다. 그러나 각각의 주변 장치(250)는 인터커넥트(110)를 사용하지 않고 프로세서(202)에 직접 또는 달리 결합될 수도 있다. 도 3a는 양의 정수를 나타내는 P와 함께 P 주변 장치(250-1, 250-2, …, 250-P)를 명시적으로 도시한다.
예시적인 구현에서, 각각의 주변 장치(250)는 주변 장치(250)가 상호 운용되는 주변 장치에 대한 확실성을 제공하는 통신 프레임워크에 부착할 수 있게 하는 적어도 하나의 인터페이스(302)를 포함한다. 예를 들어, 인터페이스(302) 또는 통신 인터페이스(302)는 주변 장치(250)가 적어도 하나의 통신 프로토콜(320)을 구현하도록 할 수 있다. 인터페이스(302)는 적어도 하나의 상호접속(인터커넥트) 인터페이스(304), 적어도 하나의 장치간 인터페이스(306) 및 적어도 하나의 다른 인터페이스(308)를 포함한다. 이러한 인터페이스는 아래에 설명되어 있다. 도시된 바와 같이, 주변 장치(250)는 또한 전형적으로 적어도 하나의 레지스터 인터페이스(310) 및 적어도 하나의 보안 기능 모듈(312)을 포함한다. 일반적으로, 인터페이스(302)는 주변 장치(250)가 프로세서(202) 및 복수의 주변 장치(2501...250-P)의 다른 주변 장치와 상호 작용하기 위한 공통 프레임워크를 고수할 수 있게 한다.
레지스터 인터페이스(310)는 하나 이상의 레지스터 또는 레지스터 엔트리를 포함한다. 각각의 레지스터 엔트리는 예를 들어 주변 장치(250)와의 통신을 위해(예를 들어, 주변 장치(250)와의 통신을 위해) 사용될 수 있다. 예를 들어, 프로세서(202) 또는 다른 주변 장치는 레지스터 엔트리를 설정 또는 소거할 수 있거나 주변 장치(250)와 통신하기 위한 값으로 레지스터 엔트리를 로드할 수 있다. 반대로, 주변 장치(250)는 프로세서(202) 또는 다른 주변 장치와 통신하기 위해 레지스터 엔트리의 값을 변경할 수 있다. 이러한 통신을 가능하게 하기 위해, 주변 장치(250)는 레지스터 인터페이스(310)의 적어도 일부를 프로세서(202) 또는 다른 주변 장치에 노출시킬 수 있다. 예를 들어, 주변 장치(250)는 인터럽트 상태 표시를 소거하기 위해 프로세서 액세스를 제공할 수 있다.
일반적으로 레지스터 블록은 소프트웨어와 같은 구성 및 상태 통신을 관리하기 위해 나머지 주변 로직과 통신하는 데 사용할 수 있다. 일부 경우에, 레지스터 인터페이스(310)는 제어 및 상태 레지스터(CSR)를 사용하여 구현될 수 있다. CSR은 주변 장치(250) 내의 레지스터 콜렉션을 제공하며, 그 레지스터는 회로 전체 또는 칩 전체 주소 맵을 통해 적어도 로컬 호스트 프로세서(202)에 의해 주소 지정 가능하다. CSR은 소프트웨어 균일성을 강화하고 회로 재사용 및 문서 일관성을 용이하게 하기 위해 표준화될 수 있다. 레지스터 인터페이스(310)의 예시적인 양태는 도 3c를 참조하여 아래에서 설명된다.
보안 기능 모듈(312)은 주변 장치(250)의 보안 관련 기능을 구현한다. 보안 관련 기능에는 핵심 또는 1차 보안 기능과 지원 또는 2차 보안 기능이 포함된다. 핵심 보안 기능에는 예를 들어 경고 처리, 암호화 및 암호 복호화를 포함한 암호화 작업, 난수 생성, 비밀 데이터 저장 및 액세스(예: 키 관리)를 포함한 보안 데이터 저장 등이 포함될 수 있다. 지원 보안 기능에는 핵심 기능의 성능을 가능하게 하거나 용이하게 하는 기능이 포함될 수 있다. 보안 기능을 지원하는 예로는 메모리 저장, 메모리 제어, 타이밍, 회로 및 칩 I/O 제어, 환경 센서, 버스 호스팅 등이 있다.
일반적으로 인터페이스(302) 또는 특정한 예시적인 인터페이스 중 임의의 것 (예를 들어, 상호접속(인터커넥트) 인터페이스(304), 장치간 인터페이스(306) 또는 다른 인터페이스(308))은 레지스터 인터페이스(310)에 대한 적어도 하나의 레지스터를 확립하여 각각의 인터페이스 통신 능력 또는 특징을 가능하게 할 수 있다. 인터커넥트 인터페이스(304)와 관련하여, 인터커넥트 인터페이스(304)는 예를 들어 공통 프레임워크를 준수하는 주변 장치(250)와 프로세서(202) 사이의 연결을 가능하게 하기 위해 인터커넥트(110)에 결합하는 통신 인터페이스를 구현한다. 주변 장치(250) 및 프로세서(202)가 동일한 공통 프레임워크를 사용하면 양방향 장치-프로세서 통신이 표준화되고 예측 가능할 수 있다. 인터커넥트 인터페이스(304)는 인터커넥트(110)에 걸쳐 동작할 수 있고, 레지스터 인터페이스(310)의 적어도 하나의 레지스터를 사용할 수 있고, 별도의 버스 또는 독립적인 와이어, 이들의 조합 등을 사용할 수 있다. 동작 중에, 주변 장치(250)는 인터커넥트 인터페이스(304)를 사용하여 적어도 하나의 인터커넥트(상호접속) 통신(314)에 관여할 수 있다. 추가로 또는 대안적으로, 주변 장치(250)는 상호접속 인터페이스(304)를 사용하여 인터커넥트(110)을 통해 다른 주변 장치와 통신할 수 있다.
장치간(inter-device) 인터페이스(306)는 주변 장치(250)와 공통 프레임워크를 고수하는 하나 이상의 다른 주변 장치 사이의 통신 인터페이스를 구현한다. 주변 장치(250)와 동일한 공통 프레임워크를 지원하는 서로 다른 주변 장치를 사용하면 양방향의 장치간 통신이 표준화되고 예측 가능할 수 있다. 장치간 인터페이스(306)는 레지스터 인터페이스(310)의 적어도 하나의 레지스터를 사용할 수 있고, 주변 장치 전용 버스를 사용할 수 있고, 2개의 주변 장치 사이에 연장되는 하나 이상의 독립적인 와이어, 이들의 조합 등을 사용할 수 있다.
동작 중에, 주변 장치(250)는 장치간 인터페이스(306)를 사용하여 적어도 하나의 장치간(inter-device) 통신(316)에 관여할 수 있다. 다른 주변 장치와 통신하기 위해 인터커넥트(110)를 우회함으로써, 주변 장치(250)는 일부 구현에서 다른 주변 장치와 "직접" 통신할 수 있다. 또한 장치간 통신 체계를 설정하고 준수함으로써 두 개 이상의 장치 간의 통신에 대한 일관성과 확실성이 향상된다. 따라서, 설계자는 수많은 애드혹 통신 체계를 추적하고 이중으로 확인하는 데 시간과 자원을 소비하는 대신 보안 기능 모듈(312)의 의도된 보안 관련 기능을 달성하는 데 집중할 수 있다.
다른 인터페이스(308)는 주변 장치(250)와 공통 프레임워크를 고수하는 다른 회로 컴포넌트 사이의 통신 인터페이스를 구현한다. 주변 장치(250) 및 동일한 공통 프레임워크를 따르는 다른 회로 컴포넌트를 사용하여 양방향의 주변 장치 시그널링이 표준화되고 예측 가능할 수 있다. 다른 인터페이스(308)의 예는 외부로 정보를 통신하기 위한 칩 I/O 인터페이스이다. 다른 인터페이스(308)의 다른 예는 인터럽트가 인터커넥트(110)를 통해 완전히 전달되지 않는 경우 인터럽트 인터페이스이다. 다른 인터페이스(308)의 또 다른 예는 클록 인터페이스이다. 일부 경우에, 보안 회로(106)(도 3에 별도로 표시되지 않음)는 1차 시스템 클록 및 하나 이상의 2차 시스템 클록을 포함한다. 클록 인터페이스는 통신 타이밍 및 일반 기능을 위해 기본 시스템 클록과 적어도 보조 시스템 클록의 선택된 부분을 활용할 수 있다. 클록 인터페이스는 보안 회로(106)에 대한 클록 방식에 따라 동작할 수 있고, 주변 장치(250)에 대한 디자인 코드는 주변 장치(250)와 관련된 클록을 지정할 수 있다. 동작 중에, 주변 장치(250)는 다른 인터페이스(308)를 사용하여 I/O 회로 또는 클록 트리와 같은 다른 회로 컴포넌트와 적어도 하나의 다른 통신(318)에 관여할 수 있다.
도 3b는 호환 가능한 목적이 만족되도록 하기 위해 주변 장치 설계를 분석하는 예시적인 접근법(300-2)을 도시한다. 예시적인 구현에서, 접근법(300-2)은 인터커넥트 방식(334), 장치간 방식(336) 또는 다른 방식(338)(각 방식을 포함함)을 포함할 수 있는 인터페이스 스펙(interface specification)(332)을 사용한다. 인터페이스 스펙(332)은 인터페이스(302)(도 3a의)에 대응한다. 상호접속(인터커넥트) 방식(Interconnect Scheme)(334)은 상호접속 인터페이스(304)에 대응하고, 장치간 방식(336)은 장치간 인터페이스(306)에 대응하고, 다른 방식(338)은 다른 인터페이스(308)에 대응한다. 이들 방식은 추가로 또는 대안적으로 로컬 또는 칩 레벨 I/O 방식, 인터럽트 방식, 클록 방식 등을 포함할 수 있다.
따라서, 인터페이스 스펙(332)은 인터페이스(302)에 대한 규칙, 프로토콜, 속성, 옵션, 능력 등을 설정할 수 있다. 유사하게, 인터커넥트 방식(334), 장치간 방식(336) 및 다른 방식(338) 각각은 인터커넥트 인터페이스(304), 장치간 인터페이스(306) 및 다른 인터페이스(308)에 대한 규칙, 프로토콜, 속성, 옵션, 능력(capabilities) 등을 각각 설정한다. 설계 시간 동안 설계자는 인터페이스 스펙(332)의 각 관련 체계(방식)를 준수하기 위해 각 주변 장치(250)를 개발한다. 예를 들어, 장치간 방식(336)은 보안 회로(106)의 인터커넥트(110)를 우회하는 장치간 시그널링을 정의하기 위한 포맷을 확립할 수 있다. 그렇게 함으로써, 상호 운용성을 향상시키고 설계 및 개발 시간은 물론 테스트 및 디버깅 노력을 줄이는 호환 가능한 주변 장치(250)를 생산할 수 있다. 예를 들어, 주변 장치(250)는 주변 장치에 대한 디자인 코드에 의해 지정된 속성으로부터 파생된 회로를 사용하여 다른 주변 장치에 신호(예를 들어, 장치간 신호)를 전달할 수 있다.
예시적인 접근법에서, 호환성(comportability) 분석 모듈(340)은 디자인 코드의 분석(344)을 수행하여 호환성을 검사할 수 있다. 설계자는 인터페이스 스펙(332)을 참조하여 주변 장치 디자인 코드(342)를 생성한다. 따라서 주변 장치 디자인 코드(342)는 인터페이스 스펙(332)을 준수함으로써 호환성 목표를 충족한다. 주변 장치 디자인 코드(342)는 예를 들어 구성 파일을 사용하여 적어도 부분적으로 실현될 수 있다. 주변 장치 디자인 코드(342)는 프로세서-장치 시그널링(Processor-Device Signaling)(348)의 하나 이상의 표시(예를 들어, 주변 장치(250)와 프로세서(202) 사이의 상호접속 통신(314)의 에스펙트를 정의함), 장치간 시그널링(350)의 하나 이상의 표시(예를 들어, 주변 장치(250)와 다른 주변 장치 사이의 장치간 통신(316)의 양태을 정의함) 등을 포함할 수 있다. 장치간 시그널링(350)의 하나 이상의 표시는 예를 들어 보안 회로(106)의 인터커넥트(110)를 사용하지 않는 것을 포함하여 2개 이상의 주변 장치 사이에서 교환되는 신호에 관련될 수 있다. 이러한 표시는 이러한 신호에 대한 레지스터, 신호 이름 지정, 데이터 유형, 타이밍 등에 대한 규칙 및 가이드라인을 따를 수 있다.
주변 장치 디자인(설계) 코드(342)의 설명은 보안 회로(106)의 회로 컴포넌트로 귀결된다. 예를 들어, (예를 들어, 도 3a의) 각각의 주변 장치(250)의 장치간 인터페이스(306)에 관하여, 그에 대한 디자인 코드(342)에 포함된 속성에 기초하여, 장치간 인터페이스(306)는 장치간 시그널링을 가능하게 하기 위해 다른 주변 장치로 연장되는 적어도 하나의 와이어에 결합될 수 있다. 디자인 코드(342)에서 장치간 신호(350)를 지정함으로써 상호 운용성과 통신 확실성이 증가한다. 인터페이스 스펙(332) 또는 디자인 코드(342)의 구성 파일은 주어진 호환성 프레임워크에서 필수인 주변 기능과 옵션인 주변 기능을 나타낼 수 있다. 따라서 호환 디자인 코드는 경우에 따라 필수 부분과 선택 부분을 포함할 수 있다. 일반적으로, 디자인 코드(342)는 임의의 IC 설계 또는 구성 플랫폼에 따라 포맷될 수 있다. 예를 들면 베릴로그(Verilog), 파이썬(Python), 에이치-제이슨(Hjson) 등이 있다.
동작 시, 호환성 분석 모듈(340)은 주변 장치 디자인 코드(342)를 수락한다. 인터페이스 스펙(332)을 참조하여, 호환성 분석 모듈(340)은 분석(344)을 수행하여 주변 장치 디자인 코드(342)가 지정된 공통 프레임워크를 준수하는지 여부를 확인한다. 호환성 분석 모듈(340)은 주변 장치 디자인 코드(342)를 상호접속 방식(334), 장치간 방식(336) 또는 다른 방식(338) 중 하나 이상과 비교하여 코드가 각각의 스펙(사양)을 충족하는지 확인할 수 있다. 이러한 방식에는 인터럽트, 레지스터 사용 등과 관련된 스펙(사양)이 포함될 수 있다. 분석(344)에 기초하여, 호환성 분석 모듈(340)은 호환성 보고서(346)를 생성한다.
호환성 보고서(346)는 주변 장치 디자인 코드(342)가 인터페이스 스펙(332)의 기준을 충족함으로써 분석(344)을 통과하는지 여부를 나타낸다. 그렇지 않은 경우, 호환성 분석 모듈(340)은 호환성 보고서(346)에 "위반(infractions)" 목록을 포함할 수 있다. 각각의 위반은 실패 표시를 야기하는 코드 부분에 대한 참조 또는 위반되고 있는 인터페이스 스펙(332)의 일부에 대한 참조를 포함할 수 있다. 인터페이스 스펙(332), 호환성 분석 모듈(340) 및 주변 장치 디자인 코드(342)는 예시적인 보안 회로 환경과 관련하여 설명될 수 있지만, 인터페이스 스펙(332), 호환성 분석 모듈(340) 또는 주변 장치 디자인 코드(342)는 다른 환경에서 구현될 수 있다. 따라서, 호환성 보고서(346)는 일반적인 회로 설계의 분석을 커버할 수 있다.
도 3c는 레지스터 인터페이스(310) 및 예시적인 통신 신호를 포함하는 예시적인 주변 장치(250)를 300-3으로 도시한다. 도 3c에서 일반적으로, 그러나 단지 예로서, 의무적인 통신 채널 또는 신호(본 발명의 이 예에서)는 실선으로 도시되고 선택적인 통신 채널 또는 신호는 점선으로 도시된다. 그러나 다른 경우에는 다른 채널이나 신호가 필수이거나 선택 사항일 수 있다. 또한, 실선 또는 점선으로 된 다른 도면의 선은 주어진 인터페이스 스펙 하에서 요구 사항 또는 요구 사항의 부족을 각각 반드시 나타내는 것은 아니다.
예시적인 구현에서, 다양한 신호는 주변 장치(250)가 준수해야 하는 호환성을 위한 프레임워크의 일부로서 지정될 수 있다. 좌측 상단부터 시작하여, 인터커넥트(110)를 사용하는 양방향 시그널링(Interconnect as Device)(362-1)은 인터커넥트(110)에 대해 디바이스로서 기능하는(예를 들어, 팔로워로서 기능하는) 주변 장치(250)와 함께 도시된다. 그 아래에서, 주변 장치(250)는 적어도 하나의 클록 신호(Clock)(364) 및 적어도 하나의 개발 모드 신호(DevMode)(365)를 수신하는 것으로 도시된다. 개발 모드 신호(365)는 보안 회로(106) 또는 전체 SOC가 현재 어떤 모드에서 동작하고 있는지에 대한 주변 장치(250)에 대한 표시를 나타낸다. 즉, 여러 동작 모드가 있을 수 있다. 두 가지 예제 모드를 사용하면 여러 모드에 개발 모드와 프로덕션 모드가 포함될 수 있다. 모드 표시는 예를 들어 소프트웨어 오류를 처리하는 방법을 결정할 수 있다. 다른 모드는 전체 수명 주기 모드 상태를 주변 장치에 전달하는 보안 기능을 활성화할 수 있다.
주변 장치(250)는 또한 적어도 하나의 인터럽트 신호(Interrupt)(366) 또는 적어도 하나의 경고 신호(Alert)(368)를 생성하거나 출력할 수 있다. 또한, 인터커넥트(110)를 사용하는 양방향 시그널링(Interconnect as Host)(362-2)은 인터커넥트(110)에 대해 호스트로서 기능하는(예를 들어, 리더로서 기능하는) 주변 장치(250)와 함께 도시되어 있다. 주변 장치(250)는 GPIO 인터페이스(220) 또는 다른 칩 I/O 회로와 함께 양방향 시그널링(367)(To/From Chip I/O)에 더 관여할 수 있다. 레지스터 인터페이스(310)와 관련하여, 적어도 하나의 발신 신호(369-1)는 레지스터-하드웨어(Reg2Hw) 신호로 라벨링된다. 한편, 적어도 하나의 인커밍 신호(369-2)는 Hw2Reg(hardware-to-register) 신호로 라벨링된다. 일반적으로 일부 구현에서 특정 기능은 필수로 간주되는 반면 다른 기능은 선택 사항으로 간주된다. 그러나 이러한 필수 및 선택 범주는 구현마다 다를 수 있다. 호환 가능한 디자인으로, 이 두 카테고리는 각 주변 장치(250)가 다른 주변 장치와 적절하게 상호 운용되도록 기능별로 할당될 수 있다.
ROM 보안을 제공하는 예시적인 ROM 주변 장치를 포함하여, 호환 가능한 패러다임의 주변 장치에 대한 방식(schemes), 기술 및 하드웨어를 일반적으로 설명했으며, 이제 이 설명은 ROM 보안을 위한 방식, 기술 및 하드웨어로 전환된다.
ROM 보안을 위한 예제 방식, 기술 및 하드웨어
이 섹션에서는 ROM 어레이(예: 마스크 ROM 저장)가 있는 ROM 블록에 포함될 수 있는 ROM 제어기의 예를 설명한다. ROM 블록 또는 모듈은 위에서 설명한 호환성 원칙에 따라 주변 장치로서 시스템 버스에 부착할 수 있다. 구현 예에서 ROM 블록의 일부로서 ROM 제어기는 시스템 버스와 마스크 ROM 사이에서 인터페이스한다. ROM에는 암호화된 콘텐츠가 있다. 암호화는 스크램블링과 같이 상대적으로 더 가볍거나 비용이 적게 드는 암호화를 수반할 수 있다. 경우에 따라 전역 상수(global constant)에서 파생될 수 있는 고정 키로 콘텐츠를 스크램블할 수 있다. 그러나 암호화는 더 복잡하거나 비용이 많이 드는 암호화 방식으로 구현될 수 있다. 사용되는 암호화 방식이나 암호 키에 관계없이 ROM 제어기는 ROM 어레이에서 가져오는 메모리의 콘텐츠를 복호화(예: 디스크램블)할 수 있다.
SRAM에 대해 동등한 복호화 또는 암호화 작업을 수행할 수 있는 일부 SRAM 제어기와 달리 ROM 제어기에는 ROM 검사기 회로도 포함될 수 있다. 이 ROM 검사기 회로는 예를 들어 무결성 검사를 제공하기 위해 초기화 프로세스의 일부로 부팅 또는 리셋 직후에 ROM 콘텐츠의 암호화 해시 계산을 조율할 수 있다. 따라서 ROM 검사기 회로는 시스템이 정지된 상태에서 마스크 ROM에 발생한 악의적인 변경 사항을 감지할 수 있다.
ROM 블록은 여러 기능을 제공할 수 있다. 예를 들어, ROM 블록은 메모리 및 주소 스크램블링 및/또는 디스크램블링을 위한 로직을 포함할 수 있다. 둘째, ROM 블록은 부팅 후 ROM 무결성 검사를 수행할 수 있다. 또한, ROM 블록은 ROM 무결성 오류 또는 FSM(Finite State Machine) 글리치(glitches)에 대한 제어 및 상태 레지스터(CSR)에 대한 경고 트리거 및/또는 상태 정보를 제공하거나 발행할 수 있다. ROM(118/206)의 이들 및 다른 예시적인 양태는 도 4 내지 도 8을 참조하여 이 섹션에서 설명된다.
도 4는 ROM 어레이(404)의 데이터 액세스와 관련하여 ROM 제어기(402) 및 ROM 어레이(404)를 포함하는 예시적인 ROM(118)을 일반적으로 400으로 도시한다. 도시된 바와 같이, ROM 제어기(402)는 ROM 액세스 인터페이스(406) 및 암호화 회로(408)를 포함할 수 있다. 예시적인 구현에서, ROM 어레이(404)는 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)를 포함한다. ROM 제어기(402)는 ROM 어레이(404)에 결합된다. 일반적으로, 암호화 회로는 복수의 ROM 주소(418)에 기초하여 암호화된 ROM 데이터(410)에 대해 복호화 동작을 수행할 수 있다.
ROM 액세스 인터페이스(406)는 암호화 회로(408) 및 ROM 어레이(404)에 결합된다. 예를 들어 ROM 읽기(판독) 또는 데이터 가져오기 동작에서, ROM 액세스 인터페이스(406)는 암호화된 ROM 데이텀(412)에 대응하는 ROM 주소(414)에 기초하여 ROM 어레이(404)로부터 암호화된 ROM 데이텀(412)을 판독한다(예를 들어, ROM 주소(414)는 암호화된 ROM 데이텀(412)가 저장되는 위치의 주소일 수 있음). ROM 액세스 인터페이스(406)는 또한 암호화 회로(408)를 사용하여 복호화된 ROM 데이텀(416)을 생성하기 위해 암호화된 ROM 데이텀(412)을 복호화한다. ROM 액세스 인터페이스(406)는 또한 복호화된 ROM 데이텀(416)을 인터커넥트(110)로 전달할 수 있다. 일부 경우에, ROM 액세스 인터페이스(406)는 암호화된 ROM 데이텀(412)에 대응하는 ROM 주소(414)를 사용하여 복호화된 ROM 데이텀(416)을 생성하기 위해 암호화된 ROM 데이텀(412)을 복호화한다. 따라서, 암호화 회로(408)는 복수의 ROM 주소(418)의 각각의 ROM 주소(414)에 기초하여 암호화된 ROM 데이터(410)의 각각의 ROM 데이텀(412)에 대해 복호화 동작을 수행할 수 있다. 각각의 ROM 주소(414)는 예를 들어 메모리 위치를 표시함으로써 ROM 어레이(404)에서 각각의 ROM 데이텀(412)을 식별할 수 있다. 아래에 설명된 바와 같이, ROM 주소(414)는 ROM 어레이(404)를 "직접(directly)" 가리키는 스크램블링된 주소 또는 스크램블링되지 않은 주소를 조정하여 스크램블링된 주소를 생성한 후와 같이 "간접적으로(indirectly)" ROM 어레이(404)를 가리키는 스크램블링되지 않은 주소를 포함할 수 있다.
ROM 액세스 인터페이스(406)는 (예를 들어, 도 1의) 보안 회로(106) 또는 전자 장치를 위한 부트업(bootup) 절차를 위한 복호화된 ROM 데이터로서(예를 들어, 복호화된 ROM 데이텀(416)의 다중 인스턴스로서) 암호화된 ROM 데이터(410)에 대한 액세스를 제공하도록 설계 및/또는 프로그램된 적어도 하나의 FSM(Finite State Machine)으로 실현될 수 있다. FSM 또는 ROM 액세스 인터페이스(406)의 다른 구현은 암호화 회로(408)의 동작을 지시할 수 있다.
암호화 회로(408)는 ROM 주소(418)에 기초하여 하나 이상의 키를 생성할 수 있는 키스트림(keystream) 회로(도 4에 미도시)를 포함할 수 있다. 암호화 회로(408)는 또한 키스트림 회로에 결합된 데이터 조합 회로(도 4에 미도시)를 포함할 수 있다. 데이터 조합 회로는 암호화된 ROM 데이텀(412) 및 다중 키 중 적어도 하나의 키에 기초하여 복호화된 ROM 데이텀(416)을 생성한다. 일부 경우에, 암호화 회로(408)는 치환된 암호화된 ROM 데이텀을 생성하기 위해 암호화된 ROM 데이텀(412)을 치환하는 치환 회로(도 4에 도시되지 않음)를 더 포함한다. 그 후 데이터 결합 회로는 복호화된 ROM 데이텀(416)을 생성하기 위해 논리 연산을 사용하여 적어도 하나의 키의 비트와 치환된 암호화된 ROM 데이텀의 비트를 결합한다. 암호화 회로(408)의 예시적인 구현은 도 6을 참조하여 아래에서 설명된다.
암호화된 ROM 데이터(410)의 각각의 엔트리는 예를 들어 ROM 명령어(420) 및 ECC(error-correction code)와 같은 검사 코드(422)를 포함할 수 있다. 그러한 경우에, 암호화된 ROM 데이텀(412)은 ROM 명령어(420)에 대응하는 비트 및 ROM 명령어(420)에 대한 검사 코드(422)에 대응하는 비트를 포함할 수 있다. ROM 명령어(420)에 해당하는 비트와 ROM 명령어(420)에 대한 검사 코드(422)에 해당하는 비트는 각각의 비트 위치를 알 수 없도록 함께 뒤섞인(intermingled), 혼합(믹스) 또는 "스무싱(smooshed)"된다. 대조적으로, 복호화된 ROM 데이텀(416)은 ROM 명령어(420)에 해당하는 비트와 ROM 명령어(420)에 대한 검사 코드(422)에 해당하는 비트를 포함할 수 있으며, 두 세트의 비트가 서로 분리된 형태로, 또는 적어도 상대 비트 위치가 알려져 있다.
일부 구현에서, 복호화된 ROM 명령어(명령) 및 연관된 검사 코드는 ROM(118)에 의해 인터커넥트(110)를 통해 다른 컴포넌트로 전달될 수 있다. 다른 구현에서, ROM 제어기(402)는 ROM 검사기 회로(예를 들어, 도 6의 ROM 검사기 회로(616))를 포함할 수 있다. ROM 검사기 회로(616)는 암호화 회로(408)의 출력에 결합될 수 있다. 예시적인 동작에서, ROM 검사기 회로(616)는 복호화된 ROM 데이텀(416)의 ROM 명령어(420)에 기초하여 다른 검사 코드를 계산한다. ROM 검사기 회로(616)는 또한 복호화된 ROM 데이텀(416)의 검사 코드(422)와 계산된 검사 코드를 포함하는 비교를 수행한다. ROM 검사기 회로(616)는 비교에 기초하여 에러 신호를 더 생성할 수 있다. 에러 신호는 경고 신호 및/또는 인터럽트 신호로서 경고 처리기 및/또는 프로세서에 각각 전송될 수 있다.
도 8 및 도 10을 참조하여 설명한 바와 같이, ROM 어레이(404)의 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)의 각각의 암호화된 ROM 데이텀(412)은 ROM 어레이(404)의 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)의 암호화된 ROM 데이텀(412')와 서로 구별(distinction)(일부 구현에서)된다. 이러한 구별(또는 암호화된 ROM 데이터 고유성)은 적어도 부분적으로 복수의 ROM 주소(418)를 기반으로 하는 암호화 방식(encryption scheme)에 기인한다. 예를 들어, 암호화 방식 및/또는 주어진 암호화 방식에 사용되는 적어도 하나의 암호 키는 각각의 원래 ROM 데이텀이 구분한(distinct) 암호화된 ROM 데이텀을 생성하도록 선택될 수 있다.
도 5는 다음에 설명되며 예시적인 ROM(118)의 추가적 및/또는 대안적 양태를 도시한다. 따라서, 도 4의 양태는 도 5의 하나 이상의 양태와 결합될 수 있고 그 반대도 가능하다는 것을 이해해야 한다. 예를 들어, 도 5의 주소 조정 회로(504)는 도 4의 회로에 포함될 수 있다. 그러한 경우에, ROM 제어기(402)는 ROM 주소를 조정하여 조정된 ROM 주소를 생성하는 주소 조정 회로(504)를 포함할 수 있다. 이는 ROM 주소를 스크램블되지 않은 상태에서 스크램블된 상태로(예를 들어, 물리적 주소를 생성하도록 조정된 논리 주소에서) 변환하는 것을 수반할 수 있다. ROM 액세스 인터페이스(406)는 주소 조정 회로(504)를 사용하여 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)를 판독하기 위해 ROM 주소를 조정한다. 주소 조정 회로(504)는, 예를 들어, 각 ROM 주소의 2개 이상의 비트를 치환하거나, 각 ROM 주소의 2개 이상의 비트를 치환하거나, 또는 조정된 ROM 주소를 생성하기 위해 ROM 주소(418)의 각 ROM 주소의 2개 이상의 비트를 치환 및 대체한다. 결합되는 도 4 및 5의 양태를 예시하는 다른 예시적인 구현이 도 6에 함께 도시되고 아래에 설명된다.
도 5는 일반적으로 500에서 암호화된 ROM 데이터(410)의 무결성을 검사하는 컨텍스트에서 ROM 제어기(402) 및 ROM 어레이(404)를 포함하는 예시적인 ROM(118)을 도시한다. 도시된 바와 같이, ROM 제어기(402)는 무결성 검사기 회로(502), 주소 조정 회로(504) 및 게이트 회로(506)를 포함한다. ROM 제어기(402)는 적어도 다이제스트 계산 회로(508)에 액세스할 수 있다. 일부 경우에, 다이제스트 계산 회로(508)는 다른 주변 장치(250)(도 2) 및/또는 회로 컴포넌트(108)(도 1)로서 실현된다. 다른 경우에, 다이제스트 계산 회로(508)는 ROM 제어기(402)의 일부이거나 그로부터 분리되는 것과 같이 ROM(118)의 일부로서 실현될 수 있다.
예시적인 구현에서, ROM 어레이(404)는 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)를 포함한다. ROM 어레이(404)는 또한 적어도 하나의 예상된 다이제스트(510)(또는 "예상된 다이제스트 값(510)")를 포함할 수 있다. ROM 제어기(402)는 ROM 어레이(404)에 결합된다. 예시적인 동작에서, ROM 제어기(402)는 암호화된 ROM 데이텀(412)에 대응하는 ROM 주소(512 또는 514)에 기초하여 ROM 어레이(404)로부터 암호화된 ROM 데이텀(412)을 판독한다. ROM 제어기(402)는 또한 암호화된 ROM 데이텀(412)을 사용하여 적어도 하나의 다이제스트 값(516)을 획득하는다. 획득을 수행하기 위해, 무결성 검사기 회로(502)는 다이제스트 계산 회로(508)를 사용할 수 있다. ROM 제어기(402)는 적어도 하나의 다이제스트 값(516) 및 예상된 다이제스트 값(510)에 기초하여 ROM 어레이(404)에 대한 액세스를 추가로 게이트(gate)한다. 무결성 검사기 회로(502)는 ROM 어레이(404)에 대한 액세스를 허용/허가 또는 차단하도록 게이트 회로(506)를 제어할 수 있다.
ROM 제어기(402)의 주소 조정 회로(504)는 ROM 주소(512)를 조정하여 조정된 ROM 주소(514)를 생성할 수 있다. ROM 제어기(402)는 주소 조정 회로(504)를 사용하여 ROM 주소(512)를 조정하여 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)를 판독한다. 주소 조정 회로(504)는 예를 들어 조정된 ROM 주소(514)를 생성하기 위해 ROM 주소(512)의 2개 이상의 비트를 시프트, 스와핑 또는 조작함으로써 ROM 주소(512)를 조정할 수 있다. 도 4의 ROM 주소(414)는 ROM 주소(512) 또는 조정된 ROM 주소(514)에 대응할 수 있다.
ROM 제어기(402)는 적어도 하나의 해싱 알고리즘이 암호화된 ROM 데이텀(412)에 적용되도록 하는 것에 기초하여 적어도 하나의 다이제스트 값(516)을 얻도록 구성된다. 예시적인 해싱 알고리즘이 여기에서 설명된다. 일부 경우에, ROM 어레이(404) 및 ROM 제어기(402)는 제1 주변 장치(예를 들어, 도 2의 ROM(206)과 같은 제1 주변 장치(250-1))를 포함한다. 제2 주변 장치(예를 들어, 도 2의 HMAC 엔진(214)와 같은 제2 주변 장치(250-2))는 하나 이상의 해싱 알고리즘을 구현할 수 있다. ROM 제어기(402)는 제2 주변 장치와 통신함으로써 적어도 하나의 다이제스트 값(516)을 획득할 수 있다. 따라서, 이러한 경우에, 제2 주변 장치는 다이제스트 계산 회로(508)를 포함할 수 있다. 다른 경우에, ROM 제어기(402)를 포함하는 ROM(118)은 다이제스트 계산 회로(508)를 대신 포함할 수 있다.
일부 구현에 대해 도 5에 도시된 바와 같이, ROM 제어기(402)는 ROM 어레이(404)로부터 예상된 다이제스트 값(510)을 판독할 수 있다. 암호화된 ROM 데이터(410)와 달리, 예상된 다이제스트 값(510)은 암호화되지 않은 형태로 ROM 어레이(404)에 저장될 수 있다. 예상된 다이제스트 값(510)은 ROM 어레이(404)의 임의의 주소 및/또는 위치에 저장될 수 있고, 예상된 다이제스트 값(510)은 ROM 어레이(404)의 하나 이상의 라인 및/또는 주소에 걸칠 수 있다. 예를 들어, 예상된 다이제스트 값(510)은 결정 가능한 ROM 주소(예를 들어, 마지막 6개의 ROM 엔트리를 식별하는 적어도 하나의 ROM 주소(512) 또는 적어도 하나의 조정된 ROM 주소(514))에 대응하는 미리 결정된 위치(예를 들어, 마지막 6개의 ROM 엔트리)에서 ROM 어레이(404)에 저장될 수 있다.
무결성 검사기 회로(502)는 계산된 다이제스트 값(516)과 예상된 다이제스트 값(510)을 비교할 수 있다. 예상된 다이제스트 값(510)과 일치하는 적어도 하나의 다이제스트 값(516)에 응답하여, ROM 제어기(402)는 예를 들어 암호화된 ROM 데이터(410)를 사용하여 수행되는 부트 절차를 허용하거나 일반 ROM 액세스를 허용하기 위해 게이트 회로(506)를 사용하여 ROM 어레이(404)에 대한 액세스를 승인할 수 있다. 한편, 예상된 다이제스트 값(510)과 일치하지 않는 적어도 하나의 다이제스트 값(516)에 응답하여, ROM 제어기(402)는 예를 들어 신뢰할 수 없는 암호화된 ROM 데이터(410)를 사용하여 부팅 절차가 수행되는 것을 방지하거나 일반 ROM 액세스를 차단하기 위해 게이트 회로(506)를 사용하여 ROM 어레이(404)에 대한 액세스를 차단할 수 있다. ROM 제어기(402)는 또한 적어도 하나의 알람(518)(또는 "알람 표시(518)")을 전송할 수 있다. 적어도 하나의 알람(518)은 레지스터를 통해 ROM(118)으로부터 전달되는 경고 및/또는 인터커넥트(110) 또는 전용 경로를 통해 전송되는 인터럽트에 대응할 수 있다.
보안 회로는 추가적으로 또는 대안적으로 계산된 다이제스트 값(516)을 ROM(118) 외부의 하나 이상의 다른 컴포넌트에 제공할 수 있다. 예를 들어, 무결성 검사기 회로(502)와 같은 ROM 제어기(402)는 다이제스트 값(516)을 메인 프로세서와 같은 다른 컴포넌트로 전송할 수 있다. ROM 제어기(402)는 ROM(118)의 적어도 하나의 레지스터를 통해 다이제스트 값(516)을 노출할 수 있다. 레지스터의 값을 읽을 때, 이것은 다른 컴포넌트(들)가 계산된 다이제스트 값(516)의 값을 독립적으로 검증할 수 있게 한다. 키 도출 메커니즘으로 인해, 공격자가 암호화된 ROM 데이터(410) 및/또는 예상된 다이제스트 값(510)(ROM 어레이(404)에 저장됨)을 손상시킬 수 있더라도, 공격자가 다른 컴포넌트에서 감지할 수 있는 방식으로 칩 ID(identity)를 변경했다.
암호화된 ROM 데이터(410)의 각 암호화된 ROM 데이텀(412)은 서로 고유하거나 다른 것을 포함하여 다양하거나 이질적으로 설정될 수 있다. 예를 들어, 암호화된 ROM 데이터(410)의 각각의 암호화된 ROM 데이텀(412)은 ROM 어레이(404) 전체에 걸쳐 암호화된 ROM 데이터(410)의 각각의 암호화된 ROM 데이텀(412)과 서로 다를 수 있다. 일부 경우에, 암호화된 ROM 데이터(410)의 암호화 또는 복호화와 관련된 암호 키가 선택되어 각각의 암호화된 ROM 데이텀(412)가 ROM 어레이(404) 전체에서 암호화된 ROM 데이터(410)에 대한 각각의 암호화된 ROM 데이텀(412)과 상이함을 보장한다. 다른 경우에, 각각의 암호화된 ROM 데이텀(412)의 생성과 관련된 암호화 알고리즘은 각각의 암호화된 ROM 데이텀(412)이 ROM 어레이(404) 전체에 걸쳐 암호화된 ROM 데이터(410)에 대한 각각의 암호화된 ROM 데이텀(412)과 서로 다른 것을 보장하도록 선택된다. 대부분의 또는 심지어 각각의 암호화된 ROM 데이텀(412)이 고유함을 보장하는 기술은 도 8을 참조하여 더 설명된다.
도 6은 ROM(118)(예를 들어, 도 1, 4 및 5) 및/또는 ROM 주변 장치(206)(예를 들어, 도 2)로서 구현될 수 있는 예시적인 ROM 블록(600)을 도시한다. 도 6은 ROM 모듈 구현 예의 높은 수준의 블록 다이어그램을 보여준다. 일부 묘사된 블록은 칩의 다른 곳에서 또는 보안 회로의 다른 컴포넌트의 일부로 사용되거나 복제될 수 있는 다중 사용 프리미티브(primitives)의 인스턴스화로 실현될 수 있다. ROM 블록(600)은 도 4 및 도 5로부터, ROM 어레이(404), 무결성 검사기 회로(502) 및 주소 조정 회로(504)를 포함한다.
도시된 바와 같이, ROM 블록(600)은 또한 인터페이스(604), 적어도 하나의 레지스터(606), ROM 검사기 회로(616), 제로 패더(zero padder) 회로(618), 멀티플렉서(602) 및 암호화 회로(408)의 예(예를 들어, 도 4)를 포함한다. ROM 검사기(체커) 회로(616)는 ECC 디코더로 구현될 수 있다. 암호화 회로(408)는 예를 들어 키스트림 회로(608), 조작(manipulation) 회로(612) 및 데이터 조합 회로(DC)(614)로 실현될 수 있다. 데이터 조합 회로(614)는 예를 들어 배타적 논리합(XOR) 연산과 같은 논리 연산을 수행하는 회로로 구현될 수 있다. 조작 회로(612)는 (도 4 및 5의 암호화된 ROM 데이텀(412)에 대응할 수 있는) ROM 데이텀(626)의 하나 이상의 비트를 확산(diffuse)시킬 수 있다. 조작 회로(612)는 예를 들어 순열 회로, 치환 회로, 또는 조합된 순열 및 치환 회로(예를 들어, 치환-순열 네트워크)를 사용하여 구현될 수 있으며, 이는 아래에서 더 설명된다.
일반적으로 다이어그램의 위쪽 절반은 시스템이 정상 동작 중일 때 ROM 읽기 경로를 보여준다. 다이어그램의 아래쪽 절반은 ROM 무결성 검사기 회로(502)의 사용을 묘사한다. ROM 무결성 검사기 회로(502)는 예를 들어 ROM 이미지의 유효성을 검사하기 위해 칩 부팅 시퀀스 초기에 전원 관리자에 의해 트리거될 수 있다. 일부 경우에, 무결성 검사기 회로(502)는 공격자가 다중 실행으로 시스템을 손상시킬 수 있는 것을 방지하기 위해 정확히 한 번 실행되도록 구성될 수 있다. 무결성 검사기 회로(502)는 무결성 검사 절차가 긍정적인 결과로 완료되어 게이트 회로(506)(도 5의)의 일부로서 ROM 어레이에 대한 액세스를 승인할 때 멀티플렉서(602)를 해제할 수 있다.
이 문서에서는 보안 회로(예: 칩)가 정상 부팅 모드에서 동작하거나 무결성 검사가 성공적으로 수행된 후 ROM 액세스의 예를 설명한다. 칩이 부팅되면 시스템 버스(예: TL-UL 버스)와 같은 상호접속을 통해 ROM 액세스를 요청할 수 있다. ROM 블록(600)은 도 6의 좌측 상단에 도시된 인터페이스(604)(예를 들어, TL-UL 어댑터)를 통해 이러한 요청을 수신할 수 있다. 정상 동작에서, 멀티플렉서(602)는 이러한 버스 읽기(판독)(예를 들어, TL 읽기)에 대한 액세스를 승인한다. 판독 요청의 주소(610)는 주소 조정 회로(504)에서 조정된다. 예를 들어, 주소 조정 회로는 대체 순열(substitution-permutation) 네트워크를 사용하여 주소를 뒤섞을 수 있다.
ROM 액세스와 병렬로, 키스트림 회로(608)(낮은 대기시간(latency), 감소된 라운드 PRINCE 블록 암호(block-cipher)와 같은)(예: 대기시간이 1인 5라운드, ㅇ이는 SRAM에 사용되는 암호와 동일)는 ROM 블록에 대한 39비트 잘린(truncated) 키스트림을 계산한다. 키스트림 회로(608)는 주소 조정 회로(504)에 제공된 요청으로부터의 주소를 사용하여(예를 들어, 주소가 조정되기 전에) 적어도 하나의 키를 생성한다. 다음 사이클에서, ROM 어레이(404)로부터의 스크램블된 데이터(예를 들어, ROM 데이터에 대한 비트 및 대응하는 ECC에 대한 비트, 비트의 두 세트 또는 유형이 ROM 어레이(404)에서 그리고 ROM 데이텀(626)로서 혼합됨)는 다른 치환-순열 네트워크와 같은 조작 회로(612)를 통해 전달된다. 조작 회로(612)로부터의 조작된(예를 들어, 치환 및/또는 대체(순열)된) ROM 데이터 및 키스트림 회로(608)로부터의 적어도 하나의 키 또는 키스트림은 데이터 조합 회로(614)에 의해 결합된다. 도시된 예에서, 키 및 (ECC 코드를 갖는) 치환된 스크램블된 ROM 데이터는 데이터 결합 회로(614)에 의해 수행된 XOR 연산에 의해 XOR'된다. 예를 들어 "카운터(CTR) 모드"에서 PRINCE와 같은 블록 암호를 사용할 수 있다. 카운터(예를 들어, ROM 데이텀 주소(610))는 N-비트 블록 암호(예: PRINCE) 및 주어진 키(예: 넷리스트(netlist) 상수)로 암호화되어 데이터에 대해 XOR'될 수 있는 N-비트 키스트림 블록(628)을 생성한다(예를 들어, ROM 데이텀 주소(610)에 대응하는 ROM 데이텀(626)).
데이터 조합 회로(614)로부터의 출력은 복호화된 32비트 데이터에 7개의 ECC 비트를 더한 것이다. ROM 검사기 회로(616)가 여기에서 구현되면, 이들 39비트는 ROM 검사기 회로(616)를 통해 전달될 수 있고 ECC 비트와의 성공적인 검증 시 인터페이스(604)로 되돌아갈 수 있다. ECC 디코드 오류는 TL 요청에 응답하는 ROM 액세스에 의해 오류 신호(622)와 함께 인터페이스(604)를 통해 오류 코드(예를 들어, 판독 오류 표시자)가 보고되게 할 수 있다. ROM 제어기는 오류 신호(622)를 사용하여 또한 또는 대신 레지스터(606) 중 적어도 하나의 레지스터를 설정하고/하거나 ECC 디코드 오류에 기초하여 치명적인 경고(fatal alert)를 생성할 수 있다. 특정 비트 길이가 여기에서 제공되지만, 이들은 단지 예로서 제시되며, 데이터, ECC 등은 다른 길이를 갖거나 생략될 수 있다.
ECC 기능에 대한 대체 구현에서 "메인(main)" 또는 시스템 버스는 ECC 검사 기능으로 보강될 수 있다. 이러한 경우, 그 회로 및 동작은 도 6을 참조하여 도시 및 설명된 것과 다를 수 있다. 예를 들어, ROM 액세스 응답(624)은 데이터 조합 회로(614)의 디스크램블링 XOR 연산자로부터 인터페이스(604)로 "직접" 이러한 비트를 전달함으로써 ROM 비트 및 ECC 비트를 포함할 수 있다. 따라서, ROM 검사기 회로(616) 및 그 관련 CSR은 이러한 대안적인 구현에서 ROM 블록(600)으로부터 생략될 수 있다.
도 7은 도 6의 ROM 블록(600)의 ROM 어레이(404)에 액세스하기 위한 예시적인 타이밍도(700)를 도시한다. 타이밍도(700)는 상이한 신호들의 타이밍을 나타낸다. 이들 예시적인 신호는 도 6의 ROM 블록(600)에 도시된 신호에 매핑된다. 인터페이스(604)로부터 요청(702)(req 702) 출력이 제공될 때부터 인터페이스(604)의 응답 또는 ROM 유효(rvalid)(704) 입력에 응답이 나타날 때까지의 시간은 1 사이클(주기)이다. 두 가지 예("12"의 스크램블되지 않은 또는 원래 주소와 "34"의 스크램블되지 않은 또는 원래 주소)가 표시된다. 다이어그램의 주소에 대한 "스크램블링 방식(체계)" 예는 각 주소의 숫자를 뒤집는 것이다. 원본 또는 스크램블되지 않은(언스크램블) "12" 주소 예에서 ROM의 스크램블된 주소 21에 저장된 워드는 "w21"로 표시된다. 스크램블되지 않은(언스크램블) 또는 원래 주소 12의 키스트림 값은 "k12"로 표시된다. 언스크램블 또는 원래 주소(12)에 대한 복호화된 ROM 데이터는 "d12"로 표시된다.
도 6을 참조하면, 키스트림 회로(608)의 PRINCE-블록-암호 기반 구현 및 주소 조정 회로(504) 및 조작 회로(612)의 2개의 S&P(Substitution-and-Permutation) 네트워크 구현은 "키"에 의해 파라미터화될 수 있다. ROM 제어기의 경우, 이러한 키는 전역(글로벌) 무작위 넷리스트 상수일 수 있다. 따라서 키는 복구하기 어렵다고 가정할 수 있지만 반드시 비밀 데이터일 필요는 없다. 특정 비트 길이(예를 들어, 39비트 및 256비트) 및 워드 크기(예를 들어, 32비트)가 여기의 설명 및/또는 첨부된 도면에 제시되어 있지만, 이들은 단지 예로서 제공된 것이다. 다른 구현에서는 다른 비트 길이, 워드 크기 등을 사용할 수 있다.
이 문서는 이제 스타트업 ROM 무결성 검사의 예를 설명한다. ROM 무결성 검사기 회로(502)는 예를 들어 리셋 후 "즉시(immediately)" 또는 적어도 ROM에 대한 임의의 판독이 수행되기 전에 실행될 수 있다. ROM 검사가 완료될 때까지 무결성 검사기 회로(502)는 (예를 들어, 멀티플렉서(602)를 통해) ROM 주소 요청을 제어한다. 멀티플렉서(602)에 대한 선택 신호(632)는 결함 주입(FI: fault injection) 공격에 대해 선택 신호를 보호하기 위해 중복 인코딩을 포함할 수 있다. 선택 신호(632)가 유효하지 않은 값을 갖는 경우, 무효성의 검출은 치명적인 경고를 트리거할 수 있다. ROM 어레이(404)로부터 데이터를 ROM 데이텀(626)(예를 들어, 도 4 및 도 5의 암호화된 ROM 데이텀(412)에 대응할 수 있음)로서 판독하기 시작하기 전에, ROM 무결성 검사기 회로(502)(또는 전원 관리자 모듈)는 ROM 검사를 준비하기 위해 암호화 모듈(도 6에는 도시되지 않음)에서 암호화 작업을 시작할 수 있다(예: 신호 kmac_cmd_o를 사용하여 키 또는 Keccak 메시지 인증 코드(KMAC) 엔진에서 cSHAKE 작업을 시작할 수 있음). ROM 무결성 검사 프로세스의 예는 도 9의 흐름도를 참조하여 아래에 설명되어 있다.
보안 회로에 대한 가능한 물리적 공격은 마스크 ROM을 파괴하려는 시도이다. 마스크 ROM의 규칙적인 구조는 메탈 고정(metal fixes)을 비교적 간단하게 만들기 때문에 유용하지만 같은 이유로, 규칙적인 구조는 ROM을 공격자에게 상대적으로 쉬운 대상으로 만들 수 있다. ROM의 코드가 가장 먼저 실행될 수 있기 때문에 탐지되지 않은 채 ROM 코드를 수정하는 공격자는 신뢰 체인(chain of trust)을 완전히 손상(subvert)시킬 수 있다. 따라서, 무결성 검사기 회로(502)는 ROM 코드 무결성에 대한 신뢰도를 제공할 수 있다.
예시적인 구현에서, ROM 제어기를 리셋에서 해제한 후 전원 관리자는 호스트 프로세서를 시작하기 전에 "check_done_o" 신호가 표명될 때까지 기다린다. 전원 관리자는 check_good_o 신호가 "On"인지도 확인할 수 있다. 그렇지 않으면 전원 관리자가 부팅을 거부할 수 있다. 이는 안전 검사를 제공하며 다음에 설명된 대로 키 관리자 통합을 통해 추가 보안이 제공된다.
KMAC 인터페이스는 KMAC 엔진이 ROM 검사기 회로에 고유한 접두사를 사용하여 cSHAKE 알고리즘을 실행하도록 미리 구성되어 있다고 가정할 수 있다. ROM 검사기는 하나의 해시 계산(또는 알려진 수의 해시 계산)을 마친 후에 신호 "kmac_rom_vld_o"를 주장하지 않는다. 그러나 KMAC 엔진은 결함 주입 공격에 대해 여전히 견고성을 제공하는 간단한 중재를 허용하기 위해 신호를 무시할 수 있다.
키 관리자와의 통합은 "kmac_digest_share0_i" 및 "kmac_digest_share1_i"의 다이제스트 데이터를 "keymgr_digest_data_o"로 전달하는 것을 기반으로 한다. 이 256비트 다이제스트는 "CreatorRootKey"에 통합될 수 있다. 경우에 따라 키 관리자는 리셋 후 이 정보를 전달하기 위해 하나의 트랜잭션(transaction)(예: 256비트/32비트 = 8비트)만 허용할 수 있다. 향후 메시지에 대한 응답으로 키 관리자는 경고를 발생시켜 올바른 트랜잭션 전후에 추가 트랜잭션을 트리거하려는 공격자를 방어할 수 있다.
CreatorRootKey는 ID 및 루트 키에 대한 체인의 첫 번째 키를 형성할 수 있다. ROM을 수정하는 공격자는 그렇게 하지 않으면 ROM 검사섬 계산 또는 KM_DERIVE 함수에 대한 사전 이미지 공격이 수반되기 때문에 CreatorRootKey를 방해한다. 그 결과 보안 칩이 동작할 수 있지만 칩에 "wrong(잘못된)" 루트 키가 있으므로 증명에 사용되는 신뢰 체인이 끊어진다.
다음은 파라미터 및 신호 측면에서 하드웨어 인터페이스의 예를 설명한다. 예시적인 ROM 제어기 신호에 대한 설명은 아래 표 1에 나와 있다. 이들 신호는 무결성 검사기 회로(502)로부터 전송되거나 수신될 수 있다. "검사(check)" 관련 신호는 전원 관리자와 통신할 수 있다. "keymgr" 관련 신호는 키 관리자와 통신할 수 있다. "kmac" 관련 신호는 KMAC 엔진 또는 해싱 작업을 수행하는 다른 회로와 통신할 수 있다.
표 1. ROM 무결성 검사기와 통신하는 예제 신호
ROM 블록의 레지스터(606)에 대한 예시적인 레지스터 값은 다음을 포함할 수 있다:
ALERT_TEST(경고 테스트);
FATAL_ALERT_CAUSE(치명적 경고 원인);
DIGEST_0 … DIGEST_7(예: 다중 레지스터 사용);
EXP_DIGEST_0 … EXP_DIGEST_7(예: 다중 레지스터 포함); 그리고
ROM(예: ROM에 대한 윈도우).
FATAL_ALERT_CAUSE 레지스터의 예제 필드는 아래 표 2에 나와 있다.
표 2. 치명적 경고 원인 레지스터의 예제 필드.
프로그래밍 및 ROM 블록과 관련하여 소프트웨어는 코드를 가져오거나 ROM에서 데이터를 로드하여 ROM 제어기와 상호 작용할 수 있다. 이러한 관점에서 ROM 블록은 시스템 버스를 통해 액세스할 수 있는 메모리 블록으로 보인다. 그러나 ROM 블록은 몇 개의 레지스터(606)를 액세스 가능하게 만들 수 있다. 쓰기 가능한 ALERT_TEST 레지스터를 제외하고 레지스터는 읽기 전용일 수 있다. FATAL_ALERT_CAUSE 레지스터는 동작 중에 값을 변경할 수 있지만(예: 경고 신호가 있는 경우) ROM 블록의 다른 레지스터는 소프트웨어가 실행되는 동안 고정된 값을 가질 수 있다.
무결성 검사기 회로(502)는 다이제스트(digest) 신호(634)를 통해 레지스터(606)에 다이제스트를 로드할 수 있다. 계산된 ROM 다이제스트를 얻기 위해 소프트웨어는 DIGEST_0에서 DIGEST_7 레지스터까지 읽을 수 있다. ROM 어레이(404)는 또한 예상 ROM 다이제스트, EXP_DIGEST를 포함할 수 있다. ROM 어레이(404)의 나머지 콘텐츠와 달리, 예상된 다이제스트를 저장하는 콘텐츠는 스크램블링되지 않을 수 있다. 따라서 소프트웨어는 표준 ROM 인터페이스를 통해 읽을 수 없으며 "다시(again)" 스크램블을 해제하여 ECC 검사 실패를 유발하는 쓰레기 데이터가 된다. 소프트웨어에 이 값에 대한 액세스 권한이 부여되는 경우 예상된 다이제스트는 EXP_DIGEST_0에서 EXP_DIGEST_7까지 읽을 수 있다.
도 8은 복원성(resiliency)을 갖는 무결성 검사를 위한 구현에 따른 예시적인 방식을 일반적으로 800으로 도시한다. 보안 회로는 ROM 어레이(404)를 포함한다. ROM 어레이(404)는 암호화된 ROM 데이터(410)를 포함한다. 암호화된 ROM 데이터(410)는 암호화된 ROM 데이텀(412-1) … 암호화된 ROM 데이텀(412-L)의 L 인스턴스(L은 정수를 나타냄)와 같은 암호화된 ROM 데이텀의 다중 인스턴스를 포함할 수 있다.
각각의 암호화된 ROM 데이텀(412)은 각각의 "원래(original)" ROM 라인(802-1)으로부터 적어도 하나의 키(804)를 갖는 암호화 알고리즘(806)을 사용하여 및/또는 각각의 ROM 주소(414)에 기초하여 생성된다(예를 들어, 각각의 ROM 주소(414)는 적어도 하나의 키(804)의 일부로 사용될 수 있음). 따라서, 제1 ROM 라인(802-1)은 제1 암호화된 ROM 데이텀(412-1)가 되고, L번째 ROM 라인(802-L)은 L번째 암호화된 ROM 데이텀(412-L)이 된다. 각각의 ROM 라인 또는 엔트리(802)는 예를 들어 연산의 암호화 및 복호화 쌍 후에 복호화된 ROM 데이텀(416)에 대응할 수 있다.
일부 경우에, 암호화 알고리즘(806)과 키(804)의 특정 조합은 동일한, 즉 서로 구별되지 않는 암호화된 ROM 데이텀(412)의 둘 이상의 인스턴스를 생성할 수 있다. 이는 다른 ROM 라인이 ROM 어레이(404)에서 변경된 경우 동일한 값을 갖는 다른 ROM 라인으로 ROM 무결성 검사기를 재지정함으로써 또 다른 공격 가능성을 제공할 수 있다. 보다 구체적으로 공격자는 검사기와 ROM 어레이 간의 통신을 공격하려고 시도할 수 있다. 여기에는 데이터 버스 조작(예: ROM 데이터에 대한 변경 사항 숨기기) 또는 주소 버스의 하위 비트 공격이 수반될 수 있다. 예를 들어 공격자는 ROM의 워드(워드)를 수정하려고 시도할 수 있지만 ROM 검사기를 동일한 워드의 다른 복사본으로 리디렉션하여 해싱 계산을 통해 이러한 변경 사항을 감지하지 못한다.
이를 방지하기 위해, 암호화 알고리즘(806) 및/또는 키(804)는 하나 이상의 중복이 있는 경우 변경되거나 다른 알고리즘 또는 키로 대체될 수 있다. 변경된 알고리즘 및/또는 키를 사용하여 ROM 라인(802-1...802-L)은 다시 암호화되어 암호화된 ROM 데이텀(412-1...412-L)의 여러 인스턴스의 또 다른 세트를 생성한다. 이 프로세스는 암호화된 ROM 데이텀(412)의 인스턴스가 거의 또는 전혀 없을 때까지 반복될 수 있다.
임시(추측할 수 없는) 키를 사용하여 유휴 상태의 데이터 공격을 더 어렵게 만드는 일부 스크램블링 방식과 달리 ROM 스크램블링의 키는 각 회로에 대해 고정되어 있다. 그럼에도 불구하고 이러한 고정 키는 위에서 설명한 대로 확산 및 주소 연결 속성을 제공한다. 키는 전역(글로벌) 상수에서 파생될 수 있다. 보안 회로 인스턴스화의 최종 설계를 구축할 때 스크램블링 후 ROM의 각 워드가 구별되는 키를 생성하는 상수가 선택되었는지 확인하기 위해 "추가(extra)" 검사를 수행할 수 있다.
ROM 보안을 위한 일반적으로 기술된 방식, 기술 및 하드웨어를 가지고 설명은 예시적인 방법으로 전환된다.
ROM 보안을 위한 예시 방법
예시적인 방법은 도 9 내지 도 13의 흐름도를 참조하여 아래에 설명된다. 도 9는 흐름도(900)와 함께 스타트업 또는 리셋과 같은 ROM의 무결성을 검사하기 위한 장치의 예시적인 방법을 도시한다. 흐름도(900)는 9개의 블록(902-918)을 포함한다. 또한 도 6을 참조하면, ROM 무결성 검사기 회로(502)는 리셋 후 "즉시" 또는 적어도 ROM에 대한 판독이 수행되기 전을 포함하여 리셋 후 실행될 수 있다. ROM 검사가 완료될 때까지 ROM 검사기는 ROM 주소 요청을 제어할 수 있다(예: 다중화기(602)를 통해). 멀티플렉서(602)에 대한 선택 신호(632)는 결함 주입(FI) 공격에 대해 선택 신호(632)를 보호하기 위해 중복 인코딩을 포함할 수 있다. 선택 신호(632)가 유효하지 않은 값을 갖는 경우, 무효성의 검출은 치명적인 경고를 트리거할 수 있다. ROM 어레이(404)로부터 데이터 판독을 시작하기 전에, ROM 검사기(또는 전원 관리자 모듈)는 ROM 검사를 위해 하나 이상의 해싱 작업 수행을 준비하기 위해 암호화 작업을 시작할 수 있다.
902에서, ROM 검사기는 "주소 0"부터 시작하여 스크램블되지 않은 주소 순서로 ROM 콘텐츠를 판독할 수 있으며, 이는 주소 스크램블링으로 인해 물리적 ROM에 액세스 패턴이 흩어져 있게 된다(scattered). 904에서, 각각의 ROM 판독은 39비트의 데이터를 생성하고, 이는 64비트에 도달하도록 (예를 들어, 제로 패딩 회로(618)에 의해) 제로로 패딩된다(padded). 이 64비트 길이는 도 5의 다이제스트 계산 회로(508)(예를 들어, KMAC 엔진(도 5 또는 6에 명시적으로 도시되지 않음))에 의해 예상되는 인터페이스와 일치한다. 주소가 증가된다(incremented).
ROM 무결성 검사기 회로(502)는 ROM의 많은 워드를 통해(예를 들어, 아래에서 위로) 루프한다. 블록(906)에 대해 아래에 설명된 바와 같이 주소가 미리 결정된 주소에 도달할 때까지 판독하고 및 증가(incrementing)한다. 무결성 검사기 회로(502)의 FSM(Finite State Machine)은 준비/유효 인터페이스를 사용하고 전송되는 마지막 워드에 응답하여 "kmac_rom_last_o" 비트를 설정하여 각 ROM 워드를 KMAC 엔진으로 전달한다.
906에서, 주소 값에 기초하여 결정이 내려진다. 예상되는 해시 값을 위해 일부 워드가 예약되어 있을 수 있다. 예를 들어, (예를 들어, 스크램블되지 않은 주소에 의해) ROM 어레이(404)의 상위 8개(top-8) 워드는 256비트 "예상된 해시 값"으로 해석될 수 있다. ROM 어레이(404)의 나머지 부분과 달리, 예상된 해시에 대한 워드의 데이터는 스크램블되지 않은 상태로 저장될 수 있다. 따라서 예상된 해시 값은 복호화 없이 직접 읽을 수 있다. 908에서, 이들 상위 8개 워드는 ROM 어레이(404)로부터 예상된 다이제스트 값을 위한 버퍼 또는 레지스터로 판독된다. 따라서, 이들 워드는 예상된 해시로서 무결성 검사기 회로(502)에 의해(예를 들어, ECC 비트를 무시함) 획득될 수 있다. 예상된 해시는 KMAC 엔진 또는 다이제스트 계산 회로(508)의 다른 구현으로부터 다시 수신되는 다이제스트와 비교될 수 있다.
910에서, 다이제스트가 KMAC 엔진으로부터 수신되면, 무결성 검사기 회로(502)는 다이제스트를 키 관리자와 같은 키 검사기로 전달할 수 있다. 키 관리자 또는 무결성 검사기 회로(502)는 912에서 계산된 다이제스트를 ROM 어레이(404)의 상위 8개 워드로부터 판독된 예상된 다이제스트와 비교할 수 있다. ROM 제어기(402)의 FSM이 비교를 수행하는 경우 블록(910)의 전달은 생략될 수 있다. 2개의 다이제스트가 일치하지 않으면, 키 관리자 및/또는 무결성 검사기 회로(502)는 914에서 알람을 생성할 수 있다. 알람은 경고 또는 인터럽트로 표시될 수 있다. 예상된 다이제스트와 계산된 다이제스트의 일치(매칭)에 응답하여, 916에서 무결성 검사기 회로(502)는 "check_good_o" 표시를 "온(On)"으로 시그널링할 수 있고 멀티플렉서(602)를 해제할 수 있다. 그렇게 함으로써, 무결성 검사기 회로(502)는 다른 컴포넌트가 인터페이스(604)를 통해 ROM 어레이(404)에 액세스할 수 있도록 멀티플렉서(602)에 대한 액세스를 전환(스위칭)한다. 일치 또는 불일치와 함께 계산 및/또는 비교가 완료되면 "check_done_o" 표시가 주장될 수 있다(예: driven high). 그러면 시스템은 918에서 정상 동작에 들어갈 수 있다.
도 10은 복원성을 갖는 무결성 검사에 따른 예시적인 방법에 대한 흐름도 또는 프로세스(1000)를 도시한다. 일반적으로, 예시적인 암호화 키 기반 구현에 관하여, 흐름도(1000)는 먼저 암호화 키를 선택하는 것을 수반할 수 있다. 둘째, ROM 데이터의 각 라인은 선택된 암호화 키를 사용하여 각각의 암호화된 ROM 데이텀(412)을 생성하도록 암호화된다. 세 번째로, 암호화된 ROM 데이텀(412)의 다중 인스턴스가 어떤 중복이 존재하는지를 결정하기 위해 검사된다. 중복이 없으면 프로세스가 종료될 수 있다. 반면에 적어도 하나의 중복이 감지되면 다른 암호화 키를 선택하는 것부터 시작하여 단계(스텝)를 반복하여 프로세스를 계속할 수 있다.
도 10에 도시된 바와 같이, 흐름도(1000)는 5개의 블록(1002-1010)을 포함한다. 블록(1002)에서, 암호화 키 및/또는 암호화 알고리즘이 ROM의 각 라인에 적용되어 복수의 암호화된 ROM 라인을 생성한다. 블록(1004)에서, 복제된(중복된)(duplicated) 암호화된 ROM 라인의 양이 존재하는지가 결정된다. 수량이 0이면(또는 다른 임계값을 충족하면) 점선 화살표로 표시된 대로 프로세스가 종료될 수 있다. 한편, 복제(duplicates)의 양(수량)이 0이 아닌 경우, 블록(1006)에서 새로운 암호화 키 및/또는 새로운 암호화 알고리즘을 사용하여 ROM의 각 라인에 암호화 적용이 반복된다. 블록(1008)에서, 암호화된 ROM 라인의 복제 인스턴스의 새로운 양이 새로운 키 및/또는 새로운 알고리즘에 기초하여 결정된다. 블록(1010)에 따라, 프로세스는 블록(1006)에서 암호화된 ROM 라인의 0과 같은 일부 임계량이 주어진 키 및 알고리즘 조합의 적용에 의해 복제(중복)(duplicated )될 때까지 계속될 수 있다.
도 11은 스크램블링된 ROM 데이터에 액세스하는 것과 같이 ROM 스크램블링을 구현하는 장치에 대한 예시적인 방법을 흐름도 또는 프로세스(1100)에서 도시한다. 흐름도(1100)는 4개의 블록(1102-1108)을 포함한다. 동작은 ROM 118/206 주변 장치와 같은 ROM 블록에 의해 수행될 수 있다. 블록(1102)에서, ROM은 시스템 버스 또는 그 인터페이스로부터, ROM 주소를 포함하는 ROM 판독 요청과 함께 ROM 판독 요청을 수신할 수 있다. 블록(1104)에서, ROM의 ROM 제어기는 ROM 명령(명령어)에 더하여 ECC 또는 다른 보호 데이터를 포함할 수 있는 스크램블링된 ROM 데이터를 얻기 위해 ROM 주소를 사용하여 ROM 어레이에 액세스할 수 있다. 보다 일반적으로, 스크램블된 ROM 데이터는 암호화된 ROM 데이터로 구현될 수 있다.
블록(1106)에서, ROM 제어기의 암호화 회로는 스크램블 해제된 ROM 데이터를 생성하기 위해 ROM 주소를 사용하여 스크램블된 ROM 데이터를 스크램블 해제할 수 있다. 예를 들어, 암호화 회로는 논리 연산을 수행하는 키스트림 회로(608), 조작 회로(612)(예: 대체 및 순열 네트워크 또는 스크램블된 ROM 데이터의 비트를 확산시키는 기타 회로) 및 데이터 조합 회로(614) 중 하나 이상을 사용할 수 있다. 블록(1108)에서, ROM 제어기는 스크램블링되지 않은 ROM 데이터를 인터페이스 및/또는 시스템 버스를 통해 다른 주변 장치로 전송할 수 있다.
도 12는 암호화된 ROM 데이터를 포함하는 ROM 어레이에 액세스하기 위한 예시적인 프로세스(1200)를 도시하는 흐름도이다. 흐름도는 4개의 블록(1202-1208)을 포함한다. 블록(1202)에서, 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 포함하는 ROM 어레이에 관한 ROM 주소를 포함하는 ROM 판독 요청으로, ROM 판독 요청이 획득된다. 예를 들어, ROM 제어기(402)는 복수의 ROM 주소(418)에 저장된 암호화된 ROM 데이터(410)를 포함하는 ROM 어레이(404)에 관련된 ROM 주소(414)를 포함하는 ROM 판독 요청을 얻을 수 있다. ROM 판독 요청은 예를 들어 인터커넥트(110) 및/또는 인터페이스(604)를 통해 다른 컴포넌트로부터 획득될 수 있다.
블록(1204)에서, 암호화된 ROM 데이터는 ROM 주소를 사용하여 ROM 어레이로부터 판독된다. 예를 들어, ROM 제어기(402)는 ROM 주소(414)를 사용하여 ROM 어레이(404)로부터 암호화된 ROM 데이텀(412)을 읽을 수 있다. 일부 경우에, ROM 제어기(402)는 주소 조정 회로(504)를 포함할 수 있고, 주소 조정 회로(504)는 ROM 주소(512)를 조정하여 조정된 ROM 주소(514)를 생성할 수 있다. 그러한 경우에, ROM 제어기(402)는 조정된 ROM 주소(514)로 실현되는 ROM 주소(414)를 사용하여 ROM 어레이(404)로부터 암호화된 ROM 데이텀(412)을 얻을 수 있다.
블록(1206)에서, 암호화된 ROM 데이텀은 ROM 주소를 사용하여 복호화된 ROM 데이텀을 생성하기 위해 복호화된다. 예를 들어, 암호화 회로(408)는 암호화된 ROM 데이텀(412)을 복호화하여 ROM 주소(414)를 사용하여 복호화된 ROM 데이텀(416)을 생성할 수 있다. 그렇게 하기 위해, 암호화 회로(408)는 복호화된 ROM 데이텀(416)을 생성하기 위해 복호화 알고리즘의 일부로서 사용되는 키를 생성하기 위해 ROM 주소(414)를 사용할 수 있다.
블록(1208)에서, 복호화된 ROM 데이텀은 인터커넥트에 전달된다. 예를 들어, ROM 제어기(402)는 복호화된 ROM 데이텀(416)을 인터커넥트(110)에 전달할 수 있다. 여기서, 복호화된 ROM 데이텀(416)은 검사 코드 비트를 포함할 수 있다. 부가적으로 또는 대안적으로, ROM 검사기 회로(616)는 복호화된 ROM 데이텀(416)을 전달하는 행위의 일부로서 또는 이와 함께 ROM에서 오류 검사 절차를 수행할 수 있다.
도 13은 암호화된 ROM 데이터를 포함하는 ROM 어레이의 무결성을 검사하기 위한 예시적인 프로세스(1300)를 도시하는 흐름도이다. 흐름도는 3개의 블록(1302-1306)을 포함한다. 블록(1302)에서, 암호화된 ROM 데이텀은 암호화된 ROM 데이텀에 대응하는 ROM 주소에 기초하여 ROM 어레이로부터 판독되며, ROM 어레이는 암호화된 ROM 데이터를 복수의 ROM 주소에 저장한다. 예를 들어, ROM 제어기(402)는 암호화된 ROM 데이텀(412)에 대응하는 ROM 주소(512 또는 514)에 기초하여 ROM 어레이(404)로부터 암호화된 ROM 데이텀(412)을 판독할 수 있다. 따라서, ROM 제어기(402)는 조정된 ROM 주소(514)가 검색되고 있는 암호화된 ROM 데이텀(412)을 식별하는데 사용되도록 ROM 주소(512)로부터 조정된 ROM 주소(514)를 생성하는 주소 조정 회로(504)를 포함할 수 있다. 여기서, ROM 어레이(404)는 암호화된 ROM 데이터(410)를 복수의 ROM 주소(418)에 저장할 수 있다. ROM 어레이(404)는 또한 예상된 다이제스트 값(510)을 저장할 수 있다.
블록(1304)에서, 암호화된 ROM 데이텀을 사용하여 적어도 하나의 다이제스트 값이 얻어진다. 예를 들어, ROM 제어기(402)는 암호화된 ROM 데이텀(412)을 사용하여 적어도 하나의 다이제스트 값(516)을 얻을 수 있다. 일부 경우에, ROM 제어기(402)의 무결성 검사기 회로(502)는 적어도 하나의 다이제스트 값(516)을 획득하기 위해 ROM(118) 외부에 있는 다이제스트 계산 회로(508)와 통신할 수 있다. 다른 경우에, 무결성 검사기 회로(502) 또는 ROM(118)의 다른 부분은 다이제스트 값(516)에 대한 해시를 계산하는 회로를 포함할 수 있다. 다이제스트 값(516)은 주어진 ROM 어레이(404)에서 암호화된 ROM 데이텀(412)의 모든 인스턴스를 포함하는 암호화된 ROM 데이텀(412)의 다중 인스턴스에 대한 해시에 대응할 수 있다. 그러한 경우에, 블록(1302)에 대해, 복수의 암호화된 ROM 데이텀(412)에 대응하는 복수의 ROM 주소에 기초하여 ROM 어레이(404)로부터 복수의 암호화된 ROM 데이텀(412)이 판독된다. 또한, 블록(1304)에 대해, 해싱 알고리즘은 ROM 어레이(404)로부터 판독될 때 암호화된 ROM 데이텀(412)의 다수에 적용된다.
블록(1306)에서, ROM 어레이에 대한 액세스는 적어도 하나의 다이제스트 값 및 예상된 다이제스트 값에 기초하여 게이팅된다. 예를 들어, ROM 제어기(402)는 적어도 하나의 다이제스트 값(516) 및 예상된 다이제스트 값(510)에 기초하여 ROM 어레이(404)에 대한 액세스를 게이팅할 수 있다. 그렇게 하기 위해, 무결성 검사기 회로(502)는 다이제스트 값(516)을 예상된 다이제스트 값(510)과 비교할 수 있다. 일치하지 않는 경우, 게이트 회로(506)는 ROM 어레이(404)에 대한 액세스를 차단하거나 거부할 수 있다. 한편, 2개의 값(510 및 516)이 일치하는 경우, 게이트 회로(506)는 예를 들어 초기화가 진행되도록 하거나 "정상적인" ROM 액세스가 발생하도록 ROM 어레이(404)에 대한 액세스를 다른 컴포넌트에 허용할 수 있다.
이들 방법의 양태는 예를 들어 하드웨어(예를 들어, 메모리와 결합된 고정 논리 회로 또는 프로세서), 펌웨어, 소프트웨어 또는 이들의 일부 조합으로 구현될 수 있다. 방법은 도 1 내지 8 및 도 14에 도시된 하나 이상의 장치 또는 컴포넌트를 사용하여 실현될 수 있으며, 컴포넌트는 더 분할, 결합 등이 될 수 있다. 이 도면의 장치 및 컴포넌트는 일반적으로 전자 장치, PCB, 패키지 모듈, IC 칩, 컴포넌트 또는 회로; 펌웨어; 소프트웨어; 또는 이들의 조합과 같은 하드웨어를 나타낸다. 따라서, 이들 도면은 기술된 방법을 구현할 수 있는 많은 가능한 시스템 또는 장치 중 일부를 예시한다.
여기에 설명된 방법 및 관련 흐름도(들)의 경우, 동작이 표시 및/또는 설명된 순서는 제한으로 해석되지 않는다. 대신에 설명된 방법 동작의 임의의 수 또는 조합을 임의의 순서로 결합하여 주어진 방법 또는 대체 방법을 구현할 수 있다. 동작은 설명된 방법에서 생략되거나 추가될 수 있다. 또한, 기술된 동작들은 완전히 또는 부분적으로 중첩되는 방식으로 구현될 수 있다.
ROM 보안을 위한 예시적 양태 및 구현
다음에서는 몇 가지 예시적 양태 및 구현에 대해 설명한다.
예시적인 양태 1: 보안 판독(읽기) 전용 메모리(ROM)를 위한 장치로서, 상기 장치는: 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 포함하는 ROM 어레이; 그리고 ROM 어레이에 연결된 ROM 제어기를 포함하며, ROM 제어기는, 복수의 ROM 주소에 기초하여 암호화된 ROM 데이터에 대한 복호화 동작을 수행하도록 구성된 암호화 회로; 및 암호화 회로 및 ROM 어레이에 결합된 ROM 액세스 인터페이스를 포함하며, ROM 액세스 인터페이스는 암호화된 ROM 데이텀에 대응하는 ROM 주소에 기초하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하고; 암호화 회로를 사용하여 복호화된 ROM 데이텀을 생성하기 위해 암호화된 ROM 데이텀을 복호화하고; 복호화된 ROM 데이텀을 인터커넥트로 전달하도록 구성된다.
예시적 양태 2: 예시적 양태 1의 장치에서, 상기 ROM 액세스 인터페이스는 상기 암호화된 ROM 데이텀에 대응하는 ROM 주소를 사용하여 상기 복호화된 ROM 데이텀을 생성하기 위해 상기 암호화된 ROM 데이텀을 복호화하도록 구성된다.
예시적 양태 3: 예시적 양태 1 또는 예시적 양태 2의 장치에서, 상기 암호화 회로는 상기 복수의 ROM 주소의 각각의 ROM 주소에 기초하여 상기 암호화된 ROM 데이터의 각각의 ROM 데이텀에 대해 복호화 동작을 수행하도록 구성되고, 상기 각각의 ROM 주소는 ROM 어레이에서 각각의 ROM 데이텀을 식별하도록 구성된다.
예시적 양태 4: 선행하는 예시적인 양태들 중 어느 하나의 장치로서, ROM 액세스 인터페이스는 부트업 절차를 위한 복호화된 ROM 데이터로서 암호화된 ROM 데이터에 대한 액세스를 제공하도록 구성되는 FSM(Finite State Machine)을 포함한다. FSM은 언제든지 복수의 미리 정의된 상태 중 대응하는 상태를 취하는 시스템이며 시스템은 FSM에 대한 입력에 따라 한 상태에서 다른 상태로 전환된다.
예시적 양태 5: 선행하는 예시적 양태 중 어느 하나의 장치로서, 상기 ROM 제어기는 조정된 ROM 주소를 생성하기 위해 ROM 주소를 조정하도록 구성된 주소 조정 회로를 포함하고; ROM 액세스 인터페이스는 주소 조정 회로를 사용하여 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 판독하기 위해 ROM 주소를 조정하도록 구성된다.
예시적 양태 6: 예시적 양태 5의 장치에서, 주소 조정 회로는 조정된 ROM 주소를 생성하기 위해 ROM 주소의 각각의 ROM 주소의 2개 이상의 비트를 치환하거나 대체하는 것 중 적어도 하나를 수행하도록 구성된다.
예시적 양태 7: 선행하는 예시적 양태 중 어느 하나의 장치에서, 상기 암호화 회로는, ROM 주소에 기초하여 키를 생성하도록 구성된 키스트림 회로; 및 키스트림 회로에 결합된 데이터 조합 회로를 포함하고, 데이터 조합 회로는 암호화된 ROM 데이텀 및 키 중 적어도 하나의 키에 기초하여 복호화된 ROM 데이텀을 생성하도록 구성된다.
예시적 양태 8: 예시적 양태 7의 장치에서, 상기 암호화 회로는 조작된 암호화된 ROM 데이텀을 생성하기 위해 상기 암호화된 ROM 데이텀의 2개 이상의 비트를 확산시키도록 구성된 조작 회로를 포함하고; 데이터 조합 회로는 복호화된 ROM 데이텀을 생성하기 위해 논리 연산을 사용하여 적어도 하나의 키의 비트와 조작된 암호화된 ROM 데이텀의 비트를 조합하도록 구성된다.
예시적 양태 9: 선행하는 예시적 양태 중 어느 하나의 장치에서, 상기 암호화된 ROM 데이텀은 ROM 명령어에 대응하는 비트 및 ROM 명령어에 대한 검사 코드에 대응하는 비트를 포함하고; 복호화된 ROM 데이텀은 ROM 명령어에 해당하는 비트와 ROM 명령어에 대한 검사 코드에 해당하는 비트를 포함한다.
예시적 양태 10: 예시적 양태 9의 장치에서, 상기 ROM 제어기는 상기 암호화 회로의 출력에 결합된 ROM 검사기 회로를 포함하고, 상기 ROM 검사기 회로는
복호화된 ROM 데이텀의 ROM 명령어에 기초하여 다른 검사 코드를 계산하고; 복호화된 ROM 데이텀의 검사 코드와 계산된 검사 코드를 포함하는 비교를 수행하고; 비교를 기반으로 오류 신호를 생성한다(예: 검사 코드와 계산된 검사 코드가 일치하지 않는 경우).
예시적 양태 11: 예시적 양태 9의 장치에서, 상기 ROM 어레이의 복수의 ROM 주소에 저장된 암호화된 ROM 데이터의 각각의 암호화된 ROM 데이텀은 복수의 ROM 주소를 기반으로 하는 암호화 방식(encryption scheme)으로 인해 ROM 어레이의 복수의 ROM 주소에 저장된 암호화된 ROM 데이터의 암호화된 ROM 데이텀과 서로 구별(distinct)된다.
예시적 양태 12: 예시적 양태 1의 장치에서, 상기 장치는 모바일 디바이스를 포함한다.
예시적 양태 13: 보안 읽기 전용 메모리(ROM)를 위한 방법으로서, 방법은, 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 포함하는 ROM 어레이에 관한 ROM 주소를 포함하는 ROM 판독 요청을 획득하는 단계; ROM 주소를 사용하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하는 단계; ROM 주소를 사용하여 복호화된 ROM 데이텀을 생성하기 위해 암호화된 ROM 데이텀을 복호화하는 단계; 복호화된 ROM 데이텀을 인터커넥트에 전달하는 단계를 포함한다.
예시적 양태 14: 예시적 양태 13의 방법으로서, 복호화하는 단계는: ROM 주소에 기초하여 적어도 하나의 키를 생성하는 단계; 및 복호화된 ROM 데이텀을 생성하기 위해 적어도 하나의 키를 암호화된 ROM 데이텀에 적용하는 단계를 포함한다.
예시적 양태 15: 예시적 양태 14의 방법에서, 상기 적용하는 단계는 상기 복호화된 ROM 데이텀을 생성하기 위해 상기 적어도 하나의 키 및 상기 암호화된 ROM 데이텀을 포함하는 논리 연산을 수행하는 단계를 포함한다.
예시적 양태 16: 예시적 양태 15의 방법에서, 상기 복호화하는 단계는, 조작된 ROM 데이텀을 생성하기 위해 상기 논리 연산을 수행하기 전에 상기 암호화된 ROM 데이텀의 비트를 조작하는 단계를 포함하고, 여기서 수행하는 것은 복호화된 ROM 데이텀을 생성하기 위해 적어도 하나의 키 및 조작된 ROM 데이텀을 사용하여 논리 연산을 수행하는 것을 포함한다.
예시적 양태 17: 보안 판독(읽기) 전용 메모리(ROM)를 위한 보안 회로를 포함하는 집적 회로로서, 상기 보안 회로는, 복수의 ROM 주소에 ROM 데이터를 포함하는 ROM 어레이; 및 ROM 어레이에 결합된 ROM 제어기를 포함하고, ROM 제어기는 복수의 ROM 주소의 각각의 ROM 주소를 ROM 데이터의 각각의 ROM 데이텀에 암호화 방식으로 연결하도록 구성된다.
예시적 양태 18: 예시적 양태 17의 집적 회로에서, 상기 ROM 제어기는 각각의 ROM 주소를 사용하여 상기 각각의 ROM 데이텀을 복호화하도록 구성된 암호화 회로를 포함한다.
예시적 양태 19: 예시적 양태 18의 집적 회로에서, 상기 암호화 회로는, 각각의 ROM 주소에 기초하여 적어도 하나의 키를 생성하고; 복호화된 ROM 데이텀을 생성하기 위해 적어도 하나의 키를 사용하여 각각의 ROM 데이텀을 복호화한다.
예시적 양태 20: 예시적 양태 19의 집적 회로에서, 상기 암호화 회로는 적어도 하나의 키를 각각의 ROM 데이텀의 버전에 적용함으로써 적어도 하나의 키를 사용하여 복호화된 ROM 데이텀을 생성하고, 상기 버전은 ROM 어레이에 저장된 각 ROM 데이텀의 조작된 버전에 해당한다.
예시적 양태 21: 예시적 양태 17 내지 20 중 어느 하나의 집적 회로에서, 상기 ROM 제어기는 각각의 ROM 주소에 대응하는 각각의 ROM 데이텀을 공동으로 형성하는 ROM 비트 및 에러 정정 코드(ECC) 비트의 조합에 대해 동작하도록 구성된다.
예시적 양태 22: 예시적 양태 17 내지 21 중 어느 하나의 집적 회로에서, 상기 ROM 제어기는 상기 ROM 어레이에 결합된 무결성 검사기 회로를 포함하고, 무결성 검사기 회로는 ROM 데이터 및 예상된 다이제스트에 적용되는 검사 절차를 기반으로 ROM 어레이에 대한 액세스를 제어하도록 구성된다(예를 들어: 검사 절차를 통해 일치하는 항목이 발견된 경우에만 ROM 어레이에 대한 액세스 권한을 부여한다 (즉, ROM 어레이에서 데이터를 읽으라는 서비스 요청)).
예시적 양태 23: 예시적 양태 22의 집적 회로에서, 무결성 검사기 회로는 ROM 어레이로부터 예상된 다이제스트를 추출하고; 추출된 예상된 다이제스트와 상기 ROM 어레이의 ROM 데이터에 기초하여 계산된 다이제스트를 포함하는 비교를 수행하고; 및 비교에 기초하여 ROM 어레이에 대한 액세스를 허가(승인) 또는 거부함으로써(예: 추출된 예상된 다이제스트와 ROM 어레이의 ROM 데이터를 기반으로 계산된 다이제스트 간에 일치하는 경우 승인하고 그렇지 않은 경우 거부) 검사 절차를 구현하도록 구성된다.
예시적인 양태 24: 보안 판독 전용 메모리(ROM)를 위한 장치로서, 상기 장치는, 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 포함하는 ROM 어레이; 및 상기 ROM 어레이에 결합된 ROM 제어기를 포함하며, ROM 제어기는 암호화된 ROM 데이텀에 대응하는 ROM 주소에 기초하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하고; 암호화된 ROM 데이텀을 사용하여 적어도 하나의 다이제스트 값을 획득하고; 및 적어도 하나의 다이제스트 값 및 예상된 다이제스트 값에 기초하여 ROM 어레이에 대한 액세스를 게이팅(예를 들어, 적어도 하나의 다이제스트 값과 예상된 다이제스트 값 사이에 일치가 얻어지는 경우에만 ROM 어레이에 대한 액세스를 허용하지만 그렇지 않으면 차단하거나 거부한다)하도록 구성된다.
예시적 양태 25: 예시적 양태 24의 장치에서, ROM 제어기는 조정된 ROM 주소를 생성하기 위해 ROM 주소를 조정하도록 구성된 주소 조정 회로를 포함하고; ROM 제어기는 ROM 주소를 조정하여 조정된 ROM 주소를 얻고, 조정된 ROM 주소를 사용하여, 주소 조정 회로를 사용하여 복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 판독하도록 구성된다.
예시적 양태 26: 예시적 양태 24 또는 예시적 양태 25의 장치에서, ROM 제어기는 적어도 하나의 해싱 알고리즘이 암호화된 ROM 데이텀에 적용되도록 하는 것에 기초하여 적어도 하나의 다이제스트 값을 획득하도록 구성된다.
예시적 양태 27: 예시적 양태 26의 장치에서, ROM 어레이 및 ROM 제어기는 제1 주변 장치를 포함하고; 제2 주변 장치는 하나 이상의 해싱 알고리즘을 구현하도록 구성되고; 그리고 ROM 제어기는 제2 주변 장치와 통신함으로써 적어도 하나의 다이제스트 값을 획득하도록 구성된다.
예시적 양태 28: 예시적 양태 24 내지 27 중 어느 하나의 장치에서, ROM 제어기는 ROM 어레이로부터 예상된 다이제스트 값을 판독하도록 구성된다.
예시적 양태 29: 예시적 양태 28의 장치에서, 예상된 다이제스트 값은 암호화되지 않은 형태로 ROM 어레이에 저장된다.
예시적 양태 30: 예시적 양태 28의 장치에서, 예상된 다이제스트 값은 결정 가능한 ROM 주소에 대응하는 미리 결정된 위치의 ROM 어레이에 저장된다.
예시적 양태 31: 예시적 양태 24 내지 30 중 어느 하나의 장치에서, 예상된 다이제스트 값과 일치하는 적어도 하나의 다이제스트 값에 응답하여, ROM 제어기는 부팅 절차가 암호화된 ROM 데이터를 사용하여 수행될 수 있도록 ROM 어레이에 대한 액세스를 승인하도록 구성된다.
예시적 양태 32: 예시적 양태 24 내지 31 중 어느 하나의 장치에서, 적어도 하나의 다이제스트 값이 예상된 다이제스트 값과 일치하지 않는 것에 응답하여, ROM 제어기는 부팅 절차가 암호화된 ROM 데이터를 사용하여 수행되는 것을 방지하기 위해 ROM 어레이에 대한 액세스를 차단하고, 그리고 알람 표시를 전송하도록 구성된다.
예시적 양태 33: 예시적 양태 24 내지 32 중 어느 하나의 장치에서, 암호화된 ROM 데이터의 각각의 암호화된 ROM 데이텀은 ROM 어레이 전체에 걸쳐 암호화된 ROM 데이터의 각각의 암호화된 ROM 데이텀과 서로 다르다.
예시적 양태 34: 예시적 양태 33의 장치에서, 암호화된 ROM 데이터의 생성과 관련된 암호 키는 각각의 암호화된 ROM 데이텀이 ROM 어레이 전체에서 암호화된 ROM 데이터에 대한 각각의 암호화된 ROM 데이텀과 서로 다른 것을 보장하도록 선택된다. 예를 들어, 동일한 ROM 데이터의 수를 줄이기 위해(예를 들어, 0이 되거나 적어도 임계값 미만이 되도록) 수행되는 반복 프로세스에서 하나 이상의 암호화 키가 사용될 수 있다.
예시적 양태 35: 예시적 양태 33의 장치에서, 암호화된 ROM 데이터의 생성과 관련된 암호화 알고리즘은 각각의 암호화된 ROM 데이텀이 ROM 어레이 전체에서 암호화된 ROM 데이터에 대한 각각의 암호화된 ROM 데이텀과 서로 다른 것을 보장하도록 선택된다. 예를 들어, 동일한 ROM 데이터의 수를 줄이기 위해(예를 들어, 0이 되거나 적어도 임계값 미만이 되도록) 수행되는 반복 프로세스에서 하나 이상의 암호화 알고리즘이 사용될 수 있다.
예시적 양태 36: 보안 읽기(판독) 전용 메모리(ROM)를 위한 방법으로서, 방법은, 암호화된 ROM 데이텀에 대응하는 ROM 주소에 기초하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하는 단계 - ROM 어레이는 암호화된 ROM 데이터를 복수의 ROM 주소에 저장함 -; 암호화된 ROM 데이텀을 사용하여 적어도 하나의 다이제스트 값을 획득하는 단계; 및 적어도 하나의 다이제스트 값 및 예상된 다이제스트 값에 기초하여 ROM 어레이에 대한 액세스를 게이팅하는 단계를 포함한다.
예시적 양태 37: 예시적 양태 36의 방법으로서, 판독하는 단계는 ROM 주소를 조정하여 조정된 ROM 주소를 생성하는 단계; 및 조정된 ROM 주소를 사용하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하는 단계를 포함한다.
예시적 양태 38: 예시적 양태 36 또는 예시적 양태 37의 방법에서, 상기 게이팅하는 단계는 예상된 다이제스트 값과 일치하지 않는 적어도 하나의 다이제스트 값에 응답하여 ROM 어레이에 대한 액세스를 차단하는 단계를 포함한다.
예시적 양태 39: 판독 전용 메모리(ROM)를 갖는 보안 회로를 포함하는 집적 회로로서, 보안 회로는 복수의 암호화된 ROM 라인을 포함하는 ROM 어레이 -복수의 암호화된 ROM 라인의 각각의 암호화된 ROM 라인은 복수의 암호화된 ROM 라인의 암호화된 ROM 라인과 서로 구별됨-; 그리고 ROM 어레이에 결합되고 그리고 복수의 암호화된 ROM 라인에 기초하여 생성되는 적어도 하나의 다이제스트 값에 응답하여 ROM 어레이에 대한 액세스를 제어하도록 구성된 ROM 제어기를 포함한다.
예시적 양태 40: 예시적 양태 39의 집적 회로는, 복수의 암호화된 ROM 라인에 기초하여 적어도 하나의 다이제스트 값을 계산하도록 구성된 다이제스트 계산 회로를 더 포함한다.
예시적 양태 41: 예시적 양태 40의 집적 회로에서, 다이제스트 계산 회로는 ROM 어레이 및 ROM 제어기를 포함하는 ROM 블록의 일부이다.
예시적 양태 42: 예시적 양태 39 내지 41 중 어느 하나의 집적 회로에서, 복수의 암호화된 ROM 라인이 중복되지 않는 것을 보장하기 위해 암호화 키가 선택된다. 예를 들어, 적어도 하나의 암호화 키(사전 정의되거나 어떤 방식으로든 획득됨)는 중복 암호화된 ROM 라인의 수를 줄이기 위해(예: 0 또는 최소한 임계값 미만) 수행되는 반복 프로세스에서 사용될 수 있다.
예시적 양태 43: 예시적 양태 39 내지 42 중 어느 하나의 집적 회로에서, 복수의 암호화된 ROM 라인이 중복되지 않는 것을 보장하기 위해 암호화 알고리즘이 선택된다. 예를 들어, 중복 암호화된 ROM 라인의 수를 줄이기 위해(예: 0 또는 최소한 임계값 미만) 수행되는 반복 프로세스에서 적어도 하나의 암호화 알고리즘(사전 정의되거나 어떤 방식으로든 획득됨)이 사용될 수 있다.
예시적 양태 44: 읽기 전용 메모리(ROM)의 복원성(resiliency)을 이용한 무결성 검사 방법으로서, 상기 방법은 제1 세트의 복수의 암호화된 ROM 라인를 생성하기 위해 ROM에 대한 복수의 라인에 암호화 알고리즘 및 암호화 키를 적용하는 단계; 중복(duplicative)되는 복수의 암호화된 ROM 라인의 암호화된 ROM 라인의 수량(qduantity)을 결정하는 단계; 및 수량에 기초하여, 암호화 알고리즘 또는 암호화 키 중 적어도 하나를 변경하는 단계, 그리고 제2 세트의 복수의 암호화된 ROM 라인을 생성하도록 적어도 하나의 변경된 암호화 알고리즘 또는 암호화 키를 ROM에 대한 복수의 라인에 적용하는 단계를 포함한다.
예시적 양태 45: 예시적 양태 44의 방법은, 상기 변경하는 단계, 적어도 하나의 변경된 암호화 알고리즘 또는 암호화 키를 적용하는 단계, 및 수량이 0이 될 때까지 결정하는 단계를 반복하는 단계를 더 포함한다.
예시적 양태 46: 예시적 양태 24 내지 35 중 어느 하나의 장치에서, ROM 제어기는 적어도 하나의 다이제스트 값을 ROM 외부에 있는 컴포넌트에 제공하도록 구성된다.
ROM 보안을 위한 예시적인 전자 장치
도 14는 하나 이상의 설명된 양태에 따라 ROM 보안을 구현할 수 있는 예시적인 전자 장치(1400)의 다양한 컴포넌트를 도시한다. 전자 장치(1400)는 고정형, 이동형, 독립형 또는 내장형 장치 중 어느 하나 또는 조합으로 구현될 수 있으며, 장치(102)로서 도 1에 도시된 스마트폰과 같은 임의의 형태의 컨슈머, 컴퓨터, 휴대형, 사용자, 서버, 통신, 전화, 내비게이션, 게임, 오디오, 카메라, 메시징, 미디어 재생, 및/또는 다른 유형의 전자 장치(1400) 중 어느 하나 또는 조합으로 구현될 수 있다. 도시된 컴포넌트들 중 하나 이상은 개별 컴포넌트로 구현되거나 전자 장치(1400)의 적어도 하나의 집적 회로 상에 집적 컴포넌트로 구현될 수 있다.
전자 장치(1400)는 수신된 데이터, 전송된 데이터 또는 위에서 식별된 다른 정보와 같은 장치(디바이스) 데이터(1404)의 유선 및/또는 무선 통신을 가능하게 하는 하나 이상의 통신 송수신기(1402)를 포함할 수 있다. 예시적인 통신 송수신기(1402)는 근거리 통신(NFC) 송수신기(트랜시버), 다양한 IEEE 802.15(BluetoothTM) 표준을 준수하는 무선 개인 영역 네트워크(PAN)(WPAN) 라디오(radios), 다양한 IEEE 802.11(Wi FiTM) 표준을 준수하는 무선 근거리 통신망(WLAN) 라디오, 셀룰러 전화 통신을 위한 무선 WAN(Wide Area Network)(WWAN) 라디오(예를 들어, 3GPP 호환), 다양한 IEEE 802.16(WiMAXTM) 표준을 준수하는 무선 MAN(Metropolitan Area Network)(WMAN) 라디오, IrDA(Infrared Data Association) 프로토콜을 준수하는 적외선(IR) 송수신기 및 유선 근거리 통신망(LAN)(WLAN) 이더넷 송수신기를 포함한다.
전자 장치(1400)는 사용자가 선택할 수 있는 입력, 메시지, 애플리케이션, 음악, TV 콘텐츠, 녹화된 비디오 콘텐츠, 그리고 마이크나 카메라와 같은 센서를 포함하는 콘텐츠 및/또는 데이터 소스로부터 수신된 기타 유형의 오디오, 비디오 및/또는 이미지 데이터와 같은, 임의의 유형의 데이터, 미디어 콘텐츠, 및/또는 다른 입력이 수신될 수 있는 하나 이상의 데이터 입력 포트(1406)를 포함할 수 있다. 데이터 입력 포트(1406)는 USB 포트, 동축 케이블 포트, 광섬유 인터커넥트 또는 케이블링을 위한 광섬유 포트, 그리고 플래시 메모리, DVD, CD 등을 위한 기타 직렬 또는 병렬 커넥터(내부 커넥터 포함)를 포함할 수 있다. 이러한 데이터 입력 포트(1406)는 전자 장치를 컴포넌트, 주변 장치 또는 키보드, 마이크, 카메라 또는 기타 센서와 같은 액세서리에 연결하는 데 사용될 수 있다.
이 예의 전자 장치(1400)는 장치의 동작을 제어하기 위해 컴퓨터 실행 가능 명령어를 프로세싱(예를 들어 실행)하는 결합된 프로세서와 메모리 시스템(예: SoC의 일부로 구현됨)을 포함할 수 있는 적어도 하나의 프로세서(1408)(예: 애플리케이션 프로세서, 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기 등 중 하나 이상)를 포함한다. 프로세서(1408)는 애플리케이션 프로세서, 임베디드 제어기, 마이크로 제어기, 보안 프로세서, 인공 지능(AI) 가속기 등으로 구현될 수 있다. 일반적으로 프로세서 또는 프로세싱 시스템은 적어도 부분적으로 하드웨어로 구현될 수 있으며; 집적 회로 또는 온 칩 시스템, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 현장 프로그래밍 가능 게이트 어레이(FPGA), 복합 프로그래밍 가능 논리 장치(CPLD), 실리콘 및/또는 기타 재료의 다른 구현의 컴포넌트가 포함될 수 있다.
대안적으로 또는 추가적으로, 전자 장치(1400)는 소프트웨어, 하드웨어, 펌웨어, 또는 일반적으로 1410으로 표시된 처리(프로세싱) 및 제어 회로와 관련하여 구현되는 고정 논리 회로를 포함할 수 있는 전자 회로 중 어느 하나 또는 조합으로 (전자회로(1410)로서) 구현될 수 있다. 이 전자 회로(1410)는 예를 들어 컴퓨터 판독 가능 매체에 저장된 프로세싱/컴퓨터 실행 가능 명령어, 논리 회로 및/또는 하드웨어(예: FPGA) 등을 통해 실행 가능하거나 하드웨어 기반 모듈(도 14에는 도시되지 않음)을 구현할 수 있다.
도시되지는 않았지만, 전자 장치(1400)는 시스템 버스, 인터커넥트, 크로스바, 데이터 전송 시스템, 또는 장치 내의 다양한 컴포넌트를 연결하는 다른 스위치 패브릭을 포함할 수 있다. 시스템 버스 또는 인터커넥트에는 메모리 버스나 메모리 제어기, 주변 장치 버스, 범용 직렬 버스, 및/또는 다양한 버스 아키텍처를 활용하는 프로세서나 로컬 버스 등과 같이, 다양한 버스 구조 중 하나 또는 이들의 조합이 포함될 수 있다.
전자 장치(1400)는 또한 데이터 저장을 가능하게 하는 하나 이상의 메모리 장치(1412)를 포함하며, 그 예로는 RAM(Random Access Memory), 비휘발성 메모리(예: 읽기 전용 메모리(ROM), 플래시 메모리, EPROM 및 EEPROM) 및 디스크 저장 장치가 포함된다. 따라서, 메모리 장치(들)(1412)는 시스템의 서로 다른 논리적 저장 레벨뿐만 아니라 서로 다른 물리적 컴포넌트에도 분산될 수 있다. 메모리 장치(들)(1412)는 장치 데이터(1404), 다른 유형의 코드 및/또는 데이터, 및 다양한 장치 애플리케이션(1420)(예를 들어, 소프트웨어 애플리케이션 또는 프로그램)을 저장하기 위한 데이터 저장 메커니즘을 제공한다. 예를 들어, 운영 체제(1414)는 메모리 장치(1412) 내에서 소프트웨어 명령으로 유지되고 프로세서(1408)에 의해 실행될 수 있다.
일부 구현에서, 전자 장치(1400)는 또한 오디오 데이터를 처리하고/하거나 오디오 및 비디오 데이터를 오디오 시스템(1418) 및/또는 디스플레이 시스템(1422)(예: 비디오 버퍼 또는 스마트폰이나 카메라의 화면) 으로 전달하는 오디오 및/또는 비디오 처리 시스템(1416)을 포함한다. 오디오 시스템(1418) 및/또는 디스플레이 시스템(1422)은 오디오, 비디오, 디스플레이 및/또는 이미지 데이터를 처리, 디스플레이 및/또는 렌더링하는 임의의 장치를 포함할 수 있다. 디스플레이 데이터 및 오디오 신호는 RF(무선 주파수) 링크, S-비디오 링크, HDMI(고화질 멀티미디어 인터페이스), 복합 비디오 링크, 컴포넌트 비디오 링크, DVI(디지털 비디오 인터페이스), 아날로그 오디오 연결, 비디오 버스 또는 미디어 데이터 포트(1424)와 같은 기타 유사한 통신 링크를 통해 오디오 컴포넌트 및/또는 디스플레이 컴포넌트에 전달될 수 있다. 일부 구현에서, 오디오 시스템(1418) 및/또는 디스플레이 시스템(1422)은 전자 장치(1400)의 외부 또는 별도의 컴포넌트이다. 대안적으로, 디스플레이 시스템(1422)은 예를 들어 통합 터치 인터페이스의 일부와 같은 예시적인 전자 장치(1400)의 통합 컴포넌트일 수 있다.
도 14의 전자 장치(1400)는 도 1의 장치(102)의 예시적인 구현, 도 4의 분석(344)을 구현할 수 있는 장치의 예시적인 구현, 및 도 9 내지 13의 방법 중 임의의 것을 구현할 수 있는 장치의 예시적인 구현이다. 따라서 전자 장치(1400)는 별도의 IC 칩일 수 있거나 프로세서(1408), 전자 회로(1410) 또는 메모리 장치(1412)와 같은 다른 IC 칩 또는 장치의 일부로 포함될 수 있는 보안 회로(106)를 포함할 수 있다. 따라서, 예시된 컴포넌트 중 하나 이상은 SoC와 같은 동일한 IC 칩에 또는 적어도 단일 PCB에 통합될 수 있다.
도시된 바와 같이, 전자 장치(1400)는 추가적으로 또는 대체적으로 호환성 분석 모듈(340)을 포함할 수 있다. 예를 들어, 메모리 장치(1412)는 호환성 분석 모듈(340)을 저장할 수 있고, 프로세서(1408)는 호환성 분석 모듈(340)을 실행할 수 있다. 따라서, 메모리 장치(1412)는 주변 장치 디자인 코드(342), 인터페이스 스펙(332) 등도 저장할 수 있다. 전자 장치(1400)는 또한 또는 대신에 도 10의 반복적인 프로세스를 구현할 수도 있다. 더욱이, ROM(118/206)은 (예를 들어 보안 회로(106)의 일부로서) 도 4 내지 6의 컴포넌트 중 임의의 것을 포함할 수 있다. 또한, ROM(118/206)은 보안 회로(106)의 일부로서 또는 보안 회로와 별도로 위에서 설명된 전자 장치(1400)의 임의의 컴포넌트에 구현될 수 있다. 따라서 본 명세서에 설명된 ROM 보안의 원리는 도 14의 전자 장치(1400)에 의해 또는 이와 함께 구현될 수 있다.
문맥상 달리 명시하지 않는 한, 본 문서에서 사용되는 "또는" 이라는 워드는 "또는" 이라는 워드로 연결된 하나 이상의 항목을 포함하거나 적용하는 것을 허용하는 용어인 "또는"을 사용하는 것으로 간주될 수 있다(예를 들어, "A 또는 B"라는 문구는 "A"만 허용하거나 "B"만 허용하거나 "A"와 "B"를 모두 허용하는 것으로 해석될 수 있다.). 또한, 본 명세서에서 사용된 바와 같이, 항목 목록 "중 적어도 하나"를 지칭하는 문구는 단일 멤버를 포함하여 해당 항목들의 임의의 조합을 의미한다. 예를 들어, "a, b, c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c 및 a-b-c뿐만 아니라 동일한 요소의 배수와의 모든 조합을 포함할 수 있다(예: a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c 및 c-c-c 또는 a, b 및 c의 다른 순서). 또한, 첨부된 도면에 표시된 항목 및 본 명세서에 설명된 용어는 하나 이상의 항목 또는 용어를 나타낼 수 있으며, 따라서 본 설명에서 항목 및 용어의 단일 또는 복수 형태가 상호교환적으로 참조될 수 있다. ROM 보안에 대한 구현이 특정 기능 및/또는 방법에 특정한 언어로 설명되었지만, 첨부된 청구범위의 요지는 설명된 특정 기능 또는 방법으로 반드시 제한되는 것은 아니다. 오히려, ROM 보안을 위한 예시적인 구현으로서 구체적인 특징과 방법이 공개된다.

Claims (15)

  1. 보안 읽기 전용 메모리(ROM)를 위한 장치로서,
    복수의 ROM 주소에 저장된 암호화된 ROM 데이터를 포함하는 ROM 어레이; 그리고
    상기 ROM 어레이에 연결된 ROM 제어기를 포함하며,
    상기 ROM 제어기는,
    암호화된 ROM 데이텀(datum)에 대응하는 ROM 주소에 기초하여 상기 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하고;
    상기 암호화된 ROM 데이텀을 사용하여 적어도 하나의 다이제스트 값을 획득하고; 그리고
    상기 적어도 하나의 다이제스트 값 및 예상된 다이제스트 값에 기초하여 상기 ROM 어레이에 대한 액세스를 게이팅하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  2. 제1항에 있어서, 상기 ROM 제어기는 ROM 주소를 조정하여 조정된 ROM 주소를 생성하도록 구성된 주소 조정 회로를 포함하고; 그리고
    상기 ROM 제어기는 상기 주소 조정 회로를 사용하여 상기 복수의 ROM 주소에 저장된 상기 암호화된 ROM 데이터를 판독하기 위해 상기 ROM 주소를 조정하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  3. 제1항 또는 제2항에 있어서, 상기 ROM 제어기는 적어도 하나의 해싱 알고리즘이 상기 암호화된 ROM 데이텀에 적용되게 하는 것에 기초하여 적어도 하나의 다이제스트 값을 획득하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  4. 제3항에 있어서, 상기 ROM 어레이 및 상기 ROM 제어기는 제1 주변 장치를 포함하고;
    제2 주변 장치는 하나 이상의 해싱 알고리즘을 구현하도록 구성되며; 그리고
    상기 ROM 제어기는 상기 제2 주변 장치와 통신함으로써 상기 적어도 하나의 다이제스트 값을 획득하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  5. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 ROM 제어기는 상기 ROM 어레이에서 상기 예상된 다이제스트 값을 판독하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  6. 제5항에 있어서, 상기 예상된 다이제스트 값은 암호화되지 않은 형태로 상기 ROM 어레이에 저장된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  7. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 ROM 제어기는 상기 ROM의 외부에 있는 컴포넌트에 상기 적어도 하나의 다이제스트 값을 제공하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  8. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 예상된 다이제스트 값과 일치하는 적어도 하나의 다이제스트 값에 응답하여, 상기 ROM 제어기는 상기 암호화된 ROM 데이터를 사용하여 부팅 절차가 수행되도록 상기 ROM 어레이에 대한 액세스를 허용하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  9. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 예상된 다이제스트 값과 일치하지 않는 적어도 하나의 다이제스트 값에 응답하여, 상기 ROM 제어기는,
    알람 표시를 전송하고, 및/또는
    상기 암호화된 ROM 데이터를 사용하여 부팅 절차가 수행되지 않도록 상기 ROM 어레이에 대한 액세스를 차단하도록 구성된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  10. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 암호화된 ROM 데이터의 각각의 암호화된 ROM 데이텀은 상기 ROM 어레이 전체에 걸쳐 상기 암호화된 ROM 데이터의 각각의 암호화된 ROM 데이텀과 서로 다른 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  11. 제10항에 있어서, 상기 암호화된 ROM 데이터의 생성과 관련된 암호 키는 각각의 암호화된 ROM 데이텀이 상기 ROM 어레이 전체에서 상기 암호화된 ROM 데이터에 대한 각각의 암호화된 ROM 데이텀과 서로 다르도록 선택된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  12. 제10항에 있어서, 상기 암호화된 ROM 데이터의 생성과 관련된 암호화 알고리즘은 각각의 암호화된 ROM 데이텀이 상기 ROM 어레이 전체에서 상기 암호화된 ROM 데이터에 대한 각각의 암호화된 ROM 데이텀과 서로 다르도록 선택된 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 장치.
  13. 보안 읽기 전용 메모리(ROM)를 위한 방법으로서,
    암호화된 ROM 데이텀에 대응하는 ROM 주소에 기초하여 ROM 어레이로부터 암호화된 ROM 데이텀을 판독하는 단계 -상기 ROM 어레이는 복수의 ROM 주소에 암호화된 ROM 데이터를 저장함-;
    상기 암호화된 ROM 데이텀을 사용하여 적어도 하나의 다이제스트 값을 획득하는 단계; 그리고
    상기 적어도 하나의 다이제스트 값 및 예상된 다이제스트 값에 기초하여 상기 ROM 어레이에 대한 액세스를 게이팅하는 단계를 포함하는 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 방법.
  14. 제13항에 있어서, 상기 판독하는 단계는,
    ROM 주소를 조정하여 조정된 ROM 주소를 생성하는 단계; 그리고
    상기 조정된 ROM 주소를 사용하여 상기 ROM 어레이에서 상기 암호화된 ROM 데이텀을 판독하는 단계를 포함하는 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 방법.
  15. 제13항 또는 제14항에 있어서, 상기 게이팅하는 단계는,
    상기 예상된 다이제스트 값과 일치하지 않는 적어도 하나의 다이제스트 값에 응답하여 상기 ROM 어레이에 대한 액세스를 차단하는 단계를 포함하는 것을 특징으로 하는 보안 읽기 전용 메모리(ROM)를 위한 방법.
KR1020237031202A 2021-04-02 2022-04-01 읽기 전용 메모리(rom) 보안 KR20230145166A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163170431P 2021-04-02 2021-04-02
US63/170,431 2021-04-02
PCT/US2022/071516 WO2022213129A1 (en) 2021-04-02 2022-04-01 Read-only memory (rom) security

Publications (1)

Publication Number Publication Date
KR20230145166A true KR20230145166A (ko) 2023-10-17

Family

ID=81387053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237031202A KR20230145166A (ko) 2021-04-02 2022-04-01 읽기 전용 메모리(rom) 보안

Country Status (6)

Country Link
EP (1) EP4281891A1 (ko)
JP (1) JP2024513716A (ko)
KR (1) KR20230145166A (ko)
CN (1) CN117063178A (ko)
TW (1) TW202240591A (ko)
WO (1) WO2022213129A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US9195831B1 (en) * 2014-05-02 2015-11-24 Google Inc. Verified boot
US11397692B2 (en) * 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains
US11036887B2 (en) * 2018-12-11 2021-06-15 Micron Technology, Inc. Memory data security

Also Published As

Publication number Publication date
TW202240591A (zh) 2022-10-16
WO2022213129A1 (en) 2022-10-06
EP4281891A1 (en) 2023-11-29
JP2024513716A (ja) 2024-03-27
CN117063178A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US9208355B1 (en) Apparatus, system and method for providing cryptographic key information with physically unclonable function circuitry
US20220292226A1 (en) Peripheral Device Comportability with Security Circuitry
US20240184932A1 (en) Read-Only Memory (ROM) Security
KR20230145166A (ko) 읽기 전용 메모리(rom) 보안
US20230177154A1 (en) Sparse Encodings for Control Signals
TWI807766B (zh) 安全之全晶片通信
TWI821971B (zh) 安全加密協同處理器
TWI845059B (zh) 執行安全密碼操作之積體電路及方法
US20220391540A1 (en) Register File Protection
WO2023115022A2 (en) Efficient and secure data handling using domain-oriented masking
WO2023158500A1 (en) Secure pseudo-random number generator (prng) reseeding