KR102348256B1 - 정형 검증을 이용한 i/o 커널 구현의 강화 - Google Patents

정형 검증을 이용한 i/o 커널 구현의 강화 Download PDF

Info

Publication number
KR102348256B1
KR102348256B1 KR1020200055672A KR20200055672A KR102348256B1 KR 102348256 B1 KR102348256 B1 KR 102348256B1 KR 1020200055672 A KR1020200055672 A KR 1020200055672A KR 20200055672 A KR20200055672 A KR 20200055672A KR 102348256 B1 KR102348256 B1 KR 102348256B1
Authority
KR
South Korea
Prior art keywords
input
kernel
dma
formal verification
output
Prior art date
Application number
KR1020200055672A
Other languages
English (en)
Other versions
KR20210137642A (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 KR1020200055672A priority Critical patent/KR102348256B1/ko
Publication of KR20210137642A publication Critical patent/KR20210137642A/ko
Application granted granted Critical
Publication of KR102348256B1 publication Critical patent/KR102348256B1/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/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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

일 실시예에 따른 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 기술이 개시된다. 컴퓨터 시스템에 의해 수행되는 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법은, 입출력 커널의 강화를 위한 정형 검증을 수행하는 단계; 및 상기 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공하는 단계를 포함할 수 있다.

Description

정형 검증을 이용한 I/O 커널 구현의 강화{HARDENING THE IMPLEMENTATION OF I/O KERNEL WITH FORMAL VERIFICATION}
아래의 설명은 신뢰실행환경에서 입출력을 안전하게 수행 가능하도록 하기 위한 I/O 커널의 정형 검증 기술에 관한 것이다.
신뢰실행환경(TEE) 은 격리된 실행 영역이 제공되고, 증명(attestation) 및 밀봉(sealing)의 보조 기능이 제공된다. 신뢰실행환경은 소프트웨어 기반의 신뢰실행환경 및 하드웨어 기반의 신뢰실행환경으로 구분될 수 있다. 예를 들면, 소프트웨어 기반의 신뢰실행환경은 Overshadow, TrustVisor (Wimpy Kernel), and Inktag, 하드웨어 기반의 신뢰실행환경은 ARM TrustZone, Intel TXT, Intel SGX, and AMD SEV등이 있다.
신뢰실행환경 기술은 시스템 소프트웨어가 공격자에 의해 장악된 상황에서도 중요한 코드와 데이터를 안전하게 실행 가능하도록 한다. 신뢰실행환경에서 안전한 입출력 채널은 매우 중요한 요소이다.
정형 검증(Formal Verification)이란 정형 사양(formal specification) 또는 속성과 관련하여 시스템의 정확성을 입증하는 것을 의미한다. 정형 검증은 가장 안전하고 신뢰할 수 있는 시스템 설계 방법 중 하나로 알려져 있으며(예를 들면, NASA 로봇), 최근에는 기계적 증명(자동 검증)이 가능해졌다.
참고자료: 등록특허 10-1179341, 공개특허 제10-2019-0128534호
I/O 커널의 구현을 강화하도록 I/O 커널을 정형 검증하는 방법 및 시스템을 제공할 수 있다.
컴퓨터 시스템에 의해 수행되는 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법은, 입출력 커널의 강화를 위한 정형 검증을 수행하는 단계; 및 상기 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공하는 단계를 포함할 수 있다.
상기 입출력 커널은 윔피 커널을 포함하고, 상기 정형 검증을 수행하는 단계는, 윔피 앱(App)에서 윔피 커널의 API가 호출될 때 자료구조 내에 구성된 엔트리들의 컨텐츠의 변경 여부를 통하여 윔피 커널의 구현을 증명하는 단계를 포함하고, 상기 자료구조는, 맵 형태로 구성된 디바이스디비(DeviceDB)를 포함하고, 상기 디바이스 디비의 엔트리들은 디바이스의 상태와 입출력 전송과 관련된 자료구조의 상태를 나타낼 수 있다.
상기 입출력 커널은 윔피 커널을 포함하고, 상기 정형 검증을 수행하는 단계는, 입출력 장치로부터의 입력 데이터에 대한 비동기적인 DMA 트랜잭션에 제한적인 정책을 부과하는 단계를 포함할 수 있다.
상기 정형 검증을 수행하는 단계는, 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, 상기 DMA를 요청하는 API의 끝에서만 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 하나만 나타날 수 있도록 제한하는 단계를 포함할 수 있다.
상기 정형 검증을 수행하는 단계는, 상기 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러를 다시 비활성화시키고, USB의 비동기 리스트에 하나의 루트 타입 큐헤드(QueueHead)가 위치할 수 있도록 하고, 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한하는 단계를 포함할 수 있다.
상기 정형 검증을 수행하는 단계는, 입출력 장치에서 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용하는 단계를 포함할 수 있다.
상기 정형 검증을 수행하는 단계는, DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 API의 요청이 수행될 수 없도록 하는 단계를 포함할 수 있다.
정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화를 위한 컴퓨터 시스템은, 입출력 커널의 강화를 위한 정형 검증을 수행하는 정형 검증 수행부; 및 상기 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공하는 입출력 채널 제공부를 포함할 수 있다.
상기 입출력 커널은 윔피 커널을 포함하고, 상기 정형 검증 수행부는, 윔피 앱(App)에서 윔피 커널의 API가 호출될 때 자료구조 내에 구성된 엔트리들의 컨텐츠의 변경 여부를 통하여 윔피 커널의 구현을 증명하는 것을 포함하고, 상기 자료구조는, 맵 형태로 구성된 디바이스디비(DeviceDB)를 포함하고, 상기 디바이스 디비의 엔트리들은 디바이스의 상태와 입출력 전송과 관련된 자료구조의 상태를 나타낼 수 있다.
상기 입출력 커널은 윔피 커널을 포함하고, 상기 정형 검증 수행부는, 입출력 장치로부터의 입력 데이터에 대한 비동기적인 DMA 트랜잭션에 제한적인 정책을 부과할 수 있다.
상기 정형 검증 수행부는, 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, 상기 DMA를 요청하는 API의 끝에서만 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 하나만 나타날 수 있도록 제한할 수 있다.
상기 정형 검증 수행부는, 상기 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러를 다시 비활성화시키고, USB의 비동기 리스트에 하나의 루트 타입 큐헤드(QueueHead)가 위치할 수 있도록 하고, 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한할 수 있다.
상기 정형 검증 수행부는, 입출력 장치에서 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용할 수 있다.
상기 정형 검증 수행부는, DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 API의 요청이 수행될 수 없도록 할 수 있다.
신뢰실행환경에서 사용자가 보안 입출력 채널을 활용하는데 있어 정형적으로 보증된 안전성을 보장할 수 있다.
도 1은 일 실시예에 따른 컴퓨터 시스템에서 정형 검증(Formal Verification)을 이용한 입출력 커널 구현을 강화함에 따라 윔피 커널의 구조를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 컴퓨터 시스템이 포함할 수 있는 구성 요소를 설명하기 위한 블록도이다.
도 3은 일 실시예에 따른 컴퓨터 시스템에서 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 컴퓨터 시스템에서 DMA 개입으로 가능한 결과 상태를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 컴퓨터 시스템에서 USB를 설명하기 위한 도면이다.
도 6 및 도 7은 일 실시예에 따른 컴퓨터 시스템에서 커널 코드를 생성하고, 구현한 것을 설명하기 위한 도면이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
실시예에서는 입출력 커널 중 윔피 커널의 구현을 강화하도록 윔피 커널을 정형 검증하는 방법 및 시스템을 설명하기로 한다. IOMMU가 올바르게 구성되어 있고, 게스트 운영체제(OS)와 검증된 윔피 커널 간의 잘못된 입출력(I/O) 전송이 차단되는 상황을 가정한다. 윔피 커널은 소프트웨어 기반의 신뢰실행환경에서 안전한 입출력 채널을 제공한다.
도 1은 일 실시예에 따른 컴퓨터 시스템에서 정형 검증(Formal Verification)을 이용한 입출력 커널 구현을 강화함에 따라 윔피 커널의 구조를 설명하기 위한 도면이다.
일례로, 공격자는 커널 권한을 갖고 있을 수 있다. 공격자(신뢰할 수없는 OS)는 USB 계층을 악의적으로 잘못 구성하고 검증된 커널에 잘못된 정보를 제공할 수 있고, 공격자는 입출력(I/O) 채널 분리를 우회하거나 검증된 커널에서 버그를 트리거하기 위해 가능한 입력으로 임의 순서로 노출된 API를 활용할 수 있다. 단, 가용성(availability)은 본 발명에서 대처하고자 하는 공격의 범위를 벗어난다.
컴퓨터 시스템은 공격자로 인한 보안 문제를 해결하기 위하여 정형 검증을 이용하여 입출력 커널 구현을 강화할 수 있다. 도 1은 검증된I/O 커널 격리 구조의 개요를 도시한 것으로, 빗금친 영역은 윔프 애플리케이션(App)(110)이 신뢰 해야하는 구성 요소를 나타낸 것이다.
마이크로 하이퍼바이저(mHV)(130)를 통하여 윔피 커널 및 윔프 앱을 위한 격리된 실행 환경이 제공될 수 있다. 또한, 마이크로 하이퍼바이저는 자신의메모리에 대한 무결성이 유지되고 주소 공간이 분리될 수 있다. 도 1에서 호스트 앱은 일반 앱을 지칭하고, 윔프 앱은 그 내부의 코드와 데이터 영역에 대하여 보호가 필요한 앱을 지칭한다. 하이퍼바이저는 가상화 기능을 제공하는 소프트웨어를 의미한다. 여기서, 하이퍼바이저는 특별히 경량(마이크로)으로 설계될 수 있다. 검증된 윔피 커널은 윔피 커널의 변형된 형태로서 윔프 앱에게 안전한 입출력 채널을 제공할 수 있다. 이러한 검증된 윔피 커널은 트러스티드 스펙(Trusted spec)을 만족시키는 것이 증명될 수 있다. Commodity OS는 리눅스와 윈도우 같은 운영체제를 의미하고, 디바이스는 키보드와 같이 입출력을 담당하는 기기를 의미한다. 호스트 앱과 윔피 커널은 CPU에서 제공하는 하이퍼콜 인터페이스를 이용하여 하이퍼바이저와 통신할 수 있다. 호스트 앱과 윔피 커널은 또한 CPU 트랩 매커니즘을 이용하여 하이퍼바이저를 중간에 경유하여 서로 통신을 수행할 수 있다. 윔프 앱과 윔피 커널은 시스템콜이나 인터럽트 매커니즘을 이용하여 서로 소통할 수 있다. 호스트 앱은 하이퍼콜 인터페이스를 이용하여 윔피 커널 등록을 하이퍼바이저에 요청하게 되고 (Host App API) 하이퍼바이저는 일반 OS와 분리된 영역에 윔피 커널을 생성할 수 있다. 윔피 커널이 생성되었다면 호스트 앱은 윔피 커널에게 윔프 앱 등록을 요청할 수 있게 된다. 이후 등록된 윔프 앱에 대한 실행을 요청할 수 있다. 윔프 앱 실행 중에 윔프 앱은 윔피 커널에게 격리된 입출력 채널을 윔피 커널에게 요청할 수 있고 (Wimp app API) 윔피 커널은 이 요청에 대한 응답으로 타겟 디바이스에 대한 격리된 입출력 채널을 제공할 수 있다.
검증된 윔피 커널(강화 윔프((IronWimpy)와 혼용하여 기재하기로 함.)(120)은 윔프 앱과 입출력 장치 간에 온디멘드 (on-demand) 방식으로 격리된 입출력 채널을 제공할 수 있다. 윔피 커널의 구현에 정형 검증을 수행하였기에 TCB는 구현에서 신뢰할 수 있는 스펙으로 대체될 수 있다. 윔프 앱은 장치 드라이버의 일부를 내부에 포함하며, Intel SGX의 인클레이브와 유사하다.
컴퓨터 시스템은 강화된 윔피 커널을 구현하기 위하여 정형 검증을 수행할 수 있다. 컴퓨터 시스템은 적어도 하나 이상의 정형 검증을 수행할 수 있다. 이때, 정형 검증은 순서에 상관없이 수행될 수 있고, 또는, 정해진 순서에 따라 수행될 수도 있다. 예를 들면, 컴퓨터 시스템은 4가지의 정형 검증을 수행할 수 있다. 이때, 4가지의 정형 검증이 모두 완료되어야 강화된 윔피 커널이 구성될 수 있다. 각각의 정형 검증이 수행됨에 따라 강화된 윔피 커널을 통해 신뢰실행환경에서 입출력 채널이 구성될 수 있고, 구성된 입출력 채널을 통해 윔프 앱이 안전하게 입출력을 이용할 수 있다.
컴퓨터 시스템은 윔피 커널의 기능적 행위들을 정형적으로 명세하기 위해 디바이스디비(DeviceDB)라는 자료구조를 사용할 수 있다. 디바이스디비는 인덱스와 엔트리를 연결하는 맵 형태의 자료구조로 각각의 엔트리들이 디바이스의 상태나 입출력 전송과 관련된 자료구조의 상태를 나타낸다. 디바이스디비는 Komode의 PageDB와 유사하다. 윔피 커널의 기능적 행위는 윔피 커널 API(WKAPI)가 호출될 때, 디바이스디비 내 엔트리들의 컨텐츠가 변경되는 것으로 표현할 수 있다. 이때, 디바이스디비 내 엔트리들은 PCIDevice, HostControllerMmap, HostController, USBDevice, QueueHead, InterruptTransferDescriptor를 포함하는 복수 개의 엔트리들(예를 들면, 13개)로 구성될 수 있다. 컴퓨터 시스템은 윔피 커널 API가 호출될 때, 디바이스디비 내 엔트리들의 컨텐츠(내용)의 변경 여부에 따라 윔피 커널의 기능적 행위들이 정상적으로 동작하는지 판단할 수 있다. 예를 들면, 윔피 커널 API가 호출될 때, 디바이스디비 내 엔트리들의 컨텐츠가 변경되는 정보가 실제 컴퓨터 시스템과 메모리 상에 나타나는 정보와 동일함을 증명할 수 있다. 윔피 커널 API가 어떤 방식으로 호출되더라도 (설령 비정상적으로 호출되더라도), 디바이스디비 내 엔트리들의 컨텐츠가 항상 타당성을 유지함을 또한 증명할 수 있다. 이에, 윔피 커널 API가 호출될 때 보안성이 실행 전반에 걸쳐 유지됨이 증명될 수 있다. 상세하게는, 디바이스디비는 1차 논리(First order logic)를 이용하여 정형적으로 묘사되는 수학 수식, 혹은 정형적 명세(formal specification)의 일부로 볼 수 있다. 실시예에서 디바이스디비를 이용하여 윔피 커널의 기능적 행위가 정형적으로 명세될 수 있다. 윔피 커널의 구현이 디바이스디비를 만족시킨다는 것은 윔피 커널의 구현이 어떤 상황에도 디바이스디비를 이용하여 묘사되는 정형적 명세와 1:1로 매칭이 된다는 것을 의미할 수 있다. 또는, 현실 세계의 윔피 커널이 이를 보다 추상적으로 표현한 수학(논리)적 세상의 디바이스디비와 일치한다고 볼 수도 있다. 이때, 디바이스디비 내 엔트리들은 각각 엔트리마다 항상 만족시켜줘야 되는 조건들이 있고 이 조건들을 모두 만족시켜 줄 때 디바이스디비의 타당성을 만족시켜준다고 정의될 수 있다. 윔피 커널의 구현이 디바이스디비를 이용한 윔피 커널의 명세를 따름을 증명하고, 디바이스디비의 타당성이 만족함을 증명하면 이를 통해 윔피 커널의 구현 또한 디바이스디비의 타당성을 통해 보장하고자 하던 속성들을 만족하게 된다. 윔피 커널이 정상적으로 사용될 때나 악의적으로 사용될 때나 관계없이 디바이스디비 내 엔트리들의 컨텐츠는 정형 명세를 통해 원래 의도(설계)되어 있는 상황 그대로 동작할 수 있다.
컴퓨터 시스템은 입출력 장치로부터 입력되는 입력 데이터에 대한 비동기적인 DMA 트랜잭션을 정형적으로 명세하기 위해 DMA 트랜잭션에 제한적인 정책을 부과할 수 있다. 도 4는 일 실시예에 따른 컴퓨터 시스템에서 DMA 개입으로 가능한 결과 상태를 설명하기 위한 도면이다. DMA 트랜잭션은 CPU 연산과 비동기적으로 수행되기 때문에 CPU의 순차적인 연산 실행 중 언제 해당 트랜잭션이 수행되는지 알 수 없다. 도 4는 이를 예제로서 나타낸 예이다. 도 4에선 메모리 공간에 주소가 하나만 있다고 가정하고, DMA 트랜잭션이 수행될 때 메모리 값이 0이 되고, inc(increment) 연산이 수행될 때 메모리 값이 이전 값에서 1을 더한 결과값으로 바뀐다고 가정하기로 한다. n 만큼 inc 연산이 수행되는 상황에서 DMA 트랜잭션이 그 사이에 언제 수행되는지에 따라 결과로서 나타나는 시스템 상태(메모리 결과 값)가 달라지는 것을 나타내고 있다. 예를 들어, n 만큼 inc 연산이 수행된 후에 DMA 트랜잭션이 수행된다면 결과로서 나타나는 시스템의 메모리 값은 0이 될 수 있고, DMA 트랜잭션이 제일 먼저 수행되고 그 후 n 만큼 inc 연산이 수행된다면 결과로서 나타나는 시스템의 메모리 값은 n이 될 수 있다. 참고로 σ는 시스템의 상태를 가리키고 σ.m은 시스템 안 메모리의 값을 가리키고 있다. σn은 n번째 inc 연산 후 시스템의 상태를 가리킨다.
DMA 트랜잭션은 비동기적으로 동작될 수 있으나, 구현 검증은 순차적 실행에 적합하다. DMA 트랜잭션이 처리되는 시점과 주어진 마이크로 프레임에서 처리되는 트랜잭션의 수를 제한하여 어떠한 트랜잭션이 발생하는지 추적할 수 있다. 컴퓨터 시스템은 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, DMA를 요청하는 API가 끝날 때에 한하여 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 트랜잭션이 완료된 시점에 관계없이 하나만 나타날 수 있도록 제한할 수 있다. 컴퓨터 시스템은 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러(DMA 트랜잭션)를 다시 비활성화시킬 수 있다. 이때, DMA 결과값을 반환하는 API는 이전의 DMA 트랜잭션으로부터 수신된 결과값을 사용할 수 있다. 도 5는 일 실시예에 따른 컴퓨터 시스템에서 USB를 설명하기 위한 도면이다. 도 5의 왼쪽 도면은 비동기적인 스케줄을 구성한 것이고, 오른쪽 도면은 주기적인 스케줄을 구성한 것이다. USB 호스트 컨트롤러는 USB 전송에 비동기 및 주기적인 스케줄을 사용한다. 호스트가 액세스하는 각 엔드 포인트에 대해 큐헤드가 정의되어 있을 수 있다. QueueElementTransferDescriptors(qTD)는 실제 전송과 관련된 자료구조를 의미한다. 컴퓨터 시스템은 USB의 비동기 리스트에 하나의 루트 타입의 큐헤드(QueueHead)가 위치할 수 있도록 하고 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한할 수 있다. 이때, 비동기 리스트에 루트 타입의 큐헤드가 최대 하나이며, 프레임 리스트에서 모든 프레임 리스트 링크 포인터는 동일하다. 각 프레임 리스트 링크 포인터는 유효한 상태의 큐헤드를 가리키거나 넌(none)을 가리킨다. 컴퓨터 시스템은 DMA 트랜잭션이 발생할 때 트랜잭션과 관련된 무결성이 침해되지 않도록 한다. 트랜잭션 중에는 시스템 소프트웨어에 의해 전송 경로(비동기 리스트로부터의 경로/버퍼의 프레임 목록)가 변경되지 않아야 한다.
참고로, 이러한 DMA 트랜잭션을 제한하는 모든 조건들은 ValidDeviceDB에서 각 디바이스디비 엔트리들이 만족시켜줘야 하는 조건에 포함될 수도 있다. DMA 을 요청하는 API를 호출하기 전에 다른 API들을 통해 설정해야 하는 조건들을 의미한다. 이때, 큐헤드와 프레임 리스트는 디바이스디비 엔트리의 복수 개(예를 들면, 13개) 타입 중 하나일 수 있다. 실시예에서 DMA 트랜잭션은 DMA를 요청하는 API를 호출 후에 (스케쥴러를 활성화한 후에) 작업이 수행될 수 있다.
컴퓨터 시스템을 정형적으로 명세함에 있어 입출력 장치로부터 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용할 수 있다. 컴퓨터 시스템은 결정적 함수와 비결정적 함수를 상황에 따라 적절히 사용하여 입출력 전송을 명세할 수 있다. 일례로, 전송되는 값이 외부 이벤트(예를 들면, 키보드의 키 입력) 및 장치 상태에 따라 다를 수 있다. 하드웨어 장치에서 초기값을 읽거나, USB 제어 및 인터럽트 전송의 경우, 비결정적 함수가 사용될 수 있다. 또한, 전송되는 값이 호스트의 이전 입력에 의해 결정될 수 있다(예를 들면, USB 호스트 컨트롤러의 usbcmd 레지스터). 하드웨어 장치에서 중간값을 읽을 경우, 결정적 함수가 사용될 수 있다. 예를 들면, 키보드에서와 같이 키 입력과 같이 전송되는 값이 외부에 의존하는 경우, 사전에 어떤 값이 나올 수 알 수 없으므로 비결정적 함수를 통해 입출력 전송이 수행될 수 있고, 전송되는 값이 이전에 호스트 소프트웨어에서 입력한 값이 전적으로 의존하는 경우, 결정적 함수를 사용하여 입출력 전송이 수행될 수 있다.
컴퓨터 시스템은 인터페이스를 제약하여 무결성을 보장할 수 있다. 일례로, 공격자가 호스트 앱의 윔피 커널 API(WKAPI)를 이용하여 시스템 보안 속성을 우회하려하는 상황을 가정할 수 있다. 컴퓨터 시스템은 DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 어떠한 API의 요청이 처리될 수 없도록 하여 해당 공격들에 대처할 수 있다.
윔피 커널의 정형 검증이 수행함에 따라 강화된 윔피 커널의 API가 제공될 수 있다.
Figure 112020047126051-pat00001
컴퓨터 시스템은 윔피 커널의 정형 검증이 수행함에 따라 강화된 윔피 커널을 통해 신뢰실행환경에서 안전한 입출력 채널을 제공할 수 있다. 시스템의 정형 명세를 위해 한 쌍의 초기 시스템 상태와 초기 디바이스디비 상태(s와 d)를 다른 한 쌍의 시스템 상태와 디바이스디비 상태와 연관시킬 수 있다. 모든 윔피 커널 API는 최상위에 이와 같은 관계를 술어(predicate)로 나타내는 명세를 만족한다. DMA 실행은 USB의 제어 및 인터럽트 전송을 설명할 수 있다. 메모리 상태는 제어/인터럽트 DMA 실행의 결과로서 변화될 수 있다. 제어/인터럽트 DMA 실행은 usbcmd의 메모리 업데이트에 의해 비동기/주기적인 스케줄 활성화 비트가 온(On) 될 때 촉발될 수 있다. 이때, 합법적인 제어 및 인터럽트 전송만이 허용될 수 있다(ValidAbsRootQueueHead).
윔피 커널의 정형 검증에 대한 증명이 이루어질 수 있다. 정리 1(DeviceDB Invariants)은 DeviceDB d0로 시작하는 n개의 WKAPI 전환 (r0, r1, ..., rn-1)의 시퀀스 적용 후 dn이 결과 DeviceDB라면 d0는 DeviceDB invariants (validDeviceDB)를 충족하고 dn 또한 DeviceDB invariants 를 충족한다. 정리 2(State and DeviceDB Corresponds)는 한 쌍의 상태 및 DeviceDB(s0, d0)로 시작하는 n개의 WKAPI 전환(r0, r1, ..., rn-1)의 시퀀스 적용 후 (sn, dn)이 (state, DeviceDB)의 결과 쌍이면 s0이 d0과 부합하고 sn도 dn과 부합한다.
일 실시예에 따르면, 데스크탑에서 소프트웨어 기반의 신뢰실행환경을 이용하여 애플리케이션을 보호할 때, 윔프 앱이 입력을 안전하게 받아야 하는 모든 상황에 적용시킬 수 있다. 예를 들면, 금융 서비스를 이용할 때, USB 키보드로부터 입력을 안전하게 받기 위하여 실시예에서 제안된 기술이 적용될 수 있다.
도 6 및 도 7은 일 실시예에 따른 컴퓨터 시스템에서 커널 코드를 생성하고, 구현한 것을 설명하기 위한 도면이다.
도 6은 Vale과 Dafny로 검증된 윔프 커널 코드를 생성하는 것을 나타낸 것이며, 음영 처리된 부분은 신뢰 해야하는 컴퓨팅 기반(Trusted Compubing Base)을 나타낸다. 도 7은 Vale에서 검증된 x86 명령어의 한 예이다. 실시 예에서 Vale은 19개의 x86 명령어 및 2개의 제어 구조체 셋트가 구현될 수 있다. 이때, 제어 구조체로는 while 및 if 제어 구조체가 구현될 수 있다.
실시예에 따른 정형 검증에 대한 평가가 수행될 수 있다. 다음과 같은 실험 환경이 구성될 수 있다. 시스템 크기 및 검증 측정의 경우, Intel i7-4770 Haswell CPU[3.40GHz], 16GB 메모리를 가지는 데스크톱 머신이 사용될 수 있고, 버전 4.6의 Z3는 백엔드 정리 prover로 사용될 수 있고, 마이크로 및 매크로 벤치마크의 경우, Intel Arrandale i7-640LM[2.13GHz], 3GB의 메모리를 가지는HP Elitebook2540p이 사용될 수 있고, 노트북은 게스트 OS로 Linux 커널 3.2.35+를 탑재한 32비트 Ubuntu 12.04를 실행할 수 있다.
시스템의 크기는 구현 대 검증 비율에서 약 1:3 비율이 나타난다.
표 1: : Line Counts (SLoC)
Figure 112020047126051-pat00002
검증 결과, 극단적인 경우에서 긍정오류(false positives) 4 + 오류 2가 나타나며, Z3 SMT solver는 bitvector lemma에서 좋지 않은 성능을 보여준다.
Figure 112020047126051-pat00003
마이크로 벤치마크는 RDTSC 지침에 따라 측정될 수 있다.
표 1: Latency of WKAPIs.
Figure 112020047126051-pat00004
매크로 벤치 마크는 게스트 OS에서 CPU 오버헤드가 측정될 수 있으며, 강화된 윔피는 mHV에 비해 오버헤드를 거의 부과하지 않음을 알 수 있다.
도 2는 일 실시예에 따른 컴퓨터 시스템이 포함할 수 있는 구성 요소를 설명하기 위한 블록도이고, 도 3은 일 실시예에 따른 컴퓨터 시스템에서 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법을 설명하기 위한 흐름도이다.
컴퓨터 시스템(100)은 정형 검증 수행부(210) 및 입출력 채널 제공부(220)를 포함할 수 있다. 이러한 컴퓨터 시스템(100)의 구성요소들은 전자 기기에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 컴퓨터 시스템(100) 및 컴퓨터 시스템(100)의 구성요소들은 도 3 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법이 포함하는 단계들(310 내지 320)을 수행하도록 컴퓨터 시스템을 제어할 수 있다. 이때, 컴퓨터 시스템(100) 및 컴퓨터 시스템(100)의 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
프로세서는 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 컴퓨터 시스템에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 컴퓨터 시스템을 제어할 수 있다. 이때, 컴퓨터 시스템(100) 및 컴퓨터 시스템(100) 이 포함하는 정형 검증 수행부(210) 및 입출력 채널 제공부(220) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(310 내지 320)을 실행하기 위한 컴퓨터 시스템(100)의 서로 다른 기능적 표현들일 수 있다.
단계(310)에서 정형 검증 수행부(210)는 입출력 커널의 강화를 위한 정형 검증을 수행할 수 있다. 정형 검증 수행부(210)는 윔피 앱(App)에서 윔피 커널의 API가 호출될 때 자료구조 내에 구성된 디바이스디비 엔트리들의 컨텐츠의 변경 여부를 통하여 윔피 커널의 구현을 증명할 수 있다. 정형 검증 수행부(210)는 입출력 장치로부터의 입력 데이터에 대한 비동기적인 DMA 트랜잭션에 제한적인 정책을 부과할 수 있다. 정형 검증 수행부(210)는 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, DMA를 요청하는 API의 끝에서만 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 하나만 나타날 수 있도록 제한할 수 있다. 정형 검증 수행부(210)는 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러를 다시 비활성화시키고, USB의 비동기 리스트에 하나의 루트 타입 큐헤드(QueueHead)가 위치할 수 있도록 하여 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한할 수 있다. 정형 검증 수행부(210)는 입출력 장치에서 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용할 수 있다. 정형 검증 수행부(210)는 DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 API의 요청이 수행될 수 없도록 할 수 있다.
단계(320)에서 입출력 채널 제공부(220)는 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. 컴퓨터 시스템에 의해 수행되는 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화 방법에 있어서,
    입출력 커널의 강화를 위한 정형 검증을 수행하는 단계; 및
    상기 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공하는 단계
    를 포함하고,
    상기 입출력 커널은 윔피 커널을 포함하고,
    상기 정형 검증을 수행하는 단계는,
    입출력 장치로부터의 입력 데이터에 대한 비동기적인 DMA 트랜잭션에 제한적인 정책을 부과하고, 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, 상기 DMA를 요청하는 API의 끝에서만 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 하나만 나타날 수 있도록 제한하는 단계
    를 포함하는 강화 방법.
  2. 제1항에 있어서,
    상기 정형 검증을 수행하는 단계는,
    윔피 앱(App)에서 윔피 커널의 API가 호출될 때 자료구조 내에 구성된 엔트리들의 컨텐츠의 변경 여부를 통하여 윔피 커널의 구현을 증명하는 단계
    를 포함하고,
    상기 자료구조는, 맵 형태로 구성된 디바이스디비(DeviceDB)를 포함하고, 상기 디바이스 디비의 엔트리들은 디바이스의 상태와 입출력 전송과 관련된 자료구조의 상태를 나타내는
    것을 특징으로 하는 강화 방법.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 정형 검증을 수행하는 단계는,
    상기 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러를 다시 비활성화시키고, USB의 비동기 리스트에 하나의 루트 타입 큐헤드(QueueHead)가 위치할 수 있도록 하고, 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한하는 단계
    를 포함하는 강화 방법.
  6. 제1항에 있어서,
    상기 정형 검증을 수행하는 단계는,
    입출력 장치에서 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용하는 단계
    를 포함하는 강화 방법.
  7. 제1항에 있어서,
    상기 정형 검증을 수행하는 단계는,
    DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 API의 요청이 수행될 수 없도록 하는 단계
    를 포함하는 강화 방법.
  8. 정형 검증(Formal Verification)을 이용한 입출력 커널 구현의 강화를 위한 컴퓨터 시스템에 있어서,
    입출력 커널의 강화를 위한 정형 검증을 수행하는 정형 검증 수행부; 및
    상기 정형 검증이 수행된 입출력 커널을 통해 신뢰실행환경에서 입출력 채널을 제공하는 입출력 채널 제공부
    를 포함하고,
    상기 입출력 커널은 윔피 커널을 포함하고,
    상기 정형 검증 수행부는,
    입출력 장치로부터의 입력 데이터에 대한 비동기적인 DMA 트랜잭션에 제한적인 정책을 부과하고, 각각의 DMA 트랜잭션(Transaction)마다 DMA를 요청하는 API와 DMA 결과값을 반환하는 API를 포함하는 한 쌍의 API을 배치하고, 상기 DMA를 요청하는 API의 끝에서만 DMA 트랜잭션이 발생할 수 있도록 하여 스케줄러 활성화의 결과로서 나타나는 시스템의 상태가 하나만 나타날 수 있도록 제한하는
    컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 정형 검증 수행부는,
    윔피 앱(App)에서 윔피 커널의 API가 호출될 때 자료구조 내에 구성된 엔트리들의 컨텐츠의 변경 여부를 통하여 윔피 커널의 구현을 증명하는 것을 포함하고,
    상기 자료구조는, 맵 형태로 구성된 디바이스디비(DeviceDB)를 포함하고, 상기 디바이스 디비의 엔트리들은 디바이스의 상태와 입출력 전송과 관련된 자료구조의 상태를 나타내는
    것을 특징으로 하는 컴퓨터 시스템.
  10. 삭제
  11. 삭제
  12. 제8항에 있어서,
    상기 정형 검증 수행부는,
    상기 DMA 결과값을 반환하는 API에서 현재의 DMA 트랜잭션을 기준으로 이전의 DMA 트랜잭션이 성공적이었을 경우, 결과값을 반환하도록 하고, 스케줄러를 다시 비활성화시키고, USB의 비동기 리스트에 하나의 루트 타입 큐헤드(QueueHead)가 위치할 수 있도록 하고, 프레임 리스트(frame list) 내의 모든 프레임 리스트 링크 포인터(frame list link pointer)가 동일한 큐헤드를 가리키도록 하여 한 번에 하나의 DMA 트랜잭션만 발생하도록 제한하는
    것을 특징으로 하는 컴퓨터 시스템.
  13. 제8항에 있어서,
    상기 정형 검증 수행부는,
    입출력 장치에서 입력 데이터가 전송되는 상황에 따라 결정적 함수와 비결정적 함수를 사용하는
    것을 특징으로 하는 컴퓨터 시스템.
  14. 제8항에 있어서,
    상기 정형 검증 수행부는,
    DMA 트랜잭션을 요청할 때 제한된 조건들을 모두 만족시키지 않을 경우, DMA 트랜잭션을 수행할 수 없도록 하고, DMA 트랜잭션이 수행될 때 트랜잭션의 내용을 변경할 API의 요청이 수행될 수 없도록 하는
    것을 특징으로 하는 컴퓨터 시스템.
KR1020200055672A 2020-05-11 2020-05-11 정형 검증을 이용한 i/o 커널 구현의 강화 KR102348256B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200055672A KR102348256B1 (ko) 2020-05-11 2020-05-11 정형 검증을 이용한 i/o 커널 구현의 강화

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200055672A KR102348256B1 (ko) 2020-05-11 2020-05-11 정형 검증을 이용한 i/o 커널 구현의 강화

Publications (2)

Publication Number Publication Date
KR20210137642A KR20210137642A (ko) 2021-11-18
KR102348256B1 true KR102348256B1 (ko) 2022-01-07

Family

ID=78717324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200055672A KR102348256B1 (ko) 2020-05-11 2020-05-11 정형 검증을 이용한 i/o 커널 구현의 강화

Country Status (1)

Country Link
KR (1) KR102348256B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3794477B1 (en) * 2019-01-04 2023-05-10 Baidu.com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627414B1 (en) 2009-08-04 2014-01-07 Carnegie Mellon University Methods and apparatuses for user-verifiable execution of security-sensitive code
KR101471108B1 (ko) 2011-09-25 2014-12-09 어드밴스드 마이크로 디바이시즈, 인코포레이티드 I/o 디바이스에 의해 메모리에 액세스하는 것을 금지하는 보호 모드를 갖는 입력/출력 메모리 관리 유닛
US20170177854A1 (en) 2014-05-15 2017-06-22 Carnegie Mellon University Method and Apparatus for On-Demand Isolated I/O Channels for Secure Applications

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074059B2 (en) * 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
KR101418340B1 (ko) * 2012-06-13 2014-07-15 경북대학교 산학협력단 차량 전장용 운영체제의 정형 검증 장치 및 정형 검증 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627414B1 (en) 2009-08-04 2014-01-07 Carnegie Mellon University Methods and apparatuses for user-verifiable execution of security-sensitive code
KR101471108B1 (ko) 2011-09-25 2014-12-09 어드밴스드 마이크로 디바이시즈, 인코포레이티드 I/o 디바이스에 의해 메모리에 액세스하는 것을 금지하는 보호 모드를 갖는 입력/출력 메모리 관리 유닛
US20170177854A1 (en) 2014-05-15 2017-06-22 Carnegie Mellon University Method and Apparatus for On-Demand Isolated I/O Channels for Secure Applications

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Andrew Ferraiuolo et al, "Komodo: Using verification to disentangle secure-enclave hardware from sofware", 26th ACM Symposium on Operating Systems Principles(2017.10.)
Zongwei Zhou et al, "Dancing with Giants: Wimpy Kernels for On-demand Isolated I/O", 2014 IEEE Symposium on Security and Privacy, pp. 308-323(2014.11.)

Also Published As

Publication number Publication date
KR20210137642A (ko) 2021-11-18

Similar Documents

Publication Publication Date Title
JP6842367B2 (ja) ファイル中の悪意のあるコードの検出システム及び方法
AU2015378729B2 (en) Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
Dautenhahn et al. Nested kernel: An operating system architecture for intra-kernel privilege separation
EP2973194B1 (en) Linear address mapping protection
US8141163B2 (en) Malicious code detection
JP2018041438A5 (ko)
KR20180029047A (ko) 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들
Anderson et al. Operating Systems: Principles and Practice, volume 1: Kernel and Processes
TWI811456B (zh) 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體
JP2018517985A (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
Sierra-Arriaga et al. Security issues and challenges for virtualization technologies
CN114902178A (zh) 域转换禁用配置参数
KR102348256B1 (ko) 정형 검증을 이용한 i/o 커널 구현의 강화
Allievi et al. Windows Internals, Part 2
Schlüter et al. Heckler: Breaking Confidential VMs with Malicious Interrupts
AT&T
RU101217U1 (ru) Система ускорения эмуляции процессов
Lukacs et al. Hardware virtualization based security solution for embedded systems
Goonasekera et al. A hardware virtualization based component sandboxing architecture
Qiang et al. Reducing tcb of linux kernel using user-space device driver
Senuki et al. Nioh-PT: Virtual I/O Filtering for Agile Protection against Vulnerability Windows
TW202409842A (zh) 例外返回狀態鎖定參數
WO2023209323A1 (en) Exception return state lock parameter
GB2623800A (en) Stack pointer switch validity checking

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant