KR100800999B1 - 프로그램의 실행흐름을 검사하는 방법 및 장치 - Google Patents

프로그램의 실행흐름을 검사하는 방법 및 장치 Download PDF

Info

Publication number
KR100800999B1
KR100800999B1 KR1020060015708A KR20060015708A KR100800999B1 KR 100800999 B1 KR100800999 B1 KR 100800999B1 KR 1020060015708 A KR1020060015708 A KR 1020060015708A KR 20060015708 A KR20060015708 A KR 20060015708A KR 100800999 B1 KR100800999 B1 KR 100800999B1
Authority
KR
South Korea
Prior art keywords
execution flow
measurement
instruction
checksum
program
Prior art date
Application number
KR1020060015708A
Other languages
English (en)
Other versions
KR20070082724A (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 삼성전자주식회사
Priority to KR1020060015708A priority Critical patent/KR100800999B1/ko
Priority to US11/655,925 priority patent/US8015553B2/en
Priority to JP2007026499A priority patent/JP4871156B2/ja
Priority to EP07102047A priority patent/EP1835405A3/en
Priority to CNB2007100788927A priority patent/CN100562859C/zh
Publication of KR20070082724A publication Critical patent/KR20070082724A/ko
Application granted granted Critical
Publication of KR100800999B1 publication Critical patent/KR100800999B1/ko

Links

Images

Classifications

    • 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/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 프로그램의 실행흐름을 검사하는 방법 및 장치에 관한 것이다.
본 발명의 실시예에 따른 프로그램의 실행흐름을 검사하는 방법은 프로그램을 구성하는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 실행흐름을 검사하는 단계, 및 상기 측정된 실행흐름을 검증하는 단계를 포함한다.
실행흐름, 검사, 프로그램, 인스트럭션

Description

프로그램의 실행흐름을 검사하는 방법 및 장치{Method and apparatus for testing execution flow of program}
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템과 프로그램을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 프로그램의 구조를 개략적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 실행흐름 참조 정보를 나타낸 도면이다.
도 4a 내지 도 4g는 본 발명의 일 실시예에 따른 인스트럭션들을 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 실행흐름 검사 장치를 나타낸 블록도이다.
도 6은 본 발명의 일 실시예에 따른 검사 모듈을 나타낸 블록도이다.
도 7은 본 발명의 일 실시예에 따른 프로그램 측정 모듈을 나타낸 블록도이다.
도 8은 본 발명의 일 실시예에 따른 체크섬 계산 과정을 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 레지스터링 모듈을 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 동작 상태 간의 전이를 나타낸 도면이 다.
도 11 내지 도 13은 본 발명의 일 실시예에 따른 실행흐름 검사 과정을 나타낸 흐름도이다.
도 14는 본 발명의 일 실시예에 따른 실행흐름 검사 과정을 설명하기 위한 도면이다.
도 15는 본 발명의 다른 실시예에 따른 실행흐름 검사 과정을 설명하기 위한 도면이다.
본 발명은 프로그램의 실행흐름에 관한 것으로서, 더욱 상세하게는 프로그램의 실행흐름을 검사하는 방법 및 장치에 관한 것이다.
프로그램의 위변조 여부를 확인하기 위하여 프로그램에 대한 무결성 측정 및 검증 기술이 이용되고 있다. 그러나 무결성 측정이라는 방법 자체가 특정 시점에서의 프로그램 이미지를 다루는 기술이기 때문에, 프로그램에 대한 정적인 검증에만 적용되어 왔다. 즉, 종래의 무결성 측정 기술은 시간의 흐름을 고려하지 않고 있기 때문에, 특정 시점에서의 프로그램 이미지의 변조 유무를 판별할 수는 있으나 무결성 측정 시점 이전에 프로그램 이미지가 변조가 되었다가 다시 복원이 되었던 것인지에 대한 정보는 얻을 수 없다는 문제점이 있다.
이러한 문제점을 극복하기 위한 방안으로, 주기적으로 무결성 측정을 수행하 는 방법이 제안되었다.  그러나 무결성 측정의 대상 프로그램 이미지가 크면 클수록, 또 주기적인 측정을 자주하면 할수록 무결성 측정에 소요되는 시간과 비용이 많이 필요하게 되고 이로 인해서 프로그램 및 시스템의 성능을 저하시키는 결과를 초래할 수 있게 된다.
본 발명은 프로그램이 설계된 방식대로 실행되는지의 여부를 검사하는데 그 목적이 있다.
본 발명의 다른 목적은 시스템의 부하를 낮추면서, 실행흐름의 검사를 효율적으로 수행하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 프로그램의 실행흐름을 검사하는 방법은 프로그램을 구성하는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 실행흐름을 검사하는 단계, 및 상기 측정된 실행흐름을 검증하는 단계를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 프로그램의 실행흐름을 검사하는 장치는 프로그램을 구성하는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 실행흐름을 검사하는 실행흐름 측정 모듈, 및 상기 측 정된 실행흐름을 검증하는 실행흐름 검증 모듈을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템과 프로그램을 나타낸 도면이다.
컴퓨팅 시스템(100)은 소정의 목적을 달성하기 위하여 프로그램(200)을 실행시킬 수 있는 연산 장치로서, 휴대폰, PDA, 셋탑 박스, 노트북, 데스크 탑 등을 그 예로 들 수 있다. 컴퓨팅 시스템(100)은 실행흐름 검사 장치(500)를 포함하는데, 실행흐름 검사 장치(500)는 프로그램(200)이 정상적으로 실행되고 있는지의 여부를 검사한다. 이를 위하여, 실행흐름 검사 장치(500)는 프로그램(200)의 실행흐름(execution flow)을 검사한다. 여기서 실행흐름이란 프로그램(200)을 구성하는 인 스트럭션(instruction)들의 수행, 분기, 점프, 리턴 등으로 결정되는, 상기 인스트럭션들의 실행 경로의 궤적을 의미한다. 따라서 실행흐름은 프로그램(200)을 구성하는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 정보로 표현될 수 있다.
실행흐름 검사 작업은 실행흐름 측정 작업과 실행흐름 검증 작업으로 이루어진다. 실행흐름 측정 작업은 프로그램(200)을 구동시킴으로 인하여 실행되는 인스트럭션들을 입력값으로하는 소정의 체크섬 계산을 통해서 수행될 수 있으며, 실행흐름 검증 작업은 실행흐름 측정 작업의 결과로 생성된 체크섬 결과값을 소정의 참조 측정값과 비교함으로써 수행될 수 있다. 실행흐름 검사 작업에 대한 구체적인 내용은 도 5 내지 도 12의 설명을 통해서 이해될 수 있을 것이다.
실행흐름 검사 장치(500)를 통해서 실행흐름을 검사 받기 위해서는 프로그램(200)이 실행흐름 검사 장치(500)의 동작에 필요한 소정의 정보를 포함하여야 할 필요가 있다. 즉, 자신이 작성한 프로그램이 실행흐름 검사를 받게 되기를 원하는 프로그램 개발자는 실행흐름 검사 작업에 필요한 정보와 구조를 갖도록 프로그램을 작성할 수 있다.
실행흐름 검사를 수행하여야 할 부분은 프로그램(200)의 전체 또는 일부일 수 있으며, 프로그램 개발자는 프로그램(200)에서 실행흐름 검사가 필요한 부분을 실행흐름 검사 타겟으로 설정할 수 있다. 하나의 프로그램(200) 내에는 하나 이상의 실행흐름 검사 타겟이 설정될 수 있다.
본 발명의 이해를 돕기 위하여, 도 2 내지 도 4g를 참조하여 본 발명의 일 실시예에 따른 프로그램의 구조에 대하여 설명하도록 한다. 그러나 본 발명은 이하에서 설명되는 프로그렘의 구조에 한정되지 않는다.
도 2는 본 발명의 일 실시예에 따른 프로그램의 구조를 개략적으로 나타낸 도면이다.
도시된 프로그램(200)은 소정의 메타 정보를 포함하는 프로그램 헤더(210)와 소정 목적을 달성하기 위하여 컴퓨팅 시스템(100) 상에서 실행될 프로그램 코드(220)를 포함한다.
프로그램 헤더(210)는 실행흐름 기반 정보(230)와 일반 정보(240)를 포함한다. 여기서 일반 정보(240)는 프로그램(200) 자체에 대한 메타 정보로서, 종래의 기술에서 프로그램 헤더에 삽입되는 다양한 정보들을 포함한다. 이에 반하여 실행흐름 기반 정보(230)는 본 발명의 일 실시예에 따른 실행흐름 검사를 위하여 필요한 정보로서, 실행흐름 정보 헤더(250)와 암호화된 실행흐름 참조 정보(260)를 포함한다.
실행흐름 정보 헤더(250)는 암호화된 실행흐름 참조 정보(260)를 복호화하는데 필요한 메타 정보를 포함한다. 예를 들어 실행흐름 정보 헤더(250)는 암호화된 실행흐름 참조 정보(260)에 적용된 암호화 알고리즘의 종류를 나타내는 정보를 포함할 수 있다. 암호화된 실행흐름 참조 정보(260)를 복호화하면, 도 3에 도시된 바와 같은 실행흐름 참조 정보(300)를 얻을 수 있다.
도 3에 도시된 실행흐름 참조 정보(300)는 프로그램 식별자(310), 버전 정보(320), 체크섬 부가 정보(330), 검증 참조 정보 개수(340), 및 하나 이상의 검증 참조 정보(350-1 내지 350-n)를 포함하는 참조 정보 셋(350)을 포함한다.
프로그램 식별자(310)는 프로그램(200)에 할당된 유일한(uniqe) 정보로서, 프로그램 식별자(310)를 통해서 서로 다른 프로그램 식별할 수 있다.
버전 정보(320)는 실행흐름 참조 정보(300)의 구조, 형식, 사용 방법 등을 결정하는 정보로서, 실행흐름 참조 정보(300)가 어떠한 포맷으로 작성된 것인지 확인하는데 사용된다. 실행흐름 검사 장치(500)는 프로그램(200)의 버전 정보(320)와 자신이 처리할 수 있는 버전 정보를 비교함으로써, 실행흐름 검사 적업의 수행 여부를 결정할 수 있다. 예를 들어, 실행흐름 검사 장치(500)는 양 버전 정보가 일치하는 경우에 실행흐름 검사 작업을 수행하고, 양 버전 정보가 불일치하면 실행흐름 검사 작업을 수행하지 않을 수 있다.
체크섬 부가 정보(330)는 프로그램(200) 구동 시 실행되는 인스트럭션에 대한 체크섬 계산에 필요한 정보를 포함한다. 체크섬 부가 정보(330)는 실행흐름 검사 장치(500)가 사용하는 체크섬 알고리즘에 따라서 적절한 정보들을 포함할 수 있다. 예를 들어, 체크섬 부가 정보(330)는 도 3에 도시된 바와 같이 초기화 벡터(332) 및 체크섬 키(334)를 포함할 수 있다. 그러나 본 발명은 이에 한정되지 않는다.
검증 참조 정보 개수(340)는 실행흐름 참조 정보(300)에 포함된 검증 참조 정보(350-1 내지 350-n)의 개수를 나타낸다.
참조 정보 셋(350)은 하나 이상의 검증 참조 정보(350-1 내지 350-n)를 포함하는데, 검증 참조 정보들(350-1 내지 350-n)의 크기는 동일한 것이 바람직하다. 각 검증 참조 정보(350-1 내지 350-n)는 도 3에 도시된 바와 같이 참조 측정값(352)과 측정 종료 인스트럭션 위치 정보(354)를 포함한다. 참조 측정값(352)은 실행흐름 검사 장치(500)의 실행흐름 검증 작업 시 실행흐름 측정 결과와 비교 대상이 되는 정보이다. 측정 종료 인스트럭션 위치 정보(354)는 참조 측정값(352)이 적용될 실행흐름 검사 타겟에 포함되는 측정 종료 인스트럭션의 위치를 나타낸다. 측정 종료 인스트럭션에 대해서는 도 4b를 참조하여 후술하도록 한다.
측정 종료 인스트럭션 위치 정보(354)는 프로그램(200)에서 측정 종료 인스트럭션의 위치를 나타내기 위한 상대적인 주소 값으로서, 프로그램의 시작 주소로부터 측정 종료 인스트럭션까지의 거리로 계산될 수 있다. 측정 종료 인스트럭션 위치 정보(354)는 실행흐름 검사에 관련된 인스트럭션의 위치가 변경되거나 삭제되는 등 프로그램 코드(200)에 악의적인 변경이 가해진 경우에 이를 검출하는데 사용될 수 있다.
각 검증 참조 정보(350-1 내지 350-n)는 프로그램(200) 내에 존재하는 실행흐름 검사 타겟과 대응한다. 따라서 실행흐름 검사 타겟의 개수와 검증 참조 정보(350-1 내지 350-n)의 개수는 동일하다. 검증 참조 정보(350-1 내지 350-n) 각각이 어떤 실행흐름 검사 타겟과 대응하는지는, 후술할 측정 시작 인스트럭션에 포함되는 타겟 식별자(414a)를 통해서 확인 가능하다. 예를 들어 타겟 식별자(414a)는 복수의 검증 참조 정보들(350-1 내지 350-n)의 배열 순서에 관련된 정보의 형식으로 표현될 수 있다. 이 경우, 타겟 식별자(414a)를 확인하면 특정 실행흐름 검사 타겟에 대응하는 검증 참조 정보가 복수의 검증 참조 정보들(350-1 내지 350-n) 중 에서 몇 번째 위치하고 있는지 알 수 있게 된다.
다시 도 2를 참조하면, 프로그램 코드(220)는 복수의 인스트럭션으로 구성된다. 복수의 인스트럭션들은 실행흐름 검사 기반 인스트럭션과 프로그램 기반 인스트럭션으로 분류될 수 있다.
프로그램 기반 인스트럭션은 프로그램 자체를 위한 것으로서, 프로그램 기반 인스트럭션들의 실행으로 인하여 컴퓨팅 시스템(100)은 소정의 목적을 달성하기 위한 작업을 수행할 수 있게 된다. 실행흐름 검사 기반 인스트럭션은 프로그램의 실행흐름 검사 작업을 위한 것으로서, 실행흐름 검사 장치(500)는 실행흐름 검사 기반 인스트럭션을 통해서 프로그램(200)의 실행흐름 검사 작업을 제어할 수 있게 된다.
본 발명의 일 실시예에 따른 실행흐름 검사 기반 인스트럭션들은, 측정 시작 인스트럭션, 측정 종료 인스트럭션, 측정 일시중지 인스트럭션, 측정 재개 인스트럭션, 실행흐름 불능화 인스트럭션, 실행흐름 가능화 인스트럭션, 및 상태정보 요청 인스트럭션로 구분될 수 있다.
프로그램(200)에서 실행흐름 검사 타겟은 측정 시작 인스트럭션부터 시작하여 측정 종료 인스트럭션까지로 구성될 수 있다. 즉, 측정 시작 인스트럭션과 측정 종료 인스트럭션의 셋(set)이 하나의 실행흐름 검사 타겟을 설정하는데 사용된다.
측정 시작 인스트럭션은 실행흐름 측정 작업을 시작시키기 위하여 사용된다. 측정 시작 인스트럭션은 도 4a에 도시된 바와 같이 실행흐름 측정 작업의 시작을 지시하는 측정 시작 명령코드(opcode)(412)와 소정의 파라미터(414)를 포함할 수 있다. 파라미터(414) 중에는 실행흐름 검사 타겟을 식별하기 위한 타겟 식별자(414a)가 포함될 수 있다. 타겟 식별자(414a)는 복수의 검증 참조 정보들(350-1 내지 350-n) 중에서 대응되는 검증 참조 정보의 배열 순서를 나타내는 형식을 가질 수 있다. 따라서 프로그램 내에 복수의 실행흐름 검사 타겟이 존재하는 경우, 각 실행흐름 검사 타겟의 측정 시작 인스트럭션에 포함되는 타겟 식별자(414a)를 통해서 각 실행흐름 검사 타겟에 대응하는 검증 참조 정보가 복수의 검증 참조 정보(350-1 내지 350-n) 중에서 몇번째에 위치하는지 확인할 수 있다. 이밖에도 타겟 식별자(414a)는 실행흐름 측정 작업의 오류 여부를 확인하기 위하여 사용될 수 있다.
측정 종료 인스트럭션은 실행흐름 측정 작업을 종료시키기 위하여 사용된다. 측정 종료 인스트럭션은 도 4b에 도시된 바와 같이 실행흐름 측정 작업의 종료를 지시하는 측정 종료 명령코드(422)와 소정의 파라미터(424)를 포함할 수 있다. 파라미터(424) 중에는 실행흐름 검사 타겟을 식별하기 위한 타겟 식별자(424a)와 실행흐름 측정이 종료된 후에 수행되어야 할 작업을 지시하는 측정 후 작업 정보(424b)가 포함될 수 있다. 실행흐름 측정이 종료된 후에 수행될 수 있는 작업의 바람직한 실시예로써 실행흐름 검증 작업을 들 수 있다. 이밖에도 실행흐름 측정이 종료된 후에 수행되어야 할 작업의 종류에 따라서 이를 지시하는 다양한 측정 후 작업 정보가 존재할 수 있다.
측정 일시중지 인스트럭션은 실행흐름 측정 작업을 일시적으로 중지시키기 위해서 사용된다. 측정 일시중지 인스트럭션은 도 4c에 도시된 바와 같이 실행흐름 측정 작업의 일시중지를 지시하는 측정 일시중지 명령코드(432)와 소정의 파라미터(434)를 포함할 수 있다. 파라미터(434) 중에는 실행흐름 검사 타겟을 식별하기 위한 타겟 식별자(434a)가 포함될 수 있다.
측정 재개 인스트럭션은 일시적으로 중지된 실행흐름 측정 작업을 재개시키기 위해서 사용된다. 측정 재개 인스트럭션은 도 4d에 도시된 바와 같이 실행흐름 측정 작업의 재개를 지시하는 측정 재개 명령코드(442)와 소정의 파라미터(444)를 포함할 수 있다. 파라미터(444) 중에는 실행흐름 검사 타겟을 식별하기 위한 타겟 식별자(444a)가 포함될 수 있다.
실행흐름 가능화 인스트럭션은 실행흐름 검사 작업을 수행하는 기능을 활성화시키기 위해서 사용된다. 즉, 실행흐름 가능화 인스트럭션이 페칭될 경우 실행흐름 검사 장치(500)는 해당 프로그램에 대한 실행흐름 검사 작업의 수행을 준비할 수 있다. 실행흐름 가능화 인스트럭션은 도 4e에 도시된 바와 같이 실행흐름 검사 기능의 활성화를 지시하는 실행흐름 가능화 명령코드(452)와 소정의 파라미터(454)를 포함할 수 있다.
실행흐름 불능화 인스트럭션은 실행흐름 검사 작업을 수행하는 기능을 비활성화시키기 위해서 사용된다. 즉, 실행흐름 불능화 인스트럭션이 페칭될 경우 실행흐름 검사 장치(500)는 해당 프로그램에 대한 실행흐름 검사 기능을 비활성화시킬 수 있다. 실행흐름 불능화 인스트럭션은 도 4f에 도시된 바와 같이 실행흐름 검사 기능의 비황성화를 지시하는 실행흐름 불능화 명령코드(462)와 소정의 파라미 터(464)를 포함할 수 있다.
상태정보 요청 인스트럭션은 실행흐름 검사와 관련된 상태정보를 획득하기 위하여 사용된다. 예를 들어 실행흐름 검증 결과나 실행흐름 측정 오류 상태를 참조할 필요가 있는 경우 상태정보 요청 인스트럭션이 사용될 수 있다. 상태정보 요청 인스트럭션은 상태정보의 요청을 지시하는 상태정보 요청 명령코드(472)와 소정의 파라미터(474)를 포함한다. 여기서 파라미터(474)는 상태정보를 제공하여야 할 소스 레지스터에 대한 정보(474a)와 제공된 상태정보를 저장할 목적지 레지스터에 대한 정보(474b)를 포함할 수 있다.
이상 도 1 내지 도 4g를 참조하여 실행흐름 검사 장치(500)에 의하여 실행흐름 검사를 받을 수 있는 프로그램(200)의 구조에 대하여 설명하였다. 전술한 프로그램의 구조는 본 발명의 일 실시예일뿐이므로 본 발명의 구현을 위해 사용되는 프로그램의 구조는 이에 한정되지 않는다. 따라서 실행흐름 검사 대상이 되는 프로그램의 구조는 실행흐름의 측정 및 검증에 필요한 정보들을 포함하는 다양한 형태로 구현될 수 있다. 여기서 실행흐름 측정 및 검증에 필요한 정보들의 종류는 전술한 프로그램에 대한 설명 및 이하에서 설명할 실행흐름 검사 장치(500)에 대한 설명을 통해서 이해될 수 있을 것이다.
이하, 본 발명의 일 실시예에 따른 실행흐름 검사 장치 및 그의 동작 과정에 대해서 설명하도록 한다.
도 5는 본 발명의 일 실시예에 따른 실행흐름 검사 장치를 나타낸 블록도이다. 도시된 실행흐름 검사 장치(500)는 페칭 모듈(510), 디코딩 모듈(520), 검사 모듈(530), 실행흐름 참조 정보 저장 모듈(540), 레지스터링 모듈(550), 연산 모듈(560), 보안 처리 모듈(570), 및 제어 모듈(580)을 포함한다. 도시된 실행흐름 검사 장치(500)는 컴퓨팅 시스템(100)의 주 처리 장치(예를 들면 CPU)로 기능할 수 있다. 도 5에서는 보안 처리 모듈(570)이 실행흐름 검사 장치(500)에 포함되는 것으로 도시하였으나, 실시예에 따라서 보안 처리 모듈(570)은 실행흐름 검사 장치(500)와 별도의 객체로 분리되어 존재할 수도 있다.
보안 처리 모듈(570)은 프로그램(200)이 컴퓨팅 시스템(100)의 메인 메모리(예를 들면 RAM(Random Access Memory)) 상에 로딩되면, 메인 메모리로부터 프로그램(200)의 실행흐름 기반 정보(230)를 읽어들이고, 암호화된 실행흐름 참조 정보(260)를 복호화한다. 프로그램(200)에 포함된 암호화된 실행흐름 참조 정보(260)는 일반 메모리 상에서는 그 내용을 알 수 없으나, 보안 처리 모듈(570)에서는 그 내용을 알 수 있도록 복호화되는 것이다.
복호화 작업을 통해서 획득된 실행흐름 참조 정보(300)는 프로그램(200)의 실행흐름을 검사하는데 있어서 중요한 정보이므로, 실행흐름 검사 장치(500) 이외의 다른 장치나 모듈에게 노출되지 않도록 하는 것이 바람직하다. 이를 위하여 보안 처리 모듈(570)은 외부 모듈이나 임의의 장치로부터의 접근을 물리적 또는 논리적으로 차단할 수 있다.
또한 실행흐름 참조 정보(300)의 보안을 유지하기 위하여, 암호화된 실행흐름 참조 정보(260)가 보안 처리 모듈(570) 이외의 다른 장치나 모듈상에서 복호화되지 않도록 할 수 있다. 예를 들어 보안 처리 모듈(570)은 공개키 알고리즘(예를 들어, Diffie-Hellman 방식, RSA 방식, ElGamal 방식, 및 타원곡선(Elliptic Curve) 방식 등)에서 사용되는 개인키를 포함하고 있고, 프로그램 개발자는 보안 처리 모듈(570)이 보유한 개인키에 대응하는 공개키를 사용하여 실행흐름 참조 정보(300)를 암호화하여 둘 수 있다. 이 경우 실행흐름 참조 정보(300)를 암호화하는데 사용된 공개키에 대응하는 개인키를 보유하지 않은 장치나 모듈은 암호화된 실행흐름 참조 정보(260)를 복호화할 수 없으며, 보안 처리 모듈(570)은 암호화된 실행흐름 참조 정보(260)를 복호화할 수 있다.
실행흐름 참조 정보 저장 모듈(540)은 보안 처리 모듈(570)에 의하여 복호화된 실행흐름 참조 정보(300)를 저장한다. 실행흐름 참조 정보(300)는 실행흐름 가능화 인스트럭션이 입력되는 경우에 보안 처리 모듈(570)로부터 얻을 수 있다. 만약 실행흐름 불능화 인스트럭션이 입력된다면 실행흐름 참조 정보 저장 모듈(540)은 저장 중이던 실행흐름 참조 정보(300)를 삭제할 수 있다. 실행흐름 참조 정보(300)에 대한 설명은 도 3을 참조하여 설명한 바와 같다.
페칭 모듈(510)은 컴퓨팅 시스템(100)의 메인 메모리 상에 로딩된 프로그램(200)의 인스트럭션들을 순차적으로 페칭한다. 여기서 인스트럭션의 페칭 순서는 프로그램 개발자가 각 인스트럭션에 삽입한 수행, 분기, 점프, 리턴 등의 코드에 의하여 결정될 수 있다.
디코딩 모듈(520)은 페칭 모듈(510)이 페칭한 인스트럭션을 디코딩한다.
검사 모듈(530)은 디코딩 모듈(520)에 의하여 디코딩된 인스트럭션들의 실행흐름을 검사한다. 이를 위하여 검사 모듈(530)은 도 6에 도시된 바와 같이 실행흐 름을 측정하는 실행흐름 측정 모듈(610)과 실행흐름을 검증하는 실행흐름 검증 모듈(620)을 포함한다.
실행흐름 측정 모듈(610)이 수행하는 실행흐름 측정 작업은 디코딩 모듈(520)에 의하여 디코딩된 인스트럭션을 입력 값으로 하는 체크섬 계산을 통해서 수행될 수 있다. 실행흐름의 측정 대상이 되는 인스트럭션들은 프로그램이 구동되는 동안, 그리고 실행흐름 측정 동작이 수행되는 동안 디코딩 모듈(520)로부터 지속적으로 공급된다. 실행흐름 측정 작업은 디코딩 모듈(520)이 측정 시작 인스트럭션을 디코딩 하면서 시작되고 디코딩 모듈(520)이 측정 종료 인스트럭션을 디코딩한 경우에 종료된다. 또한 실행흐름 측정 작업은 디코딩 모듈(520)이 측정 일시중지 인스트럭션을 디코딩한 경우에 일시적으로 중지된다. 이 때, 디코딩 모듈(520)이 측정 재개 인스트럭션을 디코딩하면 실행흐름 측정 작업이 재개된다.
도 7에 실행흐름 측정 모듈(610)에 대한 일 실시예를 도시하였다. 도시된 실행흐름 측정 모듈(610)은 체크섬 계산 모듈(710)과 연쇄 레지스터(720)를 포함한다.
체크섬 계산 모듈(710)은 디코딩 모듈(520)로부터 제공된 현재의 인스트럭션 값, 체크섬 키, 및 이전까지 계산된 체크섬 결과값을 입력값으로 하여 체크섬 계산을 수행한다. 체크섬 계산을 위하여 체크섬 계산 모듈(710)은 MD5(Message Digest 5)나 SHA-1(Secure Hash Algorithm-1)과 같은 소정의 해쉬 함수를 사용할 수 있다. 또는 체크섬 계산 모듈(710)은 NAND, AND 등의 논리 연산을 사용할 수도 있다. 참고로, 도 4a 내지 도 4g를 참조하여 설명한 실행흐름 검사 기반 인스트럭션들은 체 크섬 계산 대상에서 제외되는 것이 바람직하다. 즉, 체크섬 계산 대상은 프로그램 기반 인스트럭션들이다.
체크섬 계산을 위하여 사용되는 입력값 중에서 체크섬 키는 체크섬 계산의 보안성을 높이기 위하여 사용되는 입력값으로서, 임의의 값을 가질 수 있다. 체크섬 키는 프로그램 개발자에 의하여 프로그램(200)에 삽입되어 있을 수 있다. 도 3의 실시예에서는 체크섬 키가 실행흐름 참조 정보(300)에 포함되는 것으로 설명하였으며, 체크섬 계산 모듈(710)은 체크섬 키를 실행흐름 참조 정보 저장 모듈(540)로부터 얻을 수 있다. 이에 따라서 정당한 체크섬 키를 알지 못할 경우, 올바른 체크섬 결과값을 얻을 수 없게 된다.
연쇄 레지스터(720)는 체크섬 결과값을 저장하였다가 이를 다시 체크섬 계산 모듈(710)에게 제공한다.
이러한 구조로 이루어진 실행흐름 측정 모듈(610)의 체크섬 계산 과정을 도 8에 도시하였다. 체크섬 계산 작업이 최초로 수행될 경우(시간 t1)에는 이전까지 계산된 체크섬 결과값이 없으므로, 이와 동일한 비트수를 갖는 초기화 벡터(810)가 사용된다. 따라서, 최초의 체크섬 계산 시 체크섬 계산 모듈(710)은 인스트럭션 값, 초기화 벡터, 및 체크섬 키를 입력값으로 사용하게 된다. 초기화 벡터도 체크섬 키와 마찬가지로 프로그램 제작자에 의하여 프로그램에 삽입되어 있을 수 있다. 도 3의 실시예에서는 실행흐름 참조 정보(300)에 초기화 벡터(332)가 포함된 것으로 설명하였다. 체크섬 계산 모듈(710)은 실행흐름 참조 정보 저장 모듈(540)로부터 초기화 벡터를 얻을 수 있다.
최초의 체크섬 계산이 수행된 후에는 시간의 흐름에 따라서 측정 대상이 되는 인스트럭션 값, 이전까지 계산된 체크섬 결과값, 및 체크섬 키를 입력 값으로 하여 체크섬 계산 작업이 수행된다. 이전까지 계산된 체크섬 결과값은 연쇄 레지스터(720)에 저장되었다가 체크섬 계산 모듈(710)에게 제공될 수 있다.
참고로, 실제 프로그램의 구동시 인스트럭션들은 메인 메모리에 저장되어 있는 순서대로 실행되기도 하지만, 분기, 점프, 복귀 등에 의하여 저장 순서에 관계없이 실행되기도 한다. 따라서 도 8에 도시된 인스트럭션 스트림은 메인 메모리에 저장되어 있는 순서가 아니라 페칭 모듈(510)에 의하여 페칭되는 순서로 나열된 인스트럭션들을 의미한다.
이러한 방식을 통해서 최종적으로 출력되는 체크섬 결과값은 인스트럭션 자체의 값뿐만 아니라 인스트럭션들의 실행 순서까지 반영한 정보가 된다.
다시 도 6을 참조하면, 실행흐름 검증 모듈(620)은 실행흐름 측정 모듈(610)로부터 출력되는 체크섬 결과값을 소정의 참조 측정값과 비교하여 프로그램의 실행흐름이 정상적인지의 여부를 검증한다. 만약 두 값이 동일하다면 인스트럭션들의 실행흐름은 정상적이며, 프로그램이 설계된대로 동작한 것으로 판단할 수 있다. 그러나 두 값이 다르다면 인스트럭션들의 실행흐름은 비정상적이며, 프로그램이 설계된 대로 동작하지 않은 것으로 판단할 수 있다. 참조 측정값은 프로그램에 삽입되어 있을 수 있는데, 예를 들어 프로그램 제작자는 프로그램 제작시 실행흐름 검사 장치(500)가 수행하는 실행흐름 측정 작업과 동일한 작업을 통해서 얻어진 체크섬 결과값을 참조 측정값으로서 프로그램 상에 삽입시켜둘 수 있다. 도 3의 실시 예에서는 실행흐름 참조 정보(300)에 참조 측정값(352)이 포함되는 것으로 설명하였으며, 실행흐름 검증 모듈(620)은 실행흐름 참조 정보 저장 모듈(540)로부터 참조 측정값을 얻을 수 있다.
다시 도 5를 참조하면, 레지스터링 모듈(550)은 복수의 레지스터를 포함한다. 레지스터링 모듈(550)에 포함된 레지스터들은 도 9에 도시된 바와 같이 실행흐름 검사 기반 레지스터(910)와 일반 레지스터(920)로 구분될 수 있다.
실행흐름 검사 기반 레지스터(910)는 동작 상태 레지스터(911), 실행흐름 검사 타겟 레지스터(912), 측정 종료 인스트럭션 위치 레지스터(913), 검사 오류 레지스터(914), 및 검증 결과 레지스터(915)를 포함한다.
동작 상태 레지스터(911)는 실행흐름 검사 작업에 대한 동작 상태를 저장한다. 본 발명의 일 실시예에 따른 동작 상태는 비활성화 상태, 측정 오프 상태, 측정 온 상태, 및 측정 일시중지 상태로 구분될 수 있다.
비활성화 상태는 프로그램의 실행흐름 검사 작업을 위한 기능이 비활성되어 있음을 나타낸다. 그리고, 측정 온 상태와 측정 오프 상태는 각각 실행흐름 측정 작업이 수행 중인 경우와 종료된 경우를 나타낸다. 또한, 측정 일시중지 상태는 실행흐름 측정 작업이 일시적으로 중지된 상태를 나타낸다.
동작 상태 레지스터(911)는 이들 중 어느 하나를 저장하며, 동작 상태 레지스터(911)가 저장하는 동작 상태에 따라서 실행흐름 검사 장치(500)의 동작 상태가 결정된다. 실행흐름 검사 장치(500)의 동작 상태의 전이에 대해서는 도 10을 참조하여 후술하도록 한다.
실행흐름 검사 타겟 레지스터(912)는 프로그램(200) 상에 존재하는 실행흐름 검사 타겟 중에서 현재 실행흐름 검사가 진행 중인 실행흐름 검사 타겟을 식별하기 위한 타겟 식별자를 저장한다. 타겟 식별자는 측정 시작 인스트럭션이 입력될 경우, 측정 시작 인스트럭션의 파라미터에서 획득할 수 있다. 검사 모듈(530)은 실행흐름 검사 타겟 레지스터(912)에 저장된 타겟 식별자를 통해서 현재 실행흐름 검사 작업이 진행 중인 실행흐름 검사 타겟을 식별할 수 있다.
측정 종료 인스트럭션 위치 레지스터(913)는 실행흐름 측정이 수행되고 있는 실행흐름 검사 타겟에 포함되는 측정 종료 인스트럭션의 위치 정보를 저장한다. 측정 종료 인스트럭션의 위치 정보는 실행흐름 참조 정보 저장 모듈(540)에 저장된 실행흐름 참조 정보로부터 얻을 수 있다. 예를 들어, 측정 시작 인스트럭션이 입력될 경우 측정 시작 인스트럭션에 포함된 타겟 식별자를 통해서 대응되는 검증 참조 정보가 검색될 수 있으며, 검색된 검증 참조 정보에 포함된 측정 종료 인스트럭션 위치 정보가 측정 종료 인스트럭션 위치 레지스터(913)에 저장될 수 있다.
프로그램(200)을 수행하기 위해서 인스트럭션을 페칭할 때마다 제어 모듈(580)은 페칭된 인스트럭션의 상대적인 주소 정보를 체크하고 이를 측정 종료 인스트럭션 위치 레지스터(913)에 저장되어 있는 측정 종료 인스트럭션 위치 정보와 비교한다. 여기서 상대적인 주소 정보는 프로그램 코드(220) 영역이 시작되는 부분에서부터 인스트럭션의 위치까지의 상대적인 거리값을 의미한다.
만약 측정 종료 인스트럭션 위치 레지스터(913)에 저장되어 있는 측정 종료 인스트럭션 위치 정보와 매칭되는 상대적인 주소의 인스트럭션이 측정 종료 인스트 럭션이라면 제어 모듈(580)은 현재까지 진행된 실행흐름 측정 작업을 종료시키고 실행흐름 검증 작업을 진행시킨다. 그러나 측정 종료 인스트럭션 위치 레지스터(913)에 저장되어 있는 측정 종료 인스트럭션 위치 정보와 매칭되는 상대적인 주소의 인스트럭션이 측정 종료 인스트럭션이 아니라면 제어 모듈(580)은 실행흐름 측정 작업에 문제가 발생한 것으로 판단할 수 있다. 이를 통해서 제어 모듈(580)은 프로그램(200) 상에서 측정 종료 인스트럭션의 위치가 변경되어 실행흐름 검사 작업이 오동작 하는 상황을 예방할 수 있게 된다.
검사 오류 레지스터(914)는 실행흐름 측정 작업에 문제가 발생한 경우 이를 나타내기 위한 정보를 저장한다.
검증 결과 레지스터(915)는 실행흐름 검증 결과를 저장한다. 검증 결과는 특별한 정보가 없음을 의미하는 언셋(unset), 실행흐름이 정상적인 것으로 판단되었음을 나타내는 적합(valid), 및 실행흐름이 비정상적인 것으로 판단되었음을 나타내는 부적합(invalid) 중 어느 하나일 수 있다.
다시 도 5를 참조하면, 연산 모듈(560)은 디코딩 모듈(520)이 디코딩한 인스트럭션들을 실행시킨다. 연산 모듈(560)의 일 실시예로서 ALU(Arithmetic Logic Unit)를 들 수 있다.
제어 모듈(580)은 실행흐름 검사 장치(500)를 구성하는 각 모듈들(510 내지 570)의 동작 과정을 제어한다. 특히, 제어 모듈(580)은 실행흐름 검사 작업을 관리하는데, 이를 위하여 제어 모듈(580)은 전술한 실행흐름 검증 기반 레지스터들(911 내지 915)에 저장되는 정보를 이용할 수 있다.
도 10은 본 발명의 일 실시예에 따른 프로그램 검사 장치(500)의 동작 상태 간의 전이를 나타낸 도면이다. 실행흐름 검사 장치(500)는 도시된 바와 같은 네가지의 동작 상태(1010 내지 1040) 중에서 어느 하나의 동작 상태로 설정될 수 있으며, 실행흐름 검사 장치(500)의 현재 동작 상태와 새롭게 페칭되는 실행흐름 검사 기반 인스트럭션의 종류에 따라서 동작 상태가 변경될 수 있다.
실행흐름 검사 장치(500)의 최초 동작 상태는 비활성화 상태(1010)로서, 동작 상태 레지스터(911)는 비활성화 상태(1010)로 설정되어 있다. 즉, 실행흐름 검사 장치(500)의 실행흐름 검사 기능은 비활성화 상태이다. 동작 상태 레지스터(911)가 비활성화 상태(1010)로 설정된 상황에서 실행흐름 가능화 인스트럭션이 입력되면 동작 상태 레지스터(911)는 측정 오프 상태(1020)로 설정된다(①). 이 때, 실행흐름 검사 장치(500)의 실행흐름 검사 기능이 활성화되어, 보안 처리 모듈(570)에서 복호화된 실행흐름 참조 정보(300)가 실행흐름 참조 정보 저장 모듈(540)에 저장된다. 또한, 실행흐름 검사 타겟 레지스터(912), 검증 결과 레지스터(915), 및 검사 오류 레지스터(914)는 특별한 정보가 없다는 의미의 언셋(unset)으로 설정된다. 동작 상태 레지스터(911)가 비활성화 상태(1010) 이외의 동작 상태로 설정되어 있는 상황에서 실행흐름 가능화 인스트럭션이 입력될 경우, 제어 모듈(580)은 이를 무시할 수 있다.
동작 상태 레지스터(911)가 측정 오프 상태(1020)로 설정된 상황에서 실행흐름 불능화 인스트럭션이 입력되면 동작 상태 레지스터(911)는 비활성화 상태(1010)로 설정된다(②). 이 때, 실행흐름 검사 장치(500)의 실행흐름 검사 기능이 비활 성화되어, 실행흐름 참조 정보 저장 모듈(540)에 저장된 실행흐름 참조 정보는 삭제된다. 또한, 검사 타겟 레지스터(912), 검사 오류 레지스터(914), 및 검증 결과 레지스터(915)는 특별한 정보가 없다는 의미의 언셋(unset)으로 설정된다. 동작 상태 레지스터(911)가 측정 오프 상태(1020) 이외의 동작 상태로 설정되어 있는 상황에서 실행흐름 불능화 인스트럭션이 입력될 경우, 제어 모듈(580)은 이를 무시할 수 있다.
한편, 동작 상태 레지스터(911)가 측정 오프 상태(1020)로 설정된 상황에서 측정 시작 인스트럭션이 입력되면 동작 상태 레지스터(911)는 측정 온 상태(1030)로 설정된다(③). 이 때, 실행흐름 검사 타겟 레지스터(912)는 측정 시작 인스트럭션에 포함된 타겟 식별자를 저장하고, 측정 종료 인스트럭션 위치 레지스터(913)는 실행흐름 검사 타겟에 포함된 측정 종료 인스트럭션의 위치 정보를 저장한다. 측정 종료 인스트럭션의 위치 정보는 실행흐름 참조 정보 저장 모듈(540)에 저장된 실행흐름 참조 정보(300)를 통해 알 수 있다. 또한, 검사 오류 레지스터(914)와 검증 결과 레지스터(915)는 언셋(uset)으로 설정된다.
측정 온 상태(1030)에서 실행흐름 검사 장치(500)는 측정 시작 인스트럭션 이후로 입력되는 일반 인스트럭션들에 대한 실행흐름 측정 작업을 수행하게 된다. 동작 상태 레지스터(911)가 측정 오프 상태(1020) 이외의 동작 상태로 설정된 상황에서 측정 시작 인스트럭션이 입력되는 경우, 제어 모듈(580)은 이를 무시할 수 있다.
동작 상태 레지스터(911)가 측정 온 상태(1030)로 설정된 상황에서 측정 일 시중지 인스트럭션이 입력되면, 동작 상태 레지스터(911)는 측정 일시중지 상태(1040)로 설정된다(④). 이 때, 실행흐름 검사 장치(500)는 실행흐름 측정 작업을 일시적으로 중지한다. 동작 상태 레지스터(911)가 측정 온 상태(1030) 이외의 동작 상태로 설정된 상황에서 측정 일시중지 인스트럭션이 입력되면 제어 모듈(580)은 이를 무시할 수 있다.
동작 상태 레지스터(911)가 측정 일시중지 상태(1040)로 설정된 상황에서 측정 재개 인스트럭션이 입력되면 동작 상태 레지스터(911)는 측정 온 상태(1030)로 설정된다(⑤). 이 때 실행흐름 검사 장치(500)는 측정 재개 인스트럭션 이후에 입력되는 인스트럭션들에 대하여 실행흐름 측정 작업을 재개한다. 동작 상태 레지스터(911)가 측정 일시중지 상태(1040) 이외의 동작 상태로 설정된 상황에서 측정 재개 인스트럭션이 입력되면 제어 모듈(580)은 이를 무시할 수 있다.
동작 상태 레지스터(911)가 측정 온 상태(1030) 또는 측정 일시중지 상태(1040)로 설정된 상황에서, 측정 종료 인스트럭션이 입력되면 동작 상태 레지스터(911)는 측정 오프 상태(1020)로 설정된다(⑥,⑦). 이 때 실행흐름 검사 장치(500)는 실행흐름 검사 작업을 종료한다. 그 후 실행흐름 검사 장치(500)는 측정 종료 인스트럭션에 포함된 측정 후 작업을 수행하게 된다. 본 발명의 일 실시예에 따라서, 측정 후 작업이 실행흐름 검증 작업인 경우 검사 모듈(530)은 지금까지 계산된 실행흐름 측정 결과값을 참조 측정값과 비교한다. 두 값이 일치한다면 프로그램이 설계된 대로 수행되었음을 의미하며, 두 값이 일치하지 않는다면 프로그램이 설계된 대로 수행되지 않았음을 의미한다. 따라서 두 값이 일치하면 검증 결과 레지스터(915)는 적합(valid)으로 설정되고 두 값이 일치하지 않는다면 검증 결과 레지스터(915)는 부적합(invalid)으로 설정된다. 실행흐름 검증 작업이 수행된 후에는 실행흐름 검사 타겟 레지스터(912)는 언셋(unset)으로 설정된다. 동작 상태 레지스터(911)가 측정 온 상태(1030) 또는 측정 일시중지 상태(1040) 이외의 동작 상태로 설정된 상황에서 측정 종료 인스트럭션이 입력되는 경우 제어 모듈(580)은 이를 무시할 수 있다.
한편, 동작 상태 레지스터(911)가 측정 온 상태(1030)로 설정된 상황에서 측정 종료 인스트럭션이나 측정 일시중지 인스트럭션이 입력되면, 제어 모듈(580)은 측정 종료 인스트럭션 또는 측정 일시중지 인스트럭션에 포함된 타겟 식별자와 실행흐름 검사 타겟 레지스터(912)에 저장된 타겟 식별자를 비교한다. 만약 양자가 일치한다면 지금까지 수행된 실행흐름 측정 동작에 문제가 없었던 것이지만, 양자가 불일치한다면 실행흐름 측정 동작에 문제가 발생한 것으로 판단할 수 있다. 이러한 경우 검사 오류 레지스터(914)는 실행흐름 측정에 오류가 발생하였다는 정보를 저장하고 검증 결과 레지스터(915)와 실행흐름 검사 타겟 레지스터(912)는 언셋(unset)으로 설정된다. 또한 동작 상태 레지스터(911)는 측정 오프 상태(1020)로 설정되고(⑧) 실행흐름 측정 작업은 중단된다.
이러한 작업은 동작 상태 레지스터(911)가 측정 일시중지 상태(1040)로 설정된 상태에서 측정 종료 인스트럭션이나 측정 재개 인스트럭션이 입력되는 경우에도 동일하게 수행될 수 있다(⑨). 도 10에서 점선으로 표시한 동작 상태 전이가 이처럼 오류가 발생한 경우를 나타낸다.
도 11은 본 발명의 일 실시예에 따른 실행흐름 검사 기능을 활성화 하는 과정을 나타낸 흐름도이다.
먼저 프로그램(200)이 컴퓨팅 시스템의 메인 메모리에 로딩되면 보안 처리 모듈(570)은 프로그램(200)에서 암호화된 실행흐름 참조 정보(260)를 읽어들이고 이를 복호화 한다(S1110). 만약 메인 메모리에 로딩된 프로그램이 본 발명의 적용을 고려하지 않고 제작된 일반 프로그램이라면 보안 처리 모듈(570)은 암호화된 실행흐름 참조 정보(260)를 얻을 수 없을 것이며, 프로그램은 실행흐름 검사 작업 없이 실행될 것이다.
한편, 페칭 모듈(510)은 메인 메모리에 로딩된 프로그램(200)의 인스트럭션들을 페칭하고(S1120), 디코딩 모듈(520)은 페칭된 인스트럭션들을 디코딩한다(S1130).
이 때, 제어 모듈(580)은 프로그램(200)의 실행흐름에 대한 검사 작업을 수행해야 하는지의 여부를 판단한다(S1140). 예를 들어 실행흐름 가능화 인스트럭션이 입력되는 경우 제어 모듈(580)은 실행흐름 검사 작업을 수행하여야 하는 것으로 판단할 수 있다.
실행흐름 검사 작업을 수행하여야 하는 경우, 제어 모듈(580)은 실행흐름 검사 기능을 활성화시킨다(S1150). 이 때, 실행흐름 참조 정보 저장 모듈(540)은 보안 처리 모듈(570)이 복호화한 실행흐름 참조 정보(300)를 저장할 수 있다.
도 12는 본 발명의 일 실시예에 따른 실행흐름 측정 과정을 나타낸 흐름도이다.
디코딩 모듈(520)을 통해서 인스트럭션이 디코딩될 때마다 제어 모듈(580)은 실행흐름 측정 작업을 수행하여야 하는지의 여부를 판단한다(S1210). 예를 들어 측정 시작 인스트럭션이 입력되는 경우 제어 모듈(580)은 실행흐름 측정을 시작하여야 하는 것으로 판단할 수 있다.
실행흐름 측정 작업을 수행하여야 하는 경우, 검사 모듈(530)은 입력되는 인스트럭션들에 대한 실행흐름을 측정한다(S1220). 보다 구체적으로 검사 모듈(530)은 인스트럭션들을 입력값으로 하여 체크섬 계산을 수행하며, 이에 대한 설명은 도 8을 참조한 바와 같다.
도 13은 본 발명의 일 실시예에 따른 실행흐름 검증 과정을 나타낸 도면이다.
실행흐름 측정 작업이 수행되는 동안, 디코딩 모듈(520)을 통해서 인스트럭션이 디코딩될 때마다 제어 모듈(580)은 실행흐름 검증 작업을 수행하여야 하는지의 여부를 판단한다(S1310). 예를 들어 측정 종료 인스트럭션이 입력되는 경우 제어 모듈(580)은 실행흐름 검증 작업을 시작하여야 하는 것으로 판단할 수 있다.
실행흐름을 검증하여야 하는 경우, 검사 모듈(530)은 입력되는 인스트럭션들에 대한 실행흐름 측정 작업을 종료한다(S1320). 그 후, 검사 모듈(530)은 지금까지 계산된 실행흐름 측정 결과값과 소정의 참조 계산값의 일치 여부를 통하여 실행흐름 검증 작업을 수행하고(S1330), 실행흐름 검증 결과를 제공할 수 있다(S1340).
과정 S1330에서 두 값이 일치하면 프로그램이 설계된 대로 수행된 것으로 판단할 수 있으므로 검증 결과 레지스터(915)는 실행흐름이 정상적이라는 정보를 저 장할 수 있다.
그러나 과정 S1330에서 두 값이 불일치하면 프로그램이 설계된 대로 수행되지 않은 것으로 판단할 수 있으므로, 검증 결과 레지스터(915)는 실행흐름이 비정상적이라는 정보를 저장할 수 있다. 이 때 제어 모듈(580)은 프로그램(200)의 실행을 강제적으로 종료시킬 수도 있다.
한편, 디코딩 모듈(520)을 통해서 인스트럭션이 디코딩될 때마다 제어 모듈(580)은 실행흐름 측정 작업을 일시중지하여야 하는지의 여부를 판단할 수 있다. 예를 들어 측정 일시중지 인스트럭션이 입력되는 경우 제어 모듈(580)은 실행흐름 측정 작업을 일시중지하여야 하는 것으로 판단할 수 있다.
실행흐름 측정 작업을 일시중지하여야 하는 경우, 검사 모듈(530)은 입력되는 인스트럭션들에 대한 실행흐름 측정을 일시적으로 중단한다.
실행흐름 측정 작업이 일시적으로 중지된 상태에서, 디코딩 모듈(520)을 통해서 인스트럭션이 디코딩될 때마다 제어 모듈(580)은 실행흐름 측정 작업을 재개 하여야 하는지의 여부를 판단할 수 있다. 예를 들어 측정 재개 인스트럭션이 입력되는 경우 제어 모듈(580)은 일시적으로 중지되었던 실행흐름 측정 작업을 재개시켜야 하는 것으로 판단할 수 있다.
실행흐름 측정 작업을 재개하여야 하는 경우, 검사 모듈(530)은 입력되는 인스트럭션들에 대하여 실행흐름 측정 작업을 재개한다.
또한, 상태정보 요청 인스트럭션이 입력되는 경우 제어 모듈(580)은 검증 결과 레지스터(915)나 검사 오류 레지스터(914)에 저장된 정보를 특정 장소로 제공할 수 있다. 상태정보를 제공 받을 장소는 상태정보 요청 인스트럭션을 통해서 알 수 있다.
실행흐름 검사 결과는 상태정보를 특정 장소에 제공함으로써, 사용자에게 전달될 수도 있다.
도 14는 본 발명의 일 실시예에 따른 실행흐름 검사 과정을 설명하기 위한 도면이다.
도시된 인스트럭션 스트림은 프로그램(200)을 구성하는 인스트럭션들을 나타낸다. 인스트럭션의 실행 방향은 화살표로 도시한 바와 같이 왼쪽에서 오른쪽으로 진행된다.
실행흐름 가능화 인스트럭션(1410)이 입력되면 실행흐름 검사 장치(500)는 실행흐름 검사 작업을 준비하게 된다. 이 때, 보안 처리 모듈(570)에서 복호화된 실행흐름 참조 정보(300)가 실행흐름 참조 정보 저장 모듈(540)에 저장되고, 실행흐름 검사 기반 레지스터(910)가 사전에 정의된 값들로 설정될 수 있다.
그 후, 측정 시작 인스트럭션(1420)이 입력되면 측정 시작 인스트럭션(1120) 이후로 입력되는 인스트럭션들을 입력 값으로 하는 체크섬 계산 작업이 수행된다. 체크섬 계산 작업은 측정 종료 인스트럭션(1430)이 입력될때까지 수행된다. 도 14에서 명암처리된 부분이 체크섬 계산 작업에 사용된 인스트럭션을 나타내며, 이들이 하나의 실행흐름 검사 타겟이 된다. 측정 종료 인스트럭션(1430)이 입력되면 실행흐름 측정 작업이 종료되고 실행흐름 검증 작업이 수행된다.
그 후, 실행흐름 불능화 인스트럭션(1440)이 입력되면 실행흐름 검사 장치 (500)는 실행흐름 검사 기능을 비활성화시킨다. 이 때, 실행흐름 참조 정보 저장부(540)에 저장된 정보들은 삭제될 수도 있다.
도 15는 본 발명의 다른 실시예에 따른 실행흐름 검사 과정을 설명하기 위한 도면이다.
측정 시작 인스트럭션(1510)이 입력되어 실행흐름 측정 작업을 수행하던 중, 측정 일시중지 인스트럭션(1520)이 입력되면 실행흐름 측정 장치(500)는 실행흐름 측정 작업을 일시적으로 중지한다. 이 때, 연쇄 레지스터(720)에 저장된 체크섬 결과값은 측정 재개 인스트럭션(1530)이 입력될 때까지 보존된다.
도시된 예에서는 점프와 리턴으로 인하여 인스트럭션의 배열 순서와 다르게 인스트럭션들이 처리되고 있음을 나타내고 있다.
측정 재개 인스트럭션(1530)이 입력되면, 실행흐름 검사 장치(500)는 실행흐름 측정 작업을 재개한다. 실행흐름 측정 작업은 측정 종료 인스트럭션(1540)이 입력될 때까지 계속되며, 도시된 실시예에서 명암처리된 인스트럭션들이 실행흐름 측정에 사용된 인스트럭션이다.
측정 종료 인스트럭션(1540)이 입력되면 실행흐름 측정 작업이 종료되고 실행흐름 검증 작업이 수행된다. 그 후, 상태정보 요청 인스트럭션(1550)이 입력되면, 상태정보 검사 작업에 관련된 정보 중에서 상태정보 요청 인스트럭션(1550)이 지시하는 정보들을 특정 레지스터에 저장시킬 수 있다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 프로그램의 실행흐름을 검사하는 방법 및 장치에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 프로그램이 설계된 방식대로 실행되는지의 여부를 검사할 수 있는 장점이 있다.
둘째, 시스템의 부하를 낮추면서, 실행흐름의 검사를 효율적으로 수행하는 장점도 있다.

Claims (21)

  1. 프로그램에 포함되며 실행흐름 검사에 사용되는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 실행흐름을 검사하는 단계; 및
    상기 측정된 실행흐름을 검증하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  2. 제 1항에 있어서,
    상기 측정하는 단계는,
    상기 인스트럭션 중 상기 실행흐름의 측정을 지시하는 측정 시작 인스트럭션이 입력되면, 상기 실행흐름의 측정을 개시하는 단계; 및
    상기 인스트럭션 중 상기 실행흐름의 측정종료를 지시하는 측정 종료 인스트럭션이 입력되면, 상기 실행흐름의 측정을 종료하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  3. 제 1항에 있어서,
    상기 측정하는 단계는,
    상기 인스트럭션 중 상기 실행흐름의 측정 작업의 일시 중지를 지시하는 측정 일시중지 인스트럭션이 입력되면, 상기 실행흐름의 측정 작업을 중지하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  4. 제 3항에 있어서,
    상기 측정하는 단계는,
    상기 인스트럭션 중 상기 중지된 실행흐름 측정 작업의 재개를 지시하는 측정 재개 인스트럭션이 입력되면, 상기 실행흐름의 측정 작업을 재개하는 단계를 더 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  5. 제 1항에 있어서,
    상기 측정하는 단계는,
    상기 실행 순서에 따라서 입력되는 인스트럭션에 대한 체크섬을 계산하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  6. 제 5항에 있어서,
    상기 체크섬을 계산하는 단계는,
    소정의 체크섬 키, 이전까지 계산된 체크섬 결과값, 및 상기 입력된 인스트럭션의 값을 입력값으로 하여 체크섬을 계산하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  7. 제 5항에 있어서,
    상기 체크섬을 계산하는 단계는,
    이전까지 계산된 체크섬 결과값이 없는 경우, 소정의 체크섬 키, 소정의 초기화 벡터, 및 상기 입력된 인스트럭션의 값을 입력값으로 하여 체크섬을 계산하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  8. 제 1항에 있어서,
    상기 프로그램에 포함된 소정의 정보를 복호화하는 단계를 더 포함하고,
    상기 측정하는 단계는 상기 복호화된 정보를 사용하여 상기 실행흐름을 검사하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  9. 제 1항에 있어서,
    상기 검증하는 단계는,
    상기 실행흐름을 측정한 결과값과 소정의 참조 측정값이 동일한 경우 상기 실행흐름이 정상적으로 수행되었음을 나타내는 정보를 제공하는 단계; 및
    상기 결과값과 상기 참조 측정값이 다른 경우 상기 실행흐름이 비정상적으로 수행되었음을 나타내는 정보를 제공하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  10. 제 9항에 있어서,
    상기 참조 측정값을 상기 프로그램으로부터 획득하는 단계를 더 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  11. 제 1항에 있어서,
    상기 프로그램에 포함된 소정의 정보를 복호화하는 단계를 더 포함하고,
    상기 검증하는 단계는 상기 복호화된 정보를 사용하여 상기 실행흐름을 검증하는 단계를 포함하는, 프로그램의 실행흐름을 검사하는 방법.
  12. 프로그램에 포함되며 실행흐름 검사에 사용되는 인스트럭션들의 값과 상기 인스트럭션들의 실행 순서를 반영하는 실행흐름을 검사하는 실행흐름 측정 모듈; 및
    상기 측정된 실행흐름을 검증하는 실행흐름 검증 모듈을 포함하는, 프로그램의 실행흐름을 검사하는 장치.
  13. 제 12항에 있어서,
    상기 실행흐름 측정 모듈은,
    상기 인스트럭션 중 상기 실행흐름의 측정을 지시하는 측정 시작 인스트럭션이 입력되면 상기 실행흐름의 측정을 개시하고, 상기 인스트럭션 중 상기 실행흐름의 측정종료를 지시하는 측정 종료 인스트럭션이 입력되면 상기 실행흐름의 측정을 종료하는, 프로그램의 실행흐름을 검사하는 장치.
  14. 제 12항에 있어서,
    상기 실행흐름 측정 모듈은,
    상기 인스트럭션 중 상기 실행흐름의 측정 작업의 일시 중지를 지시하는 측정 일시중지 인스트럭션이 입력되면 상기 실행흐름의 측정 작업을 중지하는, 프로그램의 실행흐름을 검사하는 장치.
  15. 제 14항에 있어서,
    상기 실행흐름 측정 모듈은,
    상기 인스트럭션 중 상기 중지된 실행흐름 측정 작업의 재개를 지시하는 측정 재개 인스트럭션이 입력되면 상기 실행흐름의 측정 작업을 재개하는, 프로그램의 실행흐름을 검사하는 장치.
  16. 제 12항에 있어서,
    상기 실행흐름 측정 모듈은,
    상기 실행 순서에 따라서 입력되는 인스트럭션에 대한 체크섬을 계산하는 체크섬 계산 모듈; 및
    상기 체크섬 계산 모듈이 출력하는 체크섬 결과값을 저장하고, 상기 체크섬 결과값을 상기 체크섬 계산 모듈에게 제공하는 연쇄 레지스터를 포함하는, 프로그램의 실행흐름을 검사하는 장치.
  17. 제 16항에 있어서,
    상기 체크섬 계산 모듈은,
    소정의 체크섬 키, 상기 연쇄 레지스터가 제공하는 상기 체크섬 결과값, 및 상기 입력된 인스트럭션의 값을 입력값으로 하여 체크섬을 계산하는, 프로그램의 실행흐름을 검사하는 장치.
  18. 제 16항에 있어서,
    상기 체크섬 계산 모듈은,
    상기 연쇄 레지스터에 저장된 체크섬 결과값이 없는 경우, 소정의 체크섬 키, 소정의 초기화 벡터, 및 상기 입력된 인스트럭션의 값을 입력값으로 하여 체크섬을 계산하는, 프로그램의 실행흐름을 검사하는 장치.
  19. 제 12항에 있어서,
    상기 프로그램에 포함된 소정의 정보를 복호화하는 보안 처리 모듈을 더 포함하고,
    상기 실행흐름 측정 모듈은 상기 복호화된 정보를 사용하여 상기 실행흐름을 검사하는, 프로그램의 실행흐름을 검사하는 장치.
  20. 제 12항에 있어서,
    상기 실행흐름 검증 모듈은,
    상기 실햄흐름 측정 모듈이 실행흐름을 측정한 결과값과 소정의 참조 측정값이 동일한 경우 상기 실행흐름이 정상적으로 수행되었음을 나타내는 정보를 제공하 고, 상기 결과값과 상기 참조 측정값이 다른 경우 상기 실행흐름이 비정상적으로 수행되었음을 나타내는 정보를 제공하는, 프로그램의 실행흐름을 검사하는 장치.
  21. 제 12항에 있어서,
    상기 프로그램에 포함된 소정의 정보를 복호화하는 보안 처리 모듈을 더 포함하고,
    상기 실행흐름 검증 정보는 상기 복호화된 정보를 사용하여 상기 실행흐름을 검증하는, 프로그램의 실행흐름을 검사하는 장치.
KR1020060015708A 2006-02-17 2006-02-17 프로그램의 실행흐름을 검사하는 방법 및 장치 KR100800999B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020060015708A KR100800999B1 (ko) 2006-02-17 2006-02-17 프로그램의 실행흐름을 검사하는 방법 및 장치
US11/655,925 US8015553B2 (en) 2006-02-17 2007-01-22 Method and apparatus for testing execution flow of program
JP2007026499A JP4871156B2 (ja) 2006-02-17 2007-02-06 プログラムの実行フローを検査する方法および装置
EP07102047A EP1835405A3 (en) 2006-02-17 2007-02-09 Method and apparatus for testing execution flow of program
CNB2007100788927A CN100562859C (zh) 2006-02-17 2007-02-16 测试程序的运行流程的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060015708A KR100800999B1 (ko) 2006-02-17 2006-02-17 프로그램의 실행흐름을 검사하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070082724A KR20070082724A (ko) 2007-08-22
KR100800999B1 true KR100800999B1 (ko) 2008-02-11

Family

ID=38325478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060015708A KR100800999B1 (ko) 2006-02-17 2006-02-17 프로그램의 실행흐름을 검사하는 방법 및 장치

Country Status (5)

Country Link
US (1) US8015553B2 (ko)
EP (1) EP1835405A3 (ko)
JP (1) JP4871156B2 (ko)
KR (1) KR100800999B1 (ko)
CN (1) CN100562859C (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
US8458669B2 (en) * 2007-11-02 2013-06-04 International Business Machines Corporation Automated test system
KR101566409B1 (ko) * 2009-04-14 2015-11-05 삼성전자주식회사 프로그램 데이터 공격 검출방법
US9558103B2 (en) * 2011-08-25 2017-01-31 Hewlett Packard Enterprise Development Lp System and method to indicate code block execution
CN103377118B (zh) * 2012-04-23 2017-07-25 腾讯科技(深圳)有限公司 一种测试Flash引擎的方法及装置
JP6434840B2 (ja) * 2015-03-30 2018-12-05 日立オートモティブシステムズ株式会社 電子制御装置
CN108351770B (zh) * 2016-02-09 2020-02-28 西门子公司 用于安全地实施程序命令的方法和实施环境
CN113566869A (zh) * 2021-06-29 2021-10-29 东风电驱动系统有限公司 一种车载仪表的外发信号自动校验方法及系统
US20230017231A1 (en) * 2021-07-17 2023-01-19 International Business Machines Corporation Securely executing software based on cryptographically verified instructions
US11893394B2 (en) * 2022-04-05 2024-02-06 Denso Corporation Verifying a boot sequence through execution sequencing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000075835A (ja) * 1998-06-18 2000-03-14 Fujitsu Ltd プラズマディスプレイパネルの駆動方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233346A (ja) 1992-02-26 1993-09-10 Matsushita Electric Ind Co Ltd プロセッサのテスト方法
JPH09244912A (ja) 1996-03-12 1997-09-19 Hitachi Ltd 情報処理装置プログラムの試験方式
US5905855A (en) 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
JP2002149444A (ja) 2000-11-13 2002-05-24 Mitsubishi Electric Corp ソフトウェア試験システム及びソフトウェア試験方法及びソフトウェア試験方法を計算機で実現するためのプログラムを記録した計算機で読み取り可能なプログラム記録媒体及びソフトウェア試験方法を計算機で実現するためのプログラム
US6880149B2 (en) * 2002-04-01 2005-04-12 Pace Anti-Piracy Method for runtime code integrity validation using code block checksums
JP2003316604A (ja) 2002-04-24 2003-11-07 Matsushita Electric Ind Co Ltd ソフトウェア開発支援方法および装置
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000075835A (ja) * 1998-06-18 2000-03-14 Fujitsu Ltd プラズマディスプレイパネルの駆動方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
공개특허 제2000-75835호

Also Published As

Publication number Publication date
EP1835405A3 (en) 2010-01-27
JP4871156B2 (ja) 2012-02-08
JP2007220106A (ja) 2007-08-30
CN101025710A (zh) 2007-08-29
EP1835405A2 (en) 2007-09-19
KR20070082724A (ko) 2007-08-22
US8015553B2 (en) 2011-09-06
US20070220351A1 (en) 2007-09-20
CN100562859C (zh) 2009-11-25

Similar Documents

Publication Publication Date Title
KR100800999B1 (ko) 프로그램의 실행흐름을 검사하는 방법 및 장치
KR101368327B1 (ko) 프로그램 실행흐름 보고 시스템 및 방법
US7945786B2 (en) Method and apparatus to re-create trust model after sleep state
US9762399B2 (en) System and method for validating program execution at run-time using control flow signatures
US9767271B2 (en) System and method for validating program execution at run-time
EP2248063B1 (en) Method and apparatus for controlling system access during protected modes of operation
CN102509046B (zh) 带有休眠支持的全局有效的测量的操作系统发动
EP1944711A1 (en) Methods and apparatus for authenticating components of processing systems
JP6391439B2 (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
EP4116851A1 (en) Trusted measurement method and related apparatus
CN106815110A (zh) 一种加速卡测试方法及装置
US20180113715A1 (en) Providing a trustworthy indication of the current state of a multi-processor data processing apparatus
WO2020037613A1 (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
KR20130051225A (ko) 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
CN111597558B (zh) 一种基于文件多镜像的嵌入式操作系统可信引导方法及系统
CN110659497A (zh) 可信启动控制方法及其装置、计算机可读存储介质
US20080271145A1 (en) Tamper indication system and method for a computing system
CN109753788B (zh) 内核运行时的完整性校验方法及计算机可读存储介质
US11216561B2 (en) Executing processes in sequence
CN114995894A (zh) 操作系统的启动控制方法、终端设备及可读存储介质
US9213864B2 (en) Data processing apparatus and validity verification method
CN112651030B (zh) 一种面向bmc固件系统安全的可信启动方法
JP2023082498A (ja) 電子制御装置
GB2621164A (en) Apparatus, method of operating an apparatus and a computer program
CN118013509A (zh) 安全启动方法、装置、车辆及存储介质

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
FPAY Annual fee payment

Payment date: 20121210

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141224

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181218

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20191216

Year of fee payment: 13