KR20200129103A - 집적 회로 데이터 보호 - Google Patents

집적 회로 데이터 보호 Download PDF

Info

Publication number
KR20200129103A
KR20200129103A KR1020207025433A KR20207025433A KR20200129103A KR 20200129103 A KR20200129103 A KR 20200129103A KR 1020207025433 A KR1020207025433 A KR 1020207025433A KR 20207025433 A KR20207025433 A KR 20207025433A KR 20200129103 A KR20200129103 A KR 20200129103A
Authority
KR
South Korea
Prior art keywords
time programmable
programmable memory
bits
software
firmware
Prior art date
Application number
KR1020207025433A
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 KR20200129103A publication Critical patent/KR20200129103A/ko

Links

Images

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/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Remote Sensing (AREA)
  • Power Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

집적 회로에서 데이터 보호를 제공하기 위한 기법들이 제공된다. 이들 기법들에 따른 예시적인 방법은, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 단계, 및 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키는 단계를 포함한다.

Description

집적 회로 데이터 보호
[0001] 컴퓨팅 디바이스들은 통상적으로, 컴퓨팅 디바이스 또는 보안 모듈 제조사에 의해 소유되는 컴퓨팅 디바이스들 상의 펌웨어 또는 운영 체제 소프트웨어를 이용하여, 사용자들 또는 기업들에 의해 소유된 민감한 데이터를 저장한다. 펌웨어 또는 소프트웨어 소유자들은 보안 조치들을 변경하고, 예컨대 브루트 포스(brute force) 공격 완화들을 제거하고, 보안 부트/신뢰 부트를 디스에이블링시키고, 그리고/또는 다른 펌웨어 또는 소프트웨어를 컴퓨팅 디바이스들 상에 로딩하는 소프트웨어를 컴퓨팅 디바이스들에 로딩할 수 있다.
[0002] 본 개시내용에 따라 집적 회로에서 데이터 보호를 제공하기 위한 예시적인 방법은, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 단계; 및 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성(one-time) 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상(corrupt)시키는 단계를 포함한다.
[0003] 그러한 방법의 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 단계는, 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 단계; 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로 사용자 및 소프트웨어 중 적어도 하나를 인증하는 단계; 및 사용자 및 소프트웨어 중 적어도 하나가 인증되지 않는다는 응답으로, 집적 회로 상의 소프트웨어에 대한 변화가 인가되지 않았다고 결정하는 단계를 포함한다. 사용자의 인증은, 사용자가 인증되었는지 여부를 결정하는 것; 및 사용자가 인증되지 않았다는 것에 대한 응답으로 사용자를 인증하기 위한 적어도 하나의 인증 절차를 수행하는 것을 포함한다. 소프트웨어의 인증은, 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 CMAC(cipher-based message authentication code) 알고리즘을 소프트웨어에 적용함으로써 소프트웨어에 대한 MAC(message authentication code)를 결정하는 것; 및 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 이전에 결정된 MAC와 MAC를 비교하는 것을 포함한다. ARC 값의 손상은, 휘발성 메모리에 유지되는 현재 ARC 값으로 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하는 것을 더 포함한다. ARC 값의 손상은, ARC 값을 저장한 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하는 것; 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하는 것; 및 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하는 것을 포함한다. 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하는 것은, 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하는 것을 더 포함한다. 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 세트의 결정은, 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하는 것을 더 포함한다.
[0004] 본 개시내용에 따른 예시적인 집적 회로는, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하기 위한 수단; 및 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키기 위한 수단을 포함한다.
[0005] 그러한 집적 회로의 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하기 위한 수단은, 집적 회로 상의 소프트웨어에 대한 변화를 검출하기 위한 수단; 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로 사용자 및 소프트웨어 중 적어도 하나를 인증하기 위한 수단; 및 사용자 및 소프트웨어 중 적어도 하나가 인증되지 않는다는 응답으로, 집적 회로 상의 소프트웨어에 대한 변화가 인가되지 않았다고 결정하기 위한 수단을 포함한다. 사용자를 인증하기 위한 수단은, 사용자가 인증되었는지 여부를 결정하기 위한 수단; 및 사용자가 인증되지 않았다는 것에 대한 응답으로 사용자를 인증하기 위한 적어도 하나의 인증 절차를 수행하기 위한 수단을 포함한다. 소프트웨어를 인증하기 위한 수단은, 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 CMAC(cipher-based message authentication code) 알고리즘을 소프트웨어에 적용함으로써 소프트웨어에 대한 MAC(message authentication code)를 결정하기 위한 수단; 및 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 이전에 결정된 MAC와 MAC를 비교하기 위한 수단을 포함한다. ARC 값을 손상시키기 위한 수단은, 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하기 위한 수단을 포함한다. 집적 회로는, 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하기 위한 수단; 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하기 위한 수단; 및 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하기 위한 수단을 더 포함한다. 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하기 위한 수단은, 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하기 위한 수단을 포함한다. 일회성 프로그래밍가능 메모리의 비트들의 어느 비트들이 세팅될지를 결정하기 위한 수단은, 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하기 위한 수단을 더 포함한다.
[0006] 본 개시내용에 따른 예시적인 집적 회로는 일회성 프로그래밍가능 메모리 및 일회성 프로그래밍가능 메모리에 커플링된 프로세서를 포함한다. 프로세서는, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하고; 그리고 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키도록 구성된다.
[0007] 그러한 집적 회로의 구현들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하도록 구성된 프로세서는, 집적 회로 상의 소프트웨어에 대한 변화를 검출하고; 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로 사용자 및 소프트웨어 중 적어도 하나를 인증하며; 그리고 사용자 및 소프트웨어 중 적어도 하나가 인증되지 않는다는 응답으로, 집적 회로 상의 소프트웨어에 대한 변화가 인가되지 않았다고 결정하도록 추가로 구성된다. 사용자를 인증하도록 구성된 프로세서는, 사용자가 인증되었는지 여부를 결정하고; 그리고 사용자가 인증되지 않았다는 것에 대한 응답으로 사용자를 인증하기 위한 적어도 하나의 인증 절차를 수행하도록 추가로 구성된다. 소프트웨어를 인증하도록 구성된 프로세서는, 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 CMAC(cipher-based message authentication code) 알고리즘을 소프트웨어에 적용함으로써 소프트웨어에 대한 MAC(message authentication code)를 결정하고; 그리고 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 이전에 결정된 MAC와 MAC를 비교하도록 추가로 구성된다. ARC 값을 손상시키도록 구성된 프로세서는, 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하도록 추가로 구성된다. 프로세서는, ARC 값을 저장한 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하고; 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하며; 그리고 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하도록 추가로 구성된다. 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하도록 구성된 프로세서는, 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하도록 추가로 구성된다. 일회성 프로그래밍가능 메모리의 비트들의 어느 비트들이 세팅될지를 결정하도록 구성된 프로세서는, 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하도록 추가로 구성된다.
[0008] 본 개시내용에 따른, 집적 회로에서 데이터 보호를 제공하기 위한 컴퓨터-판독가능 명령들이 저장된 예시적인 비-일시적인 컴퓨터-판독가능 매체는, 컴퓨터로 하여금, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하게 하고; 그리고 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키게 하도록 구성된 명령들을 포함한다.
[0009] 그러한 비-일시적인 컴퓨터-판독가능 매체의 구현들은 다음의 특성들 중 하나 이상을 포함할 수 있다. 컴퓨터로 하여금, 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하게 하도록 구성된 명령들은, 컴퓨터로 하여금, 집적 회로 상의 소프트웨어에 대한 변화를 검출하게 하고; 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로 사용자 및 소프트웨어 중 적어도 하나를 인증하게 하며; 그리고 사용자 및 소프트웨어 중 적어도 하나가 인증되지 않는다는 응답으로, 집적 회로 상의 소프트웨어에 대한 변화가 인가되지 않았다고 결정하게 하도록 구성된 명령들을 포함한다. 컴퓨터로 하여금, ARC 값을 손상시키게 하도록 구성된 명령들은, 컴퓨터로 하여금, 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하게 하도록 구성된 명령들을 포함한다. 비-일시적인 컴퓨터-판독가능 매체는, 컴퓨터로 하여금, ARC 값을 저장한 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하게 하고; 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하게 하며; 그리고 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하게 하도록 구성된 명령들을 포함한다. 컴퓨터로 하여금, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하게 하도록 구성된 명령들은, 컴퓨터로 하여금, 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하게 하도록 구성된 명령들을 포함한다. 컴퓨터로 하여금, 일회성 프로그래밍가능 메모리의 비트들의 어느 비트들이 세팅될지를 결정하게 하도록 구성된 명령들은, 컴퓨터로 하여금, 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하게 하도록 구성된 명령들을 포함한다.
[0010] 도 1은 예시적인 컴퓨터 시스템의 기능 블록 다이어그램이다.
[0011] 도 2는 도 1에 예시된 예시적인 컴퓨터 시스템의 대안적인 구현의 기능 블록 다이어그램이다.
[0012] 도 3은 도 1 및 도 2에 예시된 컴퓨터 시스템들을 구현하는 데 사용될 수 있는 예시적인 컴퓨터 시스템의 블록 다이어그램이다.
[0013] 도 4는 안티-리플레이 카운터(anti-replay counter)를 유지하기 위한 넌스-기반(nonce-based) 기법을 예시한 다이어그램이다.
[0014] 도 5는 안티-리플레이 카운터를 유지하기 위한 다른 기법을 예시한 다이어그램이다.
[0015] 도 6은 안티-리플레이 카운터를 유지하기 위한 다른 기법을 예시한 다이어그램이다.
[0016] 도 7은 보안된 비-휘발성 메모리의 콘텐츠들을 안전하게 삭제시키기 위한 예시적인 프로세스의 흐름도이다.
[0017] 도 8은 안티-리플레이 카운터를 손상시키기 위한 예시적인 프로세스의 흐름도이다.
[0018] 도 9는 안티-리플레이 카운터를 손상시키기 위한 기법을 예시한 다이어그램이다.
[0019] 도 10은 안티-리플레이 카운터를 손상시키기 위한 기법을 예시한 다이어그램이다.
[0020] 도 11은 안티-리플레이 카운터를 손상시키기 위한 기법을 예시한 다이어그램이다.
[0021] 도 12는 예시적인 집적 회로를 예시한 다이어그램이다.
[0022] 컴퓨팅 디바이스 상의 민감한 데이터에 대한 데이터 보호들의 인가되지 않은 우회(circumvention)를 방지하기 위한 기법들이 본 명세서에서 개시된다. 이들 기법들은, 컴퓨팅 디바이스 상의 펌웨어 및/또는 소프트웨어를 교체함으로써 이들 데이터 보호들을 우회하려는 펌웨어 또는 소프트웨어 소유자들에 의한 시도들을 완화시킬 수 있다. 컴퓨팅 디바이스에 대한 물리적인 액세스를 갖는 인가되지 않은 사용자는, 합법적인 것으로 나타나고, 실행될 경우 컴퓨팅 디바이스 상에 저장된 민감한 데이터에 액세스할 수 있는 서명된 펌웨어 이미지를 생성하려고 시도할 수 있다. 본 명세서에 개시된 기법들은 컴퓨팅 디바이스와 연관된 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 데 사용될 수 있으며, 민감한 데이터는, 인가되지 않은 소프트웨어 또는 펌웨어가 민감한 데이터를 획득하는 것을 방지하도록 복원불가능하게 렌더링될 수 있다.
[0023] 컴퓨팅 디바이스는 집적 회로, 이를테면 SoC(system on a chip), 및 집적 회로에 의해 사용되는 민감한 데이터가 저장될 수 있는 비-휘발성 메모리(NVM)(또한, 본 명세서에서 "외부 NVM"으로 지칭됨)을 포함할 수 있다. NVM의 콘텐츠들은 NVM의 콘텐츠들에 대한 인가되지 않은 액세스를 방지하도록 암호화될 수 있다. 컴퓨팅 디바이스에 대한 물리적인 액세스를 갖는 공격자(attacker)는, 합법적인 것으로 나타나고, 실행될 경우 NVM에 저장된 민감한 데이터에 액세스할 수 있는 서명된 펌웨어 이미지를 생성하려고 시도할 수 있다. 본 명세서에 개시된 기법들은 컴퓨팅 디바이스의 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 데 사용될 수 있으며, NVM의 콘텐츠들은, 인가되지 않은 소프트웨어 및/또는 펌웨어가 NVM의 콘텐츠들을 획득하는 것을 방지하도록 복원불가능하게 렌더링될 수 있다.
[0024] NVM의 콘텐츠들은 안티-리플레이 메커니즘에 의해 보호될 수 있다. 안티-리플레이 메커니즘은, 컴퓨팅 디바이스의 집적 회로의 일회성 프로그래밍가능 메모리의 퓨즈(fuse)들이 비-휘발성 메모리(NVM)에 저장된 데이터에 대한 리플레이 공격들을 방지하는 데 사용될 수 있는 ARC(anti-replay counter)를 유지하는 데 사용되는 퓨즈-기반 안티-리플레이 메커니즘일 수 있다. ARC는 메시지 인증 또는 다른 수단의 사용을 통해 NVM의 콘텐츠들에 대한 데이터 무결성(integrity)을 제공하는 데 사용될 수 있다. ARC는, NVM의 콘텐츠들(또한, 본 명세서에서 "페이로드" 데이터로 지칭됨)을 암호화시키는 데 사용될 수 있는 암호화 키를 생성하기 위해 HUK(Hardware Unique Key) 또는 보안 정보와 함께 사용될 경우, NVM의 콘텐츠들의 데이터 기밀성(confidentiality)을 제공하는 데 사용될 수 있다. ARC는 암호화되어 NVM에 저장되기 전에 페이로드의 값을 복원시키도록 보안 프로세싱 서브시스템에 의해 사용된다.
[0025] ARC는, 공격자에 의해 디바이스로 도입된 인가되지 않은 소프트웨어 및/또는 펌웨어 업데이트에 의해 액세스될 수 있는 집적 회로의 일회성 프로그래밍가능 메모리에 유지될 수 있다. 본 명세서에 기재된 기법들은 그러한 인가되지 않은 업데이트를 검출하고 일회성 프로그래밍가능 메모리에서 ARC를 손상시켜, 공격자가 NVM에 저장된 콘텐츠를 복원시킬 수 없게 하는 데 사용될 수 있다. 공격자는 NVM으로부터 페이로드를 획득할 수 있을 수 있다. 그러나, 암호화 키로서 사용된 ARC 값은 복원불가능하게 렌더링되었을 것이며, 그에 의해, 공격자가 페이로드의 암호화되지 않은 콘텐츠들을 복원하는 것을 방지한다. 본 명세서에 개시된 예들이 "퓨즈-기반" 안티-리플레이 메커니즘들로 지칭되지만, 본 명세서에 개시된 기법들은 퓨즈들을 사용하는 일회성 프로그래밍가능 메모리의 구현들로 제한되지 않는다. 다른 구현들은, 1회 세팅될 수 있고 퓨즈들 대신 데이터의 비트를 표현하는 데 사용될 수 있는 안티퓨즈(antifuse)들 또는 다른 컴포넌트들을 사용할 수 있다.
[0026] 도 1은 예시적인 컴퓨팅 디바이스(100)의 기능 블록 다이어그램이다. 컴퓨팅 디바이스(100)는 보안 프로세싱 서브시스템(SPSS)(110), 및 데이터를 저장하도록 보안 프로세싱 서브시스템(110)에 의해 사용될 수 있는, 보안 프로세싱 서브시스템(110) 외부의 외부 비-휘발성 메모리(NVM)(150)을 포함한다. 보안 프로세싱 서브시스템(110)은, 집적 회로 상에 구현된 프로세서 엘리먼트 및 메모리를 포함하는 SoC(system-on-a-chip) 또는 다른 유사한 디바이스로서 구현될 수 있다. 보안 프로세싱 서브시스템(110)은 집적 회로 상에 구현될 수 있고, NVM(150)은 보안 프로세싱 서브시스템(110)과 동일한 집적 회로 상에 구현되지 않는 오프-칩(off-chip) 메모리 또는 외부 메모리로서 구현될 수 있다. 보안 프로세싱 서브시스템(110)은 NVM(150)과 직접적으로 또는 간접적으로 연결되어, 통신가능하게 커플링되며, NVM(150)에 데이터를 저장하고 NVM(150)으로부터의 데이터에 액세스하도록 구성될 수 있다.
[0027] 보안 프로세싱 서브시스템의 프로세서(190)는 보안 프로세싱 서브시스템(110)에 관해 본 명세서에서 논의되는 다양한 기능들 및 기능 엘리먼트들을 구현할 수 있다. 예컨대, 다음의 기능 엘리먼트들: HMAC(hash message authentication code) 블록(130), HMAC 블록(135), 및/또는 매칭 블록(145)이 보안 프로세싱 서브시스템(110)의 프로세서(190)에 의해 구현될 수 있다. HMAC 블록(130), HMAC 블록(135), 및 매칭 블록(145)의 기능은 아래에서 더 상세히 설명된다. 도 1에 예시된 예시적인 구현은, 페이로드(155)와 함께 NVM(150)에 기입된 MAC(message authentication code)(160)를 사용하여, NVM(150)에 저장된 페이로드(155)의 무결성을 검증하기 위해 이들 기능 블록들을 포함한다. 그러나, 다른 구현들은 NVM(150)에 저장된 페이로드(155)의 무결성을 검증하기 위해 상이한 기법을 이용할 수 있다. 더욱이, 보안 프로세싱 서브시스템(110)은 외부 NVM(150)에 기입될 데이터의 적어도 일부 또는 데이터의 요약의 암호화 서명을 생성하도록 구성될 수 있다. 예컨대, 보안 프로세싱 서브시스템(110)의 프로세서(190)는 데이터의 적어도 일부의 해시(hash) 또는 데이터의 요약을 생성하고 데이터의 해시 또는 요약을 암호화하도록 구성될 수 있다. 암호화된 해시는 MAC(160) 대신 또는 그에 부가하여 데이터와 함께 외부 NVM(150)에 저장될 수 있다.
[0028] 보안 프로세싱 서브시스템은 또한, 비-보안 애플리케이션들에 대한 일반적인 프로세싱 리소스들 및 메모리로부터 보안 프로세싱 리소스들 및 메모리를 분리시키도록 구성될 수 있는 범용 프로세서, 이를테면 컴퓨팅 디바이스(100)의 프로세서(190)에 의해 구현될 수 있다. 보안 프로세싱 서브시스템(110)은, 내부에 저장된 데이터에 대한 인가되지 않은 액세스를 방지하고 그리고/또는 보안 프로세싱 서브시스템(110)의 프로세서에 의한 프로세서-실행가능 프로그램 명령들의 인가되지 않은 실행을 방지할 수 있는 보안 데이터 저장소에 대한 그리고 프로세서-실행가능 프로그램 코드에 대한 보안 실행 환경을 제공할 수 있다. 보안 프로세싱 서브시스템(110)은 프로세서(190)의 보안 영역을 포함하는 TEE(trusted execution environment)를 구현할 수 있다. TEE는 TEE 내의 프로그램 코드 및 데이터에 대한 기밀성 및 무결성을 제공하는, TEE 내의 프로그램 코드 및 데이터에 대한 격리된 동작 환경을 제공할 수 있다. 컴퓨팅 디바이스(100)는, 신뢰되지 않은 프로그램 코드가 실행될 수 있고 민감하지 않은 데이터가 저장될 수 있는 비-보안 프로세싱 서브시스템(도시되지 않음)을 포함할 수 있다. 프로세서(190)는 이러한 비-보안 프로세싱 서브시스템을 제공할 수 있거나, 또는 컴퓨팅 디바이스(100)는 보안 프로세싱 서브시스템(110)으로부터 분리된 비-보안 프로세싱 환경을 제공하는 하나 이상의 부가적인 프로세서들(도시되지 않음)을 포함할 수 있다.
[0029] 보안 프로세싱 서브시스템(110)은 휘발성 메모리(120) 및 비-휘발성 메모리, 이를테면 일회성 프로그래밍가능 메모리(125)를 포함할 수 있다. 휘발성 메모리(120)는, 전력이 휘발성 메모리(120)에 제공되는 동안, 내부에 저장된 데이터를 유지하도록 구성된 메모리를 포함할 수 있다. 보안 프로세싱 서브시스템(110)으로 공급된 전력이 손실되면, 휘발성 메모리(120)의 콘텐츠들이 손실될 것이다. 일회성 프로그래밍가능 메모리(125)는, 보안 프로세싱 서브시스템(110)으로의 전력이 손실되더라도, 내부에 저장된 데이터를 유지하는 영구 메모리를 포함한다. 일회성 프로그래밍가능 메모리(125)는 데이터의 비트를 각각 표현하는 복수의 퓨즈들을 포함할 수 있고, 특정한 비트의 값은 대응하는 퓨즈를 끊어뜨림으로써 세팅될 수 있다. 퓨즈의 값은, 일단 세팅되면 변화될 수 없다. 자신의 오리지널 상태에 있는 퓨즈의 값은 제로('0')의 비트 값을 표현하는 데 사용될 수 있고, 퓨즈의 값은 일단 끊어지면 일('1')의 비트 값을 표현하는 데 사용될 수 있다. 다른 실시예들에서, 자신의 오리지널 상태에 있는 퓨즈의 값은 일('1')의 비트 값을 표현하는 데 사용될 수 있고, 퓨즈의 값은 일단 끊어지면 제로('0')의 비트 값을 표현하는 데 사용될 수 있다. 더욱이, 다른 타입들의 일회성 프로그래밍가능 메모리(125)가 사용될 수 있다. 일회성 프로그래밍가능 메모리(125)는, 1회 세팅될 수 있고 퓨즈들 대신 데이터의 비트를 표현하는 데 사용될 수 있는 안티퓨즈들 또는 다른 컴포넌트들을 포함하는 수 있다. 일회성 프로그래밍가능 메모리(125)의 일회성 프로그래밍가능 속성은, 일회성 프로그래밍가능 메모리(125)가 결국 소진(exhaust)될 수 있다는 것을 의미한다. 본 명세서에 개시된 기법들은, ARC가 일회성 프로그래밍가능 메모리(125)에서 증분되는 데 필요한 빈도를 감소시키며, 그에 의해 일회성 프로그래밍가능 메모리(125)가 소모되는 레이트를 감소시킨다.
[0030] 보안 프로세싱 서브시스템(110)은 내부 전력 소스(195)를 포함할 수 있다. 내부 전력 소스는, 외부 전력 소스(185)로부터의 전력이 손실되는 이벤트에서 보안 프로세싱 서브시스템에 전력을 제공할 수 있는 2차 전력 소스로서 사용될 수 있다. 내부 전력 소스(195)는, 외부 전력 소스(185)로부터의 전력이 손실되는 이벤트에서 적어도 짧은 시간 기간 동안 보안 프로세싱 서브시스템(110)에 전력공급할 수 있는 전기 전력을 저장할 수 있는 커패시터, 배터리, 또는 다른 디바이스를 포함할 수 있다. 내부 전력 소스(195)는, 컴퓨팅 디바이스가 전력을 손실하는 것으로 인해 ARC가 손실되지 않기 위해, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(anti-replay counter)(165)에, 휘발성 메모리(120)에 저장된 현재 ARC(140)를 보안 프로세싱 서브시스템(110)이 기입하게 허용하기에 충분한 전력을 보안 프로세싱 서브시스템(110)에 제공하도록 구성될 수 있다.
[0031] 외부 전력 소스(185)는, 보안 프로세싱 서브시스템(110)으로부터 분리되고 컴퓨팅 디바이스(100)로부터 착탈가능할 수 있는 전력 소스이다. 외부 전력 소스(185)는 컴퓨팅 디바이스(100)의 컴포넌트들에 전기 전력을 제공할 수 있는 배터리 또는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(100)는, 센서가 컴퓨팅 디바이스의 물리적 침입(intrusion)을 검출하는 것에 대한 응답으로 신호를 보안 프로세싱 서브시스템(110)에 제공할 수 있는 센서(도 1에 도시되지 않음)를 포함할 수 있다. 외부 전력 소스(185)는, 외부 전력 소스(185)가 제거되고 다른 외부 전력 소스(185)로 교체될 수 있도록 착탈가능할 수 있다. 컴퓨팅 디바이스(100)의 사용자는, 예컨대, 전력 소스가 고갈(deplete)되거나 디바이스의 사용자가 컴퓨팅 디바이스(100)를 강제로 재부팅하기를 원하면, 외부 전력 소스(185)를 다른 외부 전력 소스(185)와 교환할 수 있다.
[0032] 보안 프로세싱 서브시스템(110)은, 전력 손실 이벤트에 대한 응답으로 일회성 프로그래밍가능 메모리(125)에 ARC(anti-replay counter)(165)로 지칭되는 ARC 값을 저장하도록 구성될 수 있다. 본 명세서에서 사용된 바와 같이, 용어 "전력 손실"은, 외부 전력 소스(185)가 더 이상 전기 전력을 보안 프로세싱 서브시스템(110)에 제공하지 않거나, 보안 프로세싱 서브시스템(110)이 동작할 수 있게 하기에 불충분한 전기 전력의 레벨을 제공하고 있거나, 또는 보안 프로세싱 서브시스템으로의 전력의 손실이 임박한다는 임계치에 외부 전력 소스(185)의 나머지 전력 레벨이 도달했다는 것을 표시한다. 전력 손실은 컴퓨팅 디바이스(100)로부터의 외부 전력 소스(185)의 제거로부터 초래될 수 있으며, 여기서 외부 전력 소스(185)는 배터리 또는 전력의 다른 착탈가능 소스를 포함한다. 그러한 상황에서의 전력 이벤트의 손실은, 외부 전력 소스(185)가 더 이상 전력을 보안 프로세싱 서브시스템(110)에 제공하지 않는다는 것, 외부 전력 소스(185)가 보안 프로세싱 서브시스템(110)이 동작할 수 있게 하기에 충분한 레벨의 전기 전력을 더 이상 제공하고 있지 않다는 것, 외부 전력 소스(185)가 미리 결정된 레벨에 도달했다는 것에 의해, 컴퓨팅 디바이스(100)의 배터리 구획 또는 하우징이 열려있다는 것을 표시하는 물리적 침입 센서로부터의 신호에 기초하여, 또는 이들 인자들 중 2개 이상의 조합에 의해 검출될 수 있다.
[0033] 하나 이상의 다른 이벤트들은 또한, 비-휘발성 메모리로부터의 ARC(140)를 ARC(165)로서 일회성 프로그래밍가능 메모리(125)에 저장하도록 보안 프로세싱 서브시스템(110)의 프로세서(190)를 트리거링할 수 있다. 이들 트리거 이벤트들은, (1) 외부 전력 소스(185)로부터의 전력이 곧 손실될 수 있고 그리고/또는 보안 프로세싱 서브시스템(110)이 동작할 수 있게 하기에 충분한 전기 전력의 레벨을 더 이상 제공할 수 없을 수 있다는 것을 표시하는 미리 결정된 임계치에 외부 전력 소스(185)의 나머지 전력 레벨이 도달했다는 결정을 보안 프로세싱 서브시스템(110)이 행하는 것, (2) 컴퓨팅 디바이스(100)가 셧 다운(shut down)되거나 재부팅되고 있고, 비-휘발성 메모리로부터의 ARC(140)가 일회성 프로그래밍가능 메모리(125)에 ARC(165)로서 기입되지 않으면 손실될 것이라는 것, 및 (3) 배터리 또는 다른 외부 전력 소스가 컴퓨팅 디바이스(100)로부터 제거될 수 있다는 것을 표시하는 신호를 보안 프로세싱 서브시스템(110)이 컴퓨팅 디바이스(100)의 센서로부터 수신하는 것을 포함할 수 있다(그러나, 이에 제한되지 않음).
[0034] 컴퓨팅 디바이스(100)의 보안 프로세싱 서브시스템(110)은, 보안 프로세싱 서브시스템(110)에 대한 액세스를 얻거나 보안 프로세싱 서브시스템(110)이 일부 인가되지 않은 액션을 수행하게 하려는 시도로 공격자가 만료되었지만 다른 방식으로 유효한 데이터를 외부 NVM(150)에 배치하려고 시도하는 리플레이 공격들을 방지하기 위해 ARC(140)를 사용할 수 있다. 리플레이 공격들을 회피하기 위해, 보안 프로세싱 서브시스템(110)은, NVM(150)에 저장된 데이터가 검출되지 않으면서 조작될 수 없다는 것을 보장하도록 ARC(140)에 의존한다. 보안 프로세싱 서브시스템은, 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에서 데이터(본 명세서에서, 페이로드 데이터(115)로 지칭됨)를 생성할 수 있다. 그러나, 집적 회로의 온-칩 메모리로서 이용가능한 비-휘발성 메모리의 양은 통상적으로 사이즈 및 비용 제약들에 의해 제한되며, 보안 프로세싱 서브시스템(110)은 부가적인 프로세싱 태스크를 위해 메모리를 비우도록 페이로드 데이터(115)를 외부 NVM(150)에 오프로딩할 필요가 있을 수 있다. 보안 프로세싱 서브시스템(110)은, 일회성 프로그래밍가능 메모리(125)의 사이즈가 일반적으로 제한되고 일회성 프로그래밍가능 메모리(125)의 각각의 비트가 한번만 기입될 수 있으므로, 나중에 요구될 수 있고 영구 저장을 위해 외부 NVM(150)에 기입될 수 있는 페이로드 데이터(115)를 외부 NVM(150)에 오프로딩할 수 있다.
[0035] 보안 프로세싱 서브시스템(110)의 프로세서(190)는, 예컨대 컴퓨팅 디바이스(100)가 전력공급받을 시에, 일회성 프로그래밍가능 메모리(125)로부터 ARC(165)를 리트리브(retrieve)하고, ARC(140)를 휘발성 메모리(120)에 저장할 수 있다. ARC(140)는, 보안 프로세싱 서브시스템(110)의 프로세서(190)가 휘발성 메모리(120)에 저장된 ARC(140)의 현재 값으로 일회성 프로그래밍가능 메모리의 ARC(165)를 업데이트하게 하는 트리거링 이벤트가 발생할 때까지 휘발성 메모리(120)에 유지될 수 있다. 트리거링 이벤트는, 보안 프로세싱 서브시스템(110)으로의 외부 전력 공급이, 손실될 수 있거나 손실되었거나 또는 보안 프로세싱 서브시스템(110)이 동작할 수 있게 하기에 충분한 레벨의 에너지를 보안 프로세싱 서브시스템(110)에 더 이상 제공할 수 없을 수 있으며, 따라서 휘발성 메모리(120)의 콘텐츠들이 백업(back up)되지 않았다면 손실될 것이라는 것을 표시하는 이벤트이다. 그러한 트리거링 이벤트가 발생할 때까지 휘발성 메모리(120)에 ARC(140)를 유지하는 것은, 그렇지 않았다면 일회성 프로그래밍가능 메모리(125)에 ARC(165)를 유지하는 데 사용될 퓨즈들의 수를 보안 프로세싱 서브시스템(110)이 상당히 감소시키게 허용한다. ARC(140)는, 데이터가 외부 NVM(150)에 기입될 때마다 업데이트된다. ARC(165)가 일회성 프로그래밍가능 메모리(125)에 유지되었다면, 일회성 프로그래밍가능 메모리(125)의 적어도 하나의 퓨즈는 NVM으로의 기입 이벤트가 발생되었을 때마다 끊어질 것이다. 일회성 프로그래밍가능 메모리(125)를 포함하는 퓨즈들의 수는 통상적으로, 보안 프로세싱 서브시스템(110)이 구현되는 집적 회로를 제조하기 위한 사이즈 및 비용 고려사항들로 인해 비교적 작다. 일회성 프로그래밍가능 메모리(125)의 퓨즈들은 신속히 소진되어, 컴퓨팅 디바이스(100)가 전력 차단(power down)되거나 재부팅될 경우 손실되지 않을 영구 메모리에 ARC들을 안전하게 저장하기 위한 온-칩 저장소 없이 보안 프로세싱 서브시스템(110)을 유지할 수 있다.
[0036] ARC(140)는, 내부에 저장될 페이로드(155)와 함께 외부 NVM(150)에 기입될 수 있는 MAC(message authentication code)(160)를 생성하도록 보안 프로세싱 서브시스템(110)에 의해 사용될 수 있다. MAC(160)는 무결성 보호를 페이로드(155)에 제공하는 데 사용될 수 있다. MAC는, 페이로드(155)가 액세스될 경우 프로세서(190)에 의해 리컴퓨팅(recompute)될 수 있다. 페이로드(155)가 수정될 것이라면, 페이로드(155)와 함께 저장된 MAC(160)는 리컴퓨팅된 MAC 값과 매칭하지 않을 것이다.
[0037] HMAC 블록(130)은, 외부 NVM(150)에 기입될, 휘발성 메모리(120)에 저장된 페이로드 데이터(115)에 키형-HMAC(keyed-HMAC) 알고리즘을 적용함으로써 MAC(160)를 생성하도록 구성될 수 있다. HMAC 블록(130)은 HMAC 알고리즘에 대한 키 파라미터로서 ARC(140)의 적어도 일부를 사용할 수 있다. 보안 프로세싱 서브시스템(110)은, MAC(160)를 계산하기 전에 페이로드 데이터(115)를 암호화하거나 다른 방식으로 프로세싱할 수 있다. 보안 프로세싱 서브시스템(110)은 MAC(160) 및 페이로드(155)를 외부 NVM(150)에 기입하도록 구성될 수 있다. 보안 프로세싱 서브시스템(110)은 컴퓨팅 디바이스(100)의 버스 또는 다른 통신 경로를 통해 외부 NVM(150)과 통신하도록 구성될 수 있다.
[0038] 보안 프로세싱 서브시스템(110)은 외부 NVM(150)으로부터 페이로드(155) 및 MAC(160)를 리트리브하도록 구성될 수 있다. HMAC 블록(135)은 휘발성 메모리(120)로부터 페이로드(155) 및 ARC(140)의 현재 값을 수신하고, 현재 ARC(140)에 기초하여 페이로드(155)에 대한 MAC를 재계산할 수 있다. 매칭 블록(145)은 새로이 계산된 MAC 값을 MAC(160)와 비교할 수 있다. MAC(160)가 새로이 계산된 MAC 값과 매칭하면, 페이로드(155)는 수정되지 않았거나, 또는 만료된 페이로드 데이터 및 만료된 MAC가 외부 NVM(150)에 삽입되었던 리플레이 공격이 존재하지 않았다. MAC(160)가 새로이 계산된 MAC 값과 매칭하지 않으면, 페이로드(155)는 수정되었거나 손상되었거나, 또는 만료된 페이로드 데이터 및/또는 만료된 MAC가 외부 NVM(150)에 삽입되었던 리플레이 공격이 존재했다. 데이터가 외부 NVM(150)에 기입될 때마다, 휘발성 메모리(120)에 저장된 ARC(140)가 업데이트되기 때문에, 만료된 페이로드 데이터와 연관된 MAC(160)는 HMAC 블록(135)에 의해 재계산된 MAC와 매칭하지 않을 것이다. MAC(160)가 페이로드(155)에 대해 결정되었으므로, ARC(140)는 증분된 하나 이상의 시간들을 가질 것이며, 따라서, ARC(140)의 현재 값에 기초하는 새로이 결정된 MAC는 MAC(160)와 매칭하지 않을 것이다.
[0039] HMAC 블록(130), HMAC 블록(135), 및 매칭 블록(145)의 기능은 보안 프로세싱 서브시스템의 하드웨어로 구현될 수 있거나, 또는 보안 프로세싱 서브시스템(110)의 프로세서(190)에 의해 실행되는 프로세서-실행가능 프로그램 코드로서 구현될 수 있다. HMAC 블록(130), HMAC 블록(135), 및 매칭 블록(145)의 기능은 또한, 프로세서-실행가능 프로그램 코드와 하드웨어의 조합으로서 구현될 수 있다.
[0040] 도 1에 예시된 바와 같이, 보안 프로세싱 서브시스템(110)의 프로세서(190)는 외부 NVM(150)에 기입될 페이로드(155)에 대한 MAC(160)를 계산하도록 구성된다. MAC(160)는 키형-HMAC(hash message authentication code)를 사용하여 생성될 수 있다. HMAC 알고리즘은, MAC 값이 생성될 데이터 및 데이터로부터 MAC 값을 생성하는 데 사용되는 보안 키를 수신하도록 구성된다. 도 1은 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 저장된 페이로드 데이터 및 ARC(140)를 수신하는 HMAC 블록(130)을 포함하는 보안 프로세싱 서브시스템(110)의 일 예를 예시한다. ARC(140)의 적어도 일부는 외부 NVM(150)에 기입될 데이터(도 1에서, 페이로드(155)로 지칭됨)에 대한 MAC(160)를 생성할 시에 사용을 위하여 HMAC 블록(130)에 의해 선택될 수 있다. 휘발성 메모리(120)에 저장된 ARC(140)의 값은, MAC(160)가 리플레이 공격을 방지하기 위해 증분되기 전에 새로운 값으로 증분될 수 있다. ARC(140)의 값은, ARC(140)의 적어도 일부가 랜덤 알고리즘 또는 조합 알고리즘을 사용하여 선택될 수 있는 다양한 기법들을 사용하여 구현될 수 있다. 아래에서 논의되는 도 4 내지 도 6은, ARC의 값이 다양한 기법들을 사용하여 구현되는 예시적인 프로세스들을 예시한다.
[0041] 도 1에 예시된 예시적인 컴퓨팅 디바이스(100)는 또한, 다양한 사이즈들의 페이로드 데이터(115)를 고려하도록 적응될 수 있다. 예컨대, 페이로드 사이즈는, 외부 NVM(150) 전체를 포함하는 데이터, 메모리 페이지에 대응하는 데이터, 또는 민감한 것으로서 플래그(flag)되었던 임의의 사이즈의 데이터를 포함할 수 있다. 민감한 것으로 플래그되지 않은 데이터는, 페이로드(155)에 대해 제공되지 않을 수 있는 MAC(160) 또는 다른 그러한 연관된 보호들 없이 외부 NVM(150)에 저장될 수 있다.
[0042] 예시적인 컴퓨팅 디바이스(100)는 내부 비-휘발성 메모리(127)를 포함할 수 있다. 일부 양상들에서, 내부 비-휘발성 메모리(127)는 보안 프로세싱 서브시스템(110)의 컴포넌트로서 구현될 수 있다. 예컨대, 보안 프로세싱 서브시스템(110)은 시스템 온 칩으로 구현될 수 있고, 내부 비-휘발성 메모리(127)는 보안 프로세싱 서브시스템(110) 내부에 있을 수 있다. 반대로, 외부 NVM(150)은 보안 프로세싱 서브시스템(110)으로부터 분리되게 구현된다. 외부 NVM(150)과 같은 내부 NVM(127)은, 메모리로의 전력이 손실되거나 또는 메모리(120)가 동작할 수 있게 하는 데 요구되는 레벨 아래로 떨어지면 내부에 저장된 콘텐츠들을 손실할 휘발성 메모리(120)와는 대조적으로, 메모리로의 전력이 손실되더라도 메모리의 콘텐츠들을 유지하도록 구성된 영구 메모리이다. 내부 NVM(127) 및 외부 NVM(150)은, 각각의 비트가 한번만 기입될 수 있는 일회성 프로그래밍가능 메모리(125)와는 대조적으로, 다수회 기입될 수 있는 플래시 메모리 및/또는 다른 타입들의 영구 메모리를 포함할 수 있다. 내부 NVM(127)은 프로세서(190)에 의해 실행될 수 있는 실행가능 프로그램 코드, 이를테면 도 1에 예시된 EXP(executable program code)(129)를 저장할 수 있다. 외부 NVM(150)은 또한, 프로세서(190)에 의해 실행될 수 있는 실행가능 프로그램 코드, 이를테면 도 1에 예시된 EXP(128)를 저장하는 데 사용될 수 있다.
[0043] 컴퓨팅 디바이스(100)는 컴퓨팅 디바이스와 연관된 HUK(Hardware Unique Key)(199)를 포함할 수 있다. HUK(199)는, 프로세서(190)에 의해 액세스가능하지만 컴퓨팅 디바이스(100)의 특정한 신뢰된 컴포넌트들에 액세스가능하고, 그러나 신뢰되지 않는 프로그램 코드에 액세스가능하지 않은 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125) 및/또는 다른 보안 메모리 위치에 저장되는 비트 스트링을 포함할 수 있다. HUK(199)는 컴퓨팅 디바이스(100)의 OEM(original equipment manufacturer)에 의해 생성되어 일회성 프로그래밍가능 메모리(125)로 프로그래밍될 수 있다. OEM은, 컴퓨팅 디바이스(100)와 연관된 소프트웨어 및/또는 펌웨어를 업데이트하기 위한 소프트웨어 및/또는 펌웨어 업데이트들을 컴퓨팅 디바이스(100)에 제공할 수 있는 신뢰된 엔티티들에 HUK(199)를 제공할 수 있어서, 컴퓨팅 디바이스(100)는 이들 업데이트들을 인증할 수 있다. 이러한 맥락에서 용어 "와 연관된"의 사용은, 내부 NVM(127)에 설치된 소프트웨어 및/또는 펌웨어, 이를테면 EXP(129) 및/또는 외부 NVM에 설치된 소프트웨어 및/또는 펌웨어, 이를테면 EXP(128)을 지칭한다. 소프트웨어 및/또는 펌웨어는 컴퓨팅 디바이스(100)의 프로세서(190)에 의한 실행을 위해 휘발성 메모리(120)로 로딩될 수 있다.
[0044] 소프트웨어 및/또는 펌웨어에 대한 업데이트는, CMAC(cipher-based message authentication code) 알고리즘을 사용하여 컴퓨팅되었던 MAC 값을 포함하는 이미지 파일을 포함할 수 있다. 이미지 파일은, 네트워크 연결을 통해 컴퓨팅 디바이스(100)로 다운로드되고, 착탈가능 매체들, 이를테면 플래시 드라이브로부터 디바이스로 복사되고 그리고/또는 다른 수단을 통해 컴퓨팅 디바이스(100)에 제공될 수 있다. 펌웨어 및/또는 소프트웨어 업데이트가 진본(authentic)이면, 이미지 파일에 포함된 MAC는 컴퓨팅 디바이스(100)와 연관된 HUK(199)를 사용하여 계산되어야 한다. 프로세서(190)는, 펌웨어 및/또는 소프트웨어 업데이트를 포함하는 이미지 파일의 적어도 일부에 기반하여 그리고 CMAC 알고리즘에 HUK(199)에 기반한 키를 제공함으로써 MAC를 컴퓨팅할 수 있다. HUK(199)에 기반한 키는 프로세서(190)에 의해 실행되는 키 도출 알고리즘을 사용하여 HUK(199)로부터 도출될 수 있다. 프로세서(190)는, 이미지 파일에 포함된 MAC가 프로세서(190)에 의해 컴퓨팅된 MAC와 매칭하지 않으면, 업데이트가 인가되지 않는다고 결정하도록 구성될 수 있다. 프로세서(190)는, 그러한 인가되지 않은 업데이트에 대한 응답으로, ARC(165)를 손상시키고 휘발성 메모리로부터 ARC(140)를 클리어(clear)시키도록 구성될 수 있다. 일부 구현들에서, 프로세서(190)는 EXP(129)에 대해 컴퓨팅된 MAC(126)를 내부 NVM(127)에 저장할 수 있으며, MAC(126)가 컴퓨팅되었으므로, EXP(129)가 수정되었는지 여부를 결정하기 위해 MAC(126)를 사용할 수 있다. 유사하게, 프로세서(190)는 EXP(128)에 대해 컴퓨팅된 MAC(124)를 외부 NVM(150)에 저장할 수 있으며, MAC(124)가 컴퓨팅되었으므로, EXP(129)가 수정되었는지 여부를 결정하기 위해 MAC(124)를 사용할 수 있다.
[0045] 이미지 파일은 바이너리 오브젝트 코드 및/또는 중간 코드를 포함할 수 있다. 바이너리 오브젝트 코드는 통상적으로, 바이너리 오브젝트 코드가 실행가능 파일 또는 라이브러리 파일을 형성하도록 링크될 때까지 프로세서(190)에 의해 직접 실행가능하지 않을 수 있는 리로케이팅가능(relocatable) 포맷 기계 코드를 포함한다. 바이너리 오브젝트 코드는 기계어를 포함할 수 있거나, 또는 RTL(register transfer language)과 같은 중간어를 포함할 수 있다. 바이너리 오브젝트 코드는 COFF(Common Object File Format) 및 ELF(Executable and Linkable Format)와 같은(그러나, 이에 제한되지 않음) 다양한 포맷들로 분배될 수 있다. 중간 코드는 바이트코드를 포함할 수 있다. 바이트코드는 또한, 바이트코드가 통상적으로 바이너리 오브젝트 코드와 달리 플랫폼 독립적이기 때문에 포터블 코드(portable code)로 지칭될 수 있다. 중간 코드는 통상적으로, 컴퓨팅 디바이스(100) 상에서 실행되는 인터프리터(interpreter)(사전(ahead-of-time) 컴파일러 또는 적시(just-in-time) 컴파일러를 갖는 런타임 환경)에 의해 실행된다. 인터프리터는 바이트코드가 기계 코드로 컴파일링되지 않고도 바이트코드를 직접 실행할 수 있다. 일부 구현들에서, 바이트코드는 컴퓨팅 디바이스(100) 상의 컴파일러(도시되지 않음)에 의해 바이너리 오브젝트 코드로 컴파일링될 수 있다.
[0046] 컴퓨팅 디바이스(100)의 보안 프로세싱 서브시스템(110)은, 다양한 보안 부트 메커니즘 기법들을 사용하여 컴퓨팅 디바이스(100)의 하나 이상의 중요 소프트웨어 컴포넌트들에 대한 이미지 파일들 및/또는 하나 이상의 펌웨어 이미지 파일들을 인증하도록 구성되는, ROM(read-only memory)(105)에 저장된 보안 부트로더(bootloader)(119)를 포함할 수 있다. 보안 부트로더는 또한, 컴퓨팅 디바이스(100)가 부팅되게 허용하기 전에 EXP(129) 및/또는 EXP(128)의 CMAC를 컴퓨팅하도록 구성될 수 있다. 부트 로더에 의해 컴퓨팅된 CMAC 값이, 이전에 계산되었고 부트로더에 의해 인증될 실행가능 프로그램 코드(예컨대, EXP(128) 및/또는 EXP(129))와 연관되었던 예상되는 CMAC 값(예컨대, MAC(126) 및/또는 MAC(124))과 매칭하지 않으면, 보안 부트 로더는, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트가 EXP(128) 및/또는 EXP(129)에 대해 발생했다고 결정할 수 있다.
[0047] 도 2는 도 1에 예시된 예시적인 컴퓨팅 디바이스(100)의 대안적인 구현인 컴퓨팅 디바이스(200)를 예시한 기능 블록 다이어그램이다. 도 1에 예시된 컴퓨팅 디바이스(100)의 예시적인 구현은 페이로드(155) 및 MAC(160)의 단일 인스턴스를 외부 NVM(150)에 저장하도록 구성된다. 도 2는 컴퓨팅 디바이스(200)가 다수의 페이로드들(예컨대, 페이로드들(155a 내지 155n))을 NVM(150)에 저장할 수 있고, 각각의 페이로드가 연관된 MAC(예컨대, MAC(160a 내지 160n))를 갖는 대안적인 구현을 예시하며, 여기서, a 내지 n은 0 내지 정수 값 n까지의 정수 값들의 범위를 표현한다. n의 하한은, 본 명세서에 개시된 기법들을 사용하여 보안되는 NVM(150)에 어떠한 데이터도 저장되어 있지 않으면 제로일 수 있고, n의 값의 상한은 휘발성 메모리(120)를 포함하는 메모리의 양, NVM(150)의 사이즈 및/또는 다른 인자들에 의해 제한될 수 있다.
[0048] 도 2의 컴퓨팅 디바이스(100)의 예시적인 구현에 의해 이용되는 기법들은, 다수의 페이로드들(예컨대, 페이로드들(155a 내지 155n)) 및 다수의 MAC들(예컨대, MAC들(160a 내지 160n))을 NVM(150)에 저장하는 것을 용이하게 하기 위해 도 1의 컴퓨팅 디바이스(100)의 예시적인 구현에서 이용되는 기법들과는 약간 상이하다. 도 1 및 도 2에 예시된 예시적인 구현 사이에서 상이한 하나의 양상은, 도 1에 관해 위에서 설명된 것에 비해, ARC들이 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 어떻게 저장되는지이다. 도 1에 예시된 예시적인 구현에 관해, 정적 베이스라인(static baseline) 컴포넌트 및 트랜션트(transient) 컴포넌트를 포함하는 단일 ARC(140)가 휘발성 메모리(120)에 저장될 수 있다. 반대로, 도 2에 예시된 구현에서, 다수의 ARC 값들이 NVM(150)에 저장된 다수의 페이로드들(예컨대, 페이로드들(155a 내지 155n))에 대해 유지될 수 있다. 각각의 페이로드(155)는 상이한 트랜션트 컴포넌트 값과 연관될 수 있다. ARC의 정적 베이스라인 컴포넌트(280)는 일단 결정되면, 컴퓨팅 디바이스(100)가 다시 전력공급받거나, 재부팅되거나, 또는 정적 베이스라인 컴포넌트가 증분되게 하는 다른 이벤트를 경험할 때까지 동일하게 유지된다. 반대로, 도 1에 예시된 구현의 ARC의 트랜션트 컴포넌트는, 페이로드(155)가 NVM(150)에 기입될 때마다 업데이트될 수 있다. 도 2에 예시된 구현에서, 별개의 트랜션트 컴포넌트가 NVM(150)에 기입되는 각각의 페이로드(155a 내지 155n)와 연관된다. 트랜션트 컴포넌트는, 새로운 페이로드가 NVM(150)에 기입되거나 기존의 페이로드들 중 하나가 업데이트될 때마다 증분될 수 있다. 아래에서 논의되는 도 4 내지 도 6은, 컴퓨팅 디바이스(100)에 의해 유지되는 ARC 값(들)의 트랜션트 컴포넌트를 증분시키는 데 사용될 수 있는 다양한 기법들을 예시한다.
[0049] 도 1에 예시된 구현 및 도 2에 예시된 구현 둘 모두에서, 페이로드(들)와 연관된 트랜션트 컴포넌트(들)의 값(들)은 휘발성 메모리(120)에 유지되므로, 프로세서(190)는 NVM에 저장된 페이로드(155)의 콘텐츠들을 복원할 수 있다. 예컨대, 보안 프로세싱 서브시스템(110)는, NVM(150)에 저장된 페이로드들(155a 내지 155n)의 각각의 페이로드의 트랜션트 컴포넌트들(270a 내지 270n)의 개개의 트랜션트 컴포넌트를 연관시키는 룩업 테이블을 유지하도록 구성될 수 있다. 룩업 테이블은, NVM(150)에 저장된 개개의 페이로드(155a 내지 155n)의 어드레스를, 그 페이로드(155a 내지 155n)를 보호하는 데 사용되는 ARC(트랜션트 컴포넌트들(270a 내지 270n) 중 일 컴포넌트 및 정적 베이스라인 컴포넌트(280)를 포함함)와 연관시킬 수 있다. 보안 프로세싱 서브시스템(110)은 룩업 테이블을 휘발성 메모리(120)에 저장할 수 있다. 보안 프로세싱 서브시스템(110)은 신뢰되지 않은 소프트웨어가 룩업 테이블 및 그 내부에 저장된 ARC 정보에 액세스하는 것을 방지할 수 있다.
[0050] 도 2에 예시된 구현에서, 복수의 페이로드들 각각과 연관된 ARC는 동일한 정적 베이스라인 컴포넌트(280)를 공유할 수 있다. 그러나, (도 2의 트랜션트 컴포넌트들(270a 내지 270n)으로 표현되는) 개개의 페이로드에 대한 트랜션트 컴포넌트(270)는 NVM(150)에 저장된 복수의 페이로드들(155a 내지 155n) 각각에 대해 상이할 수 있다. 보안 프로세싱 서브시스템(110)은 정적 베이스라인 컴포넌트(280)와 함께 휘발성 메모리(120)에 다수의 트랜션트 컴포넌트들(예컨대, 트랜션트 컴포넌트들(270a 내지 270n))을 저장할 수 있다. 페이로드 데이터는, NVM(150)에 기입되기 전에 휘발성 메모리(120)에 초기에 저장될 수 있다. 정적 베이스라인 컴포넌트(280)가 아직 계산되지 않았다면, 보안 프로세싱 서브시스템(110)의 프로세서(190)는 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)에 기반하여 정적 베이스라인 컴포넌트(280)를 결정하도록 구성될 수 있다.
[0051] 정적 베이스라인 값들은 저장되고, 도 1 및 도 2에 예시된 구현들에 의해 약간 상이하게 이용된다. 도 1에 예시된 예에서, 정적 베이스라인 컴포넌트는 휘발성 메모리(120)에 저장된 ARC(140)의 초기 값을 설정하는 데 사용된다. 반대로, 도 2에 예시된 예시적인 구현에서, 정적 베이스라인 컴포넌트는 휘발성 메모리(120)에서 정적 베이스라인 컴포넌트(280)로서 초기화된다. 프로세서(190)는, NVM(150)에 저장된 개개의 페이로드(155a 내지 155n)와 연관된 개개의 ARC를 결정하기 위해 트랜션트 컴포넌트들(270a 내지 270n)의 개개의 트랜션트 컴포넌트와 정적 베이스라인 컴포넌트(280)를 결합시킨다.
[0052] 도 1 또는 도 2에 예시된 구현들 중 어느 하나에 대한 정적 베이스라인 값은 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)로부터 도출될 수 있다. 정적 베이스라인 값은, 컴퓨팅 디바이스(100)가 재부팅되거나 전력공급받을 경우 그리고 임의의 다른 펌웨어 또는 소프트웨어 프로그램들이 실행되기 전에 결정될 수 있다. ARC(165)는, 정적 베이스라인 값이 결정될 경우 변경된다. 이러한 접근법은, 보안 프로세싱 서브시스템(110)에 의해 사용되는 카운터 값을 리세팅하려는 시도 시에 배터리 또는 다른 외부 전력 공급이 컴퓨팅 디바이스(100 또는 200)로부터 제거되는 경우 리플레이 공격이 스테이징(stage)되는 것을 좌절시킬 수 있다. 이러한 접근법은 또한, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC의 이전 값을 사용하여 이전에 암호화되었거나 다른 방식으로 보호되었던 NVM(150)의 민감한 콘텐츠들에 대한 액세스를 인가되지 않은 소프트웨어가 실행 및 획득하는 것을 방지할 수 있다. 정적 베이스라인 값의 결정은 펌웨어 또는 소프트웨어 업데이트들에 의해 변경될 수 없는 프로세서(190)의 ROM(read-only memory)에 구현되는 부트로더에 의해 수행될 수 있다. 아래에서 상세히 논의되는 도 4 내지 도 6에 예시된 예들은, 정적 베이스라인이 어떻게 계산될 수 있는지 및 일단 정적 베이스라인이 업데이트되면 ARC가 어떻게 증분될 수 있는지의 예들을 제공한다. 새로운 정적 베이스라인 값이 결정되도록 트리거링하는 이벤트가 발생할 때마다, 보안 프로세싱 서브시스템(110)의 프로세서(190)는 일회성 프로그래밍가능 메모리(125)에서 세팅되지 않았던 적어도 하나의 비트를 선택한다. 적어도 하나의 비트는 랜덤하게 선택될 수 있거나 또는 조합 알고리즘을 사용하여 선택될 수 있다. 프로세서(190)는, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)를 증분시키기 위해 적절한 퓨즈들, 안티퓨즈들, 또는 다른 컴포넌트들을 끊어뜨림으로써 일회성 프로그래밍가능 메모리(125)에서 선택된 적어도 하나의 비트의 값을 세팅한다.
[0053] 보안 프로세싱 서브시스템(110)의 프로세서(190)로 하여금 일회성 프로그래밍가능 메모리(125)의 ARC(165)를 업데이트하게 하는 적어도 하나의 트리거링 이벤트가 발생할 때까지 정적 베이스라인 컴포넌트(280)가 NVM(150)에 유지될 수 있다. 이들 트리거링 이벤트들은 도 1에 관해 위에서 논의된 트리거링 이벤트들과 유사할 수 있다. 일부 구현들에서, 보안 프로세싱 서브시스템(110)은 정적 베이스라인 컴포넌트(280)를 ARC(165)로서 일회성 프로그래밍가능 메모리(125)에 기입할 수 있다. 프로세서(190)는, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)로서 기입될 ARC를 생성하기 위해 (예컨대, 도 4 내지 도 6에 예시된 바와 같이) 정적 베이스라인 컴포넌트(280)와 트랜션트 컴포넌트(270)를 결합시키도록 구성될 수 있다. 프로세서(190)는, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)에 기입될 ARC를 생성하기 위해 트랜션트 컴포넌트(270)의 가장 최근에 결정된 값을 선택하도록 구성될 수 있거나, 또는 휘발성 메모리(120)에서 트랜션트 컴포넌트들(270a 내지 270n) 중 하나의 트랜션트 컴포넌트의 값을 선택할 수 있다.
[0054] 도 2에 예시된 보안 프로세싱 서브시스템(110)의 구현에서, 프로세서(190)는 각각의 페이로드(예컨대, 155a 내지 155n)에 대한 MAC 값(예컨대, MAC들(160a 내지 160n))을 컴퓨팅할 수 있다. 트랜션트 컴포넌트(예컨대, 트랜션트 컴포넌트(275a 내지 275n))는 또한 페이로드 및 MAC와 함께 저장될 수 있다. 보안 프로세싱 서브시스템(110)은 페이로드(155a 내지 155n) 및 MAC(160a 내지 160n)와 함께 트랜션트 컴포넌트(275a 내지 275n)로서 트랜션트 컴포넌트(270a 내지 270n)를 NVM(150)에 선택적으로 기입하도록 구성될 수 있다. 보안 프로세싱 서브시스템(110)은 휘발성 메모리(120) 둘 모두에 트랜션트 컴포넌트(270a 내지 270n)의 카피를 유지하고 NVM(150)에 트랜션트 컴포넌트(275a 내지 275n)를 저장하도록 구성될 수 있다. 페이로드들(155a 내지 155n)의 개개의 페이로드에 대한 MAC(160a 내지 160n)는 그 페이로드(155a 내지 155n)와 연관된 ARC를 사용하여 컴퓨팅될 수 있으며, 이는, 페이로드(155a 내지 155n)와 연관된 트랜션트 컴포넌트들(270a 내지 270n)의 개개의 트랜션트 컴포넌트와 정적 베이스라인 컴포넌트(280)의 비트들의 통합을 포함한다. MAC는 페이로드와 연관된 ARC의 적어도 일부를 사용하는 도 1에 관해 위에서 논의된 바와 같이 HMAC 알고리즘을 사용하여 컴퓨팅될 수 있다. 프로세서(190)는, NVM(150)에 저장된 MAC를 컴퓨팅하고 컴퓨팅된 MAC 값을 NVM(150)에 저장된 값과 비교하여, 페이로드가 NVM(150)에 기입되었던 이후로 페이로드가 손상되었는지 또는 조작되었는지를 결정하는 데 사용되는 것과 동일한 기법을 사용하여 페이로드들의 개개의 페이로드에 대한 MAC를 리컴퓨팅할 수 있다.
[0055] 도 3은 도 1 및 도 2에 예시된 컴퓨팅 디바이스들(100 및 200)을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(300)의 간략화된 블록 다이어그램이다. 도 3은 도 1 및 도 2에 묘사된 컴퓨팅 디바이스들(100 및 200)과 유사하거나 동일할 수 있는 예시적인 컴퓨팅 디바이스(300)의 다양한 컴포넌트들을 예시한 개략적인 다이어그램이다. 화살표들에 의해 예시된 바와 같이, 도 3의 개략적인 박스들에 예시된 다양한 특징부들/컴포넌트들/기능부들이 동작가능하게 함께 커플링되고, 즉 직접적으로 또는 (예컨대, 하나 이상의 중간 컴포넌트들을 통해) 간접적으로 연결된다. 컴퓨팅 디바이스(300)의 컴포넌트들은 하나 이상의 버스들(도시되지 않음)을 통해 서로 통신가능하게 연결될 수 있다. 다른 연결들, 메커니즘들, 특징부들, 기능부들 등이 휴대용 무선 디바이스를 동작가능하게 커플링 및 구성하기 위해 필요에 따라 제공 및 적응될 수 있다. 또한, 도 3의 예에 예시된 특징부들 또는 기능부들 중 하나 이상이 추가적으로 세분될 수 있거나, 또는 도 3에 예시된 특징부들 또는 기능부들 중 2개 이상이 조합될 수 있다. 부가적으로, 도 3에 예시된 특징부들 또는 기능부들 중 하나 이상이 배제될 수 있다.
[0056] 도시된 바와 같이, 컴퓨팅 디바이스(300)는, 하나 이상의 안테나들(302)에 연결될 수 있는 하나 이상의 로컬 영역 네트워크 트랜시버들(306)을 포함할 수 있다. 하나 이상의 로컬 영역 네트워크 트랜시버들(306)은, WLAN(Wireless Local Access Network) 액세스 포인트들 중 하나 이상과 통신하고 그리고/또는 그들로의/로부터의 신호들을 검출하기 위한 그리고/또는 네트워크 내의 다른 무선 디바이스들과 직접적으로 통신하기 위한 적합한 디바이스들, 회로들, 하드웨어, 및/또는 소프트웨어를 포함한다. 로컬 영역 네트워크 트랜시버(들)(306)는 하나 이상의 무선 액세스 포인트들과 통신하기에 적합한 WiFi(802.11x) 통신 트랜시버를 포함할 수 있다. 또한 또는 대안적으로, 로컬 영역 네트워크 트랜시버(들)(306)는 다른 타입들의 로컬 영역 네트워크들, 개인 영역 네트워크들(예컨대, Bluetooth
Figure pct00001
무선 기술 네트워크) 등과 통신하도록 구성될 수 있다. 부가적으로 또는 대안적으로, 하나 이상의 다른 타입들의 단거리 무선 네트워킹 기술들, 예컨대, Ultra Wide Band, ZigBee, 무선 USB 등이 사용될 수 있다.
[0057] 컴퓨팅 디바이스(300)는, 하나 이상의 안테나들(302)에 연결될 수 있는 하나 이상의 광역 네트워크 트랜시버(들)(304)를 포함할 수 있다. 광역 네트워크 트랜시버(304)는, 예컨대, WWAN 액세스 포인트들 중 하나 이상과 통신하고 그리고/또는 그들로부터의 신호들을 검출하기 위한 그리고/또는 네트워크 내의 다른 무선 디바이스들과 직접적으로 통신하기 위한 적합한 디바이스들, 회로들, 하드웨어, 및/또는 소프트웨어를 포함할 수 있다. 광역 네트워크 트랜시버(들)(304)는 무선 기지국들의 CDMA 네트워크와 통신하기에 적합한 CDMA 통신 시스템을 포함할 수 있다. 또한, 또는 대안적으로, 무선 통신 시스템은, 예컨대, TDMA, GSM, WCDMA, LTE 등과 같은 다른 타입들의 셀룰러 텔레포니(telephony) 네트워크들을 포함할 수 있다. 부가적으로 또는 대안적으로, 예컨대, WiMax(802.16) 등을 포함하는 하나 이상의 다른 타입들의 무선 네트워킹 기술들이 사용될 수 있다.
[0058] 일부 실시예들에서, SPS(satellite positioning system) 수신기(또한, GNSS(global navigation satellite system) 수신기로 지칭됨)(308)가 또한, 컴퓨팅 디바이스(300)에 포함될 수 있다. SPS 수신기(308)는 위성 신호들을 수신하기 위해 하나 이상의 안테나들(302)에 연결될 수 있다. SPS 수신기(308)는 SPS 신호들을 수신 및 프로세싱하기 위한 임의의 적합한 하드웨어 및/또는 소프트웨어를 포함할 수 있다. SPS 수신기(308)는, 다른 시스템들로부터 적절하게 정보를 요청할 수 있으며, 임의의 적합한 SPS 절차에 의해 획득된 측정들을 부분적으로 사용하여 컴퓨팅 디바이스(300)의 포지션을 결정하기 위해 필요한 컴퓨테이션들을 수행할 수 있다.
[0059] 외부 전력 소스(385)는 컴퓨팅 디바이스(300)의 컴포넌트들에 전기 전력을 제공할 수 있는 배터리 또는 다른 디바이스를 포함할 수 있다. 외부 전력 소스(385)는 컴퓨팅 디바이스로부터 착탈가능할 수 있다. 외부 전력 소스(385)는, 컴퓨팅 디바이스(300)의 사용자에 의해 제거되고 다른 외부 전력 소스(385)와 교환될 수 있는 착탈가능 배터리 또는 다른 전력 소스를 포함할 수 있다. 예컨대, 컴퓨팅 디바이스(300)의 사용자는, 전력 소스가 고갈되거나 디바이스의 사용자가 컴퓨팅 디바이스(300)를 강제로 재부팅하기를 원할 때, 외부 전력 소스(385)를 다른 외부 전력 소스(385)와 교환할 수 있다.
[0060] 컴퓨팅 디바이스(300)는 내부 전력 소스(395)를 포함할 수 있다. 외부 전력 소스(385)로부터의 전력이 손실되거나 또는 외부 전력 소스(385)에 의해 제공되는 전력의 레벨이 프로세서(310)가 동작할 수 있게 할 레벨 아래로 떨어지는 이벤트에서, 내부 전력 소스(395)는, 프로세서(310) 또는 적어도 프로세서(310)의 컴포넌트들, 이를테면 TEE(390) 및/또는 일회성 프로그래밍가능 메모리(325), 휘발성 메모리(392), 및 메모리(314)에 전력을 제공할 수 있는 2차 전력 소스로서 사용될 수 있다. 내부 전력 소스(395)는, 외부 전력 소스(385)로부터의 전력이 손실되는 이벤트에서 적어도 짧은 시간 기간 동안 프로세서(310) 및 메모리(314)에 전력공급할 수 있는 전기 전력을 저장할 수 있는 커패시터, 배터리, 또는 다른 디바이스를 포함할 수 있다. 내부 전력 소스(395)는, 휘발성 메모리(392)에 저장된 현재 ARC(anti-replay counter) 값들(예컨대, ARC(140), 트랜션트 컴포넌트들(270a 내지 270n), 및/또는 정적 베이스라인 컴포넌트(280))을 일회성 프로그래밍가능 메모리(325)에 기입하기에 충분한 전력을 프로세서(310)에 제공하여, 컴퓨팅 디바이스(300)가 전력을 손실하는 것으로 인해 ARC 값이 손실되지 않도록 구성될 수 있다.
[0061] 도 3에 추가로 예시된 바와 같이, 예시적인 컴퓨팅 디바이스(300)는 제어기/프로세서(310)에 커플링된 하나 이상의 센서들(312a 내지 312g)을 포함한다. 예컨대, 센서들(312a 내지 312g)은, (광역 네트워크 트랜시버(들)(304), 로컬 영역 네트워크 트랜시버(들)(306), 및/또는 SPS 수신기(308)에 의해 수신된 신호들로부터 도출되는 모션 데이터와는 독립적인) 상대적인 움직임 및/또는 배향 정보를 제공하기 위한 모션 센서들을 포함할 수 있다. 제한이 아닌 예로서, 모션 센서들은 가속도계(312a), 자이로스코프(312b), 및 지자기(자력계) 센서(312c)(예컨대, 컴파스)를 포함할 수 있으며, 이들 중 임의의 것은 MEMS(micro-electro-mechanical-system)에 기반하거나 몇몇 다른 기술에 기반하여 구현될 수 있다. 하나 이상의 센서들(312a 내지 312g)은 물리적 침입 센서(312d), 온도계(예컨대, 서미스터(thermistor))(312e), 오디오 센서(312f)(예컨대, 마이크로폰) 및/또는 다른 센서들을 더 포함할 수 있다. 하나 이상의 센서들(312a 내지 312g)의 출력은, 저장 또는 추가적인 프로세싱을 위해 (광역 네트워크 트랜시버(304) 및/또는 로컬 영역 네트워크 트랜시버(306)를 통해, 또는 컴퓨팅 디바이스(300)의 일부 네트워크 포트 또는 인터페이스를 통해) 원격 디바이스 또는 서버에 송신되는 (컴퓨팅 디바이스(300)와 통신하는 노드들에 대한 안테나 정보 및/또는 위치 데이터와 같은 데이터와 함께) 데이터의 일부로서 제공될 수 있다(예컨대, 컴퓨팅 디바이스(300)와 통신하는 AP에 대한 안테나 정보는, 모바일 디바이스의 센서들에 의해 측정된 센서 데이터를, 다양한 무선 노드들에 대한 안테나 정보 및 하나 이상의 무선 디바이스들에 의해 이전에 획득되었던 연관된 센서 데이터를 포함하고 서버에 유지되는 레코드들과 매칭함으로써 추론될 수 있음). 도 3에 추가적으로 도시된 바와 같이, 일부 실시예들에서, 하나 이상의 센서들(312a 내지 312g)은 또한, 디스플레이 또는 스크린과 같은 사용자 인터페이스 디바이스 상에서 디스플레이될 수 있고 조명의 주변 레벨 및/또는 UV 및/또는 적외선 조명의 존재 및 레벨들 및 컬러들에 관련된 정보를 결정하기 위해 추가적으로 사용될 수 있는 스틸 또는 이동 이미지들(예컨대, 비디오 시퀀스)을 생성할 수 있는 카메라(312g)(예컨대, CCD(charge-couple device)-타입 카메라, CMOS-기반 이미지 센서 등)를 포함할 수 있다.
[0062] 물리적 침입 센서는 컴퓨팅 디바이스(300)에 대한 물리적 탬퍼링(tampering)을 검출하는 것에 대한 응답으로 신호를 출력하도록 구성될 수 있다. 컴퓨팅 디바이스(100)에 대한 물리적 탬퍼링은, 컴퓨팅 디바이스(300)의 사용자가 컴퓨팅 디바이스(300)의 배터리 또는 다른 외부 전력 소스를 제거하려고 시도하고 있고, 보안 프로세싱 시스템에 대한 전력 손실이 임박할 수 있다는 것을 표시할 수 있다. 프로세서(310)는 물리적 침입 센서(312d)로부터의 신호들을 모니터링하고, 물리적 침입 센서(312d)로부터의 그러한 신호에 대한 응답으로 휘발성 메모리(392)로부터 일회성 프로그래밍가능 메모리로 ARC를 기입하도록 구성될 수 있다. 외부 전력 소스가 컴퓨팅 디바이스(300)로부터 제거되는 이벤트에서 전력을 제공하기 위한 2차 내부 전력 소스, 이를테면 내부 전력 소스(195)를 보안 프로세싱 서브시스템이 포함하지 않는 경우, 물리적 침입 센서가 포함될 수 있다.
[0063] 물리적 침입 센서(312d)는, 컴퓨팅 디바이스(300)의 케이스가 열리거나 또는 외부 전력 소스(185)가 배치된 구획이 열리면 트리거링되고, 케이스 또는 구획이 열리는 것에 대한 응답으로 신호를 생성하도록 구성된 기계식 스위치를 포함할 수 있다. 물리적 침입 센서(312d)는 또한, 컴퓨팅 디바이스(300)의 케이스가 열리거나 또는 외부 전력 소스(185)가 배치된 구획이 열리면, 컴퓨팅 디바이스(300)로 진입하는 광을 검출할 수 있고, 광 레벨의 변화를 표시하는 신호를 생성할 수 있는 광 센서를 포함할 수 있다. 물리적 침입 센서(312d)는 또한, 컴퓨팅 디바이스(300)의 사용자가 물리적 침입 센서(312d)를 터치하거나 센서 위치에 근접하게 있는 것에 대한 응답으로 신호를 생성하도록 구성된 용량성 센서를 포함할 수 있으며, 그 신호는, 사용자가 컴퓨팅 디바이스(300)로부터 외부 전력 소스(185)를 제거할 수 있다는 것을 표시할 수 있다. 컴퓨팅 디바이스(300)의 외부 전력 소스(185)가 제거될 수 있다는 것을 표시할 수 있는 이벤트에 대한 응답으로 신호를 생성하기 위해 다른 타입들의 센서들이 또한 사용될 수 있다.
[0064] 프로세서(들)(또한, 제어기로 지칭됨)(310)는 로컬 영역 네트워크 트랜시버(들)(306), 광역 네트워크 트랜시버(들)(304), SPS 수신기(308) 및 하나 이상의 센서들(312)에 연결될 수 있다. 프로세서는, 프로세싱 기능들 뿐만 아니라 다른 계산 및 제어 기능을 제공하는 하나 이상의 마이크로프로세서들, 마이크로제어기들, 및/또는 디지털 신호 프로세서들을 포함할 수 있다. 프로세서(310)는, 모바일 디바이스 내에서 프로그래밍된 기능을 실행하기 위한 데이터 및 소프트웨어 명령들을 저장하기 위한 비-일시적인 컴퓨터 판독가능 저장 매체들(예컨대, 메모리(314))에 커플링될 수 있다. 메모리(314)는 (예컨대, 동일한 IC 패키지 내의) 프로세서(310)에 내장(on-board)될 수 있고, 그리고/또는 메모리는 프로세서에 대한 외부 메모리이고 데이터 버스를 통해 기능적으로 커플링될 수 있다. 메모리(314)는 실행가능 프로그램 코드를 저장하기 위하여 프로세서(310)에 의해 사용될 수 있는 비-휘발성 컴퓨터 판독가능 매체들을 포함할 수 있으며, 그 매체들은 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 NVM(150)을 구현하는 데 사용될 수 있다. 프로세서(310)는 또한, 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 휘발성 메모리(120)를 구현하는 데 사용될 수 있는 휘발성 메모리(392)에 커플링될 수 있다. 휘발성 메모리(392)는, 메모리로의 전력이 손실될 경우, 내부에 저장된 콘텐츠들을 손실할 컴퓨터-판독가능한 메모리를 포함한다. 프로세서(310)는 또한, 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 NVM(127)을 구현하는 데 사용될 수 있고 EXP(129)와 같은 실행가능 프로그램 코드를 저장하는 데 사용될 수 있는 비-휘발성 메모리(도시되지 않음)를 포함할 수 있다.
[0065] 다수의 소프트웨어 유닛들 및 데이터 테이블들은 메모리(314)에 상주할 수 있으며, 원격 디바이스들/노드들 둘 모두와의 통신들을 관리하고 포지셔닝 결정 기능을 수행하며 그리고/또는 디바이스 제어 기능을 수행하기 위하여 프로세서(310)에 의해 이용될 수 있다. 도 3에 예시된 바와 같이, 일부 실시예들에서, 메모리(314)는 사용자 인증 유닛(316) 및 소프트웨어 인증 유닛(318)을 포함할 수 있다. 유닛들 및/또는 데이터 구조들의 기능은 컴퓨팅 디바이스(300)의 구현에 의존하여 상이한 방식들로 조합, 분리, 및/또는 구조화될 수 있다. 예컨대, 사용자 인증 유닛(316) 및/또는 소프트웨어 인증 유닛(318)은 각각, 하드웨어-기반 구현으로서 적어도 부분적으로 실현될 수 있다. 메모리(314)는 또한, 컴퓨팅 디바이스(300) 상에서 하나 이상의 애플리케이션들, 서비스들, 프로그램들 등을 구현하는 데 사용될 수 있는 EXP(executable program code)(320)를 포함할 수 있다. EXP(320)는 프로세서(310)에 의해 실행될 수 있으며, 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 NVM(150)에 저장된 EXP(128)를 구현하는 데 사용될 수 있다.
[0066] 사용자 인증 유닛(316) 및/또는 소프트웨어 인증 유닛(318)은 컴퓨팅 디바이스(300)의 프로세서(310) 상에서 구동되는 프로세스들일 수 있다. 사용자 인증 유닛(316)은 다양한 수단을 사용하여 컴퓨팅 디바이스(300)의 사용자를 인증하도록 구성될 수 있다. 사용자 인증 유닛(316)은, 컴퓨팅 디바이스의 인가된 사용자에게만 알려져야 하는 패스워드, PIN, 스와이프 패턴, 또는 다른 그러한 입력을 사용자가 입력할 것을 요구함으로써 사용자를 인증하도록 구성될 수 있다. 사용자 인증 유닛(316)은 센서들(312) 중 하나 이상으로부터 획득된 생체인식 데이터를 사용하여 사용자를 인증하도록 구성될 수 있다. 컴퓨팅 디바이스(300)는, 컴퓨팅 디바이스(300)의 사용자의 하나 이상의 신체적 특성들을 스캐닝하도록 구성된 센서, 이를테면 컴퓨팅 디바이스(300)의 사용자를 인증하는 데 사용될 수 있는 사용자의 홍채 및/또는 망막의 이미지, 얼굴 특징들, 및/또는 다른 해부학적 정보를 캡처하도록 구성된 센서를 포함할 수 있다. 모바일 디바이스의 센서들(312a 내지 312g)은 또한, 컴퓨팅 디바이스(300)의 현재 사용자의 음성 특성들이 모바일 디바이스의 인가된 사용자의 음성 특성들과 매칭하는지 여부를 결정하도록 프로세서(190)에 의해 분석될 수 있는 사용자에 대한 음성 데이터를 수집하도록 구성된 센서를 포함할 수 있다. 컴퓨팅 디바이스(300)의 사용자가 컴퓨팅 디바이스(300)의 인가된 사용자가 아니라고 결정되면, 사용자 인증 유닛(316)은, 컴퓨팅 디바이스의 사용자가 컴퓨팅 디바이스(300)의 인가된 사용자가 아니라는 표시를 프로세서(310)에 제공하도록 구성될 수 있다. 프로세서(310)는, 그러한 표시에 대한 응답으로 일회성 프로그래밍가능 메모리(325)에 저장된 ARC를 손상시키고 휘발성 메모리(392)에 저장된 임의의 ARC 컴포넌트들을 클리어시키도록 구성될 수 있다.
[0067] 소프트웨어 인증 유닛(318)은 컴퓨팅 디바이스(300)의 펌웨어 및/또는 소프트웨어에 대한 업데이트들을 인증하도록 구성될 수 있다. 도 1에 관해 논의된 바와 같이, 소프트웨어 및/또는 펌웨어 업데이트들은 하나 이상의 이미지 파일들로서 수신될 수 있다. 펌웨어 및/또는 소프트웨어에 대한 업데이트들은 다양한 소스들로부터 수신될 수 있다. 펌웨어 및/또는 소프트웨어의 합법적인 소스들은, 디바이스에 보조금을 지급(subsidize)했고 그리고/또는 디바이스의 배치 및/또는 구성에 대한 제어를 행사하는 OEM(original equipment manufacturer)들, 운영 체제 및/또는 디바이스 드라이버 제공자들, 네트워크 제공자들 및/또는 기업 제공자들을 포함할 수 있다(그러나, 이에 제한되지 않음). 악성 파티들은 디바이스 상에 악성 펌웨어 및/또는 소프트웨어 업데이트들을 설치하려고 시도함으로써 또는 악성 펌웨어 및/또는 소프트웨어 업데이트들을 설치하도록 디바이스의 사용자를 속임으로써 컴퓨팅 디바이스(300)에 대한 제어를 획득하려고 시도할 수 있다.
[0068] 소프트웨어 인증 유닛(318)은 컴퓨팅 디바이스(300)와 연관된 펌웨어 및/또는 소프트웨어에 대한 업데이트들을 인증하도록 구성될 수 있다. 이러한 맥락에서 용어 "와 연관된"의 사용은, 컴퓨팅 디바이스(300)의 비-휘발성 메모리에 설치되고, 컴퓨팅 디바이스(300)의 프로세서(310)에 의한 실행을 위해 휘발성 메모리(392)로 로딩될 수 있는 소프트웨어 및/또는 펌웨어를 지칭한다. 소프트웨어 및/또는 펌웨어는 TEE(380)에 의해 실행될 수 있는 신뢰된 펌웨어 또는 소프트웨어일 수 있다.
[0069] 소프트웨어 인증 유닛(318)은 HUK, 이를테면 도 1 및 도 2에 관해 위에서 논의된 HUK(199)를 사용하고, 업데이트되는 소프트웨어와 연관된 MAC 값을 컴퓨팅하며, 그 값을, 펌웨어 및/또는 소프트웨어 업데이트를 포함하는 이미지 파일에 포함된 MAC 값과 비교하도록 구성될 수 있다. 컴퓨팅된 MAC 값과 이미지 파일로부터의 값이 매칭하지 않으면, 소프트웨어 인증 유닛(318)은 업데이트가 인증되지 않았다는 프로세서(310)로의 표시를 생성하도록 구성될 수 있다. 프로세서(310)는, 그러한 표시에 대한 응답으로 일회성 프로그래밍가능 메모리(325)에 저장된 ARC를 손상시키고 휘발성 메모리(392)에 저장된 임의의 ARC 컴포넌트들을 클리어시키도록 구성될 수 있다.
[0070] 프로세서(310)는 TEE(trusted execution environment)(380)를 포함할 수 있고 그리고/또는 컴퓨팅 디바이스(300)는 보안 엘리먼트(390)를 포함할 수 있다. 신뢰된 실행 환경(380) 및/또는 보안 엘리먼트(390)는 도 1에 예시된 보안 프로세싱 서브시스템(110)을 구현하는 데 사용될 수 있고, 외부 NVM(150)은 컴퓨팅 디바이스(300)의 메모리(314) 또는 다른 메모리(도시되지 않음)에 의해 구현될 수 있다.
[0071] 프로세서(310)는 또한 신뢰된 실행 환경(380)을 포함할 수 있다. 신뢰된 실행 환경(380)은, 운영 체제 및/또는 애플리케이션들(이를테면, 소프트웨어 인증 유닛(318)의 것들)이 실행될 수 있는 풍부한(rich) 실행 환경으로부터 분리된 환경에서 민감한 데이터를 프로세싱 및 저장하는 데 사용될 수 있는 프로세서(310)의 안전한 영역으로서 구현될 수 있다. 신뢰된 실행 환경(380)은, 내부에 저장된 민감한 데이터의 기밀성, 무결성 및 보호를 시행함으로써 민감한 데이터에 대한 엔드-투-엔드 보안을 제공하는 신뢰된 애플리케이션들을 실행하도록 구성될 수 있다. 신뢰된 실행 환경(380)은 암호화 키들, 안티-리플레이 카운터 데이터, 및/또는 다른 민감한 데이터를 저장하는 데 사용될 수 있다. 프로세서(310)는 또한, 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125)를 구현하는 데 사용될 수 있는 일회성 프로그래밍가능 메모리를 포함할 수 있다.
[0072] 프로세서(310)는 또한, 도 1 및 도 2에 예시된 컴퓨팅 디바이스들(100 및 200)의 일회성 프로그래밍가능 메모리(125)를 구현할 수 있는 일회성 프로그래밍가능 메모리(325)를 포함할 수 있다. 일회성 프로그래밍가능 메모리(325)는, 메모리로의 전력이 손실되더라도, 내부에 저장된 데이터를 유지하는 영구 메모리를 포함한다. 일회성 프로그래밍가능 메모리(325)는 데이터의 비트를 각각 표현하는 복수의 퓨즈들을 포함할 수 있고, 특정한 비트의 값은 대응하는 퓨즈를 끊어뜨림으로써 세팅될 수 있다. 퓨즈의 값은, 일단 세팅되면 변화될 수 없다. 더욱이, 다른 타입들의 일회성 프로그래밍가능 메모리(325)가 사용될 수 있다. 일회성 프로그래밍가능 메모리(325)는, 1회 세팅될 수 있고 퓨즈들 대신 데이터의 비트를 표현하는 데 사용될 수 있는 안티퓨즈들 또는 다른 컴포넌트들을 포함하는 수 있다.
[0073] 컴퓨팅 디바이스(300)는 보안 엘리먼트(390)(또한, 본 명세서에서 신뢰된 컴포넌트로 지칭됨)를 포함할 수 있다. 컴퓨팅 디바이스(300)는 신뢰된 실행 환경(380)에 부가하여 또는 그 대신 보안 엘리먼트(390)를 포함할 수 있다. 보안 엘리먼트(390)는, 보안 애플리케이션들 및 그러한 애플리케이션들과 연관된 기밀 데이터를 실행하는 데 사용될 수 있는 자율적인 탬퍼-방지 하드웨어를 포함할 수 있다. 보안 엘리먼트(390)는 암호화 키들, 안티-리플레이 카운터 데이터, 및/또는 다른 민감한 데이터를 저장하는 데 사용될 수 있다. 보안 엘리먼트(390)는 또한, 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 일회성 프로그래밍가능 메모리(125)를 구현하는 데 사용될 수 있는 일회성 프로그래밍가능 메모리를 포함할 수 있다. 보안 엘리먼트(390)는 NFC(Near Field Communication) 태그, SIM(Subscriber Identity Module) 카드, 또는 데이터를 안전하게 저장하는 데 사용될 수 있는 다른 타입의 하드웨어 디바이스를 포함할 수 있다. 보안 엘리먼트(390)는 영구적인 또는 반-영구적인 방식으로 컴퓨팅 디바이스(300)의 하드웨어와 통합될 수 있거나, 또는 일부 구현들에서, 데이터를 안전하게 저장하고 그리고/또는 애플리케이션들에 대한 보안 실행 환경을 제공하는 데 사용될 수 있는 컴퓨팅 디바이스(300)의 착탈가능 컴포넌트일 수 있다.
[0074] 컴퓨팅 디바이스(300)는, 컴퓨팅 디바이스(300)와의 사용자 상호작용을 허용하는 마이크로폰/스피커(352), 키패드(354), 및 디스플레이(356)와 같은 적합한 인터페이스 시스템들을 제공하는 사용자 인터페이스(350)를 더 포함할 수 있다. (오디오 센서(312f)와 동일하거나 상이할 수 있는) 마이크로폰/스피커(352)는 (예컨대, 광역 네트워크 트랜시버(들)(304) 및/또는 로컬 영역 네트워크 트랜시버(들)(306)를 사용하는) 음성 통신 서비스들을 위해 제공된다. 키패드(354)는 사용자 입력을 위한 적합한 버튼들을 포함할 수 있다. 디스플레이(356)는, 예컨대, 백릿(backlit) LCD(liquid crystal display)와 같은 적합한 디스플레이를 포함할 수 있으며, 부가적인 사용자 입력 모드들을 위한 터치 스크린 디스플레이를 더 포함할 수 있다.
[0075] 도 1 및 도 2에 예시된 컴퓨팅 디바이스들의 프로세서(190) 또는 컴퓨팅 디바이스(300)의 프로세서(310)는, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하기 위한 수단, 및 도 1 내지 도 3에 관해 위에서 논의된 바와 같이, 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키기 위한 수단을 제공한다.
[0076] 프로세서(190 또는 310)는 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하기 위한 수단을 제공하며, 그 수단은, 집적 회로 상의 소프트웨어에 대한 변화를 검출하기 위한 수단; 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로 사용자 또는 소프트웨어 중 적어도 하나가 진본인지 여부를 결정하기 위한 수단; 및 사용자 또는 소프트웨어 중 적어도 하나가 진본이 아니라는 것에 대한 응답으로, 집적 회로 상의 소프트웨어에 대한 변화가 인가되지 않았다고 결정하기 위한 수단을 포함한다. 사용자 인증 유닛(316) 및/또는 소프트웨어 인증 유닛(318)은 또한, 집적 회로 상의 소프트웨어에 대한 변화를 검출하는 것에 대한 응답으로, 사용자 또는 소프트웨어 중 적어도 하나가 진본인지 여부를 결정하기 위한 수단을 제공한다. 프로세서(190) 및 프로세서(310)는 또한, 사용자가 인증되었는지 여부를 결정하기 위한 수단, 및 사용자가 인증되지 않았다는 것에 대한 응답으로 사용자를 인증하기 위한 적어도 하나의 인증 절차를 수행하기 위한 수단을 제공한다. 사용자 인증 유닛(316)은 또한, 사용자가 인증되었는지 여부를 결정하기 위한 수단, 및 사용자가 인증되지 않았다는 것에 대한 응답으로 사용자를 인증하기 위한 적어도 하나의 인증 절차를 수행하기 위한 수단을 제공할 수 있다.
[0077] 프로세서(190) 또는 프로세서(310)는 소프트웨어를 인증하기 위한 수단을 제공하며, 그 수단은, 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 CMAC(cipher-based message authentication code) 알고리즘을 소프트웨어에 적용함으로써 소프트웨어에 대한 MAC(message authentication code)를 결정하기 위한 수단, 및 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 이전에 결정된 MAC와 MAC를 비교하기 위한 수단을 포함한다. 사용자 인증 유닛(316)은 또한, 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 CMAC(cipher-based message authentication code) 알고리즘을 소프트웨어에 적용함으로써 소프트웨어에 대한 MAC(message authentication code)를 결정하기 위한 수단, 및 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 이전에 결정된 MAC와 MAC를 비교하기 위한 수단을 제공할 수 있다.
[0078] 프로세서(190) 또는 프로세서(310)는 ARC 값을 손상시키기 위한 수단을 제공하며, 그 수단은, 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하기 위한 수단을 포함한다. 프로세서(190 또는 310)는 또한, 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하기 위한 수단, 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하기 위한 수단, 및 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하기 위한 수단을 제공한다. 프로세서(190) 또는 프로세서(310)는 또한, 일회성 프로그래밍가능 메모리의 비트들의 제1 수를 결정하기 위한 수단을 제공하며, 그 수단은, 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하기 위한 수단을 포함한다. 프로세서(190) 또는 프로세서(310)는 또한, 일회성 프로그래밍가능 메모리의 비트들의 어느 비트들이 세팅될지를 결정하기 위한 수단을 제공하며, 그 수단은, 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하기 위한 수단을 포함한다.
[0079] 도 4 내지 도 6은, 도 1의 ARC(140) 또는 도 2의 트랜션트 컴포넌트들(270a 내지 270n) 및 정적 베이스라인 컴포넌트(280)를 포함할 수 있는, 휘발성 메모리(120)에 저장된 ARC를 표현하는 데 사용될 수 있는 예시적인 퓨즈 맵들(405, 410, 415, 420, 425, 430)을 예시한다. 도 1에 예시된 예시적인 구현에서, 단일 ARC(140)가 휘발성 메모리(120)에 저장된다. 반대로, 도 2에 예시된 예시적인 구현에서, 트랜션트 컴포넌트 및 정적 베이스라인 컴포넌트를 포함하는 다수의 ARC들은, NVM(150)에 저장된 페이로드들(155a 내지 155n) 각각에 대해 휘발성 메모리에 저장된다. 각각의 ARC는, ARC들 모두에 의해 공유되는 정적 베이스라인 컴포넌트(280), 및 NVM(150) 내의 특정한 페이로드(155a 내지 155n)에 특정한 트랜션트 컴포넌트(270a 내지 270n)로 구성된다.
[0080] 각각의 퓨즈 맵은 비트 값들의 어레이를 초기에 표현하며, 그 비트 값들은 그 비트와 연관된 특정한 퓨즈, 안티퓨즈, 또는 다른 컴포넌트가 일회성 프로그래밍가능 메모리(125)에서 끊어졌는지 여부를 표현한다. 퓨즈 맵들은 1차원 또는 다차원 어레이들을 사용하여 표현될 수 있으며, 여기서 퓨즈 맵들(405, 410, 415, 420, 425, 430)은 2차원 어레이들이다. 퓨즈 맵들은 휘발성 메모리(120)에 저장될 수 있으며, 프로세서(190)는, 데이터가 외부 NVM(150)에 기입될 때마다 휘발성 메모리(120)에 액세스하고 휘발성 메모리(120)에 저장된 ARC를 증분시키도록 구성될 수 있다. 업데이트된 ARC의 적어도 일부는, 데이터가 외부 NVM(150)에 기입되었던 이후로 페이로드(155)(외부 NVM(150)에 기입된 데이터)가 수정되지 않았다고 결정하는 데 사용될 수 있는 MAC(160)를 결정하기 위해 사용될 수 있다. 도 2에 예시된 구현에서, 각각의 페이로드(155a 내지 155n)는 그 자신의 개개의 MAC(160a 내지 160n) 및 트랜션트 컴포넌트(275a 내지 275n)와 연관된다. 개개의 트랜션트 컴포넌트(275a 내지 275n)는, 개개의 트랜션트 컴포넌트(275a 내지 275n)가 연관되는 개개의 페이로드(155a 내지 155n)에 대한 MAC(160a 내지 160n)를 결정하기 위해 정적 베이스라인 컴포넌트(280)와 결합될 수 있다.
[0081] 이들 기법들은, ARC가 MAC를 생성하는 데 사용되므로 리플레이 공격들을 방지하는 데 사용될 수 있다. 공격자가 오래된 MAC 및 페이로드(155)의 카피를 외부 NVM(150)에 도입했다면, 보안 프로세싱 서브시스템(110)은, 페이로드(155)와 함께 저장된 MAC(160)가 페이로드에 대해 컴퓨팅된 MAC의 예상된 값과 매칭하지 않을 것이기 때문에, 페이로드(155)가 수정 또는 손상되었다고 인식할 것이다. 보안 프로세싱 서브시스템(110)은 현재 ARC를 사용하여 페이로드(155)의 MAC를 계산하고, MAC 값을 MAC(160)와 비교할 수 있다. 2개의 MAC들이 매칭되지 않으면, 외부 NVM(150) 내의 데이터는 손상 또는 수정되었다.
[0082] 도 4는 본 명세서에 개시된 기법들에 따른 ARC(anti-replay counter)를 유지하기 위한 넌스-기반 기법에 대한 퓨즈 맵들을 예시한 다이어그램이다. 도 4에 예시된 기법은 도 1 및 도 2에 예시된 컴퓨팅 디바이스들(100 및 200)에 의해 구현될 수 있다. 도 4에 예시된 기법은 일련의 퓨즈 맵들, 즉 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에서 퓨즈들의 어레이를 표현하는 퓨즈 맵(405), 퓨즈 맵(410), 퓨즈 맵(415), 퓨즈 맵(420), 퓨즈 맵(425), 및 퓨즈 맵(430)을 사용하여 예시된다. 퓨즈 맵 내의 각각의 정사각형은 대응하는 비트 값을 세팅하도록 끊어질 수 있는 하나의 퓨즈 또는 안티퓨즈를 표현한다. 이미 세팅되었던 비트 값들은 그 정사각형에서 수 "1"에 의해 표현된다. 그러나, 다른 구현들에서, 비트 값들은 제로의 비트 값에 의해 표현될 수 있다. 정사각형의 음영은 그 특정한 비트가 어떻게 세팅되었는지를 표현한다. 도 4에 예시된 예에서, 솔리드하게(solidly) 음영된 배경을 갖는 정사각형은 비트가 (ARC)와 연관된 정적 베이스라인 값의 일부로서 세팅되었다는 것을 표시하고, 체커보드(checkerboard) 패턴으로 음영된 배경을 갖는 정사각형은 비트가 롤백(rollback) 공격을 방지하도록 선택되었던 정적 베이스라인에 대한 부가로서 세팅되었다는 것을 표시하며, 다이아몬드 패턴으로 음영된 배경을 갖는 정사각형은 비트가 랜덤 선택의 일부로서 세팅되었다는 것을 표시한다.
[0083] 도 4에 예시된 기법은, 일회성 프로그래밍가능 메모리(125)에 ARC를 유지하는 데 사용되는 퓨즈들의 수를 감소시킬 수 있다. 위에서 논의된 바와 같이, 컴퓨팅 디바이스(100)가 배터리 또는 다른 전력 소스로부터 전력을 수신하고 있는 동안, ARC는 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 유지될 수 있다. 휘발성 메모리(120)에 저장된 ARC는, 데이터가 외부 NVM(150)에 기입될 때마다 증분될 수 있다. 전력 소스가 고갈되었을 경우 그리고/또는 물리적 침입 센서(312d)가 컴퓨팅 디바이스(100)로의 물리적 침입을 검출할 경우(이는, 배터리 또는 다른 전력 소스가 컴퓨팅 디바이스(100)로부터 제거될 수 있다는 것을 표시함), 휘발성 메모리(120)에 유지되는 ARC는 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에 기입될 수 있다. 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)의 저장 용량은 통상적으로 사이즈가 제한되고 유한하다. 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에 포함된 퓨즈들의 수는, 보안 프로세싱 서브시스템(110)이 구현되는 집적 회로의 비용 및 사이즈 제한들로 인해 제한될 수 있다. 더욱이, 일회성 프로그래밍가능 메모리(125)는 1회만 프로그래밍될 수 있으며, 따라서 컴퓨팅 디바이스에서 사용될 수 있는 다른 타입들의 메모리와 같이 재사용될 수 없다.
[0084] 도 4에 예시된 프로세스는, 컴퓨팅 디바이스(100)가 전력공급받을 경우 시작할 수 있다. 컴퓨팅 디바이스(100)가 전력 차단되었을 시에, ARC에 대한 베이스라인 값은 일회성 프로그래밍가능 메모리(125)의 퓨즈들로 기입되었을 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서(190)는, 컴퓨팅 디바이스(100)가 전력공급받을 시에, 일회성 프로그래밍가능 메모리(125)에 액세스하여 내부에 저장된 ARC(165)를 판독하도록 구성될 수 있다. 퓨즈 맵(405)은, 일회성 프로그래밍가능 메모리(125)로 이전에 기입되었던 ARC 베이스라인 값을 포함하는 퓨즈들의 6x6 어레이를 표현한다. 도 4의 예에 예시된 퓨즈 맵의 사이즈 및 구성은, 본 명세서에 개시되고 있는 프로세스들을 예시하도록 의도되고, 이들 프로세스들을 특정 사이즈 또는 구성의 퓨즈 맵으로 제한하도록 의도되지 않는다. 퓨즈 맵들의 다른 사이즈들 및/또는 구성들(예컨대, 상이한 수들의 행들 및/또는 열들)이 사용될 수 있다. 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에 포함된 퓨즈들 또는 안티퓨즈들의 수는 도 4에 예시된 예와 상이할 수 있다(예컨대, 더 많거나 더 적음). 도 4 내지 도 6에 예시된 기법들은, 퓨즈들의 제한된 공급이 일회성 프로그래밍가능 메모리(125)에 기입되도록 ARC를 트리거링하는 물리적 침입 이벤트들 또는 작은 수의 전력 사이클들에서 소진되지 않도록, 일회성 프로그래밍가능 메모리(125)에서 이용가능한 제한된 수의 퓨즈들에 ARC를 저장하는 방식을 제공한다.
[0085] 예시적인 퓨즈 맵(405)은 정적 베이스라인 값으로서 이전에 세팅되었던 4개의 비트들을 갖는다. 정적 베이스라인 값은 도 4 내지 도 6에 예시된 기법들 중 하나를 사용하여 결정되었을 수 있거나 또는 ARC로서 초기에 사용되었던 선택된 시드 값이었을 수 있다. ARC를 저장하는 데 사용되는 일회성 프로그래밍가능 메모리(125)의 일부는 초기에는, 초기에 끊어진 퓨즈들 또는 안티퓨즈들 없이 비어있었을 수 있고, 퓨즈 맵(405)에 예시된 저장된 정적 베이스라인 값은, 휘발성 메모리(120)로부터 일회성 프로그래밍가능 메모리(125)로 기입되었던 ARC의 이전 값을 표현했었을 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서는 일회성 프로그래밍가능 메모리(125)에 액세스하고, 일회성 프로그래밍가능 메모리(125)로부터 퓨즈 맵 값들을 판독하며, 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 퓨즈 맵의 표현을 저장할 수 있다.
[0086] 일회성 프로그래밍가능 메모리(125)로부터 이전 베이스라인 값을 로딩한 이후, 보안 프로세싱 서브시스템(110)의 프로세서(190)는, 퓨즈 맵(405)과 비교하여 퓨즈 맵(410)에 예시된 바와 같이, 이전 베이스라인에 부가할 적어도 하나의 비트를 선택할 수 있다. 프로세서(190)는 아직 세팅되지 않았던 퓨즈 맵의 비트들로부터 적어도 하나의 비트를 랜덤하게 선택하도록 구성될 수 있다. 프로세서는, 새로운 정적 베이스라인 값을 설정하기 위해 일회성 프로그래밍가능 메모리(125)에서 선택되었던 하나 이상의 비트들과 연관된 퓨즈들을 끊어뜨리도록 구성될 수 있다. 새로운 베이스라인 값은, 공격자가 오래된 데이터를 외부 NVM(150)에 배치하고 보안 프로세싱 서브시스템(110)이 오래된 데이터를 프로세싱하게 하려고 시도하는 리플레이 공격을 방지한다. 도 1에 예시된 예를 참조하면, 외부 NVM(150)에 저장된 데이터는 페이로드(155) 및 MAC(160)를 포함한다. MAC(160)는 휘발성 메모리(120)에 저장된 현재 ARC를 사용하여 페이로드(155)에 대해 재계산될 수 있다. 데이터가 외부 NVM(150)에 기입될 때마다 휘발성 메모리(120)에 유지되는 ARC가 증분되기 때문에, 재계산된 MAC 및 MAC(160)의 값은 오래된 데이터가 외부 NVM(150)에 배치된다면 더 이상 매칭되지 않을 것이다.
[0087] 퓨즈 맵(410)은 또한 프로세스의 다른 양상을 예시한다. 적어도 하나의 부가적인 비트가 ARC의 랜덤 선택 컴포넌트로서 프로세서(190)에 의해 선택된다. 적어도 하나의 비트는, 휘발성 메모리(120)에 저장된 퓨즈 맵에서 세팅되지 않았던 퓨즈들로부터 선택된다. 도 4에 예시된 예에서, 랜덤 컴포넌트는 3개의 비트들을 포함하지만, 랜덤 컴포넌트는 더 많거나 더 적은 수의 비트들을 포함할 수 있다. 데이터가 외부 NVM(150)에 기입될 때마다, 랜덤 선택이 다시 선택된다. ARC의 랜덤 선택 부분은 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입되지 않는다. 랜덤 선택 부분은 휘발성 메모리(120)에 저장된 퓨즈 맵의 표현에만 유지된다.
[0088] 퓨즈 맵(415)은 데이터가 외부 NVM(150)에 기입되는 것에 대한 응답으로, 휘발성 메모리(120) 내의 퓨즈 맵(405)이 업데이트되는 일 예를 예시한다. 업데이트된 정적 베이스라인 값은, 일회성 프로그래밍가능 메모리(125)로부터 리트리브된 정적 베이스라인에 부가되었던 적어도 하나의 비트를 포함한다. 그러나, ARC의 랜덤하게 선택된 부분은 하나 이상의 비트들의 새로운 랜덤 선택에 의해 교체된다. 퓨즈 맵(415)에 예시된 예에서, 3개의 비트들은 업데이트된 정적 베이스라인의 일부가 아니었던 퓨즈 맵의 비트들로부터 랜덤하게 선택되었다. 데이터가 외부 NVM(150)에 기입될 경우 ARC의 랜덤 컴포넌트가 재결정될 때마다, 업데이트된 정적 베이스라인의 일부가 아닌 이용가능한 비트들로부터 더 많거나 더 적은 수의 비트들이 선택될 수 있다.
[0089] 퓨즈 맵(420)은 데이터가 외부 NVM(150)에 기입되는 것에 대한 응답으로, 휘발성 메모리(120) 내의 퓨즈 맵(415)이 업데이트되는 일 예를 예시한다. 다시 한번, 퓨즈 맵으로부터의 비트들의 새로운 랜덤 선택은, 업데이트된 정적 베이스라인의 일부가 아닌 비트들로부터 선택된다. 퓨즈 맵(420)에 예시된 예에서, 4개의 비트들이 이용가능한 비트들로부터 선택되었지만, 데이터가 외부 NVM(150)에 기입될 경우 ARC의 랜덤 컴포넌트가 재결정될 때마다, 업데이트된 정적 베이스라인의 일부가 아닌 이용가능한 비트들로부터 더 많거나 더 적은 수의 비트들이 선택될 수 있다.
[0090] 프로세서(190)는, 전력 소스가 고갈되었다고 결정하고 그리고/또는 물리적 침입 센서(312d)가 컴퓨팅 디바이스(100)로의 물리적 침입을 검출했다고 결정한다. 이어서, 프로세서는 휘발성 메모리(120) 내의 현재 퓨즈 맵에 액세스하고, 이들 값들을 새로운 정적 베이스라인 값으로서 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입한다. 도 4의 예에서, 휘발성 메모리(120) 내의 퓨즈 맵은 퓨즈 맵(420)에 의해 예시된 상태에 있었다. 이러한 맵에서 세팅된 퓨즈들은 퓨즈 맵(425)에 의해 표현된 바와 같이, 프로세서에 의해 일회성 프로그래밍가능 메모리(125)에 기입된 새로운 정적 베이스라인 값이 될 것이다.
[0091] 퓨즈 맵(430)은, 퓨즈 맵(425)에 예시된 정적 베이스라인이 부가적인 비트를 포함하도록 업데이트되었던 휘발성 메모리(120) 내의 예시적인 퓨즈 맵을 예시한다. 프로세서(190)는 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 부가적인 비트를 기입할 수 있다. 프로세서는 또한, 업데이트된 정적 베이스라인의 일부가 아닌 비-휘발성 메모리 내의 퓨즈 맵으로부터 비트들을 포함하는 하나 이상의 랜덤하게 선택된 비트들의 세트를 선택할 수 있다. ARC에 대한 새로운 랜덤 컴포넌트를 선택하는 이러한 프로세스는, 데이터가 외부 NVM(150)에 기입될 때마다 발생할 수 있으며, 휘발성 메모리(120)로부터 일회성 프로그래밍가능 메모리(125)를 포함하는 퓨즈들로 현재 퓨즈 맵을 기입하도록 이벤트가 프로세서를 트리거링할 때까지 계속될 수 있다.
[0092] 도 5는 본 명세서에 개시된 기법들에 따른, 안티-리플레이 카운터를 유지하기 위한 다른 기법을 예시한 다이어그램이다. 기법은 도 4에 예시된 기법과 유사하지만, 정적 베이스라인 컴포넌트에 부가된 ARC의 일부가 랜덤하게 선택될 수 있는 반면, ARC의 트랜션트 컴포넌트가 조합 접근법을 사용하여 결정되는 부분적으로 랜덤화된 접근법을 사용한다. 도 5에 예시된 기법은 일련의 퓨즈 맵들, 즉 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에서 퓨즈들의 어레이를 표현하는 퓨즈 맵(505), 퓨즈 맵(510), 퓨즈 맵(515), 퓨즈 맵(520), 및 퓨즈 맵(525)을 사용하여 예시된다. 도 5에 예시된 예에서, 솔리드하게 음영된 배경을 갖는 정사각형은 비트가 (ARC)와 연관된 정적 베이스라인 값의 일부로서 세팅되었다는 것을 표시하고, 체커보드 패턴으로 음영된 배경을 갖는 정사각형은 비트가 롤백 공격을 방지하도록 선택되었던 정적 베이스라인에 대한 부가로서 세팅되었다는 것을 표시하며, 다이아몬드 패턴으로 음영된 배경을 갖는 정사각형은 비트가 ARC의 트랜션트 컴포넌트의 조합 선택 컴포넌트의 일부로서 세팅되었다는 것을 표시한다.
[0093] 도 5에 예시된 프로세스는, 위에서 논의된 도 4의 프로세스의 방식과 같이, 컴퓨팅 디바이스(100)가 전력공급받을 경우 시작할 수 있다. 컴퓨팅 디바이스(100)가 전력 차단되었을 시에, ARC에 대한 베이스라인 값은 일회성 프로그래밍가능 메모리(125)의 퓨즈들로 기입되었을 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서는 일회성 프로그래밍가능 메모리(125)에 액세스하고, 일회성 프로그래밍가능 메모리(125)로부터 퓨즈 맵 값들을 판독하며, 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 퓨즈 맵의 표현을 저장하여 퓨즈 맵(505)을 생성할 수 있다. 퓨즈 맵(505)은 위에서 논의된 퓨즈 맵(405)과 동일하지만, 프로세스는 도 4에 관해 위에서 논의된 바와 같이, 상이한 정적 베이스라인으로 시작하거나 또는 정적 베이스라인 값도 전혀 없이 시작할 수 있다.
[0094] 새로운 정적 베이스라인 값은 또한, 도 4에 관해 위에서 논의된 바와 같이 결정될 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서는 퓨즈 맵(510)에 예시된 바와 같이, 이전 베이스라인에 부가할 적어도 하나의 비트를 선택할 수 있다. 프로세서는 아직 세팅되지 않았던 퓨즈 맵의 비트들로부터 적어도 하나의 비트를 랜덤하게 선택하도록 구성될 수 있다. 프로세서는, 새로운 정적 베이스라인 값을 설정하기 위해 일회성 프로그래밍가능 메모리(125)에서 선택되었던 하나 이상의 비트들과 연관된 퓨즈들을 끊어뜨리도록 구성될 수 있다. 일회성 프로그래밍가능 메모리(125)에 저장된 정적 베이스라인 값은 초기에, 세팅된 비트들 없이 시작할 수 있다.
[0095] 퓨즈 맵(510)은 또한 프로세스의 다른 양상을 예시한다. 적어도 하나의 부가적인 비트가 ARC의 조합 선택 컴포넌트로서 선택된다. 도 5에 예시된 ARC의 조합 선택 컴포넌트는 도 4에 예시된 ARC의 랜덤 선택 컴포넌트와 상이하다. 조합 선택 컴포넌트는 비트들의 랜덤하게 선택된 세트가 아니다. 대신, 시작 포인트가 비트 맵에서 선택된다. 시작 포인트는 아직 선택되지 않았던 퓨즈 맵으로부터의 임의의 비트일 수 있다. 예컨대, 퓨즈 맵의 우측 하단 코너의 비트는 예시적인 퓨즈 맵(510)에서 선택되었지만, 아직 세팅되지 않았던 임의의 비트가 선택될 수 있다.
[0096] 도 5에 예시된 기법은, 데이터를 외부 NVM(150)에 기입하기 전에 ARC가 증분될 때마다, ARC의 조합 선택 컴포넌트에 대해 선택되는 비트들의 수를 최소화시킨다. 예컨대, 도 5에 예시된 프로세스는 조합 선택 컴포넌트가 1비트를 포함하는 가능한 조합들 각각을 통해 반복될 수 있다. 일단 1비트 옵션들이 소진되면, 프로세스는, 2비트 옵션들이 소진될 때까지 2비트 옵션들 각각을 통해 반복될 수 있다. 이러한 프로세스는, 모든 가능한 조합들이 소진될 때까지 또는 ARC가 일회성 프로그래밍가능 메모리(125)에 기입될 때까지 계속될 수 있으며, 일련의 n비트 옵션들 각각이 소진될 때 다른 비트를 부가한다. ARC의 단조적 선택 부분은, 휘발성 메모리(120)로부터 일회성 프로그래밍가능 메모리(125)를 포함하는 퓨즈들로 현재 퓨즈 맵을 기입하도록 이벤트가 프로세서를 트리거링할 때까지, 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입되지 않는다. 단조적 선택 부분은, 그러한 기입 이벤트가 발생할 때까지, 휘발성 메모리(120)에 저장된 퓨즈 맵의 표현에만 유지된다.
[0097] 퓨즈 맵(515)은, 데이터가 외부 NVM(150)에 8회 기입된 이후 퓨즈 맵(510)이 어떻게 변화될 수 있는지를 예시한 일 예를 예시한다. ARC의 조합 선택 컴포넌트는 8비트 만큼 증분된다. 1비트 옵션들 모두는 아직 소진되지 않았다. 도 5의 예에서, ARC는 좌측으로부터 우측으로 그리고 하단으로부터 상단으로 증분되지만, 다른 알고리즘들은, 조합 선택 컴포넌트의 다양한 치환들이 방문(visit)되는 순서를 결정하는 데 사용될 수 있다.
[0098] 퓨즈 맵(520)은, 데이터가 외부 NVM(150)에 32회 기입된 이후 퓨즈 맵(515)이 어떻게 변화될 수 있는지를 예시한 일 예를 예시한다. ARC의 조합 선택 컴포넌트는 32비트 만큼 증분된다. 1비트 옵션들 모두가 소진되었고, 프로세스는 ARC의 2비트 조합 선택 컴포넌트로 계속된다. 도 5의 예에서, ARC는 좌측으로부터 우측으로 그리고 하단으로부터 상단으로 증분되지만, 다른 알고리즘들은, 조합 선택 컴포넌트의 다양한 치환들이 방문되는 순서를 결정하는 데 사용될 수 있다.
[0099] 이어서, 프로세서는, 전력 소스가 고갈되었다고 결정하고 그리고/또는 물리적 침입 센서(312d)가 컴퓨팅 디바이스(100)로의 물리적 침입을 검출했다고 결정한다. 이어서, 프로세서는 휘발성 메모리(120) 내의 현재 퓨즈 맵에 액세스하고, 이들 값들을 새로운 정적 베이스라인 값으로서 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입한다. 도 5의 예에서, 휘발성 메모리(120) 내의 퓨즈 맵은 퓨즈 맵(520)에 의해 예시된 상태에 있었다. 이러한 맵에서 세팅된 퓨즈들은 퓨즈 맵(525)에 의해 표현된 바와 같이, 프로세서에 의해 일회성 프로그래밍가능 메모리(125)에 기입된 새로운 정적 베이스라인 값이 될 것이다.
[0100] 도 6은 본 명세서에 개시된 기법들에 따른, 안티-리플레이 카운터를 유지하기 위한 다른 기법을 예시한 다이어그램이다. 기법은 도 4 및 도 5에 예시된 기법과 유사하지만, ARC의 트랜션트 컴포넌트 뿐만 아니라 정적 베이스라인 컴포넌트에 부가되는 ARC의 부분을 결정하기 위해 결정론적 조합 접근법을 사용한다. 도 6에 예시된 기법은 일련의 퓨즈 맵들, 즉 보안 프로세싱 서브시스템(110)의 일회성 프로그래밍가능 메모리(125)에서 퓨즈들의 어레이를 표현하는 퓨즈 맵(605), 퓨즈 맵(610), 퓨즈 맵(615), 퓨즈 맵(620), 퓨즈 맵(625), 및 퓨즈 맵(630)을 사용하여 예시된다. 도 6에 예시된 예에서, 솔리드하게 음영된 배경을 갖는 정사각형은 비트가 (ARC)와 연관된 정적 베이스라인 값의 일부로서 세팅되었다는 것을 표시하고, 체커보드 패턴으로 음영된 배경을 갖는 정사각형은 비트가 롤백 공격을 방지하도록 선택되었던 정적 베이스라인에 대한 부가로서 세팅되었다는 것을 표시하며, 다이아몬드 패턴으로 음영된 배경을 갖는 정사각형은 비트가 ARC의 조합 컴포넌트의 일부로서 세팅되었다는 것을 표시한다.
[0101] 도 6에 예시된 기법은 ARC의 정적 베이스라인 컴포넌트에 부가되는 ARC의 조합 컴포넌트를 결정하기 위해 조합 접근법을 사용한다. 조합 컴포넌트에 포함되는 비트들의 수는 디바이스가 얼마나 빈번하게 전력 차단될 수 있는지에 의존하여 변할 수 있다. 도 6에 예시된 기법들은, 도 4 및 도 5에 예시된 기법들과 비교할 경우, 각각의 전력-차단 사이클 동안 일회성 프로그래밍가능 메모리(125)의 기입되는 퓨즈들의 수를 감소시킬 수 있다. 기법은 도 5의 기법과 유사하지만, 도 6에 예시된 기법에서 퓨즈 맵에 대한 업데이트들 각각은 결정론적이며, 비트들의 어떠한 랜덤 선택도 도 6의 기법에서 행해지지 않는다.
[0102] 도 6에 예시된 기법은 ARC의 정적 베이스라인 컴포넌트에 부가되는 ARC의 조합 컴포넌트를 결정하기 위해 조합 접근법을 사용한다. 조합 컴포넌트에 포함되는 비트들의 수는 디바이스가 얼마나 빈번하게 전력 차단될 수 있는지에 의존하여 변할 수 있다. 도 6에 예시된 기법들은, 도 4 및 도 5에 예시된 기법들과 비교할 경우, 각각의 전력-차단 사이클 동안 일회성 프로그래밍가능 메모리(125)의 기입되는 퓨즈들의 수를 감소시킬 수 있다. 기법은 도 5의 기법과 유사하지만, 도 6에 예시된 기법에서 퓨즈 맵에 대한 업데이트들 각각은 결정론적이며, 비트들의 어떠한 랜덤 선택도 도 6의 기법에서 행해지지 않는다.
[0103] ARC의 조합 컴포넌트는, 정적 베이스라인의 일부로서 세팅되지 않았던, 일회성 프로그래밍가능 메모리(125)의 이용가능한 비트들 중 X 비트의 결정론적 선택이다. ARC의 조합 컴포넌트는 외부 NVM(150)으로의 데이터의 각각의 기입에 대해 결정된다. 조합 컴포넌트에 포함될 수 있는 이용가능한 비트들 및 이용가능한 비트들의 총 수는 다음의 수학식들을 사용하여 결정될 수 있다:
이용가능한 비트들 = 최대 비트들 - 정적 베이스라인 내의 비트들, 여기서 비트들의 최대 수는 퓨즈 맵에 의해 표현되는 일회성 프로그래밍가능 메모리(125)의 일부를 포함하는 비트들의 총 수를 표현하고, 정적 베이스라인 내의 비트들은, (퓨즈 맵(610)에 예시된 바와 같이) 적어도 하나의 부가적인 비트가 끊어진 업데이트된 정적 베이스라인 값에서 끊어진 퓨즈들을 표현한다. 따라서, 이용가능한 비트들은, 아직 세팅되지 않았던 그 비트들이며, ARC의 조합 컴포넌트에 포함될 수 있다.
이용가능한 비트들의 수 = 비트들의 최대 수 - 정적 베이스라인 내의 비트들의 수, 여기서 비트들의 최대 수는 퓨즈 맵에 의해 표현되는 일회성 프로그래밍가능 메모리(125)의 일부를 포함하는 비트들의 총 수를 표현하고, 정적 베이스라인 내의 비트들의 수는, (퓨즈 맵(610)에 예시된 바와 같이) 적어도 하나의 부가적인 비트가 끊어진 업데이트된 정적 베이스라인 값에서 끊어진 퓨즈들의 수를 표현한다. 따라서, 이용가능한 비트들의 수는 아직 세팅되지 않았던 그 비트들, 및 ARC의 조합 컴포넌트에 포함될 수 있는 비트들의 총 수이다.
[0104] 도 6에 예시된 프로세스는, 위에서 논의된 도 4 및 도 5의 프로세스의 방식과 같이, 컴퓨팅 디바이스(100)가 전력공급받을 경우 시작할 수 있다. 컴퓨팅 디바이스(100)가 전력 차단되었을 시에, ARC에 대한 베이스라인 값은 일회성 프로그래밍가능 메모리(125)의 퓨즈들로 기입되었을 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서는 일회성 프로그래밍가능 메모리(125)에 액세스하고, 일회성 프로그래밍가능 메모리(125)로부터 퓨즈 맵 값들을 판독하며, 보안 프로세싱 서브시스템(110)의 휘발성 메모리(120)에 퓨즈 맵의 표현을 저장하여 퓨즈 맵(605)을 생성할 수 있다. 프로세스는, 본 명세서에 논의된 기법들이 ARC를 생성하고 유지하기 위해 이미 사용되었는지 여부에 의존하여, 상이한 정적 베이스라인으로 시작하거나 또는 어떠한 정적 베이스라인 값도 전혀 없이 시작할 수 있다.
[0105] 새로운 정적 베이스라인 값은 또한, 도 4 및 도 5에 관해 위에서 논의된 바와 같이 결정될 수 있다. 보안 프로세싱 서브시스템(110)의 프로세서는 퓨즈 맵(610)에 예시된 바와 같이, 이전 베이스라인에 부가할 적어도 하나의 비트를 선택할 수 있다. 프로세서는 (정적 베이스라인 값에 부가되는 적어도 하나의 비트가 랜덤하게 선택될 수 있는 도 4 및 도 5에 예시된 접근법들과는 대조적으로) 결정론적 접근법을 사용하여 퓨즈 맵의 이용가능한 비트들로부터 적어도 하나의 비트를 선택할 수 있다. 프로세서는, 새로운 정적 베이스라인 값을 설정하기 위해 일회성 프로그래밍가능 메모리(125)에서 선택되었던 하나 이상의 비트들과 연관된 퓨즈들을 끊어뜨리도록 구성될 수 있다. 일회성 프로그래밍가능 메모리(125)에 저장된 정적 베이스라인 값은 초기에, 세팅된 비트들 없이 시작할 수 있다.
[0106] 퓨즈 맵(615)은, 업데이트된 정적 베이스라인이 결정되는 것에 후속하여 데이터가 외부 NVM(150)에 1회 기입된 이후 퓨즈 맵(610)이 어떻게 변화될 수 있는지를 예시한 일 예를 예시한다. 퓨즈 맵(615)에 예시된 예에서, ARC의 조합 부분은 이러한 스테이지에서 하나의 부가적인 비트를 포함한다. ARC의 조합 부분의 사이즈('X')는, 일단 X 비트를 포함하는 비트들의 조합들 전부가 소진되었다면 1비트 증분들로 증가된다. 도 6에 예시된 예에서, 결정론적 조합 알고리즘은 좌측으로부터 우측으로 그리고 하단으로부터 상단으로 증분되지만, 결정론적 조합 알고리즘의 다른 구현은 도 6에 예시된 순서와 상이한 순서로 X 비트 조합들의 다양한 순열들을 통해 증분하도록 구성될 수 있다. 예컨대, 도 6에 예시된 프로세스는 조합 선택 컴포넌트가 1비트를 포함하는 가능한 조합들 각각을 통해 반복될 수 있다. 일단 1비트 옵션들이 소진되면, 프로세스는, 2비트 옵션들이 소진될 때까지 2비트 옵션들 각각을 통해 반복될 수 있다. 이러한 프로세스는, 모든 가능한 조합들이 소진될 때까지 또는 ARC가 일회성 프로그래밍가능 메모리(125)에 기입될 때까지 계속될 수 있으며, 일련의 n비트 옵션들 각각이 소진될 때 다른 비트를 부가한다. ARC의 조합 선택 부분은, 휘발성 메모리(120)로부터 일회성 프로그래밍가능 메모리(125)를 포함하는 퓨즈들로 현재 퓨즈 맵을 기입하도록 이벤트가 프로세서를 트리거링할 때까지, 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입되지 않는다. 조합 선택 부분은, 그러한 기입 이벤트가 발생할 때까지, 휘발성 메모리(120)에 저장된 퓨즈 맵의 표현에만 유지된다.
[0107] 퓨즈 맵(620)은, 퓨즈 맵(615)에 예시된 퓨즈 맵의 상태에 후속하여 데이터가 외부 NVM(150)에 다수회 기입된 이후 퓨즈 맵(610)이 어떻게 변화될 수 있는지를 예시한 일 예를 예시한다. 퓨즈 맵(625)에 예시된 예에서, ARC의 조합 부분에 대한 1비트 옵션들 모두가 소진되었고, 조합 알고리즘은, 데이터가 외부 NVM(150)에 기입될 때마다 ARC의 조합 부분을 결정하는 데 사용될 2비트 옵션들을 통해 이제 반복되고 있다. 2비트 옵션들은 소진될 때까지 탐구될 것이다.
[0108] 퓨즈 맵(625)은, 퓨즈 맵(620)에 예시된 퓨즈 맵의 상태에 후속하여 데이터가 외부 NVM(150)에 다수회 기입된 이후 퓨즈 맵(610)이 어떻게 변화될 수 있는지를 예시한 일 예를 예시한다. 퓨즈 맵(625)에 예시된 예에서, ARC의 조합 부분에 대한 1비트 및 2비트 옵션들 모두가 소진되었고, 조합 알고리즘은, 데이터가 외부 NVM(150)에 기입될 때마다 ARC의 조합 부분을 결정하는 데 사용될 3비트 옵션들을 통해 이제 반복되고 있다. 3비트 옵션들은 소진될 때까지 탐구될 것이다.
[0109] 이어서, 프로세서는, 전력 소스가 고갈되었다고 결정하고 그리고/또는 물리적 침입 센서(312d)가 컴퓨팅 디바이스(100)로의 물리적 침입을 검출했다고 결정한다. 이어서, 프로세서는 휘발성 메모리(120) 내의 현재 퓨즈 맵에 액세스하고, 이들 값들을 새로운 정적 베이스라인 값으로서 일회성 프로그래밍가능 메모리(125)의 퓨즈들에 기입한다. 도 6의 예에서, 휘발성 메모리(120) 내의 퓨즈 맵은 퓨즈 맵(625)에 의해 예시된 상태에 있었다. 이러한 맵에서 세팅된 퓨즈들은 퓨즈 맵(630)에 의해 표현된 바와 같이, 프로세서에 의해 일회성 프로그래밍가능 메모리(125)에 기입된 새로운 정적 베이스라인 값이 될 것이다.
[0110] 도 7은 집적 회로에서 데이터 보호를 제공하기 위한 예시적인 프로세스(700)의 흐름도이다. 프로세스(700)는 NVM(150)의 콘텐츠들을 보호하는 데 사용되는 ARC를 손상시킴으로써 NVM(150)의 콘텐츠들을 효과적으로 삭제하는 데 사용될 수 있다. 페이로드(155)는 컴퓨팅 디바이스(100) 상에 설치된 인가되지 않은 펌웨어 또는 소프트웨어에 의해 획득될 수 있다. 그러나, NVM(150)에 저장된 데이터의 페이로드(들)와 연관된 정확한 ARC 값(들)이 없다면, 페이로드(들)의 콘텐츠들은 암호해독될 수 없다. 도 7에 예시된 프로세스는, 컴퓨팅 디바이스의 펌웨어 및/또는 소프트웨어 컴포넌트들에 대한 인가되지 않은 업데이트들이 NVM(150)에 저장된 민감한 데이터에 액세스하는 것을 방지하는 데 사용될 수 있다. 도 7에 예시된 프로세스는 도 1 및 도 2에 예시된 컴퓨팅 디바이스(100)의 보안 프로세싱 서브시스템(110)의 프로세서(190)에 의해 구현될 수 있다. 프로세스(700)는, 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125) 및 휘발성 메모리(120)에 저장된 ARC들에 대한 판독-액세스를 적어도 가질 수 있는 소프트웨어 또는 펌웨어에 대한 인가되지 않은 업데이트에 포함되었던 임의의 소프트웨어 또는 펌웨어가 실행되기 전에 컴퓨팅 디바이스에 의해 실행된다.
[0111] 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다는 결정이 행해질 수 있다(스테이지(705)). 프로세서(190)는, 컴퓨팅 디바이스(100)의 펌웨어 및/또는 소프트웨어의 인가되지 않은 업데이트가 행해졌는지 여부를 결정한다. 프로세서(190)는, 컴퓨팅 디바이스의 보안 프로세싱 서브시스템의 메모리 및/또는 외부 NVM에 저장된 펌웨어 및/또는 소프트웨어를 모니터링한다.
[0112] 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트가 발생했는지 여부를 결정하기 위한 하나의 접근법은, 컴퓨팅 디바이스(100)의 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트(들)에 대한 변화들을 모니터링하고, 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트가 업데이트되기 전에 또는 펌웨어가 컴퓨팅 디바이스(100) 상에서 업데이트되는 것에 대한 응답으로 컴퓨팅 디바이스(100)의 사용자가 인증되도록 요구하는 것이다. 컴퓨팅 디바이스의 인가된 사용자는, 내부에 저장된 민감한 사용자 데이터 또는 기업 데이터에 대한 액세스를 가질 수 있는 컴퓨팅 디바이스들 상의 사용자 또는 기업 소유 데이터에 액세스할 수 있는 펌웨어 및/또는 소프트웨어 컴포넌트들에 대한 업데이트를 승인할 수 있다. 컴퓨팅 디바이스(100)가 기업과 연관될 경우, 기업에 의해 인가된 시스템 관리자, 네트워크 관리자, 또는 다른 사용자는 펌웨어 및/또는 소프트웨어 컴포넌트들이 업데이트되기 위해 인증될 필요가 있을 수 있다. 컴퓨팅 디바이스(100)의 일반적인 기업 사용자는, 컴퓨팅 디바이스(100) 상의 펌웨어 및/또는 소프트웨어 컴포넌트들에 대한 설치 및/또는 업데이트들에 대한 완전한 제어를 갖지 않을 수 있다.
[0113] 프로세서(190)는, 컴퓨팅 디바이스의 사용자가 컴퓨팅 디바이스(100)의 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트(들)를 업데이트하려고 시도했는지 여부를 결정하기 위해 인증 절차를 수행할 수 있다. 프로세서는, ARC(140), 트랜션트 컴포넌트(270a 내지 270n), 및/또는 휘발성 메모리(120)에 저장된 정적 베이스라인 컴포넌트(280) 또는 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)에 액세스할 수 있는 신뢰된 소프트웨어 컴포넌트들인 컴퓨팅 디바이스(100)의 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트(들)에 대한 사용자 인증을 수행할 수 있다. 사용자 인증이 실패하면, 프로세서(190)는 컴퓨팅 디바이스(100)의 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트(들)가 인가되지 않았다는 결정을 행하고, 펌웨어 및/또는 다른 중요 소프트웨어 컴포넌트(들)의 저장 및/또는 사용을 억제할 수 있다.
[0114] 프로세서(190)는 다양한 인증 기법들을 사용하여 사용자를 인증할 수 있으며, 본 명세서에 개시된 보안된 비-휘발성 메모리의 콘텐츠들을 안전하게 삭제하기 위한 기법들은 특정한 타입의 인증 기법으로 제한되지 않는다. 사용자는, 컴퓨팅 디바이스의 인가된 사용자에게만 알려져야 하는 패스워드, PIN, 스와이프 패턴, 또는 다른 그러한 입력을 입력하도록 요구될 수 있다. 컴퓨팅 디바이스(300)는 사용자가 입력을 제공할 수 있게 하는 키패드, 키보드, 및/또는 터치 스크린 사용자 인터페이스를 포함할 수 있다. 프로세서(190)는 컴퓨팅 디바이스(300)의 보안 메모리 위치에 컴퓨팅 디바이스(300)에 의해 저장된 인가 정보와 입력을 비교할 수 있다.
[0115] 사용자는 또한 생체인식 데이터를 사용하여 프로세서(190)에 의해 인증될 수 있다. 컴퓨팅 디바이스(300)의 센서들(312a 내지 312g)은 컴퓨팅 디바이스(300)의 사용자로부터 생체인식 데이터를 수집하도록 구성된 하나 이상의 센서들을 포함할 수 있다. 예컨대, 컴퓨팅 디바이스(300)는 컴퓨팅 디바이스(300)의 사용자로부터 하나 이상의 지문들을 캡처하기 위한 지문 센서를 포함할 수 있다. 컴퓨팅 디바이스(300)는, 컴퓨팅 디바이스(300)의 사용자의 하나 이상의 신체적 특성들을 스캐닝하도록 구성된 센서, 이를테면 컴퓨팅 디바이스(300)의 사용자를 인증하는 데 사용될 수 있는 사용자의 홍채 및/또는 망막의 이미지, 얼굴 특징들, 및/또는 다른 해부학적 정보를 캡처하도록 구성된 센서를 포함할 수 있다. 모바일 디바이스의 센서들(312a 내지 312g)은 또한, 컴퓨팅 디바이스(300)의 현재 사용자의 음성 특성들이 모바일 디바이스의 인가된 사용자의 음성 특성들과 매칭하는지 여부를 결정하도록 프로세서(190)에 의해 분석될 수 있는 사용자에 대한 음성 데이터를 수집하도록 구성된 센서를 포함할 수 있다.
[0116] 인증은 공격자가 인증 절차를 우회하려고 시도하는 것을 방지하기 위해, 신뢰된 실행 환경, 이를테면 컴퓨팅 디바이스(300)의 예시적인 구현에 예시된 TEE(380)에 의해 수행될 수 있다. 컴퓨팅 디바이스(100)의 인가된 사용자들에 대한 인증 정보는 컴퓨팅 디바이스의 영구 메모리에 저장될 수 있으며, 사용자 인증을 수행하기 위해, 신뢰된 실행 환경 및/또는 컴퓨팅 디바이스(100)의 다른 컴포넌트들에 의해 이용되는 인증 정보에 대한 인가되지 않은 액세스 및/또는 인증 정보의 인가되지 않은 수정을 방지하도록 암호화되거나 다른 방식으로 보호될 수 있다. 컴퓨팅 디바이스(100)의 프로세서(190)는 또한, 컴퓨팅 디바이스(100)의 이들 엘리먼트들을 업데이트하기 위해 사용자 인증을 요구하는 펌웨어 및/또는 중요 소프트웨어 컴포넌트들의 리스트를 유지할 수 있다.
[0117] 임의의 소프트웨어 업데이트들 이전에 인가된 사용자의 인증을 요구하는 것에 부가하여 또는 그 대신 사용될 수 있는 다른 접근법은 컴퓨팅 디바이스(100)의 펌웨어 및/또는 중요 소프트웨어 컴포넌트(들)에 대한 업데이트들의 프로그램 코드를 인증하는 것이다. 소프트웨어 업데이트가 인증될 수 있는 하나의 방식은, 프로세서(190)가 업데이트에 대한 MAC(message authentication code)를 결정함으로써 이루어진다. MAC는 업데이트의 이미지 파일 및/또는 그의 하나 이상의 컴포넌트들에 CMAC(cipher-based message authentication code) 알고리즘을 적용함으로써 프로세서(190)에 의해 컴퓨팅될 수 있다. CMAC 알고리즘은 컴퓨팅 디바이스와 연관된 HUK(Hardware Unique Key)(199)로부터 도출된 키를 제공받을 수 있다. HUK(199)는 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125) 및/또는 다른 보안 메모리 위치에 저장된 비트 스트링을 포함할 수 있다. HUK(199)는 프로세서(190)에 의해 액세스가능하며, 컴퓨팅 디바이스(100)의 특정한 신뢰된 컴포넌트들에 액세스가능할 수 있다. HUK(199)는 TEE 외부에서 동작하는 프로그램 코드와 같은(그러나, 이에 제한되지 않음) 신뢰되지 않은 프로그램 코드에 액세스가능하지 않다. HUK(199)는 컴퓨팅 디바이스(100)의 제조사에 의해 생성되어 일회성 프로그래밍가능 메모리(125)로 프로그래밍될 수 있다.
[0118] 컴퓨팅 디바이스(100)의 프로세서(190)는, 컴퓨팅 디바이스(100)와 연관된 펌웨어 및/또는 소프트웨어의 중요 컴포넌트(들)와 연관되는 하나 이상의 소프트웨어 이미지 파일들이 컴퓨팅 디바이스(100)의 인가되지 않은 사용자에 의해 변경되었는지 여부를 결정하기 위해 CMAC를 사용한다. 프로세서(190)는 HUK(199)에 기반하여 CMAC를 생성하기 전에 컴퓨팅 디바이스(100)의 사용자가 인증될 것을 요구하도록 구성될 수 있다. 프로세서(190)는 컴퓨팅 디바이스(100)의 사용자를 인증하기 위해, 위에서 논의된 바와 같이 인증 절차를 수행하도록 구성될 수 있다. 인증이 실패하면, 프로세서(190)는 소프트웨어 업데이트가 인가되지 않는다는 결정을 행하도록 구성될 수 있다. 대안적으로, 인증이 실패하면, 프로세서(190)는 HUK(199)에 기반하지 않는 거짓(false) CMAC 값을 생성할 수 있다. 거짓 CMAC 값은, 이전에 생성되어 컴퓨팅 디바이스(100)의 펌웨어 및/또는 다른 중요 컴포넌트(들)과 연관된 예상되는 CMAC 값과 매칭하지 않을 것이며, 프로세서(190)는 업데이트가 인가되지 않았다는 결정을 행할 수 있다. 그러나, 사용자가 정확히 인증되었고, 프로세서(190)에 의해 생성된 CMAC 값이 예상되는 CMAC 값과 매칭하면, 소프트웨어 업데이트는 인가된 것으로 결정될 수 있다.
[0119] 컴퓨팅 디바이스(100)의 보안 프로세싱 서브시스템(110)은, 다양한 보안 부트 메커니즘 기법들을 사용하여 컴퓨팅 디바이스(100)의 하나 이상의 중요 소프트웨어 컴포넌트들에 대한 이미지 파일들 및/또는 하나 이상의 펌웨어 이미지 파일들을 인증하도록 구성되는, ROM(read-only memory)(105)에 저장된 보안 부트로더(119)를 포함할 수 있다. 보안 부트로더는 또한, 디바이스가 부팅되게 허용하기 전에 CMAC 이미지를 컴퓨팅하도록 구성될 수 있다. 부트 로더에 의해 컴퓨팅된 CMAC 값이 이전에 계산되어, 보안 부트 로더에 의해 인증될 컴포넌트와 연관되었던 예상되는 CMAC 이미지 값과 매칭하지 않으면, 보안 부트 로더는 소프트웨어 업데이트가 인가되지 않았다고 결정할 수 있다.
[0120] 집적 회로의 일회성 프로그래밍가능 메모리(125)에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값(165)은, 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로 손상될 수 있다(스테이지(710)). 비-휘발성 메모리는 집적 회로(110)로부터 분리되어 있을 수 있거나(예컨대, NVM(150)) 또는 집적 회로의 일부일 수 있다(예컨대, 일부 양상들에서 NVM(127)). 프로세서(190)가 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 것에 대한 응답으로, 프로세서(190)는 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)를 손상시킨다. 프로세서(190)는 휘발성 메모리(120)에 저장된 ARC(140), 트랜션트 컴포넌트들(270a 내지 270n), 및/또는 정적 베이스라인 컴포넌트(280)를 클리어할 수 있다. ARC(165)를 손상시키고 휘발성 메모리(120)로부터의 ARC 컴포넌트들을 클리어하는 것은, 인가되지 않은 업데이트에 포함된 소프트웨어 및/또는 펌웨어가 NVM(150)에 저장된 암호화되지 않은 페이로드 콘텐츠들을 복원할 수 있는 것을 방지한다.
[0121] 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트의 검출은, 휘발성 메모리(120)에 유지되는, 휘발성 메모리(120)에 저장된 ARC(140), 트랜션트 컴포넌트들(270a 내지 270n), 및/또는 정적 베이스라인 컴포넌트(280)에 기반하여, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)를 프로세서가 업데이트하기 위한 트리거 이벤트로서 기능할 수 있다. 프로세서는 휘발성 메모리(120)에 저장된 ARC(140)를 ARC(165)로서 일회성 프로그래밍가능 메모리(125)에 기입한다. 프로세서(190)는 정적 베이스라인 컴포넌트(280)를 ARC(165)로서 일회성 프로그래밍가능 메모리(125)에 기입한다. 프로세서(190)는, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)에 기입될 ARC를 생성하기 위해 (예컨대, 도 4 내지 도 6 및 도 9 내지 도 11에 예시된 바와 같이) 정적 베이스라인 컴포넌트(280)와 트랜션트 컴포넌트(270)를 결합시킬 수 있다. 보안 프로세싱 서브시스템(110)은 또한, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)에 기입될 ARC를 생성하기 위해 트랜션트 컴포넌트(270)의 가장 최근에 결정된 값을 선택하도록 구성될 수 있거나, 또는 휘발성 메모리(120)에서 트랜션트 컴포넌트(270) 값들 중 하나를 선택할 수 있다. 일단 ARC가 일회성 프로그래밍가능 메모리에 저장되면, 휘발성 메모리(120)에 저장된 ARC(140), 트랜션트 컴포넌트들(270a 내지 270n), 및/또는 정적 베이스라인 컴포넌트(280)가 삭제될 수 있고, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)는 ARC(165)를 저장한 일회성 프로그래밍가능 메모리(125)의 부가적인 비트들을 세팅함으로써 손상될 수 있다.
[0122] 도 8에 예시된 프로세스는 ARC(165)를 손상시키는 데 사용될 수 있는 그러한 하나의 방법의 일 예를 제공하며, 도 9 내지 도 11은 이전 예들로부터 퓨즈 맵들에 적용되는 그러한 예시적인 손상 기법을 예시한다. 컴퓨팅 디바이스의 보안 프로세싱 서브시스템의 프로세서는, 공격자가 NVM에 저장된 민감한 데이터에 액세스할 수 있는 것을 방지하기 위해, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트에 대한 응답으로 ARC(165)를 손상시키도록 구성될 수 있다. 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)는 손상될 수 있고, 컴퓨팅 디바이스(100)의 휘발성 메모리(120)에 저장된 ARC(140), 트랜션트 컴포넌트들(270a 내지 270n), 및/또는 정적 베이스라인 컴포넌트(280)는 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트에 포함되는 임의의 소프트웨어의 실행 이전에 클리어될 수 있다.
[0123] 도 8은 본 명세서에 개시된 기법들에 따른, 안티-리플레이 카운터를 손상시키기 위한 예시적인 프로세스(800)의 흐름도이다. 도 8에 예시된 프로세스는 도 1 및 도 2에 각각 예시된 컴퓨팅 디바이스들(100 및 200)의 보안 프로세싱 서브시스템(110)의 프로세서에 의해 구현될 수 있다. 더욱이, 도 8에 예시된 프로세스는 도 7에 예시된 프로세스의 스테이지(710)를 적어도 부분적으로 구현하는데 사용될 수 있다. 도 8에 예시된 프로세스는 공격자가 NVM(150)에 저장된 민감한 데이터에 대한 액세스를 얻는 것을 방지하도록 ARC(165)를 변경시키는 데 사용될 수 있다. 컴퓨팅 디바이스(100)의 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)는, NVM(150)에 저장된 페이로드(들)(155)를 암호화할 경우 사용되는 ARC와 더 이상 매칭하지 않을 것이다. 공격자가 내부에 저장된 ARC(165)에 액세스할 수 있는 새로운 펌웨어 및/또는 소프트웨어 컴포넌트들을 컴퓨팅 디바이스 상에 설치할 수 있더라도, ARC는 이미 손상되었을 것이다. 이러한 접근법은, NVM(150)에 저장된 페이로드(들)의 콘텐츠들을 암호해독 및 인증하는 데 필요한 ARC가 더 이상 컴퓨팅 디바이스(100)의 메모리에 존재하지 않을 것이기 때문에 컴퓨팅 디바이스의 NVM(150)의 보호된 콘텐츠들을 효과적으로 삭제한다.
[0124] ARC 값을 저장한 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수가 결정될 수 있다(스테이지(805)). 컴퓨팅 디바이스의 보안 프로세싱 서브시스템(110)의 프로세서(190)는 ARC(165)를 유효하지 않게 렌더링하기 위해 ARC(165)에 부가될 비트들의 수를 결정하도록 구성될 수 있다. 보안 프로세싱 서브시스템(110)은, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)가 세팅되었던 비트들의 임계 수를 포함하는지 여부를 결정하도록 구성될 수 있다.
[0125] 비트들의 임계 수는 ARC(165)의 손상에 관해 원하는 엔트로피의 레벨에 기반하여 선택될 수 있다. 더 높은 원하는 레벨의 엔트로피가 세팅되는 일회성 프로그래밍가능 메모리(125)의 비트들의 더 큰 수와 연관되는 반면, 더 낮은 원하는 레벨의 엔트로피는 세팅되는 일회성 프로그래밍가능 메모리(125)의 더 적은 비트들과 연관된다. 세팅되는 일회성 프로그래밍가능 메모리(125)의 더 많은 비트들은, ARC(165)가 손상되기 전에 어떤 것이어야 했었는지를 공격자가 추론하려고 시도하는 것을 더 어렵게 만든다. 보안 프로세싱 서브시스템(110)은, 어느 비트들이 ARC(165)의 일부였는지 그리고 어느 비트들이 ARC(165)를 손상시키기 위해 부가되었는지를 짐작하는 것이 엄청나게 계산적으로 집약적이도록, 부가적인 비트들의 세팅이 충분한 양의 엔트로피를 ARC(165)에 도입하는 것을 보장하기 위해 그러한 결정을 행하도록 구성될 수 있다.
[0126] 예시적인 구현에서, 보안 프로세싱 서브시스템(110)은, 일회성 프로그래밍가능 메모리(125)에서 이미 세팅되었던 비트들의 현재 수가 미리 결정된 임계치 이하라는 것에 대한 응답으로 비트들의 제1 수가 일회성 프로그래밍가능 메모리(125)에서 세팅될 것이라고 결정하도록 구성된다. 이러한 예시적인 구현에서, 보안 프로세싱 서브시스템(110)은, 일회성 프로그래밍가능 메모리(125)에서 이미 세팅되었던 비트들의 현재 수가 미리 결정된 임계치를 초과한다는 것에 대한 응답으로 비트들의 제2 수가 일회성 프로그래밍가능 메모리(125)에서 세팅될 것이라고 결정하도록 구성된다. 비트들의 제1 수는 비트들의 제2 수보다 크다. 비트들의 제1 수는, ARC가 의도적으로 손상되기 전에 ARC를 더 계산 집약적으로 결정하게 만들기 위해 일회성 프로그래밍가능 메모리가 현재 세팅된 더 작은 수의 비트들을 갖는 상황들에 대해 선택된다. 더욱이, 비트들의 제1 및 제2 수는 비트들의 범위로서 정의될 수 있으며, 보안 프로세싱 서브시스템(110)은 비트들의 적절한 범위 내에 있는 세팅될 비트들의 수를 선택하도록 구성될 수 있다.
[0127] 제1 예로 이러한 개념을 예시하기 위해, 비트들의 임계 수가 64비트이고, 비트들의 제1 수가 128비트를 포함하고, 비트들의 제2 수가 64비트를 포함하며, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)가 현재 40비트를 포함한다고 가정한다. 이러한 예에서, 일회성 프로그래밍가능 메모리(125)의 ARC(165)에서 세팅되는 비트들의 현재 수는 40비트이며, 이는 64비트의 임계치보다 작다. 따라서, 보안 프로세싱 서브시스템(110)은 비트들의 제1 수, 즉 이러한 예에서는 128비트를 ARC(165)의 현재 값에 부가할 것이다.
[0128] 제2 예로 이러한 개념을 예시하기 위해, 비트들의 임계 수가 64비트이고, 비트들의 제1 수가 128비트를 포함하고, 비트들의 제2 수가 64비트를 포함하며, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)가 현재 100비트를 포함한다고 가정한다. 이러한 예에서, 일회성 프로그래밍가능 메모리의 ARC(165)에서 세팅되는 비트들의 현재 수는 100비트이며, 이는 64비트의 임계치를 초과한다. 따라서, 보안 프로세싱 서브시스템은, 이러한 예에서는 64비트인 비트들의 제2 수를 ARC(165)의 현재 값에 부가할 것이다.
[0129] 일회성 프로그래밍가능 메모리(125)의 ARC(165)에 부가될 비트들 및 이들 예들에서 이용되는 임계치 값들은 본 명세서에 개시된 개념들을 예시하도록 의도되며, 이들 기법들을 이들 특정 값들로 제한하도록 의도되지 않는다. 개시된 기법들은 일회성 프로그래밍가능 메모리(125)의 ARC(165)에 상이한 수의 비트들을 부가하도록 구성될 수 있다. 더욱이, 이들 기법들은, 얼마나 많은 비트들이 일회성 프로그래밍가능 메모리의 ARC에 부가될지를 결정하기 위해 상이한 임계치들 및/또는 다수의 임계치들을 사용하여 구현될 수 있다. 이들 기법들은 또한, 비트 값들의 범위 또는 범위들을 이용하도록 구현될 수 있으며, 보안 프로세싱 서브시스템(110)은 일회성 프로그래밍가능 메모리(125)의 ARC(165)에서 현재 세팅되는 비트들의 수와 연관된 특정한 범위 내에 있는 비트들의 수를 랜덤하게 선택하도록 구성될 수 있다.
[0130] 비트들의 제1 수를 포함하는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들이 결정될 수 있다(스테이지(810)). 스테이지(805)는 ARC를 포함하는 일회성 프로그래밍가능 메모리의 얼마나 많은 비트들이 세팅될지를 결정하는 것을 포함한다. 스테이지(810)는, 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)를 손상시키기 위해 일회성 프로그래밍가능 메모리(125)의 어느 비트들이 세팅되도록 선택될지를 결정하는 것을 포함한다. 프로세서(190)는 세팅될 비트들의 위치들을 결정한다. 프로세서(190)는 아직 세팅되지 않았던, ARC(165)를 포함하는 일회성 프로그래밍가능 메모리(125)의 비트들을 선택하기 위해 랜덤 또는 의사랜덤 알고리즘을 사용할 수 있다. 이어서, 공격자는, 값이 의도적으로 손상되기 전에 ARC(165)가 무엇이었는지를 결정하기 위해, 얼마나 많은 비트들이 일회성 프로그래밍가능 메모리에서 세팅되었는지 뿐만 아니라, 어느 비트들이 세팅되었는지를 결정할 필요가 있을 것이다.
[0131] 일회성 프로그래밍가능 메모리(125)에 저장된 ARC는 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 업데이트될 수 있다(스테이지(815)). 프로세서(190)는 일회성 프로그래밍가능 메모리(125)의 비트들의 제1 세트의 값들을 세팅할 수 있다. 일회성 프로그래밍가능 메모리(125)에 저장된 ARC(165)는 스테이지(810)에서 선택된 비트들에 값을 기입함으로써 손상될 수 있다. 스테이지(810)에서 선택되었던 비트들은, 데이터의 개별 비트들을 표현하는 데 사용되는 일회성 프로그래밍가능 메모리(125)의 퓨즈들, 안티퓨즈들, 또는 다른 컴포넌트들을 끊어뜨림으로써 프로세서(190)에 의해 세팅될 수 있다. 도 8에 예시된 프로세스는, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트가 검출되는 것에 대한 응답으로 그리고 소프트웨어가 실행되기 전에 수행될 수 있다. 그 결과, 공격자는 유효한 ARC(165)에 대한 액세스를 갖지 않을 것이고, NVM(150)에 저장된 데이터를 암호해독할 수 없을 것이다. 이러한 접근법은 ARC의 손상으로 인해 콘텐츠들을 복원불가능하게 렌더링함으로써 NVM(150)의 콘텐츠들을 효과적으로 삭제한다.
[0132] 도 9 내지 도 11은 위에서 논의된 도 4 내지 도 6에 예시된 예들에 기반하는 안티-리플레이 카운터를 손상시키기 위한 기법들의 예들을 제공한다. 도 9는, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 것 및 일회성 프로그래밍가능 메모리에 저장된 ARC를 손상시키는 것을 포함하도록 도 4에 예시된 예를 적응시킨다. 퓨즈 맵들(905, 910, 915, 및 920)은 도 4에 예시된 퓨즈 맵들(405, 410, 415, 및 420)을 미러링한다. 그러나, 퓨즈 맵(920)에 예시된 ARC의 결정을 촉진했던 NVM 업데이트 이후, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트가 검출되고, 보안 삭제가 트리거링된다. 퓨즈 맵(925)은, 퓨즈 맵(920)에서 표현되었던 비트 값들에 부가하여 2개의 새로운 비트들이 선택되었다는 것을 예시한다. 이러한 스테이지에서, 고정된 또는 랜덤한 수의 비트들은, ARC가 저장된 일회성 프로그래밍가능 메모리의 퓨즈들을 표현하는 비트맵으로부터 랜덤 위치들에서 프로세서(190)에 의해 선택될 수 있다. 이러한 예에서, 오직 2개의 비트들만이 명확성의 문제로서 선택되었지만, 본 명세서에 개시된 기법들은 3개의 새로운 비트들을 부가하는 것으로 제한되지 않는다. 선택된 비트들의 더 큰 수는, 얼마나 많은 비트들이 그리고 어느 비트들이 이전 ARC에 부가되었는지를 결정하는 것을 더 어렵게 만든다. 이어서, 가장 최근의 ARC에 기반하는 새로운 정적 베이스라인 값(퓨즈 맵(930)) 및 ARC를 난독화하기 위한 부가적인 비트들이 프로세서(190)에 의해 일회성 프로그래밍가능 메모리에 기입된다. 오래된 ARC에 의존했던 NVM에 저장된 임의의 데이터는, ARC가 구현되고, 휘발성 메모리(120)에 저장된 ARC들이 제거된 결과로서 복원불가능하게 렌더링될 것이다. NVM(150)에 저장된 임의의 트랜션트 컴포넌트들(275a 내지 275n)은 또한, NVM(150)으로부터 삭제되고 그리고/또는 프로세서(190)에 의해 손상될 수 있다. 디바이스에 전력 공급된 이후, 퓨즈 맵(930)에서 표현된 새로운 정적 베이스라인 값은 NVM 콘텐츠에 대한 후속 업데이트에 대한 기반으로서 기능할 것이다(퓨즈 맵(935) 참조). NVM에 저장된 어떠한 민감한 데이터도 공격자에 의해 복원가능하지 않았을 것이다. 더욱이, 컴퓨팅 디바이스의 휘발성 메모리에 저장된 임의의 ARC 데이터는 또한, 공격자가 ARC의 이전 상태를 결정하는 것을 더 어렵게 만들기 위해 삭제될 수 있다.
[0133] 도 10은, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 것 및 일회성 프로그래밍가능 메모리(125)에 저장된 ARC를 손상시키는 것을 포함하도록 도 5에 예시된 예를 적응시킴으로써 이들 개념들을 추가로 예시한다. 퓨즈 맵들(1005, 1010, 1015, 및 1020)은 도 5에 예시된 퓨즈 맵들(505, 510, 515, 및 520)을 미러링한다. 그러나, 퓨즈 맵(1020)에 예시된 ARC의 결정을 촉진했던 NVM 업데이트 이후, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트가 프로세서(190)에 의해 검출되고 보안 삭제가 프로세서(190)에 의해 트리거링된다. 퓨즈 맵(1025)은, 퓨즈 맵(1020)에서 표현되었던 비트 값들에 부가하여 3개의 새로운 비트들이 선택되었다는 것을 예시한다. 이러한 예에서, 오직 3개의 비트들만이 명확성의 문제로서 선택되었지만, 본 명세서에 개시된 기법들은 3개의 새로운 비트들을 부가하는 것으로 제한되지 않는다. 이어서, 가장 최근의 ARC에 기반하는 새로운 정적 베이스라인 값(퓨즈 맵(1030)) 및 ARC를 난독화하기 위한 부가적인 비트들이 프로세서(190)에 의해 일회성 프로그래밍가능 메모리(125)에 기입된다. 오래된 ARC에 의존했던 NVM에 저장된 임의의 데이터는 공격자에 의해 복원불가능하게 렌더링될 것이다. 더욱이, 컴퓨팅 디바이스의 휘발성 메모리(120) 및/또는 NVM(150)에 저장된 임의의 ARC 데이터는 또한, 공격자가 ARC의 이전 상태를 결정하는 것을 더 어렵게 만들기 위해 삭제 및/또는 손상될 수 있다.
[0134] 도 11은, 소프트웨어 및/또는 펌웨어에 대한 인가되지 않은 업데이트를 검출하는 것 및 일회성 프로그래밍가능 메모리(125)에 저장된 ARC를 손상시키는 것을 포함하도록 도 6에 예시된 예를 적응시킴으로써 이들 개념들을 추가로 예시한다. 퓨즈 맵들(1105, 1110, 1115, 1120, 및 1125)은 도 6에 예시된 퓨즈 맵들(605, 610, 615, 620, 및 625)을 미러링한다. 그러나, 퓨즈 맵(1125)에 예시된 ARC의 결정을 촉진했던 NVM 업데이트 이후, 인가되지 않은 업데이트가 검출되고, 보안 삭제가 트리거링된다. 퓨즈 맵(1130)은, 퓨즈 맵(1125)에서 표현되었던 비트 값들에 부가하여 3개의 새로운 비트들이 프로세서(190)에 의해 선택되었다는 것을 예시한다. 이러한 예에서, 오직 3개의 비트들만이 명확성의 문제로서 선택되었지만, 본 명세서에 개시된 기법들은 3개의 새로운 비트들을 부가하는 것으로 제한되지 않는다. 이어서, 가장 최근의 ARC에 기반하는 새로운 정적 베이스라인 값(퓨즈 맵(1135)) 및 ARC를 난독화하기 위한 부가적인 비트들이 프로세서(190)에 의해 일회성 프로그래밍가능 메모리(125)에 기입된다. 오래된 ARC에 의존했던 NVM에 저장된 임의의 데이터는 공격자에 의해 복원불가능하게 렌더링될 것이다. 더욱이, 컴퓨팅 디바이스의 휘발성 메모리(120) 및/또는 NVM(150)에 저장된 임의의 ARC 데이터는 또한, 공격자가 ARC의 이전 상태를 결정하는 것을 더 어렵게 만들기 위해 삭제 및/또는 손상될 수 있다.
[0135] 도 9 내지 도 11의 이전 예들은 공격자가 NVM(150)에 저장된 민감한 데이터에 대한 액세스를 얻기 위해 컴퓨팅 디바이스 상에 인가되지 않은 소프트웨어를 설치하는 것을 방지하기 위한 개념들을 예시하도록 의도된다. ARC에 부가된 특정 수의 비트들 및 선택된 특정 비트들은 이들 개념들을 예시하도록 의도되며, 본 명세서에 개시된 기법들을 이들 특정 예시적인 구현들로 제한하도록 의도되지 않는다.
[0136] 도 12는 예시적인 집적 회로(1200)의 블록 다이어그램이다. 집적 회로는 프로세서(1290) 및 일회성 프로그래밍가능 메모리(1225)를 포함한다. 일회성 프로그래밍가능 메모리(1225)는 프로세서(1290)와 통신가능하게 커플링될 수 있다. 일부 구현들에서, 일회성 프로그래밍가능 메모리(1225)는 프로세서(1290)의 일부로서 구현될 수 있으며, 프로세서(1290)에 대한 내부 메모리로서 처리될 수 있다. 프로세서(1290)는, 인가되지 않은 업데이트가 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하도록 구성될 수 있다. 소프트웨어는 집적 회로(1200) 내부 또는 집적 회로 외부의 컴퓨터-판독가능한 메모리, 이를테면 비-휘발성 메모리(1250)에 저장될 수 있다. 프로세서(1290)는, 집적 회로(1200)의 일회성 프로그래밍가능 메모리(1225)에 유지되고, 비-휘발성 메모리(1250)의 콘텐츠들을 보호하도록 집적 회로(1200)에 의해 사용되는 ARC(anti-replay counter) 값, 이를테면 ARC(1265)를 손상시키도록 구성될 수 있다. 프로세서(1290)는, 인가되지 않은 업데이트가 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로 ARC(1265)를 손상시키도록 구성될 수 있다.
[0137] 집적 회로(1200)는 위에서 논의된 도 1 및 도 2에 예시된 보안 프로세싱 서브시스템(110)과 유사할 수 있으며, 이는 SoC를 포함하는(그러나 이에 제한되지 않음) 집적 회로 상에 구현될 수 있다. 집적 회로(1200)는 도 3에 예시된 컴퓨팅 디바이스(300)에 의해 구현될 수 있다. 프로세서(1290)는 도 1 및 도 2에 예시된 프로세서(190)와 유사할 수 있거나, 또는 도 3에 예시된 프로세서(310)와 유사할 수 있다. 일회성 프로그래밍가능 메모리(1225)는 일회성 프로그래밍가능 메모리(125) 또는 도 3에 예시된 일회성 프로그래밍가능 메모리(325)와 유사할 수 있다. ARC(1265)는 위에서 논의된 이들 ARC(165)와 유사하게, 일회성 프로그래밍가능 메모리(125)의 비트들의 1차원 또는 2차원 어레이로서 표현될 수 있다.
[0138] 본 명세서에 설명된 방법들은, 애플리케이션에 의존하여 다양한 수단에 의해 구현될 수 있다. 예컨대, 이들 방법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 하드웨어 구현에 대해, 프로세싱 유닛들은 하나 이상의 ASIC(application specific integrated circuit)들, DSP(digital signal processor)들, DSPD(digital signal processing device)들, PLD(programmable logic device)들, FPGA(field programmable gate array)들, 프로세서들, 제어기들, 마이크로-제어기들, 마이크로프로세서들, 전자 디바이스들, 본 명세서에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 또는 이들의 조합 내에서 구현될 수 있다.
[0139] 펌웨어 및/또는 소프트웨어 구현에 대해, 방법들은, 본 명세서에 설명된 기능들을 수행하는 모듈들(예컨대, 절차들, 함수들 등)을 이용하여 구현될 수 있다. 명령들을 유형으로 수록한 임의의 머신-판독가능 매체는 본 명세서에 설명된 방법들을 구현하는 데 사용될 수 있다. 예컨대, 소프트웨어 코드들은 메모리에 저장될 수 있고, 프로세서 유닛에 의해 실행될 수 있다. 메모리는, 프로세서 유닛 내부 또는 프로세서 유닛 외부에서 구현될 수 있다. 본 명세서에 사용된 바와 같이, 용어 "메모리"는 임의의 타입의 장기, 단기, 휘발성, 비휘발성, 또는 다른 메모리를 지칭하며, 임의의 특정한 타입의 메모리 또는 메모리들의 수, 또는 매체들의 타입에 제한되지 않는다. 유형의 매체들은, 랜덤-액세스 메모리, 자기 저장부, 광학 저장 매체들 등과 같은 머신 판독가능 매체들의 하나 이상의 물리적인 물품들을 포함한다.
[0140] 펌웨어 및/또는 소프트웨어로 구현되면, 기능들은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장될 수 있다. 예들은, 데이터 구조로 인코딩된 컴퓨터-판독가능 매체들, 및 컴퓨터 프로그램으로 인코딩된 컴퓨터-판독가능 매체들을 포함한다. 컴퓨터-판독가능 매체들은 물리적 컴퓨터 저장 매체들을 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으며; 본 명세서에 사용된 바와 같이, 디스크(disk) 및 디스크(disc)는, 컴팩트 디스크(disc)(CD), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 블루-레이 디스크(disc)를 포함하며, 여기서, 디스크(disk)들은 일반적으로 데이터를 자기적으로 재생하지만, 디스크(disc)들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기한 것들의 조합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다. 그러한 매체들은 또한, 머신 판독가능할 수 있는 비-일시적인 매체들의 예들을 제공하며, 여기서, 컴퓨터들은 그러한 비-일시적인 매체들로부터 판독할 수 있는 머신의 일 예이다.
[0141] 더욱이, 위에서 논의된 방법들, 시스템들, 및 디바이스들은 예들이다. 다양한 구성들은 다양한 절차들 또는 컴포넌트들을 적절하게 생략, 치환, 또는 부가할 수 있다. 예컨대, 대안적인 구성들에서, 방법들은 설명된 것과는 상이한 순서로 수행될 수 있으며, 다양한 단계들이 부가, 생략, 또는 조합될 수 있다. 또한, 특정한 구성들에 대해 설명된 특징들은 다양한 다른 구성들로 조합될 수 있다. 구성들의 상이한 양상들 및 엘리먼트들은 유사한 방식으로 조합될 수 있다. 또한, 기술은 발전하며, 따라서 엘리먼트들의 대부분은 예들이고, 미래에 개발되는 엘리먼트들을 포함하는 다른 엘리먼트들이 사용될 수 있다.
[0142] 본 명세서에 논의된 일반적인 원리들은 다른 구현들에 적용될 수 있다.

Claims (30)

  1. 집적 회로에서 데이터 보호를 제공하기 위한 방법으로서,
    인가되지 않은 업데이트가 상기 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 단계; 및
    상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 상기 집적 회로의 일회성(one-time) 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 상기 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상(corrupt)시키는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  2. 제1항에 있어서,
    상기 인가되지 않은 업데이트가 상기 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하는 단계는,
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하는 단계;
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하는 것에 대한 응답으로, 사용자 또는 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 진본(authentic)인지 여부를 결정하는 단계; 및
    상기 사용자 또는 상기 소프트웨어 중 적어도 하나가 진본이 아니라는 것에 대한 응답으로, 상기 소프트웨어 또는 상기 펌웨어에 대한 변화가 인가되지 않았다고 결정하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  3. 제2항에 있어서,
    상기 방법은 상기 사용자를 인증하는 단계를 포함하며,
    상기 사용자를 인증하는 단계는,
    상기 사용자가 인증되었는지 여부를 결정하는 단계; 및
    상기 사용자가 인증되지 않았다는 것에 대한 응답으로, 상기 사용자를 인증하기 위해 적어도 하나의 인증 절차를 수행하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  4. 제2항에 있어서,
    상기 방법은 상기 소프트웨어 또는 상기 펌웨어를 인증하는 단계를 포함하며,
    상기 소프트웨어 또는 상기 펌웨어를 인증하는 단계는,
    상기 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 상기 소프트웨어 또는 상기 펌웨어에 CMAC(cipher-based message authentication code) 알고리즘을 적용함으로써 상기 소프트웨어 또는 상기 펌웨어에 대한 MAC(message authentication code)를 결정하는 단계; 및
    상기 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 상기 MAC를 상기 이전에 결정된 MAC와 비교하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  5. 제1항에 있어서,
    상기 ARC 값을 손상시키는 단계는, 휘발성 메모리에 유지되는 현재 ARC 값으로 상기 일회성 프로그래밍가능 메모리에 저장된 ARC 값을 업데이트하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  6. 제5항에 있어서,
    상기 ARC 값을 저장한 상기 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하는 단계;
    상기 비트들의 제1 수를 포함하는 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하는 단계; 및
    상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 상기 일회성 프로그래밍가능 메모리에 저장된 상기 ARC 값을 업데이트하는 단계를 더 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  7. 제6항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하는 단계는, 상기 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  8. 제6항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 세트를 결정하는 단계는, 상기 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하는 단계를 포함하는, 집적 회로에서 데이터 보호를 제공하기 위한 방법.
  9. 데이터 보호를 제공하는 집적 회로로서,
    인가되지 않은 업데이트가 상기 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하기 위한 수단; 및
    상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 상기 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 상기 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키기 위한 수단을 포함하는, 데이터 보호를 제공하는 집적 회로.
  10. 제9항에 있어서,
    상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하기 위한 수단은,
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하기 위한 수단;
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하는 것에 대한 응답으로, 사용자 또는 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 진본인지 여부를 결정하기 위한 수단; 및
    상기 사용자 또는 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 진본이 아니라는 것에 대한 응답으로, 상기 소프트웨어 또는 상기 펌웨어에 대한 변화가 인가되지 않았다고 결정하기 위한 수단을 포함하는, 데이터 보호를 제공하는 집적 회로.
  11. 제10항에 있어서,
    상기 사용자 또는 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 진본인지 여부를 결정하기 위한 수단은,
    상기 사용자가 인증되었는지 여부를 결정하기 위한 수단; 및
    상기 사용자가 인증되지 않았다는 것에 대한 응답으로, 상기 사용자를 인증하기 위해 적어도 하나의 인증 절차를 수행하기 위한 수단을 포함하는, 데이터 보호를 제공하는 집적 회로.
  12. 제10항에 있어서,
    상기 사용자 또는 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 진본인지 여부를 결정하기 위한 수단은,
    상기 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 상기 소프트웨어 또는 상기 펌웨어에 CMAC(cipher-based message authentication code) 알고리즘을 적용함으로써 상기 소프트웨어 또는 상기 펌웨어에 대한 MAC(message authentication code)를 결정하기 위한 수단; 및
    상기 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 상기 MAC를 상기 이전에 결정된 MAC와 비교하기 위한 수단을 포함하는, 데이터 보호를 제공하는 집적 회로.
  13. 제9항에 있어서,
    상기 ARC 값을 손상시키기 위한 수단은, 상기 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 상기 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하기 위한 수단을 더 포함하는, 데이터 보호를 제공하는 집적 회로.
  14. 제13항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하기 위한 수단;
    상기 비트들의 제1 수를 포함하는 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하기 위한 수단; 및
    상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 상기 일회성 프로그래밍가능 메모리에 저장된 상기 ARC 값을 업데이트하기 위한 수단을 더 포함하는, 데이터 보호를 제공하는 집적 회로.
  15. 제14항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하기 위한 수단은, 상기 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하기 위한 수단을 더 포함하는, 데이터 보호를 제공하는 집적 회로.
  16. 제14항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 어느 비트들이 세팅될지를 결정하기 위한 수단은, 상기 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하기 위한 수단을 더 포함하는, 데이터 보호를 제공하는 집적 회로.
  17. 데이터 보호를 제공하는 집적 회로로서,
    일회성 프로그래밍가능 메모리;
    상기 일회성 프로그래밍가능 메모리에 통신가능하게 커플링된 프로세서를 포함하며,
    상기 프로세서는,
    인가되지 않은 업데이트가 상기 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하고; 그리고
    상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 상기 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 상기 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키도록
    구성되는, 데이터 보호를 제공하는 집적 회로.
  18. 제17항에 있어서,
    상기 프로세서는,
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하고;
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하는 것에 대한 응답으로, 사용자 및 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나를 인증하며; 그리고
    상기 사용자 및 상기 소프트웨어 중 적어도 하나가 인증되지 않는 것에 대한 응답으로, 상기 소프트웨어 또는 상기 펌웨어에 대한 변화가 인가되지 않았다고 결정하도록
    구성됨으로써, 상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하도록 구성되는, 데이터 보호를 제공하는 집적 회로.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 사용자가 인증되었는지 여부를 결정하고; 그리고
    상기 사용자가 인증되지 않았다는 것에 대한 응답으로, 상기 사용자를 인증하기 위해 적어도 하나의 인증 절차를 수행하도록
    구성됨으로써, 상기 사용자를 인증하도록 구성되는, 데이터 보호를 제공하는 집적 회로.
  20. 제18항에 있어서,
    상기 프로세서는,
    상기 집적 회로와 연관된 HUK(Hardware Unique Key)로부터 도출된 키를 사용하여 상기 소프트웨어에 CMAC(cipher-based message authentication code) 알고리즘을 적용함으로써 상기 소프트웨어에 대한 MAC(message authentication code)를 결정하며; 그리고
    상기 MAC가 이전에 결정된 MAC와 매칭하는지 여부를 결정하기 위해 상기 MAC를 상기 이전에 결정된 MAC와 비교하도록
    구성됨으로써, 상기 소프트웨어를 인증하도록 구성되는, 데이터 보호를 제공하는 집적 회로.
  21. 제17항에 있어서,
    상기 ARC 값을 손상시키도록 구성된 상기 프로세서는, 상기 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 상기 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하도록 추가로 구성되는, 데이터 보호를 제공하는 집적 회로.
  22. 제21항에 있어서,
    상기 프로세서는,
    상기 ARC 값을 저장한 상기 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하고;
    상기 비트들의 제1 수를 포함하는 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하며; 그리고
    상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 상기 일회성 프로그래밍가능 메모리에 저장된 상기 ARC 값을 업데이트하도록
    추가로 구성되는, 데이터 보호를 제공하는 집적 회로.
  23. 제22항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하도록 구성된 상기 프로세서는, 상기 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하도록 추가로 구성되는, 데이터 보호를 제공하는 집적 회로.
  24. 제22항에 있어서,
    상기 일회성 프로그래밍가능 메모리의 어느 비트들이 세팅될지를 결정하도록 구성된 상기 프로세서는, 상기 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하도록 추가로 구성되는, 데이터 보호를 제공하는 집적 회로.
  25. 집적 회로에서 데이터 보호를 제공하기 위한 컴퓨터-판독가능 명령들이 저장된 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 컴퓨터로 하여금,
    인가되지 않은 업데이트가 상기 집적 회로와 연관된 소프트웨어 또는 펌웨어에 대해 행해졌다고 결정하게 하고; 그리고
    상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하는 것에 대한 응답으로, 상기 집적 회로의 일회성 프로그래밍가능 메모리에 유지되고, 비-휘발성 메모리의 콘텐츠들을 보호하도록 상기 집적 회로에 의해 사용되는 ARC(anti-replay counter) 값을 손상시키게 하도록
    구성된 명령들을 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  26. 제25항에 있어서,
    상기 컴퓨터로 하여금, 상기 인가되지 않은 업데이트가 상기 소프트웨어 또는 상기 펌웨어에 대해 행해졌다고 결정하게 하도록 구성된 상기 명령들은, 상기 컴퓨터로 하여금,
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하게 하고;
    상기 소프트웨어 또는 상기 펌웨어에 대한 변화를 검출하는 것에 대한 응답으로, 사용자 및 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나를 인증하게 하며; 그리고
    상기 사용자 및 상기 소프트웨어 또는 상기 펌웨어 중 적어도 하나가 인증되지 않는 것에 대한 응답으로, 상기 소프트웨어 또는 상기 펌웨어에 대한 변화가 인가되지 않았다고 결정하게 하도록
    구성된 명령들을 더 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  27. 제25항에 있어서,
    상기 컴퓨터로 하여금, 상기 ARC 값을 손상시키게 하도록 구성된 상기 명령들은, 상기 컴퓨터로 하여금, 상기 집적 회로의 휘발성 메모리에 유지되는 제2 ARC 값으로 상기 일회성 프로그래밍가능 메모리에 저장된 제1 ARC 값을 업데이트하게 하도록 구성된 명령들을 더 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  28. 제27항에 있어서,
    상기 컴퓨터로 하여금,
    상기 ARC 값을 저장한 상기 일회성 프로그래밍가능 메모리의 세팅될 비트들의 제1 수를 결정하게 하고;
    상기 비트들의 제1 수를 포함하는 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트의 위치들을 결정하게 하며; 그리고
    상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 세팅함으로써 상기 일회성 프로그래밍가능 메모리에 저장된 상기 ARC 값을 업데이트하게 하도록
    구성된 명령들을 더 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  29. 제28항에 있어서,
    상기 컴퓨터로 하여금, 상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하게 하도록 구성된 상기 명령들은, 상기 컴퓨터로 하여금, 상기 일회성 프로그래밍가능 메모리에서 이미 세팅된 비트들의 제2 수에 기반하여, 상기 일회성 프로그래밍가능 메모리의 세팅할 비트들의 제1 수를 결정하게 하도록 구성된 명령들을 더 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  30. 제29항에 있어서,
    상기 컴퓨터로 하여금, 상기 일회성 프로그래밍가능 메모리의 어느 비트들이 세팅될지를 결정하게 하도록 구성된 상기 명령들은, 상기 컴퓨터로 하여금, 상기 일회성 프로그래밍가능 메모리에서 세팅되지 않았던 비트들의 제2 세트로부터 상기 일회성 프로그래밍가능 메모리의 비트들의 제1 세트를 랜덤하게 선택하게 하도록 구성된 명령들을 더 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
KR1020207025433A 2018-03-09 2019-03-08 집적 회로 데이터 보호 KR20200129103A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862640942P 2018-03-09 2018-03-09
US62/640,942 2018-03-09
US16/296,066 US11321466B2 (en) 2018-03-09 2019-03-07 Integrated circuit data protection
US16/296,066 2019-03-07
PCT/US2019/021275 WO2019173670A1 (en) 2018-03-09 2019-03-08 Integrated circuit data protection

Publications (1)

Publication Number Publication Date
KR20200129103A true KR20200129103A (ko) 2020-11-17

Family

ID=67844072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207025433A KR20200129103A (ko) 2018-03-09 2019-03-08 집적 회로 데이터 보호

Country Status (8)

Country Link
US (1) US11321466B2 (ko)
EP (1) EP3762852A1 (ko)
KR (1) KR20200129103A (ko)
CN (1) CN111819561B (ko)
BR (1) BR112020018229A2 (ko)
SG (1) SG11202007282YA (ko)
TW (1) TW201941065A (ko)
WO (1) WO2019173670A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703950B2 (en) * 2012-03-30 2017-07-11 Irdeto B.V. Method and system for preventing and detecting security threats
US10853309B2 (en) 2018-08-13 2020-12-01 Micron Technology, Inc. Fuseload architecture for system-on-chip reconfiguration and repurposing
US11210238B2 (en) * 2018-10-30 2021-12-28 Cypress Semiconductor Corporation Securing data logs in memory devices
US20220156411A1 (en) * 2019-08-29 2022-05-19 Google Llc Securing External Data Storage for a Secure Element Integrated on a System-on-Chip
FR3100905B1 (fr) * 2019-09-16 2022-03-04 Idemia Identity & Security France Système sur puce et procédé garantissant la fraicheur des données stockées dans une mémoire extérieure
US11681536B2 (en) * 2019-12-06 2023-06-20 Lattice Semiconductor Corporation Fast boot systems and methods for programmable logic devices
US20230109011A1 (en) * 2021-10-04 2023-04-06 Hewlett-Packard Development Company, L.P. Placing a device in secure mode
EP4312136A1 (en) * 2022-07-25 2024-01-31 Nxp B.V. Apparatuses and methods for verification of updated data-set
WO2024049141A1 (ko) * 2022-09-02 2024-03-07 삼성전자주식회사 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427343A (zh) * 2001-12-18 2003-07-02 阳庆电子股份有限公司 防止设备及软件内的设定被非授权人员使用或更改的装置
JP4875126B2 (ja) * 2002-06-06 2012-02-15 エヌヴィディア コーポレイション Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
US20030233562A1 (en) * 2002-06-12 2003-12-18 Sachin Chheda Data-protection circuit and method
CN100504818C (zh) * 2003-07-07 2009-06-24 巨视股份有限公司 调控对非易失性存储区访问的方法和判定访问的自动方法
CN1300697C (zh) * 2003-09-15 2007-02-14 英业达股份有限公司 软件保护方法及系统
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
IL171963A0 (en) 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
US20080127356A1 (en) * 2006-11-27 2008-05-29 Mediatek Inc. Embedded systems and methods for securing firmware therein
US7886150B2 (en) * 2007-05-11 2011-02-08 Mips Technologies, Inc. System debug and trace system and method, and applications thereof
US20090193261A1 (en) * 2008-01-25 2009-07-30 Mediatek Inc. Apparatus and method for authenticating a flash program
US8677144B2 (en) * 2008-02-25 2014-03-18 Cavium, Inc. Secure software and hardware association technique
JP5434203B2 (ja) * 2009-04-02 2014-03-05 大日本印刷株式会社 認証装置、認証プログラム、認証システム、パスワード生成装置、携帯型セキュリティデバイス、およびパスワード生成プログラム
US9479509B2 (en) * 2009-11-06 2016-10-25 Red Hat, Inc. Unified system for authentication and authorization
EP3518128B1 (en) * 2011-03-30 2021-04-28 Irdeto B.V. Enabling a software application to be executed on a hardware device
US20140075522A1 (en) * 2012-09-07 2014-03-13 Red Hat, Inc. Reliable verification of hypervisor integrity
US9124434B2 (en) * 2013-02-01 2015-09-01 Microsoft Technology Licensing, Llc Securing a computing device accessory
CN103544413B (zh) * 2013-10-31 2017-02-15 宇龙计算机通信科技(深圳)有限公司 一种在智能终端中校验软件版权的方法及装置
US9690922B2 (en) * 2014-07-28 2017-06-27 Avago Technologies General Ip (Singapore) Pte. Ltd. System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device
US9830479B2 (en) * 2014-09-16 2017-11-28 Nxp Usa, Inc. Key storage and revocation in a secure memory system
WO2016075865A1 (ja) * 2014-11-12 2016-05-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 更新管理方法、更新管理装置及び制御プログラム
US10353638B2 (en) * 2014-11-18 2019-07-16 Microsemi SoC Corporation Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory
US9563765B2 (en) * 2015-02-10 2017-02-07 Apple Inc. Baseband secure boot with remote storage
US9697359B2 (en) 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
US9729330B2 (en) * 2015-08-21 2017-08-08 Samsung Electronics Co., Ltd. Secure pairing of eHealth devices and authentication of data using a gateway device having secured area
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
US9917687B2 (en) * 2015-10-12 2018-03-13 Microsoft Technology Licensing, Llc Migrating secrets using hardware roots of trust for devices
EP3437248A4 (en) * 2016-03-30 2019-11-06 The Athena Group, Inc. KEY UPDATE FOR KEY MASTERS
US10127405B2 (en) 2016-05-10 2018-11-13 Qualcomm Incorporated Techniques for determining an anti-replay counter for preventing replay attacks
US9916452B2 (en) * 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates

Also Published As

Publication number Publication date
TW201941065A (zh) 2019-10-16
US11321466B2 (en) 2022-05-03
SG11202007282YA (en) 2020-09-29
BR112020018229A2 (pt) 2020-12-29
EP3762852A1 (en) 2021-01-13
US20190278914A1 (en) 2019-09-12
CN111819561B (zh) 2023-11-03
CN111819561A (zh) 2020-10-23
WO2019173670A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
US11321466B2 (en) Integrated circuit data protection
CN109313690B (zh) 自包含的加密引导策略验证
ES2904501T3 (es) Implementación de un almacenamiento seguro con protección de integridad
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
KR101049647B1 (ko) 외부 저장 디바이스로부터 안전하게 부팅하기 위한 방법 및 장치
US7886355B2 (en) Subsidy lock enabled handset device with asymmetric verification unlocking control and method thereof
US8528108B2 (en) Protecting secret information in a programmed electronic device
KR102239711B1 (ko) 보안 파라미터들에 기초한 작업 보안 키의 생성
Altuwaijri et al. Android data storage security: A review
CN107438849B (zh) 用于验证电子设备的完整性的系统和方法
US10126960B2 (en) Fuse-based anti-replay mechanism
US10127405B2 (en) Techniques for determining an anti-replay counter for preventing replay attacks
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
KR101795457B1 (ko) 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
AU2013270195B2 (en) Mobile terminal detection method and mobile terminal
US20080148001A1 (en) Virtual Secure On-Chip One Time Programming
US20100174919A1 (en) Program execution apparatus, control method, control program, and integrated circuit
KR20100016657A (ko) 전자 디바이스에서 simlock 정보를 보호하는 방법 및 장치
US20080010686A1 (en) Confidential Information Processing Device
KR20160111455A (ko) 보안 부트 동안 키 추출
EP1967977A2 (en) Method and apparatus for protecting flash memory
US20080104396A1 (en) Authentication Method
Unterstein et al. SCA secure and updatable crypto engines for FPGA soc bitstream decryption
US20220263661A1 (en) Efficient Data Item Authentication
KR101781970B1 (ko) 자가 대응 전자문서 불법 유출 방지 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination