KR20230106427A - 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법 - Google Patents

분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20230106427A
KR20230106427A KR1020220002304A KR20220002304A KR20230106427A KR 20230106427 A KR20230106427 A KR 20230106427A KR 1020220002304 A KR1020220002304 A KR 1020220002304A KR 20220002304 A KR20220002304 A KR 20220002304A KR 20230106427 A KR20230106427 A KR 20230106427A
Authority
KR
South Korea
Prior art keywords
command
branch
tag value
tag
instruction
Prior art date
Application number
KR1020220002304A
Other languages
English (en)
Other versions
KR102714905B1 (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 KR1020220002304A priority Critical patent/KR102714905B1/ko
Priority claimed from KR1020220002304A external-priority patent/KR102714905B1/ko
Priority to PCT/KR2022/018593 priority patent/WO2023132474A1/ko
Publication of KR20230106427A publication Critical patent/KR20230106427A/ko
Application granted granted Critical
Publication of KR102714905B1 publication Critical patent/KR102714905B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 막아낼 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법에 관한 것으로, 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입부;간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입부;함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교부;태그값 비교부의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행부;를 포함하는 것이다.

Description

분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법{System and Method for Branch Target Tagging Extension on RISC-V}
본 발명은 사물 인터넷 보안에 관한 것으로, 구체적으로 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 막아낼 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법에 관한 것이다.
현대 사회는 정보통신기술(ICT)의 발달로 제4차 산업혁명이 가져오는 지능정보사회에 다가가고 있다.
우리 주변의 사람과 사물, 사물과 사물 등은 사물인터넷 기술의 발달로 공간에 제약을 받지 않고 네트워크로 연결되어 빅데이터가 산출되고 서로 정보를 송 수신 할 수 있게 되었다.
그러나 단말기 분실 및 물리적 파괴, 무선신호 교란 정보유출, 데이터 위 변조, 서비스 거부 등 기존의 통신환경에서 생성되는 위협들은 정보보안의 3대 요소인 기밀성, 무결성, 가용성을 침해하여 사물인터넷의 보안을 위협할 수 있다.
이런 위협에 대비하여 사물인터넷에 대한 보안과 정보유출 등의 정보보호 기술을 강화해야 한다.
이와 같이, 최근 사물 인터넷 기술은 활용 범위가 점차 넓어져 실생활 전반에서 찾아 볼 수 있게 되었다. 이처럼 사물 인터넷 기기가 실생활과 밀접해질수록 많은 양의 개인 정보를 포함하게 되었으며 이에 따라 사물 인터넷 기기를 대상으로 한 공격에 대한 우려의 목소리 또한 높아지는 실정이다.
도 1은 종래 기술의 Intel-CET및 ARM-BTI 보안 기술을 나타낸 구성도이다.
종래 기술로는 Intel-CET및 ARM-BTI와 같은 기술이 있다.
Intel-CET의 경우 목적 명령어만을 기준으로 판별하기 때문에 우회 가능성 높고, ARM-BTI의 경우 목적 명령어 외에도 분기 형식을 추가로 사용하나 4가지여서 취약성이 갖는다.
이와 같은 Intel-CET 또는 ARM-BTI와 같이 스마트폰, 가정용 PC 또는 서버용 워크스테이션과 같은 기기를 대상으로 한 보안 기술들을 제공하고 이러한 기능을 활용한 다양한 솔루션들이 개발되고 있지만 낮은 탐지 정밀도와 높은 성능 및 메모리 오버헤드 등의 문제점으로 인해 사물 인터넷 기기와 같이 저성능의 기기에 탑재하기에는 많은 어려움이 따른다.
임베디드 기기 산업의 규모가 커져 감에 따라 보안 문제가 대두되고 있고, 프로그램의 실행 흐름을 보장하기 위한 기술들이 존재 하나 임베디드 기기의 한계로 적용 불가하고, 적용 가능한 일부 기술의 경우 보안성에 부족으로 보완이 필요하다.
따라서, 임베디드 기기에의 적용 가능성을 높이고, 보안성을 높여 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 막아낼 수 있는 새로운 기술의 개발이 요구되고 있다.
대한민국 공개특허 제10-2020-0137843호 대한민국 공개특허 제10-2021-0035742호 대한민국 등록특허 제10-1996842호
본 발명은 종래 기술의 사물 인터넷 보안 기술의 문제점을 해결하기 위한 것으로, 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 막아낼 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위한 명령어를 새로 추가하고 이러한 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터를 추가하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장할 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 컴파일러를 수정해 추가된 명령어를 적법한 위치에 삽입하게 함으로써 소스코드 수정의 필요성을 없애고 기존의 소스코드를 재사용할 수 있게 하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장하고 사물 인터넷 기기를 대상으로 한 제어 흐름 탈취 공격을 막아낼 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행됨으로써 추가된 기능을 활용하여 제어 흐름 무결성을 보장할 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 RISC-V 아키텍처를 활용해 새로운 레지스터를 추가하고 전용 명령어를 통해 레지스터의 값을 보호하고 목적지에 대한 식별 값을 저장하여 CFI 보장할 수 있도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 전용 명령어 추가를 새로운 명령어를 추가하기 보다는 기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용하여 추가된 기능들을 활용한 정책 수립과 이러한 기능을 적용시켜 줄 컴파일러 개발을 용이하도록 한 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치는 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입부;간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입부;함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교부;태그값 비교부의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행부;를 포함하는 것을 특징으로 한다.
여기서, 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위해 새로 추가된 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터가 추가되는 것을 특징으로 한다.
그리고 제어 상태 레지스터는, 각 8비트로 구성된 4개의 영역을 포함는 32비트 크기의 레지스터로 동시에 최대 4개까지의 검증 값을 비교하여 제어 흐름 무결성을 보장하는 것을 특징으로 한다.
그리고 태그값 저장 명령어 삽입부는, 간접 분기 명령어 직전에 제에 상태 레지스터에 목적 함수에 따른 고유 식별 값을 쓰는 동작이 수행되는 것을 특징으로 한다.
그리고 컴파일러를 수정해 추가된 명령어를 삽입하는 것에 의해 소스코드 수정없이 기존의 소스코드를 재사용하여 수행시간 오버헤드의 증가없이 제어 흐름 무결성을 보장하는 것을 특징으로 한다.
그리고 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행되도록 하고, 기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용하는 것을 특징으로 한다.
다른 목적을 달성하기 위한 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법은 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입 단계;간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입 단계;함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교 단계;태그값 비교 단계의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행 단계;를 포함하는 것을 특징으로 한다.
그리고 태그값 저장 명령어 삽입 단계는, 간접 분기 명령어 직전에 제에 상태 레지스터에 목적 함수에 따른 고유 식별 값을 쓰는 동작이 수행되는 것을 특징으로 한다.
그리고 컴파일러를 수정해 추가된 명령어를 삽입하는 것에 의해 소스코드 수정없이 기존의 소스코드를 재사용하여 수행시간 오버헤드의 증가없이 제어 흐름 무결성을 보장하는 것을 특징으로 한다.
이상에서 설명한 바와 같은 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법은 다음과 같은 효과가 있다.
첫째, 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 효과적으로 막아낼 수 있도록 한다.
둘째, 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위한 명령어를 새로 추가하고 이러한 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터를 추가하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장할 수 있도록 한다.
셋째, 컴파일러를 수정해 추가된 명령어를 적법한 위치에 삽입하게 함으로써 소스코드 수정의 필요성을 없애고 기존의 소스코드를 재사용할 수 있게 하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장하고 사물 인터넷 기기를 대상으로 한 제어 흐름 탈취 공격을 효과적으로 막아낼 수 있도록 한다.
넷째, 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행됨으로써 추가된 기능을 활용하여 제어 흐름 무결성을 보장할 수 있도록 한다.
다섯째, RISC-V 아키텍처를 활용해 새로운 레지스터를 추가하고 전용 명령어를 통해 레지스터의 값을 보호하고 목적지에 대한 식별 값을 저장하여 CFI 보장할 수 있도록 한다.
여섯째, 전용 명령어 추가를 새로운 명령어를 추가하기 보다는 기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용하여 추가된 기능들을 활용한 정책 수립과 이러한 기능을 적용시켜 줄 컴파일러 개발을 용이하도록 한다.
도 1은 종래 기술의 Intel-CET및 ARM-BTI 보안 기술을 나타낸 구성도
도 2는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 구성도
도 3은 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치의 세부 구성 블록도
도 4는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 동작을 나타낸 구성도
도 5는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법을 나타낸 플로우 차트
이하, 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법의 바람직한 실시 예에 관하여 상세히 설명하면 다음과 같다.
본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법의 특징 및 이점들은 이하에서의 각 실시 예에 대한 상세한 설명을 통해 명백해질 것이다.
도 2는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 구성도이다.
본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법은 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 효과적으로 막아낼 수 있도록 한 것이다.
이를 위하여, 본 발명은 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위한 명령어를 새로 추가하고 이러한 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터를 추가하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장할 수 있도록 하는 구성을 포함할 수 있다.
본 발명은 컴파일러를 수정해 추가된 명령어를 적법한 위치에 삽입하게 함으로써 소스코드 수정의 필요성을 없애고 기존의 소스코드를 재사용할 수 있게 하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장하고 사물 인터넷 기기를 대상으로 한 제어 흐름 탈취 공격을 막아낼 수 있도록 하는 구성을 포함할 수 있다.
본 발명은 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행됨으로써 추가된 기능을 활용하여 제어 흐름 무결성을 보장할 수 있도록 하는 구성을 포함할 수 있다.
본 발명은 RISC-V 아키텍처를 활용해 새로운 레지스터를 추가하고 전용 명령어를 통해 레지스터의 값을 보호하고 목적지에 대한 식별 값을 저장하여 CFI 보장할 수 있도록 하는 구성을 포함할 수 있다.
본 발명은 전용 명령어 추가를 새로운 명령어를 추가하기 보다는 기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용하는 구성을 포함할 수 있다.
도 2는 본 발명의 아키텍처를 도식화 한 그림으로 새롭게 수정된 요소들은 파란색 상자로 표현되어 있다.
본 발명은 도 2에서와 같이, 식별 값 저장을 위한 별도의 레지스터를 추가하고, 해당 레지스터를 제어하기 위한 전용 명령어 추가한 것이다.
전용 명령어 추가는 새로운 명령어를 추가하기 보다는 기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용한다.
컴파일러를 수정해 추가된 명령어를 적법한 위치에 삽입하게 함으로써 소스코드 수정의 필요성을 없애고 기존의 소스코드를 재사용할 수 있도록 하고, 이러한 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행됨으로써 추가된 기능을 활용하여 제어 흐름 무결성을 보장할 수 있다.
도 3은 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치의 세부 구성 블록도이다.
리스크 파이브 아키텍처는 개방형 아키텍처로 누구든지 자유롭게 이용 가능한 것으로, RISC(Reduced Instruction Set Computer)형식의 명령어 구조로 CISC 보다 구조가 단순해고 전력소모가 적어 임베디드 기기에 사용하기 적합하다.
본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치는 도 3에서와 같이, 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입부(30)와, 간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입부(31)와, 함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교부(32)와, 태그값 비교부(32)의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행부(33)를 포함한다.
도 4는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 동작을 나타낸 구성도이다.
도 4에서와 같이, 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어 삽입(2~3 Line)한다.
간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어 삽입(7~8 Line)한다.
이러한 태그 값 비교를 통해 일치 시 실행 허용을 하고, 불일치시 예외 처리(11~12 Line)를 한다.
구체적으로, 4번째 줄과 같은 간접 분기 명령어 직전에 2, 3번째 줄과 같이 제에 상태 레지스터에 목적 함수에 따른 고유 식별 값을 쓰는 동작이 수행된다.
그 후 7, 8번째 줄과 같이 함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단한다.
10번째 줄의 함수 goo는 11번째 줄에서 영역 0의 태그 값은 일치 하였으나 12번째 줄에서 영역 1의 태그 값이 C로 일치 하지 않아 제어 흐름 전송이 불가함을 나타내고 있다.
도 5는 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법을 나타낸 플로우 차트이다.
본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법은 먼저, 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어 삽입한다.(S501)
이어, 간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입한다.(S502)
그리고 태그 값 비교를 통해 일치 시 실행 허용하고, 불일치시 예외 처리를 한다.(S503)
이상에서 설명한 본 발명은 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위한 명령어를 새로 추가하고 이러한 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터를 추가한 것이다.
새로 추가된 레지스터는 각 8비트로 구성된 4개의 영역을 포함는 32비트 크기의 레지스터로 동시에 최대 4개까지의 검증 값을 비교하여 제어 흐름 무결성을 보장할 수 있다.
이를 통해 평균 4.8%의 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장 하고 사물 인터넷 기기를 대상으로 한 제어 흐름 탈취 공격을 막아낼 수 있다.
이상에서 설명한 본 발명에 따른 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법은 사물 인터넷 기기의 제어 흐름 무결성(Control-flow integrity)를 보장하고 대표적인 보안 위협인 제어 흐름 탈취 공격(Control-flow hijacking attack)을 막아낼 수 있도록 한 것이다.
본 발명은 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위한 명령어를 새로 추가하고 이러한 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터를 추가하여 적은 수행시간 오버헤드로 코드의 제어 흐름 무결성을 보장할 수 있도록 한 것이다.
이상에서의 설명에서와 같이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명이 구현되어 있음을 이해할 수 있을 것이다.
그러므로 명시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하고, 본 발명의 범위는 전술한 설명이 아니라 특허청구 범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
30. 태그값 저장 명령어 삽입부
31. 태그값 비교 명령어 삽입부
32. 태그값 비교부
33. 명령어 실행부

Claims (9)

  1. 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입부;
    간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입부;
    함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교부;
    태그값 비교부의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행부;를 포함하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  2. 제 1 항에 있어서, 개방형 명령어 아키텍처인 리스크-파이브를 확장해 제어 흐름 무결성 검증을 위해 새로 추가된 명령어를 통해서만 접근해 읽고 쓰기가 가능한 전용 제어 상태 레지스터가 추가되는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  3. 제 2 항에 있어서, 제어 상태 레지스터는,
    각 8비트로 구성된 4개의 영역을 포함는 32비트 크기의 레지스터로 동시에 최대 4개까지의 검증 값을 비교하여 제어 흐름 무결성을 보장하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  4. 제 1 항에 있어서, 태그값 저장 명령어 삽입부는,
    간접 분기 명령어 직전에 제에 상태 레지스터에 목적 함수에 따른 고유 식별 값을 쓰는 동작이 수행되는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  5. 제 1 항에 있어서, 컴파일러를 수정해 추가된 명령어를 삽입하는 것에 의해 소스코드 수정없이 기존의 소스코드를 재사용하여 수행시간 오버헤드의 증가없이 제어 흐름 무결성을 보장하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  6. 제 5 항에 있어서, 컴파일러가 생산해낸 실행가능 파일이 확장된 아키텍처가 적용된 CPU상에서 수행되도록 하고,
    기존 명령어 중 사용되지 않고 있는 HINT Instruction에 새로운 명령어를 할당하는 방식을 사용하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치.
  7. 소스 코드 컴파일시 간접 분기 직전위치에 태그 값 저장을 위한 setTag명령어를 삽입하는 태그값 저장 명령어 삽입 단계;
    간접분기 수행 직후 태그 값 비교를 위한 checkTag명령어를 삽입하는 태그값 비교 명령어 삽입 단계;
    함수의 진입 지점에서 제어 상태 레지스터에 저장된 값과 함수 진입지점의 명령어에 부여된 값을 비교함으로써 올바른 목적지로 제어 흐름 전송이 수행되었는지 판단하는 태그값 비교 단계;
    태그값 비교 단계의 태그 값 비교를 통해 일치시에는 명령어 실행 허용을 하고, 불일치시 예외처리를 하는 명령어 실행 단계;를 포함하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법.
  8. 제 7 항에 있어서, 태그값 저장 명령어 삽입 단계는,
    간접 분기 명령어 직전에 제에 상태 레지스터에 목적 함수에 따른 고유 식별 값을 쓰는 동작이 수행되는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법.
  9. 제 7 항에 있어서, 컴파일러를 수정해 추가된 명령어를 삽입하는 것에 의해 소스코드 수정없이 기존의 소스코드를 재사용하여 수행시간 오버헤드의 증가없이 제어 흐름 무결성을 보장하는 것을 특징으로 하는 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 방법.
KR1020220002304A 2022-01-06 2022-01-06 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법 KR102714905B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220002304A KR102714905B1 (ko) 2022-01-06 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법
PCT/KR2022/018593 WO2023132474A1 (ko) 2022-01-06 2022-11-23 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220002304A KR102714905B1 (ko) 2022-01-06 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20230106427A true KR20230106427A (ko) 2023-07-13
KR102714905B1 KR102714905B1 (ko) 2024-10-08

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996842B1 (ko) 2018-12-26 2019-07-08 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
KR20200137843A (ko) 2019-05-31 2020-12-09 한국전자통신연구원 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치
KR20210035742A (ko) 2019-09-24 2021-04-01 프라이빗테크놀로지 주식회사 제어 데이터 패킷을 보호하기 위한 시스템 및 그에 관한 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996842B1 (ko) 2018-12-26 2019-07-08 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
KR20200137843A (ko) 2019-05-31 2020-12-09 한국전자통신연구원 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치
KR20210035742A (ko) 2019-09-24 2021-04-01 프라이빗테크놀로지 주식회사 제어 데이터 패킷을 보호하기 위한 시스템 및 그에 관한 방법

Also Published As

Publication number Publication date
WO2023132474A1 (ko) 2023-07-13

Similar Documents

Publication Publication Date Title
US8683583B2 (en) Using virtual table protections to prevent the exploitation of object corruption vulnerabilities
CN106796634A (zh) 用于硬件流控制的代码指针验证
Viega et al. Statically scanning java code: Finding security vulnerabilities
CN110414217A (zh) 应用程序的安全运行方法、装置、电子设备和存储介质
CN108733990B (zh) 一种基于区块链的文件保护方法及终端设备
CN109376530B (zh) 基于标记的进程强制行为控制方法和系统
CN112100686B (zh) 一种基于arm指针验证的内核代码指针完整性保护方法
CN111898130B (zh) 一种细粒度控制流完整性保护实现方法及系统
KR20230106427A (ko) 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법
KR102714905B1 (ko) 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법
CN110520860B (zh) 用于防护软件代码的方法
US11704404B2 (en) Method for control-flow integrity protection, apparatus, device and storage medium
CN110348180A (zh) 一种应用程序启动控制方法和装置
US20090293041A1 (en) Software protection through interdependent parameter cloud constrained software execution
CN114756864A (zh) 一种基于中间语言的工控恶意软件字符串反混淆方法
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体
Viega 20 years of software security
WO2020012474A1 (en) Return-oriented programming attack protection system and method
CN116842505B (zh) 基于windows操作系统进程可信域构建方法、装置及存储介质
EP4167111B1 (en) Method and apparatus for preparing unique software
CN116661811B (zh) 一种闭环式容器化可控服务集群搭建方法及服务集群装置
JP2006106956A (ja) ソフトウェアの改竄検出装置及び改竄検出方法
Wang et al. IRePf: An Instruction Reorganization Virtual Platform for Kernel Stack Overflow Detection
CN106650448A (zh) 一种可执行文件的控制方法和装置
CN115982699A (zh) 基于安全内存的恶意攻击防御方法、装置、设备及介质

Legal Events

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