KR102092453B1 - 보안되는 실행 컨텍스트 데이터 - Google Patents

보안되는 실행 컨텍스트 데이터 Download PDF

Info

Publication number
KR102092453B1
KR102092453B1 KR1020180027067A KR20180027067A KR102092453B1 KR 102092453 B1 KR102092453 B1 KR 102092453B1 KR 1020180027067 A KR1020180027067 A KR 1020180027067A KR 20180027067 A KR20180027067 A KR 20180027067A KR 102092453 B1 KR102092453 B1 KR 102092453B1
Authority
KR
South Korea
Prior art keywords
circuit
processor
context data
memory
execution context
Prior art date
Application number
KR1020180027067A
Other languages
English (en)
Other versions
KR20180103013A (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 KR20180103013A publication Critical patent/KR20180103013A/ko
Application granted granted Critical
Publication of KR102092453B1 publication Critical patent/KR102092453B1/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • 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/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/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

프로세서의 보안을 모니터링하기 위한 회로가 개시되며, 상기 회로는 프로세서에 의해 실행되는 소프트웨어 프로그램의 실행 컨텍스트 데이터를 저장하도록 구성된 메모리에 액세스하고, 그 실행 컨텍스트 데이터로부터 하나 이상의 서명을 결정하며, 그 서명을 사전에 정의된 서명과 비교하여 프로세서(110)의 보안을 모니터링하도록 구성된다. 더 나아가, 컨텍스트 데이터는 제어 흐름 데이터를 포함하고, 서명은 해시값 또는 유사성 서명을 포함하고, 서명들의 무결성은 (예를 들어, 무작위로 또는 물리적으로 복제 불가능한 함수를 사용하여 얻어지는) 예를 들어 비밀 키를 사용하여 검증될 수 있다. 더 나아가, 사이버 공격이 있다고 판단되면 다양한 대응책뿐만 아니라 프로세서에 대해 다양한 제어 또는 반응을 할 수 있다.

Description

보안되는 실행 컨텍스트 데이터{SECURED EXECUTION CONTEXT DATA}
본 발명은 디지털 데이터 프로세싱 분야에 관한 것으로, 특히 보안되는 프로세서 분야에 관한 것이다.
임베디드 시스템은 호스트 장치들을 제어하려고 시도하는 사이버 공격 위험의 계속적인 증가에 직면하고 있다. 이하 임베디드 시스템을 보호하기 위한 다양한 기존 방식이 설명된다.
바이러스 백신 소프트웨어는 시스템을 부분적으로만 보호한다. 이러한 시스템은 맬웨어 코드(malware code)의 일부 서명의 발견으로 그 존재를 식별할 수 있다고 가정한다. 그러나 맬웨어 코드는 종종 공격이 성공하였을 때만 식별될 수 있기 때문에, 해당 애드혹 방안은 예를 들어 시스템이 손상된 후와 같이 너무 늦게 수행될 수 있다. 또한 바이러스 백신 프로그램은 일반적으로 메모리 및 CPU 리소스 측면에서 부담이 된다. 이러한 보호 및 업데이트는 임베디드 시스템에 배치되기 어렵다.
또 다른 알려진 방법은 잠재적으로 취약한 프로그램의 내부 메커니즘을 보호하는 것이다. 이러한 솔루션은 소프트웨어 또는 소프트웨어와 하드웨어의 조합 내에서 수행될 수 있다. 하드웨어 구현은 프로세서 아키텍처의 수정을 필요로 한다. 소프트웨어 구현은 일반적으로 운영 체제와 관련되어 예를 들어 제한된 수의 민감한 데이터를 서브 루틴의 리턴 어드레스로 보호한다. 예를 들어, 오버플로를 검출하기 위해 스택에 어드레스를 리턴하기 전에 "카나리"(즉, 임의의 값)가 추가된다. 카나리를 덮어 쓰면, 보안 예외가 발생한다. 이러한 대응 조치는 추가적인 검증이 소프트웨어 내에서 계산되기 때문에 성능을 저하시킨다. 또한 카나리를 저장해야 하기 때문에 더 많은 메모리가 소비된다. 마지막으로, 일부 공격은 카나리 값을 추측하거나 공개하여 또는 심지어 카나리를 수정하지 않고 리턴 어드레스를 수정할 수 있는 "write-what-where" 손상을 사용하여 대응책을 피할 수 있다.
"포인터 검사"라는 다른 기존 접근법은 포인터 오버플로를 검사한다. 포인터는 메타 정보와 연관된다. 상기 메타 정보는 주어진 포인터에 대해 허용된 메모리 영역의 크기 및 시작 어드레스를 전형적으로 포함한다. 각 포인터 사용 중에, 포인터 값은 메타 정보와 대조되어 오버플로를 검출한다. 구현은 소프트웨어 또는 소프트웨어와 하드웨어 솔루션의 조합으로 수행될 수 있다. 모든 경우에 있어, 메모리 및 속도 오버헤드가 중요할 수 있다. 때때로 메모리 확장이 제안된다. 효과적인 보호를 위해, 프로세서의 아키텍처가 그에 따라 수정되어야 한다.
"동적 정보 흐름 추적(DIFT)" 이라는 또 다른 기존 접근법은 안전하지 않은 (또는 오염된) 데이터를 식별하고 추적하는 것을 목표로 한다. 안전하지 않거나 오염된 데이터는 일반적으로 프로그램 인터페이스(예를 들어, 네트워크, 사용자 입력)으로부터 유입된다. 메모리 및 CPU 내에서 오염된 데이터의 전파는 시스템에 의해 추적될 수 있다. 프로그램 카운터 또는 현재 명령어와 같은 중요 보안 파라미터가 오염되면, DIFT 시스템은 프로그램이 손상된 것으로 간주하고 경보를 발생시킨다. 이 접근법의 가장 큰 단점은 성능에 대한 좋은 절충(특히 허위 양성 및 허위 음성의 관리와 관련하여)과 함께 효율적인 전파 규칙을 만드는 것이 어렵다는 점이다. 현재, DIFT 솔루션은 다른 절충안을 제시한다. 일부는 오버 헤드가 거의 없는 상당히 부분적인 보호를 제공한다. 다른 일부는 효율적인 보호를 제공하지만 더 많은 오버 헤드가 발생하여 하드웨어 아키텍처의 복잡한 변경을 필요로 할 수 있다.
"어드레스 공간 레이아웃 무작위화(ASLR)"라는 또 다른 기존 방법은 민감한 데이터를 정확하게 손상시키거나 공개하기가 어렵도록 하기 위해, 메모리 공간의 위치를 알 수 없도록 메모리 공간을 무작위화하는 것이다. 이 기술은 일반적으로 공격을 덜 실용적으로 만드는 데는 도움이 되지만 일단 공격이 수행되면 통상적으로 공격을 검출할 수 없다.
"제어 흐름 무결성(CFI)"이라는 또 다른 기존 접근 방식은 흐름 제어의 변경을 검출하는 것이다. 전제 조건으로, 보안되어야 하는 소프트웨어 어플리케이션을 미리 분석하여 가능한 모든 명령어의 흐름을 확인해야 한다. 소프트웨어 어플리케이션이 실행되는 동안에는, 명령어 흐름이 실시간으로 확인된다. 그러나 단점으로 성능이 크게 저하될 수 있다.
특허 문헌은 몇 가지 접근법을 개시한다. 예를 들어, 미국 특허 제5771348("Method and arrangement for enhancing the security of critical data against manipulation")호는 포인터, 코드 워드 및 코드 워드의 타당성 검사를 조작함으로써 중요 레지스터 데이터의 보안을 처리하는 방법을 개시한다. 이 접근법은 한계를 보여준다.
따라서 사이버 공격에 대한 향상된 저항력을 제공하여 보안이 강화된, 임베디드 시스템을 보호하는 방법 및 시스템이 필요하다.
프로세서의 보안을 모니터링하기 위한 회로가 개시되며, 상기 회로는 프로세서에 의해 실행되는 소프트웨어 프로그램의 실행 컨텍스트 데이터를 저장하도록 구성된 메모리에 액세스하고, 그 실행 컨텍스트 데이터로부터 하나 이상의 서명을 결정하며, 그 서명을 사전에 정의된 서명과 비교하여 프로세서의 보안을 모니터링하도록 구성된다. 더 나아가, 컨텍스트 데이터는 제어 흐름 데이터를 포함하고, 서명은 해시값 또는 유사성 서명을 포함하고, 잠재적으로 독립적인 실시예에서, 서명들의 무결성은 (예를 들어, 무작위로 또는 물리적으로 복제 불가능한 함수를 사용하여 얻어지는) 예를 들어 비밀 키를 사용하여 검증될 수 있다. 더 나아가, 다양한 대응책뿐만 아니라 프로세서에 대해 다양한 제어 또는 반응을 할 수 있다.
바람직하게는, 본 발명의 실시예들은 사이버 공격에 대한 임베디드 시스템의 보안을 지킬 수 있다.
바람직하게는, 소프트웨어 실행과 관련된 주목할만한 및/또는 중요한 및/또는 민감한 데이터 요소들은 필요한 데이터를 메모리에 저장하면서 안전하게 백업 또는 저장된다.
바람직하게는, 프로세서는 보안 전용 추가 하드웨어(예를 들어, 본 발명에 따른 회로)와 결합될 수 있다. 그 추가 하드웨어는 특히 소프트웨어로 하여금 공격자가 위조할 수 없는 서명 정보 및/또는 무결성 정보와 함께 중요한 정보를 메모리에 안전하게 백업할 수 있게 한다.
바람직하게는, 상기 회로 또는 추가 하드웨어는 특화되지 않은 또는 낮은 무결성의 소프트웨어에 의해서는 액세스될 수 없는 전용 메모리 또는 메모리 영역에 중요한 데이터를 안전하게 백업할 수 있게 한다.
바람직하게는, 본 발명의 실시예는 예를 들어 CPU가 손상을 검출 할 수 있도록 함으로써, 하드웨어에서 이용할 수 있는 보안 특성을 적시에 높은 성능으로 이용 가능하도록 한다.
바람직하게는, 버퍼 내에 메타 정보를 추가할 필요가 없다. 일 실시예에서, 단지 하나의 서명(예를 들어, 프로세서 레지스터들의 체크섬 값 또는 해시값)만이 결정되어 메모리에 추가된다.
바람직하게는, 본 발명의 실시예들은 상당한 오버 헤드를 추가하지 않고서도 중요 데이터의 무결성을 보호한다.
바람직하게는, 본 발명의 실시예들은 다양한 데이터 구조를 처리할 수 있게 함으로써, 보호를 사용할 수 있는 케이스들의 범위를 넓힌다.
바람직하게는, 본 발명의 일부 실시예들은 컴퓨팅 전력 자원을 추가적으로 필요로 하지 않는다.
바람직하게는, 본 발명의 실시예들은 전용 하드웨어 가속을 활용할 수 있다. 전용 하드웨어 가속은 실제로 임베디드 시스템에서 프로세서 오프로딩 및 더 나은 전력 효율성을 제공한다.
바람직하게는, 본 발명의 실시예들은 일반적으로 (복잡하고 비용이 많이 들 수 있는) 프로세서 하드웨어 아키텍처의 변경을 필요로 하지 않는다.
바람직하게는, 특히 공지된 접근법과 대조적으로, 본 발명의 실시예들은 프로세서의 성능을 저하시키지 않으며, 특히 소프트웨어 내에서 검증을 수행할 필요가 없다.
바람직하게는, 본 발명의 실시예들은 하드웨어(예를 들어, 회로 또는 확장자) 및/또는 소프트웨어(예를 들어, 트랩 처리기와 같은 실행 가능한 소프트웨어 명령어)의 형태를 취할 수 있다. 예를 들어, 특정 실시예에서, SPARC 프로세서는 수정 윈도우 오버플로 트랩 처리기 및/또는 윈도우 언더플로 트랩 처리기와 연관될 수 있다. 레지스터의 내용을 메모리에 저장하거나 복사하는 것 외에도, 윈도우 오버플로 트랩 처리기는 특정 소프트웨어 전용 라이브러리를 호출하여 체크섬을 계산할 수 있다. 언더플로 트랩 처리기에 대한 응답으로, 하나 이상의 검증을 (레지스터 수준에서) 수행할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 예를 들어 설명하며, 여기서 유사 참조 부호는 유사한 요소를 나타내며, 도면에서:
도 1은 몇 가지 보호 메커니즘을 도시한 도면;
도 2는 본 발명에 따른 보안 시스템의 실시예의 도시도;
도 3은 본 발명에 따른 방법의 단계들의 예시를 도시한 도면;
도 4는 본 발명의 일 실시예에 따른 단계들의 예시들을 보여주며, 상이한 시스템 구성 요소들 간의 상이한 상호 작용들을 도시한 도면.
도 1은 몇 가지 보호 메커니즘을 보여준다.
프로세서의 레지스터(100) 또는 중앙 처리 장치(100)는 메모리(120)와 통신한다. 실행되는 소프트웨어 프로그램은 상이한 함수들을 위한 상이한 프레임들(예를 들어, 프레임(F2)(132)를 호출하는 함수(F1)의 프레임들(131))과 연관된다. 이러한 프레임들(실행 컨텍스트 데이터)을 보호하기 위해, 소위 "카나리"가 사용되어 실행 컨텍스트 데이터를 비롯하여 중요하거나 민감한 데이터를 보호한다. 카나리 또는 카나리 단어는 버퍼 오버플로(133)를 모니터링하기 위해 스택에서 버퍼와 제어 데이터 사이에 배치되는 알려진 값이다. 버퍼 오버플로가 발생하면, 손상될 첫 번째 데이터는 일반적으로 카나리가 되고, 카나리 데이터의 검증 실패는 따라서 오버플로에 대한 경고이며, 이는 손상된 데이터를 예를 들어 무효화하여 처리할 수 있다. 이러한 예시에서, 오버플로를 검출하기 위해 랜덤 카나리(131, 132)는 어드레스를 스택으로 리턴하기 직전에 추가된다. 카나리를 덮어 쓰면, 보안 예외가 발생한다.
소프트웨어 프로그램은 일반적으로 프로시저를 사용하여 작성된다. 소프트웨어 프로그램의 프로시저가 호출되면, 프로시저는 실행 컨텍스트 데이터를 생성하며, 실행 컨텍스트 데이터는 예를 들어 입력 파라미터, 데이터 및 제어 흐름 정보를 포함한다. 프로시저는 경우에 따라 결과(들) 및/또는 리턴값을 생성할 수 있다. 이러한 프로시저는 일반적으로 "함수"라고 한다.
경우에 따라 프로시저 또는 함수는 메모리의 데이터 객체와 연관될 수 있다. 이러한 프로시저 또는 함수는 때때로 "메소드"로 지칭될 수 있다.
프로시저의 컨텍스트, 즉 실행 컨텍스트 데이터는 현재 프로시저의 실행과 관련된 정보를 포함한다. 컨텍스트는 리턴 어드레스, 스택 포인터, 프레임 포인터, 로컬 변수들 및 버퍼들, 입력 인자들 및 리턴값과 같은 (비 한정적인 목록) 데이터를 포함할 수 있다.
이 컨텍스트가 손상되면 공격자가 중요한 데이터를 변경하고 프로그램의 실행 흐름을 제어할 수 있다.
본 발명의 실시예들은 하나 이상의 함수의 실행 컨텍스트를 보안하는 방법들 및 시스템들을 제공한다.
본 명세서에서, (소프트웨어) 프로그램은 복수의 실행 가능하고 지시된 명령어(즉, 명령어들의 시퀀스)를 지정한다. 명령어들은 하나 이상의 프로세서 또는 프로세서 코어들(멀티 코어 프로세서 및/또는 다수 코어 프로세서)에 의해 실행될 수 있다. 소프트웨어 프로그램은 복수의 "함수"(또는 연속적으로, 순차적으로 또는 정의된 순서로 호출되는 "메소드"로 또한 지칭됨)를 포함할 수 있다.
함수(또는 메소드)는 다른 함수들을 호출/리턴할 때 저장되고 복원될 데이터(예를 들어, 스택 포인터, 프레임 포인터 및 레지스터 백업 값) 및/또는 "제어 흐름 정보" 또는 "제어 흐름 데이터"(예를 들어, 리턴 어드레스)를 필요로 한다. 바람직하게는, 상기 제어 흐름 데이터는 보안 목적으로 레버리지될 수 있다.
일 실시예에서, 프로세서의 보안을 모니터링하는 회로가 설명된다. 상기 회로는, -그 프로세서에 의해 실행되는 소프트웨어 프로그램의 실행 컨텍스트 데이터를 저장하도록 구성된 메모리에 액세스하고, -그 실행 컨텍스트 데이터로부터 하나 이상의 서명을 결정하고; -그 서명을 사전에 정의된 서명과 비교하여 프로세서의 보안을 모니터링하도록 구성된다.
일 실시예에서, 회로는 프로세서로부터 (또는 프로세서의 제어를 벗어나) 독립적으로 메모리에 액세스하도록 구성된다.
일 실시예에서, 회로는 프로세서로부터(프로세서의 직접 제어 아래에서) 직접 또는 프로세서 컴포넌트들 또는 서브 컴포넌트들로부터 직접 컨텍스트 데이터에 액세스하도록 구성된다.
일 실시예에서, 회로는 즉시, 즉 상기 데이터가 프로세서와 메모리 사이 및/또는 프로세서와 MMU 사이 및/또는 프로세서와 캐시 메모리들 사이 및/또는 상이한 레벨의 캐시 메모리들 사이 및/또는 캐시와 메모리 사이 및/또는 멀티 코어 시스템의 상이한 프로세서들 사이 및/또는 멀티 코어 시스템의 상이한 코어들에 속하는 상이한 캐시들 사이에서 전송(또는 통신 또는 전달)될 때, 컨텍스트 데이터에 액세스하도록 구성된다.
일 실시예에서, 프로세서, 회로 및 메모리를 포함하는 시스템이 설명되며, 여기서 프로세서 및 회로는 메모리에 독립적으로 액세스하여 프로세서에 의해 실행되는 소프트웨어 프로그램의 실행 컨텍스트 데이터를 저장하고, 상기 실행 컨텍스트 데이터를 서명들을 기준으로 비교하여, 상기 프로세서의 공격을 판단하도록 구성된다.
일 실시예에서, 메모리(유닛)에 의해 상호 연결된 회로 및 프로세서를 포함하는 시스템이 설명되며, 여기서 프로세서는 소프트웨어 프로그램을 실행하고, 프로세서는 상기 소프트웨어 프로그램의 실행 컨텍스트 데이터를 회로에 전송하며, 프로세서는 실행 컨텍스트 데이터로부터 사전에 정의된 중요 실행 컨텍스트 데이터를 식별하며; 프로세서는 상기 식별된 사전에 정의된 중요 실행 컨텍스트 데이터를 회로 및 메모리에 전송하며; 회로는 소프트웨어 프로그램을 실행하는 프로세서로부터 실행 컨텍스트 데이터를 수신하며; 회로는 상기 전송된 사전에 정의된 중요 실행 컨텍스트 데이터로부터 서명을 결정하며; 회로는 서명을 메모리에 복사(예를 들어, 저장, 아카이브)하며; 프로세서(또는 회로)는 메모리로부터 상기 서명을 검색하고 그 서명을 하나 이상의 사전에 정의된 서명들과 비교한다.
일 실시예에서, 본 발명에 따른 "회로"는 프로세서에 대한 하드웨어 "확장"이다.
일 실시예에서, 회로 및 타깃 프로세서는 서로 관련되어 설계되고 또는/및 함께 제조된다. 즉, 회로 및 타깃 프로세서는 동일 제조 제품의 일부분들이다(특정 구성에서 이들은 연결된 부분들이다). 일 실시예에서, 회로는 타깃 프로세서에 연결 가능하거나 또는 해제 가능하거나 부착 가능하거나 링크 가능하거나 타깃 프로세서 상으로/옆으로 이동 가능하다. 따라서 이 회로는 (보안 또는 테스트 목적으로) 추가 또는 외부 또는 보조 하드웨어로 사용될 수 있다. 일 실시예에서, 회로와 프로세서의 연관성은 가역적이다. 일 실시예에서, 연관성은 비가역적이다(즉, 엔티티들을 분해하려는 시도가 있는 경우 회로가 파괴됨을 의미 한다). 예를 들어, 물리적 연결은 접착제 및/또는 풀 및/또는 전기적 연결 및/또는 자기적 연결을 사용할 수 있다. 따라서, 글로벌 시스템의 상이한 부분들은 정적으로 또는 동적으로(예를 들어, 시간 경과에 따라) 다양한 방식으로 재배열될 수 있다. 배열은 2D(평면)에서 물리적으로 이루어질 수 있지만, 3D에서도 가능하다. 프로세서, 회로 및 메모리 유닛의 배치 토폴로지는 보안 및/또는 성능을 최적화하는 것으로, 예를 들어 액세스 레이턴시 지연을 최소화한다.
일 실시예에서, 회로는 프로그래밍 가능한 로직 장치 내의 "소프트-코어"로서 예시된다. 이러한 프로그래밍 가능한 로직 디바이스는 예를 들어 FPGA 및 CPLD를 포함한다.
일 실시예에서, 회로 및 타깃 프로세서 모두는 프로그래밍 가능한 로직 장치 내의 "소프트-코어"로서 예시된다.
일 실시예에서, 타깃 프로세서는 프로그래밍 가능한 로직 어레이와 함께 제조되며, 회로는 런타임 시 프로그래밍 가능한 로직 어레이 내의 소프트 코어로서 구현된다.
일 실시예에서, 회로는 프로그래밍 가능한 로직 어레이와 함께 제조되며, 타깃 프로세서는 실행시에 프로그래밍 가능한 로직 어레이 내의 소프트 코어로서 구현된다.
일 실시예에서, 회로 및 프로세서 모두는 프로그래밍 가능한 로직과 함께 제조되며, 회로는 제조된 프로세서에 연결되거나 프로그래밍 가능한 로직 어레이 내의 소프트 코어 프로세서에 연결되도록 구성될 수 있다.
프로세서 내부 레지스터들로부터 메모리로 중요 데이터를 단순 복사(종래 기술)하는 것을 넘어서, 본 명세서에서 개시되는 시스템은 "중개(intermediary)" 회로를 사용한다. 이 회로는 어느 정도 "안전한 피난처" 역할을 한다. 시스템은 실행 컨텍스트 데이터를 복사하여, 실행 컨텍스트 데이터가 이후에 또는 그 이상 위태롭게 되고/되거나 공격받고/받거나 프로세서, 캐시 또는 메모리 내에서 더 손상되는 경우, 안전한 복사본이 회로에서 검색되어 이후 분석 및 보정 조치(필요한 경우)에 사용될 수 있다. 즉, 실행 컨텍스트 데이터의 "추가" 또는 "여분의" 또는 "안전한" 복사본은 프로세서에 대해 수행된 공격을 검출하고 판단하고 적절한 대응책(들)을 취하는 추가적인 보안 또는 대비 수단으로 사용될 수 있다.
대안적으로, 회로는 컨텍스트 데이터의 실제 양보다 적은 양의 데이터를 저장하도록 설계되거나 배열될 수 있다. 이러한 실시예는 특히 저장 공간, 통신 대역폭 및/또는 컴퓨팅 자원을 절약하는데 유리할 수 있다. 제한된 양의 데이터는 나중에 검색되어, 예를 들어 실제 컨텍스트 데이터의 무결성을 확인할 수 있다. 일 실시예에서, 제한된 양의 데이터는 실행 컨텍스트 데이터의 부분 집합의 일부 또는 예를 들어, 그러나 비 제한적으로, 체크섬 알고리즘, 암호화 MAC 또는 HMAC 알고리즘, 리던던시 코드, 에러 정정 또는 검출 코드, 순환 리던던시 코드 및/또는 터보 코드를 사용하여 컨텍스트 데이터로부터 유도된 데이터 세트에 대응할 수 있다. 일부 실시예들에서, 공개 키 암호화는 컨텍스트 데이터의 디지털 서명들을 생성하는데 사용될 수 있다. 이러한 적용 가능한 공개 키 암호화 알고리즘은 RSA, DSA, ECDSA, El Gamal 및 McEliece를 포함할 수 있지만 이에 국한되지는 않는다. 바람직하게는, 선택된 암호화 알고리즘은 "포스트-양자(post-quantum)" 암호 알고리즘 일 수 있다(즉, 양자 컴퓨터에 의한 유의미한 공격 또는 암호 해독에 당하지 않아, 그러한 양자 공격에 면역되도록 설계된다).
일 실시예에서, 본 발명에 따른 회로는 프로세서와 독립적으로 동작할 수 있는 "감시자(watchdog)" 또는 "데몬(daemon)"으로서의 역할을 할 수 있다. 어느 시점에서 프로세서가 손상되면, 회로는 실행 컨텍스트 데이터 내의 차이(divergence)로 인해 공격의 존재를 감지 및/또는 판단할 수 있다. 여기서, 차이란 원본 실행 컨텍스트 데이터에서의 차이 또는 상기 원본 실행 컨텍스트 데이터의 부분 집합들의 서명들에서의 차이를 의미한다.
일 실시예에서, "독립성"의 특성은 상대적이며 절대적이지 않다(프로세서 및 회로는 어느 정도 동일한 전력 또는 에너지원을 공유한다). 일 실시예에서, 회로는 프로세서로부터 완전히 독립적일 수 있다(예를 들어, 회로는 별개 전자 장치로부터 공통 장애점 없이 떨어져 나올 수 있고, 또한 예를 들어, 회로는 프로세서 중 하나와 다른 에너지원에 의해 전력을 공급받을 수 있다).
본 발명에 따른 "메모리"는 "메모리 유닛" 또는 "메모리 회로" 또는 "데이터 캐시"로 지칭될 수 있다. 메모리는 일반적으로 공간적으로 집중화된 유형(tangible) 전자 회로이다(그러나 대안적으로 메모리는 또한 공간에 분산될 수 있다). 컴퓨터 아키텍처에서, "메모리 계층"은 성능, 특히 응답 시간을 논의하는 데 사용되는 개념이다. 메모리 레지스터가 가장 빠르고, 다음으로 메모리 캐시(L1 내지 L4), 다음으로 임의 액세스 메모리, 다음으로 플래시 메모리, 그 다음으로 대용량 저장 장치(예를 들어, SSD 하드 드라이브) 순으로 빠르다. 본 발명에 따른 "메모리"는 메모리 레지스터, 메모리 캐시, 랜덤 액세스 메모리, 플래시 메모리 또는 심지어 하드 드라이브 중 하나 이상일 수 있지만, 이에 국한되는 것은 아니다.
메모리(또는 메모리 유닛들)의 특성은 다양할 수 있다. 메모리는 휘발성 또는 비 휘발성 일 수 있고, 휘발성 및 비 휘발성 메모리 유닛의 사용을 결합할 수도 있다. 휘발성 메모리는 하나 이상의 RAM, DRAM(예를 들어, DDR SDRAM), SRAM, T-RAM 및 Z-RAM을 사용할 수 있다. 휘발성 메모리를 사용하는 것은 일반적으로 비 휘발성 쓰기 가능 메모리보다 낮은 비용/풋프린트로 읽기/쓰기 성능을 향상시키는 이점을 제공한다. 비 휘발성 메모리는 마스크 ROM, PROM, EPROM, EEPROM, NVRAM, 플래시 메모리 솔리드 스테이트 스토리지, nvSRAM FeRAM MRAM PRAM 중 하나 이상을 사용할 수 있다. 비 휘발성 메모리를 사용하는 것은 일반적으로 재부팅 및/또는 전원을 껐다 켤 때 이전에 저장된 정보를 유지할 수 있다는 이점을 제공한다. 일 실시예에서, 하나 이상의 메모리 유닛은 3D XPoint, CBRAM, SONOS, RRAM, 레이스트랙 메모리, NRAM, 밀리피드 메모리, FJG RAM을 사용할 수 있다.
일 실시예에서, 메모리(또는 "캐시")는 본 발명에 따른 프로세서와 회로 사이에서 공유된다: 프로세서 및 회로 모두는 실행 컨텍스트 데이터 및/또는 중요 실행 컨텍스트 데이터를 복사하여 메모리에 저장하고, 상기 데이터는 더 나아가 비교된다.
본 명세서의 컨텍스트에서, 일반적으로 메모리가 신뢰되거나 신뢰 가능할 것이 요구되지는 않는다. 일 실시예에서, 신뢰는 실행 컨텍스트 데이터의 인증된 체크섬을 생성하는데 사용되는 비밀 키에 의존할 수 있다(체크섬 위조는 방지되고 메모리 변조는 검출 가능하다). 일 실시예에서, 메모리는 부분적으로 또는 전체적으로 신뢰될 수 없다. 이러한 실시예들에서, 메모리는 추가 방어 메커니즘을 포함하고/하거나 그 구조가 강건성을 향상 시키도록 구성될 수 있다. 일 실시예에서, "메모리"는 복수의 메모리(회로들 또는 유닛들)를 포함한다. 메모리는 계층화될 수 있다(예를 들어, SSD 캐싱). 파티셔닝이 사용될 수 있다. 물리적 또는 논리적 관점에서 격리 또는 구획화가 사용될 수 있다. 액세스 권한은 데이터 손상을 방지하는 방식으로 처리될 수 있다. 예를 들어, MMU(Memory Management Unit)이 사용될 수 있다. 일부 실시예들에서, 샌드 박싱 메커니즘들이 사용될 수 있는바, 이에 의해 상이한 프로세스들 및/또는 권한 레벨들의 메모리 공간을 분리시킬 수 있다.
일 실시예에서, 프로세서 및 (검증) 회로는 물리적 및/또는 논리적으로 별개의 메모리들에 액세스 할 수 있어, 공격자는 두 가지 메모리를 일관된 방식으로 수정하여야 공격을 성공시킬 수 있다. 예를 들어, 2개의 물리적으로 상이한 메모리 유닛이 사용될 수 있다. 물리적으로 동일한 메모리 유닛이 사용되는 반면, 상이한 로직 어드레스들이 사용될 수 있다. 일 실시예에서, 검증 회로에 의해 사용되는 메모리는 예를 들어 결함 검출, 하드웨어 탐색 및 하드웨어 변경을 위한 부가적인 보호 메카니즘들을 가진다. 그러한 실시예에서, 서명 데이터의 무결성의 보호가 개선될 수 있고, 이에 의해 공격자가 성공적으로 공격하는 것이 어렵게 된다.
일 실시예에서, 액세스는 메모리와 프로세서 사이에서 양방향이다. 일 실시예에서, 액세스는 메모리와 프로세서 사이에서 일방향이다. 일 실시예에서, 액세스는 메모리와 회로 사이에서 양방향이다. 일 실시예에서, 액세스는 메모리와 회로 사이에서 일방향이다. 따라서 다양한 배열을 얻을 수 있다. 예를 들어, 일 실시예에서, 액세스는 프로세서와 메모리 사이에서 일방향인 반면, 액세스는 회로와 메모리 사이에서 양방향 일 수 있다(이것은 회로가 메모리와 완전히 상호 작용할 수 있는 반면, 데이터는 프로세서를 회피할 수만 있도록 한다).
트립틱(tryptic) "프로세서-메모리-회로"는 여러 가지 가능한 물리적 구현 중 하나임에 주목해야 한다. 여기서 설명은 단일 엔티티(하나의 프로세서, 하나의 메모리, 하나의 회로)를 주로 고려하지만, 그러한 회로 복수개가 고려되어 많은 다른 방식으로 배열될 수 있다. 프로세서는 실제로 하나 이상의 프로세서 코어(예를 들어, 멀티 코어 프로세서 또는 다수 코어 프로세서)를 지정할 수 있다. 특히, 프로세서(들)는 공간(CPU)에서 집중화될 수 있지만, 대안적으로 공간(예를 들어, 클러스터, 서버 팜 등)에 분산될 수도 있다. 마찬가지로, 메모리는 복수의 메모리 회로를 지정하여 공간 내에 집중되거나 분산될 수 있다. 회로는 또한 복수의 회로에 대응할 수 있다. 일 실시예에서, 트립틱(또는 스킴 또는 어셈블리) "프로세서-메모리 회로"는 다른 그러한 트립틱 어셈블리들(예를 들어, 하드웨어 가상화, 프로그래밍 가능한 로직 디바이스들)과 물리적 자원을 공유하기 위해, (부분적으로 또는 전체적으로) 가상화될 수 있다.
본 발명의 비교적 높은 레벨의 설명은 일반적인 트립틱 프로세서-메모리-회로의 다른 조합들을 사용하여 더 낮은 단위(granularity) 레벨에서 사용될 수 있다. 예를 들어, 본 발명에 따른 시스템은 멀티 코어 프로세서(즉, 복수의 코어), 복수의 메모리 유닛 및 하나 이상의 메모리 유닛에 액세스하는 중앙 회로를 포함할 수 있다.
특히, 트립틱 "프로세서-메모리-회로"는 프랙탈 방식으로 반복될 수 있다(표시되지 않음). 예를 들어, 중요 보안 파라미터들의 특정 부분 집합이 저장되는 (그리고 나중에 복원되는) 실시예에서, 제1 주 메모리와 함께 제2 메모리가 사용될 수 있고, 상기 제2 메모리에 저장된 데이터에 서명을 저장하고 산출하기 위해 제2 회로가 사용될 수 있다. 결국, 상기 제2 메모리에 저장된 특정 데이터는 다른 메모리 유닛 등에 저장될 수 있다. 일 실시예에서, 트립틱 "프로세서-메모리-회로"는 다른 물리적, 가상 또는 에뮬레이트된 트립틱 "프로세서-메모리-회로" 상에 가상화되거나 에뮬레이트될 수 있다.
가능성 있는 물리적 구현이 다양하다는 것은 발명을 추가적으로 발전시키기 위한 또 다른 기회(교환/절충)를 제공한다. 이러한 다른 발전으로, 통계적 접근 방법을 사용할 수 있다(예를 들어, 특정 프로세서 코어의 손상을 통계적으로 처리하여 하드웨어 요구 사항을 낮춘다).
일 실시예에서, 실행 컨텍스트 데이터가 복사된다. 일 실시예에서, 실행 컨텍스트 데이터는 변위되거나 이동된다(잘라내기/붙여넣기).
이하에서 시간적 측면에 대해 논의한다.
실행 컨텍스트 데이터의 캡처 또는 백업은 다양한 방법으로 수행할 수 있다.
일 실시예에서, 컨텍스트 구동 방법이 있다. 컨텍스트가 변경되었다고 판단되면, 실행 컨텍스트 데이터의 서명, 예를 들어, 체크섬이 계산된다. 예를 들어, 실행 컨텍스트 데이터가 스택에 푸시되면, 체크섬이 계산되어 저장된다. 스택에서 컨텍스트를 가져오면(pulled), 체크섬이 확인되거나 검증된다. 일 실시예에서, 소프트웨어 프로그램들 간의 컨텍스트 전환은 실행 컨텍스트 데이터의 캡처 또는 수신을 트리거링할 수 있다. 운영 체제가 다른 소프트웨어 프로그램들을 처리할 때, 실제로 실행 컨텍스트 데이터가 갑자기 (정량적으로) 및/또는 상당히 (질적으로) 바뀔 수 있다.
일 실시예에서, 데이터 캡처는 시간 구동될 수 있다(예를 들어, 클럭 하트 비트가 사용될 수 있다). 실행 컨텍스트 데이터의 "스냅 샷"은 예를 들어 사전에 정의된 시간 간격(예를 들어, 고정적, 주기적, 임의의, 일정한 기간)에서 추출되거나 캡처된다. 하나 이상의 독립 회로 및/또는 하나 이상의 독립 메모리 유닛을 사용함으로써, 실행 컨텍스트 데이터의 백업 또는 캡처가 적절한 방식으로 처리될 수 있다. 프로세서의 클럭 주파수는 데이터 캡처 빈도를 결정하는 기준으로 사용할 수 있다. 데이터 캡처는 규칙적 또는 불규칙적(예를 들어, 사전에 정의된 시간 간격 및/또는 사전에 정의된 범위 내의 무작위 시간 간격)일 수 있다.
일 실시예에서, 데이터 캡처는 이벤트 구동될 수 있다. 일 실시예에서, 예를 들어, 데이터 캡처는 액세스 가능한 데이터의 볼륨들에 의존할 수 있다(예를 들어, 사전에 정의된 임계값 초과 시, 실행 컨텍스트 데이터가 전송되거나 복사된다). SPARC 프로세서를 포함하는 일 실시예에서, 서명들 또는 체크섬들은 예를 들어 각 레지스터 윈도우 오버플로 후에 계산될 수 있다. 대안적으로 또는 부가적으로, 서명 또는 체크섬은 각 레지스터 윈도우 언더플로 후에 확인될 수 있다. 일 실시예에서, 하나 이상의 서명(또는 체크섬)은 함수를 떠나기 전에 함수 호출 시 계산될 수 있다. 대안적으로 또는 부가적으로, 서명 또는 체크섬은, 함수에 들어가기(또는 재진입하기) 전에 다중 태스크 시스템상의 다른 태스크들 사이에서 함수 호출 또는 리턴, 하드웨어 또는 소프트웨어 인터럽트, 예외, 시스템 호출 또는 컨텍스트 전환시에 검사될 수 있다. 일 실시예에서, 사전에 정의된 특정 데이터 또는 데이터 서명(들)의 존재는 데이터 캡처를 트리거링할 수 있다. 일 실시예에서, 데이터 캡처 트리거링의 단위는 하나의 특정 실행 가능 명령어 또는 명령어 세트를 포함할 수 있다. 일 실시예에서, 메모리 내의 특정 데이터 구조들 힙(heap) 및/또는 링크 리스트 및/또는 이중 링크 리스트 및/또는 스택 및/또는 FIFO 및/또는 해시 테이블 등을 포함하지만, 이에 국한되지 않는다. 이벤트 구동 서명 또는 체크섬 생성 및/또는 검증은 예를 들어 항목 생성, 수정 및 제거 시에 트리거링될 수 있다.
일 실시예에서, 실행 컨텍스트 데이터의 복사본은 선행하는 양상들의 조합에 의해 트리거링될 수 있다(즉, 컨텍스트(들) 및/또는 시간 및/또는 이벤트(들)에 따라 좌우될 수 있다).
추가적인 시간적 측면이 이하에서 설명된다(실행 컨텍스트 데이터, 서명 또는 이들의 조합에 대해 수행된 비교의 발생).
훼손(공격자가 변경하는 능력 또는 용량)은 여러 파라미터에 따라 다르다. 예를 들어, 훼손은 데이터의 로컬리제이션(예를 들어, 데이터가 물리적으로 CPU 내에 또는 외부에, 예를 들어, 외부 메모리에 저장되는지 여부)에 따라 달라진다. 훼손은 또한 때로는 실행되는 코드의 일부에 따라 달라진다(일반적으로 실행 시간과 상호 관련되어 있지만, 그 관계가 특히 현대 시스템에서는 결정적이라고 할 수는 없다). 일부 사이버 공격에서, 공격자는 코드의 특정 부분에서 발생하는 메모리 손상을 악용하여 코드의 다른 부분에 속한 데이터를 조작하려고 시도할 수 있다. 따라서 이 코드의 다른 부분이 원하는 악의적 행동을 유발할 수 있다.
본 발명의 다른 실시예들은 이러한 공격을 피하거나 방지할 수 있다.
일 실시예에서, 프로세서는 회로를 통해 제1 메모리에 액세스하고, 이후에 프로세서가 손상되면, 회로는 불일치 및 있을 수 있는 공격을 판단할 수 있다.
일 실시예에서, 서명(및/또는 체크섬)은 바람직하게 데이터가 변경되기 전에 계산된다. 일반적으로 오프라인으로 수행되는 프로세서 특정 학습 단계를 통해 또는 장치의 개인 설정 단계 동안 서명 집합을 정의할 수 있다. 일부 사전에 정의된 (예를 들어, 이론적이거나 다른 시스템 및 프로세서로부터 결정된) 서명들도 로딩될 수 있다. 일부 서명은 동적으로 정의될 수 있다(회로를 보다 "지능적"으로 만들기 위해 소급 피드백이 추가될 수 있다). 이 회로는 (보안된) I/O 통신으로 구성되어 다른 제어 시스템(예를 들어, 클라우드)으로부터 서명을 수신할 수 있다.
일 실시예에서, 서명들은 점진적으로 스택되고/되거나 누적되고/되거나 저장된다. 점진적으로 서명을 계산함으로써, 선행 공격 시나리오는 예를 들어 바람직하게 피하거나 적어도 예방할 수 있다. 데이터가 프로세서에서 메모리로 전송될 때, 예를 들어 피난처(safe harbor)가 점진적으로 설정될 수 있다. 또한 (실행 컨텍스트 데이터가 "속하거나" 상응하거나 연관되어 있는) 코드 부분의 출구로 구성될 수 있다.
일 실시예에서, 프로세서의 정상적인 동작은 캡처되고 추후 참조를 위해 안전하게 저장된다. 보다 일반적으로, 캡처는 서명을 사용하여 수행될 수 있지만 다른 메커니즘이 사용될 수 있다. 보안 저장소는 예를 들어 챌린지 대응, 물리적 경화, 분산 시스템 사용 등과 같은 인증 메커니즘을 사용할 수 있다. 저장 장치는 영구적인(예를 들어, 비가역적인) 저장 장치 또는 캐시(예를 들어, 일시적인) 저장 장치를 사용할 수 있다.
일 실시예에서, 실행 컨텍스트 데이터는 제어 흐름 데이터를 포함한다. 제어 흐름 데이터는 일반적으로 리턴 어드레스, 입력 파라미터 및 레지스터의 백업 데이터와 같은 데이터를 포함한다.
일 실시예에서, 서명은 해시값을 포함한다. 서명은 체크섬 또는 해시값일 수 있다. 예를 들어 해시값은 MD5 서명 또는 SHA1 서명일 수 있다.
일 실시예에서, 서명은 유사성 서명이다. 일 실시예에서, 한편으로는 프로세서의 원시 실행 컨텍스트 데이터가, 다른 한편으로는 회로의 원시 실행 컨텍스트 데이터와 비교될 수 있다. 바람직하게는, 이러한 비교가 신속하게 처리될 수 있다.
일 실시예에서, 실행 컨텍스트 데이터 내의 데이터 부분 집합이 비교될 수 있다. 이러한 부분 집합은 로직 규칙 또는 수학 함수의 적용에 의해 결정될 수 있다. 바람직하게는, 이러한 특정 비교가 효율적으로 처리될 수 있다(예를 들어, 사전에 정의된 데이터 패턴이 식별될 수 있다).
일 실시예에서, 실행 컨텍스트 데이터 내의 특정 또는 선택된 데이터가 비교될 수 있다. 복잡한 로직 규칙들(예를 들어, 원시 실행 컨텍스트 데이터에 적용될 수 있는 연쇄 로직 규칙들)은 바람직하게 실행 컨텍스트 데이터의 심도 있는 분석을 수행하는 것을 허용할 수 있다.
일 실시예에서, 실행 컨텍스트 데이터의 특정 데이터의 하나 이상의 서명들이 결정될 수 있고, 이들이 서로 더 비교될 수 있다. 바람직하게는 이러한 비교가 낮은 레이턴시로, 즉 효율적으로 처리될 수 있다(사전에 정의된 알려진 데이터 패턴이 식별될 수 있다). 서명의 비교는 일 대 다, 다 대 일 또는 일대일 일 수 있다. 일 실시예에서, 서명은 체크섬 또는 CRC(Cyclic Redundancy Check) 또는 해시값 또는 등가물이다. 즉, 기본 불변성이 검출된다(동일한 형식).
일 실시예에서, 서명은 유사성의 척도를 포함한다. 사전에 정의된 메트릭들(임계값 또는 거리)을 사용하면, 서로 다른 실행 컨텍스트 데이터 집합들이 동등하거나 거의 동일하다고 판단될 수 있다. 바람직하게는, 이러한 비교는 사소한 변동에 대해 강건할 수 있다. 일 실시예에서(결함 감내성을 위해), 서명은 에러 정정 코드(ECC)를 사용할 수 있다. 일 실시예에서, 체크섬 및/또는 유사성 서명들의 조합이 사용될 수 있다.
이하에서 실행 컨텍스트 데이터 내에서 중요 파라미터를 검출하는 방법에 대해 자세히 설명한다. 일 실시예에서, ECD 내에서 검출되는 중요 파라미터는 제조 중에 오프라인으로 한 번 학습되거나 소정의 시점에서 학습되고 "사전에 정의된 중요 파라미터"로 고려되는 파라미터들로 재주입될 수 있다. 오프라인으로 식별된 이러한 중요 파라미터는 힙 메타 데이터뿐만 아니라, 리턴 어드레스와 같은 함수 호출 컨텍스트 데이터 및/또는 스택 및 프레임 포인터 백업을 포함할 수 있지만, 이에 국한되지는 않는다. 함수 호출 규칙 및 힙 메타 데이터는 미리 구조가 알려진 데이터의 예이다.
일 실시예에서, ECD에서 검출되는 중요 파라미터들은 인라인으로, 즉 하나 이상의 런타임 동안 학습될 수 있다. I/O 인터페이스(예를 들어, 클라우드 컴퓨팅, 공유 데이터베이스 등)를 통해 이러한 중요 파라미터가 (사람 및/또는 기계별로) 검출, 필터링 및 통합될 수 있다. 다시 말해서, 중요 파라미터들의 리스트는 동적(적응형 또는 반응형)일 수 있고, 즉 실행 컨텍스트 및 공격 시나리오(예를 들어)에 따라 시간에 따라 진화될 수 있다. 존재(또는 부재) 여부가 모니터링 되는 중요 파라미터들의 리스트를 처리하기 위해 하나 이상의 로직 규칙(예를 들어, 부울 표현, 퍼지 로직 등)이 사용될 수 있다. 바람직하게는, (더 높은 추상화 레벨의 하나 이상의 보안 정책에 대응하는) 하나 이상의 로직 규칙이 하나 이상의 중요 파라미터를 결정하고/하거나 그 데이터의 부분 집합들을 추가로 선택할 수 있게 한다.
일 실시예에서, 회로는 또한 실행 컨텍스트 데이터 및/또는 그의 하나 이상의 서명의 무결성을 검증하도록 구성된다.
일 실시예에서, 실행 컨텍스트 데이터(및 그 서명)의 무결성은 사용(예를 들어, 재사용) 전에 검사되거나 검증될 수 있다.
일 실시예에서, 회로는 하나 이상의 서명을 인증하기 위해 비밀 키를 사용하도록 구성된다.
일 실시예에서, 비밀 키는 대칭 키로 해시값을 암호화 및/또는 서명하는데 사용되는 대칭 암호화 키를 포함하는 암호화 키이다. 다른 실시예에서, 비대칭 암호화가 사용될 수 있다. 일 실시예에서, 하드웨어 체크섬 함수는 하드웨어에 저장된 키로 체크섬을 암호화하는데 사용될 수 있는 대칭 암호화 함수를 포함할 수 있다. 이러한 대칭 암호화 함수의 예는 AES, 3DES를 포함하나, 이에 국한되지 않는다. 선택적 실시예에서, 하드웨어 체크섬 함수는 하드웨어에 저장된 키로 체크섬을 서명하는데 사용될 수 있는 비대칭 암호화 함수를 포함할 수 있다. 이러한 해시 함수의 예는 RSA, ECDSA를 포함되지만, 이에 국한되지 않는다.
일 실시예에서, 비밀 키는, 바람직하게는 프로세서의 초기화 동안 무작위로 초기화된다.
일 실시예에서, 비밀 키는 시스템상에서 실행되는 각각의 프로세스, 스레드 또는 태스크에 따라 다를 수 있다.
일 실시예에서, 비밀 키는 물리적으로 복제 불가능한 함수(PUF) 및/또는 챌린지 응답 장치를 사용하여 생성된다.
또한 이러한 무결성 검증을 수행하기 위한 시기나 순간이 다를 수 있다. 일 실시예에서, 무결성은 속하는 코드 섹션에 다시 들어가기 전에 또는 프로세서 내에서 이동되기 전에 검증된다. 일 실시예에서, 검증은 주기적으로 수행된다. 일 실시예에서, 검증은 무작위로 수행된다. 일 실시예에서, 검증은 소프트웨어 코드의 실행과 병렬로 수행된다(예를 들어, 검증이 여전히 이루어지는 동안 실행 데이터가 사용된다). 후자의 실시예는 비용면에서 효율적일 수 있지만, 보안성을 약간 저하시킨다(어느 정도의 레이턴시를 가지는 공격 검출은 수용 가능한 절충안이다). 일 실시예에서, 무결성 검증은 순차적으로, 즉, 컨텍스트 데이터가 사용되기 전에, 또는 컨텍스트 데이터 사용과 병행하여(예를 들어, 멀티 프로세서의 다른 코어 상에서/에 의해 또는 전용 체크섬 검증 회로 상에서) 수행될 수 있다. 전술한 실시예의 조합이 가능하다(검증은 임의의 시간 동안 병렬로 수행된 후에 순차적으로 수행될 수 있고, 독립적이고 주기적 하트 비트 검증이 백그라운드에서 수행될 수 있다).
이러한 무결성 검증의 트리거는 다양할 수 있다(실행 컨텍스트 데이터의 복사본, 컨텍스트 의존, 시간 의존 및/또는 이벤트 의존과 관련된 실시예를 참조한다).
일 실시예에서, 비밀 키는 HMAC 모드에서 사용된다.
HMAC는 해시 함수와 함께 비밀 키를 사용하여 입력 메시지의 인증 코드를 계산하는 암호화 방법이다. 일 실시예에서, 하드웨어 체크섬 함수는 하드웨어에 저장된 키와 함께 HMAC 모드에서 사용될 수 있는 해시 함수를 포함할 수 있다. 이러한 해시 함수의 예로 SHA-2, SHA-3 및 MD5가 있지만 이에 한정되지는 않는다.
일 실시예에서, 비밀 키는 하드웨어에 분배된다.
일 실시예에서, 비밀 키는 진성 난수 생성기(true random generator)에 의해 생성된다. 진성 난수 생성기(TNRG)는 컴퓨터 프로그램이 아닌 물리적 프로세스(예를 들어, 양자 역학, 양자 난수 생성기)에서 난수를 생성하는 장치이다.
일 실시예에서, 비밀 키는 의사 난수 생성기(소프트웨어 및/또는 하드웨어)에 의해 생성된다. 의사 난수 생성기는 비밀 키를 생성하기 전에 TRNG에 의해 초기화될 수 있다.
일 실시예에서, HMAC 키 및/또는 대칭 암호화 키 및/또는 비대칭 암호화 비밀 키는 CPU 초기화 동안 무작위로 초기화될 수 있다. 예를 들어, 진성 난수 생성기로부터의 출력이 사용될 수 있다.
일 실시예에서, 비밀 키는 비 휘발성 메모리에 저장된다. 일부 실시예들에서, 하나 이상의 비밀 키가 칩 상의 비 휘발성 메모리에 저장될 수 있다. 일부 실시예들에서, 하나 이상의 비밀 키는 물리적으로 복제 불가능한 함수(PUF)를 사용하여 생성될 수 있다.
일 실시예에서, 저장된 실행 컨텍스트 데이터의 구조는 힙, 링크 리스트, 트리, 테이블, 해시 테이블 및 그래프 중 하나 이상을 포함한다. 바람직하게는, 복잡한 데이터 구조는 레지스터 값들뿐만 아니라 본 발명에 따른 시스템에 의해 조작될 수 있다.
일 실시예에서, 실행 컨텍스트 데이터의 서명들을 비교하도록 구성된 서브 회로는 DMA 제어기의 일부 및/또는 프로세서의 버스 인터페이스의 일부이다.
시스템의 다른 부분들은 서명들 및/또는 (원시) 실행 컨텍스트 데이터를 비교할 수 있다. 일 실시예에서, (그 자체로 처리 능력을 가지는) 프로세서만이 실행 컨텍스트 데이터 및/또는 그 서명들을 비교한다. 일 실시예에서, 회로만이 데이터 및/또는 서명들을 비교한다. 후자의 실시예는 어느 시점에서 프로세서가 손상되면, 프로세서가 무결성 비교(또는 어떠한 비교든)를 수행할 수 없을 수도 있다는 점에서 유리하다. 비교를 처리하기 위한 전용 회로 부분을 포함하는 것은 또한 성능을 향상시킬 수 있다. 일 실시예에서, 예를 들어 결함 감내성을 향상시키기 위해 회로 및 프로세서 모두가 비교들을 수행할 수 있다. 후자의 실시예는 자동차 또는 항공 어플리케이션과 같은 일부 기술 영역에서 중요한 특성인 리던던시를 제공할 수 있다는 점에서 유리하다. 일 실시예에서, 체크섬/서명 산출은 프로세서 내에서/에 의해 그리고 회로 내에서/에 의해 별도로 (2회) 수행되며, 추가적 레벨의 비교가 구현될 수 있다. 일 실시예에서, 체크섬/서명 산출 및/또는 검증은 복수의 전용 회로 또는 장치에 의해 수행된다.
일 실시예에서, 체크섬 비교 메커니즘은 DMA 제어기에 직접 통합될 수 있다. 바람직하게는, 체크섬 값들 및 관련 비교들이 메모리를 전송(예를 들어, 보안 메모리로부터 외부 SDRAM 메모리로 민감한 데이터를 전송)하는 동안 수행될 수 있다.
선택적인 실시예에서, 체크섬 계산 및 검증 메카니즘은 프로세서의 버스 인터페이스에 직접 통합되어 필요시 생성 및 무결성 테스트를 투명하게 수행할 수 있다. 체크섬 생성/검증 함수의 활성화 및 비활성화는 예를 들어 내부 전용 레지스터 및/또는 프로세서 수퍼 유저 비트 및/또는 버스에 매핑된 외부 레지스터 및/또는 전용 입력 신호에 의해 구성될 수 있다. 전용 입력 신호는 예를 들어 다른 프로세서의 코어에 의해 제어될 수 있다.
일 실시예에서, 소프트웨어 프로그램은 실행 가능 명령어, 복수의 실행 가능 명령어, 실행 가능 명령어들의 스레드, 복수의 스레드, 태스크 또는 소프트웨어 프로세스 중 하나 이상이다.
비교를 처리하기 위한 본 발명의 단위(granularity)는 하나의 실행 가능 명령어로부터 독립형 소프트웨어 어플리케이션까지 포함할 수 있다(단위의 증가순으로, 하나의 실행 가능한 명령어, 복수의 실행 가능한 명령어, 실행 가능한 명령어들의 스레드, 실행 가능한 명령어들의 하나 이상의 스레드, 복수의 스레드, 태스크, 독립형 어플리케이션 또는 "앱" 또는 "소프트웨어 프로그램" 또는 "애플리케이션"을 포함하는 운영 시스템 프로세스가 있다).
일 실시예에서, 회로는 프로세서를 제어하도록 구성된다.
본 발명에 따른 회로는 수동적 역할을 할 수 있지만, 일부 실시예들에서는 능동적 역할을 지원할 수 있다. 예를 들어, 회로는 예를 들어 실행 컨텍스트 데이터 또는 그 서명들에 대해 수행된 비교를 기반으로 프로세서에 대한 일부 제어를 실행할 수 있다. 회로의 제어 동작은 프로세서 및/또는 프로세서 상에서 실행되는 하나 이상의 소프트웨어 프로세스를 정지, 재개, 재부팅 또는 재시작하는 것 중 하나 이상을 포함한다.
비교들(실행 컨텍스트 데이터 및/또는 서명들이 일치하는지 여부)에 기반한 다양한 보정 및/또는 선제 조치가 실제로 가능하다.
보정 및/또는 선제 조치는 아무것도 하지 않기, 플래그 설정하기, 프로세서를 제어하기 위해 적용되거나 사용되는 하나 이상의 임계값 변경하기, 프로세서의 하나 이상의 부분을 (일시적 또는 비일시적으로) 리셋하기, 프로세서의 하나 이상의 부분을 (영구적 또는 비영구적으로) 비활성화하기, 프로세서가 부적격인 또는 잠정적으로 적격인 공격을 예상하도록 경고하기, 하나 이상의 서비스 및/또는 포트를 죽이고/죽이거나 하나 이상의 프로세스를 샌드 박싱하기, (예를 들어, 사전에 정의된 방어 메커니즘 실행에 의해) 능동 방어 실행하기, 예를 들어 메모리 유닛들을 지움으로써 부분적으로 데이터(예를 들어, 로컬 비밀) 삭제하기, (예를 들어, 공격이 반복되는 경우) 메모리 컨텐츠를 전반적으로 삭제하기, 인시던트 로깅 또는 기록하기, 특정 데이터 업로드하기, 프로세서 통합 시스템에 연결된 장치들에 경고하기, 사용자 세션 재협상하기, 프로세서의 현재 실행 스레드 일시 중단하기, 재시작하기, 컴퓨터를 구성하는 시스템의 소프트 및/또는 하드 리부팅하기, 전원 차단하기, 프로세서를 물리적 손상시키기(예를 들어, 자가 파괴, 하드웨어 접합부 싸기, 관련 정보 로깅, 현재 프로세스/스레드/태스크 액세스 권한 제한, 추가 모니터링 기능 활성화, 샌드박싱 활성화 등에 의해 데이터 보호) 중 하나 이상을 포함할 수 있다.
일 실시예에서, 서명들 또는 체크섬들이 비교된다. 체크섬들이 일치하거나 부합하면 프로세서는 (정상) 실행을 계속할 수 있다. 체크섬이 일치하지 않으면 프로세서는 실행을 중지하거나 다시 시작할 수 있다. 대안적으로, 프로세서는 선택적으로 리셋 및/또는 재부팅 작업을 트리거링할 수 있다. 대안적으로, OS가 다른 태스크를 계속하면서 손상된 작업을 종료할 수 있다. 손상된 작업을 종료하는 동안, OS는 추후 분석을 위해, 예를 들어, 손상된 데이터 및 기대되는 서명, 프로그램의 현재 위치, 프로세서 레지스터의 상태, 메모리의 상태 등을 포함하는 추가 정보를 전용 서비스 또는 전용 장치 또는 서버에 저장하거나 전송할 수 있다. 대안적으로, 해커에게 손상이 감지되었음을 알리지 않기 위해, OS는 플래그 또는 레지스터를 설정하고 더미 데이터를 사용하여 태스크를 종료할 수 있다.
일 실시예에서, 보안 정책에 정의된 바와 같이(예를 들어, 로직 규칙들로 구현된) 커스텀 액션이 트리거될 수 있다. 커스텀 액션은 손상된 소프트웨어 또는 프로세스를 중지, 비밀 데이터 삭제, 보안 로그 엔트리 생성 및 시스템 보안 감사 함수 트리거링을 포함할 수 있다.
일 실시예에서, 프로세서는, 손상에도 불구하고 프로세스를 종료하고/하거나 실행을 재개하기 전에 이벤트를 로깅 및/또는 분석할 수 있다.
일 실시예에서, 체크섬 비교는 하드웨어 체크섬 함수(블록)에 의해 수행될 수 있다. 이 경우, 레지스터를 통해 비교 결과에 액세스할 수 있으며, 불일치하는 경우, 하드웨어 내의 프로세서에서 보안 예외가 선택적으로 트리거링될 수 있다(성능을 향상시키는 이점이 있다).
일 실시예에서, 회로는 프로세서 내에서 실행 컨텍스트 데이터를 복원하도록 구성된다.
일 실시예에서, 중요 보안 파라미터들, 예를 들어 실행 컨텍스트 데이터는 이후에 (부분적으로 또는 전체로) 메모리로부터 프로세서로 복원될 수 있다. 이는 예를 들어 두 어플리케이션 간의 컨텍스트 전환시 발생할 수 있다.
일 실시예에서, 회로는 요구에 따라 비활성화될 수 있다.
일 실시예에서, 실행 컨텍스트 데이터 및/또는 그 서명들 간의 비교에서 불일치가 검출되면 경고가 트리거링된다. 경고는 장치의 로컬 또는 전역에 수행될 수 있다. 예를 들어 경고는 운영 시스템 수준이나 보안 이벤트 처리를 담당하는 임의의 구성 요소(소프트웨어 또는 하드웨어)와 통신할 수 있다. 일부 실시예들에서, 오디오, 시각 및/또는 햅틱 피드백(예를 들어, 진동, 소리, 디스플레이 등)을 사용하여 인간 사용자에게 경고할 수 있다. 경고는 다른 프로세스, 다른 장치 또는 서버로 보낼 수도 있다.
아래에서 특정 실시예가 설명된다.
도 2는 본 발명에 따른 보안 시스템의 일부 양태들을 도시한다.
상기에서 설명한 특징과 비교하여, 시스템은 추가 회로(200)을 포함한다. 일 양태에서, 회로(200)는 프로세서의 레지스터로부터 실행 컨텍스트 데이터를 수신하거나 수집하거나 검색하거나 인터셉트하거나 캡처하도록 구성된다. 데이터는 일반적으로 복사된다. 데이터 복사는 다른 방식으로 트리거될 수 있다.
일 실시예에서, 명령어들의 실행 스택에서 CALL 명령어가 검출되면, 레지스터로부터 메모리(251)로 회로(200)에 의해 복사가 트리거링되거나 제어된다(250). 일 실시예에서, 명령어들의 실행 스택에서 RET 명령어가 검출되면 메모리로부터 레지스터(252)로 복사가 트리거링되거나 제어된다.
일 실시예(SPARC 환경)에서, 윈도우 오버플로가 검출되면, 레지스터로부터 메모리(251)로 회로(200)에 의해 복사가 트리거링되거나 제어된다(250). 일 실시예에서, 윈도우 언더플로가 검출되면, 메모리로부터 레지스터(252)로 복사가 트리거링되거나 제어된다. 윈도우 오버플로/언더플로는 SPARC CPU 함수 이벤트이다.
본 발명에 따른 회로(200)에서, 하나 이상의 서명(또는 지문, 임프린트와 같은 다른 자격 인증(credentials))이 복사된 실행 컨텍스트 데이터로부터 판단된다. 서명 또는 자격 인증은 해시, 대칭 및 비대칭 암호화 함수의 조합을 사용하여 계산할 수 있다. 일 실시예에서, 자격 인증은 복사된 데이터의 해시값을 계산함으로써 산출된다. 일 실시예에서, 사용된 해시 함수는 SHA-2 패밀리에 속한다. 다른 실시예에서, 해시 함수는 SHA-3 패밀리에 속한다. 또 다른 실시예에서, 해시 함수는 AES, TDES, PRESENT와 같은 블록 암호 또는 Trivium, Grain과 같은 스트림 암호를 체인으로 연결함으로써 구성된다. 다른 실시예에서, 복사된 데이터의 서명은, 블록 암호 또는 스트림 암호와 같은 대칭 암호화 함수 및 비밀 키를 사용하거나 해시 함수 및 비밀 키를 사용하여 계산된다. 바람직하게는, 공격자는 비밀 키를 알지 못하면 새로운 서명을 위조할 수 없다. 이러한 방식의 예는 HMAC, CMAC 및 GMAC를 포함하나, 이에 국한되지 않는다. 다른 실시예에서, 복사된 데이터는 비대칭 암호화 함수들 및 개인 키를 사용하여 서명된다. 비대칭 암호화 서명 방식의 예는 RSA, DSA 및 ECDSA를 포함하나, 이에 국한되지는 않는다. 상기 하나 이상의 서명(예를 들어, 체크섬 등)은 메모리(또는 다른 메모리 유닛)에 저장된다.
또한, 새로운 명령어들이 실행되고(예를 들어, 함수들 호출), 실행 컨텍스트 데이터가 계속적으로 수신된다. 그런 다음 새로운 서명이 계산되어 그에 따라 저장된다.
복사된 데이터가 메모리로부터 다시 판독될 때, 서명들이 비교된다(213). 서명들이 동일하지 않으면, 경고(230)가 (프로세서 및/또는 운영 시스템 및/또는 소프트웨어 프로그램 등으로) 트리거링된다.
비교 주기들의 지속 기간 및/또는 발생은 구성 가능할 수 있다. 절충이나 교환 측면에서는 다르다. 예를 들어, 단위가 세분화될수록 반응성/보안성은 좋지만, 큰 단위보다 리소스 집약적이다. 일 실시예에서, 복사된 데이터가 메모리로부터 되읽기 될 때마다 서명들이 비교된다. 일부 다른 실시예들에서, 다른 하트 비트들 또는 비교 시간 프레임들이 사용될 수 있다. 일 실시예에서, 비교는 실행 가능 명령어, 호출, 프레임, 스레드 또는 운영 시스템 프로세스 중 하나 이상에 대한 함수로서 수행된다.
일 실시예에서, 본 발명에 따른 회로는 서명들을 생성하는 제1 하드웨어 회로(212) 및 생성된 서명들을 검증하기 위한 제2 회로(213)를 포함한다. 일 실시예에서, 이들 2개의 회로는 전체 회로 크기를 감소시키기 위해 동일한 회로일 수 있다. 일 실시예에서, 서명(체크섬) 생성 및/또는 검증은 하드웨어 및/또는 소프트웨어 내에서 구현될 수 있다. 일 실시예에서, 이들 함수들은 전적으로 소프트웨어 내에서 구현될 수 있다.
또 다른 실시예에서, 하나 이상의 비밀 키(211)가 사용될 수 있다. 공격자가 유효한 서명이나 체크섬을 생성하지 못하도록 하기 위해, 중요한 데이터에서 계산된 체크섬은 예를 들어 하드웨어 내에 저장된 비밀 값을 사용할 수 있다.
키(들)의 저장 및 검색을 위한 다양한 실시예가 가능하다. 저장은 하드웨어 내에서 분산될 수 있으며, PUF 등을 사용하여 보호될 수 있다. 다양한 수학 함수가 사용될 수 있다. 다양한 암호화 메커니즘이 적용될 수 있다. 일 실시예에서, 비밀 값 또는 "키"는 소프트웨어에 의해 알려지지 않는다. 일 실시예에서, 키는 CPU 초기화 동안 무작위로 초기화된다. 일 실시예에서, 메시지 인증 코드(MAC)가 사용될 수 있다. 암호화에서 메시지 인증 코드는 메시지를 인증하기 위해(정보의 신뢰성 및 무결성을 확인하기 위해) 사용되는 정보 중 하나이다. 키 (암호) 해시 함수라고도 하는 MAC 알고리즘은 인증을 위해 비밀 키 및 임의의 길이의 메시지를 입력 받아 MAC 또는 태그를 출력한다. MAC 값은 검증기의 엔티티(비밀 키를 소유하는)가 임의의 메시지 내용의 변경을 감지 할 수 있도록 하여 메시지의 데이터 무결성과 신뢰성을 보호한다. MAC 알고리즘은 암호화 해시 함수(HMAC의 경우)와 같은 다른 암호화 기본 요소로 또는 블록 암호 알고리즘(OMAC, CBC-MAC 및 PMAC)로 구성될 수 있다. UMAC 및 VMAC와 같은 일부 고속 MAC 알고리즘은 범용 해싱을 기반으로 구성된다. 따라서 MAC 알고리즘은 일회성 MAC, CMAC, 해시 기반 메시지 인증 코드(HMAC), MMH-Badger MAC, Poly1305-AES, UMAC, VMAC 등 중 하나 이상일 수 있다.
도 3은 본 발명의 일 실시예에 따른 단계들의 예들을 도시한다.
도면은 특히 발명의 시간적 측면을 강조한다.
오프라인(또는 첫 번째 또는 학습 또는 초기화) 단계가 먼저 설명된다. 오프라인 단계는 사전에 수행되어, 사전에 정의된 값들을 결과로 내고 이들을 하드웨어 액세스 가능 회로들로 인코딩시킨다. 단계(410)에서, 하나의 소프트웨어가 실행된다. 상기 실행과 연관된 실행 컨텍스트 데이터는 단계(420)에서 결정된다. 상기 원시 실행 컨텍스트 데이터의 선택적인 선정, 즉 중요 실행 컨텍스트 데이터의 선택은 단계(430)에서 수행될 수 있다. 일 실시예에서, 보안과 관련된 데이터가 선택된다(관련성은 하나 이상의 사전에 정의된 기준에 따라 평가된다). 일 실시예에서, 무작위 선택이 수행된다. 일 실시예에서, 현재 실행중인 프로세스들 또는 태스크들의 부분 집합과 관련된 복사된 데이터가 선택된다(관계의 질은 하나 이상의 임계치에 따라 정량화되고 결정될 수 있다). 이 선택은 메모리(220)(또는 복수의 메모리 유닛)에 저장될 수 있다. 상기 실행 컨텍스트 데이터 및/또는 중요한/선택된 실행 컨텍스트 데이터의 하나 이상의 서명(예를 들어, 체크섬, 유사성 서명 등)은 단계(440)에서 결정된다. 상기 서명들의 처리는 전적으로 하드웨어 구현예에서, 하드웨어/소프트웨어 혼합 구현예에서 또는 전적으로 소프트웨어 구현예에서 수행될 수 있다. 이들 하나 이상의 서명의 선택은 원시 데이터와 함께(선택적) 메모리(220)(또는 복수의 메모리 유닛)에 저장될 수 있다.
이러한 오프라인 단계는 계속적으로 인라인으로 수행될 수도 있다. 프로세서가 소프트웨어 프로그램들 또는 명령어들 실행하는 한, 실행 컨텍스트 데이터는 누적되고 그에 따라 처리될 수 있다.
이하에서 인라인 단계가 설명된다. 하나의 소프트웨어를 실행하면, 실행 컨텍스트 데이터가 단계(450)에서 수신되거나 수집된다. 단계(460)에서 하나 이상의 서명이 얻어진다. 상기 하나 이상의 "인라인" 서명은 "오프라인"(즉, 이전에 저장된) 서명들과 단계(470)에서 비교된다. 서명이 동일하다고 판단되면(또는 거리 임계치 하에서 유사하다고 판단되면), 단계(481)에서 소프트웨어 프로그램의 실행이 계속된다(즉, 보안 예외가 발생되지 않는다). 서명들이 상이하다고 판단되면(또는 거리 임계치를 초과하여 비유사하다고 판단되면), 소프트웨어 프로그램의 실행이 중단된다(즉, 보안 예외가 발생하고/하거나 대응책이 취해진다). 이 대응책은 공격자에게 공격을 검출하지 못한 것으로 시뮬레이션하기 위해 소프트웨어 프로그램의 마지막 부분을 거짓으로 실행할 수 있다.
도 4는 시스템 관점에서 본 발명의 다양한 실시예들을 나타낸다. 이 도면은 프로세서, 메모리 및 회로가 특정 예시적인 역할을 지원하는 몇몇 특정 실시예를 분명히 보여준다.
단계(410)에서, 제1 실행 컨텍스트 데이터는 소프트웨어 프로그램의 실행에 응답하여 수신되거나 결정된다.
단계(420)에서, 프로세서는 프로세서의 내부 레지스터들로부터 중요한 데이터를 (선택적으로 선정하고) 도면의 회로에 구현된 체크섬 생성 하드웨어 함수에 기록한다. (오프라인, 제1) 서명이 획득된다. 서명은 단계(440)에서 메모리에 저장된다.
단계(450)에서, (회로에 복사 한 후, 또는 사전에, 또는 실시예에 따라서 동시에) 프로세서는 동일한 실행 컨텍스트 데이터를 프로세서 내부 레지스터들로부터 상기 데이터를 저장하는 메모리로 복사한다.
이후, 단계(460)에서, 제2 실행 컨텍스트 데이터가 수신되면, 프로세서는 다른(온라인, 제2) 서명을 계산한다.
단계(480)에서, 이는 제2 실행 컨텍스트 데이터에 대응하는 이전에 저장된 서명을 메모리로부터 검색하는 것을 트리거링 한다.
단계(490)에서, 제1 및 제2 서명은(예를 들어, 프로세서 내에서 또는 그에 의해, 또는 회로 내에서 또는 그에 의해, 또는 양 회로들에서) 비교된다.
제1 및 제2 서명이 일치하지 않으면, I/O 경고가 단계(491)에서 트리거링 된다.
제1 및 제2 서명이 일치하면, 실행 컨텍스트 데이터는 단계(492)에서 프로세서 내부 레지스터들로 복구되고, 소프트웨어 프로그램의 실행이 계속될 수 있다.
일 실시예에서, 서명들의 비교는 중요 데이터를 사용하기 전에 (해당되는 경우 임의의 손상을 적기에 검출하도록) 수행된다.
일 실시예에서, 검증은 중요 데이터를 사용하는 동안 (해당되는 경우 임의의 손상을 즉시 검출하도록) 수행된다.
개시된 방법은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예 또는 하드웨어 및 소프트웨어 요소 모두를 포함하는 실시예의 형태를 취할 수 있다. 전적으로 하드웨어 실시예는 성능 및 전력 소비 측면에서 유리하다. 소프트웨어 실시예는 펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함하나 이에 한정되지는 않으며, 업데이트 능력에 유리하다. 본 발명은 컴퓨터 또는 임의의 명령어 실행 시스템에 의해 또는 그와 관련하여 사용하기 위한 프로그램 코드를 제공하는 컴퓨터 사용 가능 매체 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능한 것은 명령어 실행 시스템, 기구 또는 장치에 의해 또는 그와 관련하여 사용하기 위해 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 장치일 수 있다. 상기 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템(또는 기구 또는 장치) 또는 전파 매체일 수 있다.

Claims (15)

  1. 프로세서(110)의 보안을 모니터링하는 회로(200)로서,
    - 상기 프로세서(110)에 의해 실행되는 소프트웨어 프로그램의 실행 컨텍스트 데이터를 저장하도록 구성된 메모리(120)에 액세스하고;
    - 상기 실행 컨텍스트 데이터로부터 하나 이상의 서명을 결정하며;
    - 상기 서명을 사전에 정의된 서명과 비교하여 상기 프로세서(110)의 보안을 모니터링하도록 구성되는, 프로세서의 보안을 모니터링하는 회로(200).
  2. 제1항에 있어서, 상기 서명은 해시값을 포함하는, 프로세서의 보안을 모니터링하는 회로.
  3. 제1항에 있어서, 실행 컨텍스트 데이터 및/또는 상기 실행 컨텍스트 데이터의 하나 이상의 서명의 무결성을 검증하도록 더 구성되는, 프로세서의 보안을 모니터링하는 회로.
  4. 제1항에 있어서, 하나 이상의 서명을 인증하기 위해 비밀 키를 사용하도록 구성되는, 프로세서의 보안을 모니터링하는 회로.
  5. 제4항에 있어서, 상기 비밀 키는 상기 프로세서의 초기화 동안 랜덤하게 초기화되는, 프로세서의 보안을 모니터링하는 회로.
  6. 제4항에 있어서, 상기 비밀 키는 물리적으로 복제 불가능한 함수(physically unclonable function) 및/또는 챌린지 응답 장치(challenge-response device)를 사용하여 생성되는, 프로세서의 보안을 모니터링하는 회로.
  7. 제4항에 있어서, 상기 비밀 키는 HMAC 모드에서 사용되는, 프로세서의 보안을 모니터링하는 회로.
  8. 제4항에 있어서, 상기 비밀 키는 진성 난수 생성기(true random generator)에 의해 생성되는, 프로세서의 보안을 모니터링하는 회로.
  9. 제4항에 있어서, 상기 비밀 키는 비 휘발성 메모리에 저장되는, 프로세서의 보안을 모니터링하는 회로.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 실행 컨텍스트 데이터의 서명들을 비교하도록 구성된 서브 회로가 DMA 제어기 및/또는 상기 프로세서의 버스 인터페이스의 일부인, 프로세서의 보안을 모니터링하는 회로.
  11. 제1항에 있어서, 상기 소프트웨어 프로그램은 하나의 실행 가능 명령어, 복수의 실행 가능 명령어, 실행 가능한 명령어들의 스레드, 복수의 스레드, 태스크, 또는 소프트웨어 프로세스 중 하나 이상인, 프로세서의 보안을 모니터링하는 회로.
  12. 제1항에 있어서, 상기 프로세서를 제어하도록 구성되는, 프로세서의 보안을 모니터링하는 회로.
  13. 제1항에 있어서, 상기 프로세서 내에서 실행 컨텍스트 데이터를 복원하도록 구성되는, 프로세서의 보안을 모니터링하는 회로.
  14. 제1항에 있어서, 실행 컨텍스트 데이터 및/또는 그 서명간의 비교들에서 불일치가 검출되면 경고가 트리거링되는, 프로세서의 보안을 모니터링하는 회로.
  15. 제1항에 있어서, 상기 회로는 상기 프로세서의 일부인, 프로세서의 보안을 모니터링하는 회로.
KR1020180027067A 2017-03-08 2018-03-07 보안되는 실행 컨텍스트 데이터 KR102092453B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17305248.1A EP3373178A1 (en) 2017-03-08 2017-03-08 Comparison of execution context data signatures with references
EP17305248.1 2017-03-08

Publications (2)

Publication Number Publication Date
KR20180103013A KR20180103013A (ko) 2018-09-18
KR102092453B1 true KR102092453B1 (ko) 2020-03-23

Family

ID=58745179

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180027067A KR102092453B1 (ko) 2017-03-08 2018-03-07 보안되는 실행 컨텍스트 데이터

Country Status (4)

Country Link
US (2) US11537715B2 (ko)
EP (1) EP3373178A1 (ko)
KR (1) KR102092453B1 (ko)
CN (1) CN108573144B (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10185584B2 (en) * 2013-08-20 2019-01-22 Teleputers, Llc System and method for self-protecting data
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10489382B2 (en) * 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
CN109409082A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的方法及装置
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11119798B2 (en) * 2018-11-15 2021-09-14 Sternum Ltd. Applying control flow integrity verification in intermediate code files
GB2579590B (en) 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
GB2579591B (en) * 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker
WO2020213050A1 (ja) * 2019-04-16 2020-10-22 三菱電機株式会社 データ処理システム、データ処理装置およびアプリケーションプログラムの検証方法
WO2020210983A1 (zh) * 2019-04-16 2020-10-22 华为技术有限公司 一种软件程序运行检查方法、电子设备及存储介质
KR102250779B1 (ko) 2019-05-14 2021-05-11 단국대학교 산학협력단 실행코드 무결성 검증 방법 및 장치, 그것을 포함하는 임베디드 장치
US11188470B2 (en) * 2019-05-22 2021-11-30 Vdoo Connected Trust Ltd. Dynamic identification of stack frames
US11403430B2 (en) * 2019-06-11 2022-08-02 At&T Intellectual Property I, L.P. Secure CPU architecture using encryption of return addresses
US11868467B2 (en) 2019-06-25 2024-01-09 Nec Corporation Semiconductor device, control flow inspection method, non-transitory computer readable medium, and electronic device
US11336462B1 (en) 2019-09-10 2022-05-17 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11366897B1 (en) 2020-01-17 2022-06-21 Wells Fargo Bank, N.A. Systems and methods for layered quantum computing detection
US11334667B1 (en) 2020-01-17 2022-05-17 Wells Fargo Bank, N.A. Systems and methods for disparate quantum computing threat detection
CN112600803B (zh) * 2020-12-02 2022-07-19 上海哔哩哔哩科技有限公司 Web端数据签名方法、装置及计算机设备
US20220191020A1 (en) * 2020-12-16 2022-06-16 International Business Machines Corporation Hardware support for software pointer authentification in a computing system
WO2022242841A1 (en) * 2021-05-19 2022-11-24 Huawei Technologies Co., Ltd. Method and device for executing code
US11972010B2 (en) * 2021-07-28 2024-04-30 Oracle International Corporation Securely connecting isolated managed heaps
WO2023096677A1 (en) * 2021-11-23 2023-06-01 Qualcomm Incorporated Method for circumventing processor error induced vulnerability
CN114547651A (zh) * 2022-02-18 2022-05-27 浙江大学 一种基于链式加密的操作系统中断上下文保护方法
CN115310055B (zh) * 2022-06-22 2023-08-11 北京信息科技大学 一种基于双看门狗的软件完整性保护方法
FR3137988A1 (fr) * 2022-07-12 2024-01-19 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procédé et circuit pour la vérification de l’intégrité d’un logiciel
CN115934449B (zh) * 2023-02-08 2023-06-02 合肥智芯半导体有限公司 一种寄存器的校验方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014033324A (ja) * 2012-08-02 2014-02-20 Fujitsu Ltd 暗号処理装置および方法
WO2016087652A1 (de) * 2014-12-05 2016-06-09 Technische Universität Dresden Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist, und datenverarbeitungsanordnungen zum erzeugen von programm-code

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0762337A3 (de) 1995-09-08 2000-01-19 Francotyp-Postalia Aktiengesellschaft & Co. Verfahren und Anordnung zur Erhöhung der Manipulationssicherheit von kritischen Daten
FR2849230B1 (fr) * 2002-12-24 2005-04-22 Francois Bangui Procede et dispositif de verification de l'integrite d'une application logicielle sans cle de chiffrement/dechiffrement
WO2005052795A1 (en) * 2003-11-28 2005-06-09 Koninklijke Philips Electronics N.V. Method and means for securing or verifying respectively a program that can be executed in a data processing unit
US8190917B2 (en) 2006-09-12 2012-05-29 International Business Machines Corporation System and method for securely saving and restoring a context of a secure program loader
US20090285390A1 (en) * 2008-05-16 2009-11-19 Ati Technologies Ulc Integrated circuit with secured software image and method therefor
WO2011047069A1 (en) * 2009-10-13 2011-04-21 Tiger's Lair Inc. Method and apparatus for ensuring consistent system configuration in secure applications
US20110154501A1 (en) * 2009-12-23 2011-06-23 Banginwar Rajesh P Hardware attestation techniques
US8782435B1 (en) * 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8595510B2 (en) * 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
KR101662616B1 (ko) * 2012-09-14 2016-10-05 인텔 코포레이션 저전력 상태시 메모리 영역 보호 방법 및 장치
US9063721B2 (en) * 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9390291B2 (en) * 2012-12-29 2016-07-12 Intel Corporation Secure key derivation and cryptography logic for integrated circuits
CN103795717B (zh) * 2014-01-23 2017-01-25 中国科学院计算技术研究所 一种云计算平台完整性证明方法及其系统
CN104809401B (zh) * 2015-05-08 2017-12-19 南京大学 一种操作系统内核完整性保护方法
US10114941B2 (en) * 2016-08-24 2018-10-30 Altera Corporation Systems and methods for authenticating firmware stored on an integrated circuit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014033324A (ja) * 2012-08-02 2014-02-20 Fujitsu Ltd 暗号処理装置および方法
WO2016087652A1 (de) * 2014-12-05 2016-06-09 Technische Universität Dresden Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist, und datenverarbeitungsanordnungen zum erzeugen von programm-code

Also Published As

Publication number Publication date
KR20180103013A (ko) 2018-09-18
US11537715B2 (en) 2022-12-27
CN108573144A (zh) 2018-09-25
EP3373178A1 (en) 2018-09-12
CN108573144B (zh) 2022-12-16
US20180260564A1 (en) 2018-09-13
US20230114084A1 (en) 2023-04-13

Similar Documents

Publication Publication Date Title
KR102092453B1 (ko) 보안되는 실행 컨텍스트 데이터
US11163911B2 (en) Secure public cloud with protected guest-verified host control
US11520611B2 (en) Secure public cloud using extended paging and memory integrity
US10516533B2 (en) Password triggered trusted encryption key deletion
US9177153B1 (en) Verifying integrity and guaranteeing execution of code on untrusted computer platform
Kovah et al. New results for timing-based attestation
US9455955B2 (en) Customizable storage controller with integrated F+ storage firewall protection
US8364973B2 (en) Dynamic generation of integrity manifest for run-time verification of software program
Parno et al. Memoir: Practical state continuity for protected modules
CN110334521B (zh) 可信计算系统构建方法、装置、可信计算系统及处理器
KR101371784B1 (ko) 숨겨진 실행 환경에서 무결성 검증 및 인증 제공
US7953980B2 (en) Signed manifest for run-time verification of software program identity and integrity
US8474032B2 (en) Firewall+ storage apparatus, method and system
EP3759865A1 (en) High-throughput data integrity via trusted computing
WO2019104988A1 (zh) Plc的安全处理单元及其总线仲裁方法
US10061718B2 (en) Protecting secret state from memory attacks
CN110612517B (zh) 基于系统状态的存储器保护
KR20060130200A (ko) 런타임 안전 보장을 위한 자율 메모리 체커 및 이의 방법
US20190087582A1 (en) Bios security
US11775649B2 (en) Perform verification check in response to change in page table base register
US11645390B2 (en) Cloud-based method to increase integrity of a next generation antivirus (NGAV) security solution in a virtualized computing environment
WO2023104013A1 (zh) 数据完整性保护方法及相关装置
US9177160B1 (en) Key management in full disk and file-level encryption
US20240135040A1 (en) Secured computer memory
You et al. KVSEV: A Secure In-Memory Key-Value Store with Secure Encrypted Virtualization

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
GRNT Written decision to grant