KR101260759B1 - Apparatus and method for controlling access to native library - Google Patents

Apparatus and method for controlling access to native library Download PDF

Info

Publication number
KR101260759B1
KR101260759B1 KR1020120097160A KR20120097160A KR101260759B1 KR 101260759 B1 KR101260759 B1 KR 101260759B1 KR 1020120097160 A KR1020120097160 A KR 1020120097160A KR 20120097160 A KR20120097160 A KR 20120097160A KR 101260759 B1 KR101260759 B1 KR 101260759B1
Authority
KR
South Korea
Prior art keywords
native library
access control
application
native
library
Prior art date
Application number
KR1020120097160A
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 KR1020120097160A priority Critical patent/KR101260759B1/en
Application granted granted Critical
Publication of KR101260759B1 publication Critical patent/KR101260759B1/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
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

PURPOSE: A native library access control apparatus and a method thereof are provided to prevent unauthorized use of a native library without permission using an unauthorized application, thereby protecting intellectual properties of the native library. CONSTITUTION: A native library access control apparatus includes a calling unit(200), an update unit(202), an access control policy(204), an access control unit(208), and a native library module(210). The calling unit which is a software module for calling a native library(206) calls a corresponding native library requested for loading from an application in case the application operates and loads the native library. The update unit updates the access control policy about the native library. The access control unit authenticates the application by loading the access control policy in case the native library is called and blocks the native library requested. The access control unit authenticates the application which loads the native library by being firstly called at the time of loading the native library. [Reference numerals] (200) Calling unit; (202) Update unit; (204) Access control policy(white list); (208) Access control unit; (210) Native library module

Description

네이티브 라이브러리 접근 제어장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING ACCESS TO NATIVE LIBRARY}Native library access control device and method {APPARATUS AND METHOD FOR CONTROLLING ACCESS TO NATIVE LIBRARY}

본 발명은 애플리케이션 소스 코드(application source code)의 보호를 위한 방법에 관한 것으로, 특히 네이티브 라이브러리(native library)를 가지도록 구성된 애플리케이션의 실행 시, 네이티브 라이브러리가 클래스 로더(class loader)에 의해 로드되는 시점에 현재 네이티브 라이브러리에 대한 로드를 요청한 애플리케이션을 인증(authentication)하여 인증 성공된 애플리케이션에 대해서만 네이티브 라이브러리가 로드되도록 제어함으로써, 네이티브 라이브러리의 임의 취득에 따라 제작된 제3자의 애플리케이션에 의한 네이티브 라이브러리 무단 사용을 방지시키도록 하는 네이티브 라이브러리 접근 제어장치 및 방법에 관한 것이다.
The present invention relates to a method for protection of application source code, and in particular, at the time of execution of an application configured to have a native library, the native library is loaded by a class loader. By authenticating the application that is currently requesting to load the native library, the control will ensure that the native library is loaded only for applications that have been successfully authenticated, thereby preventing unauthorized use of the native library by third-party applications built upon arbitrary acquisition of the native library. A native library access control device and method for preventing this are disclosed.

근래에 들어, 유무선 인터넷뿐만 아니라 이동통신 기술의 발달로, 단순히 전화통화 기능뿐만이 아닌 무선 인터넷 기능 등 다양한 기능을 갖춘 휴대폰이 보급되고 있다. 특히 최근에 보급이 확산되고 있는 스마트폰은 멀티미디어 재생기능 등의 다양한 기능의 응용프로그램의 설치가 가능하여, 사용자들이 여러 용도로 스마트폰을 이용하고 있다.Recently, with the development of mobile communication technology as well as wired and wireless Internet, mobile phones having various functions such as wireless Internet function as well as telephone call function have been widely used. In particular, smart phones, which are recently spreading, can install various functions such as multimedia playback functions, and users are using smart phones for various purposes.

일반적으로 스마트폰은 휴대전화와 개인휴대단말기(personal digital assistant : PDA)의 장점을 합친 것으로, 휴대 전화기에 일정관리, 팩스 송수신 및 인터넷 접속 등의 데이터 통신기능을 통합시켜 구현된다. 통상 스마트폰에는 와이파이(wifi)와 같은 무선통신모듈이 장착되어 인터넷망을 통한 데이터 송수신도 가능하며, 인터넷 정보검색은 물론 액정디스플레이에 전자펜으로 문자를 입력하거나 약도 등 그림 정보를 송수신할 수 있다. In general, a smart phone combines the advantages of a mobile phone and a personal digital assistant (PDA), and is implemented by integrating data communication functions such as schedule management, fax transmission, and Internet access. In general, a smart phone is equipped with a wireless communication module such as Wi-Fi, and can transmit and receive data through the Internet network. Also, it is possible to search for information on the Internet and to send and receive picture information such as directions by using an electronic pen on the liquid crystal display. .

이러한 스마트폰과, 테블릿 PC 등의 휴대용 단말기는 예를들어 IOS, 안드로이드 등 저마다의 운영체제가 존재하며, 해당 운영체제에 의해 실행 가능한 애플리케이션의 개발이 활발히 이루어지고 있다.Such smart phones and portable terminals such as tablet PCs have their own operating systems such as IOS and Android, for example, and development of applications executable by the operating systems is being actively performed.

한편, 위와 같은 애플리케이션들 중 안드로이드 환경에서의 애플리케이션은 대부분 JAVA 코드로 구현된다. On the other hand, most of the above applications in the Android environment are implemented in JAVA code.

이때, JAVA의 산출물은 JVM(JAVA Virtual Machine)에서 실행되기 위한 바이트(byte) 코드로 생성되는데, 멀티플랫폼에서 실행 가능한 JAVA의 장점도 있지만, 이러한 바이트 코드는 디컴파일(decompile)이 상당히 쉬워 리버스 엔지니어링(reverse engineering)에 매우 취약하다. 또한 리버스 엔지니어링을 위한 툴(tool) 도 매우 다양하다. 따라서 임의의 안드로이드 애플리케이션(APK)이 업로드되어 유통이 되면 해당 애플리케이션을 다운로드한 사람이 APK 파일을 압축해제하고 안드로이드 실행파일인 DEX파일을 디컴파일하여 소스 코드를 취득한 후 이를 이용하여 제3의 애플리케이션을 재개발하는 경우, 처음 개발한 산출물에 대한 지적재산(intellectual property : IP)를 보호하기가 매우 어려운 실정이다.At this time, the output of JAVA is generated as byte code to be executed in a JAVA virtual machine (JVM). Although there is an advantage of JAVA that can be executed on a multiplatform, these byte codes are reverse engineered with easy decompile. Very vulnerable to reverse engineering There are also many tools for reverse engineering. Therefore, if any Android application (APK) is uploaded and distributed, the person who downloaded the application decompresses the APK file, decompiles the DEX file, which is an Android executable file, obtains the source code, and then uses the third application. In the case of redevelopment, it is very difficult to protect the intellectual property (IP) of the first developed product.

이를 위해 종래에는 JAVA로 구현된 애플리케이션의 소스코드의 유출을 방지하기 위한 방법으로, 첫째, JAVA코드의 디컴파일을 피할 수 없기 때문에 디컴파일을 하더라도 소스 코드를 이해하기 어렵도록 코드 난독화를 수행한다. 하지만 이 방법은 취득한 소스 코드를 이해하기 어렵게 만드는 기술이지 근본적으로 JAVA코드의 취득을 방지하지는 못한다.To this end, conventionally, a method for preventing leakage of source code of an application implemented by JAVA. First, since decompilation of JAVA code cannot be avoided, code obfuscation is performed so that it is difficult to understand the source code even when decompiled. . However, this technique makes the source code difficult to understand, and it does not fundamentally prevent the acquisition of JAVA code.

둘째, 애플리케이션의 중요한 실행 코드 등의 민감한 코드를 네이티브 라이브러리(Native Library) 모듈로 구현한 후 JAVA와 연동하게 함으로써 JAVA의 디컴파일 이슈를 네이티브 코드로 완화한다. 하지만 이처럼 네이티브 라이브러리로 구현할 경우 JAVA의 디컴파일 이슈는 완화되지만 네이티브 라이브러리를 전체로 도용하는 경우 임의의 제3자가 도용한 네이티브 라이브러리를 이용하여 손쉽게 복제 애플리케이션을 만들 수 있는 문제점이 있었다.Second, JAVA decomposes JAVA's decompilation issues into native code by implementing sensitive code such as important executable code of the application as a Native Library module and interworking with JAVA. However, if the native library is implemented, JAVA's decompilation issue is alleviated, but if the native library is used as a whole, there is a problem in that a clone application can be easily created by using a native library used by an arbitrary third party.

도 1은 종래 네이티브 라이브러리의 도용을 통한 복제 애플리케이션 제작 개념을 도시한 것이다.1 illustrates a concept of creating a duplicate application through the exploitation of a conventional native library.

도 1을 참조하면, 예를 들어 특정 업체의 애플리케이션(100)의 주요한 실행 코드가 네이티브 라이브러리(Native Library)(102)로 연동되도록 제작된 경우, 제3자가 리버스 엔지니어링 등을 통해 네이티브 라이브러리(102)를 임의의 취득한 후, 새로운 APK 파일로 압축하여 손쉽게 애플리케이션(150)을 복제할 수 있으며, 이와 같은 경우 원 사용자의 네이티브 라이브러리에 대한 지적 재산권을 보호하는 것이 어려운 문제점이 있었다.
Referring to FIG. 1, for example, when a main executable code of an application 100 of a specific company is manufactured to work with a native library 102, a third party may use a native library 102 through reverse engineering or the like. After arbitrary acquisition, it is possible to easily duplicate the application 150 by compressing it into a new APK file, in which case it was difficult to protect the intellectual property of the native library of the original user.

(특허문헌)(Patent Literature)

대한민국 공개특허번호 10-2008-0099247호(공개일자 2008년 11월 12일)에는 데이터 구조가 저장되어 있는 적어도 하나의 컴퓨터 판독가능 매체 및 시스템에 관한 기술이 개시되어 있다.
Korean Patent Laid-Open No. 10-2008-0099247 (November 12, 2008) discloses at least one computer readable medium and a system in which a data structure is stored.

따라서, 본 발명은 네이티브 라이브러리를 가지도록 구성된 애플리케이션의 실행 시, 네이티브 라이브러리가 클래스 로더(class loader)에 의해 로드되는 시점에 현재 네이티브 라이브러리에 대한 로드를 요청한 애플리케이션을 인증하여 인증 성공된 애플리케이션에 대해서만 네이티브 라이브러리가 로드되도록 제어함으로써, 네이티브 라이브러리의 임의 취득에 따라 제작된 제3자의 애플리케이션에 의한 네이티브 라이브러리 무단 사용을 방지시키도록 하는 네이티브 라이브러리 접근 제어장치 및 방법을 제공하고자 한다.
Therefore, when the application configured to have a native library is executed, the present invention authenticates the application that has requested the load of the current native library at the time when the native library is loaded by the class loader, and is only native to the successful application. By controlling a library to be loaded, a native library access control apparatus and method for preventing unauthorized use of a native library by a third party application produced by acquiring a native library is provided.

상술한 본 발명은 네이티브 라이브러리 접근 제어 장치로서, 네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와, 애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와, 상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함한다.The present invention as described above is a native library access control device, comprising: an updater for updating an access control policy for a native library, and when the native library load request from an application is updated, the access control policy is updated, and A caller for calling a native library and an access to load the access control policy when the native library is called to authenticate the application, and to block the call of the native library requested to be loaded from the application if the authentication fails. It includes a control unit.

또한, 상기 접근 제어부는, 상기 네이티브 라이브러리가 로드되는 시점에 가장 먼저 호출되어 상기 네이티브 라이브러리를 로드한 상기 애플리케이션을 인증하는 것을 특징으로 한다.In addition, the access control unit is characterized in that the first call at the time when the native library is loaded, characterized in that for authenticating the application that loaded the native library.

또한, 상기 접근 제어부는, 상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 복호화하여 상기 네이티브 라이브러리로의 접근이 허용되는 화이트리스트를 추출하고, 상기 애플리케이션의 정보가 상기 화이트리스트에 없는 경우 상기 애플리케이션에 대한 인증 실패한 것으로 판단하는 것을 특징으로 한다.The access controller may decode the access control policy when the native library is called to extract a whitelist for allowing access to the native library, and if the information of the application is not in the whitelist, Characterized in that it is determined that the authentication failed.

또한, 상기 접근 제어부는, 상기 애플리케이션에 대한 인증이 성공하는 경우, 상기 네이티브 라이브러리를 로드하여 상기 애플리케이션으로 연결시키는 것을 특징으로 한다.The access controller may load the native library and connect the application to the application when authentication of the application succeeds.

또한, 상기 접근 제어부는, 상기 호출부로부터 JNI(java native interface)를 통해 상기 네이티브 라이브러리의 호출을 수신하는 것을 특징으로 한다.The access control unit may receive a call of the native library from the caller through a JNI (java native interface).

또한, 상기 네이티브 라이브러리는, JVM(java virtual machine)의 네이티브 레벨에 위치하여 상기 애플리케이션에 의해 로드되는 것을 특징으로 한다.In addition, the native library is located at the native level of the JVM (java virtual machine) is characterized in that it is loaded by the application.

또한, 상기 접근 제어 정책은, 암호화되어 상기 접근 제어부로 로드되는 것을 특징으로 한다.The access control policy may be encrypted and loaded into the access control unit.

또한, 상기 화이트리스트(white list)는, 상기 네이티브 라이브러리의 로드가 허용되는 인증 정보를 포함하고 있는 것을 특징으로 한다.In addition, the white list is characterized in that it contains authentication information that is allowed to load the native library.

또한, 상기 인증 정보는, 상기 애플리케이션의 서명값, 패키지명, 파일명, 파일크기 또는 해쉬값(hash)중 하나 이상을 포함하는 것을 특징으로 한다.The authentication information may include one or more of a signature value, a package name, a file name, a file size, or a hash value of the application.

또한, 상기 애플리케이션은, JAVA 코드로 구현되는 것을 특징으로 한다.In addition, the application is characterized in that it is implemented in JAVA code.

또한, 본 발명은 네이티브 라이브러리 접근 제어 방법으로서, 애플리케이션로부터의 네이티브 라이브러리 로드 요청을 수신하는 단계와, 상기 로드 요청 수신 시 상기 네이티브 라이브러리에 대한 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 단계와, 상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하는 단계와, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 단계를 포함한다.The present invention also provides a native library access control method, comprising: receiving a native library load request from an application, updating the access control policy for the native library upon receiving the load request, and then calling the native library And authenticating the application by loading the access control policy when the native library is called, and blocking the call of the native library requested to be loaded from the application when the authentication fails.

또한, 상기 애플리케이션을 인증하는 단계는, 상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 복호화하는 단계와, 상기 복호화된 접근 제어 정책으로부터 상기 네이티브 라이브러리로의 접근이 허용되는 화이트리스트를 추출하는 단계와, 상기 애플리케이션의 정보가 상기 화이트리스트에 존재하는지 여부를 검사하여 인증을 수행하는 단계를 포함하는 것을 특징으로 한다.In addition, authenticating the application may include loading and decrypting the access control policy when the native library is called, and extracting a whitelist from which the access control policy is allowed to access from the decrypted access control policy. And checking whether the information of the application exists in the whitelist and performing authentication.

또한, 상기 인증을 수행하는 단계는, 상기 애플리케이션의 정보가 상기 화이트리스트에 없는 경우 상기 애플리케이션에 대한 인증이 실패한 것으로 판단하는 것을 특징으로 한다.The performing of the authentication may include determining that the authentication of the application has failed when the information of the application is not in the white list.

또한, 상기 애플리케이션에 대한 상기 인증이 성공하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리를 로드시키는 단계를 더 포함하는 것을 특징으로 한다.The method may further include loading the native library requested to be loaded from the application when the authentication of the application succeeds.

또한, 상기 네이티브 라이브러리는, JVM의 네이티브 레벨에 위치하며, JNI 인터페이스를 통해 상기 애플리케이션에 의해 로드되는 것을 특징으로 한다.In addition, the native library is located at the native level of the JVM, characterized in that the loading by the application through the JNI interface.

또한, 상기 접근 제어 정책은, 응용레벨의 업데이트부로부터 업데이트된 후, 암호화되어 로드되는 것을 특징으로 한다.In addition, the access control policy is characterized in that after being updated from the update unit of the application level, is encrypted and loaded.

또한, 상기 화이트리스트는, 상기 네이티브 라이브러리의 로드가 허용되는 애플리케이션의 정보를 포함하고 있는 것을 특징으로 한다.In addition, the whitelist is characterized in that it contains information of the application that is allowed to load the native library.

또한, 상기 인증 정보는, 상기 애플리케이션의 서명값, 패키지명, 파일명, 파일크기 또는 해쉬값(hash)중 하나 이상을 포함하는 것을 특징으로 한다.
The authentication information may include one or more of a signature value, a package name, a file name, a file size, or a hash value of the application.

본 발명은 네이티브 라이브러리에 대한 접근 제어에 있어서, 네이티브 라이브러리를 가지도록 구성된 애플리케이션의 실행 시, 네이티브 라이브러리가 클래스 로더(class loader)에 의해 로드되는 시점에 현재 네이티브 라이브러리에 대한 로드를 요청한 애플리케이션을 인증하여 인증 성공된 애플리케이션에 대해서만 네이티브 라이브러리가 로드되도록 제어함으로써, 네이티브 라이브러리의 임의 취득에 따라 제작된 제3자의 애플리케이션에 의한 네이티브 라이브러리 무단 사용을 방지하여 네이티브 라이브러리의 지적재산을 보호할 수 있는 이점이 있다.In the present invention, in access control of a native library, when an application configured to have a native library is executed, the present invention authenticates an application that has requested to load the current native library at the time when the native library is loaded by a class loader. By controlling the native library to be loaded only for the successful application, there is an advantage of protecting the intellectual property of the native library by preventing unauthorized use of the native library by a third-party application produced by acquiring the native library.

도 1은 종래 네이티브 라이브러리의 도용을 통한 복제 애플리케이션 제작 개념도,
도 2는 본 발명의 실시 예에 따른 네이티브 라이브러리 접근 제어 장치의 상세 블록 구성도,
도 3은 본 발명의 실시 예에 따른 네이티브 라이브러리 접근 제어를 위한 동작 제어 흐름도.
1 is a conceptual diagram of creating a cloned application by using a conventional native library;
2 is a detailed block diagram of a native library access control apparatus according to an embodiment of the present invention;
3 is an operation control flowchart for native library access control according to an embodiment of the present invention.

이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, with reference to the accompanying drawings will be described in detail the operating principle of the present invention. In the following description of the present invention, if it is determined that a detailed description of a known function or configuration may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted. The following terms are defined in consideration of the functions of the present invention, and may be changed according to the intentions or customs of the user, the operator, and the like. 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.

도 2는 본 발명의 실시 예에 따른 네이티브 라이브러리(native library) 접근 제어 장치의 상세 블록 구성을 도시한 것으로, 호출부(200), 업데이트부(202), 접근 제어 정책(204), 접근 제어부(208), 네이티브 라이브러리 모듈(210) 등을 포함할 수 있다.FIG. 2 illustrates a detailed block diagram of a native library access control apparatus according to an exemplary embodiment of the present invention. The caller 200, the updater 202, the access control policy 204, and the access controller 208, native library module 210, and the like.

이하, 도 2를 참조하여 본 발명의 네이티브 라이브러리 접근 제어 장치의 각 구성요소에서의 동작을 상세히 설명하기로 한다.Hereinafter, an operation of each component of the native library access control apparatus of the present invention will be described in detail with reference to FIG. 2.

먼저, 스마트폰 등의 휴대용 단말기에 설치되는 다수의 애플리케이션(application) 중에서 중요한 실행코드가 네이티브 라이브러리로 구성된 임의의 애플리케이션에 대해 사용자로부터의 실행 요청이 있을 수 있다. 위와 같은 실행 요청에 따라 애플리케이션이 구동되는 경우, 해당 애플리케이션은 네이티브(native) 레벨이 위치한 네이티브 라이브러리(206)와의 연동을 위해 네이티브 라이브러리(206)를 로드(load)하게 된다.First, there may be a request for execution from a user for any application whose important executable code is composed of a native library among a plurality of applications installed in a portable terminal such as a smartphone. When the application is driven according to the above execution request, the application loads the native library 206 for interworking with the native library 206 where the native level is located.

호출부(200)는 네이티브 라이브러리(206)를 호출하는 소프트웨어 모듈(software module)로서 애플리케이션이 구동되어 네이티브 라이브러리(206)를 로드하는 경우, 애플리케이션으로부터 로드 요청된 해당 네이티브 라이브러리(206)를 호출한다.When the application is driven to load the native library 206 as a software module calling the native library 206, the calling unit 200 calls the corresponding native library 206 requested to be loaded from the application.

이때, 예를 들어 애플리케이션은 JAVA 코드로 구현될 수 있으며, 이와 같이 JAVA 코드로 구현되는 경우 JNI(JAVA Native Interface)를 통해 Native상에 존재하는 애플리케이션의 실행 코드인 네이티브 라이브러리 모듈(210)을 로드할 수 있다. 즉, 네이티브 라이브러리 모듈(210)은 애플리케이션의 중요한 실행 코드를 저장하고 있는 소프트웨어 모듈로서 애플리케이션이 JAVA 코드로 구현되는 경우 JNI를 통해 애플리케이션의 JAVA와 연동함으로써 애플리케이션에 대한 디컴파일 이슈(decompile issue)를 완화시킬 수 있다.In this case, for example, the application may be implemented with JAVA code. When the application is implemented with JAVA code, the native library module 210, which is executable code of an application existing on Native, may be loaded through JNI (JAVA Native Interface). Can be. That is, the native library module 210 is a software module that stores the important executable code of the application. When the application is implemented with JAVA code, the native library module 210 works with JAVA of the application through JNI to alleviate the decompile issue for the application. You can.

또한, 호출부(200)는 애플리케이션의 중요한 실행 코드가 저장되어 있는 네이티브 라이브러리(206)의 보호를 위해서, Native 레벨에 존재하는 해당 네이티브 라이브러리 모듈(210)을 로드시키기 전에 먼저 업데이트부(202)를 제어하여 네이티브 라이브러리(206)에 대한 접근 제어 정책이 업데이트(update)되도록 하고, 접근 제어 정책에 대한 업데이트가 완료된 경우 Native 레벨에 존재하는 네이티브 라이브러리(206)를 호출하게 된다. In addition, the caller 200 may first update the updater 202 before loading the corresponding native library module 210 existing at the native level in order to protect the native library 206 in which important executable code of the application is stored. By controlling, the access control policy for the native library 206 is updated, and when the update of the access control policy is completed, the native library 206 existing in the native level is called.

업데이트부(202)는 호출부(200)의 제어에 따라 네이티브 라이브러리(206)에 접근할 수 있는 애플리케이션의 서명값(sign) 또는 패키지명(package name)에 대한 정보를 가지고 있는 접근 제어 정책을 업데이트하게 된다. 이때, 위와 같이 접근 제어정책에 포함되는 정보 즉, 인증 수단으로 사용될 수 있는 애플리케이션의 서명값, 패키지명 등은 간단한 실시예를 적시한 것으로, 이외에도 무결성을 확인하는 CRC, SHA, MD5 등의 해쉬(hash)값을 포함하여 파일명, 파일 크기 등 다양한 정보가 사용될 수 있다. 이하, 본 발명의 실시예에서는 위와 같은 인증정보로 사용될 수 있는 정보 중 애플리케이션의 서명값 또는 패키지명을 예를 들어 설명하나 본 발명이 이에 한정되는 것은 아니다.The updater 202 updates an access control policy having information on a signature value or a package name of an application that can access the native library 206 under the control of the caller 200. Done. At this time, the information included in the access control policy, that is, the signature value, package name, etc. of the application that can be used as the authentication means is a simple embodiment timely, in addition to the hash (CRC, SHA, MD5, etc. to check integrity) Various information such as file name and file size can be used, including the hash value. Hereinafter, in the embodiment of the present invention, the signature value or package name of the application is described as an example of information that can be used as the authentication information, but the present invention is not limited thereto.

또한, 이와 같은 접근 제어 정책은 예를 들어 네이티브 라이브러리(206)로의 접근이 허용되는 애플리케이션의 서명값 또는 패키지명에 대한 화이트리스트(white list) 정보를 포함할 수 있으며, 이와 같은 접근 제어 정책은 보안을 위해 암호화되어 네이티브 라이브러리(206)의 접근 제어부(208)로 전송될 수 있다.In addition, such an access control policy may include, for example, white list information about the signature value or package name of an application that is allowed to access the native library 206, and such an access control policy may be secured. May be encrypted and transmitted to the access control unit 208 of the native library 206.

위와 같은 호출부(200)로부터의 네이티브 라이브러리(206)에 대한 호출은 네이티브 라이브러리(206)에 존재하는 접근 제어부(208)로 전송된다. The call to the native library 206 from the caller 200 as described above is transmitted to the access control unit 208 existing in the native library 206.

접근 제어부(208)는 애플리케이션의 중요한 실행 코드를 저장하고 있는 네이티브 라이브러리 모듈(210)에 대한 접근 제어를 수행하는 소프트웨어 모듈로서, 위와 같이 호출부(200)로부터 네이티브 라이브러리(206)가 로드되는 시점에 가장 먼저 호출되어 네이티브 라이브러리(206)를 로드 요청한 애플리케이션에 대해 인증을 수행한다.The access control unit 208 is a software module that performs access control on the native library module 210 that stores important executable code of an application. When the native library 206 is loaded from the caller 200 as described above, Called first to perform authentication against the application that requested to load the native library 206.

즉, 접근 제어부(208)는 네이티브 라이브러리(206)가 호출되는 경우 업데이트부에서 업데이트된 접근 제어 정책(204)을 로드하여 복호화하고, 복호화된 접근 제어 정책(204)으로부터 네이티브 라이브러리(206)에 대한 접근이 허용된 애플리케이션의 인증정보를 포함하고 있는 화이트리스트를 추출하여 네이티브 라이브러리(206)의 로드를 요청한 애플리케이션에 대해 인증을 수행한다. That is, when the native library 206 is called, the access controller 208 loads and decrypts the updated access control policy 204 in the updater, and decodes the access control policy 204 for the native library 206 from the decrypted access control policy 204. The whitelist including the authentication information of the application to which the access is allowed is extracted to perform authentication on the application that has requested to load the native library 206.

이때, 애플리케이션의 인증정보는 예를 들어 애플리케이션의 서명값 또는 패키지명 등이 될 수 있으며, 이와 같은 서명값 또는 패키지명은 네이티브 라이브러리(206)를 최초로 저작한 원 저작자의 서명값과 애플리케이션에 대한 패키지명이 될 수 있다. In this case, the authentication information of the application may be, for example, a signature value or a package name of the application, and the signature value or package name may be a signature value of the original author who originally created the native library 206 and a package name for the application. Can be.

위와 같은 애플리케이션에 대한 인증 수행에 있어서, 접근 제어부(200)는 네이티브 라이브러리(206)를 호출한 애플리케이션의 서명값과 패키지명을 추출한 후, 추출된 서명값 또는 패키지명이 화이트리스트상에 존재하는지 여부를 검사하여 화이트리스트에 존재하는 경우에는 해당 애플리케이션과 연동하도록 구성된 네이티브 라이브러리 모듈(210)을 정상적으로 호출함으로써 애플리케이션이 정상적으로 동작할 수 있도록 한다.In performing authentication for the above application, the access control unit 200 extracts the signature value and package name of the application calling the native library 206, and then checks whether the extracted signature value or package name exists on the whitelist. If the check exists in the white list, the application is normally operated by normally calling the native library module 210 configured to interwork with the corresponding application.

그러나, 네이티브 라이브러리(206)를 호출한 애플리케이션의 서명값과 패키지명이 화이트리스트상에 존재하지 않는 경우, 접근 제어부(208)는 해당 애플리케이션과 연동하도록 구성된 네이티브 라이브러리 모듈(210)이 호출되지 않도록 제어하여 비정상적인 애플리케이션에 의한 네이티브 라이브러리 모듈(210) 무단 사용이 방지될 수 있도록 한다.However, when the signature value and the package name of the application calling the native library 206 do not exist on the whitelist, the access control unit 208 controls the native library module 210 configured to interoperate with the application not to be called. Unauthorized use of the native library module 210 by abnormal applications can be prevented.

도 3은 본 발명의 실시 예에 따른 네이티브 라이브러리 접근 제어 장치에서 네이티브 라이브러리에 대한 접근을 제어하기 위한 동작 제어 흐름을 도시한 것이다. 이하, 도 2 및 도 3을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.3 illustrates an operation control flow for controlling access to a native library in a native library access control apparatus according to an embodiment of the present invention. Hereinafter, embodiments of the present invention will be described in detail with reference to FIGS. 2 and 3.

먼저, 스마트폰 등의 휴대용 단말기에 설치되는 다수의 애플리케이션 중에서 중요한 실행코드가 네이티브 라이브러리(206)로 구성된 임의의 애플리케이션에 대해 사용자로부터의 실행 요청이 있을 수 있다.First, there may be a request for execution from a user for any application whose important executable code is composed of the native library 206 among a plurality of applications installed in a portable terminal such as a smartphone.

위와 같이 애플리케이션에 대한 실행 요청에 따라 애플리케이션이 구동되는 경우(S300), 해당 애플리케이션이 디컴파일의 방지를 위해 중요한 실행 코드가 네이티브 라이브러리(206)로 구성된 경우에 애플리케이션은 호출부(200)를 통해 네이티브 라이브러리(206)를 로드하도록 요청하게 된다(S302).When the application is driven according to the execution request for the application as described above (S300), the application is native through the calling unit 200 when the application is composed of the native library 206 important to prevent decompilation of the application. A request is made to load the library 206 (S302).

이때, 예를 들어 애플리케이션은 JAVA 코드로 구현될 수 있으며, 이와 같이 JAVA 코드로 구현되는 경우 JNI(JAVA Native Interface)를 통해 Native상에 존재하는 애플리케이션의 실행 코드인 네이티브 라이브러리 모듈(210)을 로드할 수 있다. In this case, for example, the application may be implemented with JAVA code. When the application is implemented with JAVA code, the native library module 210, which is executable code of an application existing on Native, may be loaded through JNI (JAVA Native Interface). Can be.

즉, 네이티브 라이브러리 모듈(210)은 애플리케이션의 중요한 실행 코드를 저장하고 있는 소프트웨어 모듈로서 애플리케이션이 JAVA 코드로 구현되는 경우 JNI를 통해 애플리케이션의 JAVA와 연동함으로써 애플리케이션에 대한 디컴파일 이슈를 완화시킬 수 있다.That is, the native library module 210 is a software module that stores important executable code of an application. When the application is implemented with JAVA code, the native library module 210 may mitigate the decompilation issue for the application by interworking with the JAVA of the application through JNI.

위와 같이, 애플리케이션으로부터 네이티브 라이브러리(206)에 대한 로드 요청이 있는 경우, 호출부(200)는 애플리케이션의 중요한 실행 코드가 저장되어 있는 네이티브 라이브러리(206)의 보호를 위해서, Native 레벨에 존재하는 해당 네이티브 라이브러리 모듈(210)을 로드시키기 전에 먼저 업데이트부(202)를 제어하여 네이티브 라이브러리(206)에 대한 접근 제어 정책(204)이 업데이트되도록 한다. 이에 따라, 업데이트부(202)는 네이티브 라이브러리(206)에 접근할 수 있는 애플리케이션의 서명값 또는 패키지명에 대한 정보를 가지고 있는 접근 제어 정책(204)을 업데이트하게 된다(S304). 이때, 위와 같이 접근 제어정책에 포함되는 정보 즉, 인증 수단으로 사용될 수 있는 애플리케이션의 서명값, 패키지명 등은 간단한 실시예를 적시한 것으로, 이외에도 무결성을 확인하는 CRC, SHA, MD5 등의 해쉬(hash)값을 포함하여 파일명, 파일 크기 등 다양한 정보가 사용될 수 있다. 이하, 본 발명의 실시예에서는 위와 같은 인증정보로 사용될 수 있는 정보 중 애플리케이션의 서명값 또는 패키지명을 예를 들어 설명하나 본 발명이 이에 한정되는 것은 아니다.As described above, when there is a load request from the application to the native library 206, the calling unit 200, in order to protect the native library 206 that stores the important executable code of the application, the corresponding native present in the Native level Before loading the library module 210, the update unit 202 is first controlled so that the access control policy 204 for the native library 206 is updated. Accordingly, the updater 202 updates the access control policy 204 having information on the signature value or package name of the application that can access the native library 206 (S304). At this time, the information included in the access control policy, that is, the signature value, package name, etc. of the application that can be used as the authentication means is a simple embodiment timely, in addition to the hash (CRC, SHA, MD5, etc. to check integrity) Various information such as file name and file size can be used, including the hash value. Hereinafter, in the embodiment of the present invention, the signature value or package name of the application is described as an example of information that can be used as the authentication information, but the present invention is not limited thereto.

또한, 이와 같은 접근 제어 정책(204)은 예를 들어 네이티브 라이브러리(206)로의 접근이 허용되는 애플리케이션의 서명값 또는 패키지명에 대한 화이트리스트(white list) 정보를 포함할 수 있으며, 이와 같은 접근 제어 정책(204)은 보안을 위해 암호화되어 네이티브 라이브러리(206)의 접근 제어부(208)로 전송될 수 있다.In addition, such an access control policy 204 may include, for example, white list information about the signature value or package name of an application that is allowed to access the native library 206, such access control. The policy 204 may be encrypted for security and sent to the access control 208 of the native library 206.

위와 같이 접근 제어 정책(204)에 대한 업데이트가 완료된 경우, 호출부(200)는 Native 레벨에 존재하는 네이티브 라이브러리(206)를 호출하게 된다(S306). When the update on the access control policy 204 is completed as described above, the calling unit 200 calls the native library 206 existing in the native level (S306).

이때, 위와 같은 네이티브 라이브러리(206)의 호출은 애플리케이션의 중요한 실행 코드를 저장하고 있는 네이티브 라이브러리 모듈(210)의 접근을 제어하고 있는 접근 제어부(208)로 전송되며, 접근 제어부(208)는 이와 같이 네이티브 라이브러리(206)가 로드되는 시점에 가장 먼저 호출되어 네이티브 라이브러리(206)를 로드 요청한 애플리케이션에 대해 인증을 수행한다.At this time, the call of the native library 206 as described above is transmitted to the access control unit 208 that controls the access of the native library module 210 that stores the important executable code of the application, the access control unit 208 It is called first when the native library 206 is loaded to perform authentication for the application that requested to load the native library 206.

즉, 접근 제어부(208)는 네이티브 라이브러리(206)가 호출되는 경우 업데이트부(202)에서 업데이트된 접근 제어 정책(204)을 로드하여 복호화하고, 복호화된 접근 제어 정책으로부터 네이티브 라이브러리에 대한 접근이 허용된 애플리케이션의 인증정보를 포함하고 있는 화이트리스트를 추출한다(S308). That is, when the native library 206 is called, the access controller 208 loads and decrypts the updated access control policy 204 in the updater 202, and allows access to the native library from the decrypted access control policy. The white list including the authentication information of the application is extracted (S308).

이때, 애플리케이션의 인증정보는 예를 들어 애플리케이션의 서명값 또는 패키지명 등이 될 수 있으며, 이와 같은 서명값 또는 패키지명은 네이티브 라이브러리(206)를 최초로 저작한 원 저작자의 서명값과 애플리케이션에 대한 패키지명이 될 수 있다. 즉, 예를 들어 위와 같은 네이티브 라이브러리(206)가 특정 업체에서 제작한 애플리케이션의 엔진모듈인 경우 위 서명값은 해당 업체의 고유한 서명값이 될 수 있으며, 애플리케이션 패키지명은 예를 들어 "kakao talk" 등이 될 수 있다. 따라서, 다른 패키지명을 사용하는 애플리케이션이 해당 업체에서 제작한 네이티브 라이브러리를 로드하는 경우 패키지명이 틀리게 됨으로서 네이티브 라이브러리에 대한 호출이 제어될 수 있도록 하는 것이다.In this case, the authentication information of the application may be, for example, a signature value or a package name of the application, and the signature value or package name may be a signature value of the original author who originally created the native library 206 and a package name for the application. Can be. That is, for example, when the native library 206 as described above is an engine module of an application produced by a specific company, the signature value may be a unique signature value of the corresponding company, and the application package name may be, for example, "kakao talk". And so on. Therefore, if an application using a different package name loads a vendor-generated native library, the package name is wrong, so that calls to the native library can be controlled.

이어, 접근 제어부(208)는 네이티브 라이브러리(206)를 호출한 애플리케이션의 서명값과 패키지명 등의 애플리케이션 정보를 추출한 후(S310), 추출된 서명값 또는 패키지명이 화이트리스트상에 존재하는지 여부를 검사하여 접근 허용된 애플리케이션인지에 대한 인증을 수행한다(S312).Subsequently, the access control unit 208 extracts application information such as a signature value and a package name of the application calling the native library 206 (S310), and then checks whether the extracted signature value or package name exists on the whitelist. In step S312, authentication is performed as to whether the application is permitted access.

이때 만일, 네이티브 라이브러리(206)를 호출한 애플리케이션의 서명값과 패키지명이 화이트리스트상에 존재하지 않는 경우, 접근 제어부(208)는 해당 애플리케이션이 정상적인 애플리케이션이 아닌 것으로 판단하여 네이티브 라이브러리 모듈(210)이 호출되지 않도록 제어하여(S314) 비정상적인 애플리케이션에 의한 네이티브 라이브러리 모듈(210) 무단 사용이 방지될 수 있도록 한다.At this time, if the signature value and the package name of the application calling the native library 206 are not present on the whitelist, the access control unit 208 determines that the application is not a normal application and the native library module 210 Controlling not to be called (S314) to prevent unauthorized use of the native library module 210 by the abnormal application.

그러나, 네이티브 라이브러리(206)를 호출한 애플리케이션의 서명값과 패키지명이 화이트리스트상에 존재하는 경우, 접근 제어부(208)는 해당 애플리케이션이 정상적인 애플리케이션인 것으로 판단하여 네이티브 라이브러리 모듈(210)을 호출하여 애플리케이션과 연동될 수 있도록 함으로써 애플리케이션이 정상적으로 동작할 수 있도록 한다(S316).However, when the signature value and the package name of the application calling the native library 206 exist on the whitelist, the access control unit 208 determines that the application is a normal application and calls the native library module 210 to determine the application. By allowing the application to work with the application (S316).

상기한 바와 같이, 네이티브 라이브러리에 대한 접근 제어에 있어서, 네이티브 라이브러리를 가지도록 구성된 애플리케이션의 실행 시, 네이티브 라이브러리가 클래스 로더(class loader)에 의해 로드되는 시점에 현재 네이티브 라이브러리에 대한 로드를 요청한 애플리케이션을 인증하여 인증 성공된 애플리케이션에 대해서만 네이티브 라이브러리가 로드되도록 제어함으로써, 네이티브 라이브러리의 임의 취득에 따라 제작된 제3자의 애플리케이션에 의한 네이티브 라이브러리 무단 사용을 방지시켜 네이티브 라이브러리의 지적재산을 보호할 수 있도록 한다.As described above, in access control to a native library, when an application configured to have a native library is executed, the application that has requested to load the current native library at the time when the native library is loaded by a class loader is selected. By ensuring that native libraries are loaded only for applications that have been authenticated and certified, the intellectual property of the native libraries can be protected by preventing unauthorized use of the native libraries by third-party applications produced by acquiring the native libraries.

한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention. Accordingly, the scope of the invention should not be limited by the described embodiments but should be defined by the appended claims.

200 : 호출부 202 : 업데이트부
204 : 접근 제어 정책 206 : 네이티브 라이브러리
208 : 접근 제어부 210 : 네이티브 라이브러리 모듈
200: caller 202: updater
204: Access Control Policy 206: Native Library
208: access control unit 210: native library module

Claims (18)

삭제delete 네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 접근 제어부는, 상기 네이티브 라이브러리가 로드되는 시점에 가장 먼저 호출되어 상기 네이티브 라이브러리를 로드한 상기 애플리케이션을 인증하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
The access control unit is a native library access control device, characterized in that to authenticate the application that is called first when the native library is loaded to load the native library.
네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 접근 제어부는, 상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 복호화하여 상기 네이티브 라이브러리로의 접근이 허용되는 화이트리스트를 추출하고, 상기 애플리케이션의 정보가 상기 화이트리스트에 없는 경우 상기 애플리케이션에 대하여 인증 실패한 것으로 판단하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
When the native library is called, the access controller decrypts the access control policy to extract a whitelist that allows access to the native library, and authenticates the application when information of the application is not in the whitelist. Native library access control device characterized in that it determines to fail.
네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 접근 제어부는, 상기 애플리케이션에 대한 인증이 성공하는 경우, 상기 네이티브 라이브러리를 로드하여 상기 애플리케이션으로 연결시키는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
And the access control unit loads the native library and connects the application to the application when authentication of the application is successful.
네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 접근 제어부는, 상기 호출부로부터 JNI(Java native interface)를 통해 상기 네이티브 라이브러리의 호출을 수신하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
And the access control unit receives a call of the native library from the caller through a Java native interface (JNI).
네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 네이티브 라이브러리는, JVM(Java virtual machine)의 네이티브 레벨에 위치하여 상기 애플리케이션에 의해 로드되는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
And the native library is located at a native level of a Java virtual machine and loaded by the application.
네이티브 라이브러리(native library)에 대한 접근 제어 정책을 업데이트하는 업데이트부와,
애플리케이션로부터의 상기 네이티브 라이브러리 로드 요청 시, 상기 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 호출부와,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하고, 상기 인증이 실패하는 경우 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 접근 제어부를 포함하되,
상기 접근 제어 정책은, 암호화되어 상기 접근 제어부로 로드되는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
An updater for updating the access control policy for the native library,
A caller which calls the native library after updating the access control policy when the native library load request is made from an application;
When the native library is called, the access control policy is loaded to authenticate the application, and if the authentication fails, and includes an access control unit for blocking the call of the native library requested to be loaded from the application,
And the access control policy is encrypted and loaded into the access control unit.
제 3 항에 있어서,
상기 화이트리스트(white list)는,
상기 네이티브 라이브러리의 로드가 허용되는 인증 정보를 포함하고 있는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
The method of claim 3, wherein
The white list is
The native library access control device, characterized in that it comprises authentication information that is allowed to load the native library.
제 8 항에 있어서,
상기 인증 정보는,
상기 애플리케이션의 서명값, 패키지명, 파일명, 파일크기 또는 해쉬값(hash)중 하나 이상을 포함하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
The method of claim 8,
The authentication information,
And at least one of a signature value, a package name, a file name, a file size, and a hash value of the application.
제 2 항에 있어서,
상기 애플리케이션은,
JAVA 코드로 구현되는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 장치.
The method of claim 2,
The application,
Native library access control device, characterized in that implemented in JAVA code.
삭제delete 네이티브 라이브러리 접근 제어장치의 호출부에서 애플리케이션로부터의 네이티브 라이브러리 로드 요청을 수신하는 단계와,
상기 호출부에서 상기 로드 요청 수신 시 상기 네이티브 라이브러리에 대한 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 단계와,
상기 네이티브 라이브러리가 호출되는 경우 상기 네이티브 라이브러리 접근 제어장치의 접근 제어부에서 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하는 단계와,
상기 인증이 실패하는 경우 상기 접근 제어부에서 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 단계를 포함하되,
상기 애플리케이션을 인증하는 단계는,
상기 네이티브 라이브러리가 호출되는 경우 상기 접근 제어부에서 상기 접근 제어 정책을 로드하여 복호화하는 단계와,
상기 접근 제어부에서 상기 복호화된 접근 제어 정책으로부터 상기 네이티브 라이브러리로의 접근이 허용되는 화이트리스트를 추출하는 단계와,
상기 접근 제어부에서 상기 애플리케이션의 정보가 상기 화이트리스트에 존재하는지 여부를 검사하여 인증을 수행하는 단계
를 포함하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
Receiving a native library load request from an application at a caller of the native library access controller;
Calling the native library after updating the access control policy for the native library upon receiving the load request from the caller;
Authenticating the application by loading the access control policy in an access control unit of the native library access control device when the native library is called;
Blocking the call of the native library requested to be loaded from the application in the access controller when the authentication fails,
The step of authenticating the application,
Loading and decoding the access control policy in the access controller when the native library is called;
Extracting, from the decoded access control policy, the white list allowing access to the native library;
Performing authentication by checking whether the information of the application exists in the white list in the access control unit;
Native library access control method comprising a.
제 12 항에 있어서,
상기 인증을 수행하는 단계는,
상기 애플리케이션의 정보가 상기 화이트리스트에 없는 경우 상기 접근 제어부에서 상기 애플리케이션에 대한 인증이 실패한 것으로 판단하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
13. The method of claim 12,
The step of performing the authentication includes:
And if the information of the application is not in the white list, the access controller determines that authentication of the application has failed.
네이티브 라이브러리 접근 제어장치의 호출부에서 애플리케이션로부터의 네이티브 라이브러리 로드 요청을 수신하는 단계와,
상기 호출부에서 상기 로드 요청 수신 시 상기 네이티브 라이브러리에 대한 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 단계와,
상기 네이티브 라이브러리가 호출되는 경우 상기 네이티브 라이브러리 접근 제어장치의 접근 제어부에서 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하는 단계와,
상기 인증이 실패하는 경우 상기 접근 제어부에서 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 단계를 포함하되,
상기 애플리케이션에 대한 상기 인증이 성공하는 경우 상기 접근 제어부에서 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리를 로드시키는 단계를 더 포함하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
Receiving a native library load request from an application at a caller of the native library access controller;
Calling the native library after updating the access control policy for the native library upon receiving the load request from the caller;
Authenticating the application by loading the access control policy in an access control unit of the native library access control device when the native library is called;
Blocking the call of the native library requested to be loaded from the application in the access controller when the authentication fails,
And loading the native library requested to be loaded from the application in the access control unit when the authentication of the application is successful.
네이티브 라이브러리 접근 제어장치의 호출부에서 애플리케이션로부터의 네이티브 라이브러리 로드 요청을 수신하는 단계와,
상기 호출부에서 상기 로드 요청 수신 시 상기 네이티브 라이브러리에 대한 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 단계와,
상기 네이티브 라이브러리가 호출되는 경우 상기 네이티브 라이브러리 접근 제어장치의 접근 제어부에서 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하는 단계와,
상기 인증이 실패하는 경우 상기 접근 제어부에서 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 단계를 포함하되,
상기 네이티브 라이브러리는,
JVM의 네이티브 레벨에 위치하며, JNI 인터페이스를 통해 상기 애플리케이션에 의해 로드되는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
Receiving a native library load request from an application at a caller of the native library access controller;
Calling the native library after updating the access control policy for the native library upon receiving the load request from the caller;
Authenticating the application by loading the access control policy in an access control unit of the native library access control device when the native library is called;
Blocking the call of the native library requested to be loaded from the application in the access controller when the authentication fails,
The native library is,
Located at the native level of the JVM, the native library access control method characterized in that it is loaded by the application through a JNI interface.
네이티브 라이브러리 접근 제어장치의 호출부에서 애플리케이션로부터의 네이티브 라이브러리 로드 요청을 수신하는 단계와,
상기 호출부에서 상기 로드 요청 수신 시 상기 네이티브 라이브러리에 대한 접근 제어 정책을 업데이트시킨 후, 상기 네이티브 라이브러리를 호출하는 단계와,
상기 네이티브 라이브러리가 호출되는 경우 상기 네이티브 라이브러리 접근 제어장치의 접근 제어부에서 상기 접근 제어 정책을 로드하여 상기 애플리케이션을 인증하는 단계와,
상기 인증이 실패하는 경우 상기 접근 제어부에서 상기 애플리케이션으로부터 로드 요청된 상기 네이티브 라이브러리의 호출을 차단시키는 단계를 포함하되,
상기 접근 제어 정책은,
응용레벨의 업데이트부로부터 업데이트된 후, 암호화되어 로드되는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
Receiving a native library load request from an application at a caller of the native library access controller;
Calling the native library after updating the access control policy for the native library upon receiving the load request from the caller;
Authenticating the application by loading the access control policy in an access control unit of the native library access control device when the native library is called;
Blocking the call of the native library requested to be loaded from the application in the access controller when the authentication fails,
The access control policy,
Native library access control method, characterized in that after being updated from the update unit of the application level, encrypted and loaded.
제 12 항에 있어서,
상기 화이트리스트는,
상기 네이티브 라이브러리의 로드가 허용되는 인증 정보를 포함하고 있는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
13. The method of claim 12,
The white list,
Native library access control method comprising the authentication information is allowed to load the native library.
제 17 항에 있어서,
상기 인증 정보는,
상기 애플리케이션의 서명값, 패키지명, 파일명, 파일크기 또는 해쉬값(hash)중 하나 이상을 포함하는 것을 특징으로 하는 네이티브 라이브러리 접근 제어 방법.
The method of claim 17,
The authentication information,
And at least one of a signature value, a package name, a file name, a file size, and a hash value of the application.
KR1020120097160A 2012-09-03 2012-09-03 Apparatus and method for controlling access to native library KR101260759B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120097160A KR101260759B1 (en) 2012-09-03 2012-09-03 Apparatus and method for controlling access to native library

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120097160A KR101260759B1 (en) 2012-09-03 2012-09-03 Apparatus and method for controlling access to native library

Publications (1)

Publication Number Publication Date
KR101260759B1 true KR101260759B1 (en) 2013-05-06

Family

ID=48665495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120097160A KR101260759B1 (en) 2012-09-03 2012-09-03 Apparatus and method for controlling access to native library

Country Status (1)

Country Link
KR (1) KR101260759B1 (en)

Similar Documents

Publication Publication Date Title
CN101300583B (en) Simple scalable and configurable secure boot for trusted mobile phones
US9396325B2 (en) Provisioning an app on a device and implementing a keystore
AU2012337403B2 (en) Cryptographic system and methodology for securing software cryptography
US8892876B1 (en) Secured application package files for mobile computing devices
KR101471589B1 (en) Method for Providing Security for Common Intermediate Language Program
JP6227772B2 (en) Method and apparatus for protecting a dynamic library
US8769305B2 (en) Secure execution of unsecured apps on a device
US9135434B2 (en) System and method for third party creation of applications for mobile appliances
US8832783B2 (en) System and method for performing secure communications
KR20140016897A (en) Securing and managing apps on a device
CN103514000A (en) Browser plug-in installation method and device
CN101346727A (en) Program execution control method, device, and execution control program
CN105512576A (en) Method for secure storage of data and electronic equipment
CN104866739A (en) Application program encryption method and application program encryption system in Android system
JP6815386B2 (en) Systems, methods and programs to protect application code
KR20130050664A (en) Apparatas and method of protecting for application data in a portable terminal
CN105320535A (en) Checking method of installation package, client side, server and system
CN103455520A (en) Method and device for accessing Android database
JP5540109B2 (en) System and method for loading application classes
CN114329535A (en) File encryption method and device, electronic equipment and computer readable medium
WO2015154469A1 (en) Database operation method and device
CN107995230B (en) A kind of method for down loading and terminal
CN109995534B (en) Method and device for carrying out security authentication on application program
KR101260759B1 (en) Apparatus and method for controlling access to native library
CN107403103B (en) File decryption method and device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170501

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 7