KR101499535B1 - 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체 - Google Patents

컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체 Download PDF

Info

Publication number
KR101499535B1
KR101499535B1 KR1020130060923A KR20130060923A KR101499535B1 KR 101499535 B1 KR101499535 B1 KR 101499535B1 KR 1020130060923 A KR1020130060923 A KR 1020130060923A KR 20130060923 A KR20130060923 A KR 20130060923A KR 101499535 B1 KR101499535 B1 KR 101499535B1
Authority
KR
South Korea
Prior art keywords
code
virtual
function
actual
document
Prior art date
Application number
KR1020130060923A
Other languages
English (en)
Other versions
KR20140140288A (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 KR1020130060923A priority Critical patent/KR101499535B1/ko
Publication of KR20140140288A publication Critical patent/KR20140140288A/ko
Application granted granted Critical
Publication of KR101499535B1 publication Critical patent/KR101499535B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Abstract

컴퓨터 실행 가능한 어플리케이션 수행 방법은 컴퓨터 실행 장치에서 수행된다. 상기 컴퓨터 실행 가능한 어플리케이션 수행 방법은 (a) 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 단계; 및 (b) 상기 검색된 실제 코드를 복호화하여 상기 가상 코드 대기 영역에 삽입시키는 단계를 포함한다. 이를 통해 실행 코드의 유출 없이 실행 코드에 대한 접근이 가능하고, 해커 등에 의한 리버스 엔지니어링을 예방할 수 있다.

Description

컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체{COMPUTER-EXECUTABLE HYBRID APPLICATION PERFORMING METHOD, COUMPUTER-EXCUTABLE DEVICE AND STORAGE MEDIA PERFORMING THE SAME}
본 발명은 하이브리드 어플리케이션 수행 기술에 관한 것으로, 보다 상세하게는, 실제 코드의 유출없이 실제 코드에 접근 가능한 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체에 관한 것이다.
하이브리드 어플리케이션은 웹 기술을 일반 어플리케이션에 접목하여 적어도 일부의 어플리케이션 코드(예를 들어, 사용자 인터페이스)를 구현할 수 있다. 이러한 구현은 어플리케이션 개발자가 HTML(Hyper Text Markup Language), 자바스크립트(Java Script), CSS(Cascading Style Sheets) 등과 같은 웹 표준 리소스를 활용하도록 할 수 있고, 결과적으로, 이렇게 구현된 어플리케이션 코드는 플랫폼 독립적으로 사용될 수 있다.
하이브리드 어플리케이션은 특히, 비즈니스 로직의 경우 자바스크립트를 통해 개발될 수 있다. 자바스크립트는 어플리케이션 개발 과정에서 협업하는 협력 개발자 등에 노출될 수 있다. 이러한 노출로 인하여, 하이브리드 어플리케이션은 해커와 같은 사용자에 의하여 역컴파일(decompile)을 통한 리버스 엔지니어링될 수 있는 문제점이 있다.
한국공개특허 제10-2011-0093468호(2011.08.18.)은 부분적으로 암호화된 어플리케이션 컨텐츠를 이용하는 사용자 단말 장치에 관한 기술로, 실행 가능한 컨텐츠인 어플리케이션을 사용자 단말로 안전하게 다운로드하고, 설치, 사용 및 업데이트 할 수 있는 효과가 있다.
한국공개특허 제10-2012-0029683호(2012.03.27.)은 어플리케이션에 포함된 리소스에 대해 ADRM(Application Digital Rights Management)을 적용하여, 암호화된 리소스를 애플리케이션 패키징 파일에 포함시켜 배포하는 애플리케이션에 대한 리소스 보호 시스템에 관한 기술이다.
이러한 선행기술들은 플랫폼 종속적인 리소스 암호화를 개시하므로 어플리케이션 개발자는 이종의 플랫폼 마다 별개의 어플리케이션 코드를 작성해야 한다. 또한, 이러한 선행기술들은 전체 리소스의 암호화로 인하여 하이브리드 어플리케이션 개발 과정에서 디자이너 등과의 협업을 어렵게 하는 문제점을 가진다.
또한, 이러한 선행기술들은 서버와 클라이언트 간의 통신 과정에서 적용할 수 있으므로, 하이브리드 어플리케션과 같이 사용자에게 항상 노출되고 모바일 기기에 저장되는 환경에서 적용하기 어려운 어려운 문제점을 가진다.
한국공개특허 제10-2011-0093468호(2011.08.18.) 한국공개특허 제10-2012-0029683호(2012.03.27.)
본 발명은 실행 코드의 유출없이 실행 코드에 접근 가능한 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법을 제공하고자 한다.
본 발명은 실제 코드를 감추면서 협력 개발자(예를 들어, 디자이너)와 협업 가능한 가상 코드를 제공할 수 있는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법을 제공하고자 한다.
본 발명은 실제 코드를 휘발성 메모리에 일시적으로 유지하여 해커 등에 의한 리버스 엔지니어링을 어렵게 할 수 있는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법을 제공하고자 한다.
실시예들 중에서, 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법은 (a) 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 단계; 및 (b) 상기 검색된 실제 코드를 복호화하여 상기 가상 코드 대기 영역에 삽입시키는 단계를 포함한다.
일 실시예에서, 상기 가상 코드는 스크립트(Java Script)에 있는 가상 함수, HTML 마크 업 정보, 가상 리소스(CSS) 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 (a) 단계는 상기 문서의 스크립트에 있는 특정 함수가 호출되면 상기 특정 함수가 상기 가상 함수인지 여부를 체크하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 (a) 단계는 상기 특정 함수가 실행 코드를 포함하지 않는 함수에 해당하는 경우에는 상기 특정 함수를 상기 가상 함수로 결정할 수 있다.
일 실시예에서, 상기 (a) 단계는 상기 가상 함수가 호출되면 상기 문서의 문서 객체 모델(DOM, Document Object Model)에 진입하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 (a) 단계는 상기 진입 후에 상기 실제 함수가 수행되기 전까지 상기 가상 코드 대기 영역을 상기 문서 객체 모델 내에 생성하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 가상 코드 대기 영역은 비휘발성 메모리에 저장되지 아니하고 휘발성 메모리 상에 존재할 수 있다.
일 실시예에서, 상기 (a) 단계는 해시 함수(hashing function)를 통해 상기 가상 함수에 대한 해시 값을 계산하는 단계; 및 상기 가상 함수에 대한 해시 값을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 (a) 단계는 가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 (b) 단계는 상기 가상 코드 대기 영역에 대기 중인 가상 함수를 상기 복호화된 실제 함수로 치환하는 단계를 포함할 수 있다.
일 실시예에서, 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법은 (c) 상기 가상 함수 수행의 대기를 해제하고 상기 삽입된 실제 함수를 수행하여 상기 문서의 렌더링을 완료하는 단계를 더 포함할 수 있다.
일 실시예에서, 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법은 특정 시간 내에 상기 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 상기 문서에 대한 렌더링이 종료된 경우 상기 가상 코드 대기 영역을 삭제하는 단계를 더 포함할 수 있다.
실시예들 중에서, 컴퓨터 실행 장치는 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 코드 검색부; 상기 검색된 실제 코드를 복호화하는 코드 보안부; 및 상기 가상 코드 대기 영역에 삽입시키는 실제 코드 처리부를 포함한다.
일 실시예에서, 상기 가상 코드는 스크립트(Java Script)에 있는 가상 함수, HTML 마크 업 정보, 가상 리소스(CSS) 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 컴퓨터 실행 장치는 상기 문서의 스크립트에 있는 특정 함수가 호출되면 상기 특정 함수가 상기 가상 함수인지 여부를 체크하는 가상 코드 처리부를 더 포함할 수 있다.
일 실시예에서, 상기 가상 코드 처리부는 상기 특정 함수가 실행 코드를 포함하지 않는 함수에 해당하는 경우에는 상기 특정 함수를 상기 가상 함수로 결정할 수 있다.
일 실시예에서, 상기 가상 코드 처리부는 상기 가상 함수가 호출되면 상기 문서의 문서 객체 모델(DOM, Document Object Model)에 진입하는 것을 특징으로 할 수 있다.
일 실시예에서, 상기 가상 코드 처리부는 상기 진입 후에 상기 실제 함수가 수행되기 전까지 상기 가상 코드 대기 영역을 상기 문서 객체 모델 내에 생성할 수 있다.
일 실시예에서, 상기 가상 코드 대기 영역은 비휘발성 메모리에 저장되지 아니하고 휘발성 메모리 상에 존재할 수 있다.
일 실시예에서, 상기 코드 검색부는 해시 함수(hashing function)를 통해 상기 가상 함수에 대한 해시 값을 계산하고, 상기 가상 함수에 대한 해시 값을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출할 수 있다.
일 실시예에서, 상기 코드 검색부는 가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출할 수 있다.
일 실시예에서, 컴퓨터 실행 장치는 상기 가상 코드 대기 영역에 대기 중인 가상 함수를 상기 복호화된 실제 함수로 치환하는 실제 코드 처리부를 더 포함할 수 있다.
일 실시예에서, 컴퓨터 실행 장치는 실제 함수가 복호화하여 가상 코드 영역에 삽입된 경우 상기 가상 함수 수행의 대기를 해제하고 상기 삽입된 실제 함수를 수행하여 상기 문서의 렌더링을 완료하는 문서 렌더링부를 더 포함할 수 있다.
일 실시예에서, 상기 문서 렌더링부는 특정 시간 내에 상기 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 상기 문서에 대한 렌더링이 종료된 경우 상기 가상 코드 대기 영역을 삭제할 수 있다.
실시예들 중에서, 컴퓨터 실행 장치에서 수행되는 컴퓨터 프로그램을 기록한 기록매체는 (a) 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 기능; 및 (b) 상기 검색된 실제 코드를 복호화하여 상기 가상 코드 대기 영역에 삽입시키는 기능을 포함한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법과 이와 관련된 기술들은 실행 코드의 유출없이 실행 코드에 접근 할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법과 이와 관련된 기술들은 실제 코드를 감추면서 협력 개발자(예를 들어, 디자이너)와 협업 가능한 가상 코드를 제공할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법과 이와 관련된 기술들은 실제 코드를 휘발성 메모리에 일시적으로 유지하여 해커 등에 의한 리버스 엔지니어링을 어렵게 할 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법의 개념도이다.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 실행 장치를 설명하는 블록도이다.
도 3은 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법을 설명한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법을 설명한 흐름도이다.
도 5는 가상 함수를 설명한 예시도이다.
도 6은 실제 함수를 설명한 예시도이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시 예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시 예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시 예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 발명에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법에 대한 개념도이다.
도 1을 참조하면, 하이브리드 어플리케이션은 웹 영역(110), DOM 영역(120) 및 Native 영역(130)에서 수행된다.
여기에서, 웹 영역(110)은 웹 표준 구성요소(HTML, CSS, 자바스크립트)를 통해 하이브리드 어플리케이션이 개발되거나 또는 구동되는 영역에 해당하며, 예를 들어, 플랫폼에서 제공하는 Web Kit 또는 Web Browser에 해당할 수 있다.
DOM 영역(120)은 문서 객체 모델(DOM; Document Object Model) 영역, 즉, 객체 지향 모델로써 구조화된 문서를 표현하는 형식에 해당한다. DOM은 HTML 문서의 요소를 제어하여 동적으로 문서의 내용, 구조 및 스타일에 접근하고 변경하는 수단에 해당할 수 있다. DOM 영역(120)은 컴퓨터 실행 장치 내, 특히 휘발성 메모리 상에 존재할 수 있다.
Native 영역(130)은 플랫폼 고유의 운영체제(OS, Operating System) 영역에 해당하며, 예를 들어, Android, iOS 에 해당할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법은 가상 코드를 포함할 수 있다.
여기에서, 가상 코드는 하이브리드 어플리케이션의 소스 또는 리소스와 관련하여 실제 내용을 포함하지 않고 형식만을 갖춘 코드에 해당한다. 예를 들어, 함수명만 정의되고 실행 코드를 포함하고 있지 않은 함수(Function)에 해당할 수 있다.
일 실시예에서, 가상 코드는 스크립트에 있는 가상 함수, HTML 마크 업 정보, Web Browser에서 사용하는 UI 구성 및 스타일 시트(CSS) 중 적어도 하나에 해당할 수 있다.
이하에서는 가상 코드 중 특히, 가상 함수를 기초로 하이브리드 어플리케이션 수행 방법 및 이를 수행하는 컴퓨터 실행 장치에 대하여 설명한다.
다시 도 1을 참조하면, 컴퓨터 실행 장치는 웹 영역에서 HTML 파일, CSS 파일(111) 및 가상 함수(112)를 포함하는 하이브리드 어플리케이션을 실행하는 경우, 컴퓨터 실행 장치 상에 어플리케이션의 데이터(예를 들어, 콘텐츠)를 제공하기 위하여 DOM 내에 HTML 파일, CSS 파일 및 가상 함수를 각각 로딩한다.
여기에서, DOM은 통상적으로 사용되는 문서 객체 모델(DOM; Document Object Model)을 의미하며, 객체 지향 모델로써 구조화된 문서를 표현하는 형식에 해당할 수 있다. 보다 구체적으로, DOM은 HTML 문서의 요소를 제어하여 동적으로 문서의 내용, 구조, 스타일에 접근하고 변경하는 수단에 해당할 수 있다.
컴퓨터 실행 장치는 함수명만 정의되는 가상 함수가 호출되는 경우 이를 수행하지 아니하고, 이에 상응하는 실제 함수(131)를 Native 영역(130)에 로딩한다.
컴퓨터 실행 장치는 실제 함수(131)를 복호화하고, 복호화된 실제 함수를 특정 시점에 DOM 영역(120)으로 삽입(injection) 또는 가상함수(121)와 치환하며, 복호화된 실제 함수를 실행하여 DOM 구성을 완료하고, 하이브리드 어플리케이션을 실행할 수 있다.
여기에서, 비즈니스 로직 등이 구현된 가상 함수는 휘발성 메모리 영역에 존재하기 때문에 사용자에게 노출되지 않고, 디컴파일을 통한 공격 가능성도 배제시킬 수 있다.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 실행 장치(200)를 설명하는 블록도이다.
도 2를 참조하면, 컴퓨터 실행장치(200)는 문서 렌더링부(210), 가상 코드 처리부(220), 코드 검색부(230), 코드 보안부(240), 실제 코드 처리부(250), 데이터베이스(260) 및 제어부(270)를 포함한다.
컴퓨터 실행 장치(200)는 하이브리드 어플리케이션을 수행하기 위해 사용될 수 있는, 예를 들어, 데스크톱(Desktop), 노트북(Laptop), 스마트폰(Smartphone) 또는 태블릿 PC(Tablet Personal Computer)에 해당할 수 있다.
문서 렌더링부(210)는 하이브리드 어플리케이션 실행시 문서를 렌더링한다.
여기에서, 문서는 HTML 등과 같은 웹 표준 구성요소에 의해 작성된 문서에 해당할 수 있다.
일 실시예에서, 문서 렌더링부(210)는 가상 코드를 포함하는 문서를 렌더링하는 경우, 가상 코드에 대한 처리를 대기할 수 있다.
예를 들어, 문서 렌더링부(210)는 실행 코드를 포함하지 않은 가상 함수가 있는 경우, 가상 함수에 대한 실행을 Skip하고 이 외의 부분에 대해 렌더링 작업을 수행할 수 있으며, 다른 렌더링 작업이 완료되고 가상 함수에 대한 관련 프로세스가 수행된 경우(예를 들어, 가상 함수에 상응하고 실행 코드를 포함하는 코드가 삽입된 경우), 가상 함수에 대한 실행을 실시할 수 있다.
다른 예를 들어, 문서 렌더링부(210)는 가상 함수가 호출되는 경우 문서 렌더링 작업을 중단하고, 가상 함수에 대한 관련 프로세스가 수행된 후 제어부(270)의 제어에 따라 렌더링 작업을 계속 수행할 수 있다.
문서 렌더링부(210)는 문서 렌더링시 호출되는 웹 리소스를 데이터베이스로부터 로딩할 수 있다. 이와 달리, 문서 렌더링부(210)는 웹 리소스를 외부 장치로부터 수신할 수 있다. 여기에서, 외부 장치는 웹 리소스를 저장하고 있는 컴퓨터 실행 장치(미도시) 또는 웹 리소스 제공 서버(미도시) 등에 해당할 수 있다.
가상 코드 처리부(220)는 가상 코드인지 여부를 판단하고, 가상 코드의 수행을 제어하며, 가상 코드 대기 영역을 생성 및 관리한다.
일 실시예에서, 가상 코드 처리부(220)는 문서의 스크립트에 있는 특정 함수가 호출되면 특정 함수가 가상 함수인지 여부를 체크할 수 있다.
예를 들어, 가상 코드 처리부(220)는 함수의 이름 형식을 기초로 가상 함수인지 여부를 체크할 수 있다. 가상 함수 정의하는 경우에 [Virtual]과 같이 다른 함수와 구분할 수 있는 식별자를 가상 함수명 앞에 부가 할 수 있고, 가상 코드 처리부(220)는 부가된 식별자를 기초로 특정 함수가 가상 함수인지 여부를 체크할 수 있다.
일 실시예에서, 가상 코드 처리부(220)는 특정 함수가 실행 코드를 포함하지 않는 함수에 해당하는 경우에는 해당 함수를 가상 함수로 결정할 수 있다.
도 5는 가상 함수를 설명한 예시도이다. 도 5를 참조하면, [MxpEngine.js] 라는 자바스크립트 파일은 [DebugConsole. prototype.log = function(message, maxDepth){ };]와 같이 정의된 함수를 포함할 수 있고, 함수 후단의 { }(함수 실행 코드가 포함되어야 할 부분)이 공백인 경우, 가상 코드 처리부(220)는 [DebugConsole.prototype.log]를 가상 함수(112)로 결정할 수 있다.
일 실시예에서, 가상 코드 처리부(220)는 문서를 컴퓨터 실행 장치에 렌더링하는 동안에 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기시킨다. 여기에서, 가상 코드 대기 영역은 가상 코드가 수행될 때까지 대기할 수 있는 영역에 해당한다. 가상 코드 대기 영역은 휘발성 메모리 상에 존재할 수 있다.
일 실시예에서, 가상 코드 처리부(210)는 가상 함수가 호출되면 문서 객체 모델(DOM, Document Object Model)에 진입할 수 있다.
가상 코드 처리부(210)는 가상 함수가 호출되면 문서 객체 모델에 진입하여 문서 렌더링부(210)로 하여금 문서 렌더링 작업을 수행할 수 있도록 할 수 있다.
일 실시예에서, 가상 코드 처리부(220)는 문서 객체 모델 진입 후에 실제 함수가 수행되기 전까지 가상 코드 대기 영역을 문서 객체 모델 내에 생성할 수 있다.
예를 들어, 가상 코드 처리부(220)는 가상 함수가 수행되기 전까지 휘발성 메모리의 특정 영역에 해당하는 가상 코드 대기 영역을 생성할 수 있다.
일 실시예에서, 가상 코드 처리부(220)는 실제 함수가 가상 코드 대기 영역에 삽입되는 경우, 가상 함수 수행의 대기를 해제하고 삽입된 실제 함수를 수행할 수 있다.
예를 들어, 가상 코드 처리부(220)는 가상 함수에 대한 수행을 해제하고, 가상 함수 수행시 삽입된 실제 함수를 호출하도록 제어할 수 있다.
일 실시예에서, 가상 코드 처리부(220)는 특정 시간 내에 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 문서에 대한 렌더링이 종료된 경우 가상 코드 대기 영역을 삭제할 수 있다.
예를 들어, 가상 코드 처리부(220)는 특정 시간 내에 복호화된 실제 함수에 대한 호출이 발생하지 않는 경우, 복호화된 실제 함수에 대한 사용이 없는 것으로 판단할 수 있고, 가상 코드 대기 영역을 삭제할 수 있고, 이를 통해 사용자나 또는 제3자에 대한 실제 함수의 노출을 방지할 수 있다.
코드 검색부(230)은 가상 코드와 상응하는 실제 코드를 검색한다. 가상 코드와 실제 코드에 대해 이하 상세히 설명한다.
일 실시예에서, 가상 코드는 스크립트(Java Script)에 있는 가상 함수, 가상 실행 코드(HTML 마크 업 정보), 가상 리소스(CSS) 중 적어도 하나를 포함할 수 있다. 여기에서, 가상 코드는 앞서 설명한 바와 같이 하이브리드 어플리케이션의 소스 및 리소스와 관련하여 실제 내용을 포함하지 않고 형식만을 갖춘 코드에 해당할 수 있다.
예를 들어, 가상 코드는 실행 코드를 포함하지 않고 이름과 파라미터 정보만 정의된 가상 함수에 해당할 수 있다. 가상 함수의 경우 컴퓨터 실행 장치에 의해 호출되더라도 수행될 수 없으며, 다만, 가상 함수와 상응하는 실제 함수를 검색하는데 사용될 수 있다.
가상 코드는 일반 사용자에게 공개되나, 그 내용을 포함하고 있지 않다는 점에서 보안성을 유지할 수 있고, 파라미터 정보를 가지고 있다는 점에서 개발시 디자이너 등과 같은 개발자들과 협업이 가능하게 할 수 있다.
실제 코드는 가상 코드에 상응하고 개발자가 제3자로부터 보호하고자 하는 내용을 암호화한 형태로 포함할 수 있다.
도 6은 실제 코드를 나타내는 예시도이다. 도 6을 참조하면, 실제 코드는 제3자가 인식 불가한 문자 또는 숫자들로 구성되어, 실제 코드의 내용을 제3자로부터 보호할 수 있다.
예를 들어, 실제 코드는 비즈니스 로직을 포함하고 암호화된 자바 스크립트 파일에 해당할 수 있다.
일 실시예에서, 코드 검색부(230)는 해시 함수(hashing function)를 통해 가상 함수에 대한 해시 값을 계산하고, 가상 함수에 대한 해시 값을 기초로 암호화 코드 데이터베이스(241)에서 실제 함수의 위치를 검출할 수 있다.
보다 구체적으로, 암호화 코드 데이터베이스(241)는 실제 함수를 해시 값에 해당하는 주소에 저장해두고, 코드 검색부(230)는 해시 함수를 통해 가상 함수의 이름에 대한 해시 값을 계산하여 바로 실제 함수의 위치를 검출할 수 있다.
예를 들어, 가상 함수 A에 대한 해시 값 h(A)=k인 경우, 암호화 코드 데이터베이스(241)는 가상 함수 A에 상응하는 실제 함수 B를 주소 k에 저장해두어, 코드 검색부(230)은 가상 함수 A의 해시 값 k를 계산하는 것으로 실제 함수 B 의 위치를 검출할 수 있다. 이를 통해, 한 번의 해시 키 계산으로 문자열을 하나씩 비교하며 찾는 구성보다 빠르게 실제 코드를 검색할 수 있다.
다른 일 실시예에서, 코드 검색부(230)는 가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출할 수 있다. 여기에서 함수 매핑 테이블은 가상 함수와 실제 함수(위치 정보 포함)를 각각 1:1 대응시킨 매핑 테이블에 해당할 수 있다.
예를 들어, 코드 검색부(230)는 가상 함수 A가 호출되면, 함수 매핑 테이블을 기초로 가상 함수 A에 매칭되는 실제 함수 B 및 실제 함수 B의 위치 정보를 검출할 수 있다.
코드 보안부(240)는 코드를 암호화 하거나, 실제 코드를 복호화 할 수 있다. 보다 구체적으로, 코드 보안부(240)는 사용자에 의해 선택된 특정 함수를 암호화 알고리즘을 통해 암호화 할 수 있고, 이와 반대되는 과정을 통해 암호화된 코드를 복호화할 수 있다.
일 실시예에서, 코드 보안부(240)는 특정 코드를 암호화하는 경우, 암호화된 코드, 즉 실제 코드와 이에 상응하는 가상 코드를 각각 생성할 수 있다.
일 실시예에서, 코드 보안부(240)는 RSA(Rivest Shamir Adleman) 알고리즘, 대칭 키 알고리즘 및 비대칭 키 알고리즘 중 하나를 통해 검색된 실제 함수를 복호화할 수 있다.
RSA 알고리즘은 소인수분해의 난해함, 즉, 큰 수의 소인수를 찾는 것은 쉽지 않다는 점을 기반으로, 공개키만을 가지는 경우 개인키를 쉽게 짐작할 수 없도록 디자인된 암호화 방식에 해당한다.
대칭 키는 알고리즘은 암호화 방식 중 암호화 할 때 사용한 키와 복호화 할 때 사용하는 키가 같은 암호화 방식에 해당한다.
비대칭 키는 정보를 암호화하기 위하여 사용하는 암호화 키와 암호화된 정보를 복원하기 위하여 사용하는 복호화 키가 서로 다른 암호화 방식에 해당한다. 각각의 암호화 알고리즘은 통상 사용되는 알고리즘에 해당한다.
코드 보안부(240)는 외부의 인증서버(미도시)와의 통신을 통해 코드 암호화 및 복호화를 위한 키(key)를 획득할 수 있다.
실제 코드 처리부(250)은 복호화된 실제 함수를 가상 코드 대기 영역에 삽입한다.
일 실시예에서, 실제 코드 처리부(250)는 복호화된 실제 함수를 특정 시간에 가상 코드 대기 영역에 삽입할 수 있다.
예를 들어, 복호화된 실제 함수 A, B 및 C가 각각 존재하는 경우, 실제 코드 처리부(250)는 코드 보안부(240)에서 실제 함수 A, B 및 C가 복호화된 시점에 실제 함수 각각을 바로 가상 코드 대기영역에 삽입할 수 있다. 이와 달리, 코드 보안부(240)는 코드 보안부(240)에서 실제 함수 A, B 및 C의 복호화가 모두 종료되는 시점에 일괄적으로 가상 코드 대기영역에 삽입할 수도 있다.
일 실시예에서, 실제 코드 처리부(250)는 가상 코드 대기영역에 존재하는 가상 코드와 다른 위치에 실제 코드를 삽입할 수 있다. 즉, 가상 코드와 실제 함수는 가상 코드 대기 영역에 동시에 존재할 수 있고, 문서 렌더링부(210)는 가상 코드가 호출되는 경우 가상 코드에 상응하고 다른 위치에 존재하는 실제 함수를 호출하는 방식으로 문서 렌더링 작업을 수행할 수 있다.
일 실시예에서, 실제 코드 처리부(250)는 가상 코드 대기 영역에 대기 중인 가상 함수를 복호화된 실제 함수로 치환할 수 있다. 보다 구체적으로, 실제 코드 처리부(250)는 가상 코드 대기 영역에 존재하는 가상 코드를 삭제하고, 실제 코드를 가상 코드가 위치한 영역에 삽입할 수 있으며, 문서 렌더링부(210)는 가상 코드에 의한 문서 렌더링 작업의 중단 없이 일괄적으로 문서 렌더링 작업을 수행할 수 있다.
데이터베이스(260)은 하이브리드 어플리케이션에 대한 패키지(소스, 웹 리소스) 및 실제 코드를 저장한다. 여기에서, 데이터베이스(260)는 실제 코드를 저장하는 암호화 코드 데이터베이스(261)을 별도로 구성할 수 있다. 예를 들어, 암호화 코드 데이터베이스(261)는 실제 함수를 포함하는 암호화 함수 라이브러리로 구현될 수 있다.
암호화 코드 데이터베이스(261)는 하이브리드 어플리케이션 생성시 제작자에 의하여 최초 생성되고, 하이브리드 어플리케이션의 배포시 컴퓨터 실행 장치 내에 생성될 수 있다.
데이터베이스(260)는 하이브리드 어플리케이션 구동에 따라 필요한 소스 또는 리소스를 제어부(270)의 제어에 따라 문서 렌더링부(210)에 제공할 수 있다.
일 실시예에서, 암호화 코드 데이터베이스(261)는 가상 함수에 대한 해시 값에 해당하는 위치에 실제 코드를 저장할 수 있다. 예를 들어, 가상 함수 A에 대한 해시 값이 256인 경우, 256과 관련된 위치에 가상 함수 A에 상응하는 실제 함수 B를 저장할 수 있다. 이 때, 암호화 코드 데이터베이스(261)는 계산된 해시 값과 관련되어 저장된 실제 함수를 코드 보안부(250)에 제공할 수 있다.
다른 일 실시예에서, 암호화 코드 데이터베이스(261)는 실제 코드 검색을 위한 함수 매핑 테이블을 저장할 수 있다. 예를 들어, 암호화 코드 데이터베이스(261)는 가상 함수 A와 가상 함수A에 상응하는 실제 함수 B의 정보(B의 저장 위치를 포함함)를 함수 매핑 테이블을 저장할 수 있다.
제어부(270)은 문서 렌더링부(210), 가상 코드 처리부(220), 코드 검색부(230), 코드 보안부(240), 실제 코드 처리부(250) 및 데이터베이스(260)간의 데이터 흐름을 제어한다.
제어부(270)는 문서 렌더링 중 가상 함수가 호출되는 경우, 문서 렌더링부(210)의 가상 함수에 대한 수행을 중단 시킬 수 있다. 또한, 가상 함수에 대한 실제 함수가 복호화되어 삽입되는 경우 문서 렌더링부(210)로 하여금 작업 중단을 해제하고, 실제 함수를 호출하여 문서 렌더링 작업을 계속 수행하도록 제어할 수 있다.
제어부(270)는 데이터베이스(260)에 함수 매핑 테이블을 코드 검색부에 제공하도록 제어할 수 있다.
제어부(270)는 코드 보안부(240)에 의해 복호화된 실제 함수를 실제 코드 처리부(250)에 제공하도록 제어할 수 있으며, 실제 코드 처리부(250)로 하여금 복호화된 실제 코드를 가상 코드 대기 영역에 삽입할 시점을 결정할 수 있다.
도 3은 컴퓨터 실행 가능한 어플리케이션 수행 방법을 설명하는 흐름도이다.
도 3을 참조하면, 컴퓨터 실행 장치는 하이브리드 어플리케이션의 구동 요청을 수신할 수 있고, 이에 따라 하이브리드 어플리케이션 구동을 준비한다(S310).
보다 구체적으로, 문서 렌더링부(210)는 데이터베이스(260) 상에 저장된 하이브리드 소스 및 리소스를 로드하고, 각 소스 및 리소스가 포함하고 있는 코드를 실행하여 문서 렌더링 작업을 수행할 수 있다.
코드 보안부(240)는 실제 코드를 로드하여 복호화하는 작업을 수행한다(S320).
이 때, 코드 보안부(240)는 코드 암호화 및 복호화를 위한 키를 암호화 코드 데이터베이스 또는 외부의 인증서버와의 통신을 통해 획득할 수 있다.
코드 보안부(240)는 실제 코드에 대한 복호화 작업을 문서 렌더링 시작시에 수행할 수 있거나 또는 문서 렌더링 작업 중 가상 코드가 독출되면 가상 코드에 대한 처리를 대기, 즉, 문서 렌더링 작업을 중단하고 이를 수행할 수 있다.
실제 코드 처리부(250)는 복호화된 실제 함수를 가상 코드 대기 영역에 삽입한다(S330).
앞서 설명한 바와 같이, 가상 코드를 그대로 두고 실제 코드를 별도의 영역에 삽입하여 가상 코드가 호출되는 경우 실제 코드를 실행할 수 있도록 구현될 수 있고, 이와 달리, 가상 코드를 실제 코드로 치환하는 형태로 실제 코드를 삽입할 수 있다.
문서 렌더링부(210)는 실제 코드가 삽입된 경우 제어부(270)의 제어에 따라 문서 렌더링 작업의 중단, 즉 가상 함수 수행의 대기을 해제하고, 삽입된 실제 함수를 수행하여 문서의 렌더링 작업을 완료한다(S340).
도 4는 본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 어플리케이션 수행 방법을 설명하는 흐름도이다.
도 4를 참조하면, 컴퓨터 실행 장치는 하이브리드 어플리케이션의 구동 요청을 수신할 수 있고, 이에 따라 하이브리드 어플리케이션 구동을 준비한다(S410).
일 실시예에서, 가상 코드 처리부(220)는 문서 렌더링 동안에 문서의 스크립트에 있는 특정 코드가 독출 또는 호출되면 특정 코드가 가상 코드인지 여부를 체크할 수 있다(S420).
가상 코드 처리부(220)는 특정 코드가 가상 코드에 해당하는 경우 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기시킬 수 있다.
일 실시예에서, 코드 검색부(230)는 호출된 가상 코드를 기초로 실제 함수를 검색한다(S430).
예를 들어, 코드 검색부(230)는 해시 함수를 통해 가상 함수에 대한 해시 값을 계산하고, 이를 기초로 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출할 수 있다.
또 다른 예를 들어, 코드 검색부(230)는 가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 코드 데이터 베이스에서 실제 함수의 위치를 검출할 수 있다.
코드 보안부(240)는 코드 검색부(230)에 의해 검색된 실제 코드를 로드하여 복호화하는 작업을 수행한다(S440).
이 때, 코드 보안부(240)는 코드 암호화 및 복호화를 위한 키를 암호화 코드 데이터베이스 또는 외부의 인증서버와의 통신을 통해 획득할 수 있다.
실제 코드 처리부(250)는 복호화된 실제 함수를 가상 코드 대기 영역에 삽입한다(S450).
문서 렌더링부(210)는 실제 코드가 삽입된 경우 제어부(270)의 제어에 따라 문서 렌더링 작업의 중단, 즉 가상 함수 수행의 대기을 해제하고, 삽입된 실제 함수를 수행하여 문서의 렌더링 작업을 완료한다(S460).
일 실시예에서, 문서 렌더링부(210)는 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 문서에 대한 렌더링이 종료된 경우 가상 코드 대기 영역을 삭제할 수 있다.
이를 통해, 암호화된 실제 코드는 문서 렌더링 과정에서 비휘발성 메모리 상의 가상 코드 대기 영역에 일시적으로 생성 및 소멸됨으로써 코드 내용의 외부 노출을 방지하고, 해커와 같은 제3자에 의한 공격 등을 예방할 수 있다.
상기에서는 본 출원의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
110 : 웹 영역
111 : 하이브리드 어플리케이션 리소스
112 : 가상 함수
120 : DOM 영역
130 : Native 영역
131 : 실제 함수
210 : 문서 렌더링부
220 : 가상 코드 처리부
230 : 코드 검색부
240 : 코드 보안부
250 : 실제 코드 처리부
260 : 데이터베이스
261 : 암호화 코드 데이터베이스

Claims (25)

  1. (a) 가상 코드(Virtual Code)를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 단계; 및
    (b) 상기 검색된 실제 코드(Actual Code)를 복호화하여 상기 가상 코드 대기 영역에 삽입시키는 단계를 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  2. 제1항에 있어서, 상기 가상 코드는
    스크립트에 있는 가상 함수, 가상 실행 코드, 가상 리소스 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  3. 제2항에 있어서, 상기 (a) 단계는
    상기 문서의 스크립트에 있는 특정 함수가 호출되면 상기 특정 함수가 상기 가상 함수인지 여부를 체크하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  4. 제3항에 있어서, 상기 (a) 단계는
    상기 특정 함수가 실행 코드를 포함하지 않는 함수에 해당하는 경우에는 상기 특정 함수를 상기 가상 함수로 결정하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  5. 제2항에 있어서, 상기 (a) 단계는
    상기 가상 함수가 호출되면 상기 문서의 문서 객체 모델(DOM, Document Object Model)에 진입하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  6. 제5항에 있어서, 상기 (a) 단계는
    상기 진입 후에 상기 실제 함수가 수행되기 전까지 상기 가상 코드 대기 영역을 상기 문서 객체 모델 내에 생성하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  7. 제6항에 있어서, 상기 가상 코드 대기 영역은
    비휘발성 메모리에 저장되지 아니하고 휘발성 메모리 상에 존재하는 것을 특징으로 하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  8. 제2항에 있어서, 상기 (a) 단계는
    해시 함수(hashing function)를 통해 상기 가상 함수에 대한 해시 값을 계산하는 단계; 및
    상기 가상 함수에 대한 해시 값을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  9. 제2항에 있어서, 상기 (a) 단계는
    가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  10. 제2항에 있어서, 상기 (b) 단계는
    상기 가상 코드 대기 영역에 대기 중인 가상 함수를 상기 복호화된 실제 함수로 치환하는 단계를 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  11. 제2항에 있어서,
    (c) 상기 가상 함수 수행의 대기를 해제하고 상기 삽입된 실제 함수를 수행하여 상기 문서의 렌더링을 완료하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  12. 제11항에 있어서,
    특정 시간 내에 상기 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 상기 문서에 대한 렌더링이 종료된 경우 상기 가상 코드 대기 영역을 삭제하는 단계를 더 포함하는 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법.
  13. 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 코드 검색부;
    상기 검색된 실제 코드를 복호화하는 코드 보안부; 및
    상기 가상 코드 대기 영역에 삽입시키는 실제 코드 처리부를 포함하는 컴퓨터 실행 장치.
  14. 제13항에 있어서, 상기 가상 코드는
    스크립트에 있는 가상 함수, 가상 실행 코드, 가상 리소스 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터 실행 장치.
  15. 제14항에 있어서,
    상기 문서의 스크립트에 있는 특정 함수가 호출되면 상기 특정 함수가 상기 가상 함수인지 여부를 체크하는 가상 코드 처리부를 더 포함하는 컴퓨터 실행 장치.
  16. 제15항에 있어서, 상기 가상 코드 처리부는
    상기 특정 함수가 실행 코드를 포함하지 않는 함수에 해당하는 경우에는 상기 특정 함수를 상기 가상 함수로 결정하는 것을 특징으로 하는 컴퓨터 실행 장치.
  17. 제14항에 있어서, 상기 가상 코드 처리부는
    상기 가상 함수가 호출되면 상기 문서의 문서 객체 모델(DOM, Document Object Model)에 진입하는 것을 특징으로 하는 컴퓨터 실행 장치
  18. 제17항에 있어서, 상기 가상 코드 처리부는
    상기 진입 후에 상기 실제 함수가 수행되기 전까지 상기 가상 코드 대기 영역을 상기 문서 객체 모델 내에 생성하는 것을 특징으로 하는 컴퓨터 실행 장치.
  19. 제18항에 있어서, 상기 가상 코드 대기 영역은
    비휘발성 메모리에 저장되지 아니하고 휘발성 메모리 상에 존재하는 것을 특징으로 하는 컴퓨터 실행 장치.
  20. 제14항에 있어서, 상기 코드 검색부는
    해시 함수(hashing function)를 통해 상기 가상 함수에 대한 해시 값을 계산하고, 상기 가상 함수에 대한 해시 값을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 것을 특징으로 하는 컴퓨터 실행 장치.
  21. 제14항에 있어서, 상기 코드 검색부는
    가상 함수와 실제 함수를 포함하는 함수 매핑 테이블을 기초로 상기 암호화 코드 데이터베이스에서 실제 함수의 위치를 검출하는 것을 특징으로 하는 컴퓨터 실행 장치.
  22. 제21항에 있어서, 상기 실제 코드 처리부는
    상기 가상 코드 대기 영역에 대기 중인 가상 함수를 상기 복호화된 실제 함수로 치환하는 것을 특징으로 하는 컴퓨터 실행 장치.
  23. 제14항에 있어서,
    상기 가상 함수 수행의 대기를 해제하고 상기 삽입된 실제 함수를 수행하여 상기 문서의 렌더링을 완료하는 문서 렌더링부를 더 포함하는 컴퓨터 실행 장치.
  24. 제23항에 있어서, 상기 문서 렌더링부는
    특정 시간 내에 상기 복호화된 실제 함수에 대한 호출이 발생하지 않거나 또는 상기 문서에 대한 렌더링이 종료된 경우 상기 가상 코드 대기 영역을 삭제하는 것을 특징으로 하는 컴퓨터 실행 장치.
  25. (a) 가상 코드를 포함하는 문서를 컴퓨팅 디바이스에 렌더링하는 동안에 상기 가상 코드가 독출되면 가상 코드 대기 영역에서 가상 코드에 대한 처리를 대기하고 암호화 코드 데이터베이스에서 실제 코드를 검색하는 기능; 및
    (b) 상기 검색된 실제 코드를 복호화하여 상기 가상 코드 대기 영역에 삽입시키는 기능을 포함하는 컴퓨터 판독 가능한 기록매체.
KR1020130060923A 2013-05-29 2013-05-29 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체 KR101499535B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130060923A KR101499535B1 (ko) 2013-05-29 2013-05-29 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130060923A KR101499535B1 (ko) 2013-05-29 2013-05-29 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Publications (2)

Publication Number Publication Date
KR20140140288A KR20140140288A (ko) 2014-12-09
KR101499535B1 true KR101499535B1 (ko) 2015-03-06

Family

ID=52458193

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130060923A KR101499535B1 (ko) 2013-05-29 2013-05-29 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Country Status (1)

Country Link
KR (1) KR101499535B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180078509A (ko) * 2016-12-30 2018-07-10 홍익대학교 산학협력단 가상 함수 테이블 포인터 암호화 시스템 및 그 방법
WO2019031644A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
WO2019031627A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
KR20190016878A (ko) * 2017-08-09 2019-02-19 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
US11960595B2 (en) 2017-08-09 2024-04-16 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170040945A (ko) * 2015-10-06 2017-04-14 (주)유라클 하이브리드 어플리케이션의 웹 리소스 보안방법 및 그에 따른 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110093468A (ko) * 2010-02-12 2011-08-18 삼성전자주식회사 사용자 단말 장치, 서버 및 그 제어 방법
KR20120029683A (ko) * 2010-09-17 2012-03-27 주식회사 엘지유플러스 애플리케이션에 대한 리소스 보호 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110093468A (ko) * 2010-02-12 2011-08-18 삼성전자주식회사 사용자 단말 장치, 서버 및 그 제어 방법
KR20120029683A (ko) * 2010-09-17 2012-03-27 주식회사 엘지유플러스 애플리케이션에 대한 리소스 보호 시스템 및 방법

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180078509A (ko) * 2016-12-30 2018-07-10 홍익대학교 산학협력단 가상 함수 테이블 포인터 암호화 시스템 및 그 방법
KR101999209B1 (ko) 2016-12-30 2019-07-11 홍익대학교 산학협력단 가상 함수 테이블 포인터 암호화 시스템 및 그 방법
KR101978812B1 (ko) 2017-08-09 2019-05-15 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
KR20190016698A (ko) * 2017-08-09 2019-02-19 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
KR20190016878A (ko) * 2017-08-09 2019-02-19 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
KR101950913B1 (ko) 2017-08-09 2019-02-21 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
WO2019031627A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
WO2019031644A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
US11354401B2 (en) 2017-08-09 2022-06-07 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
KR20220098709A (ko) * 2017-08-09 2022-07-12 주식회사 센스톤 가상코드 기반의 명령어 검증 방법, 제어 디바이스 및 제어신호 생성 장치
US11609983B2 (en) 2017-08-09 2023-03-21 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
KR102518771B1 (ko) 2017-08-09 2023-04-07 주식회사 센스톤 가상코드 기반의 명령어 검증 방법, 제어 디바이스 및 제어신호 생성 장치
US11960595B2 (en) 2017-08-09 2024-04-16 SSenStone Inc. System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device

Also Published As

Publication number Publication date
KR20140140288A (ko) 2014-12-09

Similar Documents

Publication Publication Date Title
US9576147B1 (en) Security policy application through data tagging
US20170295013A1 (en) Method for fulfilling a cryptographic request requiring a value of a private key
TWI530874B (zh) 生成應用程式安裝封包、執行應用程式的方法及裝置
KR101499535B1 (ko) 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체
CN107391171B (zh) 一种解决iOS热修复问题的方法以及用户终端
US7962952B2 (en) Information processing apparatus that executes program and program control method for executing program
US20080270806A1 (en) Execution Device
JP5298891B2 (ja) アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置
CN104331644A (zh) 一种智能终端文件的透明加解密方法
EP3712764A1 (en) Fpga cloud host development method and system
US20070083378A1 (en) Secure application programming interface
WO2011134207A1 (zh) 软件保护方法
WO2019062015A1 (zh) 源代码保护方法、应用服务器及计算机可读存储介质
KR101472346B1 (ko) 암호화된 웹 어플리케이션 제공 방법, 이를 지원하는 단말, 및 이를 위한 기록매체
WO2016206393A1 (zh) 管理应用的方法和装置、实现读写操作的方法和装置
CN108985096B (zh) 一种Android SQLite数据库安全增强、安全操作方法以及装置
JP2016522489A (ja) データプロセシングシステムのセキュリティ装置とセキュリティ方法
JP6256781B2 (ja) システムを保護するためのファイルセキュリティ用の管理装置
Tedeschi et al. Information security and threats in mobile appliances
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
JP6755539B2 (ja) ネットワークに著作物を公開するための方法および装置
JP6798669B2 (ja) アプリケーションに含まれるユーザ情報を隠すための方法及びデバイス
JP2008234539A (ja) 情報処理装置及びファイル処理方法並びにプログラム
JP2009169868A (ja) 記憶領域アクセス装置及び記憶領域のアクセス方法
JP6215468B2 (ja) プログラム保護装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 6