KR102392626B1 - 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법 - Google Patents

가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법 Download PDF

Info

Publication number
KR102392626B1
KR102392626B1 KR1020200100730A KR20200100730A KR102392626B1 KR 102392626 B1 KR102392626 B1 KR 102392626B1 KR 1020200100730 A KR1020200100730 A KR 1020200100730A KR 20200100730 A KR20200100730 A KR 20200100730A KR 102392626 B1 KR102392626 B1 KR 102392626B1
Authority
KR
South Korea
Prior art keywords
guest
host
operating system
key
data
Prior art date
Application number
KR1020200100730A
Other languages
English (en)
Other versions
KR102392626B9 (ko
KR20220020138A (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 KR1020200100730A priority Critical patent/KR102392626B1/ko
Priority to US18/020,414 priority patent/US20240037281A1/en
Priority to PCT/KR2020/017020 priority patent/WO2022034979A1/ko
Publication of KR20220020138A publication Critical patent/KR20220020138A/ko
Application granted granted Critical
Publication of KR102392626B1 publication Critical patent/KR102392626B1/ko
Publication of KR102392626B9 publication Critical patent/KR102392626B9/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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/60Protecting data
    • 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/602Providing cryptographic facilities or services
    • 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
    • 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
    • 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
    • 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
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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

Abstract

게스트 운영체제에 마련되어, 호스트 운영체제에 데이터를 요청하는 스레드에서 이용되도록 게스트 공유키를 생성하고, 스레드와 게스트 공유키를 호스트 운영체제에 전달하여, 스레드에 따른 데이터를 호스트 어플리케이션에 요청하여, 데이터를 전달받고, 호스트 운영체제에서, 게스트 공유키로부터 생성되는 세션키를 이용하여 암호문을 생성하고, 암호문과 호스트 공유키를 게스트 운영체제에 전달하는, 보안 통신 제어 시스템을 제공한다.

Description

가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법{SECURE COMMUNICATION CONTROL SYSTEM AND METHOD USED IN VIRTUALIZED OPERATING SYSTEM ENVIRONMENT}
본 발명은 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법에 관한 것으로, 보다 상세하게는, 하이퍼바이저(Hypervisor) 등의 가상화 환경에서 이용되는 보안 통신 제어 장치 및 방법에 관한 것이다.
고성능 가상화 컴퓨팅 장치, 또는 I/O에서의 호스트 운영체제와 게스트 운영체제 간의 데이터 전송을 위한 가상화 기술에 대한 관심이 커지고 있다. 이와 관련하여, ARMx64 아키텍처의 하이퍼바이저(HYP) 모드는 데이터를 전송하기 위한 방법으로, 9P 프로토콜을 통해 파일 또는, 디렉토리를 공유하거나, 메모리 매핑을 기반으로 메모리를 공유하는 등의 기법을 이용할 수 있다.
그러나, 게스트 운영체제와 호스트 운영체제에 마련된 어플리케이션, 응용 프로그램 또는 여러 기능들 간에 직접적이고, 빠른 데이터 전송을 구현할 수 있는 기법에 대한 개발 및 연구는 부족한 실정이며, 이에 따라, 게스트 운영체제와 호스트 운영체제 간에 효율적인 데이터 전송 방안이 요구되는 실정이다.
본 발명이 해결하고자 하는 기술적 과제는 가상화 운영체제 환경에 마련되는 호스트 운영체제와 게스트 운영체제 간의 데이터 통신을 수행하는 보안 통신 제어 시스템 및 방법을 제공하는 것이다.
본 발명의 일측면은, 게스트 운영체제에 마련되어, 호스트 운영체제에 설치된 호스트 어플리케이션에 임의의 데이터를 요청하는 스레드를 생성하는 게스트 제어부; 상기 스레드에서 이용되도록 게스트 공유키를 생성하는 게스트 공유키 생성부; 상기 스레드와 상기 게스트 공유키를 상기 호스트 운영체제에 전달하는 게스트 통신부; 상기 게스트 공유키에 대응되도록 호스트 공유키를 생성하는 호스트 공유키 생성부; 상기 스레드에 따른 데이터를 상기 호스트 어플리케이션에 요청하여, 상기 호스트 어플리케이션으로부터 상기 데이터를 전달받고, 상기 게스트 공유키로부터 세션키를 생성하며, 상기 세션키를 이용하여 상기 데이터를 암호화하여 암호문을 생성하는 호스트 제어부; 및 상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달하는 호스트 통신부를 포함할 수 있다.
또한, 상기 게스트 공유키 생성부는, 상기 스레드가 생성되는 경우, 상기 스레드에서 이용되도록 임의의 게스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 게스트 비밀키를 이용하여 상기 게스트 공유키를 생성할 수 있다.
또한, 상기 호스트 공유키를 상기 게스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는 게스트 제어부를 더 포함할 수 있다.
또한, 상기 호스트 공유키 생성부는, 상기 스레드가 상기 호스트 운영체제에 전달되는 경우, 상기 스레드에서 이용되도록 임의의 호스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 호스트 비밀키를 이용하여 상기 호스트 공유키를 생성할 수 있다.
또한, 상기 호스트 제어부는, 상기 게스트 공유키를 상기 호스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성할 수 있다.
또한, 상기 호스트 통신부는, 상기 게스트 운영체제에 연결되도록 마련되는 VirtIO를 통해, 상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달할 수 있다.
또한, 상기 게스트 제어부는, 상기 호스트 운영체제로부터 암호문과 상기 호스트 공유키를 전달받는 경우, 상기 호스트 공유키로부터 세션키를 생성하고, 상기 세션키를 이용하여 상기 암호문을 복호화하여 상기 데이터를 추출하는 게스트 데이터 제어부를 포함할 수 있다.
또한, 상기 게스트 제어부는, 상기 호스트 운영체제로부터 전달받은 암호문을 복호화하여 상기 데이터가 추출된 경우, 상기 데이터를 상기 게스트 어플리케이션에 전달하고, 상기 게스트 어플리케이션에서 상기 데이터에 대한 처리를 수행하여 반환되는 데이터를 전달받는 게스트 어플리케이션 제어부를 포함할 수 있다.
또한, 상기 게스트 제어부는, 상기 호스트 공유키로부터 세션키를 생성하고, 상기 세션키를 이용하여 상기 반환된 데이터를 암호화하여 암호문을 생성할 수 있다.
또한, 상기 호스트 제어부는, 상기 게스트 운영체제로부터 암호문을 전달받는 경우, 상기 게스트 공유키로부터 생성되는 세션키를 이용하여 상기 게스트 운영체제로부터 전달받은 암호문을 복호화하여 상기 반환된 데이터를 추출할 수 있다.
본 발명의 다른 일측면은, 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템을 이용하는 보안 통신 제어 방법에 있어서, 게스트 운영체제에서, 호스트 운영체제에 설치된 호스트 어플리케이션에 임의의 데이터를 요청하는 스레드를 생성하는 단계; 상기 스레드에서 이용되도록 게스트 공유키를 생성하는 단계; 상기 스레드와 상기 게스트 공유키를 상기 호스트 운영체제에 전달하는 단계; 상기 게스트 공유키에 대응되도록 호스트 공유키를 생성하는 단계; 상기 스레드에 따른 데이터를 상기 호스트 어플리케이션에 요청하여, 상기 호스트 어플리케이션으로부터 상기 데이터를 전달받고, 상기 게스트 공유키로부터 세션키를 생성하며, 상기 세션키를 이용하여 상기 데이터를 암호화하여 암호문을 생성하는 단계; 및 상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달하는 단계를 포함할 수 있다.
또한, 상기 게스트 공유키를 생성하는 단계는, 상기 스레드가 생성되는 경우, 상기 스레드에서 이용되도록 임의의 게스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 게스트 비밀키를 이용하여 상기 게스트 공유키를 생성할 수 있다.
또한, 상기 호스트 공유키를 상기 게스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는 단계를 더 포함할 수 있다.
또한, 상기 호스트 공유키를 생성하는 단계는, 상기 스레드가 상기 호스트 운영체제에 전달되는 경우, 상기 스레드에서 이용되도록 임의의 호스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 호스트 비밀키를 이용하여 상기 호스트 공유키를 생성할 수 있다.
또한, 상기 암호문을 생성하는 단계는, 상기 게스트 공유키를 상기 호스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성할 수 있다.
상술한 본 발명의 일측면에 따르면, 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법을 제공함으로써, 가상화 운영체제 환경에 마련되는 호스트 운영체제와 게스트 운영체제 간의 데이터 통신을 수행할 수 있다.
도1은 본 발명의 일 실시예에 따른 보안 통신 제어 시스템의 개략도이다.
도2는 도1의 게스트 운영체제의 제어블록도이다.
도3은 도1의 호스트 운영체제의 제어블록도이다.
도4는 도2의 게스트 어플리케이션 제어부에서 스레드가 생성되어, 호스트 운영체제에 전달되는 과정을 나타낸 블록도이다.
도5는 도3의 호스트 데이터 제어부에서 암호문이 생성되어, 게스트 운영체제에 전달되는 과정을 나타낸 블록도이다.
도6은 본 발명의 일 실시예에 따른 보안 통신 제어 방법의 순서도이다.
도7은 도6의 게스트 운영체제에 전달하는 단계에 따라, 게스트 운영체제에서 반환된 데이터를 호스트 운영체제에 전달하는 방법을 나타낸 세부 순서도이다.
도8은 도6의 호스트 운영체제에 전달하는 단계에 따라 게스트 운영체제가 스레드를 중지하는 방법을 나타낸 세부 순서도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도1은 본 발명의 일 실시예에 따른 보안 통신 제어 시스템의 개략도이다.
보안 통신 제어 시스템(1)은 하드웨어(100), 호스트 운영체제(200), 가상화 모듈(300) 및 게스트 운영체제(400)를 포함할 수 있다.
하드웨어(100)는 호스트 운영체제(200) 및 게스트 운영체제(400)에서 요청되는 작업을 수행하도록 마련되는 장치를 의미할 수 있으며, 예를 들어, 하드웨어(100)는 중앙처리장치(CPU: Central Processing Unit), 램(RAM: Random Access Memory) 또는 롬(ROM: Read Only Memory)을 포함하는 주 기억 장치(Main Memory Unit), 그래픽 처리 장치(GPU: Graphic Processing Unit) 등을 포함할 수 있고, 하드웨어(100)는 하드 디스크(HDD: Hard Disk Drive), SSD(Solid State Drive) 등의 보조 기억 장치(Auxiliary Memory)를 더 포함할 수 있으며, 하드웨어(100)는 키보드 등의 입력 장치(Input Device) 또는, 모니터, 스피커 등의 출력 장치(Output Device)를 더 포함할 수 있다.
또한, 하드웨어(100)는 호스트 운영체제(200) 및 게스트 운영체제(400)에서 요청되는 작업을 수행하도록 마련되는 다른 장치들을 더 포함할 수 있으며, 하드웨어(100)는 가상화 모듈(300)의 구현에 요구되는 장치들을 더 포함할 수도 있다.
호스트 운영체제(200)는 하드웨어(100)에 직접 설치되어, 하드웨어(100)의 자원을 관리하거나, 하드웨어(100)를 이용하여 데이터를 처리하는 프로세스를 용이하게 수행 가능하도록 마련되는 프로그램들의 집합을 의미할 수 있다. 예를 들어, 호스트 운영체제(200)는 리눅스(Linux) 등이 이용될 수 있다.
이때, 호스트 운영체제(200)는 특정한 작업을 수행하도록 마련되는 호스트 어플리케이션(260) 및 호스트 어플리케이션(260)에서 요청되는 작업이 하드웨어(100)를 통해 수행되도록 제어하는 호스트 커널(210)을 포함할 수 있다.
여기에서, 호스트 커널(210)은 하드웨어(100)에 저장된 데이터에 접근하거나, 또는 하드웨어(100)에 저장된 데이터를 처리할 수 있도록 마련되는 파일 시스템, 호스트 어플리케이션(260)에서 호출된 명령어를 하드웨어(100)에서 인식 가능하도록 마련되는 드라이버 등을 포함할 수 있다.
한편, 가상화 모듈(300)은 호스트 운영체제(200)에 설치되는 가상화 계층을 의미할 수 있으며, 가상화 모듈(300)은 하드웨어(100)를 하나 이상의 가상 머신(VM: Virtual Machine)이 분할하여 이용 가능하도록 마련될 수 있다.
이때, 가상화 모듈(300)은 호스트 운영체제(200)에 설치될 수 있으며, 또한, 가상화 모듈(300)은 하드웨어(100)에 직접 설치되도록 마련될 수도 있다. 이러한, 가상화 모듈(300)은 KVM(Kernel-based Virtual Machine), QEMU 등의 하이퍼바이저(Hypervisor) 또는, 에뮬레이터(Emulator)를 의미할 수 있다.
게스트 운영체제(400)는 가상화 모듈(300)을 통해 호스트 운영체제(200)에 설치되어, 가상화 모듈(300)에 의해 하드웨어(100)의 자원을 관리하거나, 하드웨어(100)를 이용하여 데이터를 처리하는 프로세스를 용이하게 수행 가능하도록 마련되는 프로그램들의 집합을 의미할 수 있다. 예를 들어, 게스트 운영체제(400)는 리눅스(Linux) 등이 이용될 수 있다.
이때, 게스트 운영체제(400)는 특정한 작업을 수행하도록 마련되는 게스트 어플리케이션(460) 및 게스트 어플리케이션(460)에서 요청되는 작업이 가상화 모듈(300)에 의해 수행되도록 제어하는 게스트 커널(410)을 포함할 수 있다.
여기에서, 게스트 커널(410)은 가상화 모듈(300)을 통해 하드웨어(100)에 저장된 데이터에 접근하거나, 또는, 가상화 모듈(300)을 통해 하드웨어(100)에 저장된 데이터를 처리할 수 있도록 마련되는 파일 시스템, 게스트 어플리케이션(460)에서 호출된 명령어를 가상화 모듈(300)을 통해 하드웨어(100)에서 인식 가능하도록 마련되는 드라이버 등을 포함할 수 있다.
이와 관련하여, 가상화 모듈(300)은 9p, VirtIO 등의 드라이버를 이용하여, 게스트 커널(410)과 호스트 커널(210) 간에 데이터를 전달하거나, 전달받는 통신을 수행하도록 마련될 수 있다.
여기에서, 9p 또는 VirtIO 등의 드라이버는 호스트 운영체제(200) 또는 게스트 운영체제(400)에서 이용되는 명령어를 다른 운영체제 또는 하드웨어(100)에서 이용되는 명령어로 변환이 가능하도록 마련될 수 있으며, 이를 통해, 게스트 어플리케이션(460) 또는 호스트 어플리케이션(260)은 각각의 운영체제에 마련되는 명령어를 이용하여 다른 운영체제 또는 하드웨어(100)에서 임의의 동작을 수행하도록 마련될 수 있다.
도2는 도1의 게스트 운영체제의 제어블록도이다.
게스트 운영체제(400)는 게스트 커널(410)을 포함할 수 있고, 게스트 커널(410)은 게스트 통신부(411), 게스트 공유키 생성부(412) 및 게스트 제어부(413)를 포함할 수 있으며, 게스트 제어부(413)는 게스트 어플리케이션 제어부(416) 및 게스트 데이터 제어부(417)를 포함할 수 있다.
게스트 어플리케이션 제어부(416)는 게스트 운영체제(400)에 마련되어, 호스트 운영체제(200)에 설치된 호스트 어플리케이션(260)에 임의의 데이터를 요청하는 스레드를 생성할 수 있다.
여기에서, 스레드는 게스트 어플리케이션(460)에서 요청되는 작업을 나타내는 프로세스를 처리하도록 마련되는 일련의 실행 코드를 의미할 수 있다.
이때, 스레드는 게스트 어플리케이션(460)에 의해 게스트 운영체제(400)에 마련된 데이터를 호스트 운영체제(200)에 전달되도록 마련될 수 있으며, 스레드는 게스트 어플리케이션(460)에 의해 호스트 운영체제(200)에 마련된 데이터를 게스트 운영체제(400)에 전달되도록 마련될 수도 있다.
또한, 스레드는 게스트 운영체제(400)에 마련된 데이터를 호스트 운영체제(200)에 전달하여, 호스트 어플리케이션(260)에 의한 임의의 데이터 처리를 수행하고, 이에 따라, 반환되는 데이터를 호스트 운영체제(200)로부터 게스트 운영체제(400)에 전달되도록 마련될 수 있고, 또한, 스레드는 호스트 운영체제(200)에 마련된 데이터를 게스트 운영체제(400)에 전달하여, 게스트 어플리케이션(460)에 의한 임의의 데이터 처리를 수행하고, 이에 따라, 반환되는 데이터를 게스트 운영체제(400)로부터 호스트 운영체제(200)에 전달되도록 마련될 수 있다.
이와 같이, 스레드는 호스트 운영체제(200)와 게스트 운영체제(400) 간의 임의의 데이터 처리를 수행하도록 마련될 수 있으며, 또한, 스레드는 호스트 운영체제(200) 또는 게스트 운영체제(400)에서 임의의 데이터 처리를 수행하도록 마련될 수도 있다.
한편, 스레드는 호스트 운영체제(200)에 데이터를 전송하기를 요청하거나, 호스트 운영체제(200)로부터 데이터를 전달받기를 요청하는 요청 패킷을 포함할 수 있으며, 이러한, 요청 패킷은 리눅스와 KVM에서 이용되는 p9_pdu 형태의 데이터 구조로 이용될 수 있다.
이러한 경우에, 호스트 운영체제(200)는 9p를 통해 검출되는 요청 패킷에 따라 데이터 처리를 수행할 수 있다.
게스트 공유키 생성부(412)는 스레드가 생성되는 경우에, 스레드에서 이용되도록 게스트 공유키를 생성할 수 있다.
이때, 게스트 공유키 생성부(412)는 스레드가 생성되는 경우에, 스레드에서 이용되도록 임의의 게스트 비밀키를 설정할 수 있고, 게스트 공유키 생성부(412)는 사전에 마련되는 공개키와 설정된 게스트 비밀키를 이용하여 게스트 공유키를 생성할 수 있다.
여기에서, 사전에 마련되는 공개키는 게스트 비밀키 또는, 호스트 운영체제(200)에서 설정되는 호스트 비밀키에 의한 제곱 연산에 이용되는 제 1 공개키와 모듈러 연산에 이용되는 제 2 공개키를 포함할 수 있다.
이때, 모듈러 연산은 두 수를 나눈 나머지를 결과 값으로 산출하는 연산을 의미할 수 있다.
또한, 공개키는 호스트 운영체제(200)와 임의의 게스트 운영체제(400)에서 동일한 값으로 이용 가능하도록 마련될 수 있으며, 이를 위해, 호스트 운영체제(200)는 가상화 모듈(300)을 통해 게스트 운영체제(400)가 설치되는 경우에, 설치되는 게스트 운영체제(400)와 동일한 공개키를 설정할 수 있다. 이때, 공개키는 사전에 설정되는 시간 간격에 따라 다른 값으로 업데이트될 수도 있다.
이에 따라, 게스트 공유키 생성부(412)는 제 1 공개키를 게스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 제 2 공개키를 이용한 모듈러 연산을 수행하여 게스트 공유키를 생성할 수 있다.
여기에서, 게스트 공유키 생성부(412)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 게스트 공유키로 산출되도록 모듈러 연산을 수행할 수 있다.
이와 같이, 게스트 공유키를 생성하는 것은 Diffie-Hellman의 키 교환 기법을 이용하여 생성할 수도 있다.
게스트 통신부(411)는 생성된 스레드와 게스트 공유키를 호스트 운영체제(200)에 전달할 수 있다.
이때, 게스트 통신부(411)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 스레드와 게스트 공유키를 호스트 운영체제(200)에 전달할 수 있다.
이와 관련하여, VirtIO를 통해 임의의 데이터를 전달하는 것은 VirtIO에 마련되는 버퍼에 전달하고자 하는 데이터를 작성하는 것으로 이해할 수 있으며, 이에 따라, 해당 데이터를 전달받는 요소는 VirtIO에 마련되는 버퍼에 작성된 데이터를 읽는 것으로 이해할 수 있다.
한편, 게스트 통신부(411)는 호스트 운영체제(200)로부터 호스트 운영체제(200)에서 암호화되는 암호문과 호스트 운영체제(200)에서 생성되는 호스트 공유키를 전달받을 수도 있으며, 이러한 경우에도, 게스트 통신부(411)는 VirtIO를 통해, 암호문과 호스트 공유키를 전달받을 수 있다.
이러한 경우에, 게스트 데이터 제어부(417)는 호스트 공유키를 게스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 제 2 공개키를 이용한 모듈러 연산을 수행하여 세션키를 생성할 수 있다.
여기에서, 게스트 데이터 제어부(417)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 세션키로 산출되도록 모듈러 연산을 수행할 수 있다.
이와 같이, 세션키를 생성하는 것은 Diffie-Hellman의 키 교환 기법을 이용하여 생성할 수도 있다.
이에 따라, 게스트 데이터 제어부(417)는 세션키를 이용하여 호스트 운영체제(200)로부터 전달된 암호문을 복호화하여 데이터를 추출할 수 있다.
이러한 경우에, 게스트 어플리케이션 제어부(416)는 호스트 운영체제(200)로부터 전달받은 암호문을 복호화하여 데이터가 추출된 경우에, 게스트 어플리케이션(460)에서 해당 데이터에 대한 처리를 수행하도록 추출된 데이터를 게스트 어플리케이션(460)에 전달할 수 있고, 게스트 어플리케이션 제어부(416)는 게스트 어플리케이션(460)에서 데이터에 대한 처리를 수행하여 반환되는 데이터를 전달받을 수 있다.
이에 따라, 게스트 데이터 제어부(417)는 호스트 공유키로부터 생성된 세션키를 이용하여 반환된 데이터를 암호화하여 암호문을 생성할 수 있으며, 게스트 통신부(411)는 암호화된 암호문을 호스트 운영체제(200)에 전달할 수 있다.
이때, 게스트 통신부(411)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 암호문을 호스트 운영체제(200)에 전달할 수 있다.
한편, 게스트 데이터 제어부(417)는 사전에 설정되는 시간 간격 내에 호스트 운영체제(200)로부터 스레드에 따른 데이터가 암호화된 암호문이 전달되지 않는 경우에, 해당 데이터에 대한 스레드를 중지하고, 해당 스레드를 삭제할 수도 있다.
이와 관련하여, 게스트 공유키 생성부(412)는 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 게스트 비밀키를 제거할 수 있으며, 이에 따라, 게스트 공유키 생성부(412)는 제거된 게스트 비밀키를 이용하여 생성된 게스트 공유키를 제거할 수 있다.
또한, 게스트 데이터 제어부(417)는 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 세션키를 제거할 수 있다.
한편, 게스트 제어부(413)는 CDR(Custom Data Request) 모듈로써 마련될 수 있으며, Diffie-Hellman 키 교환 메커니즘을 통해, 호스트 운영체제(200)와의 데이터 교환에 있어서, 안정적인 암호화 방식을 구현할 수 있으며, 이에 따라, 게스트 제어부(413)는 고성능의 데이터 전송을 지원하고, 안정적으로 데이터를 보호할 수 있다.
도3은 도1의 호스트 운영체제의 제어블록도이다.
호스트 운영체제(200)는 호스트 커널(210)을 포함할 수 있고, 호스트 커널(210)은 호스트 통신부(211), 호스트 공유키 생성부(212) 및 호스트 제어부(213)를 포함할 수 있으며, 호스트 제어부(213)는 호스트 어플리케이션 제어부(216) 및 호스트 데이터 제어부(217)를 포함할 수 있다.
호스트 어플리케이션 제어부(216)는 게스트 운영체제(400)로부터 스레드 및 게스트 공유키를 전달받는 경우에, 스레드에 따른 데이터를 호스트 어플리케이션(260)에 요청하여, 호스트 어플리케이션(260)으로부터 데이터를 전달받을 수 있다.
이때, 호스트 어플리케이션 제어부(216)는 사전에 설정되는 시간 간격 내에 호스트 어플리케이션(260)으로부터 데이터가 전달되지 않는 경우에, 게스트 운영체제(400)로부터 전달된 스레드를 중지하고, 해당 스레드를 삭제할 수도 있다.
호스트 공유키 생성부(212)는 게스트 운영체제(400)로부터 전달받은 게스트 공유키에 대응되도록 호스트 공유키를 생성할 수 있으며, 이를 위해, 호스트 공유키 생성부(212)는 게스트 운영체제(400)에서 생성된 스레드가 호스트 운영체제(200)에 전달되는 경우에, 스레드에서 이용되도록 임의의 호스트 비밀키를 설정할 수 있고, 호스트 공유키 생성부(212)는 사전에 마련되는 공개키와 호스트 비밀키를 이용하여 호스트 공유키를 생성할 수 있다.
이에 따라, 호스트 공유키 생성부(212)는 제 1 공개키를 호스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 제 2 공개키를 이용한 모듈러 연산을 수행하여 호스트 공유키를 생성할 수 있다.
여기에서, 호스트 공유키 생성부(212)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 호스트 공유키로 산출되도록 모듈러 연산을 수행할 수 있다.
이와 같이, 호스트 공유키를 생성하는 것은 Diffie-Hellman의 키 교환 기법을 이용하여 생성할 수도 있다.
이에 따라, 호스트 데이터 제어부(217)는 게스트 운영체제(400)로부터 전달받은 게스트 공유키로부터 세션키를 생성할 수 있으며, 호스트 데이터 제어부(217)는 세션키를 이용하여 데이터를 암호화하여 암호문을 생성할 수 있다.
이때, 호스트 데이터 제어부(217)는 게스트 공유키를 호스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 세션키를 생성할 수 있다.
여기에서, 호스트 데이터 제어부(217)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 세션키로 산출되도록 모듈러 연산을 수행할 수 있다.
이와 같이, 세션키를 생성하는 것은 Diffie-Hellman의 키 교환 기법을 이용하여 생성할 수도 있다.
호스트 통신부(211)는 생성된 암호문과 호스트 공유키를 게스트 운영체제(400)에 전달할 수 있다.
이때, 호스트 통신부(211)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 암호문과 호스트 공유키를 게스트 운영체제(400)에 전달할 수 있다.
한편, 호스트 통신부(211)는 게스트 운영체제(400)로부터 게스트 운영체제(400)에서 암호화되는 암호문을 전달받을 수도 있으며, 이러한 경우에도, 호스트 통신부(211)는 VirtIO를 통해, 암호문을 전달받을 수 있다.
이러한 경우에, 호스트 데이터 제어부(217)는 게스트 운영체제(400)로부터 암호문을 전달받는 경우에, 게스트 공유키로부터 세션키를 생성할 수 있고, 호스트 데이터 제어부(217)는 세션키를 이용하여 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터를 추출할 수 있다.
이때, 게스트 공유키는 스레드를 전달받는 경우에, 전달된 것으로 이해할 수 있으며, 또한, 세션키는 게스트 운영체제(400)로부터 전달된 스레드에 따라 데이터를 암호화하는 경우에, 생성된 것으로 이해할 수도 있다.
이러한 경우에, 호스트 어플리케이션 제어부(216)는 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터가 추출된 경우에, 호스트 어플리케이션(260)에서 해당 데이터에 대한 처리를 수행하도록 추출된 반환된 데이터를 호스트 어플리케이션(260)에 전달할 수 있고, 호스트 어플리케이션 제어부(216)는 호스트 어플리케이션(260)에서 반환된 데이터에 대한 처리를 수행하여 재 반환되는 데이터를 전달받을 수 있다.
이와 같이, 게스트 운영체제(400)와 호스트 운영체제(200)는 임의의 스레드에 마련되는 데이터 처리 동작을 반복하여 수행할 수 있다.
한편, 호스트 공유키 생성부(212)는 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 호스트 비밀키를 제거할 수 있으며, 이에 따라, 호스트 공유키 생성부(212)는 제거된 호스트 비밀키를 이용하여 생성된 호스트 공유키를 제거할 수 있다.
또한, 호스트 데이터 제어부(217)는 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 세션키를 제거할 수 있다.
한편, 호스트 제어부(213)는 CDE(Custom Data Extractor) 모듈로써 마련될 수 있으며, Diffie-Hellman 키 교환 메커니즘을 통해, 게스트 운영체제(400)와의 데이터 교환에 있어서, 안정적인 암호화 방식을 구현할 수 있으며, 이에 따라, 호스트 제어부(213)는 고성능의 데이터 전송을 지원하고, 안정적으로 데이터를 보호할 수 있다.
도4는 도2의 게스트 어플리케이션 제어부에서 스레드가 생성되어, 호스트 운영체제에 전달되는 과정을 나타낸 블록도이다.
도4를 참조하면, 게스트 어플리케이션 제어부(416)는 게스트 운영체제(400)에 마련되어, 호스트 운영체제(200)에 설치된 호스트 어플리케이션(260)에 임의의 데이터를 요청하는 스레드를 생성할 수 있다.
이때, 게스트 공유키 생성부(412)는 스레드가 생성되는 경우에, 스레드에서 이용되도록 게스트 공유키를 생성할 수 있다.
여기에서, 게스트 공유키 생성부(412)는 스레드가 생성되는 경우에, 스레드에서 이용되도록 임의의 게스트 비밀키를 설정할 수 있고, 게스트 공유키 생성부(412)는 사전에 마련되는 공개키와 설정된 게스트 비밀키를 이용하여 게스트 공유키를 생성할 수 있다.
게스트 통신부(411)는 생성된 스레드와 게스트 공유키를 호스트 운영체제(200)에 전달할 수 있다.
이때, 게스트 통신부(411)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 스레드와 게스트 공유키를 호스트 운영체제(200)에 전달할 수 있다.
이에 따라, 호스트 통신부(211)는 게스트 운영체제(400)로부터 스레드와 게스트 공유키를 전달받을 수 있다.
호스트 공유키 생성부(212)는 게스트 운영체제(400)로부터 전달받은 게스트 공유키에 대응되도록 호스트 공유키를 생성할 수 있으며, 이를 위해, 호스트 공유키 생성부(212)는 게스트 운영체제(400)에서 생성된 스레드가 호스트 운영체제(200)에 전달되는 경우에, 스레드에서 이용되도록 임의의 호스트 비밀키를 설정할 수 있고, 호스트 공유키 생성부(212)는 사전에 마련되는 공개키와 호스트 비밀키를 이용하여 호스트 공유키를 생성할 수 있다.
이에 따라, 호스트 어플리케이션 제어부(216)는 게스트 운영체제(400)로부터 스레드 및 게스트 공유키를 전달받는 경우에, 스레드에 따른 데이터를 호스트 어플리케이션(260)에 요청하여, 호스트 어플리케이션(260)으로부터 데이터를 전달받을 수 있다.
도5는 도3의 호스트 데이터 제어부에서 암호문이 생성되어, 게스트 운영체제에 전달되는 과정을 나타낸 블록도이다.
도5를 참조하면, 호스트 어플리케이션 제어부(216)는 게스트 운영체제(400)로부터 스레드 및 게스트 공유키를 전달받는 경우에, 스레드에 따른 데이터를 호스트 어플리케이션(260)에 요청하여, 호스트 어플리케이션(260)으로부터 데이터를 전달받을 수 있다.
이에 따라, 호스트 데이터 제어부(217)는 게스트 운영체제(400)로부터 전달받은 게스트 공유키로부터 세션키를 생성할 수 있으며, 호스트 데이터 제어부(217)는 세션키를 이용하여 데이터를 암호화하여 암호문을 생성할 수 있다.
이때, 호스트 데이터 제어부(217)는 게스트 공유키를 호스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 세션키를 생성할 수 있다.
여기에서, 호스트 데이터 제어부(217)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 세션키로 산출되도록 모듈러 연산을 수행할 수 있다.
호스트 통신부(211)는 생성된 암호문과 호스트 공유키를 게스트 운영체제(400)에 전달할 수 있으며, 게스트 통신부(411)는 호스트 운영체제(200)로부터 암호문과 호스트 공유키를 전달받을 수 있다.
이때, 호스트 통신부(211)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 암호문과 호스트 공유키를 게스트 운영체제(400)에 전달할 수 있다.
이에 따라, 게스트 데이터 제어부(417)는 호스트 공유키를 게스트 비밀키로 제곱하고, 제곱 연산에 의해 산출되는 값으로부터 제 2 공개키를 이용한 모듈러 연산을 수행하여 세션키를 생성할 수 있다.
여기에서, 게스트 데이터 제어부(417)는 제곱 연산에 의해 산출되는 값을 제 2 공개키로 나눈 값의 나머지가 결과 값인 세션키로 산출되도록 모듈러 연산을 수행할 수 있다.
이에 따라, 게스트 데이터 제어부(417)는 세션키를 이용하여 호스트 운영체제(200)로부터 전달된 암호문을 복호화하여 데이터를 추출할 수 있다.
이러한 경우에, 게스트 어플리케이션 제어부(416)는 호스트 운영체제(200)로부터 전달받은 암호문을 복호화하여 데이터가 추출된 경우에, 게스트 어플리케이션(460)에서 해당 데이터에 대한 처리를 수행하도록 추출된 데이터를 게스트 어플리케이션(460)에 전달할 수 있고, 게스트 어플리케이션 제어부(416)는 게스트 어플리케이션(460)에서 데이터에 대한 처리를 수행하여 반환되는 데이터를 전달받을 수 있다.
이와 관련하여, 게스트 데이터 제어부(417)는 호스트 공유키로부터 생성된 세션키를 이용하여 반환된 데이터를 암호화하여 암호문을 생성할 수 있으며, 게스트 통신부(411)는 암호화된 암호문을 호스트 운영체제(200)에 전달할 수 있다.
이때, 게스트 통신부(411)는 호스트 운영체제(200)와 게스트 운영체제(400)가 연결되도록 마련되는 VirtIO를 통해, 암호문을 호스트 운영체제(200)에 전달할 수 있으며, 호스트 통신부(211)는 게스트 운영체제(400)로부터 게스트 운영체제(400)에서 암호화되는 암호문을 전달받을 수도 있으며, 이러한 경우에도, 호스트 통신부(211)는 VirtIO를 통해, 암호문을 전달받을 수 있다.
이러한 경우에, 호스트 데이터 제어부(217)는 게스트 운영체제(400)로부터 암호문을 전달받는 경우에, 게스트 공유키로부터 세션키를 생성할 수 있고, 호스트 데이터 제어부(217)는 세션키를 이용하여 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터를 추출할 수 있다.
또한, 호스트 어플리케이션 제어부(216)는 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터가 추출된 경우에, 호스트 어플리케이션(260)에서 해당 데이터에 대한 처리를 수행하도록 추출된 반환된 데이터를 호스트 어플리케이션(260)에 전달할 수 있고, 호스트 어플리케이션 제어부(216)는 호스트 어플리케이션(260)에서 반환된 데이터에 대한 처리를 수행하여 재 반환되는 데이터를 전달받을 수 있다.
이와 같이, 게스트 운영체제(400)와 호스트 운영체제(200)는 임의의 스레드에 마련되는 데이터 처리 동작을 반복하여 수행할 수 있다.
도6은 본 발명의 일 실시예에 따른 보안 통신 제어 방법의 순서도이다.
본 발명의 일 실시예에 따른 보안 통신 제어 방법은 도 1에 도시된 보안 통신 제어 시스템(1)과 실질적으로 동일한 구성 상에서 진행되므로, 도 1의 보안 통신 제어 시스템(1)과 동일한 구성요소에 대해 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하기로 한다.
보안 통신 제어 방법은 스레드를 생성하는 단계(600), 게스트 공유키를 생성하는 단계(610), 호스트 운영체제에 전달하는 단계(620), 호스트 공유키를 생성하는 단계(630), 암호문을 생성하는 단계(640) 및 게스트 운영체제에 전달하는 단계(650)를 포함할 수 있다.
스레드를 생성하는 단계(600)는 게스트 어플리케이션 제어부(416)가 호스트 운영체제(200)에 설치된 호스트 어플리케이션(260)에 임의의 데이터를 요청하는 스레드를 생성하는 단계일 수 있다.
게스트 공유키를 생성하는 단계(610)는 게스트 공유키 생성부(412)가 스레드에서 이용되도록 게스트 공유키를 생성하는 단계일 수 있다.
호스트 운영체제에 전달하는 단계(620)는 게스트 통신부(411)가 스레드와 게스트 공유키를 호스트 운영체제(200)에 전달하는 단계일 수 있다.
호스트 공유키를 생성하는 단계(630)는 호스트 공유키 생성부(212)가 게스트 공유키에 대응되도록 호스트 공유키를 생성하는 단계일 수 있다.
암호문을 생성하는 단계(640)는 호스트 어플리케이션 제어부(216)가 스레드에 따른 데이터를 호스트 어플리케이션(260)에 요청하여, 호스트 어플리케이션(260)으로부터 데이터를 전달받고, 호스트 데이터 제어부(217)가 게스트 공유키로부터 세션키를 생성하며, 세션키를 이용하여 데이터를 암호화하여 암호문을 생성하는 단계일 수 있다.
게스트 운영체제에 전달하는 단계(650)는 호스트 통신부(211)가 암호문과 호스트 공유키를 게스트 운영체제(400)에 전달하는 단계일 수 있다.
도7은 도6의 게스트 운영체제에 전달하는 단계에 따라, 게스트 운영체제에서 반환된 데이터를 호스트 운영체제에 전달하는 방법을 나타낸 세부 순서도이다.
보안 통신 제어 방법은 게스트 운영체제에 전달하는 단계(650)에 따라, 암호문을 복호화하는 단계(660), 반환된 데이터를 전달받는 단계(670), 반환된 데이터로부터 암호문을 생성하는 단계(680) 및 반환된 데이터에 대한 암호문을 호스트 운영체제에 전달하는 단계(690)를 더 포함할 수 있다.
암호문을 복호화하는 단계(660)는 게스트 데이터 제어부(417)가 세션키를 이용하여 호스트 운영체제(200)로부터 전달된 암호문을 복호화하여 데이터를 추출하는 단계일 수 있다.
반환된 데이터를 전달받는 단계(670)는 게스트 어플리케이션 제어부(416)가 데이터를 게스트 어플리케이션(460)에 전달하고, 게스트 어플리케이션 제어부(416)가 게스트 어플리케이션(460)에서 데이터에 대한 처리를 수행하여 반환되는 데이터를 전달받는 단계일 수 있다.
반환된 데이터로부터 암호문을 생성하는 단계(680)는 게스트 데이터 제어부(417)가 호스트 공유키로부터 세션키를 생성하고, 세션키를 이용하여 반환된 데이터를 암호화하여 암호문을 생성하는 단계일 수 있다.
반환된 데이터에 대한 암호문을 호스트 운영체제에 전달하는 단계(690)는 게스트 통신부(411)가 암호문을 호스트 운영체제(200)에 전달하는 단계일 수 있다.
이에 따라, 보안 통신 제어 방법은 호스트 통신부(211)가 게스트 운영체제(400)로부터 게스트 운영체제(400)에서 암호화되는 암호문을 전달받는 단계를 더 포함할 수도 있으며, 이러한 경우에, 보안 통신 제어 방법은 호스트 데이터 제어부(217)가 게스트 운영체제(400)로부터 암호문을 전달받는 경우에, 게스트 공유키로부터 세션키를 생성하고, 호스트 데이터 제어부(217)가 세션키를 이용하여 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터를 추출하는 단계를 더 포함할 수 있다.
이에 따라, 보안 통신 제어 방법은 호스트 어플리케이션 제어부(216)가 게스트 운영체제(400)로부터 전달받은 암호문을 복호화하여 반환된 데이터가 추출된 경우에, 호스트 어플리케이션(260)에서 해당 데이터에 대한 처리를 수행하도록 추출된 반환된 데이터를 호스트 어플리케이션(260)에 전달하고, 호스트 어플리케이션 제어부(216)가 호스트 어플리케이션(260)에서 반환된 데이터에 대한 처리를 수행하여 재 반환되는 데이터를 전달받는 단계를 더 포함할 수 있다.
이와 같이, 보안 통신 제어 방법은 게스트 운영체제(400)와 호스트 운영체제(200)가 임의의 스레드에 마련되는 데이터 처리 동작을 반복하여 수행하도록 마련될 수 있다.
도8은 도6의 호스트 운영체제에 전달하는 단계에 따라 게스트 운영체제가 스레드를 중지하는 방법을 나타낸 세부 순서도이다.
도8을 참조하면, 보안 통신 제어 방법은 게스트 데이터 제어부(417)가 사전에 설정되는 시간 간격 내에 호스트 운영체제(200)로부터 스레드에 따른 데이터가 암호화된 암호문이 전달되는지 판단할 수 있다(621)
이에 따라, 게스트 운영체제가 스레드를 중지하는 단계(626)는 게스트 데이터 제어부(417)가 사전에 설정되는 시간 간격 내에 호스트 운영체제(200)로부터 스레드에 따른 데이터가 암호화된 암호문이 전달되지 않는 경우에, 해당 데이터에 대한 스레드를 중지하고, 해당 스레드를 삭제하는 단계일 수 있다.
이와 관련하여, 게스트 공유키를 제거하는 단계(627)는 게스트 공유키 생성부(412)가 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 게스트 비밀키를 제거하고, 게스트 공유키 생성부(412)가 제거된 게스트 비밀키를 이용하여 생성된 게스트 공유키를 제거하는 단계일 수 있다.
또한, 보안 통신 제어 방법은 게스트 데이터 제어부(417)가 임의의 스레드가 중지되거나, 수행이 완료되는 경우에, 해당 스레드에 대해 생성된 세션키를 제거하는 단계를 더 포함할 수 있다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
1: 보안 통신 제어 시스템
100: 하드웨어
200: 호스트 운영체제
300: 가상화 모듈
400: 게스트 운영체제

Claims (15)

  1. 게스트 운영체제에 마련되어, 호스트 운영체제에 설치된 호스트 어플리케이션에 임의의 데이터를 요청하는 스레드를 생성하는 게스트 제어부;
    상기 스레드에서 이용되도록 게스트 공유키를 생성하는 게스트 공유키 생성부;
    상기 스레드와 상기 게스트 공유키를 상기 호스트 운영체제에 전달하는 게스트 통신부;
    상기 게스트 공유키에 대응되도록 호스트 공유키를 생성하는 호스트 공유키 생성부;
    상기 스레드에 따른 데이터를 상기 호스트 어플리케이션에 요청하여, 상기 호스트 어플리케이션으로부터 상기 데이터를 전달받고, 상기 게스트 공유키로부터 세션키를 생성하며, 상기 세션키를 이용하여 상기 데이터를 암호화하여 암호문을 생성하는 호스트 제어부; 및
    상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달하는 호스트 통신부를 포함하고,
    상기 스레드가 생성되는 경우, 상기 스레드에서 이용되도록 임의의 게스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 게스트 비밀키를 이용하여 상기 게스트 공유키를 생성하고,
    상기 호스트 공유키를 상기 게스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는 게스트 제어부를 더 포함하는, 보안 통신 제어 시스템.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 호스트 공유키 생성부는,
    상기 스레드가 상기 호스트 운영체제에 전달되는 경우, 상기 스레드에서 이용되도록 임의의 호스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 호스트 비밀키를 이용하여 상기 호스트 공유키를 생성하는, 보안 통신 제어 시스템.
  5. 제4항에 있어서, 상기 호스트 제어부는,
    상기 게스트 공유키를 상기 호스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는, 보안 통신 제어 시스템.
  6. 제1항에 있어서, 상기 호스트 통신부는,
    상기 게스트 운영체제에 연결되도록 마련되는 VirtIO를 통해, 상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달하는, 보안 통신 제어 시스템.
  7. 제1항에 있어서, 상기 게스트 제어부는,
    상기 호스트 운영체제로부터 암호문과 상기 호스트 공유키를 전달받는 경우, 상기 호스트 공유키로부터 세션키를 생성하고, 상기 세션키를 이용하여 상기 암호문을 복호화하여 상기 데이터를 추출하는 게스트 데이터 제어부를 포함하는, 보안 통신 제어 시스템.
  8. 제1항에 있어서, 상기 게스트 제어부는,
    상기 호스트 운영체제로부터 전달받은 암호문을 복호화하여 상기 데이터가 추출된 경우, 상기 데이터를 게스트 어플리케이션에 전달하고, 상기 게스트 어플리케이션에서 상기 데이터에 대한 처리를 수행하여 반환되는 데이터를 전달받는 게스트 어플리케이션 제어부를 포함하는, 보안 통신 제어 시스템.
  9. 제8항에 있어서, 상기 게스트 제어부는,
    상기 호스트 공유키로부터 세션키를 생성하고, 상기 세션키를 이용하여 상기 반환된 데이터를 암호화하여 암호문을 생성하는, 보안 통신 제어 시스템.
  10. 제9항에 있어서, 상기 호스트 제어부는,
    상기 게스트 운영체제로부터 암호문을 전달받는 경우, 상기 게스트 공유키로부터 생성되는 세션키를 이용하여 상기 게스트 운영체제로부터 전달받은 암호문을 복호화하여 상기 반환된 데이터를 추출하는, 보안 통신 제어 시스템.
  11. 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템을 이용하는 보안 통신 제어 방법에 있어서,
    게스트 운영체제에서, 호스트 운영체제에 설치된 호스트 어플리케이션에 임의의 데이터를 요청하는 스레드를 생성하는 단계;
    상기 스레드에서 이용되도록 게스트 공유키를 생성하는 단계;
    상기 스레드와 상기 게스트 공유키를 상기 호스트 운영체제에 전달하는 단계;
    상기 게스트 공유키에 대응되도록 호스트 공유키를 생성하는 단계;
    상기 스레드에 따른 데이터를 상기 호스트 어플리케이션에 요청하여, 상기 호스트 어플리케이션으로부터 상기 데이터를 전달받고, 상기 게스트 공유키로부터 세션키를 생성하며, 상기 세션키를 이용하여 상기 데이터를 암호화하여 암호문을 생성하는 단계; 및
    상기 암호문과 상기 호스트 공유키를 상기 게스트 운영체제에 전달하는 단계를 포함하고,
    상기 게스트 공유키를 생성하는 단계는,
    상기 스레드가 생성되는 경우, 상기 스레드에서 이용되도록 임의의 게스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 게스트 비밀키를 이용하여 상기 게스트 공유키를 생성하고,
    상기 호스트 공유키를 상기 게스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는 단계를 더 포함하는, 보안 통신 제어 방법.
  12. 삭제
  13. 삭제
  14. 제11항에 있어서, 상기 호스트 공유키를 생성하는 단계는,
    상기 스레드가 상기 호스트 운영체제에 전달되는 경우, 상기 스레드에서 이용되도록 임의의 호스트 비밀키를 설정하고, 사전에 마련되는 공개키와 상기 호스트 비밀키를 이용하여 상기 호스트 공유키를 생성하는, 보안 통신 제어 방법.
  15. 제14항에 있어서, 상기 암호문을 생성하는 단계는,
    상기 게스트 공유키를 상기 호스트 비밀키로 제곱하고, 상기 제곱 연산에 의해 산출되는 값으로부터 사전에 마련되는 제 2 공개키를 이용한 모듈러 연산을 수행하여 상기 세션키를 생성하는, 보안 통신 제어 방법.

KR1020200100730A 2020-08-11 2020-08-11 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법 KR102392626B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200100730A KR102392626B1 (ko) 2020-08-11 2020-08-11 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법
US18/020,414 US20240037281A1 (en) 2020-08-11 2020-11-27 Secure communication control system and method used in virtualized operating system environment
PCT/KR2020/017020 WO2022034979A1 (ko) 2020-08-11 2020-11-27 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200100730A KR102392626B1 (ko) 2020-08-11 2020-08-11 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법

Publications (3)

Publication Number Publication Date
KR20220020138A KR20220020138A (ko) 2022-02-18
KR102392626B1 true KR102392626B1 (ko) 2022-04-29
KR102392626B9 KR102392626B9 (ko) 2023-07-05

Family

ID=80247050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200100730A KR102392626B1 (ko) 2020-08-11 2020-08-11 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법

Country Status (3)

Country Link
US (1) US20240037281A1 (ko)
KR (1) KR102392626B1 (ko)
WO (1) WO2022034979A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007140487A2 (en) * 2006-06-01 2007-12-06 Verifides Technology Corp. Data access control systems and methods
KR20070061892A (ko) * 2007-04-23 2007-06-14 가부시끼가이샤 싱크 플러스 데이터 통신 방법
JP5564453B2 (ja) * 2011-02-25 2014-07-30 株式会社エヌ・ティ・ティ・データ 情報処理システム、及び情報処理方法
US20170339152A1 (en) * 2016-05-20 2017-11-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Computing device configuration change management via guest keys
US11200300B2 (en) * 2018-06-20 2021-12-14 Microsoft Technology Licensing, Llc Secure sharing of license data in computing systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AMD, "Secure Encrypted Virtualization API Version 0.24"(2020.04.)*
Le Guan et al, "virtio-ct: A Secure Cryptographic Token Service in Hypervisors"(2014.09.)*

Also Published As

Publication number Publication date
WO2022034979A1 (ko) 2022-02-17
KR102392626B9 (ko) 2023-07-05
KR20220020138A (ko) 2022-02-18
US20240037281A1 (en) 2024-02-01

Similar Documents

Publication Publication Date Title
CN103069428B (zh) 不可信云基础设施中的安全虚拟机引导
US20190238323A1 (en) Key managers for distributed computing systems using key sharing techniques
US10262130B2 (en) System and method for providing cryptographic operation service in virtualization environment
JP6414863B2 (ja) 仮想化システムにおける暗号復号方法および装置、およびシステム
US10841089B2 (en) Key managers for distributed computing systems
US9690947B2 (en) Processing a guest event in a hypervisor-controlled system
US20100153749A1 (en) Device-access control program, device-access control process, and information processing apparatus for controlling access to device
WO2019212581A1 (en) Secure collaboration between processors and processing accelerators in enclaves
US11949775B2 (en) Network bound encryption for recovery of trusted execution environments
KR20160097892A (ko) 가상화 기반의 보안 서비스 제공 장치 및 제공 방법
CN102609643A (zh) 一种对虚拟机作动态密码学保护与所需的密钥管理方法
JP2018511956A (ja) セキュアエンクレーブを用いてデータ暗号化を強化するための技術
CN108155988A (zh) 一种保护密钥的迁移方法、装置、设备及可读存储介质
US20230319023A1 (en) Network bound encryption for orchestrating workloads with sensitive data
CN114238185A (zh) 直接存储访问及命令数据传输方法、装置及相关设备
US8806226B2 (en) Automatic virtualization medium, automatic virtualization method, and information processing apparatus
KR102392626B1 (ko) 가상화 운영체제 환경에서 이용되는 보안 통신 제어 시스템 및 방법
JP2018042233A (ja) 統合された記憶媒体のための保存データ(dar)暗号化
WO2020144758A1 (ja) 秘密計算装置及びクライアント装置
Chu et al. Secure cryptography infrastructures in the cloud
US20240126930A1 (en) Secure Collaboration Between Processors And Processing Accelerators In Enclaves
CN117149354A (zh) 虚拟机迁移方法及其装置、系统、计算机设备、存储介质
CN116841691A (zh) 加密硬件的配置方法、数据机密计算方法及相关设备
CN116502214A (zh) 基于可信执行环境的虚拟安全外设管控方法、系统及介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
G170 Re-publication after modification of scope of protection [patent]