KR20130093804A - Apparatus and method for secure and consistent runtime based confidential execution of application services - Google Patents

Apparatus and method for secure and consistent runtime based confidential execution of application services Download PDF

Info

Publication number
KR20130093804A
KR20130093804A KR1020120001957A KR20120001957A KR20130093804A KR 20130093804 A KR20130093804 A KR 20130093804A KR 1020120001957 A KR1020120001957 A KR 1020120001957A KR 20120001957 A KR20120001957 A KR 20120001957A KR 20130093804 A KR20130093804 A KR 20130093804A
Authority
KR
South Korea
Prior art keywords
service
application
virtualization
application service
security
Prior art date
Application number
KR1020120001957A
Other languages
Korean (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 KR1020120001957A priority Critical patent/KR20130093804A/en
Publication of KR20130093804A publication Critical patent/KR20130093804A/en

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • 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/451Execution arrangements for user interfaces
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

PURPOSE: A runtime providing apparatus and a method for application service sealing execution provide a security virtualization interface layer for application service data requiring security consumption, and thereby maximize security of application service execution or application service data consumption. CONSTITUTION: A security virtualization interface layer (310) has an application service received through a user space (300) use hardware resources (450) and kernel services (432) of the lower part of a kernel space (340). A container parser (410) separates a virtualization security code and an application service from a service container received from a service providing server (100). A security virtualization interface generator (412) uses the virtualization security code and service policy to produce security virtualization interface. A virtualization service injector (414) stacks the application service in a VM (Virtual Machine) (420) through the security virtualization interface layer according to a policy in the security virtualization interface. [Reference numerals] (AA) Start; (BB) End; (S500) Receive a service container; (S502) Classification by Information in the service container; (S504) Deliver a virtualization security code and relevant information to an SVIF generator; (S506) Deliver a service(service data) to a VS injector; (S508) Generate a virtual interface after requesting and receiving a service policy; (S510) Separate application for the service required?; (S512) Request and receive the application; (S514) Inject the application service(application) to a virtual machine using a security virtualization interface; (S516) Is the security virtualization interface using code verification abnormal?; (S518) Request the implement or consumption of the application service(application); (S520) Stop the application service(application)

Description

응용 서비스 기밀 실행을 위한 런타임 제공 장치 및 방법{Apparatus and Method for Secure and Consistent Runtime Based Confidential Execution of Application Services}Apparatus and Method for Secure and Consistent Runtime Based Confidential Execution of Application Services}

본 발명은 서비스 공급자에 의해서 사용자 기기로 전달되는 응용 서비스 또는 응용 서비스 데이터가 안전하고 일관된 실행 환경에서 수행 또는 소비될 수 있도록 보장하는 서비스 가상화, 가상화 인터페이스, 및 가상 머신 기술에 관한 것으로서, 보안 가상화 코드와 결합된 형태로 응용 서비스를 배포하고, 응용 서비스 프로세스 또는 응용 서비스 데이터를 소비하는 별도의 프로세스가 커널 서비스를 통해 내부 자원으로 접근 시 이의 신뢰된 접근을 보장하기 위해 가상 머신 상위에 별도의 보안 가상화 인터페이스 계층(Security Virtualization Interface Layer)을 제공하며, 단말의 운영체제 및 하드웨어 플랫폼에 무관하게 수신된 응용 서비스 또는 응용 서비스 데이터가 실행 또는 소비될 수 있도록 하는 가상 머신 기술을 포괄하는 런타임 제공 장치 및 방법에 관한 것이다.
The present invention relates to service virtualization, virtualization interface, and virtual machine technology to ensure that an application service or application service data delivered to a user device by a service provider can be performed or consumed in a secure and consistent execution environment. Separate secure virtualization on top of the virtual machine to deploy application services in conjunction with and to ensure that the application service processes or separate processes consuming application service data access to internal resources through kernel services. Apparatus and method for providing a runtime layer and including a virtual machine technology for allowing a received application service or application service data to be executed or consumed regardless of the operating system and hardware platform of the terminal. One will.

일반적으로 인터넷을 통한 응용 서비스는 그 실행의 주체, 즉 사용자가 해당 응용 서비스를 사용할 수 있는 적합한 권한을 가지고 있는지 유무를 판단하는 것에 초점을 맞추어 보호되어 왔다. 또한, 최근 응용 서비스를 수행할 수 있는 다양한 종류의 사용자 단말들이 폭발적으로 증가하면서, 종래의 응용 서비스 보안 기술은 응용 서비스 자체의 보호, 예컨대 암호화, 은닉 등을 위해 많은 기술개발 및 구현이 이뤄진 반면에, '단말 독립형 실행 일관성', '안전한 시스템 자원 접근', '응용 서비스의 기밀 실행 및 소비'와 같은 3가지 주요 문제에 있어서는 관련 연구 및 개발이 미비한 실정이며, 이와 같은 문제의 해결 없이는 궁극적으로 통합된 응용 서비스 이용 경험(Consolidated User Experience)을 사용자에게 제공할 수 없는 것이 현실이다.In general, application services over the Internet have been protected by focusing on determining the subject of execution, that is, whether a user has the proper authority to use the application service. In addition, with the explosion of various types of user terminals capable of performing application services in recent years, the conventional application service security technology has been developed and implemented a lot of technologies for the protection of the application service itself, such as encryption, concealment, etc. , The three main issues of 'terminal stand-alone execution consistency', 'secure system resource access', and 'confidential execution and consumption of application services' are inadequate research and development. The reality is that the Consolidated User Experience cannot be provided to the user.

한편, 단말의 운영체제 및 하드웨어 규격에 무관하게 응용 서비스 및 응용 서비스 데이터를 실행 또는 소비할 수 있도록 지원하기 위해서, 통상적으로 가상 머신에 의존한 응용 서비스 및 응용 서비스 데이터의 제공이 가능할 수 있으나, 프로세스의 실행 정보가 사용자 모드의 다른 프로세스, 예컨대 악성코드, 바이러스, Bytecode 추출기, 역공학 툴 등에 노출되기 쉽다는 치명적인 문제점이 여전히 존재하고 있다.On the other hand, in order to support the execution or consumption of application services and application service data regardless of the operating system and hardware specifications of the terminal, it is possible to provide the application service and application service data depending on the virtual machine in general, There is still a fatal problem that execution information is easily exposed to other processes in user mode, such as malware, viruses, byte extractors, reverse engineering tools, and the like.

더불어, 안전한 시스템 자원 접근을 보장하기 위해, 종래의 서비스 및 데이터 보호기술은 특정 운영체제 또는 하드웨어 플랫폼에서만 동작할 수 있도록 고안되었다. 실제로, 단말 제조 시에 탑재된 보안관련 정보, 예컨대 단말의 비밀키 또는 인증서로의 접근을 어렵게 만들기 위해 독자적인 보안 소프트웨어를 하드웨어 플랫폼, 예컨대 커널 또는 하드웨어 칩, 수준으로 설치하여, 사용자 응용 프로그램이 해당 보안 기술과의 연동 시 서비스 공급사가 별도로 정의한 고유한 프로토콜만을 이용하여 응용 서비스를 실행시키는 등의 방법을 통해 실행의 기밀성을 보장하고 있다. 그러나, 실행코드 업데이트 및 런타임 API 후킹(Application Programming Interface Hooking) 등을 이용하여 악의적으로 고안된 프로세스가 관리자 또는 특권 모드로 동작하는 특정 응용 서비스만이 접근할 수 보안영역으로 침투할 수 있는 문제가 해결되고 있지 못하다. 또한, 이와 같은 응용 서비스 보호 방법은 응용 서비스 및 응용 서비스 데이터의 실행 및 소비 일관성을 저해하는 요소로 크게 작용한다. In addition, to ensure secure system resource access, conventional services and data protection technologies are designed to operate only on specific operating systems or hardware platforms. Indeed, in order to make it difficult to access the security-related information, such as the secret key or certificate of the terminal, which is loaded at the time of manufacture of the terminal, the user's application can install the security software at the level of a hardware platform such as a kernel or a hardware chip. When interworking with technology, the confidentiality of execution is guaranteed by executing application services using only unique protocols defined by service providers. However, using the execution code update and runtime API application hooking (Application Programming Interface Hooking), the problem that the malicious design process can penetrate into the security domain can only be accessed by a specific application service operating in the administrator or privileged mode. There is no. In addition, such an application service protection method greatly acts as a deterrent to the consistency of execution and consumption of application services and application service data.

일반적으로, 운영체제는 운영체제의 관리 및 제어 하에 실행되는 응용 프로그램의 주요 기밀 데이터가 다른 응용 프로그램, 예컨대 해킹 프로그램, 악성 코드 등에 의해 접근될 수 없도록 하는 등과 같은 보안 기능을 제공해야 한다. 그러나, 최근 운영체제가 범용 PC 뿐만 아니라 다양한 기기(특수 목적)를 포괄해야 하고, 보다 많은 고도화된 기능들이 탑재됨에 따라 운영체제 내에서 해결할 수 있는 보안 문제 및 영역 또한 복잡화되고 있어, 충분한 보안성을 제공하기 어려워지고 있는 실정이다.In general, the operating system should provide security functions such as to prevent sensitive data of an application running under the management and control of the operating system from being accessed by other applications such as hacking programs, malicious code, and the like. However, as the operating system has to cover not only general purpose PCs but also various devices (special purpose), and as more advanced functions are loaded, security problems and areas that can be solved within the operating system are also complicated, providing sufficient security. The situation is getting harder.

그러므로, 응용 서비스 실행 또는 응용 서비스 데이터 소비에 적합한 사용자를 담보하는 종래의 기술을 뛰어넘어, '단말 독립형 실행 일관성', '안전한 시스템 자원 접근', '응용 서비스의 기밀 실행 및 소비'를 충족시킬 수 있는 신규 기술이 크게 요구된다.
Therefore, it is possible to meet 'terminal standalone execution consistency', 'secure system resource access', and 'secret execution and consumption of application services' beyond the conventional techniques for securing users suitable for application service execution or application service data consumption. There is a great demand for new technology.

대한민국 공개특허 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치(공개번호 2010-0066404)에는 제 3자의 콘텐츠를 처리하기 위해 제공되는 '프로세서 상에서 구현되는 보안 가상 머신 시스템, 방법 및 컴퓨터 프로그램 제품'에 관한 것으로서, 시각 프로세스(GPU: Graphics Processing Unit)를 갖는 보안 가상 머신을 이용하여, 비디오 디코더 하드웨어가 키 처리 및 스트림 파싱을 취급하기 위한 보안 실행 환경을 제공하여, CPU 내에서 또는 Bus를 통한 보호되지 않은 콘텐츠 및 키의 흐름을 보호하며, 콘텐츠 해독키를 생성하는 프로그램을 가상 머신으로 전달함으로써 제3의 피허가자가 GPU 상에서 허가된 콘텐츠에 대한 보안 컴플라이언트 디코더(secure compliant decoder)를 생성할 수 있는 기술에 대해 기재되어 있습니다.Method and apparatus for secure processing of confidential content in a virtual machine of a Korean Patent Application Processor (Publication No. 2010-0066404) include a secure virtual machine system, method and computer program implemented on a processor provided to process content of a third party. Product ', using a secure virtual machine with a graphics processing unit (GPU) to provide a secure execution environment for the video decoder hardware to handle key processing and stream parsing, thereby providing It protects the flow of unprotected content and keys through it, and delivers a program that generates a content decryption key to the virtual machine to create a secure compliant decoder for authorized content on the GPU. The technology is described.

상술한 바와 같은 요구에 맞춰 안출된 것으로서, 본 발명의 목적은 응용 서비스 또는 응용 서비스 데이터를 사용하는 프로세스가 인가된 방법에 의해서만 커널 서비스 또는 하드웨어 자원에 접근할 수 있도록 자원 접근을 제어하고, 사용자 단말의 규격에 무관하게 응용 서비스의 실행 또는 응용 서비스 데이터 소비의 일관성을 보장하며, 응용 서비스 및 응용 서비스 데이터의 실행 또는 소비의 기밀성을 지원할 수 있는 런타임 제공 장치 및 방법을 제공하는데 있다.In view of the above-described needs, an object of the present invention is to control resource access so that a process using an application service or application service data can access a kernel service or hardware resource only by an authorized method, and a user terminal. It is to provide a runtime providing apparatus and method that guarantees the consistency of the execution of application services or the consumption of application service data regardless of the specification, and can support the confidentiality of the execution or consumption of application services and application service data.

본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
The objects of the present invention are not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.

본 발명의 일 관점에 의하면, 본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치는 사용자 영역과 커널 영역을 연결시키며, 상기 사용자 영역을 통해 수신된응용 서비스가 상기 커널 영역 하부의 커널 서비스 및 하드웨어 자원을 이용하도록 하는 보안 가상화 인터페이스 계층과, 서비스 제공 서버로부터 가상화 보안 코드를 포함하는 서비스 컨테이너를 수신하면, 상기 서비스 컨테이너에서 가상화 보안 코드와 응용 서비스를 분리하는 컨테이너 파서와, 상기 용용 서비스와 관련된 서비스 정책을 정책 발급 서버에 요청하여 수신하며, 상기 가상화 보안 코드와 상기 서비스 정책을 이용하여 보안 가상화 인터페이스를 생성하는 보안 가상화 인터페이스 생성기와, 상기 보안 가상화 인터페이스에 기술된 규칙에 따라 상기 응용 서비스를 상기 보안 가상화 인터페이스 계층을 통해 가상 머신에 적재하는 가상화 서비스 인젝터를 구비하는 것을 특징으로 한다.According to an aspect of the present invention, the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention connects a user area and a kernel area, and an application service received through the user area has a kernel under the kernel area. A security virtualization interface layer for utilizing services and hardware resources, a container parser for separating virtualization security code and application services from the service container upon receiving a service container including a virtualization security code from a service providing server; A security virtualization interface generator for requesting and receiving a service policy related to a policy issuing server, and generating a security virtualization interface using the virtualization security code and the service policy, and the application server according to the rules described in the security virtualization interface; A scan through the secure virtual interface layer is characterized in that it comprises a virtualization service injectors for loading the virtual machine.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치는 상기 서비스 제공 서버로부터 상기 서비스 컨테이너를 수신하여 상기 컨테이너 파서에 제공하는 인플로우 이벤트 핸들러와, 상기 보안 가상화 인터페이스 생성기의 요청에 따라 상기 정책 발급 서버에 접속하여 서비스 정책을 수신하여 상기 보안 가상화 인터페이스 생성기에 제공하는 정책 검색 핸들러와, 상기 응용 서비스를 실행 또는 소비하기 위한 별도의 응용 프로그램이 요구될 경우 응용 프로그램 데이터베이스에서 검색을 수행하여 상기 별도의 응용 프로그램을 추출하는 응용 프로그램 검색 핸들러를 포함하는 것을 특징으로 한다.An apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention may include an inflow event handler for receiving the service container from the service providing server and providing the service container to the container parser, and at the request of the security virtualization interface generator. A policy search handler for accessing a policy issuing server, receiving a service policy, and providing the service policy to the secure virtualization interface generator, and performing a search in an application database when a separate application for executing or consuming the application service is required. And an application search handler for extracting a separate application.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 보안 가상화 인터페이스 생성기는, 상기 보안 가상화 코드를 이용하여 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 상기 보안 가상화 인터페이스 계층을 통해 상기 커널 영역의 커널 서비스 및 하드웨어 자원에 접속하는 인터페이스 규칙을 추출하며, 상기 서비스 정책으로부터 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 접속을 제어하는 제약 규칙을 추출한 후 상기 추출된 인터페이스 규칙 및 상기 제약 규칙을 이용하여 상기 보안 가상화 인터페이스를 생성하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present disclosure, the secure virtualization interface generator may include the application service or a specific application consuming the same using the secure virtualization code through the secure virtualization interface layer. Extracts an interface rule for accessing a kernel service and a hardware resource in a kernel region, extracts a constraint rule for controlling access of the application service or a specific application program consuming the same from the service policy, and then extracts the extracted interface rule and the constraint rule It is characterized in that for generating the secure virtualization interface.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 가상화 서비스 인젝터는, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 운영체제 또는 하드웨어 규격이 지원하는 네이티브 프로그래밍 언어 (Native Programming Language) 또는 규격으로 제작된 경우, 상기 보안 가상화 인터페이스 계층을 통해 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 상기 커널 서비스로 전달하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the virtualization service injector may be configured as a native programming language supported by an operating system or a hardware standard by the application service or a specific application program consuming the same. In the case of the specification, the application service or the specific application program consuming the same may be delivered to the kernel service through the security virtualization interface layer.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 가상 머신은, 상기 보안 가상화 인터페이스 계층을 통해 수신되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 해석에 필요한 라이브러리가 저장되어 있는 코어 라이브러리(Core Library)와, 상기 보안 가상화 인터페이스 계층을 통해 수신되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 상기 코어 라이브러리를 기반으로 해석하는 가상화 서비스 해석기를 포함하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the virtual machine may include a library for interpreting the application service received through the security virtualization interface layer or a specific application program consuming the same. And a virtual library and a virtualization service interpreter for interpreting the application service received through the security virtualization interface layer or a specific application program consuming the same based on the core library.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 가상화 서비스 인젝터는, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 운영체제 또는 하드웨어 규격이 지원하는 네이티브 프로그래밍 언어 (Native Programming Language) 또는 규격으로 제작되지 않은 경우, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 바이트코드 형태로 변환한 후 이를 상기 가상화 서비스 해석기로 전달하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the virtualization service injector may be configured as a native programming language supported by an operating system or a hardware standard by the application service or a specific application program consuming the same. If not produced in the standard, it is characterized in that the application service or a specific application program consuming it is converted to a bytecode form and then delivered to the virtualization service interpreter.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 가상화 서비스 해석기는, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 실행 시 상기 커널 서비스 또는 하드웨어 자원 접근이 필요한 경우 상기 네이티브 시스템 콜을 생성하여 상기 커널 영역에 전달하는 것을 특징으로 한다.In the apparatus for providing a runtime for secretly executing an application service according to an embodiment of the present invention, the virtualization service interpreter may call the native system call when the kernel service or hardware resource access is required when executing the application service or a specific application program consuming the application service. It generates and delivers to the kernel region.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 커널 영역은, 상기 가상화 서비스 해석기로부터 전달받은 네이티브 시스템 콜의 적합성여부를 검사하여 신뢰된 접근인지를 판단하며, 상기 판단 결과에 따라 상기 네이티브 시스템 콜의 상기 커널 서비스 또는 하드웨어 자원 접근을 허용하거나 차단하는 가상화 서비스 모니터를 포함하는 것을 특징으로 한다.In the runtime providing apparatus for executing the application service confidentiality according to an embodiment of the present invention, the kernel region determines whether the access is a trusted access by checking the suitability of the native system call received from the virtualization service interpreter. And a virtualization service monitor for allowing or blocking access to the kernel service or hardware resource of the native system call.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 커널 영역은, 상기 보안 가상화 인터페이스 생성기에 의해 생성된 상기 응용 서비스에 대한 보안 가상화 인터페이스를 저장하기 위한 캐시된 번역 저장소를 더 포함하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the kernel region further includes a cached translation store for storing a security virtualization interface for the application service generated by the security virtualization interface generator. Characterized in that.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 커널 영역은, 상기 보안 가상화 인터페이스 계층을 통해 수신되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 상기 보안 가상화 인터페이스 생성기에 의해 생성된 보안 가상화 인터페이스에 따라 권한이 주어진 특정 커널 서비스 또는 하드웨어 자원으로만 네이티브 시스템 콜을 발생시키는지를 모니터링하는 가상화 서비스 모니터를 더 포함하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the kernel region may be generated by the secure virtualization interface generator by the secure service application or the specific application program consuming the same. And a virtualization service monitor for monitoring whether to generate a native system call only to a specific kernel service or hardware resource authorized according to the secured virtualization interface.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치에서 상기 커널 영역은, 특정 응용 서비스 또는 응용 프로그램의 보안 가상화 인터페이스를 저장하는 캐시된 번역 저장소와, 상기 캐시된 번역 저장소에 저장된 보안 가상화 인터페이스를 기반으로 상기 응용 서비스 또는 이를 소비하기 위한 응용 프로그램의 커널 서비스 또는 하드웨어 자원 접근을 제어하는 가상화 서비스 모니터를 포함하는 것을 특징으로 한다.In the apparatus for providing a runtime for confidentially executing an application service according to an embodiment of the present invention, the kernel region may include a cached translation store that stores a secure virtualization interface of a specific application service or application, and secure virtualization stored in the cached translation store. And a virtualization service monitor for controlling access to a kernel service or a hardware resource of the application service or an application program for consuming the application based on an interface.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 장치는 상기 응용 서비스 또는 이를 소비하기 위한 응용 프로그램의 실행 결과가 하드웨어 자원을 통해 출력되도록 처리하는 아웃플로우 이벤트 핸들러를 더 포함하는 것을 특징으로 한다.The apparatus for providing a runtime for confidentially executing an application service according to an exemplary embodiment of the present invention may further include an outflow event handler that processes an execution result of the application service or an application program for consuming the same to be output through a hardware resource. do.

본 발명의 다른 관점에 따르면, 본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법은 외부의 서비스 제공 서버로부터 가상화 보안 코드를 포함하는 서비스 컨테이너를 수신하는 단계와, 상기 서비스 컨테이너에서 가상화 보안 코드와 응용 서비스를 분리하는 단계와, 상기 용용 서비스와 관련된 서비스 정책을 정책 발급 서버에 요청하여 수신하는 단계와, 상기 가상화 보안 코드와 상기 서비스 정책을 기반으로 보안 가상화 인터페이스를 생성하는 단계와, 상기 보안 가상화 인터페이스에 기술된 규칙에 따라 상기 응용 서비스를 보안 가상화 인터페이스 계층을 통해 가상 머신에 적재하는 단계를 포함할 수 있다.According to another aspect of the present invention, a method of providing a runtime for confidentiality of an application service according to an embodiment of the present invention comprises the steps of: receiving a service container including a virtualization security code from an external service providing server; Separating a security code from an application service, requesting and receiving a service policy related to the service, from a policy issuing server, generating a security virtualization interface based on the virtualization security code and the service policy; And loading the application service into the virtual machine through the security virtualization interface layer according to the rules described in the security virtualization interface.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법은 상기 생성된 보안 가상화 인터페이스를 통해서 해당 응용 서비스가 별도의 응용 프로그램이 필요한지를 판단하는 단계와, 상기 판단 결과, 상기 별도의 응용 프로그램이 필요한 경우 상기 별도의 응용 프로그램을 응용 프로그램 데이터베이스에서 검색하여 획득하는 단계를 더 포함하며, 상기 적재하는 단계는, 상기 획득한 응용 프로그램 또는 응용 서비스를 상기 가상 머신에 적재하는 것을 특징으로 한다.In accordance with another aspect of the present invention, there is provided a method of providing a runtime for confidentiality of an application service, including determining whether the application service requires a separate application program through the generated security virtualization interface, and as a result of the determination, the separate application program If necessary, the method may further include searching for and obtaining the separate application program from an application database, and the loading may include loading the obtained application program or application service on the virtual machine.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법에서 상기 보안 가상화 인터페이스를 생성하는 단계는, 상기 보안 가상화 코드를 이용하여 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그림이 상기 보안 가상화 인터페이스 계층을 통해 상기 커널 영역의 커널 서비스 및 하드웨어 자원에 접속하는 인터페이스 규칙을 추출하는 단계와, 상기 서비스 정책으로부터 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 접속을 제어하는 제약 규칙을 추출하는 단계와, 상기 추출된 인터페이스 규칙 및 상기 제약 규칙을 이용하여 상기 보안 가상화 인터페이스를 생성하는 단계를 포함하는 것을 특징으로 한다.The generating of the secure virtualization interface in the runtime providing method for executing the confidentiality of the application service according to an embodiment of the present invention may include the application service or a specific application program consuming the secure virtualization code using the secure virtualization code. Extracting an interface rule for accessing a kernel service and a hardware resource of the kernel region through a layer, extracting a constraint rule for controlling access of the application service or a specific application program consuming the same from the service policy; And generating the secure virtualization interface using the extracted interface rule and the constraint rule.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법에서 상기 적재하는 단계는, 상기 보안 가상화 인터페이스에 대한 코드 검증을 수행하여 보안 가상화 인터페이스의 이상 유무를 판단하는 단계와, 상기 보안 가상화 인터페이스에 이상이 없는 경우 상기 응용 서비스 또는이를 소비하는 응용 프로그램을 상기 가상 머신에 적재하는 단계와, 상기 보안 가상화 인터페이스에 이상이 있는 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램의 실행을 중단시키는 단계를 포함하는 것을 특징으로 한다.The loading in the runtime providing method for executing the confidentiality of the application service according to an embodiment of the present invention includes performing a code verification on the security virtualization interface to determine whether there is an abnormality of the security virtualization interface, and the security virtualization interface. Loading the application service or the application consuming the application into the virtual machine if there is no error, and stopping the execution of the application service or the application consuming the application if the security virtualization interface has an error. It is characterized by including.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법에서 상기 적재하는 단계는, 상기 응용 서비스 또는 이를 소비하는 응용 프로그램이 네이티브 프로그래밍 언어 또는 규격으로 작성되어 있는지를 판단하는 단계와, 상기 판단 결과, 네이티브 프로그래밍 언어 또는 규격으로 작성된 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램에 대한 네이티브 시스템 콜을 커널 영역에 전달하는 단계와, 상기 판단 결과, 네이티브 프로그래밍 언어 또는 규격으로 작성되지 않은 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램을 바이트코드 형태로 변환하여 상기 가상 머신을 통해 상기 커널 영역에 전달하는 단계를 포함한다.In the method of providing a runtime for confidentially executing an application service according to an embodiment of the present disclosure, the loading may include determining whether the application service or an application program consuming the same is written in a native programming language or standard, and determining the content. As a result, the step of delivering a native system call for the application service or the application that consumes it to a kernel region if it is written in a native programming language or standard, and if the result is not written in the native programming language or standard, the application service Or converting an application program consuming the same into a bytecode form and delivering the same to the kernel region through the virtual machine.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법에서 상기 가상 머신을 통해 상기 커널 영역에 응용 프로그램에 대한 네이티브 시스템 콜을 전달하는 단계는, 상기 바이트 코드 형태의 응용 서비스 또는 이를 소비하는 응용 프로그램을 기 저장된 코어 라이브러리를 기반으로 해석하는 단계와, 상기 응용 서비스 또는 이를 소비하는 응용 프로그램 실행 시 커널 서비스 또는 하드웨어 자원 접근이 필요한 경우 상기 커널 영역에 네이티브 시스템 콜을 요청하는 단계를 포함하는 것을 특징으로 한다.In the method of providing a runtime for confidentiality of an application service according to an embodiment of the present invention, the step of delivering a native system call for an application program to the kernel region through the virtual machine may include: Interpreting an application based on a pre-stored core library, and requesting a native system call to the kernel region when accessing a kernel service or a hardware resource is required when executing the application service or an application consuming the application. It features.

본 발명의 실시 예에 따른 응용 서비스 기밀 실행을 위한 런타임 제공 방법은 상기 네이티브 시스템 콜을 수신한 상기 커널 영역에서 상기 네이티브 시스템 콜의 적합성 검사를 통해 신뢰된 접근인지를 판단하는 단계와, 상기 신뢰된 접근인 경우에만 상기 네이티브 시스템 콜의 상기 커널 서비스 또는 하드웨어 자원 진입을 허용하는 단계를 포함하는 것을 특징으로 한다.
In accordance with another aspect of the present invention, there is provided a method of providing a runtime for confidentiality of an application service, including determining whether a trusted access is made through a suitability check of the native system call in the kernel region that receives the native system call, and the trusted Allowing access to the kernel service or hardware resource of the native system call only in the case of an access.

본 발명의 실시 예에 의하면, 기밀 실행이 요구되는 응용 서비스 또는 기밀 소비가 요구되는 응용 서비스 데이터를 위해 프로세스 및 데이터의 커널 모드로의 진입을 가능하게 하는 보안 가상화 인터페이스 계층을 제공함으로써, 응용 서비스 실행 또는 응용 서비스 데이터 소비의 기밀성을 극대화할 수 있다.According to an embodiment of the present invention, an application service execution is provided by providing a secure virtualization interface layer that allows a process and data to enter a kernel mode for application services requiring confidential execution or application service data requiring confidential consumption. Alternatively, the confidentiality of application service data consumption can be maximized.

또한, 본 발명은 가상화 서비스 모니터를 이용하여 응용 서비스의 실행 또는 응용 서비스 데이터의 소비를 가상화 보안 코드 및 서비스 정책에서 정의한 형태로 프로세스 실행 관점에서 제어함으로써, 무분별한 커널 서비스 또는 하드웨어 자원으로의 접근을 방지할 수 있을 뿐만 아니라 보다 안정화된 방법으로 프로세스의 자원 이용이 가능하다.In addition, the present invention by using the virtualization service monitor to control the execution of the application service or the consumption of application service data in the form of the process execution in the form defined in the virtualization security code and service policy, thereby preventing indiscriminate access to the kernel service or hardware resources Not only can we do this, but we can use the resources of the process in a more stable way.

본 발명은 가상 머신 위에 보안 가상화 인터페이스 계층을 정의하여 활용함으로써, 별도의 수정 없이 종래의 가상 머신을 이용할 수 있는 장점을 제공할 수 있다.The present invention may provide an advantage of using a conventional virtual machine without any modification by defining and utilizing a secure virtualization interface layer on the virtual machine.

결과적으로, 사업자는 제공되는 응용 서비스 또는 응용 서비스 데이터의 안전하고 일관된 사용에 대한 기술적 담보, 즉 보안 서비스 코드 생성 및 서비스 정책 생성 그리고 보안 가상 인터페이스 런타임 소프트웨어 제공할 수 있으며, 사용자 단말에서는 수신된 응용 서비스 또는 응용 서비스 데이터의 관련 프로세스가 보안 가상 코드 및 서비스 정책에서 정의한 내용에 따라 커널 서비스 및 하드웨어 자원에 신뢰적으로 접근할 수 있다.As a result, the operator can provide technical collateral for the secure and consistent use of the provided application services or application service data, that is, secure service code generation and service policy generation and secure virtual interface runtime software, and the received application services at the user terminal. Alternatively, the relevant process of application service data can reliably access kernel services and hardware resources as defined by secure virtual code and service policies.

또한, 사용자는 자바 가상 머신(Java Virtual Machine)과 같은 기존의 가상 머신을 이용하여, 단말의 운영체제 및 하드웨어 플랫폼에 독립적으로 응용 서비스 실행시키거나 응용 서비스를 데이터 소비할 수 있다.
In addition, a user may execute an application service or consume data of an application service independently of an operating system and a hardware platform of a terminal by using an existing virtual machine such as a Java virtual machine.

도 1은 본 발명의 실시 예에 따라 안전하고 일관된 런타임 환경 제공을 기반으로 응용 서비스 또는 응용 서비스 데이터가 서비스 컨테이너 형태로 배포되는 시스템 구조를 개념적으로 도시한 도면,
도 2는 본 발명의 실시 예에 적용되는 서비스 컨테이너 구조를 도시한 도면,
도 3은 커널 시스템 자원의 가상화 개념을 사용자 영역의 응용 서비스, 런타임 영역의 가상 머신 그리고 커널 영역의 시스템 자원간의 관계를 기반으로 설명하고, 런타임 관점에서 응용 서비스의 실행이 어떠한 구조로 이루어지는지를 설명하기 위한 개념도,
도 4는 본 발명의 실시 예에 따라 사용자 단말을 중심으로 응용 서비스 또는 응용 서비스 데이터의 안전하고 일관된 실행 및 소비를 지원하는 런타임 시스템 내부 구성을 도시한 블록도
도 5는 본 실시 예에 따라 응용 서비스가 보안 가상화 인터페이스 통해 가상 머신으로 인젝션되기 전까지의 과정을 도시한 흐름도,
도 6은 본 실시 예에 따라 보안 가상화 코드 및 정책으로부터 인터페이스 규칙 및 접근 제약 규칙을 각각 추출하여 보안 가상화 인터페이스를 생성하는 과정을 도시한 흐름도,
도 7은 본 실시 예에 따라 응용 서비스가 런타임 진입 이후 커널 서비스 또는 하드웨어 자원 요청 시 네이티브 시스템 콜에 대한 모니터링을 실시하는 과정을 도시한 흐름도이다.
1 is a conceptual diagram illustrating a system structure in which an application service or application service data is distributed in a service container form based on providing a secure and consistent runtime environment according to an embodiment of the present invention;
2 is a diagram illustrating a service container structure applied to an embodiment of the present invention;
FIG. 3 illustrates the concept of virtualization of kernel system resources based on the relationship between application services in the user domain, virtual machines in the runtime domain, and system resources in the kernel domain, and illustrates how the execution of the application service is constructed from a runtime perspective. Conceptual diagram,
4 is a block diagram illustrating an internal configuration of a runtime system supporting safe and consistent execution and consumption of an application service or application service data centering on a user terminal according to an exemplary embodiment of the present invention.
5 is a flowchart illustrating a process before an application service is injected into a virtual machine through a secure virtualization interface according to the present embodiment;
6 is a flowchart illustrating a process of generating a security virtualization interface by extracting an interface rule and an access restriction rule from a security virtualization code and a policy according to the present embodiment;
7 is a flowchart illustrating a process of performing an application service monitoring for a native system call when a kernel service or a hardware resource is requested after entry into a runtime according to the present embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of the invention to those skilled in the art. Is provided to fully convey the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout.

본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions in the embodiments of the present invention, which may vary depending on the intention of the user, the intention or the custom of the operator. Therefore, the definition should be based on the contents throughout this specification.

첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다. Each block of the accompanying block diagrams and combinations of steps of the flowchart may be performed by computer program instructions. These computer program instructions may be loaded into a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus so that the instructions, which may be executed by a processor of a computer or other programmable data processing apparatus, And means for performing the functions described in each step are created. These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, and thus the computer usable or computer readable memory. It is also possible for the instructions stored in to produce an article of manufacture containing instruction means for performing the functions described in each block or flowchart of each step of the block diagram. Computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operating steps may be performed on the computer or other programmable data processing equipment to create a computer-implemented process to create a computer or other programmable data. Instructions that perform processing equipment may also provide steps for performing the functions described in each block of the block diagram and in each step of the flowchart.

또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Also, each block or each step may represent a module, segment, or portion of code that includes one or more executable instructions for executing the specified logical function (s). It should also be noted that in some alternative embodiments, the functions mentioned in the blocks or steps may occur out of order. For example, the two blocks or steps shown in succession may in fact be executed substantially concurrently or the blocks or steps may sometimes be performed in the reverse order, depending on the functionality involved.

이하, 첨부된 도면을 참조하여 응용 서비스 또는 응용 서비스 데이터를 사용하는 프로세스가 인가된 방법에 의해서만 커널 서비스 또는 하드웨어 자원에 접근할 수 있도록 자원 접근을 제어하고, 사용자 단말의 규격, 예컨대 운영체제 또는 하드웨어 플랫폼에 무관하게 응용 서비스의 실행 또는 응용 서비스 데이터 소비의 일관성을 보장하며, 응용 서비스 및 응용 서비스 데이터의 실행 및 소비의 기밀성을 지원하기 위한 방법 및 장치에 대해 설명한다.Hereinafter, referring to the accompanying drawings, a resource access control is performed such that a process using an application service or application service data can access a kernel service or a hardware resource only by an authorized method, and specifications of a user terminal, such as an operating system or a hardware platform. It describes a method and apparatus for ensuring the consistency of execution of application services or consumption of application service data, and to support the confidentiality of application services and application service data.

본 발명의 실시 예의 설명에 앞서, 응용 서비스 도는 응용 서비스 데이터가 배포되는 시스템 구조에 대해 도 1을 참조하여 설명한다.Prior to the description of an embodiment of the present invention, a system structure in which an application service or application service data is distributed will be described with reference to FIG. 1.

도 1은 본 발명의 실시 예에 따라 안전하고 일관된 런타임 환경 제공을 기반으로 응용 서비스 또는 응용 서비스 데이터가 서비스 컨테이너 형태로 배포되는 시스템 구조를 개념적으로 도시한 도면으로서, 서비스 제공 서버(100), 서비스 컨테이너(110), IP 네트워크(120), 사용자 단말(130) 및 정책 발급 서버(140) 등을 포함할 수 있다.1 is a diagram conceptually illustrating a system structure in which an application service or application service data is distributed in the form of a service container based on providing a secure and consistent runtime environment according to an embodiment of the present invention. The container 110, the IP network 120, the user terminal 130, and the policy issuing server 140 may be included.

서비스 제공 서버(100)는 신뢰할 수 있는 서비스 공급자가 운용하는 서버로서, 서비스 컨테이너(110)의 각 요소들을 생성, 합성 및 배포하는 등의 기능을 수행할 수 있다.The service providing server 100 is a server operated by a reliable service provider, and may perform functions such as creating, synthesizing, and distributing elements of the service container 110.

서비스 컨테이너(110)는 응용 서비스 또는 응용 서비스 데이터를 서비스 제공 서버(100)가 사용자 단말(130)에게 배포하기 위한 규격을 의미하는데, 특히 사용자 단말(130)에서 응용 서비스 또는 응용 서비스 데이터가 안전하고 일관되며, 기밀된 실행 또는 소비가 가능하도록 지원하는 응용 서비스 배포 구조체를 의미한다. 이러한 서비스 컨테이너(110)의 구체적인 포맷은, 도 2에 도시된 바와 같이, 보안 가상화 코드(SV Code: Security Virtualization Code, 150), 응용 서비스(또는 응용 서비스 데이터)(Service 또는 Service Data, 152), 메타 데이터(Metadata, 154) 및 확장 필드(Extension Fields, 156) 등을 포함할 수 있다.The service container 110 refers to a standard for distributing an application service or application service data to the user terminal 130 by the service providing server 100. In particular, the application container or application service data may be secured in the user terminal 130. An application service distribution structure that supports consistent, confidential execution or consumption. As shown in FIG. 2, the specific format of the service container 110 may include a security virtualization code (SV Code) 150, an application service (or application service data) (Service or Service Data) 152, Meta data 154 and extension fields 156 may be included.

보안 가상화 코드(150)는 응용 서비스 또는 응용 서비스 데이터가 '안전한 커널 자원 접근, 일관된 실행 환경 보장, 기밀 실행 지원'의 세 가지 관점에서 실행 또는 소비될 수 있도록 하기 위해 가상화 서비스 인젝터가 보안 가상화 인터페이스 계층을 통해 가상화 서비스를 런타임 또는 커널 영역으로 인젝션할 때 연동 지침을 규정하고 있는 코드를 의미한다. 특히, 본 발명의 실시 예에서는 보안 가상화 인터페이스 계층을 통해 어떻게 가상화 서비스 인젝터가 응용 서비스의 프로세스 인스턴스 또는 응용 서비스 데이터를 이용하는 응용 프로그램의 프로세스 인스턴스를 가상 머신에 적재할 것인가에 대한 규격을 담고 있는 코드를 보안 가상화 코드(150)라고 정의한다. The secure virtualization code 150 allows the virtualization service injector to implement a secure virtualization interface layer to enable the application service or application service data to be executed or consumed from three perspectives: 'secure kernel resource access, consistent execution environment assurance, and confidential execution support'. This refers to the code that defines the interworking guidelines when injecting virtualization services into runtime or kernel areas. In particular, in the embodiment of the present invention through the secure virtualization interface layer, a code containing a specification on how the virtualization service injector loads the process instance of the application service or the process instance of the application using the application service data to the virtual machine. The security virtualization code 150 is defined.

응용 서비스(152)는 응용프로그램, 프로그램 코드, 비디오, 음악파일, 텍스트파일, 이미지 등을 모두 포괄하는 개념으로 사용되는데, 특히, 보안 가상화 코드(150) 및 응용 서비스 (152)는 신뢰할 수 있는 서비스 제공 서버(100)에 의해 생성, 합성 및 발급된 것으로서, 기 설정된 암호학적 방법, 예컨대 Code Signing, Message Authentication 등으로 상호 결합된 것으로 가정한다.Application service 152 is used as a concept encompassing all applications, program code, video, music files, text files, images, etc. In particular, the secure virtualization code 150 and the application service 152 is a trusted service As generated, synthesized, and issued by the provisioning server 100, it is assumed that they are mutually coupled by a predetermined cryptographic method such as code signing, message authentication, and the like.

메타 데이터(154)는 응용 서비스(152) 또는 응용 서비스 데이터와 관련한 부가적인 정보를 저장하는 필드(Field)로서, 서비스 공급자(100)의 응용 서비스 생성 및 배포 규칙에 따라 자유롭게 구성될 수 있다.The metadata 154 is a field for storing additional information related to the application service 152 or the application service data, and may be freely configured according to the application service creation and distribution rule of the service provider 100.

확장 필드(156)는 언급한 메타 데이터(154) 필드 이외, 서비스 공급자(100)의 필요에 따라 추가적으로 이용할 수 있는 필드를 의미한다.The extended field 156 refers to a field that can be additionally used as required by the service provider 100 in addition to the aforementioned metadata 154 field.

IP 네트워크(120)는 인터넷과 같은 TCP/IP 기반의 유무선 통신망을 의미하며, 각 개체간의 통신 경로 및 방법을 제공할 수 있다.The IP network 120 refers to a wired / wireless communication network based on TCP / IP such as the Internet, and may provide a communication path and method between each entity.

사용자 단말(130)은 서비스 가상화 소프트웨어(SVS: Service Virtualization Software)가 내장되어 있으며, 서비스 컨테이너 형태로 제공되지 않는 응용 서비스 및 응용 서비스 데이터를 일반적인 방법에 준하여 처리하거나 서비스 컨테이너(110)를 본 발명의 실시 예에 따라 처리할 수 있다.The user terminal 130 includes service virtualization software (SVS), and processes application services and application service data which are not provided in the form of a service container according to a general method, or processes the service container 110 according to the present invention. It can be processed according to the embodiment.

또한, 사용자 단말(130)은 커널 시스템을 이용하여 런타임 관점에서 응용 서비스를 실행할 수 있는데, 이에 대해 도 3을 참조하여 설명한다.In addition, the user terminal 130 may execute an application service from a runtime perspective using a kernel system, which will be described with reference to FIG. 3.

도 3은 커널 시스템 자원의 가상화 개념을 사용자 영역의 응용 서비스, 런타임 영역의 가상 머신 그리고 커널 영역의 시스템 자원간의 관계를 기반으로 설명하고, 런타임 관점에서 응용 서비스의 실행이 어떠한 구조로 이루어지는지를 설명하기 위한 개념도이다.FIG. 3 illustrates the concept of virtualization of kernel system resources based on the relationship between application services in the user domain, virtual machines in the runtime domain, and system resources in the kernel domain, and illustrates how the execution of the application service is constructed from a runtime perspective. Conceptual diagram.

도 3에 도시된 바와 같이, 런타임 기반 응용 서비스 프로세스의 인스턴스 실행 개념도는 사용자 영역(User Space, 300), 보안 가상화 인터페이스 계층(310), 서비스 가상화 소프트웨어(320), 가상화 서비스 모니터(330), 커널 영역(340) 등의 구조를 포함할 수 있다.As shown in FIG. 3, the conceptual diagram of instance execution of a runtime based application service process includes a user space 300, a security virtualization interface layer 310, a service virtualization software 320, a virtualization service monitor 330, and a kernel. It may include a structure such as the region 340.

사용자 영역(300)은 응용 서비스 또는 응용 서비스 데이터, 그 외 이를 수행하거나 소비하는데 필요한 기타 정보들이 프로세서 및 메모리 영역으로 적재되기 전에 위치하는 논리 영역을 의미한다. 따라서, 사용자 영역(300)은 서비스(302), 서비스 데이터(302) 및 응용 프로그램(Application Program, 304) 등을 포함할 수 있다.The user area 300 refers to a logical area in which an application service or application service data and other information necessary to perform or consume it are placed before being loaded into the processor and memory areas. Accordingly, the user area 300 may include a service 302, service data 302, an application program 304, and the like.

서비스(302)는 통상의 컴퓨팅 장치를 이용하여 실행하거나 소비할 수 있는 모든 유형의 단일 소프트웨어, 프로그램 코드, 데이터 또는 이들의 조합으로 이뤄진 논리 프로세스 등을 통칭하는 것으로 가정한다. 또한, 설명의 편의를 돕고자 크게 응용 서비스와 응용 서비스 데이터로 나누어 전자는 실행의 대상으로, 후자는 소비의 대상으로 후술한다.It is assumed that service 302 collectively refers to any type of single software, program code, data, or a logical process consisting of a combination thereof that can be executed or consumed using a conventional computing device. In addition, for convenience of explanation, the former is divided into application services and application service data, and the former is described later as an object of execution and the latter is described below as an object of consumption.

서비스 데이터(304)는 실행 대상인 서비스(302)와 구분하기 위한 목적으로 소비의 대상이 되는 응용 서비스를 의미한다.The service data 304 refers to an application service to be consumed for the purpose of distinguishing it from the service 302 to be executed.

응용 프로그램(304)은 응용 서비스 데이터(304)의 소비를 돕는 수단으로 이용될 수 있다.The application program 304 may be used as a means of helping the consumption of application service data 304.

보안 가상화 인터페이스 계층(SVIF Layer: Security Virtualization Interface Layer, 310)은 응용 서비스(302) 및 응용 서비스 데이터(304)의 실행을 돕는 응용 프로그램(306)의 가상화된 실행을 위한 인터페이스 계층이다. 이러한 보안 가상화 인터페이스 계층(310)으로의 접근을 위해서는 서비스 컨테이너(150) 내의 보안 가상화 코드를 추출하고 서비스 정책으로부터 보안 가상화 인터페이스를 획득하는 절차가 선행되어야 하며, 이러한 보안 가상화 인터페이스 계층(310)은 자원접근 추상화 및 접근 코드 검증을 통해 응용 서비스(302) 및 응용 서비스 데이터(304)에게 런타임 기밀성을 제공할 수 있다.The Security Virtualization Interface Layer (SVIF Layer) 310 is an interface layer for the virtualized execution of the application 306 that facilitates the execution of the application service 302 and the application service data 304. In order to access the secure virtualization interface layer 310, a procedure of extracting the secure virtualization code in the service container 150 and obtaining the secure virtualization interface from the service policy must be preceded, and the secure virtualization interface layer 310 is a resource. Access abstraction and access code validation may provide runtime confidentiality for the application service 302 and the application service data 304.

서비스 가상화 소프트웨어(Runtime, Service Virtualization Software, 320)은 응용 서비스 (302) 또는 응용 서비스 데이터(304)의 실행을 돕는 응용 프로그램(306)을 프로세서 및 메모리상에 적재하여 실행하는 기능을 수행하는 런타임 영역을 의미하며, 사용자 영역(User Space, 300)과 커널 영역(Kernel Space, 340)과의 브릿지(Bridge) 역할을 수행할 수 있다.The service virtualization software 320 includes a runtime area that loads and executes an application 306 for executing an application service 302 or application service data 304 on a processor and a memory. It may serve as a bridge between the user space 300 and the kernel space 340.

이러한 서비스 가상화 소프트웨어(320)는 프로세서(322), 가상 머신 프로세스(324), 서비스 인스턴스(326) 등으로 구성될 수 있다.The service virtualization software 320 may be comprised of a processor 322, a virtual machine process 324, a service instance 326, and the like.

프로세스(322)는 통상적인 컴퓨팅 장치에서 사용되는 범용 목적의 프로세서, 예컨대 CPU(Central Processing Unit) 및 보안 목적으로 제작된 특수 목적의 프로세서, 예컨대 MCU(Micro Control Unit), SC(Security Chip) 등을 포함할 수 있다.Process 322 includes general purpose processors used in conventional computing devices, such as central processing units (CPUs) and special purpose processors designed for security purposes, such as microcontrol units (MCUs), security chips (SCs), and the like. It may include.

가상 머신 프로세스(VM Process, 324)는 프로세스(322)에 적재되며, 복수개의 가상 머신 프로세스(324)가 프로세스(322)에 독립적으로 적재될 수 있다. The virtual machine process (VM Process) 324 is loaded into the process 322, and a plurality of virtual machine processes 324 may be loaded independently of the process 322.

또한, 가상 머신 프로세스(324)는 응용 서비스(302) 및 응용 서비스 데이터(304)가 사용자 단말(130)의 운영체제 또는 하드웨어 규격에 무관하게 실행 및 소비될 수 있도록 런타임 일관성을 제공할 수 있다.In addition, the virtual machine process 324 may provide runtime consistency such that the application service 302 and the application service data 304 may be executed and consumed regardless of the operating system or hardware specifications of the user terminal 130.

서비스 인스턴스(SI: Service Instance, 326)는 응용 서비스(302) 및 응용 서비스 데이터(304)를 처리하는 별도의 응용 프로그램(306)이 가상 머신 프로세스(324)의 내부 인스턴스(Instance)로 적재되어 구동될 때의 논리적인 형태를 의미한다.The service instance SI (SI) is a separate application 306 for processing the application service 302 and the application service data 304 is loaded into the internal instance of the virtual machine process 324 to run It means the logical form when it becomes.

가상화 서비스 모니터(VS Monitor: Virtual Service Monitor, 330)는 가상 머신 프로세스(324)에 적재되어 실행되는 서비스 인스턴스(326)가 커널 영역(340)의 자원 요청 시 이의 접근 권한 적합성을 검사함으로써, 런타임 보안성을 제공한다.The Virtual Service Monitor (VS Monitor) 330 is a service instance 326 loaded and executed in the virtual machine process 324 to check the suitability of access rights when the resource request of the kernel area 340, the runtime security Provide a surname.

커널 영역(Kernel Space, 340)은 운영체제에서 공통적으로 제공하는 시스템 라이브러리 (System Libraries)들이 존재하는 영역을 의미한다. Kernel space (Kernel Space, 340) refers to the area where the system libraries (System Libraries) commonly provided by the operating system.

가상화된 리소스(Virtualized Resources, 342)는 커널 영역(340)에 존재하는 시스템 라이브러리 형태로 이뤄진 커널 자원을 의미할 수 있다. 커널 자원의 예로는 파일 입출력, 네트워크 입출력, 메모리 관리, 프로세스 관리 등을 수행하는 서비스들을 들 수 있다.The virtualized resources 342 may refer to kernel resources formed in the form of a system library existing in the kernel region 340. Examples of kernel resources include services that perform file I / O, network I / O, memory management, and process management.

또한, 본 발명의 실시 예에서는 보안 가상화 인터페이스 계층(310), 가상 머신 프로세스(324) 기반의 서비스 가상화 소프트웨어(320) 및 가상화 서비스 모니터(330)를 통해 커널 하부의 자원들이 추상화되기 때문에, 커널 자원들을 특히 가상화 자원으로 정의할 수 있다.In addition, in the embodiment of the present invention, since resources under the kernel are abstracted through the secure virtualization interface layer 310, the virtual machine process 324 based service virtualization software 320, and the virtualization service monitor 330, the kernel resource is abstracted. Can be defined as virtualization resources.

상기와 같은 런타임 시스템의 내부 구성에 대해 도 4를 참조하여 설명한다. An internal configuration of such a runtime system will be described with reference to FIG. 4.

도 4는 본 발명의 실시 예에 따라 사용자 단말을 중심으로 응용 서비스 또는 응용 서비스 데이터의 안전하고 일관된 실행 및 소비를 지원하는 런타임 시스템 내부 구성을 도시한 블록도로서, 인플로우 이벤트 핸들러(400), 컨테이너 파서(410), SVIF 생성기(412) 및 VS 인젝터(414)를 포함하는 사용자 영역(300), 사용자 영역과 런타임 영역을 연계 시켜주는 보안 가상화 인터페이스 계층(310), VS 해석기(422) 및 코어 라이브러리(424)를 포함하는 서비스 가상화 소프트웨어(320), 가상화 서비스 모니터(330), 캐시된 번역 저장소(430) 및 커널 서비스(432)를 포함하는 커널 영역(340), 운영체제(440), 하드웨어 자원(450) 및 아웃플로우 이벤트 핸들러(460) 등으로 구성될 수 있다.4 is a block diagram illustrating an internal configuration of a runtime system supporting secure and consistent execution and consumption of an application service or application service data centering on a user terminal according to an embodiment of the present invention. User realm 300 including container parser 410, SVIF generator 412 and VS injector 414, secure virtualization interface layer 310, VS interpreter 422 and core that associate user real and runtime realms Service area 340, operating system 440, hardware resources including service virtualization software 320, library 424, virtualization service monitor 330, cached translation store 430, and kernel services 432. 450 and the outflow event handler 460.

도 4에 도시된 바와 같이, 인플로우 이벤트 핸들러(Inflow Event Handler, 400)는 IP네트워크(120)을 통해 유입된 응용 서비스 또는 응용 서비스 데이터를 감지하고 이를 컨테이너 파서(410)에 알리고, 수신된 응용 서비스 또는 응용 서비스 데이터를 전달하는 기능을 수행할 수 있다.As shown in FIG. 4, the inflow event handler 400 detects an application service or application service data introduced through the IP network 120 and informs the container parser 410 of the received application service. It can perform the function of delivering service or application service data.

정책 검색 핸들러(Policy Retrieval Handler, 402)는 SVIF 생성기(412)가 정책 명세서를 요청하면, IP 네트워크(120)을 통해 정책 발급 서버(140)에 접속하여, 정책 명세서(서비스 정책)를 검색하고 이를 수신하는 역할을 수행할 수 있다.When the Policy Retrieval Handler 402 requests the policy specification, the Policy Retrieval Handler 402 accesses the policy issuing server 140 through the IP network 120 to retrieve the policy statement (service policy). It can play the role of receiving.

응용 프로그램 데이터베이스(Application Database, 404)는 응용 프로그램들을 관리하는 저장소 역할을 수행하며, 도 4에 도시한 바와 같이 사용자 단말(130) 외부의 개체로서 동작하거나, 또는 사용자 단말(130) 내부의 저장소로 기능할 수 있다.The application database 404 serves as a storage for managing applications and operates as an entity outside the user terminal 130 as shown in FIG. 4, or as a storage inside the user terminal 130. Can function.

응용 프로그램 검색 핸들러(Application Retrieval Handler, 406)는 수신한 응용 서비스 또는 응용 서비스 데이터를 실행 또는 소비하기 위해 별도의 응응 프로그램이 요구될 경우 응용 프로그램 데이터베이스(404)의 검색을 통해 이에 적절한 응용 프로그램을 검색하여 VS 인젝터(414)에 제공할 수 있다.The Application Retrieval Handler (406) retrieves the appropriate application by searching the application database (404) when a separate application is required to execute or consume the received application service or application service data. To the VS injector 414.

아웃플로우 이벤트 핸들러(Outflow Event Handler, 408)는 응용 서비스 또는 응용 프로그램의 실행 결과가 하드웨어 출력장치(450)를 통해 출력될 경우 이를 처리하는 기능을 수행할 수 있다.The outflow event handler 408 may perform a function of processing an execution result of an application service or an application program through the hardware output device 450.

컨테이너 파서(Container Parser, 410)는 인플로우 이벤트 핸들러(400)를 통해 수신된 상기의 도 2와 같은 서비스 컨테이너를 구성하는 내부 정보들을 분리하여 인식하고, 메타데이터를 해석하며, 보안 가상화 코드(150)를 SVIF생성기(412)에 전달하고, 응용서비스 또는 응용 서비스 데이터(152)를 VS 인젝터(414)에 전달할 수 있는 기능 블록이다. 따라서, 컨테이너 파서(410)는 응용 서비스 또는 응용 서비스 데이터 실행 및 소비에 요구되는 사전 처리(Pre-Processing)를 담당한다.The container parser 410 separates and recognizes internal information constituting the service container as shown in FIG. 2 received through the inflow event handler 400, interprets metadata, and secures virtualization code 150. ) Can be passed to the SVIF generator 412 and the application service or application service data 152 to the VS injector 414. Accordingly, the container parser 410 is responsible for pre-processing required for executing and consuming application services or application service data.

SVIF 생성기(412)는 컨테이너 파서(410)로부터 보안 가상화 코드를 수신하고, 이후 정책 검색 핸들러(402)에게 관련 서비스 정책 명세서를 요청하여 수신할 수 있다. 이러한 SVIF생성기(412)는 보안 가상화 코드로부터 응용 서비스 또는 응용 서비스 데이터를 소비하는 특정 응용 프로그램이 보안 가상화 인터페이스 계층(310)을 통해 커널 서비스 및 시스템 자원에 접속하는 인터페이스 규칙을 추출하고, 서비스 정책 명세서로부터 응용 서비스 또는 특정 응용 프로그램의 접속을 제어하는 제약 규칙을 추출한 후 상기 추출된 두 규칙을 합성하여 보안 가상화 인터페이스를 생성할 수 있다. 다시 말해서, SVIF생성기(412)는 응용 서비스 또는 특정 응용 프로그램에게 허락된 특정 커널 서비스 또는 하드웨어 자원으로 통신하는 방법을 보안 가상화 인터페이스의 형태로 생성할 수 있다. The SVIF generator 412 may receive the secure virtualization code from the container parser 410 and then request and receive the relevant service policy specification from the policy search handler 402. The SVIF generator 412 extracts interface rules for accessing kernel services and system resources through the secure virtualization interface layer 310 to a specific application consuming an application service or application service data from the secure virtualization code. After extracting a constraint rule for controlling access of an application service or a specific application program from the extracted two rules can be synthesized to create a secure virtualization interface. In other words, the SVIF generator 412 may create a method in the form of a secure virtualization interface that communicates with an application service or a specific kernel service or hardware resource allowed for a particular application.

이러한 보안 가상화 인터페이스를 통해 일관되고 기밀된 커널 자원 접근을 보장할 수 있을 뿐만 아니라 응용 서비스 및 응용 서비스 데이터의 신뢰된 실행 및 소비를 지원한다. This secure virtualization interface not only ensures consistent and confidential access to kernel resources, but also supports the trusted execution and consumption of application services and application service data.

VS 인젝터(414)는 SVIF생성기(412)로부터 보안 가상화 인터페이스를 수신하면, 컨테이너 파서(410) 또는 응용 프로그램 검색 핸들러(406)으로부터 응용 서비스 또는 응용 서비스 데이터와 관련된 특정 응용 프로그램을 요청하여 수신한다. 이후, 보안 가상화 인터페이스에 기술된 제약적 규칙에 따라 응용 서비스 또는 응용 프로그램이 보안 가상화 인터페이스 계층(310)을 통해 가상 머신(420)의 VS 해석기(422)에 주입되게 한다. 즉, 실행 관점에서 응용 서비스 또는 응용 프로그램이 가상 머신(420)에 적재되도록 하기 위한 기능을 가상화 서비스 인젝션 상에 구현할 수 있다. When the VS injector 414 receives the secure virtualization interface from the SVIF generator 412, it requests and receives a specific application related to the application service or application service data from the container parser 410 or the application search handler 406. The application service or application is then injected into the VS interpreter 422 of the virtual machine 420 via the secure virtualization interface layer 310 in accordance with the constraint rules described in the secure virtualization interface. That is, a function for allowing an application service or an application to be loaded into the virtual machine 420 may be implemented on the virtualization service injection from an execution point of view.

또한, VS 인젝터(414)는 응용 서비스 또는 응용 프로그램이 운영체제(440) 또는 하드웨어 자원(450) 규격이 지원하는 네이티브 프로그래밍 언어(Native Programming Language) 또는 규격으로 제작되어 있을 경우, 이를 가상 머신(420)의 VS 해석기(422)로 적재시키지 않고, 보안 가상화 인터페이스 계층(310)을 통해 바로 커널 서비스(432)로 네이티브 시스템 콜을 전달할 수 있다. 단, 이와 같은 경로를 통해 커널 서비스(432) 및 하드웨어 자원(450)의 접근이 이뤄지더라도, 본 발명의 실시 예에서는 가상화 서비스 모니터(330)을 통해 이의 접근을 감시하고 제어할 수 있다.In addition, the VS injector 414, if the application service or application is produced in a native programming language (Native Programming Language) or a specification supported by the operating system 440 or hardware resources 450 standard, it is a virtual machine 420 The native system call can be forwarded directly to the kernel service 432 via the secure virtualization interface layer 310 without loading into the VS resolver 422 of the. However, even though the kernel service 432 and the hardware resource 450 are accessed through such a path, in the embodiment of the present invention, the virtual service monitor 330 may monitor and control the access thereof.

보안 가상화 인터페이스 계층(330)는 소프트웨어 형태로 구현될 수 있는 프로그램으로서, 사용자 영역(300)과 커널 영역(340)간의 중계자 역할을 수행하는데, 특히 사용자 영역(300)의 응용 서비스 또는 응용 프로그램에게 커널 영역(340) 하부의 커널 서비스(432) 및 하드웨어 자원(450)을 추상화되어 제공되는 기능을 수행할 수 있다.The security virtualization interface layer 330 is a program that can be implemented in software. The secure virtualization interface layer 330 serves as a relay between the user domain 300 and the kernel domain 340. The kernel service 432 and the hardware resource 450 under the region 340 may be abstracted to provide a function.

또한, 보안 가상화 인터페이스 계층(330)은 SVIF생성기(412)에 의해 발급된 보안 가상화 인터페이스를 가지고 있는 응용 서비스 또는 응용 프로그램만이 커널 하부로 주입될 수 있도록 제어하는 기능을 수행할 수 있다.In addition, the security virtualization interface layer 330 may perform a function of controlling only an application service or an application program having a security virtualization interface issued by the SVIF generator 412 to be injected into the lower part of the kernel.

가상 머신(Virtual Machine, 420)는 일반적인 자바 가상 머신(Java Virtual Machine)과 같은 프로세스 타입(Process type)으로 구현 될 수 있다. 즉, 응용 서비스 또는 응용 프로그램의 실행(해석)을 요청 받으면 가상 머신(420)는 해당 응용 서비스 또는 응용 프로그램을 적재한 형태의 가상 머신 프로세스 인스턴스를 특권모드(Privileged Mode)로 실행시킨다. 따라서, 가상 머신(420)는 요청에 따라 여러 개가 독립적으로 프로세서(Processor, 322) 상에 로드될 수 있으며, 각 가상 머신(420)은 독립적으로 동작하기 때문에 개별 가상 머신 프로세스가 처리하는 응용 서비스 또는 용용 프로그램은 실행에 있어서 기밀성이 유지될 수 있다. The virtual machine 420 may be implemented in a process type such as a general Java virtual machine. That is, when a request for execution (interpretation) of an application service or application is requested, the virtual machine 420 executes a virtual machine process instance in a form of loading the application service or application in a privileged mode. Accordingly, the virtual machine 420 may be loaded on the processor 322 independently according to a request, and each virtual machine 420 may operate independently, so that an application service or an individual virtual machine process may process the request. Application programs can be kept confidential in their execution.

본 발명의 실시 예에서는 후술할 VS 해석기(VS Interpreter: Virtual Service Interpreter, 420) 및 코어 라이브러리(Core Library, 424)를 포함한 가상 머신(420)을 런타임 또는 서비스 가상화 소프트웨어 (Service Virtualization Software)로 지칭한다.In an embodiment of the present invention, a virtual machine 420 including a VS interpreter (VS Interpreter) 420 and a core library (424), which will be described later, is referred to as a runtime or service virtualization software. .

VS해석기(422)는 응용 서비스 또는 응용 프로그램을 바이트 코드(Bytecode) 행태로 보안 가상화 인터페이스 계층(310)을 통해 수신하고, 이를 해석하여 실제로 수행할 수 있는 가상 머신(420)의 가장 핵심이 되는 서브 기능 블록이다. The VS interpreter 422 receives the application service or the application through the secure virtualization interface layer 310 in the form of bytecode, interprets it, and serves as the core of the virtual machine 420. Function block.

코어 라이브러리(424)는 VS 해석기(422)의 수행에 있어 필수적으로 요구되는 라이브러리 집합을 의미한다. 즉, VS 해석기(422)는 보안 가상화 인터페이스 계층(310)을 통해 수신되는 응용 서비스 또는 응용 프로그램을 코어 라이브러리(424)를 기반으로 해석하여 실제로 수행할 수 있다. 상술 하자면, 상기 VS 해석기(422)는 각 응용 서비스 또는 응용 프로그램의 서비스 인스턴스(326)를 포함하고 있는 개별 가상 머신 프로세스(324)를 도 3에서 언급한 바와 같이 프로세스(322) 상에 로드시킴으로써 각 응용 서비스 또는 응용 프로그램을 실제로 실행시키게 된다.The core library 424 means a set of libraries essential for the performance of the VS interpreter 422. That is, the VS interpreter 422 may actually perform an application service or application received through the secure virtualization interface layer 310 based on the core library 424. In detail, the VS interpreter 422 loads an individual virtual machine process 324 containing each application service or service instance 326 of the application onto the process 322 as mentioned in FIG. 3. You will actually run your application service or application.

가상화 서비스 모니터(330)는 VS 인젝터(414)에 의해 주입된 응용 서비스 또는 응용 프로그램이 SVIF생성기(412)에 의해 발급된 보안 가상화 인터페이스에 따라 권한이 주어진 특정 커널 서비스(432) 또는 하드웨어 자원(450)으로만 네이티브 시스템 콜(Native System Calls)을 발생시키는지를 모니터링할 수 있다.The virtualization service monitor 330 is a particular kernel service 432 or hardware resource 450 that is authorized by an application service or application injected by the VS injector 414 according to the secure virtualization interface issued by the SVIF generator 412. ) Can only be used to monitor native system calls.

또한, 가상화 서비스 모니터(330)는 임의 시간 동안 필요하다면 특정 응용 서비스 또는 응용 프로그램에 대한 보안 가상화 인터페이스를 캐시된 번역 저장소(430)에 저장하여 관리할 수 있다. 다시 말해서, 가상화 서비스 모니터(330)는 보안 견고화 지침(Security Hardening Guide)으로 기능하는 보안 가상화 인터페이스를 참조하여 응용 서비스 또는 응용 프로그램의 시스템 자원 접근을 제어할 수 있다.In addition, the virtualization service monitor 330 may store and manage a secure virtualization interface for a specific application service or application in the cached translation store 430 if necessary for any time. In other words, the virtualization service monitor 330 may control access to system resources of an application service or an application by referring to a security virtualization interface that functions as a security hardening guide.

캐시된 번역 저장소(cached Translation Repository, 430)는 자주 사용되는 응용 서비스 또는 응용 프로그램의 보안 가상화 인터페이스를 저장하는 기밀 공간을 의미한다. 가상화 서비스 모니터(330)의 요청이 있을 시, 캐시된 번역 저장소(430)는 적합한 보안 가상화 인터페이스를 반환할 수 있다.Cached Translation Repository 430 refers to a confidential space that stores a secure virtualization interface of frequently used application services or applications. Upon request of the virtualization service monitor 330, the cached translation store 430 may return a suitable secure virtualization interface.

커널 서비스(Kernel Services, 432)는 일반적인 운영체제에서 공통적으로 제공하는 파일 입출력, 네트워크 입출력, 메모리 관리, 프로세스 관리 등의 집합을 의미한다.Kernel Services 432 refers to a set of file input / output, network input / output, memory management, process management, etc. which are commonly provided by a general operating system.

운용체제(Operating System, 440)는 윈도우, 리눅스, 안드로이드, 유닉스 등과 같이 통상적으로 시스템 하드웨어를 관리하고, 응용 소프트웨어를 실행하기 위한 시스템 소프트웨어의 공통된 기능이 구현된 논리 집합을 의미한다.Operating system 440 refers to a logical set of common functions of system software for managing system hardware and executing application software such as Windows, Linux, Android, and Unix.

하드웨어 자원(450)은 컴퓨팅 장치의 운용에 필요한 입력 장치, 출력 장치, 저장 장치, 네트워크 장치, 버스 장치, 메모리 장치, 프로세서 장치 등을 포괄하는 개념이다.The hardware resource 450 is a concept encompassing an input device, an output device, a storage device, a network device, a bus device, a memory device, a processor device, and the like, which are required to operate the computing device.

상기에서는 본 발명의 실시 예에서 신뢰할 수 있는 서비스 제공 서버(100)가 서비스 컨테이너를 생성한다고 가정하고 있으므로, 상기와 같은 도 4에서는 보안 가상화 인터페이스 및 가상 머신(420)를 통한 응용 서비스 및 응용 서비스 데이터의 처리 속도를 높이기 위해 보안 가상화 코드 및 응용 서비스 또는 응용 서비스 데이터에 대한 코드 검증(Code Verification) 절차는 수행하지 않는 것으로 전제하였다. 그러나, 서비스 컨테이너 배포 이후 보안 가상화 코드 또는 서비스(서비스 데이터)의 위-변조가 가능할 수 있으므로, 필요에 따라서는 코드 검증 절차를 보안 가상화 인터페이스 계층(310)에 추가하여 운용할 수 있다.In the above embodiment, since the trusted service providing server 100 creates a service container in the embodiment of the present invention, in FIG. 4 as described above, the application service and the application service data through the security virtualization interface and the virtual machine 420. In order to speed up the processing, the code verification procedure for the secure virtualized code and application service or application service data is not performed. However, since the security virtualization code or service (service data) may be forged after the service container distribution, a code verification procedure may be added to the security virtualization interface layer 310 and operated as necessary.

본 발명의 실시 예에서 언급한 컨테이너 파서(410), SVIF생성기(412), VS 인젝터(414), 가상 머신(420), 가상화 서비스 모니터(330)의 집합을 서비스 가상화 시스템 (Service Virtualization System)로 정의하고, 약식으로 런타임 시스템으로 지칭한다.The set of container parser 410, SVIF generator 412, VS injector 414, virtual machine 420, and virtualization service monitor 330 mentioned in the embodiment of the present invention is a service virtualization system. And abbreviated as runtime system.

또한, 도 4에서는 런타임 시스템이 커널 영역(340) 상단에 위치하는 구조를 가정하였으나, 보다 특수한 목적의 기밀 실행 환경 제공이 필요한 경우 가상 머신(420)가 커널 영역(340) 내부에 구현되어 탑재될 수 있다.In addition, although FIG. 4 assumes a structure in which the runtime system is located at the top of the kernel region 340, when a more special purpose confidential execution environment is required, the virtual machine 420 is implemented and mounted inside the kernel region 340. Can be.

상술한 바와 같은 구조를 갖는 서비스 런타임 시스템이 동작하는 과정에 대해 도 5 내지 도 7을 참조하여 설명한다.A process of operating the service runtime system having the above-described structure will be described with reference to FIGS. 5 to 7.

도 5 내지 도 7은 서비스 가상화 시스템이 탑재된 사용자 단말에서 응용 서비스 또는 응용 서비스 데이터를 수신한 이후, 이의 안전하고, 일관되며, 기밀성이 보장되는 실행 또는 소비를 위한 일련의 과정을 도시한 흐름도이다.5 to 7 are flowcharts illustrating a series of processes for safe or consistent execution or consumption thereof after receiving an application service or application service data from a user terminal equipped with a service virtualization system. .

도 5는 본 실시 예에 따라 응용 서비스가 보안 가상화 인터페이스 통해 가상 머신으로 인젝션되기 전까지의 과정을 도시한 흐름도이다. 단, 본 실시 예는 응용 서비스 또는 응용 서비스 데이터를 이용하는 응용 프로그램이 가상 머신에서 실행되는 경우만을 가정하여 도시한 것이며, 네이티브 프로그래밍 언어 또는 규격으로 작성된 응용 서비스 또는 응용 프로그램의 경우에도 본 실시 예에 준하여 수행될 수 있다. 5 is a flowchart illustrating a process before an application service is injected into a virtual machine through a secure virtualization interface according to the present embodiment. However, the present embodiment is illustrated on the assumption that only an application using an application service or application service data is executed in a virtual machine, and in the case of an application service or an application written in a native programming language or standard, Can be performed.

도 5에 도시된 바와 같이, 컨테이너 파서(410)는 신규 응용 서비스, 즉 서비스 컨테이너(110)를 수신하며(S500), 수신한 서비스 컨테이너로부터 메타데이터를 추출한 후 이를 해석하여, 도 2에 도시된 바와 같은 보안 가상화 코드, 서비스(서비스 데이터), 및 추가 정보들을 추출하여 분류(S502)한다. As shown in FIG. 5, the container parser 410 receives a new application service, that is, a service container 110 (S500), extracts metadata from the received service container, and interprets the metadata. The security virtualization code, service (service data), and additional information as described above are extracted and classified (S502).

컨테이너 파서(410)는 보안 가상화 코드 및 관련 정보(메타데이터 및 추가정보 등)를 SVIF생성기(412)에 전달(S504)함과 더불어 서비스(서비스 데이터)를 VS 인젝터(414)에 전달(S506)한다.The container parser 410 delivers the secure virtualization code and related information (metadata and additional information, etc.) to the SVIF generator 412 (S504), and also delivers the service (service data) to the VS injector 414 (S506). do.

SVIF생성기(412)은 정책 검색 핸들러(402)에게 관련 서비스 정책을 요청하여 수신하고, 서비스 정책과 보안 가상화 코드로부터 보안 가상화 인터페이스를 생성 (S508)한다. 이렇게 생성된 보안 가상화 인터페이스는 VS 인젝터(414)에 전달된다.The SVIF generator 412 requests and receives a related service policy from the policy search handler 402, and generates a secure virtualization interface from the service policy and the secure virtualization code (S508). The secure virtualization interface thus generated is passed to the VS injector 414.

VS 인젝터(414)는 생성된 보안 가상화 인터페이스를 통해서 해당 응용 서비스가 별도의 응용 프로그램이 필요한지 여부를 판단(S510)한다.The VS injector 414 determines whether the corresponding application service requires a separate application through the generated security virtualization interface (S510).

S510의 판단 결과, 응용 서비스가 별도의 응용 프로그램을 필요로 하는 경우, 즉 응용 서비스 데이터를 단말에서 소비하고자 하는 경우 VS 인젝터(414)는 응용 프로그램 검색 핸들러(406)에게 응용 서비스 데이터와 관련된 별도의 프로그램 검색 요청을 의뢰하면, 응용 프로그램 검색 핸들러(406)는 응용 프로그램 데이터베이스(360)에서 해당 응용 프로그램을 검색한 후 이를 VS 인젝터(414)에게 반환(S512)한다.As a result of the determination of S510, when the application service requires a separate application, that is, when the application service data is to be consumed by the terminal, the VS injector 414 may transmit a separate application related to the application service data to the application search handler 406. When requesting a program search request, the application search handler 406 searches for the application in the application database 360 and returns it to the VS injector 414 (S512).

VS 인젝터(414)은 상기 과정을 통해 생성된 보안 가상화 인터페이스를 참조하여 응용 서비스 또는 프로그램을 가상 머신(420)에 인젝션하기 위해 보안 가상화 인터페이스 계층 (310)으로 이를 전달한다. 이에 따라, 보안 가상화 인터페이스 계층(310)는 응용 서비스 또는 응용 프로그램을 가상 머신(420)에 인젝션(S514)한다.The VS injector 414 refers to the security virtualization interface generated through the above process and transfers it to the security virtualization interface layer 310 to inject an application service or program into the virtual machine 420. Accordingly, the secure virtualization interface layer 310 injects an application service or application program into the virtual machine 420 (S514).

한편, 보안 가상화 인터페이스 계층(310)은 수신된 보안 가상화 인터페이스에 대한 코드 검증을 수행하여 보안 가상화 인터페이스의 이상 유무를 판단(S516)한다.Meanwhile, the security virtualization interface layer 310 performs code verification on the received security virtualization interface to determine whether the security virtualization interface is abnormal (S516).

S516의 판단 결과, 보안 가상화 인터페이스에 이상이 없는 경우, 즉 코드 검증이 성공한 경우 가상 머신(420)는 응용 서비스 또는 응용 프로그램의 실행 또는 소비 요청을 수신(S518)한다.As a result of the determination in S516, when there is no error in the security virtualization interface, that is, when the code verification is successful, the virtual machine 420 receives a request for execution or consumption of an application service or an application (S518).

S516의 판단 결과, 보안 가상화 인터페이스에 이상이 있는 경우, 즉 보안 가상화 인터페이스의 코드 검증이 실패한 경우 가상 머신(420)는 응용 서비스 또는 응용 프로그램의 실행-소비 요청을 거절하여 실행을 중단(S520)시킨다. As a result of the determination in S516, when there is an error in the security virtualization interface, that is, when the code verification of the security virtualization interface fails, the virtual machine 420 rejects the execution-consumption request of the application service or the application and stops execution (S520). .

도 6은 본 실시 예에 따라 보안 가상화 코드 및 정책으로부터 인터페이스 규칙 및 접근 제약 규칙을 각각 추출하여 보안 가상화 인터페이스를 생성하는 과정을 도시한 흐름도이다.6 is a flowchart illustrating a process of generating a security virtualization interface by extracting an interface rule and an access restriction rule from a security virtualization code and a policy according to the present embodiment.

도 6에 도시된 바와 같이, SVIF생성기(412)는 서비스 정책 및 보안 가상화 코드를 정책 검색 핸들러(402) 및 컨테이너 파서 (410)으로부터 각각 수신한다(S600).As shown in FIG. 6, the SVIF generator 412 receives the service policy and security virtualization code from the policy search handler 402 and the container parser 410, respectively (S600).

그런 다음, SVIF생성기(412)는 보안 가상화 코드로부터 커널 서비스 또는 하드웨어 자원 인터페이싱 규칙을 추출(S602)하고, 서비스 정책으로부터 커널 서비스 또는 하드웨어 자원 접근 제약 규칙을 획득(S604)한다.Next, the SVIF generator 412 extracts a kernel service or hardware resource interfacing rule from the secure virtualization code (S602), and obtains a kernel service or hardware resource access constraint rule from the service policy (S604).

그리고 나서, SVIF생성기(412)는 먼저 서비스 정책으로부터 추출한 접근 권한 내역을 이해하고, 이를 바탕으로 가상화 코드로부터 추출한 인터페이싱 규칙에서 접근이 허용되는 부분과 그렇지 않는 부분을 구분할 수 있는 가상화 서비스 인터페이싱 명세서, 즉 보안 가상화 인터페이스를 생성한다(S606). Then, the SVIF generator 412 first understands the access authority history extracted from the service policy, and based on this, the virtualization service interfacing specification, that is, the distinction between the allowed access and the non-accessible part of the interfacing rule extracted from the virtualization code, that is, Create a secure virtualization interface (S606).

도 7은 본 실시 예에 따라 응용 서비스가 런타임 진입 이후 커널 서비스 또는 하드웨어 자원 요청 시 네이티브 시스템 콜에 대한 모니터링을 실시하는 과정을 도시한 흐름도이다.7 is a flowchart illustrating a process of performing an application service monitoring for a native system call when a kernel service or a hardware resource is requested after entry into a runtime according to the present embodiment.

도 7에 도시된 바와 같이, VS 인젝터(414)는 응용 서비스 또는 응용 프로그램이 네이티브 프로그래밍 언어 또는 규격으로 작성된 것인지 여부를 판단(S700)한다.As illustrated in FIG. 7, the VS injector 414 determines whether an application service or an application is written in a native programming language or standard (S700).

S700의 판단 결과, 응용 서비스 또는 응용 프로그램이 네이티브 프로그래밍 언어 또는 규격으로 작성된 것이라면, VS 인젝터(414)는 네이티브 응용 서비스 또는 응용 프로그램을 사용자 모드의 런타임 환경에서 독자적으로 수행될 수 있도록 지원(S702)하며, 네이티브 응용 서비스 또는 응용 프로그램의 요청이 있을 시 네이티브 시스템 콜을 커널 서비스(432)에 전달(S704)한다. If the S700 determines that the application service or application is written in the native programming language or standard, the VS injector 414 supports the native application service or application to be independently executed in the user mode runtime environment (S702). In response to the request of the native application service or application, the native system call is transferred to the kernel service 432 (S704).

S700의 판단 결과, 응용 서비스 또는 응용 프로그램이 네이티브 프로그래밍 언어 또는 규격으로 작성된 것이 아니라면, 가상 머신(420)의 VS 해석기(422)는 응용 서비스 또는 응용 서비스 데이터 수행을 위한 별도의 응용 프로그램을 바이트코드 형태로 수신(S706)한다.If the S700 determines that the application service or application is not written in the native programming language or standard, the VS interpreter 422 of the virtual machine 420 may designate a separate application for performing the application service or application service data in the form of bytecodes. (S706).

그런 다음, VS 해석기(422)는 응용 서비스 또는 응용 서비스 데이터 수행에 필요한 필수 라이브러리를 코어 라이브러리(424)에 호출하여 사용(S708)한다.Then, the VS interpreter 422 calls the core library 424 necessary libraries for performing the application service or the application service data and uses them (S708).

VS 해석기(422)는 응용 서비스 또는 응용 서비스 데이터 수행 시 커널 서비스(432) 또는 하드웨어 자원(450) 접근이 필요한 경우 네이티브 시스템 콜을 요청(S710)한다.The VS interpreter 422 requests a native system call (S710) when the kernel service 432 or the hardware resource 450 needs to be accessed when performing an application service or application service data.

가상화 서비스 모니터(330)는 필요 시 보안 가상화 인터페이스를 캐쉬된 번역 저장소(430)에 저장 및 관리(S712)한 후 VS 해석기(422)로부터 발생된 네이티브 시스템 콜의 적합성을 검사(S714)하여 신뢰된 접근인지를 판단(S716)한다.The virtualization service monitor 330 stores and manages the secure virtualization interface in the cached translation store 430 when necessary (S712), and then checks the suitability of the native system call generated from the VS interpreter 422 (S714) to be trusted. It is determined whether the approach (S716).

S716의 판단 결과, 신뢰된 접근으로 판단되면 가상화 서비스 모니터(330)는 네이티브 시스템 콜의 커널 서비스(432) 자원 진입을 허용(S718)하며, 신뢰되지 않은 접근으로 판단되면, 네이티브 시스템 콜의 커널 서비스(432) 자원 진입을 차단하고, 응용 서비스 중단 명령을 상기 VS 해석기(422)에 전달함으로써, 응용 서비스 실행을 중단(S720)한다.If it is determined in S716 that the virtual access service 330 is determined to be a trusted access, the virtual service monitor 330 allows the kernel service 432 resource entry of the native system call (S718). If it is determined as an untrusted access, the kernel service of the native system call is determined. In operation S720, the resource entry is blocked and the application service stop command is transmitted to the VS interpreter 422 to stop the application service execution.

상술한 바와 같이, 본 발명의 실시 예에 따르면, 기밀 실행이 요구되는 응용 서비스 또는 기밀 소비가 요구되는 응용 서비스 데이터를 위해 프로세스 및 데이터의 커널 모드로의 진입을 가능하게 하는 보안 가상화 인터페이스 계층을 제공함으로써, 응용 서비스 실행 또는 응용 서비스 데이터 소비의 기밀성을 극대화할 수 있다.As described above, according to an embodiment of the present invention, a security virtualization interface layer is provided to enable the process and data to enter the kernel mode for application services requiring confidential execution or application service data requiring confidential consumption. Thus, the confidentiality of application service execution or application service data consumption can be maximized.

또한, 본 발명의 실시 예에 따르면, 가상화 서비스 모니터를 이용하여 응용 서비스의 실행 또는 응용 서비스 데이터의 소비를 가상화 보안 코드 및 서비스 정책에서 정의한 형태로 프로세스 실행 관점에서 제어함으로써, 무분별한 커널 서비스 또는 하드웨어 자원으로의 접근을 방지할 수 있다. In addition, according to an embodiment of the present invention, by using the virtualization service monitor to control the execution of the application service or the consumption of the application service data in the form of the process execution in the form defined in the virtualization security code and service policy, indiscriminate kernel service or hardware resources To prevent access.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어 당업자는 각 구성 요소 등을 적용 분야에 따라 변경하거나, 개시된 실시형태들을 조합 또는 치환하여 본 발명의 실시예에 명확하게 개시되지 않은 형태로 실시할 수 있으나, 이 역시 본 발명의 범위를 벗어나지 않는 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것으로 한정적인 것으로 이해해서는 안 되며, 이러한 변형된 실시예들은 본 발명의 특허청구범위에 기재된 기술사상에 포함된다고 하여야 할 것이다.
While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, You will understand. For example, those skilled in the art can change each component, etc. according to the application field, or combine or substitute the disclosed embodiment in the form which is not expressly disclosed in the Example of this invention, This also limits the scope of this invention. It does not escape. Therefore, it should be understood that the above-described embodiments are to be considered in all respects as illustrative and not restrictive, and that these modified embodiments are included in the technical idea described in the claims of the present invention.

100 : 서비스 제공 서버 110 : 서비스 컨테이너
120 : IP 네트워크 130 : 사용자 단말
140 : 정책 발급 서버 300 : 사용자 영역
310 : 보안 가상화 인터페이스 계층 320 : 서비스 가상화 소프트웨어
330 : 가상화 서비스 모니터 340 : 커널 영역
400 : 인플로우 이벤트 핸들러 402 : 정책 검색 핸들러
404 : 응용 프로그램 데이터베이스 406 : 응용프로그램 검색 핸들러
408 : 아웃플로우 이벤트 핸들러 410 : 컨테이너 파서
412 : SVIF 생성기 414 : VS 인젝터
420 : 가상 머신 422 : VS 해석기
424 : 코어 라이브러리 430 : 캐시된 번역 저장소
432 : 커널 서비스 440 : 운영체제
450 : 하드웨어 자원
100: service providing server 110: service container
120: IP network 130: user terminal
140: policy issuing server 300: user area
310: secure virtualization interface layer 320: service virtualization software
330: virtualization service monitor 340: kernel area
400: Inflow Event Handler 402: Policy Search Handler
404: Application database 406: Application search handler
408: outflow event handler 410: container parser
412 SVIF Generator 414 VS Injector
420: virtual machine 422: VS interpreter
424 Core Library 430 Cached Translation Repository
432 kernel service 440 operating system
450: hardware resources

Claims (19)

사용자 영역과 커널 영역을 연결시키며, 상기 사용자 영역을 통해 수신된응용 서비스가 상기 커널 영역 하부의 커널 서비스 및 하드웨어 자원을 이용하도록 하는 보안 가상화 인터페이스 계층과,
서비스 제공 서버로부터 가상화 보안 코드를 포함하는 서비스 컨테이너를 수신하면, 상기 서비스 컨테이너에서 가상화 보안 코드와 응용 서비스를 분리하는 컨테이너 파서와,
상기 용용 서비스와 관련된 서비스 정책을 정책 발급 서버에 요청하여 수신하며, 상기 가상화 보안 코드와 상기 서비스 정책을 이용하여 보안 가상화 인터페이스를 생성하는 보안 가상화 인터페이스 생성기와,
상기 보안 가상화 인터페이스에 기술된 규칙에 따라 상기 응용 서비스를 상기 보안 가상화 인터페이스 계층을 통해 가상 머신에 적재하는 가상화 서비스 인젝터를 구비하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
A security virtualization interface layer that connects a user domain and a kernel domain, and enables an application service received through the user domain to use kernel services and hardware resources under the kernel domain;
Receiving a service container including a virtualization security code from a service providing server, the container parser separating the virtualization security code and an application service from the service container;
A security virtualization interface generator for requesting and receiving a service policy related to the service for use by a policy issuing server, and generating a security virtualization interface using the virtualization security code and the service policy;
And a virtualization service injector for loading the application service into the virtual machine through the secure virtualization interface layer according to the rules described in the secure virtualization interface.
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 서비스 제공 서버로부터 상기 서비스 컨테이너를 수신하여 상기 컨테이너 파서에 제공하는 인플로우 이벤트 핸들러와,
상기 보안 가상화 인터페이스 생성기의 요청에 따라 상기 정책 발급 서버에 접속하여 서비스 정책을 수신하여 상기 보안 가상화 인터페이스 생성기에 제공하는 정책 검색 핸들러와,
상기 응용 서비스를 실행 또는 소비하기 위한 별도의 응용 프로그램이 요구될 경우 응용 프로그램 데이터베이스에서 검색을 수행하여 상기 별도의 응용 프로그램을 추출하는 응용 프로그램 검색 핸들러를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
An inflow event handler for receiving the service container from the service providing server and providing the service container to the container parser;
A policy search handler for accessing the policy issuing server to receive a service policy and providing the service policy to the security virtualization interface generator according to a request of the security virtualization interface generator;
And an application search handler for extracting the separate application by performing a search in an application database when a separate application for executing or consuming the application service is required.
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 보안 가상화 인터페이스 생성기는,
상기 보안 가상화 코드를 이용하여 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 상기 보안 가상화 인터페이스 계층을 통해 상기 커널 영역의 커널 서비스 및 하드웨어 자원에 접속하는 인터페이스 규칙을 추출하며, 상기 서비스 정책으로부터 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 접속을 제어하는 제약 규칙을 추출한 후 상기 추출된 인터페이스 규칙 및 상기 제약 규칙을 이용하여 상기 보안 가상화 인터페이스를 생성하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
The secure virtualization interface generator,
By using the security virtualization code, the application service or a specific application program consuming the same extracts an interface rule for accessing a kernel service and a hardware resource of the kernel region through the security virtualization interface layer, and from the service policy, the application service. Or after extracting a constraint rule for controlling a connection of a specific application program consuming the same, generating the security virtualization interface using the extracted interface rule and the constraint rule.
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 가상화 서비스 인젝터는,
상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 운영체제 또는 하드웨어 규격이 지원하는 네이티브 프로그래밍 언어 (Native Programming Language) 또는 규격으로 제작된 경우, 상기 보안 가상화 인터페이스 계층을 통해 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 상기 커널 서비스로 전달하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
The virtualization service injector,
When the application service or a specific application consuming the same is produced in a native programming language or standard supported by an operating system or a hardware standard, the application service or the specific application consuming the same through the secure virtualization interface layer. To deliver to the kernel service
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 가상 머신은,
상기 보안 가상화 인터페이스 계층을 통해 수신되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 해석에 필요한 라이브러리가 저장되어 있는 코어 라이브러리와,
상기 보안 가상화 인터페이스 계층을 통해 수신되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 상기 코어 라이브러리를 기반으로 해석하는 가상화 서비스 해석기를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
The virtual machine includes:
A core library storing a library required for interpretation of the application service received through the secure virtualization interface layer or a specific application consuming the same;
And a virtualization service interpreter that interprets the application service received through the secure virtualization interface layer or a specific application consuming the same based on the core library.
Device that provides runtime for running application service confidentiality.
제 5 항에 있어서,
상기 가상화 서비스 인젝터는,
상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 운영체제 또는 하드웨어 규격이 지원하는 네이티브 프로그래밍 언어 (Native Programming Language) 또는 규격으로 제작되지 않은 경우, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램을 바이트코드 형태로 변환한 후 이를 상기 가상화 서비스 해석기로 전달하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 5, wherein
The virtualization service injector,
If the application service or a specific application consuming the same is not produced in a native programming language or standard supported by an operating system or a hardware standard, converting the application service or the specific application consuming the same into bytecode form. And then forwarding it to the virtualization service interpreter.
Device that provides runtime for running application service confidentiality.
제 5 항에 있어서,
상기 가상화 서비스 해석기는, 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 실행 시 상기 커널 서비스 또는 하드웨어 자원 접근이 필요한 경우 상기 네이티브 시스템 콜을 생성하여 상기 커널 영역에 전달하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 5, wherein
The virtualization service analyzer may generate the native system call and deliver the generated native system call to the kernel region when the kernel service or hardware resource access is required when executing the application service or a specific application program consuming the application service.
Device that provides runtime for running application service confidentiality.
제 7 항에 있어서,
상기 커널 영역은,
상기 가상화 서비스 해석기로부터 전달받은 네이티브 시스템 콜의 적합성여부를 검사하여 신뢰된 접근인지를 판단하며, 상기 판단 결과에 따라 상기 네이티브 시스템 콜의 상기 커널 서비스 또는 하드웨어 자원 접근을 허용하거나 차단하는 가상화 서비스 모니터를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 7, wherein
The kernel region is,
A virtualization service monitor that checks whether the native system call received from the virtualization service interpreter is a trusted access, and permits or blocks access to the kernel service or hardware resource of the native system call according to the determination result Characterized in that it comprises
Device that provides runtime for running application service confidentiality.
제 8 항에 있어서,
상기 커널 영역은,
상기 보안 가상화 인터페이스 생성기에 의해 생성된 상기 응용 서비스에 대한 보안 가상화 인터페이스를 저장하기 위한 캐시된 번역 저장소를 더 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 8,
The kernel region is,
And a cached translation store for storing a secure virtualization interface for the application service generated by the secure virtualization interface generator.
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 커널 영역은,
상기 보안 가상화 인터페이스 계층을 통해 주입되는 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 상기 보안 가상화 인터페이스 생성기에 의해 생성된 보안 가상화 인터페이스에 따라 권한이 주어진 특정 커널 서비스 또는 하드웨어 자원으로만 네이티브 시스템 콜을 발생시키는지를 모니터링하는 가상화 서비스 모니터를 더 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
The kernel region is,
The application service injected through the secure virtualization interface layer or a specific application consuming it generates a native system call only to a specific kernel service or hardware resource authorized according to the secure virtualization interface generated by the secure virtualization interface generator. Further comprising a virtualization service monitor for monitoring whether
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 커널 영역은,
특정 응용 서비스 또는 응용 프로그램의 보안 가상화 인터페이스를 저장하는 캐시된 번역 저장소와,
상기 캐시된 번역 저장소에 저장된 보안 가상화 인터페이스를 기반으로 상기 응용 서비스 또는 이를 소비하기 위한 응용 프로그램의 커널 서비스 또는 하드웨어 자원 접근을 제어하는 가상화 서비스 모니터를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
The kernel region is,
A cached translation store that stores a secure virtualization interface for a specific application service or application,
And a virtualization service monitor controlling access to a kernel service or a hardware resource of the application service or an application program for consuming the application based on a secure virtualization interface stored in the cached translation store.
Device that provides runtime for running application service confidentiality.
제 1 항에 있어서,
상기 응용 서비스 또는 이를 소비하기 위한 응용 프로그램의 실행 결과가 하드웨어 자원을 통해 출력되도록 처리하는 아웃플로우 이벤트 핸들러를 더 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 장치.
The method of claim 1,
And an outflow event handler that processes an execution result of the application service or an application program for consuming the same to be output through a hardware resource.
Device that provides runtime for running application service confidentiality.
외부의 서비스 제공 서버로부터 가상화 보안 코드를 포함하는 서비스 컨테이너를 수신하는 단계와,
상기 서비스 컨테이너에서 가상화 보안 코드와 응용 서비스를 분리하는 단계와,
상기 용용 서비스와 관련된 서비스 정책을 정책 발급 서버에 요청하여 수신하는 단계와,
상기 가상화 보안 코드와 상기 서비스 정책을 기반으로 보안 가상화 인터페이스를 생성하는 단계와,
상기 보안 가상화 인터페이스에 기술된 규칙에 따라 상기 응용 서비스를 보안 가상화 인터페이스 계층을 통해 가상 머신에 적재하는 단계를 포함하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
Receiving a service container including a virtualization security code from an external service provision server;
Separating the virtualized security code and the application service from the service container;
Requesting and receiving a service policy related to the service provided to a policy issuing server;
Generating a secure virtualization interface based on the virtualization security code and the service policy;
Loading the application service into a virtual machine via a secure virtualization interface layer according to the rules described in the secure virtualization interface;
How to provide a runtime for running application service confidentiality.
제 13 항에 있어서,
상기 생성된 보안 가상화 인터페이스를 통해서 해당 응용 서비스가 별도의 응용 프로그램이 필요한지를 판단하는 단계와,
상기 판단 결과, 상기 별도의 응용 프로그램이 필요한 경우 상기 별도의 응용 프로그램을 응용 프로그램 데이터베이스에서 검색하여 획득하는 단계를 더 포함하며,
상기 적재하는 단계는, 상기 획득한 응용 프로그램 또는 응용 서비스를 상기 가상 머신에 적재하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 13,
Determining whether the application service requires a separate application through the generated security virtualization interface;
In response to the determination, if the separate application is required, the method may further include searching for and obtaining the separate application from an application database.
The loading may include loading the obtained application program or application service on the virtual machine.
How to provide a runtime for running application service confidentiality.
제 13 항에 있어서,
상기 보안 가상화 인터페이스를 생성하는 단계는,
상기 보안 가상화 코드를 이용하여 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램이 상기 보안 가상화 인터페이스 계층을 통해 상기 커널 영역의 커널 서비스 및 하드웨어 자원에 접속하는 인터페이스 규칙을 추출하는 단계와,
상기 서비스 정책으로부터 상기 응용 서비스 또는 이를 소비하는 특정 응용 프로그램의 접속을 제어하는 제약 규칙을 추출하는 단계와,
상기 추출된 인터페이스 규칙 및 상기 제약 규칙을 이용하여 상기 보안 가상화 인터페이스를 생성하는 단계를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 13,
Generating the secure virtualization interface,
Extracting an interface rule for accessing a kernel service and a hardware resource of the kernel region through the secure virtualization interface layer by the secured virtualization interface layer using the secure virtualization code;
Extracting a constraint rule from the service policy to control access of the application service or a specific application program consuming the application service;
Generating the secure virtualization interface by using the extracted interface rule and the constraint rule.
How to provide a runtime for running application service confidentiality.
제 13 항에 있어서,
상기 적재하는 단계는,
상기 보안 가상화 인터페이스에 대한 코드 검증을 수행하여 보안 가상화 인터페이스의 이상 유무를 판단하는 단계와,
상기 보안 가상화 인터페이스에 이상이 없는 경우 상기 응용 서비스 또는이를 소비하는 응용 프로그램을 상기 가상 머신에 적재하는 단계와,
상기 보안 가상화 인터페이스에 이상이 있는 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램의 실행을 중단시키는 단계를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 13,
The loading step,
Performing code verification on the security virtualization interface to determine whether there is an abnormality of the security virtualization interface;
Loading the application service or an application consuming the application into the virtual machine when the secure virtualization interface is intact;
Stopping the execution of the application service or the application program consuming the abnormality in the security virtualization interface.
How to provide a runtime for running application service confidentiality.
제 13 항에 있어서,
상기 적재하는 단계는,
상기 응용 서비스 또는 이를 소비하는 응용 프로그램이 네이티브 프로그래밍 언어 또는 규격으로 작성되어 있는지를 판단하는 단계와,
상기 판단 결과, 네이티브 프로그래밍 언어 또는 규격으로 작성된 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램에 대한 네이티브 시스템 콜을 커널 영역에 전달하는 단계와,
상기 판단 결과, 네이티브 프로그래밍 언어 또는 규격으로 작성되지 않은 경우 상기 응용 서비스 또는 이를 소비하는 응용 프로그램을 바이트코드 형태로 변환하여 상기 가상 머신을 통해 상기 커널 영역에 전달하는 단계를 포함하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 13,
The loading step,
Determining whether the application service or the application program consuming the application service is written in a native programming language or standard;
As a result of the determination, when a native programming language or standard is written, delivering a native system call for the application service or an application consuming the same to a kernel region;
If it is not written in a native programming language or standard, converting the application service or an application program consuming the same into a bytecode form and delivering the same to a kernel region through the virtual machine;
How to provide a runtime for running application service confidentiality.
제 17 항에 있어서,
상기 가상 머신을 통해 상기 커널 영역에 상기 응용 서비스 또는 이를 소비하는 응용 프로그램에 대한 네이티브 시스템 콜을 전달하는 단계는,
상기 바이트 코드 형태의 응용 서비스 또는 이를 소비하는 응용 프로그램을 기 저장된 코어 라이브러리를 기반으로 해석하는 단계와,
상기 응용 서비스 또는 이를 소비하는 응용 프로그램 실행 시 커널 서비스 또는 하드웨어 자원 접근이 필요한 경우 상기 커널 영역에 네이티브 시스템 콜을 요청하는 단계를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 17,
Delivering a native system call for the application service or an application consuming the same to the kernel region through the virtual machine,
Interpreting the application service in the form of byte code or an application consuming the same based on a pre-stored core library;
Requesting a native system call to the kernel region when accessing a kernel service or a hardware resource is required when executing the application service or the application program consuming the application service.
How to provide a runtime for running application service confidentiality.
제 18 항에 있어서,
상기 네이티브 시스템 콜을 수신한 상기 커널 영역에서 상기 네이티브 시스템 콜의 적합성 검사를 통해 신뢰된 접근인지를 판단하는 단계와,
상기 신뢰된 접근인 경우에만 상기 네이티브 시스템 콜의 상기 커널 서비스 또는 하드웨어 자원 진입을 허용하는 단계를 포함하는 것을 특징으로 하는
응용 서비스 기밀 실행을 위한 런타임 제공 방법.
The method of claim 18,
Determining whether it is a trusted access by checking suitability of the native system call in the kernel region that receives the native system call;
Allowing the native system call to enter the kernel service or hardware resource only in the case of the trusted access.
How to provide a runtime for running application service confidentiality.
KR1020120001957A 2012-01-06 2012-01-06 Apparatus and method for secure and consistent runtime based confidential execution of application services KR20130093804A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120001957A KR20130093804A (en) 2012-01-06 2012-01-06 Apparatus and method for secure and consistent runtime based confidential execution of application services

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120001957A KR20130093804A (en) 2012-01-06 2012-01-06 Apparatus and method for secure and consistent runtime based confidential execution of application services

Publications (1)

Publication Number Publication Date
KR20130093804A true KR20130093804A (en) 2013-08-23

Family

ID=49217838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120001957A KR20130093804A (en) 2012-01-06 2012-01-06 Apparatus and method for secure and consistent runtime based confidential execution of application services

Country Status (1)

Country Link
KR (1) KR20130093804A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111796909A (en) * 2020-06-24 2020-10-20 浙江大学 Lightweight mobile application virtualization system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111796909A (en) * 2020-06-24 2020-10-20 浙江大学 Lightweight mobile application virtualization system
CN111796909B (en) * 2020-06-24 2024-04-02 浙江大学 Lightweight mobile application virtualization system

Similar Documents

Publication Publication Date Title
Smalley et al. Security enhanced (se) android: bringing flexible mac to android.
Sirer et al. Logical attestation: An authorization architecture for trustworthy computing
US5841870A (en) Dynamic classes of service for an international cryptography framework
US10496824B2 (en) Trusted language runtime on a mobile platform
Arden et al. Sharing mobile code securely with information flow control
Hunt et al. Confidential computing for OpenPOWER
KR102275827B1 (en) Method and apparatus for data encryption
CN110874468B (en) Application program security protection method and related equipment
Singh et al. Analysis of malicious behavior of android apps
KR101665894B1 (en) Mandatory protection control in virtual machines
WO2017016231A1 (en) Policy management method, system and computer storage medium
Zegzhda et al. Use of Intel SGX to ensure the confidentiality of data of cloud users
Brasser et al. Trusted container extensions for container-based confidential computing
Hua et al. TZ-container: Protecting container from untrusted OS with ARM TrustZone
Moshchuk et al. Content-based isolation: rethinking isolation policy design on client systems
CN110597496B (en) Method and device for acquiring bytecode file of application program
Bousquet et al. Mandatory access control for the android dalvik virtual machine
Koved et al. The evolution of Java security
KR20130093804A (en) Apparatus and method for secure and consistent runtime based confidential execution of application services
Buchner et al. Survey on trusted execution environments
Watson New approaches to operating system security extensibility
Nazar et al. Rooting Android–Extending the ADB by an auto-connecting WiFi-accessible service
Fong Viewer's discretion: Host security in mobile code systems
Zhu et al. Investigating TrustZone: A Comprehensive Analysis
Iannillo et al. An REE-independent Approach to Identify Callers of TEEs in TrustZone-enabled Cortex-M Devices

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination