KR102132534B1 - 코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증 - Google Patents

코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증 Download PDF

Info

Publication number
KR102132534B1
KR102132534B1 KR1020180115600A KR20180115600A KR102132534B1 KR 102132534 B1 KR102132534 B1 KR 102132534B1 KR 1020180115600 A KR1020180115600 A KR 1020180115600A KR 20180115600 A KR20180115600 A KR 20180115600A KR 102132534 B1 KR102132534 B1 KR 102132534B1
Authority
KR
South Korea
Prior art keywords
host
boot process
legitimate
signature
nvm
Prior art date
Application number
KR1020180115600A
Other languages
English (en)
Other versions
KR20190082658A (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 KR20190082658A publication Critical patent/KR20190082658A/ko
Application granted granted Critical
Publication of KR102132534B1 publication Critical patent/KR102132534B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • 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/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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
    • 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/3239Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

메모리 서브시스템은 비휘발성 메모리(NVM)를 액세스하기 위한 메모리 인터페이스, 호스트와 통신하기 위한 호스트 인터페이스, 및 프로세서를 포함한다. 상기 프로세서는 상기 호스트에 의해 사용되고 상기 NVM에 저장된 프로그램 코드에 대한 서명을 계산하고, 상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 상기 부팅 프로세스가 정당한지 여부를 확인하고, 상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하도록 구성된다.

Description

코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증{SECURE CLIENT AUTHENTICATION BASED ON CONDITIONAL PROVISIONING OF CODE SIGNATURE}
본 발명은 일반적으로 보안 통신 및 데이터 저장에 관한 것으로, 특히 보안 클라이언트 장치의 인증을 위한 방법 및 시스템에 관한 것이다.
서버와 통신하는 보안 클라이언트(secure client)는 때로는 서버에 대해 자체 인증하고, 적대적인 제3자에 의해 손상되지 않았음을 제공하도록 요구된다. 이러한 종류의 인증 프로세스를 위해 다양한 솔루션이 제안되었다. 일부 솔루션은 클라이언트의 보안 아이덴티티(secure identity)를 작성하여 서버에 보고하는 단계를 포함한다. 예를 들어, 트러스티드 컴퓨팅 그룹(TCG; Trusted Computing Group)은 "장치 식별자 구성 엔진에 대한 신뢰할 수 있는 플랫폼 아키텍처 하드웨어 요구 사항(Trusted Platform Architecture Hardware Requirements for a Device Identifier Composition Engine)", 패밀리(Family) 2.0, 레벨(Level) 00, 리비전(Revision) 69, 2016년 12 월 16 일의, "장치 식별자 구성 엔진(Device Identifier Composition Engine)"(DICE)이라는 솔루션을 명시하고, 이는 본원에 참고로 인용된다.
본원에 설명되는 본 발명의 일 실시예는 비휘발성 메모리(non-volatile memory)(NVM)를 액세스하기(accessing) 위한 메모리 인터페이스(memory interface), 호스트(host)와 통신하기 위한 호스트 인터페이스(host interface), 및 프로세서(processor)를 포함하는 메모리 서브시스템(memory subsystem)을 제공한다. 상기 프로세서는 상기 호스트에 의해 사용되고 상기 NVM에 저장된 프로그램 코드에 대한 서명을 계산하고, 상기 호스트에 의해 수행된 부팅 프로세스(boot process)를 검출할 때, 상기 부팅 프로세스가 정당(legitimate)한지 여부를 확인하고, 상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버(remote server)에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하도록 구성된다.
일부 실시예에서, 상기 프로세서는 상기 서명을 휘발성 레지스터(volatile register)에 저장하고, 상기 부팅 프로세스가 정당하지 않다는 검출에 응답하여 상기 휘발성 레지스터를 클리어(clear)하도록 구성된다. 일부 실시예에서, 상기 프로세서는 상기 NVM에 대한 상기 호스트의 하나 이상의 제1 액세스가 정당한 것으로서 미리 정의된 메모리 어드레스의 범위에 어드레싱되는지 확인함으로써, 상기 부팅 프로세스가 정당한지 여부를 확인하도록 구성된다. 일부 실시예에서, 상기 부팅 프로세스가 정당한 것으로 확인될 때, 상기 프로세서는 상기 정당한 것으로서 미리 정의된 메모리 어드레스의 범위를 수정하도록 구성된다.
본 발명의 일 실시예에 따르면, 비휘발성 메모리(NVM), 호스트 및 메모리 서브시스템을 포함하는 보안 클라이언트 장치가 추가적으로 제공된다. 상기 메모리 서브시스템은 상기 호스트를 위해 상기 NVM에 액세스하고, 상기 호스트에 의해 사용되고 상기 NVM에 저장된 프로그램 코드에 대한 서명을 계산하고, 상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 상기 부팅 프로세스가 정당한지 여부를 확인하고, 상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하도록 구성된다.
본 발명의 일 실시예에 따르면, 호스트에 의해 사용되고 비휘발성 메모리(NVM)에 저장된 프로그램 코드에 대한 서명을 계산하는 단계를 포함하는 방법이 추가적으로 제공된다. 상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 확인(verification)은 상기 부팅 프로세스가 정당한지 여부로 이뤄진다. 서명(signature)은 상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 제공된다.
본 발명은 도면과 함께 그 실시예의 다음의 상세한 설명으로부터 보다 잘 이해될 것이다.
도 1은 본 발명의 일 실시예에 따른, 원격 서버와 통신하는 보안 클라이언트 장치를 개략적으로 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른, 코드 서명의 조건부 권한 설정을 위한 방법을 개략적으로 도시한 흐름도이다.
개요
본원에 설명된 본 발명의 실시예들은 원격 서버에 대한 보안 클라이언트 장치의 인증을 위한 개선된 방법 및 시스템을 제공한다. 개시된 실시예에서, 보안 클라이언트 장치는 비휘발성 메모리(NVM), 호스트, 및 호스트를 대신하여 NVM에 액세스하는 메모리 서브시스템을 포함한다. 보안 클라이언트 장치와 서버 간의 인증 프로세스의 일부로서, 호스트는 호스트의 프로그램 코드(소프트웨어 코드)의 일부 또는 전부에 대해 계산된 서명을 서버에 제공하도록 요구되며, 이는 NVM에 저장된다.
이러한 프로세스의 가능한 보안 취약점은 적대적인 제3 자가 올바른 서명에 대한 액세스를 얻을 수 있다는 것이다. 제3 자는 올바른 서명을 사용하여 서버에 대해 자체 인증을 할 수 있지만, 로그 프로그램 코드(rogue program code)를 사용하여 서버와 통신할 수 있다. 일부 실시예에서, 보안 클라이언트 장치의 메모리 서브시스템은 보안 클라이언트 장치의 부팅 프로세스가 정당하다는 것을 확인하는 경우에만 호스트에 서명을 제공함으로써 이 취약점 및 다른 취약점을 제거한다.
일 예시적인 실시예에서, 메모리 서브시스템은 프로그램 코드에 대한 서명을 계산하고, 휘발성 레지스터에 서명을 저장한다. 이 준비 단계는 보안 클라이언트 장치가 부팅되기 전에 임의의 적절한 시간에 수행될 수 있다. 나중 시점에서(At a later point in time), 메모리 서브시스템은 보안 클라이언트 장치의 부팅 프로세스의 시작을 검출한다. 예를 들어, 메모리 서브시스템은 호스트로부터 NVM으로 발행된 (하나 이상의) 제1 판독 명령을 검출할 수 있다. 메모리 서브시스템은 부팅 프로세스가 정당한지 아닌지, 예를 들어 제1 판독 명령이 정당한 부팅 코드를 포함하는 것으로 알려진 메모리 어드레스로 어드레싱되는지 여부를 체크함으로써 확인한다. 부팅 프로세스가 불법(illegitimate)인 것 같으면, 메모리 서브시스템은 서명이 있는 휘발성 레지스터의 콘텐츠를 삭제한다.
메모리 서브시스템이 상술한 방식으로 동작할 때, 정당한 부팅 프로세스를 수행하는 호스트만이 올바른 서명을 서버에 제공할 수 있다. 불법 부팅 프로세스에 의해 특징 지어진(characterized), 로그 호스트(rogue host)는 메모리 서브시스템으로부터 올바른 서명을 수신하지 못하며, 서버를 자체 인증할 수 없다.
일부 실시예에서, 정당한 코드가 정당한 것으로서 미리 정의된 어드레스의 범위로부터 부팅되면, 코드는 이 어드레스 범위를 수정(예를 들어, 확장)하도록 허용된다. 이 기능은 서명의 삭제를 유발하지(causing) 않고 더 큰 어드레스 범위로부터 정당한 코드가 계속 실행될 수 있도록 한다.
개시된 기술들은 일반적으로 메모리 서브시스템 내의 하드웨어에 구현되며, 호스트에 투과성(transparent)이다. 본원에 설명된 기술들은 구현하기 간단하지만, 동시에 보안의 높은 수준을 제공한다. 개시된 기술들은 다양한 인증 프레임워크(authentication frameworks), 예를 들어 TCG DICE 프레임워크(TCG DICE framework)에 내장될 수 있다.
시스템 설명
도 1은 본 발명의 실시예에 따라 보안 클라이언트 장치(24)가 통신 네트워크(32)를 통해 원격 서버(28)와 통신하는 시스템(20)을 개략적으로 도시하는 블록도이다. 보안 클라이언트 장치(24) 및 원격 서버(28)는 간단 명료하게 하기 위해 간단히 "클라이언트" 및 "서버"라고 한다.
일 예시적인 실시예에서, 클라이언트(24)는 사물 인터넷(IoT; Internet-of-Things) 단말기의 일부이고, 서버(28)는 IoT 애플리케이션 서버를 포함한다. 다른 예시적인 실시예에서, 클라이언트(24)는 차량의 자동차 서브시스템의 일부이고, 서버(28)는 차량의 중앙 컴퓨터를 포함한다. 또한 대안적으로, 클라이언트(24) 및 서버(28)는 임의의 다른 적합한 애플리케이션을 위해 사용되는 임의의 다른 적합한 컴퓨팅 플랫폼을 포함할 수 있다. 네트워크(32)는 임의의 적합한 통신 네트워크, 예컨대 근거리 통신망(LAN; Local-Area Network), 인터넷과 같은 광역 네트워크(WAN; Wide-Area Network), 셀룰러 네트워크(cellular network) 또는 둘 이상의 네트워크의 조합을 포함할 수 있다.
도 1의 예시에서, 클라이언트(24)는 호스트 프로세서(36)(간단히 "호스트"라고 함), 비휘발성 메모리(NVM)(40) 및 메모리 서브시스템(44)을 포함한다. 본 예시에서, NVM(40)은 플래시 메모리를 포함하지만, NVM의 다른 적절한 유형이 대안적인 실시예들에서 사용될 수 있다. NVM(40)은 호스트(36)가 실행하는 프로그램 코드(소프트웨어 코드)를 포함하는, 데이터의 다양한 종류를 저장하는데 사용된다. 메모리 서브시스템(44)은 호스트(36)를 대신하여 NVM(40)에 액세스한다. 예를 들어, 메모리 서브시스템(44)은 호스트(36)에 의해 발행된 판독 및 기록 명령(read and write commands)을 수신하고, NVM(40)에서 명령을 실행한다.
도 1의 실시예에서, 메모리 서브시스템(44)은 호스트(36)와 통신하기 위한 호스트 인터페이스(48), NVM(40)과 통신하기 위한 메모리 인터페이스, 및 메모리 서브시스템의 다양한 태스크를 수행하도록 구성된 프로세서(56)를 포함한다. 다른 태스크 중에서, 프로세서(56)는 NVM(40)에 저장된 프로그램 코드에 대한 보안 서명을 계산하고, 휘발성 레지스터(60)에 서명을 저장한다. 또한, 프로세서(56)는 NVM(40)로부터 부팅 프로세스를 시작할 때마다 식별하고, 부팅 프로세스가 정당한지 확인하고, 정당하지 않으면, 레지스터(60)의 콘텐츠를 지운다. 이 보안 메카니즘은 이하에서 상세히 설명된다.
도 1에 도시된 시스템(20) 및 클라이언트(24)의 구성은 단지 개념적 명확성을 위해 도시된 예시적인 구성이다. 대안적인 실시예에서, 임의의 다른 적절한 구성이 사용될 수 있다. 일 실시예에서, 메모리 서브시스템(44) 및 NVM(40)은, 예를 들어 동일한 장치 패키지(device package)에 패키징된 각각의 반도체 다이(semiconductor dies)에 단일 시스템-온-칩(single System-on-Chip)(SoC)으로 제조된다. 다른 실시예에서, 메모리 서브시스템(44) 및 NVM(40)은 별개의 장치로서 제조된다. 개시된 기술의 이해를 위해 필수적이지 않은 요소는 명확성을 위해 도면으로부터 생략되었다.
다양한 실시예에서, 도 1에 도시된 클라이언트(24)의 다른 요소는 응용 주문형 집적 회로(ASIC; Application-Specific Integrated Circuit) 또는 필드 프로그래머블 게이트 어레이(FPGA; Field-Programmable Gate Array)와 같은 임의의 적절한 하드웨어를 사용하여 구현될 수 있다. 대안적으로, 클라이언트(24)의 기능의 일부, 예를 들어 호스트(36) 및/또는 프로세서(56)의 기능은 소프트웨어로 구현되거나, 소프트웨어 및 하드웨어 요소의 조합을 사용하여 구현될 수 있다.
전형적으로, 호스트(36) 및 프로세서(56)는 본원에서 설명된 기능을 수행하기 위해 소프트웨어로 프로그래밍되는(programmed) 범용 프로세서(general-purpose processors)를 포함한다. 소프트웨어는 예를 들어 네트워크를 통해 전자 형태로 프로세서 중 하나로 다운로드될 수 있거나, 대안적으로 또는 추가적으로 자기, 광학 또는 전자 메모리와 같은 비-일시적 텐저블 미디어(non-transitory tangible media)에 제공 및/또는 저장될 수 있다.
메모리 서브시스템에 의한 프로그램-코드 서명의 조건부 권한 설정
일부 실시예에서, 클라이언트(24)는 서버(28)에 대해 자체 인증하고 보안이 손상되지 않았음을 증명하도록 요구된다. 예시적인 인증 프로세스에서, 클라이언트(24)는 NVM(40)에 저장된 바와 같이 호스트(36)의 프로그램 코드의 적어도 일부에 대한 서명을 계산한다. 클라이언트(24)는 서버에 자체 인증하기 위해 서명 값을 사용한다. 일반적으로, 서버는 클라이언트에 의해 제공된 서명을 예상되는 서명 값과 비교한다. 클라이언트는, 예를 들어 단방향 암호 연산(one-way cryptographic operation)을 프로그램 코드에 적용하여 서명을 계산할 수 있다. 단방향 암호화 연산의 전형적인 예시는 SHA와 같은 해싱 함수(hashing function)이다.
일부 실시예에서, 메모리 서브시스템(44)은 서명이 오리지널 코드(original code)에만 제공되고 임의의 로그 코드(rogue code)에 제공되지 않도록 보장하는 추가적인 보안 메카니즘을 수행한다. 이러한 실시예에서, 메모리 서브시스템(44)의 프로세서(56)는 휘발성 레지스터(60)에 서명을 저장한다. 호스트(36)가 부팅 프로세스를 시작하는 것을 검출할 때, 프로세서(56)는 부팅 프로세스가 정당한지 여부를 확인한다. 프로세서(56)가 부팅 프로세스가 불법(호스트(36)가 손상될 가능성이 있음을 의미함)이라고 의심하면, 프로세서는 레지스터(60)의 콘텐츠를 클리어하여, 서명을 삭제한다. 이와 같이, 정당한 부팅 프로세스를 수행하는 프로그램 코드만 트루 서명 값(true signature value)을 획득(그리고 트루 서명 값을 사용하여 서버에 대해 인증)할 수 있을 것이다.
도 2는 본 발명의 일 실시예에 따라, 메모리 서브시스템(44)의 프로세서(56)에 의해 수행되는, 코드 서명의 조건부 권한 설정을 위한 방법을 개략적으로 도시한 흐름도이다. 방법의 제1 단계(단계(70-86))에서, 프로세서(56)는 코드 서명을 계산하고 저장한다. 이 단계는 클라이언트(24)가 부팅되기 전에, 예를 들어 다음 소프트웨어 업그레이드 및/또는 매 부팅 전 임의의 적절한 시간에 수행될 수 있다. 방법의 제2 단계(단계(90-102))에서, 프로세서(56)는 서명을 정당한 프로그램 코드에만 이용 가능하게 만든다.
상기 방법은 키 로딩 단계(key loading step)(70)에서 프로세서(56)가 코드 서명을 계산하기 위한 초기화 벡터(initialization vector)(키(key))를 로딩하는 단계로 시작한다. 데이터 판독 단계(74)에서, 프로세서(56)는 호스트(36)의 프로그램 코드를 저장하기 위해 사용되는 NVM(40)의 영역으로부터 다음 데이터 청크(data chunk)(예를 들어, 워드(word) 또는 페이지(page))를 판독한다.
해싱 단계(hashing step)(78)에서, 프로세서(56)는 데이터 청크를 해싱한다(hashes). 해싱 연산은 증분(incremental)이며, 즉, 단계(78)의 각각의 반복(iteration)은 모든 이전 데이터 청크 및 최근-로딩된 데이터 청크의 누적 서명을 제공한다.
종료 체크 단계(termination checking step)(82)에서, 프로세서(56)는 요구된 모든 프로그램 코드(서명이 정의된 코드)가 해싱되었는지 여부를 체크한다. 그렇지 않다면, 상기 방법은 NVM(40)으로부터 프로그램 코드의 다음 청크를 판독하기 위해 상기 단계(74)로 되돌아 간다. 전체 프로그램 코드가 해싱된 후, 프로세서(56)는 서명 저장 단계(86)에서 휘발성 레지스터(60)에 결과 서명을 저장한다.
어느 나중 시점에서(At some later point in time), 프로세서(56)는 부팅 검출 단계(90)에서 호스트(36)가 부팅 프로세스를 수행하기 시작함을 검출한다. 예를 들어, 프로세서(56)는 파워-업(power-up) 후에 호스트(36)에 의해 NVM(40)에 발행된 (하나 이상의) 제1 판독 명령을 검출할 수 있다.
부팅 확인 단계(boot verification step)(94)에서, 프로세서(56)는 검출된 부팅 프로세스가 정당한지 여부를 체크한다. 일 실시예에서, 프로세서(56)는 호스트(36)의 진짜 부팅 코드(genuine boot code)가 저장된 메모리 어드레스를 알고 있다. 파워-업 후에 호스트(36)에 의해 발행된 제1 판독 명령을 검출할 때, 프로세서(56)는 이들 판독 명령이 이들 어드레스에 어드레싱되어야 한다고 가정한다.
제1 판독 명령이 실제로 예상된 메모리 어드레스로 어드레싱된 경우, 정상 실행 단계(normal execution step)(98)에서, 프로세서(56)는 부팅 프로세스가 정당하다고 판단하고 실행을 계속한다. 특히, 호스트(36)가 메모리 서브시스템(44)으로부터의 코드 서명을 후속하여 요청하면, 프로세서(56)는 레지스터(60)에 저장된 트루 서명 값을 리턴(return)할 것이다.
반면에, 제1 판독 명령이 예상된 메모리 어드레스에 어드레싱 되지 않는다면, 프로세서(56)는 부팅 프로세스가 몇몇 적대적인 당사자에 의해 손상되었다고 결론을 낸다. 이에 응답하여, 프로세서(56)는 정상 실행 단계(98)로 복귀하기 전에, 서명 삭제 단계(102)에서 레지스터(60)의 콘텐츠를 클리어한다. 이러한 경우에, 호스트(36)는 코드 서명을 검색할 수 없다. 결과적으로, 불법 코드는 서버(28)와의 인증 프로세스를 완료할 수 없을 것이다.
도 2의 방법 흐름은 단지 개념적 명확성을 위해 도시된, 예시적인 흐름이다. 대안적인 실시예에서 개시된 기술을 구현하기 위해 임의의 다른 적절한 흐름이 사용될 수 있다. 예를 들어, 프로세서(56)는 호스트(36)의 부팅 프로세스가 정당한지 아닌지를 확인하기 위한 다른 기준(criteria)을 사용할 수 있으며, 판독되는 메모리 어드레스와 반드시 관련되는 것은 아니다.
다른 예시로서, 상술한 바와 같이, 일단 프로세서(56)가 정당한 부팅 프로세스를 완료하면, 프로세서는 코드 판독을 위해 정당한 것으로 고려되는 어드레스의 범위를 수정할 수 있다. 이러한 방식으로, 프로세서(56)는 레지스터(60)에서 서명의 삭제를 유발하지 않고 더 큰 어드레스 범위로부터 정당한 코드를 계속 실행할 수 있다.
일부 실시예에서, 적어도 부팅 프로세스를 확인하는 프로세서(56) 및 클리어 레지스터(60)의 기능은 메모리 서브시스템의 전용 하드웨어 로직(dedicated hardware logic)을 사용하여 구현되어, 우회하기(circumvent) 어렵게 만든다.
상술한 실시예는 예시로서 인용되었고, 본 발명은 상기에 특별히 도시되고 설명된 것에 제한되지 않음을 알 것이다. 오히려, 본 발명의 범위는 상술한 다양한 특징들의 조합 및 서브-조합뿐만 아니라 종래 기술에 개시되어 있지 않은 것 및 전술한 설명을 읽을 때 당업자에게 발생할 수 있는 변형 및 수정을 포함한다. 본 특허 출원에 참고 문헌으로 포함된 문헌은 본 명세서에서 명시적으로 또는 암시적으로 이루어진 정의와 모순되는(conflict) 방식으로 이들 통합된 문서에 임의의 용어가 정의되어 있는 경우를 제외하고는, 출원의 필수적인 부분으로 간주되며, 본 명세서의 정의만이 고려되어야 한다.

Claims (12)

  1. 메모리 서브시스템에 있어서,
    비휘발성 메모리(NVM)를 액세스하기 위한 메모리 인터페이스;
    호스트와 통신하기 위한 호스트 인터페이스; 및
    프로세서
    를 포함하고,
    상기 프로세서는,
    상기 호스트에 의해 사용되고 상기 NVM에 저장된 프로그램 코드에 대한 서명을 계산하고,
    상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 상기 부팅 프로세스가 정당한지 여부를 확인하고,
    상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하고,
    상기 프로세서는,
    상기 서명을 휘발성 레지스터에 저장하고,
    상기 부팅 프로세스가 정당하지 않다는 검출에 응답하여 상기 휘발성 레지스터를 클리어하도록 구성되는
    메모리 서브시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 NVM에 대한 상기 호스트의 하나 이상의 제1 액세스가 정당한 것으로서 미리 정의된 메모리 어드레스의 범위에 어드레싱되는지 확인함으로써, 상기 부팅 프로세스가 정당한지 여부를 확인하도록 구성되는
    메모리 서브시스템.
  4. 제3항에 있어서,
    상기 부팅 프로세스가 정당한 것으로 확인될 때,
    상기 프로세서는,
    상기 정당한 것으로서 미리 정의된 메모리 어드레스의 범위를 수정하도록 구성되는
    메모리 서브시스템.
  5. 보안 클라이언트 장치에 있어서,
    비휘발성 메모리(NVM);
    호스트; 및
    메모리 서브시스템
    을 포함하고,
    상기 메모리 서브시스템은,
    상기 호스트를 위해 상기 NVM에 액세스하고,
    상기 호스트에 의해 사용되고 상기 NVM에 저장된 프로그램 코드에 대한 서명을 계산하고,
    상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 상기 부팅 프로세스가 정당한지 여부를 확인하고,
    상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하고,
    상기 메모리 서브시스템은,
    상기 서명을 휘발성 레지스터에 저장하고,
    상기 부팅 프로세스가 정당하지 않다는 검출에 응답하여 상기 휘발성 레지스터를 클리어하도록 구성되는
    보안 클라이언트 장치.
  6. 삭제
  7. 제5항에 있어서,
    상기 메모리 서브시스템은,
    상기 NVM에 대한 상기 호스트의 하나 이상의 제1 액세스가 정당한 것으로서 미리 정의된 메모리 어드레스의 범위에 어드레싱되는지 확인함으로써, 상기 부팅 프로세스가 정당한지 여부를 확인하도록 구성되는
    보안 클라이언트 장치.
  8. 제7항에 있어서,
    상기 부팅 프로세스가 정당한 것으로 확인될 때,
    상기 메모리 서브시스템은,
    상기 정당한 것으로서 미리 정의된 메모리 어드레스의 범위를 수정하도록 구성되는
    보안 클라이언트 장치.
  9. 방법에 있어서,
    호스트에 의해 사용되고 비휘발성 메모리(NVM)에 저장된 프로그램 코드에 대한 서명을 계산하는 단계;
    상기 호스트에 의해 수행된 부팅 프로세스를 검출할 때, 상기 부팅 프로세스가 정당한지 여부를 확인하는 단계; 및
    상기 부팅 프로세스가 정당한 것으로 확인된 경우에만, 원격 서버에 대한 인증을 위해 상기 호스트에 상기 서명을 제공하는 단계;
    휘발성 레지스터에 상기 서명을 저장하는 단계; 및
    상기 부팅 프로세스가 정당하지 않다는 검출에 응답하여 상기 휘발성 레지스터를 클리어하는 단계
    를 포함하는 방법.
  10. 삭제
  11. 제9항에 있어서,
    상기 부팅 프로세스가 정당한지 여부를 확인하는 단계는,
    상기 NVM에 대한 상기 호스트의 하나 이상의 제1 액세스가 정당한 것으로서 미리 정의된 메모리 어드레스의 범위에 어드레싱되는지 확인하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 부팅 프로세스가 정당한 것으로 확인될 때,
    상기 정당한 것으로서 미리 정의된 메모리 어드레스의 범위를 수정하는 단계
    를 포함하는 방법.
KR1020180115600A 2018-01-02 2018-09-28 코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증 KR102132534B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/859,780 US10757087B2 (en) 2018-01-02 2018-01-02 Secure client authentication based on conditional provisioning of code signature
US15/859,780 2018-01-02

Publications (2)

Publication Number Publication Date
KR20190082658A KR20190082658A (ko) 2019-07-10
KR102132534B1 true KR102132534B1 (ko) 2020-07-10

Family

ID=67058631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180115600A KR102132534B1 (ko) 2018-01-02 2018-09-28 코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증

Country Status (5)

Country Link
US (1) US10757087B2 (ko)
JP (1) JP6639620B2 (ko)
KR (1) KR102132534B1 (ko)
CN (1) CN109992966B (ko)
TW (1) TWI687840B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019025384A1 (en) * 2017-08-02 2019-02-07 British Telecommunications Public Limited Company MALICIOUS HOST DETECTION
US11258772B2 (en) * 2018-06-19 2022-02-22 Cypress Semiconductor Corporation Secured communication from within non-volatile memory device
CN109492352B (zh) * 2018-10-09 2021-01-29 华为技术有限公司 一种设备标识组合引擎的实现方法及装置
US11734458B2 (en) * 2019-02-26 2023-08-22 Intel Corporation Extensible layered trusted computing base for computing devices
US11601268B2 (en) * 2020-08-03 2023-03-07 Nuvoton Technology Corporation Device attestation including attestation-key modification following boot event

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416536B1 (ko) * 2012-04-25 2014-07-09 주식회사 로웸 패스코드 운영 시스템과 패스코드 장치 및 슈퍼 패스코드 생성 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
CN1277219C (zh) 2003-01-15 2006-09-27 泽浦科技股份有限公司 储存单元数据保护方法以及系统
US20080005797A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Identifying malware in a boot environment
JP4993122B2 (ja) 2008-01-23 2012-08-08 大日本印刷株式会社 プラットフォーム完全性検証システムおよび方法
DE102008011925B4 (de) 2008-02-29 2018-03-15 Globalfoundries Inc. Sicheres Initialisieren von Computersystemen
WO2010039788A2 (en) * 2008-09-30 2010-04-08 Bigfoot Networks, Inc. Processor boot security device and methods thereof
US8775618B2 (en) * 2010-08-02 2014-07-08 Ebay Inc. Application platform with flexible permissioning
CN102164138A (zh) * 2011-04-18 2011-08-24 奇智软件(北京)有限公司 一种保证用户网络安全性的方法及客户端
CN102521101B (zh) 2011-12-08 2015-05-13 曙光信息产业(北京)有限公司 一种基于进程扫描的非法作业监控方法
US9361244B2 (en) * 2011-12-29 2016-06-07 Intel Corporation Apparatus for hardware accelerated runtime integrity measurement
TWI531202B (zh) 2012-11-02 2016-04-21 Keypasco Ab 藉由使用者位置檢驗身份的網路安全驗證方法
JP5986897B2 (ja) * 2012-11-13 2016-09-06 Kddi株式会社 端末装置、完全性検証システム、およびプログラム
EP2973168A1 (en) * 2013-03-15 2016-01-20 Ologn Technologies AG Systems, methods and apparatuses for remote attestation
US9680872B1 (en) * 2014-03-25 2017-06-13 Amazon Technologies, Inc. Trusted-code generated requests
CN104021011A (zh) * 2014-05-09 2014-09-03 苏州汇川技术有限公司 嵌入式设备程序升级系统及方法
US11269984B2 (en) * 2014-12-09 2022-03-08 Janus Technologies, Inc. Method and apparatus for securing user operation of and access to a computer system
JP6659220B2 (ja) * 2015-01-27 2020-03-04 ルネサスエレクトロニクス株式会社 通信装置、半導体装置、プログラムおよび通信システム
CN104636256B (zh) 2015-02-17 2017-10-24 中国农业银行股份有限公司 一种内存访问异常的检测方法及装置
CN106940769B (zh) * 2017-03-01 2020-04-28 广州大学 操作系统安全远程加载方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416536B1 (ko) * 2012-04-25 2014-07-09 주식회사 로웸 패스코드 운영 시스템과 패스코드 장치 및 슈퍼 패스코드 생성 방법

Also Published As

Publication number Publication date
KR20190082658A (ko) 2019-07-10
CN109992966A (zh) 2019-07-09
TW201931191A (zh) 2019-08-01
TWI687840B (zh) 2020-03-11
US10757087B2 (en) 2020-08-25
JP6639620B2 (ja) 2020-02-05
CN109992966B (zh) 2023-06-27
US20190207917A1 (en) 2019-07-04
JP2019122030A (ja) 2019-07-22

Similar Documents

Publication Publication Date Title
KR102132534B1 (ko) 코드 서명의 조건부 권한 설정에 기반한 보안 클라이언트 인증
CN111030822B (zh) 用于保护固件的方法和系统,以及计算机可读介质
US7743239B2 (en) Accelerating integrity checks of code and data stored in non-volatile memory
US9378372B2 (en) Secure download and security function execution method and apparatus
CN111630513B (zh) 认证所存储代码和代码更新的真实性
US11334502B2 (en) Memory protection based on system state
US9563769B2 (en) System and method for secure loading data in a cache memory
US10936722B2 (en) Binding of TPM and root device
WO2021249359A1 (zh) 数据完整性保护的方法和装置
US10776493B2 (en) Secure management and execution of computing code including firmware
WO2022250836A1 (en) Transfer of ownership of a computing device via a security processor
US20200327227A1 (en) Method of speeding up a full antivirus scan of files on a mobile device
US20130124845A1 (en) Embedded device and control method thereof
US11048801B2 (en) Method and apparatus for secure computing device start up
US20080082819A1 (en) Authenticating data returned from non-volatile memory commands
US11269986B2 (en) Method for authenticating a program and corresponding integrated circuit
CN114818012B (zh) 基于白名单列表的Linux文件完整性度量方法
WO2017182089A1 (en) Method for write-protecting boot code if boot sequence integrity check fails
CN113515779A (zh) 文件的完整性校验方法、装置、设备及存储介质
US11921859B2 (en) System and method for managing device security during startup
CN113836542B (zh) 可信白名单匹配方法、系统和装置
US20240129736A1 (en) Mitigating against spurious deliveries in device onboarding

Legal Events

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