KR20170118972A - 보안 소프트웨어 인증 및 검증 - Google Patents

보안 소프트웨어 인증 및 검증 Download PDF

Info

Publication number
KR20170118972A
KR20170118972A KR1020177029609A KR20177029609A KR20170118972A KR 20170118972 A KR20170118972 A KR 20170118972A KR 1020177029609 A KR1020177029609 A KR 1020177029609A KR 20177029609 A KR20177029609 A KR 20177029609A KR 20170118972 A KR20170118972 A KR 20170118972A
Authority
KR
South Korea
Prior art keywords
software
verification
verification tag
authentication
tag
Prior art date
Application number
KR1020177029609A
Other languages
English (en)
Other versions
KR101904303B1 (ko
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 KR20170118972A publication Critical patent/KR20170118972A/ko
Application granted granted Critical
Publication of KR101904303B1 publication Critical patent/KR101904303B1/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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/3247Cryptographic 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 involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

소프트웨어가 디바이스에 의한 실행을 위해 처음 로딩될 때, 비-보안 저장소에 저장된 소프트웨어가 인증된다. 소프트웨어를 인증하는 것은, 소프트웨어에 대한 암호 동작 및 소프트웨어의 디지털 시그니쳐를 포함할 수 있다. 소프트웨어의 인증이 성공적이면 소프트웨어에 대한 검증 태그가 생성될 수 있으며, 검증 태그는 소프트웨어 및 적어도 디바이스-특정 시크릿 데이터에 기초한다. 검증 태그는 디바이스 내에 저장될 수 있다. 후속하여 소프트웨어가 실행을 위해 로딩될 때마다, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 검증 태그를 사용하여 소프트웨어가 (인증되지 않고) 검증될 수 있다.

Description

보안 소프트웨어 인증 및 검증
[0001] 본 출원은, 2015년 4월 15일자로 미국 특허상표청에 출원된 정규 특허 출원 제 14/687,783호의 이득 및 이에 대한 우선권을 주장하며, 상기 정규 특허 출원의 전체 내용은 인용에 의해 본원에 포함된다.
[0002] 본원에 개시된 다양한 특징들은 일반적으로 보안(secure) 저장소가 없는 디바이스들에서 소프트웨어의 해킹을 완화하기 위한 소프트웨어의 인증(authentication)에 관한 것으로, 더 상세하게는, 처음 소프트웨어가 실행될 때 소프트웨어 인증이 수행되고 그 후에 더 효율적인 소프트웨어 검증(verification)이 수행되는 방법에 관한 것이다.
[0003] 디바이스들, 이를테면 모바일 폰들, 모바일 디바이스들, 페이저(pager)들, 무선 모뎀들, 개인 휴대 정보 단말들, 태블릿들, PIM(personal information manager)들, 개인용 미디어 플레이어들, 팜톱(palmtop) 컴퓨터들, 랩톱 컴퓨터들, 또는 프로세서를 갖는 임의의 다른 디바이스들은 점점 더 대중화되고 유비쿼터스(ubiquitous)화 되고 있다. 그러한 디바이스들에서 생성, 입력, 저장, 및/또는 수신되는 데이터는 비허가된 액세스에 대해 보안되어야 한다. 디바이스의 데이터에 대한 비허가된 액세스의 그러한 위험성 중 하나는, 이러한 비허가된 액세스를 허용하도록 수정된(예컨대, 해킹된), 디바이스 상에서 실행되는 소프트웨어를 포함한다. 따라서, 디바이스 상에서 동작하는 소프트웨어는 그 소프트웨어가 수정되지 않았음을 확인하기 위해 인증되어야 한다. 디바이스들 상의 소프트웨어의 인증은, 수정된 소프트웨어가 그 디바이스들 상에서 실행되는 것을 방지하도록 기능한다. 즉, 소프트웨어는, 소프트웨어가 손상(예컨대, 수정)되지 않았음을 검증하기 위해, 실행 이전에, 소프트웨어가 로딩될 때 인증될 수 있다. 소프트웨어 인증은, 소프트웨어를 보안되게 저장하기 위한 보안 내부 저장소 또는 신뢰되는 내부 저장소를 디바이스들이 갖지 않는 경우 특히 중요하다. 소프트웨어 개발자들은, 그들의 소프트웨어를 디바이스들에 배포되기 전에 디지털 방식으로 서명하기 위해 암호기법(cryptography)을 사용할 수 있다. 소프트웨어를 서명하는데 대칭 키(symmetric key)가 사용되는 경우, 각각의 디바이스는 소프트웨어를 인증하기 위해 그러한 대칭 키를 수신한다. 그러나, 모든 디바이스들 상의 소프트웨어에 대해 동일한 대칭 키를 사용하는 것은, 단일 디바이스가 이러한 대칭 키를 획득하는데 있어 손상된 경우 모든 다른 디바이스들이 노출되기 때문에 위험하다. 각각의 디바이스에 대한 소프트웨어를 서명하기 위해 디바이스별 대칭 키들이 사용될 수 있지만, 이러한 접근법은 많은 수의 대칭 키들에 대한 관리를 요구할 수 있고, 이에 따라, 구현하기가 힘들다. 대안적으로, 개인 키(private key)로 소프트웨어를 서명하고 대응하는 공개 키를 소프트웨어를 인증하기 위한 디바이스들에 배포함으로써, 개인/공개 키 암호기법이 사용될 수 있다. 그러나, 인증을 위해 공개 키를 사용하는 것은 프로세싱 집약적이며, 저-전력이거나 아주 적은 프로세싱 능력들/리소스들을 갖는 많은 디바이스들에 대해 쉽지 않다. 따라서, 개인/공개 키 접근법은 실용적인 솔루션이 아니다.
[0004] 따라서, 다양한 프로세싱 능력들을 가진 디바이스들 상에서 동작하는 소프트웨어를 효과적으로 인증하는 것을 허용하는 솔루션에 대한 필요성이 존재한다.
[0005] 제 1 양상은, 디바이스 내에서의 로딩 동안 소프트웨어를 검증하기 위한 방법을 제공한다. 디바이스 내의 또는 디바이스 외부의 비-보안(non-secure) 저장소에 저장된 소프트웨어가 획득된다. 일 예에서, 소프트웨어는, 디바이스의 부트(boot) 시에 로딩되는 운영 시스템의 일부일 수 있다. 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 사전-생성된 검증 태그를 사용하여 소프트웨어를 검증하려는 시도가 이루어질 수 있다. 사전-생성된 검증 태그는 소프트웨어의 이전 인증으로부터 획득될 수 있다. 그러한 검증이 성공적이면, 소프트웨어는 실행될 수 있다.
[0006] 그렇지 않고 검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않다면, 소프트웨어는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증된다. 소프트웨어를 검증하는 것은, 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적일 수 있음을 유의한다. 소프트웨어의 인증이 성공적이면, 소프트웨어 및 디바이스-특정 시크릿(secret) 데이터에 기초하여, 소프트웨어에 대한 새로운 검증 태그가 생성된다. 시크릿 데이터는 디바이스에게만 알려질 수 있고 그리고/또는 디바이스 외부에서 액세스가능하지 않다. 예를 들면, 시크릿 데이터는 디바이스 내의 물리적으로 복제 불가능한(unclonable) 함수에 기초하여 획득될 수 있다. 그 다음, 새로운 검증 태그가 저장될 수 있다(614). 몇몇 예들에서, 사전-생성된 검증 태그 및/또는 새로운 검증 태그는 디바이스 내의 또는 디바이스 외부의 비-보안 저장소 또는 상이한 비-보안 저장소에 저장될 수 있다.
[0007] 일 예에서, 소프트웨어는 인증될 수 있고, 성공적인 인증 시, 사전-생성된 검증 태그(예컨대, 초기 검증 태그, 제 1 검증 태그, 이전 검증 태그 등)가 생성될 수 있다. 사전-생성된 검증 태그는 소프트웨어의 후속 검증에서 사용하기 위해 저장될 수 있다.
[0008] 일 예에서, 소프트웨어를 인증하는 것은, 소프트웨어에 대한 암호(cryptographic) 동작 및 소프트웨어의 암호 시그니쳐(signature)를 포함할 수 있다. 예를 들면, 소프트웨어를 인증하는 것은, 소프트웨어에 대한 시그니쳐를 사용하여 소프트웨어를 인증하기 위해 공개 키를 사용하는 것을 포함할 수 있다.
[0009] 다른 예에서, 새로운 검증 태그를 생성하는 것은, 소프트웨어에 대한 메시지 인증 코드(MAC; message authentication code)를 생성하고 그리고 디바이스-특정 시크릿 데이터를 사용하는 것을 포함할 수 있다.
[0010] 몇몇 구현들에서, 새로운 검증 태그는 추가로, 새로운 버전의 소프트웨어가 획득될 때마다 변경되는 디바이스 데이터에 기초하여 생성될 수 있다. 디바이스 데이터는, 디바이스에서 소프트웨어에 대한 새로운 검증 태그를 생성할 때 결코 반복되지 않을 수 있다.
[0011] 소프트웨어의 인증이 실패하면, 소프트웨어의 실행은 중단된다. 일 구현에서, 소프트웨어는, 소프트웨어의 검증이 성공적이거나 소프트웨어의 인증이 성공적인 경우에만 실행된다.
[0012] 새로운 버전의 소프트웨어가 획득될 수 있다. 새로운 버전의 소프트웨어는, 그 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증될 수 있다. 새로운 버전의 소프트웨어의 인증이 성공적이면, 새로운 버전의 소프트웨어에 대한 다른 검증 태그(예컨대, 제 2 검증 태그)가 생성될 수 있으며, 여기서, 다른 검증 태그는, 새로운 버전의 소프트웨어 및 적어도 디바이스-특정 시크릿 데이터 또는 다른 디바이스-특정 데이터에 기초할 수 있다. 다른 검증 태그는 또한, 후속 사용을 위해 저장될 수 있다. 후속하여, 새로운 버전의 소프트웨어는, 그 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 새로운 버전의 소프트웨어의 재인증을 회피하면서, 새로운 버전의 소프트웨어가 다른 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 다른 검증 태그를 사용하여 검증될 수 있다.
[0013] 다른 특징에 따르면, 검증 태그는, 검증 태그를 디스에이블링(disable)하도록 기능할 수 있는 취소가능 인증서(revocable certificate)에 의해 추가적으로 바인딩(bind)될 수 있다. 예를 들면, 취소가능 인증서는 검증을 수행할 시 디바이스에 의해 체크될 수 있다. 디바이스는 인증서 취소 데이터베이스에 질의할 수 있고, 인증서가 취소되었으면 검증은 실패할 것이다. 그러므로, 소프트웨어가 수정되지 않은 경우라도, 대응하는 인증서가 취소되었으면 검증은 계속 실패할 것이다.
[0014] 다른 양상은, 실행 이전에 하이브리드 소프트웨어 인증 및 검증을 수행하도록 구성되는 디바이스를 제공한다. 디바이스는, 저장 디바이스 및 프로세싱 회로를 포함할 수 있다. 저장 디바이스는, 인증 명령들 및/또는 검증 태그 생성 명령들 및 검증 태그 비교 명령들을 저장하도록 기능할 수 있다. 프로세싱 회로는, 디바이스 내의 또는 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어를 획득(예컨대, 버스를 통한 또는 통신 인터페이스로부터의 리트리브(retrieve), 판독 등)하도록 구성될 수 있다.
[0015] 검증 태그 비교기 모듈/회로는, 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, (예컨대, 소프트웨어 검증 태그들 사이에 저장된) 사전-생성된 검증 태그를 사용하여 소프트웨어를 검증하려 시도하도록 기능할 수 있다. 검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않다면, 소프트웨어 인증 모듈/회로는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 소프트웨어를 인증하도록 기능할 수 있다. 소프트웨어의 인증이 성공적이면, 검증 태그 생성기 모듈/회로는, 소프트웨어 및 디바이스-특정 시크릿 데이터에 기초하여, 소프트웨어에 대한 새로운 검증 태그를 생성하도록 기능할 수 있다. 그 다음, 새로운 검증 태그는 소프트웨어 검증 태그(들) 사이에 저장될 수 있다. 이러한 프로세스는, 소프트웨어의 검증이 소프트웨어의 인증보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적이기 때문에 효율성의 개선들을 달성한다. 따라서, 인증이 처음에 더 많은 시간 또는 리소스를 소모할 수 있을지라도, 소프트웨어의 후속 로딩들은, 인증 대신 검증을 사용하는 것으로 인해, 더 신속하고 효율적이다.
[0016] 디바이스는 또한, 프로세싱 회로에 커플링되는 복수의 일회용 블로우 퓨즈(one-time blow fuse)들을 포함할 수 있으며, 여기서, 새로운 검증 태그 및/또는 사전-생성된 검증 태그는 추가로, 일회용 블로우 퓨즈들로부터의 상태들에 기초하여 생성되고, 복수의 일회용 블로우 퓨즈들은 업데이트된 버전의 소프트웨어가 획득될 때마다 변경된다.
[0017] 도 1은, 제한된 프로세싱 리소스들을 갖는 호스트 디바이스 상에서 소프트웨어를 인증하기 위한 예시적인 방법을 예시한다.
[0018] 도 2는, 소프트웨어 인증을 수행하도록 적응되는 예시적인 호스트 디바이스를 예시하는 블록 다이어그램이다.
[0019] 도 3은, 하이브리드 소프트웨어 인증 및 검증을 수행하기 위한 예시적인 제 1 방법을 예시한다.
[0020] 도 4(도 4a 및 도 4b를 포함함)는, 하이브리드 소프트웨어 인증 및 검증을 수행하기 위한 예시적인 제 2 방법을 예시한다.
[0021] 도 5는, 디바이스 내에서의 로딩 동안 소프트웨어를 검증하기 위한 예시적인 제 3 방법을 예시한다.
[0022] 도 6은, 디바이스 내에서의 로딩 동안 소프트웨어를 검증하기 위한 예시적인 제 4 방법을 예시한다.
[0023] 다음의 설명에서, 설명된 구현들의 완전한 이해를 제공하기 위해 특정한 세부사항들이 주어진다. 그러나, 구현들이 이들 특정한 세부사항들 없이도 실시될 수 있다는 것이 당업자에 의해 이해될 것이다. 예를 들어, 회로들은, 불필요한 세부사항들로 구현들을 불명료하게 하지 않기 위해 블록 다이어그램들로 도시될 수 있다. 다른 예시들에서, 구현들을 불명료하게 하지 않기 위해, 잘-알려진 회로들, 구조들 및 기술들은 상세히 도시되어 있지 않다.
[0024] 단어 "예시적인"은, "예, 예증 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. "예시적인" 것으로서 본원에서 설명되는 어떠한 구현 또는 실시예도 반드시 다른 구현들 또는 실시예들에 비해 바람직하거나 또는 유리한 것으로 해석되지 않는다. 마찬가지로, 용어 "실시예들"은, 실시예들 전부가 논의된 특징, 이점, 또는 동작 모드를 포함하는 것을 요구하지 않는다.
개요
[0025] 일 특징은, 호스트 디바이스 상에서 하이브리드 인증 및 검증 프로세스를 사용함으로써 소프트웨어의 보안 로딩 및 실행을 제공한다. 소프트웨어는 비-보안 저장소에 저장될 수 있다. 처음에, 소프트웨어가 실행을 위해 처음 로딩될 때, 소프트웨어는 암호로 인증될 수 있다. 그 다음, 소프트웨어 및 디바이스-특정 시크릿 데이터를 사용하여 검증 태그가 생성될 수 있다. 후속하여 소프트웨어가 실행을 위해 로딩되는 경우, 소프트웨어가 로딩될 때 소프트웨어를 검증하기 위해 검증 태그가 사용된다. 이러한 검증이 실패하면, 소프트웨어의 로딩 및/또는 실행은 중단될 수 있다.
[0026] 일 예에서, 디바이스 내의 또는 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어가 획득(예컨대, 리트리브, 판독 등)될 수 있다. (프로세싱 회로에 의한) 실행을 위해 로딩될 때, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 사전-생성된 검증 태그를 사용하여 소프트웨어를 검증하려는 시도가 이루어질 수 있다. 예를 들면, 프로세싱 회로는, 프로세싱 회로가 소프트웨어를 검증하는데 이용가능한 임의의 그리고/또는 모든 검증 태그들을 사용하려 시도할 수 있다. 대안적으로, 프로세싱 회로는, 소프트웨어를 검증하려 시도하기에 앞서 임의의 검증 태그들이 이용가능한지 여부를 체크할 수 있다. 검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않다면, 소프트웨어는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증될 수 있다. 소프트웨어의 인증이 성공적이면, 소프트웨어 및 디바이스-특정 시크릿 데이터에 기초하여, 소프트웨어에 대한 새로운 검증 태그가 생성될 수 있다. 새로운 검증 태그는, 후속 검증들을 위해 저장될 수 있다. 소프트웨어는, 소프트웨어의 검증이 성공적이거나 소프트웨어의 인증이 성공적인 경우에만 실행된다. 소프트웨어의 검증은, 소프트웨어의 인증보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적이다.
예시적인 소프트웨어 인증 및 검증
[0027] 도 1은, 호스트 디바이스, 예컨대 제한된 프로세싱 리소스들을 갖는 호스트 디바이스 상에서 소프트웨어를 인증하기 위한 예시적인 방법을 예시한다. 소프트웨어 배포자(104)는 공개/개인 키 쌍을 생성(106)할 수 있다. 소프트웨어(예컨대, 소프트웨어 애플리케이션, 운영 시스템, 드라이버 소프트웨어, 실행가능 코드/명령들 등)의 배포에 앞서 또는 배포와 동시에, 소프트웨어 배포자(104)는 개인 키를 이용하여 소프트웨어를 암호로 서명(108)할 수 있다. 그 다음, 서명된 소프트웨어는 호스트 디바이스(102)(예컨대, 소프트웨어가 실행될 디바이스)에 전송(110)된다. 부가적으로, (개인 키에 대응하는) 공개 키는 소프트웨어 배포자(104)에 의해 호스트 디바이스(102)에 전달(112)될 수 있다.
[0028] 서명된 소프트웨어의 수신 시, 호스트 디바이스(102)는 소프트웨어의 초기 인증(109)을 수행(114)을 수행할 수 있다. 예를 들어, 소프트웨어의 이러한 초기 인증(114)은, 수신된 서명된 소프트웨어가 유효한지 또는 탬퍼링(tamper)/수정되지 않았는지를 확인하기 위해, 수신된 공개 키를 사용하는 것을 포함할 수 있다.
[0029] 호스트 디바이스(102)는, 디바이스-특정 시크릿 데이터(116)를 포함하거나 획득할 수 있다. 일단 초기 인증이 성공적으로 완료되면, 소프트웨어는 호스트 디바이스(102) 내에 저장(118)될 수 있다. 소프트웨어 및 디바이스-특정 시크릿 데이터에 기초하여 검증 태그가 생성(120)될 수 있다. 그러한 디바이스-특정 시크릿 데이터(116)는 호스트 디바이스(102) 외부에 알려지지 않을 수 있다. 검증 태그는 호스트 디바이스(102) 내에(예컨대, 비-보안 위치 내에) 저장(122)될 수 있다.
[0030] 소프트웨어의 후속 실행(123) 동안, 호스트 디바이스(102)는 소프트웨어를 리트리브(124)할 수 있다. 그러나, 실행에 앞서, 검증 태그가 또한 리트리브(126)된다. 그 다음, 소프트웨어는 검증 태그를 사용하여 검증(128)될 수 있다. 즉, 새로운 검증 태그를 생성하기 위해 디바이스-특정 시크릿 데이터 및 리트리브된 소프트웨어가 사용될 수 있다. 새로운 검증 태그가 이전에 저장된 검증 태그와 비교되어 이들이 동일한지 여부가 확인될 수 있다(즉, 새로운 검증 태그 및 이전에 저장된 검증 태그가 동일하면 성공적 검증임). 검증이 성공적이면, 호스트 디바이스(102)에 의해 소프트웨어가 실행(130)될 수 있다. 그렇지 않고 검증이 실패하면, 호스트 디바이스(102)는, 저장된 소프트웨어가 수정(예컨대, 소프트웨어의 비허가된 수정)되었다고 판단할 수 있다.
[0031] 일 예에서, 소프트웨어의 초기 인증은, 공개 키를 사용하는 암호 인증을 포함할 수 있다. 소프트웨어가 성공적으로 인증되면, 디바이스-특정 시크릿 데이터를 사용하여 소프트웨어에 대한 메시지 인증 코드(MAC)가 생성될 수 있다. MAC는, 2개의 입력들, 즉 메시지 및 메시지의 생성자에게만 알려지는 시크릿 키에 기초할 수 있다. 일 예에서, 호스트 디바이스는 메시지로서 소프트웨어를 그리고 시크릿 키로서 디바이스-특정 시크릿 데이터를 사용할 수 있다. 그렇다면, 일 예에서, MAC는, 임의적 사이즈의 디지털 데이터를 고정된 사이즈의 디지털 데이터에 맵핑하는데 사용될 수 있는 해시(hash) 함수를 사용하여 획득될 수 있다. 그 다음, 시크릿 데이터는, 그러한 MAC를 디바이스에 바인딩하여 결과적으로 검증 태그를 획득하는데 사용될 수 있다.
[0032] 다소 리소스 집약적인 공개 키를 사용하여 암호 인증을 수행하는 것과 대조적으로, 검증 태그(예컨대, MAC)를 사용하여 소프트웨어를 검증하는 것은 덜 리소스 집약적이다.
[0033] 몇몇 예들에서, 디바이스-특정 시크릿 데이터는, 호스트 디바이스(102)에 대한 PUF(physically unclonable function), 호스트 디바이스(102) 내에 저장된 시크릿 키, 및/또는 소프트웨어가 업데이트될 때 수정/변경될 수 있는 하나 또는 그 초과의 일회용 블로우가능(blowable) 퓨즈들에 저장된 데이터를 포함할 수 있다. 일단 블로우되면, 이들 일회용 블로우가능 퓨즈들은 언블로우(unblow)되거나 리셋될 수 없음을 유의한다.
소프트웨어 인증을 이용하는 예시적인 호스트 디바이스
[0034] 도 2는, 소프트웨어 인증을 수행하도록 적응되는 예시적인 호스트 디바이스(200)를 예시하는 블록 다이어그램이다. 호스트 디바이스(200)는, 버스(232)를 통해 통신 인터페이스(204) 및 내부 저장 디바이스(206)에 커플링되는 프로세싱 회로(202)를 포함할 수 있다.
[0035] 프로세싱 회로(202)는, 데이터를 획득, 프로세싱, 및/또는 전송하고, 데이터 액세스 및 저장을 제어하고, 커맨드들을 송출하고, 그리고/또는 액세스 디바이스의 다른 원하는 동작들을 제어하도록 배치(arrange)될 수 있다. 프로세싱 회로(202)는, 적어도 하나의 실시예에서, 적절한 매체들에 의해 제공되는, 원하는 프로그래밍을 구현하도록 구성되는 회로를 포함할 수 있다. 예를 들어, 프로세싱 회로(202)는, 예컨대 소프트웨어 및/또는 펌웨어 명령들을 포함하는 실행가능 명령들을 실행하도록 구성되는 프로세서, 제어기, 복수의 프로세서들 및/또는 다른 구조, 및/또는 하드웨어 회로 중 하나 또는 그 초과로서 구현될 수 있다. 프로세싱 회로(202)의 실시예들은 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그래밍가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계되는 이들의 임의의 결합을 포함할 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 또한, 프로세서는 컴퓨팅 컴포넌트들의 조합, 이를테면 DSP와 마이크로프로세서의 조합, 다수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 프로세싱 회로(202)의 이들 예들은 예시를 위한 것이며, 본 개시내용의 범위 내의 다른 적절한 구성들이 또한 고려된다.
[0036] 통신 인터페이스(204)는, 하나 또는 그 초과의 네트워크들을 통해 호스트 디바이스(200)로/로부터의 통신들을 가능하게 하도록 구성될 수 있다. 통신 인터페이스(204)는, 적어도 하나의 송신기 회로(210) 및/또는 적어도 하나의 수신기 회로(212)(예컨대, 하나 또는 그 초과의 송신기/수신기 체인들)를 포함할 수 있다. 또한, 하나 또는 그 초과의 안테나들(도시되지 않음)이 통신 인터페이스(204)에 전기적으로 커플링될 수 있다.
[0037] 저장 디바이스(206)는, 프로세서 실행가능 코드 또는 명령들(예컨대, 소프트웨어, 펌웨어), 전자 데이터, 데이터베이스들, 또는 다른 디지털 정보와 같은 프로그래밍 및/또는 데이터를 저장하기 위한 하나 또는 그 초과의 디바이스들을 나타낼 수 있다. 적어도 하나의 실시예에 따르면, 그러한 디바이스들 중 하나 또는 그 초과는 저장 디바이스(206)를 포함할 수 있다. 저장 디바이스(206)는, 범용 프로세서 또는 특수 목적 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있다. 제한이 아닌 예로서, 저장 디바이스(206)는, 판독-전용 메모리(예컨대, ROM, EPROM, EEPROM), RAM(random access memory), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들, 및/또는 정보를 저장하기 위한 다른 비-일시적인 컴퓨터-판독가능 매체들을 포함할 수 있다. 저장 디바이스(206)는, 프로세싱 회로(202)가 저장 디바이스(206)로부터 정보를 판독하고 저장 디바이스(206)에 정보를 기입할 수 있도록 프로세싱 회로(202)에 커플링될 수 있다. 대안으로, 저장 디바이스(206) 또는 이의 적어도 부분은, 프로세싱 회로(202)에 통합될 수 있거나 프로세싱 회로(202)와 별개일 수 있다.
[0038] 일 예에서, 저장 디바이스(206)는, 프로세싱 회로(202)에 의해 실행될 소프트웨어(208)(예컨대, 호스트 디바이스(200)에 대한 운영 시스템, 하나 또는 그 초과의 애플리케이션들, 및/또는 태스크(task)들/기능들을 구현하는 명령들 또는 코드)를 포함할 수 있다. 다른 구현들에서, 그러한 소프트웨어(208)는 외부 저장 디바이스(234)에 저장될 수 있다. 다양한 구현들에서, 소프트웨어(208)는 보안된 저장소 또는 비-보안 저장소에 저장될 수 있다. 보안 저장소는, 비허가된 사용자들/애플리케이션들에 의해 액세스되는 것에 대해 보안되는 디바이스 또는 저장 영역일 수 있다. 비-보안된 저장소는, 예를 들어, 사용자 또는 비허가된 애플리케이션들에 대해 액세스가능할 수 있는 디바이스 또는 저장 영역이다.
[0039] 일 양상에 따르면, 호스트 디바이스(200)는, 소프트웨어(208)가 프로세싱 회로(202)에 의한 실행을 위해 로딩될 때 소프트웨어(208)를 인증하기 위한 초기 인증 명령들(214)을 포함할 수 있다. 소프트웨어(208)는, 디바이스(200) 내의 또는 디바이스(200) 외부의 비-보안 저장소에 저장될 수 있다. 몇몇 예시들에서, 검증이 항상 먼저 수행되고, 검증이 실패하면 인증이 수행된다. 결과적으로, 소프트웨어가 처음 사용 또는 로딩될 때 검증이 시도될 수 있으며, 이러한 검증은 소프트웨어에 대해 아직 어떠한 검증 태그도 생성되지 않았으므로 실패할 수 있다. 이러한 검증 실패 시, 인증이 수행될 수 있다.
[0040] 다른 예시들에서, 초기 인증 명령들(214)은, 소프트웨어가 실행을 위해 처음 디바이스(200) 또는 프로세싱 회로(202) 상에 로딩될 때 실행될 수 있다. 인증은, 소프트웨어의 유효성, 무결성, 및/또는 인증성(authenticity)을 확인하기 위해 소프트웨어의 암호 시그니쳐를 검증하는 것을 포함할 수 있다.
[0041] 성공적인 인증 시, 검증 태그 생성 명령들(216)은, 소프트웨어(208) 및 디바이스-특정 시크릿 데이터(230)의 함수인 검증 태그(226)를 생성 및 저장하도록 기능할 수 있다. 검증 태그(226)는, 저장 디바이스(206) 또는 외부 저장 디바이스(234)(예컨대, 소프트웨어(208)가 저장된 것과 동일한 외부 저장 디바이스 또는 상이한 외부 저장 디바이스)에 저장될 수 있다. 다양한 구현들에서, 검증 태그들(226)은 보안된 저장소 또는 비-보안 저장소에 저장될 수 있다. 보안 저장소는, 비허가된 사용자들/애플리케이션들에 의해 액세스되는 것에 대해 보안되는 디바이스 또는 저장 영역일 수 있다. 비-보안된 저장소는, 예를 들어, 사용자 또는 비허가된 애플리케이션들에 대해 액세스가능할 수 있는 디바이스 또는 저장 영역이다.
[0042] 호스트 디바이스(200)에 의한 동일한 소프트웨어(208)의 후속 실행들 또는 로딩 시, 초기 인증 프로세스는 회피된다. 대신, 소프트웨어에 대한 이전에 저장된 검증 태그가, 실행을 위해 리트리브된 소프트웨어의 새로운 버전의 검증 태그에 매칭하는지를 검증 태그 비교 명령들(218)이 검증할 수 있다. 각각의 소프트웨어(예컨대, 운영 시스템, 드라이버, 사용자 애플리케이션 등)는 그에 연관된 상이한 검증 태그를 가질 수 있음을 유의한다. 태그의 성공적인 검증 시, 소프트웨어(208)는 실행될 수 있다.
[0043] 일 예에서, 호스트 디바이스(200)는, 소프트웨어(208)가 실행을 위해 로딩될 때 또는 실행에 앞서, 소프트웨어(208)의 초기 인증을 수행하도록 구성될 수 있다. 소프트웨어 인증 모듈/회로(220)는, 소프트웨어(208)가 호스트 디바이스(200)에 의해 로딩 또는 사용될 때, 저장 디바이스(206)에 저장된 초기 인증 명령들(214)에 따라 소프트웨어(208)의 초기 인증(및/또는 소프트웨어의 후속 인증들)을 수행하도록 적응될 수 있다. 인증이 성공적이면, 검증 태그 생성기 모듈/회로(222)는, 시크릿 데이터(230)를 사용하거나 시크릿 데이터(230)에 의해 보안된 소프트웨어(208)에 대한(예컨대, 소프트웨어 코드에 대한) 값(예컨대, 메시지 인증 코드 또는 MAC)을 컴퓨팅함으로써 소프트웨어(208)에 대한 검증 태그를 생성하거나, 발생시키거나, 그리고/또는 획득하도록 적응될 수 있다. 그 다음, 소프트웨어 검증 태그(226)는 저장 디바이스(206)에 저장될 수 있다.
[0044] 동일한 소프트웨어(208)의 후속 로딩 또는 실행들에서, 호스트 디바이스(200)는 소프트웨어의 인증을 다시 수행할 필요가 없다. 오히려, 검증 태그 비교기 모듈/회로(224)는 단지, 소프트웨어(208)가 변경 또는 수정되었는지 여부를 확인하기 위해, 이전에 저장된 검증 태그(226)의 검증을 수행할 수 있다.
[0045] 소프트웨어를 검증하는 것은, 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적일 수 있음을 유의한다. 결과적으로, 소프트웨어 인증을 수행하는 것보다 소프트웨어 검증을 수행함으로써 효율성이 획득된다.
[0046] 일 양상에 따르면, 소프트웨어(208)의 업데이트 시, 새로운 검증 태그가 생성될 수 있다. 오래된 검증 태그가 재사용되지 않을 것임을 보장하기 위해, 일회용 블로우가능 퓨즈들(228)이 검증 태그의 생성에 사용될 수 있다. 소프트웨어(208)가 업데이트 또는 변경될 때마다, 소프트웨어의 재인증이 수행되고 일회용 블로우가능 퓨즈(들)(228) 및/또는 시크릿 데이터(230)의 함수로서 새로운 검증 태그가 생성된다. 일회용 블로우가능 퓨즈(들)(228)는, 소프트웨어 업데이트가 발생할 때마다 변경될 수 있다(예컨대, 하나 또는 그 초과의 퓨즈들이 블로우됨). 이것은, 소프트웨어가 업데이트될 때마다 검증 태그가 변경될 것임을 보장한다.
[0047] 일 양상에서, 검증 태그를 사용한 소프트웨어 검증이 실패하면, 호스트 디바이스(200)는, 공개 키를 사용하여 소프트웨어의 인증을 수행하는 것으로 되돌아갈 수 있다.
소프트웨어 인증 및 검증을 위한 예시적인 제 1 방법
[0048] 제 1 예시적인 구현에 따르면, 보안 내부 저장소 또는 신뢰되는 영구적 저장소가 없는 디바이스들의 경우, 보안 부트 프로세스는, 소프트웨어를 검증하려 시도하는 것 및 그러한 검증이 실패할 경우 소프트웨어를 인증하려 시도하는 것을 포함할 수 있다. 도 3은, 하이브리드 소프트웨어 인증 및 검증을 수행하기 위한 제 1 일반적 방법을 예시한다. 디바이스에 의해 소프트웨어가 리트리브, 수신, 및/또는 획득된다(302). 예를 들면, 소프트웨어는, 소프트웨어의 특정 부트 이미지(image)일 수 있다.
[0049] 소프트웨어가 디바이스 상에서의 실행 또는 사용을 위해 로딩되는 경우, 소프트웨어를 검증 태그에 대하여 검증하려는 시도가 이루어진다. 일 예에서, 소프트웨어에 대한 검증 태그가 (디바이스 상에) 이미 존재하는지에 관한 결정이 이루어질 수 있다(303). 소프트웨어가 이전에 디바이스 상에서 인증되었으면, 소프트웨어에 대한 검증 태그가 발견 및 리트리브될 수 있다(304). 그 다음, 소프트웨어는 검증 태그를 사용하여 검증될 수 있다(306). 일 예에서, 소프트웨어에 대해 새롭게 생성된 검증 태그가 획득되어, 리트리브된 검증 태그와 비교될 수 있다. 소프트웨어가 성공적으로 검증되면(308), 소프트웨어는 실행된다(310).
[0050] 소프트웨어에 대한 어떠한 검증 태그도 존재하지 않고(303) 그리고/또는 소프트웨어 검증이 실패하면(308), 소프트웨어의 인증이 수행될 수 있다(312). 일 예에서, 소프트웨어를 인증하는 것(312)은, 예를 들어, 소프트웨어 배포자에 의해 제공되는 공개 키를 사용하여 소프트웨어의 디지털 시그니쳐를 인증하는 것을 포함할 수 있다. 소프트웨어가 성공적으로 인증되면(314), 소프트웨어에 대한 검증 태그가 생성된다(316). 그 다음, 검증 태그는, 예를 들면, 디바이스 내의 또는 디바이스 외부의 보안 또는 비-보안 저장소에 저장될 수 있다(318). 그렇지 않고 소프트웨어 인증이 실패하면(314), 소프트웨어의 실행은 중단된다(315). 검증 태그가 저장된 후, 소프트웨어는 실행될 수 있다(320).
[0051] 일 예에 따르면, 검증 태그는, 소프트웨어 및 임베딩된 시크릿 데이터 또는 기능적 등가물의 함수(예컨대, 물리적으로 복제 불가능한 함수)로서 생성될 수 있다. 이러한 검증 태그는, 소프트웨어의 후속 실행(예컨대, 처음 부트 이후의 소프트웨어의 부트 시 검증)을 최적화하는데 사용될 수 있다. 일 예에서, 검증 태그는, 디바이스-특정 시크릿 키(즉, 디바이스에게만 알려짐)를 사용하거나 그에 의해 바인딩된, 소프트웨어의 인증된 이미지에 대한 메시지 인증 코드(MAC)를 포함할 수 있다.
[0052] 일 예에서, 시크릿 데이터와 결합된 또는 시크릿 데이터에 의해 바인딩된 검증 태그(예컨대, MAC)의 사용은, 공개 키를 사용하여 소프트웨어에 대한 디지털 시그니쳐를 인증하는 것보다 상당히 더 효율적이다. 검증 태그는 시크릿 데이터에 의해 서명 또는 바인딩될 수 있고, (디바이스 내의 보안되지 않은(insecure) 또는 비-보안 저장소를 포함하는) 임의의 위치에 저장될 수 있음을 유의한다. 소프트웨어가 후속하여 로딩 또는 사용되는 경우, 그것은, 로딩되는 소프트웨어에 대한 새로운 검증 태그(예컨대, 새로운 MAC)를 생성하고 새로운 검증 태그를 이전에 저장된 검증 태그(예컨대, MAC)와 비교한다. 저장된 검증 태그가 탬퍼링되었으면, 시크릿 데이터를 사용하여 검증하는 것은, 새로운 검증 태그와 비교될 때 검증이 실패하는 것을 야기할 것이다.
소프트웨어 인증 및 검증을 위한 예시적인 제 2 방법
[0053] 도 4(도 4a 및 도 4b를 포함함)는, 하이브리드 소프트웨어 인증 및 검증을 수행하기 위한 제 2 일반적 방법을 예시한다. 디바이스에 의해 소프트웨어가 리트리브, 수신, 및/또는 획득된다(402). 그 다음, 예를 들어, 소프트웨어가 디바이스에 로딩될 때, 소프트웨어의 인증이 수행된다(404). 일 예에서, 소프트웨어를 인증하는 것은, 예를 들어, 소프트웨어 배포자에 의해 제공되는 공개 키를 사용하여 소프트웨어의 디지털 시그니쳐를 인증하는 것을 포함할 수 있다. 소프트웨어가 성공적으로 인증되면(406), 소프트웨어에 대한 검증 태그가 생성된다(408). 그 다음, 검증 태그는, 예를 들면, 디바이스 내의 또는 디바이스 외부의 보안 또는 비-보안 저장소에 저장될 수 있다(410). 그렇지 않고 소프트웨어 인증이 실패하면(406), 소프트웨어의 실행은 중단된다(407).
[0054] 후속하여, 소프트웨어가 디바이스 상에 로딩되거나 디바이스에 의해 사용되는 경우, 소프트웨어에 대한 검증 태그가 리트리브된다(412). 일 예에 따르면, 소프트웨어 및 임베딩된 시크릿 데이터 또는 기능적 등가물(예컨대, 물리적으로 복제 불가능한 함수)이 검증 태그를 생성하는데 사용될 수 있다. 이러한 검증 태그는, 소프트웨어의 후속 실행(예컨대, 처음 부트 이후의 소프트웨어의 부트 시 검증)을 최적화하는데 사용될 수 있다. 일 예에서, 검증 태그는, 디바이스-특정 시크릿 키(즉, 디바이스에만 알려짐)를 사용하거나 그에 의해 바인딩된, 소프트웨어의 인증된 이미지에 대한 메시지 인증 코드(MAC)를 포함할 수 있다.
[0055] 그 다음, 검증 태그(414)를 사용하여 (예컨대, 리트리브된 검증 태그를 소프트웨어에 대해 새롭게 생성된 검증 태그와 비교함으로써) 소프트웨어가 검증된다. 소프트웨어가 성공적으로 검증되면(416) 소프트웨어는 실행되고(420), 그렇지 않으면 소프트웨어 실행은 중단된다(418).
[0056] 더 일반적인 의미로, 검증 태그는, 시크릿 데이터와 소프트웨어의 특성을 결합한 임의의 값일 수 있다. 예를 들어, 검증 태그는, 이후 시크릿 데이터에 의해 보안되는, 소프트웨어에 대한 해시일 수 있다. 다른 예에서, 소프트웨어 및 시크릿 키의 비트들은, 후속 검증을 허용하기 위한 그러한 방식으로 결합된다.
[0057] 다른 양상은, 롤백-방지(anti-rollback) 특성을 제공하기 때문에, 공격자는 호스트 디바이스의 저장소(플래시)를 소프트웨어의 오래된 이미지로 간단히 업데이트할 수 없다. 그러한 공격은 소프트웨어 배포자에 의해 제공되는 공개 키를 사용하여 인증을 수행할 것이며, 이는 소프트웨어가 손상된 경우 실패할 것이다. 그러나, 공격자는 또한 (설치된 소프트웨어의 이전 버전으로부터의) 오래된 검증 태그를 저장했을 수 있다. 공격자가 수정된 버전의 소프트웨어와 동작할 검증 태그를 획득할 수 있는 경우, 전체 인증 프로세스가 우회될 수 있다. 그러나, 롤백-방지 특성은, 검증 태그 생성 함수에서 사용되는 입력들의 일부로서 롤백-방지 퓨즈들(또는 등가물)을 사용할 수 있다. 소프트웨어가 업데이트될 때마다, 퓨즈 상태들(이는, 검증 태그 생성에 대한 입력으로서 기능함)이 변경되었기 때문에 임의의 이전 검증 태그가 복제될 수 없도록 다른 퓨즈가 블로우될 수 있다. 이것은, 검증 태그 및 소프트웨어의 오래된 이미지가 동작하는 것을 방지한다.
소프트웨어 인증 및 검증을 위한 예시적인 제 3 방법
[0058] 도 5는, 디바이스 내에서의 로딩 동안 소프트웨어를 검증하기 위한 다른 예시적인 방법을 예시한다. 소프트웨어는, 디바이스 내에 또는 디바이스 외부에, 보안 또는 비-보안 저장소에 저장될 수 있다. 소프트웨어는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증될 수 있으며, 여기서, 소프트웨어는 디바이스 내의 또는 디바이스 외부의 비-보안 저장소에 저장된다(502). 소프트웨어를 인증하는 것은, 소프트웨어에 대한 암호 동작 및 소프트웨어의 디지털 시그니쳐를 포함할 수 있다. 예를 들어, 소프트웨어를 인증하는 것은, 소프트웨어에 대한 시그니쳐를 사용하여 소프트웨어를 인증하기 위해, 소프트웨어 배포자에 의해 제공되는 공개 키를 사용하는 것을 포함할 수 있다. 소프트웨어 배포자는 소프트웨어를 생성 또는 배포하는 당사자 또는 엔티티일 수 있음을 유의한다. 소프트웨어는, 디바이스의 부트 시에 로딩되는 운영 시스템의 일부일 수 있다.
[0059] 소프트웨어의 인증이 성공적이면 소프트웨어에 대한 검증 태그가 생성될 수 있으며, 검증 태그는 소프트웨어 및 적어도 디바이스-특정 시크릿 데이터에 기초한다(504). 검증 태그는 저장될 수 있다(506). 예를 들면, 검증 태그는, 디바이스 내에 또는 디바이스 외부에, 보안 또는 비-보안 저장소에 저장될 수 있다. 일 예에서, 검증 태그를 생성하는 것은, 소프트웨어에 대한 메시지 인증 코드(MAC)를 생성하고 그리고 디바이스-특정 시크릿 데이터를 사용하는 것을 포함할 수 있다. 다른 예에서, 검증 태그는, 이후 시크릿 데이터에 의해 보안되거나 시크릿 데이터에 바인딩되는, 소프트웨어의 해시일 수 있다. 다양한 예들에서, 시크릿 데이터는 디바이스에게만 알려질 수 있고 그리고/또는 디바이스 외부에서 액세스가능하지 않을 수 있다. 시크릿 데이터는 또한 디바이스 내의 PUF(physically unclonable function)에 기초하여 획득될 수 있다.
[0060] 후속하여, 소프트웨어가 실행을 위해 로딩될 때, 소프트웨어의 인증을 회피하면서, 로딩된 소프트웨어가 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 검증 태그를 사용하여 소프트웨어가 (인증되지 않고) 검증될 수 있으며, 여기서, 소프트웨어를 검증하는 것은 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적이다(508).
[0061] 검증 태그는 추가로, 새로운 버전의 소프트웨어가 획득될 때마다 변경되는 디바이스 데이터에 기초하여 생성될 수 있다. 디바이스 데이터는, 디바이스에서 소프트웨어에 대한 새로운 검증 태그를 생성할 때 결코 반복되지 않는다.
[0062] 소프트웨어를 인증하는 것은, 소프트웨어를 검증하는 것보다 더 많은 디바이스의 프로세싱 리소스들 또는 시간을 소모할 수 있다.
[0063] 일 예에서, 검증 태그를 사용한 소프트웨어의 검증이 실패하면(509), 소프트웨어의 재인증이 시도된다(510). 소프트웨어는, 재인증(510)이 성공적인 경우에만 실행된다(512). 그렇지 않고 소프트웨어의 재인증이 실패하면, 소프트웨어의 실행은 중단된다(514).
[0064] 일 양상에 따르면, 소프트웨어가 로딩될 때 소프트웨어를 인증하기보다는, 디바이스는 검증에 이용가능할 수 있는 기존(pre-existing) 검증 태그들 중 하나 또는 그 초과로 검증을 수행하려 시도할 수 있다. 그러한 검증이 실패하거나 어떠한 검증 태그들도 이용가능하지 않으면, 소프트웨어에 대해 인증이 수행된다.
[0065] 다른 양상에서, 새로운 버전의 소프트웨어가 획득될 수 있다. 새로운 버전의 소프트웨어는, 새로운 버전의 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증된다. 새로운 버전의 소프트웨어의 인증이 성공적이면 소프트웨어에 대한 새로운 검증 태그가 생성되며, 새로운 검증 태그는 새로운 버전의 소프트웨어 및 적어도 디바이스-특정 시크릿 데이터에 기초한다. 새로운 검증 태그는 (예컨대, 디바이스 내에 또는 디바이스 외부에) 저장된다. 후속하여, 새로운 버전의 소프트웨어는, 새로운 버전의 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 새로운 버전의 소프트웨어의 재인증을 회피하면서, 새로운 버전의 소프트웨어가 새로운 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 새로운 검증 태그를 사용하여 검증될 수 있다. 새로운 버전의 소프트웨어를 검증하는 것은, 새로운 버전의 소프트웨어를 재인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적일 수 있음을 유의한다.
소프트웨어 인증 및 검증을 위한 예시적인 제 4 방법
[0066] 도 6은, 디바이스 내에서의 로딩 동안 소프트웨어를 검증하기 위한 또 다른 예시적인 방법을 예시한다. 디바이스 내의 또는 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어가 획득된다(602). 일 예에서, 소프트웨어는, 디바이스의 부트 시에 로딩되는 운영 시스템의 일부일 수 있다. 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 사전-생성된 검증 태그를 사용하여 소프트웨어를 검증하려는 시도가 이루어질 수 있다(604). 사전-생성된 검증 태그는 소프트웨어의 이전 인증으로부터 획득될 수 있다. 그러한 검증이 성공적이면(606), 소프트웨어는 실행될 수 있다(608).
[0067] 그렇지 않고 검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않다면, 소프트웨어는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증된다(610). 소프트웨어를 검증하는 것은, 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적일 수 있음을 유의한다. 소프트웨어의 인증이 성공적이면, 소프트웨어 및 디바이스-특정 시크릿 데이터에 기초하여, 소프트웨어에 대한 새로운 검증 태그가 생성된다(612). 시크릿 데이터는 디바이스에게만 알려질 수 있고 그리고/또는 디바이스 외부에서 액세스가능하지 않다. 예를 들면, 시크릿 데이터는 디바이스 내의 물리적으로 복제 불가능한 함수에 기초하여 획득될 수 있다. 그 다음, 새로운 검증 태그는 저장될 수 있다(614). 몇몇 예들에서, 사전-생성된 검증 태그 및/또는 새로운 검증 태그는 디바이스 내의 또는 디바이스 외부의 비-보안 저장소 또는 상이한 비-보안 저장소에 저장될 수 있다.
[0068] 일 예에서, 소프트웨어는 인증될 수 있고, 성공적인 인증 시, 사전-생성된 검증 태그(예컨대, 초기 검증 태그, 제 1 검증 태그, 이전 검증 태그 등)가 생성될 수 있다. 사전-생성된 검증 태그는 소프트웨어의 후속 검증에서 사용하기 위해 저장될 수 있다.
[0069] 일 예에서, 소프트웨어를 인증하는 것은, 소프트웨어에 대한 암호 동작 및 소프트웨어의 암호 시그니쳐를 포함할 수 있다. 예를 들면, 소프트웨어를 인증하는 것은, 소프트웨어에 대한 시그니쳐를 사용하여 소프트웨어를 인증하기 위해 공개 키를 사용하는 것을 포함할 수 있다.
[0070] 다른 예에서, 새로운 검증 태그를 생성하는 것은, 소프트웨어에 대한 메시지 인증 코드(MAC)를 생성하고 그리고 디바이스-특정 시크릿 데이터를 사용하는 것을 포함할 수 있다.
[0071] 몇몇 구현들에서, 새로운 검증 태그는 추가로, 새로운 버전의 소프트웨어가 획득될 때마다 변경되는 디바이스 데이터에 기초하여 생성될 수 있다. 디바이스 데이터는, 디바이스에서 소프트웨어에 대한 새로운 검증 태그를 생성할 때 결코 반복되지 않을 수 있다.
[0072] 소프트웨어의 인증이 실패하면, 소프트웨어의 실행은 중단된다. 일 구현에서, 소프트웨어는, 소프트웨어의 검증이 성공적이거나 소프트웨어의 인증이 성공적인 경우에만 실행된다.
[0073] 새로운 버전의 소프트웨어가 획득될 수 있다. 새로운 버전의 소프트웨어는, 그 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 인증될 수 있다. 새로운 버전의 소프트웨어의 인증이 성공적이면, 새로운 버전의 소프트웨어에 대한 다른 검증 태그가 생성되며, 여기서, 다른 검증 태그는, 새로운 버전의 소프트웨어 및 적어도 디바이스-특정 시크릿 데이터 또는 다른 디바이스-특정 데이터에 기초할 수 있다. 다른 검증 태그는 또한, 후속 사용을 위해 저장될 수 있다. 후속하여, 새로운 버전의 소프트웨어는, 그 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 새로운 버전의 소프트웨어의 재인증을 회피하면서, 새로운 버전의 소프트웨어가 다른 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 다른 검증 태그를 사용하여 검증될 수 있다.
[0074] 다른 양상에 따르면, 검증 태그는, 검증 태그를 디스에이블링하도록 기능할 수 있는 취소가능 인증서에 의해 추가적으로 바인딩될 수 있다. 예를 들면, 취소가능 인증서는 검증을 수행할 시 디바이스에 의해 체크될 수 있다. 디바이스는 인증서 취소 데이터베이스에 질의할 수 있고, 인증서가 취소되었으면 검증은 실패할 것이다. 그러므로, 소프트웨어가 수정되지 않은 경우라도, 대응하는 인증서가 취소되었으면 검증은 계속 실패할 것이다.
[0075] 다른 예는, 실행 이전에 하이브리드 소프트웨어 인증 및 검증을 수행하도록 구성되는 호스트 디바이스(200)와 같은 디바이스를 제공한다. 저장 디바이스(206) 및 프로세싱 회로(202)를 포함하는 디바이스(200)(도 2)가 제공될 수 있다. 저장 디바이스(206)는, 인증 명령들(214) 및/또는 검증 태그 생성 명령들(216) 및 검증 태그 비교 명령들(218)을 저장하도록 기능할 수 있다. 프로세싱 회로(202)는, 디바이스(200) 내의 또는 디바이스(200) 외부의 비-보안 저장소에 저장된 소프트웨어를 획득(예컨대, 버스(232)를 통해 또는 통신 인터페이스(204)로부터의 리트리브, 판독 등)하도록 구성될 수 있다.
[0076] 검증 태그 비교기 모듈/회로(224)는, 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 소프트웨어의 인증을 회피하면서, 소프트웨어가 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, (예컨대, 소프트웨어 검증 태그들(226) 사이에 저장된) 사전-생성된 검증 태그를 사용하여 소프트웨어를 검증하려 시도하도록 기능할 수 있다. 검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않다면, 소프트웨어 인증 모듈/회로(220)는, 소프트웨어가 디바이스에 의한 실행을 위해 로딩될 때 소프트웨어를 인증하도록 기능할 수 있다. 소프트웨어의 인증이 성공적이면, 검증 태그 생성기 모듈/회로(222)는, 소프트웨어 및 디바이스-특정 시크릿 데이터에 기초하여, 소프트웨어에 대한 새로운 검증 태그를 생성하도록 기능할 수 있다. 그 다음, 새로운 검증 태그는 소프트웨어 검증 태그(들)(226) 사이에 저장될 수 있다. 이러한 프로세스는, 소프트웨어의 검증이 소프트웨어의 인증보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적이기 때문에 효율성의 개선들을 달성한다. 따라서, 인증이 처음에 더 많은 시간 또는 리소스를 소모할 수 있을지라도, 소프트웨어의 후속 로딩들은, 인증 대신 검증을 사용하는 것으로 인해, 더 신속하고 효율적이다.
[0077] 디바이스는 또한, 프로세싱 회로에 커플링되는 복수의 일회용 블로우 퓨즈들(228)을 포함할 수 있으며, 여기서, 새로운 검증 태그 및/또는 사전-생성된 검증 태그는 추가로, 일회용 블로우 퓨즈들로부터의 상태들에 기초하여 생성되고, 복수의 일회용 블로우 퓨즈들은 업데이트된 버전의 소프트웨어가 획득될 때마다 변경될 수 있다.
[0078] 도 1, 도 2, 도 3, 도 4, 도 5, 및/또는 도 6에 예시된 컴포넌트들, 단계들, 특징들 및/또는 기능들 중 하나 또는 그 초과는 단일 컴포넌트, 단계, 특징 또는 기능으로 재배열 및/또는 결합되거나 또는 몇몇의 컴포넌트들, 단계들 또는 기능들로 구현될 수 있다. 부가적인 엘리먼트들, 컴포넌트들, 단계들 및/또는 기능들은 또한 본 개시내용의 범위를 벗어나지 않으면서 부가될 수 있다. 도 2에 예시된 장치, 디바이스들 및/또는 컴포넌트들은 도 1, 도 3, 도 4, 도 5, 및/또는 도 6에 설명된 방법들, 특징들 또는 단계들 중 하나 또는 그 초과를 수행하도록 구성될 수 있다. 본원에 설명된 신규한 알고리즘들은 또한 효율적으로 소프트웨어에서 구현되고 그리고/또는 하드웨어에 임베딩될 수 있다.
[0079] 또한, 적어도 몇몇 구현들은 흐름도, 흐름 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시된 프로세스로서 설명되었음을 유의한다. 흐름도는 순차적 프로세스로서 동작들을 설명할 수 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 부가하여, 동작들의 순서가 재배열될 수 있다. 프로세스는, 프로세스의 동작들이 완료되는 경우 종결된다. 프로세스는, 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응하는 경우, 프로세스의 종결은 호출 함수 또는 메인 함수에 대한 함수의 리턴에 대응한다.
[0080] 또한, 실시예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 이들의 임의의 결합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현되는 경우, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 저장 매체 또는 다른 저장소(들)와 같은 머신-판독가능 매체에 저장될 수 있다. 프로세서는 필요한 태스크들을 수행할 수 있다. 코드 세그먼트는 프로시저(procedure), 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 명령문(statement)들의 임의의 결합을 나타낼 수 있다. 코드 세그먼트는, 정보, 데이터, 인수들, 파라미터들 또는 메모리 컨텐츠들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 인수들, 파라미터들, 데이터 등은, 메모리 공유, 메시지 전달, 토큰(token) 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩 또는 송신될 수 있다.
[0081] "머신-판독가능 매체", "컴퓨터-판독가능 매체", 및/또는 "프로세서-판독가능 매체"라는 용어들은 휴대용 또는 고정형 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장하거나 포함하거나 또는 반송할 수 있는 다양한 다른 비-일시적인 매체들을 포함(그러나 이에 제한되지 않음)할 수 있다. 따라서, 본원에 설명되는 다양한 방법들은 부분적으로 또는 완전히, "머신-판독가능 매체", "컴퓨터-판독가능 매체", 및/또는 "프로세서-판독가능 매체"에 저장될 수 있고 그리고 하나 또는 그 초과의 프로세서들, 머신들 및/또는 디바이스들에 의해 실행될 수 있는 명령들 및/또는 데이터에 의해 구현될 수 있다.
[0082] 본원에 개시된 예들과 관련하여 설명된 방법들 또는 알고리즘들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로 또는 이들 둘 모두의 결합으로, 프로세싱 유닛, 프로그래밍 명령들, 또는 다른 지시들의 형태로 구현될 수 있으며, 단일 디바이스에 포함되거나 또는 다수의 디바이스들에 걸쳐 분산될 수 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수 있다.
[0083] 본원에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 결합들로서 구현될 수 있음을 당업자들은 추가적으로 인식할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능의 관점들에서 일반적으로 위에 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 특정 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다.
[0084] 본원에 설명된 실시예들의 다양한 특징들은, 본 개시내용의 범위를 벗어남이 없이 상이한 시스템들에서 구현될 수 있다. 전술한 실시예들은 단지 예들이며 본 개시내용을 제한하는 것으로서 해석되지 않아야 한다는 것이 유의되어야 한다. 실시예들의 설명은 청구항들의 범위를 제한하는 것이 아니라 예시하도록 의도된다. 그러므로, 본 교시들은 다른 타입들의 장치들에 쉽게 적용될 수 있으며, 많은 대안들, 수정들, 및 변형들이 당업자들에게 명백할 것이다.

Claims (22)

  1. 디바이스 내에서 로딩 동안 소프트웨어를 검증(verify)하기 위한 방법으로서,
    상기 디바이스에서, 상기 디바이스 내의 또는 상기 디바이스 외부의 비-보안(non-secure) 저장소에 저장된 소프트웨어를 획득하는 단계;
    상기 디바이스의 검증 태그 비교기 회로에서, 상기 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 상기 소프트웨어의 인증(authentication)을 회피하면서, 상기 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 상기 사전-생성된 검증 태그를 사용하여 상기 소프트웨어를 검증하려 시도하는 단계;
    검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않은 경우,
    소프트웨어 인증 회로에서, 상기 소프트웨어가 상기 디바이스에 의한 실행을 위해 로딩될 때 상기 소프트웨어를 인증하는 단계,
    상기 디바이스의 검증 태그 생성기 회로에서, 상기 소프트웨어의 인증이 성공적인 경우 상기 소프트웨어에 대한 새로운 검증 태그를 생성하는 단계 ― 상기 새로운 검증 태그는, 상기 소프트웨어, 디바이스-특정 시크릿(secret) 데이터, 및 하나 또는 그 초과의 일회용 블로우가능 퓨즈(one-time blowable fuse)들로부터의 하나 또는 그 초과의 상태들을 포함하는 디바이스 데이터에 기초하고, 상기 하나 또는 그 초과의 일회용 블로우가능 퓨즈들 중 적어도 하나의 일회용 블로우가능 퓨즈는 새로운 버전의 소프트웨어가 획득될 때마다 상기 디바이스 데이터를 변경하도록 블로우(blow)됨 ―, 및
    상기 새로운 검증 태그를 저장 디바이스에 저장하는 단계
    를 포함하며,
    상기 소프트웨어를 검증하는 것은, 상기 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적(resource intensive)인, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 사전-생성된 검증 태그는 상기 소프트웨어의 이전 인증으로부터 획득되는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 소프트웨어 인증 회로에서 상기 소프트웨어를 인증하고 그리고 상기 검증 태그 생성기 회로에서 상기 사전-생성된 검증 태그를 생성하는 단계; 및
    상기 소프트웨어의 후속 검증에서 사용하기 위해 상기 사전-생성된 검증 태그를 상기 저장 디바이스에 저장하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 소프트웨어를 인증하는 단계는, 상기 소프트웨어에 대한 암호(cryptographic) 동작 및 상기 소프트웨어의 암호 시그니쳐(signature)를 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 소프트웨어를 인증하는 단계는, 상기 소프트웨어에 대한 시그니쳐를 사용하여 상기 소프트웨어를 인증하기 위해 공개 키(public key)를 사용하는 단계를 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 새로운 검증 태그를 생성하는 단계는, 상기 소프트웨어에 대한 메시지 인증 코드(MAC; message authentication code)를 생성하고 그리고 상기 디바이스-특정 시크릿 데이터를 사용하는 단계를 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 디바이스-특정 시크릿 데이터는 상기 디바이스에게만 알려지는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 디바이스-특정 시크릿 데이터는 상기 디바이스 외부에서 액세스가능하지 않은, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 사전-생성된 검증 태그 및/또는 상기 새로운 검증 태그는 상기 디바이스 내의 또는 상기 디바이스 외부의 상기 비-보안 저장소 또는 상이한 비-보안 저장소에 저장되는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  10. 제 1 항에 있어서,
    상기 소프트웨어는, 상기 디바이스의 부트(boot) 시에 로딩되는 운영 시스템의 일부인, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  11. 제 1 항에 있어서,
    상기 디바이스-특정 시크릿 데이터는 상기 디바이스 내의 물리적으로 복제 불가능한(unclonable) 함수에 기초하여 획득되는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  12. 제 1 항에 있어서,
    상기 디바이스에서, 상기 소프트웨어의 인증이 실패하는 경우 상기 소프트웨어의 실행을 중단(abort)하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  13. 제 1 항에 있어서,
    상기 디바이스에서, 상기 소프트웨어의 인증이 성공적인 경우 상기 소프트웨어를 실행하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  14. 제 1 항에 있어서,
    상기 디바이스에서, 새로운 버전의 소프트웨어를 획득하는 단계;
    상기 소프트웨어 인증 회로에서, 상기 새로운 버전의 소프트웨어가 상기 디바이스에 의한 실행을 위해 로딩될 때 상기 새로운 버전의 소프트웨어를 인증하는 단계;
    상기 검증 태그 생성기 회로에서, 상기 새로운 버전의 소프트웨어의 인증이 성공적인 경우 상기 새로운 버전의 소프트웨어에 대한 다른 검증 태그를 생성하는 단계 ― 상기 다른 검증 태그는, 상기 새로운 버전의 소프트웨어, 상기 디바이스-특정 시크릿 데이터, 및 변경된 디바이스 데이터에 기초함 ―; 및
    상기 다른 검증 태그를 상기 저장 디바이스에 저장하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  15. 제 14 항에 있어서,
    상기 검증 태그 비교기 회로에서, 상기 새로운 버전의 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 상기 새로운 버전의 소프트웨어의 재인증을 회피하면서, 상기 새로운 버전의 소프트웨어가 상기 다른 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 상기 다른 검증 태그를 사용하여 상기 새로운 버전의 소프트웨어를 검증하려 시도하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  16. 제 14 항에 있어서,
    상기 새로운 검증 태그는 추가로, 취소가능 인증서(revocable certificate)에 기초하고,
    상기 방법은, 상기 디바이스에서, 상기 소프트웨어를 실행하기에 앞서 상기 취소가능 인증서가 여전히 유효한지 여부를 확인하는 단계를 더 포함하는, 디바이스 내에서 로딩 동안 소프트웨어를 검증하기 위한 방법.
  17. 디바이스로서,
    인증 및 검증 명령들을 저장하기 위한 저장 디바이스;
    상기 저장 디바이스에 커플링되는 프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    상기 디바이스 내의 또는 상기 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어를 획득하고,
    상기 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 상기 소프트웨어의 인증을 회피하면서, 상기 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 상기 사전-생성된 검증 태그를 사용하여 상기 소프트웨어를 검증하려 시도하고,
    검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않은 경우,
    상기 소프트웨어가 상기 디바이스에 의한 실행을 위해 로딩될 때 상기 소프트웨어를 인증하고,
    상기 소프트웨어의 인증이 성공적인 경우 상기 소프트웨어에 대한 새로운 검증 태그를 생성하고 ― 상기 새로운 검증 태그는, 상기 소프트웨어, 디바이스-특정 시크릿 데이터, 및 하나 또는 그 초과의 일회용 블로우가능 퓨즈들로부터의 하나 또는 그 초과의 상태들을 포함하는 디바이스 데이터에 기초하고, 상기 하나 또는 그 초과의 일회용 블로우가능 퓨즈들 중 적어도 하나의 일회용 블로우가능 퓨즈는 새로운 버전의 소프트웨어가 획득될 때마다 상기 디바이스 데이터를 변경하도록 블로우됨 ―, 그리고
    상기 새로운 검증 태그를 저장하도록
    구성되고,
    상기 소프트웨어의 검증은, 상기 소프트웨어의 인증보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적인, 디바이스.
  18. 제 17 항에 있어서,
    상기 프로세싱 회로는 추가로,
    상기 소프트웨어를 인증하고 그리고 상기 사전-생성된 검증 태그를 생성하고; 그리고
    상기 소프트웨어의 후속 검증에서 사용하기 위해 상기 사전-생성된 검증 태그를 저장하도록
    구성되는, 디바이스.
  19. 제 17 항에 있어서,
    상기 사전-생성된 검증 태그 및/또는 상기 새로운 검증 태그는 상기 디바이스 내의 또는 상기 디바이스 외부의 상기 비-보안 저장소 또는 상이한 비-보안 저장소에 저장되는, 디바이스.
  20. 제 17 항에 있어서,
    상기 디바이스-특정 시크릿 데이터는 상기 디바이스 외부에 알려지지 않고 상기 디바이스 외부에서 액세스가능하지 않은, 디바이스.
  21. 디바이스로서,
    상기 디바이스 내의 또는 상기 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어를 획득하기 위한 수단;
    상기 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 상기 소프트웨어의 인증을 회피하면서, 상기 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 상기 사전-생성된 검증 태그를 사용하여 상기 소프트웨어를 검증하려 시도하기 위한 수단;
    검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않은 경우, 상기 소프트웨어가 상기 디바이스에 의한 실행을 위해 로딩될 때 상기 소프트웨어를 인증하기 위한 수단;
    상기 소프트웨어의 인증이 성공적인 경우 상기 소프트웨어에 대한 새로운 검증 태그를 생성하기 위한 수단 ― 상기 새로운 검증 태그는, 상기 소프트웨어, 디바이스-특정 시크릿 데이터, 및 하나 또는 그 초과의 일회용 블로우가능 퓨즈들로부터의 하나 또는 그 초과의 상태들을 포함하는 디바이스 데이터에 기초하고, 상기 하나 또는 그 초과의 일회용 블로우가능 퓨즈들 중 적어도 하나의 일회용 블로우가능 퓨즈는 새로운 버전의 소프트웨어가 획득될 때마다 상기 디바이스 데이터를 변경하도록 블로우됨 ―; 및
    상기 새로운 검증 태그를 저장하기 위한 수단을 포함하며,
    상기 소프트웨어를 검증하는 것은, 상기 소프트웨어를 인증하는 것보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적인, 디바이스.
  22. 디바이스로서,
    인증 및 검증 명령들을 저장하기 위한 저장 디바이스;
    상기 저장 디바이스에 커플링되는 프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    상기 디바이스 내의 또는 상기 디바이스 외부의 비-보안 저장소에 저장된 소프트웨어를 획득하고,
    상기 소프트웨어가 실행을 위해 로딩될 때, 로딩되는 상기 소프트웨어의 인증을 회피하면서, 상기 소프트웨어가 사전-생성된 검증 태그를 생성하는데 사용된 소프트웨어와 동일하다는 것을 확인하기 위해, 상기 사전-생성된 검증 태그를 사용하여 상기 소프트웨어를 검증하려 시도하고,
    검증이 실패하거나 어떠한 사전-생성된 검증 태그도 이용가능하지 않은 경우,
    상기 소프트웨어가 상기 디바이스에 의한 실행을 위해 로딩될 때 상기 소프트웨어를 인증하고,
    상기 소프트웨어의 인증이 성공적인 경우 상기 소프트웨어에 대한 새로운 검증 태그를 생성하고 ― 상기 새로운 검증 태그는, 상기 소프트웨어, 디바이스-특정 시크릿 데이터, 및 하나 또는 그 초과의 하드웨어 컴포넌트들로부터의 하나 또는 그 초과의 상태들을 포함하는 디바이스 데이터에 기초하고, 상기 디바이스 데이터는 새로운 버전의 소프트웨어가 획득될 때마다 변경되고, 상기 디바이스 데이터는 상기 새로운 검증 태그가 생성될 때 반복되지 않음 ―, 그리고
    상기 새로운 검증 태그를 저장하도록
    구성되고,
    상기 소프트웨어의 검증은, 상기 소프트웨어의 인증보다 시간을 덜 소모하고 그리고/또는 덜 리소스 집약적인, 디바이스.
KR1020177029609A 2015-04-15 2016-03-22 보안 소프트웨어 인증 및 검증 KR101904303B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/687,783 2015-04-15
US14/687,783 US9697359B2 (en) 2015-04-15 2015-04-15 Secure software authentication and verification
PCT/US2016/023631 WO2016167926A1 (en) 2015-04-15 2016-03-22 Secure software authentication and verification

Publications (2)

Publication Number Publication Date
KR20170118972A true KR20170118972A (ko) 2017-10-25
KR101904303B1 KR101904303B1 (ko) 2018-10-04

Family

ID=55646917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177029609A KR101904303B1 (ko) 2015-04-15 2016-03-22 보안 소프트웨어 인증 및 검증

Country Status (7)

Country Link
US (1) US9697359B2 (ko)
EP (1) EP3284000B1 (ko)
JP (1) JP6371919B2 (ko)
KR (1) KR101904303B1 (ko)
CN (1) CN107430658B (ko)
TW (1) TWI620092B (ko)
WO (1) WO2016167926A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220059866A (ko) * 2020-11-03 2022-05-10 유비벨록스(주) 보안 부트 검증 방법 및 이를 위한 보안 칩

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
US10984136B2 (en) * 2017-04-21 2021-04-20 Micron Technology, Inc. Secure memory device with unique identifier for authentication
US11321466B2 (en) 2018-03-09 2022-05-03 Qualcomm Incorporated Integrated circuit data protection
US11664995B2 (en) * 2018-04-20 2023-05-30 Vishal Gupta Decentralized document and entity verification engine
CN110096887B (zh) * 2019-03-22 2020-06-30 阿里巴巴集团控股有限公司 一种可信计算方法及服务器
KR20220026079A (ko) 2020-08-25 2022-03-04 삼성전자주식회사 스토리지 장치
TWI759874B (zh) 2020-09-22 2022-04-01 明泰科技股份有限公司 分散式的軟體驗證系統
US11423154B2 (en) * 2020-10-26 2022-08-23 Micron Technology, Inc. Endpoint authentication based on boot-time binding of multiple components
US11520895B2 (en) * 2020-12-07 2022-12-06 Samsung Electronics Co., Ltd. System and method for dynamic verification of trusted applications
JP2023084913A (ja) * 2021-12-08 2023-06-20 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム
US20230244790A1 (en) * 2022-02-01 2023-08-03 Aptiv Technologies Limited Accelerated Secure Boot for Embedded Controllers
EP4228187B1 (en) 2022-02-15 2024-06-19 Aptiv Technologies AG Integrity tests for mixed analog digital systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734819A (en) * 1994-10-12 1998-03-31 International Business Machines Corporation Method and apparatus for validating system operation
US20080133929A1 (en) * 2004-10-11 2008-06-05 Christian Gehrmann Secure Loading And Storing Of Data In A Data Processing Device
US20090193211A1 (en) * 2008-01-24 2009-07-30 Broadcom Corporation Software authentication for computer systems
US7911857B1 (en) * 2009-06-10 2011-03-22 Juniper Networks, Inc. Preamble detection and postamble closure for a memory interface controller

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961852B2 (en) * 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
EP1645931A1 (en) * 2004-10-11 2006-04-12 Telefonaktiebolaget LM Ericsson (publ) Secure loading and storing of data in a data processing device
US8290150B2 (en) * 2007-05-11 2012-10-16 Validity Sensors, Inc. Method and system for electronically securing an electronic device using physically unclonable functions
US9009328B2 (en) * 2007-11-30 2015-04-14 International Business Machines Corporation System and method for dynamic negotiation of device name with wildcard character
CN101610452B (zh) 2009-07-15 2011-06-01 西安西电捷通无线网络通信股份有限公司 一种传感器网络鉴别与密钥管理机制的融合方法
KR101714108B1 (ko) 2009-12-04 2017-03-08 크라이프토그라피 리서치, 인코포레이티드 검증가능 누출 방지 암호화 및 복호화
EP2348454A1 (en) * 2010-01-20 2011-07-27 Thomson Licensing A method of and a system for execution of a software application
US8539610B2 (en) * 2010-10-29 2013-09-17 Nokia Corporation Software security
DE102011054410B4 (de) * 2011-10-12 2014-09-25 Infineon Technologies Ag Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
US8745371B2 (en) 2011-12-29 2014-06-03 Unisys Corporation Unified network architecture having storage devices with secure boot devices
US9281948B2 (en) * 2012-02-09 2016-03-08 Microsoft Technology Licensing, Llc Revocation information for revocable items
US8792645B2 (en) 2012-12-18 2014-07-29 Honeywell International Inc. Authentication and data security for wireless networks
US20140250290A1 (en) 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
US9201642B2 (en) * 2013-03-15 2015-12-01 International Business Machines Corporation Extending platform trust during program updates
US9088574B2 (en) * 2013-07-18 2015-07-21 International Business Machines Corporation Subscriber identity module-based authentication of a wireless device and applications stored thereon
JP2015049785A (ja) * 2013-09-03 2015-03-16 株式会社デンソー プログラム処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734819A (en) * 1994-10-12 1998-03-31 International Business Machines Corporation Method and apparatus for validating system operation
US20080133929A1 (en) * 2004-10-11 2008-06-05 Christian Gehrmann Secure Loading And Storing Of Data In A Data Processing Device
US20090193211A1 (en) * 2008-01-24 2009-07-30 Broadcom Corporation Software authentication for computer systems
US7911857B1 (en) * 2009-06-10 2011-03-22 Juniper Networks, Inc. Preamble detection and postamble closure for a memory interface controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220059866A (ko) * 2020-11-03 2022-05-10 유비벨록스(주) 보안 부트 검증 방법 및 이를 위한 보안 칩

Also Published As

Publication number Publication date
JP6371919B2 (ja) 2018-08-08
US20160306976A1 (en) 2016-10-20
KR101904303B1 (ko) 2018-10-04
TWI620092B (zh) 2018-04-01
JP2018512010A (ja) 2018-04-26
WO2016167926A1 (en) 2016-10-20
EP3284000B1 (en) 2018-09-05
US9697359B2 (en) 2017-07-04
EP3284000A1 (en) 2018-02-21
CN107430658A (zh) 2017-12-01
TW201706898A (zh) 2017-02-16
CN107430658B (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
KR101904303B1 (ko) 보안 소프트웨어 인증 및 검증
JP5703391B2 (ja) 耐タンパー性ブート処理のためのシステム及び方法
US20210240869A1 (en) Secure memory device with unique identifier for authentication
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
US7484105B2 (en) Flash update using a trusted platform module
EP2989741B1 (en) Generation of working security key based on security parameters
JP2007512787A (ja) トラステッド・モバイル・プラットフォーム・アーキテクチャ
US10282549B2 (en) Modifying service operating system of baseboard management controller
CN115943610B (zh) 安全签署配置设置
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
US9843451B2 (en) Apparatus and method for multi-state code signing
US20140143896A1 (en) Digital Certificate Based Theft Control for Computers
CN107924440B (zh) 用于管理容器的方法、系统和计算机可读介质
NL2022902B1 (en) Integrated circuit device for loT applications
CN109302442B (zh) 一种数据存储证明方法及相关设备
Plappert et al. Evaluating the applicability of hardware trust anchors for automotive applications
US10067770B2 (en) Platform key hierarchy
US20240126886A1 (en) Trusted Computing for Digital Devices
CN111357003A (zh) 预操作系统环境中的数据保护
KR20070017455A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한안전한 보호 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant