[go: up one dir, main page]

KR102604270B1 - Communication encryption plug-in method and system for applications using JAVA BCI technology - Google Patents

Communication encryption plug-in method and system for applications using JAVA BCI technology Download PDF

Info

Publication number
KR102604270B1
KR102604270B1 KR1020230109902A KR20230109902A KR102604270B1 KR 102604270 B1 KR102604270 B1 KR 102604270B1 KR 1020230109902 A KR1020230109902 A KR 1020230109902A KR 20230109902 A KR20230109902 A KR 20230109902A KR 102604270 B1 KR102604270 B1 KR 102604270B1
Authority
KR
South Korea
Prior art keywords
java
application
encryption
code
jvm
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020230109902A
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 KR1020230109902A priority Critical patent/KR102604270B1/en
Application granted granted Critical
Publication of KR102604270B1 publication Critical patent/KR102604270B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

The present invention relates to a method and a system for plugging-in communication encryption of an application using a JAVA BCI technology, which can add, modify, and reflect an encryption method without modifying a source code of an application communicating based on TCP or UDP, the method comprising: a first step of driving a Java program installed in a terminal; a second step of activating a JavaVirtual Machine (JVM), a Java compiler, and an insertion module (Byte Code Instrumentation (BCI)) by driving the Java program, and activating a Java module having an encryption/decryption function in a class loader of the JVM; a third step of, when the application of the terminal is driven, generating a Java class by compiling the source code of the application in a Java code format and loading the Java class into a memory of the JVM (runtime data area) by the Java compiler; a fourth step of, when the Java class of the application is loaded into the memory of the JVM, inserting an encryption/decryption code into the source code of the application loaded into the memory of the JVM by the insertion module; and a fifth step of processing the application to encrypt and decrypt data transmitted to and received from another terminal according to an algorithm of the encryption/decryption code by the Java module.

Description

JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법과 시스템{Communication encryption plug-in method and system for applications using JAVA BCI technology}Communication encryption plug-in method and system for applications using JAVA BCI technology}

본 발명은 TCP 또는 UDP을 기반으로 통신하는 애플리케이션의 소스코드 수정 없이 암호화 방식을 추가하거나 수정 및 반영할 수 있도록 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법과 시스템에 관한 것이다.The present invention relates to a communication encryption plug-in method and system for an application using JAVA BCI technology that allows adding, modifying, and reflecting an encryption method without modifying the source code of an application that communicates based on TCP or UDP.

일반적으로 단말의 애플리케이션은 통신망에서 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol)를 기반으로 다른 단말의 애플리케이션과 통신하면서 데이터를 공유한다. 이 과정에서 통신 대상 데이터는 보안을 위해 암호화가 요구되고, 이를 충족시키기 위해 해당 단말기에는 데이터 보안수단이 추가로 설치된다.In general, applications on a terminal communicate with applications on other terminals and share data based on TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) in a communication network. In this process, the data to be communicated is required to be encrypted for security purposes, and to meet this requirement, additional data security measures are installed in the terminal.

종래 보안수단은 보안 대상 데이터의 통신 주체인 애플리케이션과 연동하는 독립된 애플리케이션 또는 모듈이므로, 상호 간에 연동을 위해서 기존 애플리케이션의 소스코드 수정이 불가피했다. 또한, 애플리케이션과 연동하는 보안수단의 설치 이후 사용하던 암호화 알고리즘에서 취약점이 발견되거나 암호화 미적용 부분에 대해 암호화가 적용되도록 변경하는 과정에서도 애플리케이션의 소스코드를 추가로 수정해야 했다.Conventional security measures are independent applications or modules that interoperate with the application that is the subject of security data communication, so it was inevitable to modify the source code of the existing application in order to interoperate with each other. In addition, when vulnerabilities were discovered in the encryption algorithm used after the installation of security measures linked to the application, or when changes were made to apply encryption to unencrypted parts, the application's source code had to be additionally modified.

애플리케이션의 소스코드 수정을 위해서 종래에는 패치파일을 이용해 해당 애플리케이션을 업데이트 했다. 하지만, 이러한 업데이트를 위해서 제작자는 애플리케이션의 소스코드와 연계한 패치파일을 제작해서 배포해야 했고, 애플리케이션 사용자는 패치파일 수신하고 애플리케이션에 설치해서 업데이트하는 작업을 수행해야 했다. 하지만, 애플리케이션의 소스코드를 직접 수정하는 업데이트 방식은 전술한 바와 같이 제작자와 사용자에게 부차적인 작업을 요구하였고, 애플리케이션을 관리하는 제작자 입장에서는 애플리케이션의 보수 유지를 위해 적지 않은 시간과 비용을 부담해야 하는 문제가 있었다. 또한, 제작자가 제공하는 패치파일은 특정 애플리케이션에 사용이 한정되므로 범용성이 낮다는 문제 또한 있었다.In order to modify the source code of an application, conventionally, the application was updated using a patch file. However, for these updates, the creator had to create and distribute a patch file linked to the application's source code, and the application user had to receive the patch file, install it in the application, and update it. However, as mentioned above, the update method of directly modifying the application's source code required additional work for the creator and user, and the creator who manages the application had to bear a considerable amount of time and money to maintain the application. There was a problem. In addition, the patch file provided by the manufacturer was limited to use in specific applications, so there was a problem of low versatility.

결국, 애플리케이션의 자체 소스코드를 직접 변경하지 않아도 애플리케이션이 데이터를 암복호화해서 보안할 수 있게 하고 다양한 애플리케이션에 적용할 수 있는 범용성을 갖는 보안기술이 시급히 요구되었다.In the end, there was an urgent need for a security technology that allows the application to encrypt and decrypt data and secure it without directly changing the application's own source code, and has versatility that can be applied to a variety of applications.

선행기술문헌 1. 특허공개번호 제10-2000-0038878호(2000.07.05 공개)Prior Art Document 1. Patent Publication No. 10-2000-0038878 (published on July 5, 2000)

이에 본 발명은 상기의 문제를 해소하기 위한 것으로, 애플리케이션의 자체 소스코드를 직접 변경하지 않아도 애플리케이션이 통신 데이터를 암복호화해서 보안할 수 있게 하고 다양한 애플리케이션에 적용할 수 있는 범용성을 갖는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법과 시스템의 제공을 해결하고자 하는 과제로 한다.Accordingly, the present invention is intended to solve the above problems, and provides JAVA BCI technology that allows the application to encrypt and decrypt communication data and secure it without directly changing the application's own source code, and has versatility that can be applied to various applications. The task is to solve the problem of providing a plug-in method and system for encryption of communications for the used application.

상기의 과제를 달성하기 위하여 본 발명은,In order to achieve the above task, the present invention,

단말기에 설치된 자바 프로그램이 구동되는 제1단계;A first step in which the Java program installed on the terminal is run;

자바 프로그램의 구동으로 JVM(JavaVirtual Machine)과 자바컴파일러와 삽입모듈(BCI; Byte Code Instrumentation)이 활성화되고, 암복호화 기능의 자바모듈이 JVM의 클래스로더에서 활성화되는 제2단계;A second stage in which the Java Virtual Machine (JVM), Java compiler, and insertion module (BCI; Byte Code Instrumentation) are activated by running the Java program, and the Java module with the encryption and decryption function is activated in the class loader of the JVM;

단말기의 애플리케이션이 구동되면 자바컴파일러가 애플리케이션의 소스코드를 자바코드 형식으로 컴파일해서 자바클래스를 생성하고 JVM의 메모리(Runtime Data Area)에 로드하는 제3단계;When the application of the terminal is run, the Java compiler compiles the source code of the application into Java code format, generates a Java class, and loads it into the memory (Runtime Data Area) of the JVM;

JVM의 메모리에 애플리케이션의 자바클래스 로드 시, 삽입모듈이 암,복호화코드를 JVM의 메모리에 로드된 애플리케이션의 소스코드에 삽입하는 제4단계; 및When loading the Java class of the application into the memory of the JVM, a fourth step in which the insertion module inserts the encryption and decryption code into the source code of the application loaded into the memory of the JVM; and

자바모듈은 애플리케이션이 다른 단말기와의 송,수신데이터를 암,복호화코드의 알고리즘에 따라 암,복호화하도록 프로세싱하는 제5단계; The Java module includes a fifth step in which the application processes data transmitted and received with another terminal to be encrypted and decrypted according to the algorithm of the encryption and decryption code;

를 포함하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법이다.It is a plug-in method for encrypting communication of an application using JAVA BCI technology, including .

상기의 본 발명은, JAVA BCI 기술을 응용해서 통신 중에 암복호화 소스코드를 애플리케이션에 삽입하므로 애플리케이션의 자체 소스코드를 직접 변경하지 않아도 애플리케이션이 통신 데이터를 암복호화해서 보안할 수 있고, 규정된 통신 프로세스에 따른 데이터 통신 중에 암복호화 소스코드가 삽입되므로 애플리케이션의 종류에 상관없이 암복호화 소스코드의 삽입과 기능 발현이 가능하다는 효과가 있다.The above present invention applies JAVA BCI technology to insert encryption and decryption source code into the application during communication, so that the application can encrypt and decrypt communication data and secure it without directly changing the application's own source code, and a defined communication process. Since the encryption and decryption source code is inserted during data communication, it is possible to insert the encryption and decryption source code and express the function regardless of the type of application.

또한, 암호키와 암호 알고리즘을 동적으로 생성하고 변경할 수 있으므로, 기존의 암호 방식에 취약점이 발견될 경우 쉽게 대응할 수 있다. In addition, since encryption keys and encryption algorithms can be dynamically created and changed, it is possible to easily respond if vulnerabilities are discovered in the existing encryption method.

또한, 다양한 암호 방식을 선택하고 비교할 수 있어서 최적의 암호 방식을 찾을 수 있다.Additionally, you can select and compare various encryption methods to find the optimal encryption method.

도 1은 본 발명에 따른 플러그인 시스템의 구성을 도시한 블록도이고,
도 2는 본 발명에 따른 플러그인 방법의 과정을 순차 도시한 플로차트이고,
1 is a block diagram showing the configuration of a plug-in system according to the present invention,
Figure 2 is a flow chart sequentially showing the process of the plug-in method according to the present invention;

실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당하는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.The terms used in the embodiments are general terms that are currently widely used as much as possible while considering the function in the present invention, but this may vary depending on the intention or precedent of a person working in the art, the emergence of new technology, etc. In addition, in certain cases, there are terms arbitrarily selected by the applicant, and in this case, the meaning will be described in detail in the description of the relevant invention. Therefore, the terms used in the present invention should be defined based on the meaning of the term and the overall content of the present invention, rather than simply the name of the term.

본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1개의 유닛이 2개 이상의 하드웨어를 이용하여 실현되어도 되고, 2 개 이상의 유닛이 1개의 하드웨어에 의해 실현되어도 된다. 한편, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, '~부'는 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체 지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.In this specification, 'part' includes a unit realized by hardware, a unit realized by software, and a unit realized using both. Additionally, one unit may be realized using two or more pieces of hardware, and two or more units may be realized using one piece of hardware. Meanwhile, '~ part' is not limited to software or hardware, and '~ part' may be configured to reside in an addressable storage medium or may be configured to reproduce one or more processors. Therefore, as an example, '~ part' refers to components such as software components, object-oriented software components, class components, and task components, processes, functions, properties, and procedures. , subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. The functions provided within the components and 'parts' may be combined into a smaller number of components and 'parts' or may be further separated into additional components and 'parts'. Additionally, components and 'parts' may be implemented to regenerate one or more CPUs within a device or a secure multimedia card.

또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미하며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In addition, when a part is said to "include" a certain component, this does not mean excluding other components unless specifically stated to the contrary, but may further include other components, and means that it may further include one or more other components. It should be understood that this does not exclude in advance the possibility of the presence or addition of features, numbers, steps, operations, components, parts, or combinations thereof.

통신망은, 복수의 단말 및 서버들과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미하는 것으로, 이러한 네트워크의 일 예에는 근거리 통신망(LAN: Local Area Network), 광역 통신망(WAN: Wide Area Network), 인터넷(WWW: World Wide Web), 유무선 데이터 통신망, 전화망, 유무선 텔레비전 통신망 등을 포함한다. 무선 데이터 통신망의 일례에는 3G, 4G, 5G, 3GPP(3rd Generation Partnership Project), 5GPP(5th Generation Partnership Project), LTE(Long Term Evolution), WIMAX(World Interoperability for Microwave Access), 와이파이(Wi-Fi), 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), RF(Radio Frequency), 블루투스(Bluetooth) 네트워크, NFC(Near-Field Communication) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.A communication network refers to a connection structure that allows information exchange between nodes, such as a plurality of terminals and servers. Examples of such networks include a local area network (LAN) and a wide area network (WAN). Network), the Internet (WWW: World Wide Web), wired and wireless data communication networks, telephone networks, and wired and wireless television communication networks. Examples of wireless data communication networks include 3G, 4G, 5G, 3rd Generation Partnership Project (3GPP), 5th Generation Partnership Project (5GPP), Long Term Evolution (LTE), World Interoperability for Microwave Access (WIMAX), and Wi-Fi. , Internet, LAN (Local Area Network), Wireless LAN (Wireless Local Area Network), WAN (Wide Area Network), PAN (Personal Area Network), RF (Radio Frequency), Bluetooth network, NFC ( It includes, but is not limited to, Near-Field Communication (Near-Field Communication) network, satellite broadcasting network, analog broadcasting network, and DMB (Digital Multimedia Broadcasting) network.

아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.Below, with reference to the attached drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily implement the present invention. However, the present invention may be implemented in many different forms and is not limited to the embodiments described herein.

이하, 본 발명을 구체적인 내용이 첨부된 도면에 의거하여 상세히 설명한다.Hereinafter, the present invention will be described in detail based on the accompanying drawings.

도 1은 본 발명에 따른 플러그인 시스템의 구성을 도시한 블록도이다.1 is a block diagram showing the configuration of a plug-in system according to the present invention.

도 1을 참조하면, 본 발명에 따른 플러그인 시스템은 Java BCI(Byte Code Instrumentation) 기술을 이용하여 TCP 또는 UDP 통신을 수행하는 애플리케이션(A1, A2)에 대한 소스코드의 직접적인 수정 없이 플러그인 방식으로 암,복호화코드를 소스코드에 삽입해서 통신 데이터에 대한 암호화 기능과 방식을 추가하거나 수정하여 반영할 수 있도록 한다. 이를 위해 플러그인 시스템은 자바 프로그램의 구동으로 형성되어 단말기(C1, C2)의 OS(M2)와 연동하는 자바부(M1)를 포함하고, 자바부(M1)는 JVM(JavaVirtual Machine)과 자바컴파일러(10)와 삽입모듈(20)과 암복호화 기능의 자바모듈(30)을 포함한다. JVM과 자바컴파일러(10)와 삽입모듈(20)과 자바모듈(30)은 고유 기능을 수행하여 상호 연동하는 독립된 모듈이며, 애플리케이션(A1, A2)의 소스코드에 의한 데이터 실행은 JVM을 기반으로 이루어진다.Referring to FIG. 1, the plug-in system according to the present invention uses Java BCI (Byte Code Instrumentation) technology to perform cancer, By inserting the decryption code into the source code, the encryption function and method for communication data can be added or modified to reflect it. For this purpose, the plug-in system includes a Java part (M1) that is formed by running a Java program and interlocks with the OS (M2) of the terminals (C1, C2), and the Java part (M1) includes a JVM (JavaVirtual Machine) and a Java compiler ( 10) and an insertion module 20 and a Java module 30 with an encryption and decryption function. The JVM, Java compiler (10), insertion module (20), and Java module (30) are independent modules that perform unique functions and interoperate with each other, and data execution by the source code of the application (A1, A2) is based on the JVM. It comes true.

JVM은 자바 가상 머신의 줄임말로 wirte once, run erveywhere, OS(M2)마다 따로 코드를 작성해야 하는 번거로움 업이 Java가 플랫폼에서 독립적일 수 있게 하는 실행 환경이다. 주지된 바와 같이 JVM은 javac 즉 "자바 컴파일러"로 컴파일 된, "자바 바이트 코드(.class)"를 메모리에 올려 실행하는 역할을 수행한다. JVM은 크게 class loader, runtime data area, execution engine으로 이루어진다. JVM의 구성과 프로세스는 이미 공지의 기술이므로, 이에 대한 구체적인 설명은 생략한다.JVM, short for Java Virtual Machine, is an execution environment that allows Java to be platform-independent without the hassle of writing code separately for each OS (M2). As is known, the JVM is responsible for loading and executing "Java byte code (.class)" compiled with javac, or "Java compiler," into memory. The JVM largely consists of a class loader, runtime data area, and execution engine. Since the configuration and process of the JVM are already well-known technologies, detailed descriptions thereof will be omitted.

자바컴파일러(10)는 단말기(C1, C2)의 애플리케이션(A1, A2)이 구동되면 애플리케이션(A1, A2)의 소스코드를 자바코드 형식으로 컴파일해서 자바클래스를 생성하고 JVM의 메모리(Runtime Data Area)에 로드한다. 자바컴파일러(10) 역시 애플리케이션(A1, A2) 실행을 위해 애플리케이션(A1, A2)의 소스코드를 컴파일하는 공지의 기술이므로, 이에 대한 구체적인 프로세스와 알고리즘 설명은 생략한다.When the application (A1, A2) of the terminal (C1, C2) runs, the Java compiler (10) compiles the source code of the application (A1, A2) into Java code format to generate a Java class and compiles it into the JVM's memory (Runtime Data Area). ) to load. Since the Java compiler 10 is also a known technology that compiles the source code of the application (A1, A2) to execute the application (A1, A2), the detailed process and algorithm description thereof will be omitted.

삽입모듈(20)은, JVM의 메모리에 애플리케이션(A1, A2)의 자바클래스 로드 시, JAVA BCI(Byte Code Instrumentation) 기능을 활용해서 암,복호화코드를 JVM의 메모리에 로드된 애플리케이션(A1, A2)의 소스코드에 삽입한다. When loading the Java class of the application (A1, A2) into the memory of the JVM, the insertion module 20 uses the JAVA BCI (Byte Code Instrumentation) function to insert the encryption and decryption code into the memory of the application (A1, A2) loaded into the memory of the JVM. ) into the source code.

자바모듈(30)은 애플리케이션(A1, A2)이 다른 단말기와의 송,수신데이터를 암,복호화코드의 알고리즘에 따라 암,복호화하도록 프로세싱한다. 결국, 애플리케이션(A1, A2)의 소스코드를 직접 수정하지 않아도 JAVA BCI 기능의 삽입모듈(20)에 의해 소스코드에 삽입된 암,복호화코드가 송,수신데이터의 암복호화를 처리한다. 참고로, 애플리케이션(A1, A2)의 암,복호화 실행 대상인 송,수신데이터는 자바모듈(30)이 소켓 통신의 inputstream과 outputstream에서 read method와 write method를 검색하여 read method를 통해 수신데이터를 확인하고 write method를 통해 송신데이터를 확인한다. 결국, 애플리케이션(A1, A2)이 복호화코드에 따라 수신데이터를 복호화하고, 암호화코드에 따라 송신데이터를 암호화한다. 이러한 프로세스에 따라 애플리케이션(A1, A2)의 기존 소스코드는 원본 데이터에 대한 암,복호화 처리를 인지하지 못하므로, 코드 실행 중에 데이터 충돌의 위험을 줄이고 데이터 송,수신 과정에서의 보안성을 높일 수 있다.The Java module 30 processes the applications A1 and A2 to encrypt and decrypt data transmitted and received with other terminals according to the algorithm of the encryption and decryption code. In the end, even without directly modifying the source code of the application (A1, A2), the encryption and decryption code inserted into the source code by the JAVA BCI function insertion module 20 processes the encryption and decryption of the transmitted and received data. For reference, the Java module 30 searches the read method and write method in the input stream and output stream of socket communication for the transmitted and received data that are subject to encryption and decryption of the application (A1, A2), checks the received data through the read method, Check the transmitted data through the write method. Ultimately, the applications (A1, A2) decrypt the received data according to the decryption code and encrypt the transmitted data according to the encryption code. According to this process, the existing source code of the application (A1, A2) is not aware of the encryption and decryption processing of the original data, thereby reducing the risk of data collision during code execution and improving security during data transmission and reception. there is.

암,복호화코드는 자바 프로그램 구동 시 활성화되는 자바모듈(30)에 링크되도록 단말기(C1, C2)에 저장되고, 자바 프로그램의 구동과 함께 호출된다. 암,복호화코드에 의한 송,수신데이터의 암복화 이력이 로그데이터로 저장되고, 로그데이터를 통해 애플리케이션(A1, A2)의 암,복호화의 취약점이 확인되면 암,복호화코드 또는 자바모듈(30)을 업데이트한다. 업데이트된 암,복호화코드는 하기 프로세스에 따라 애플리케이션(A1, A2)의 소스코드에 삽입되므로, 통신에 적용되는 암호화 방식을 쉽게 변경할 수 있다. The encryption and decryption code is stored in the terminals (C1, C2) to be linked to the Java module 30 that is activated when the Java program is run, and is called when the Java program is run. The history of encryption and decryption of transmitted and received data using encryption and decryption codes is stored as log data, and when vulnerabilities in encryption and decryption of the application (A1, A2) are identified through the log data, the encryption and decryption code or Java module (30) Update . Since the updated encryption and decryption code is inserted into the source code of the application (A1, A2) according to the following process, the encryption method applied to communication can be easily changed.

도 2는 본 발명에 따른 플러그인 방법의 과정을 순차 도시한 플로차트이다.Figure 2 is a flow chart sequentially showing the process of the plug-in method according to the present invention.

도 1과 도 2를 참조하면, 본 발명에 따른 플러그인 방법은 플러그인 시스템을 기반으로 실행된다. 플러그인 방법에 대해 좀 더 구체적으로 설명한다.Referring to Figures 1 and 2, the plug-in method according to the present invention is implemented based on a plug-in system. The plug-in method is explained in more detail.

S11; 제1단계S11; Step 1

단말기(C1, C2)에 설치된 자바 프로그램이 구동된다. 자바 프로그램은 단말기(C1, C2)의 OS(M2)와 연동해서 애플리케이션(A1, A2)의 소스코드 실행을 처리하는 프로그램이다. 자바 프로그램은 단말기(C1, C2)의 부팅 또는 자바코드 형식으로 프로그램된 애플리케이션(A1, A2)의 실행 시 자동으로 구동될 수도 있고, 사용자가 직접 조작해서 구동될 수도 있다.The Java program installed on the terminals (C1, C2) runs. The Java program is a program that processes the execution of the source code of the application (A1, A2) in conjunction with the OS (M2) of the terminal (C1, C2). The Java program may be run automatically when the terminal (C1, C2) is booted or the application (A1, A2) programmed in Java code format is executed, or it may be run by direct manipulation by the user.

S12; 제2단계S12; Step 2

자바 프로그램의 구동으로 자바부(M1)가 형성된다. 자바부(M1)의 형성을 통해 JVM(JavaVirtual Machine)과 자바컴파일러(10)와 삽입모듈(20)이 활성화되고, 암복호화 기능의 자바모듈(30)이 JVM의 클래스로더에서 활성화된다. 삽입모듈(20)은 다른 단말기와의 통신 데이터를 암,복호화하기 위해 코딩된다. The Java part (M1) is formed by running the Java program. Through the formation of the Java part (M1), the Java Virtual Machine (JVM), the Java compiler 10, and the insertion module 20 are activated, and the Java module 30 with the encryption and decryption function is activated in the class loader of the JVM. The insertion module 20 is coded to encrypt and decrypt communication data with other terminals.

S13; 제3단계S13; Step 3

단말기(C1, C2)의 애플리케이션(A1, A2)이 구동되면 자바컴파일러(10)가 애플리케이션(A1, A2)의 소스코드를 자바코드 형식으로 컴파일해서 자바클래스를 생성하고 JVM의 메모리(Runtime Data Area)에 로드한다. 애플리케이션(A1, A2)은 사용자의 조작에 의해 구동될 수도 있고, OS(M2)의 제어에 의해 구동될 수도 있다.When the application (A1, A2) of the terminal (C1, C2) runs, the Java compiler (10) compiles the source code of the application (A1, A2) into Java code format to generate a Java class and stores it in the JVM's memory (Runtime Data Area). ) to load. The applications A1 and A2 may be driven by user manipulation or under the control of the OS (M2).

S14; 제4단계S14; Step 4

JVM의 메모리에 애플리케이션(A1, A2)의 자바클래스 로드 시, 삽입모듈(20)이 암,복호화코드를 JVM의 메모리에 로드된 애플리케이션(A1, A2)의 소스코드에 삽입한다. 애플리케이션(A1, A2)의 소스코드에 대한 암,복호화코드의 삽입을 통해 애플리케이션(A1, A2)은 송,수신데이터에 대한 암,복호화 처리 기능이 부여된다.When loading the Java class of the application (A1, A2) into the memory of the JVM, the insertion module 20 inserts the encryption and decryption code into the source code of the application (A1, A2) loaded into the memory of the JVM. By inserting the encryption and decryption code into the source code of the application (A1, A2), the application (A1, A2) is given the function of processing encryption and decryption for transmitted and received data.

S15; 제5단계S15; Step 5

자바모듈(30)은 애플리케이션(A1, A2)이 다른 단말기와의 송,수신데이터를 암,복호화코드의 알고리즘에 따라 암,복호화하도록 프로세싱한다. 이에 관해 좀 더 구체적으로 설명하면, 자바모듈(30)이 소켓 통신의 inputstream과 outputstream에서 read method와 write method를 검색하여 read method를 통해 수신데이터를 확인하고 write method를 통해 송신데이터를 확인해서, 애플리케이션이 복호화코드에 따라 수신데이터를 복호화하고 암호화코드에 따라 송신데이터를 암호화하도록 한다.The Java module 30 processes the applications A1 and A2 to encrypt and decrypt data transmitted and received with other terminals according to the algorithm of the encryption and decryption code. To explain this in more detail, the Java module 30 searches for a read method and a write method in the inputstream and outputstream of socket communication, checks the received data through the read method, and checks the transmitted data through the write method, so that the application The received data is decrypted according to this decryption code, and the transmitted data is encrypted according to the encryption code.

전술한 프로세스를 기반으로 송,수신데이터에 대한 암,복호화 과정을 좀 더 구체적으로 설명하면, 제1단말기(C1)의 제1애플리케이션(A1)과 제2단말기(C2)의 제2애플리케이션(A2)이 구동하면, 제1단계 내지 제4단계에 따라 제1애플리케이션(M1)의 소스코드와 제2애플리케이션(A2)의 소스코드에 각각 암,복호화코드를 삽입한다. 이러한 통신 환경에서 제1단말기(C1)의 제1애플리케이션(A1)이 송신데이터를 생성하면, 제1단말기(C1)의 자바모듈(30)은 outputstream에서 write method를 검색하여 송신데이터를 확인한다. 제1애플리케이션(A1)은 송신데이터를 자바모듈(30)의 제어에 따라 암호화코드의 알고리즘으로 암호화하고, 자바모듈(30)이 outputstream을 통해 암호화된 송신데이터가 송신되도록 프로세싱한다(제6단계). 지정된 IP 간에 네트워크 통신은 규정된 통신프로토콜에 따라 제1단말기(C1)의 통신부(M3)에 의해 이루어진다.To describe the encryption and decryption process for transmitted and received data in more detail based on the above-described process, the first application (A1) of the first terminal (C1) and the second application (A2) of the second terminal (C2) ) is running, the encryption and decryption codes are inserted into the source code of the first application (M1) and the source code of the second application (A2) according to steps 1 to 4, respectively. In this communication environment, when the first application (A1) of the first terminal (C1) generates transmission data, the Java module 30 of the first terminal (C1) searches for a write method in the outputstream and checks the transmission data. The first application (A1) encrypts the transmission data with an encryption code algorithm under the control of the Java module 30, and the Java module 30 processes the encrypted transmission data to be transmitted through the outputstream (step 6). . Network communication between designated IPs is performed by the communication unit (M3) of the first terminal (C1) according to a specified communication protocol.

이후, 제2단말기(C2)의 통신부(M3)는 제1단말기(C1)로부터 상기 송신데이터를 수신데이터로서 수신하고, 제2단말기(C2)의 자바모듈(30)은 inputstream에서 read method를 검색하여 수신데이터를 확인한다. 제2애플리케이션(A2)은 수신데이터를 자바모듈(30)의 제어에 따라 복호화코드의 알고리즘으로 복호화하고, 자바모듈(30)은 제2애플리케이션(A2)의 기존 소스코드 중 데이터 실행코드가 복호화된 수신데이터를 실행하도록 프로세싱한다(제6단계). 지정된 IP 간에 네트워크 통신은 규정된 통신프로토콜에 따라 제2단말기(C2)의 통신부(M3)에 의해 이루어진다.Afterwards, the communication unit (M3) of the second terminal (C2) receives the transmission data as received data from the first terminal (C1), and the Java module 30 of the second terminal (C2) searches for a read method in the inputstream. to check the received data. The second application (A2) decrypts the received data with the algorithm of the decryption code under the control of the Java module 30, and the Java module 30 decrypts the data execution code among the existing source codes of the second application (A2). Process the received data for execution (step 6). Network communication between designated IPs is performed by the communication unit (M3) of the second terminal (C2) according to a specified communication protocol.

상기 제1단계 내지 제6단계 중 선택된 하나의 단계 이후에 암,복호화코드가 삽입된 애플리케이션(A1, A2)이 정지되면 암,복호화코드가 삽입된 애플리케이션(A1, A2)의 소스코드가 JVM의 메모리에서 제거된다. 따라서 구동이 정지된 애플리케이션(A1, A2)은 기존 소스코드를 유지한다.If the application (A1, A2) into which the encryption and decryption code is inserted is stopped after one selected step among the first to sixth steps, the source code of the application (A1, A2) into which the encryption and decryption code is inserted is stored in the JVM. It is removed from memory. Therefore, applications that have stopped running (A1, A2) maintain their existing source code.

결국, 애플리케이션의 암,복호화 기능을 소스코드 수정 없이 플러그인 방식으로 실현하므로, 애플리케이션이 운영 중인 상황에서도 사이드 이펙트 없이 송,수신데이터에 대한 암,복호화 방식을 쉽게 변경하고 적용할 수 있다.Ultimately, since the application's encryption and decryption functions are implemented through a plug-in method without modifying the source code, the encryption and decryption methods for transmitted and received data can be easily changed and applied without side effects even when the application is running.

앞서 설명한 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시 예들을 참조해 설명했지만, 해당 기술분야의 숙련된 당업자 또는 해당 기술분야에 통상의 지식을 갖는 자라면 후술될 특허청구범위에 기재된 본 발명의 사상 및 기술영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the detailed description of the present invention described above has been described with reference to preferred embodiments of the present invention, those skilled in the art or those skilled in the art will understand the spirit of the present invention as described in the patent claims to be described later. It will be understood that the present invention can be modified and changed in various ways without departing from the technical scope.

Claims (5)

단말기에 설치된 자바 프로그램이 구동되는 제1단계;
자바 프로그램의 구동으로 JVM(JavaVirtual Machine)과 자바컴파일러와 삽입모듈(BCI; Byte Code Instrumentation)이 활성화되고, 암복호화 기능의 자바모듈이 JVM의 클래스로더에서 활성화되는 제2단계;
단말기의 애플리케이션이 구동되면 자바컴파일러가 애플리케이션의 소스코드를 자바코드 형식으로 컴파일해서 자바클래스를 생성하고 JVM의 메모리(Runtime Data Area)에 로드하는 제3단계;
JVM의 메모리에 애플리케이션의 자바클래스 로드 시, 삽입모듈이 암,복호화코드를 JVM의 메모리에 로드된 애플리케이션의 소스코드에 삽입하는 제4단계; 및
자바모듈은 애플리케이션이 다른 단말기와의 송,수신데이터를 암,복호화코드의 알고리즘에 따라 암,복호화하도록 프로세싱하는 제5단계;
를 포함하는 것을 특징으로 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법.
A first step in which the Java program installed on the terminal is run;
A second stage in which the Java Virtual Machine (JVM), Java compiler, and insertion module (BCI; Byte Code Instrumentation) are activated by running the Java program, and the Java module with the encryption and decryption function is activated in the class loader of the JVM;
When the application of the terminal is run, the Java compiler compiles the source code of the application into Java code format, generates a Java class, and loads it into the memory (Runtime Data Area) of the JVM;
When loading the Java class of the application into the memory of the JVM, a fourth step in which the insertion module inserts the encryption and decryption code into the source code of the application loaded into the memory of the JVM; and
The Java module includes a fifth step in which the application processes data transmitted and received with another terminal to be encrypted and decrypted according to the algorithm of the encryption and decryption code;
A communication encryption plug-in method for an application using JAVA BCI technology, comprising:
제 1 항에 있어서, 상기 제5단계는,
자바모듈이 소켓 통신의 inputstream과 outputstream에서 read method와 write method를 검색하여 read method를 통해 수신데이터를 확인하고 write method를 통해 송신데이터를 확인해서, 애플리케이션이 복호화코드에 따라 수신데이터를 복호화하고 암호화코드에 따라 송신데이터를 암호화하도록 하는 것;
을 특징으로 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법.
The method of claim 1, wherein the fifth step is:
The Java module searches the read method and write method in the inputstream and outputstream of socket communication, checks the received data through the read method and the transmitted data through the write method, and the application decrypts the received data according to the decryption code and encodes the encryption code. Encrypting transmitted data in accordance with;
Communication encryption plug-in method for an application using JAVA BCI technology, characterized by:
제 2 항에 있어서, 상기 제5단계 이후,
자바모듈이 애플리케이션의 기존 소스코드 중 데이터 실행코드가 복호화된 수신데이터를 실행하도록 프로세싱하는 제6단계를 더 포함하는 것;
을 특징으로 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법.
The method of claim 2, wherein after step 5,
Further comprising a sixth step of processing the Java module to execute the received data decrypted by the data execution code among the existing source code of the application;
Communication encryption plug-in method for an application using JAVA BCI technology, characterized by:
제 2 항에 있어서, 상기 제5단계 이후,
자바모듈이 outputstream을 통해 암호화된 송신데이터가 송신되도록 프로세싱하는 제6단계를 더 포함하는 것;
을 특징으로 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법.
The method of claim 2, wherein after step 5,
Further comprising a sixth step in which the Java module processes the encrypted transmission data to be transmitted through the outputstream;
Communication encryption plug-in method for an application using JAVA BCI technology, characterized by:
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 암,복호화코드가 삽입된 애플리케이션이 정지되면 암,복호화코드가 삽입된 애플리케이션의 소스코드가 JVM의 메모리에서 제거되는 것;
을 특징으로 하는 JAVA BCI 기술을 이용한 애플리케이션의 통신 암호화 플러그인 방법.





The method according to any one of claims 1 to 4,
When the application in which the encryption and decryption code is inserted is stopped, the source code of the application in which the encryption and decryption code is inserted is removed from the memory of the JVM;
Communication encryption plug-in method for an application using JAVA BCI technology, characterized by:





KR1020230109902A 2023-08-22 2023-08-22 Communication encryption plug-in method and system for applications using JAVA BCI technology Active KR102604270B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230109902A KR102604270B1 (en) 2023-08-22 2023-08-22 Communication encryption plug-in method and system for applications using JAVA BCI technology

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230109902A KR102604270B1 (en) 2023-08-22 2023-08-22 Communication encryption plug-in method and system for applications using JAVA BCI technology

Publications (1)

Publication Number Publication Date
KR102604270B1 true KR102604270B1 (en) 2023-11-21

Family

ID=88981815

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230109902A Active KR102604270B1 (en) 2023-08-22 2023-08-22 Communication encryption plug-in method and system for applications using JAVA BCI technology

Country Status (1)

Country Link
KR (1) KR102604270B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102802653B1 (en) * 2025-01-15 2025-05-07 주식회사 피앤피시큐어 Method and system for automatically reinforcing authentication functions in a communication network environment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000038878A (en) 1998-12-09 2000-07-05 윤종용 Screen saver system and method recognizing user face
KR20040053179A (en) * 2001-10-19 2004-06-23 코닌클리즈케 필립스 일렉트로닉스 엔.브이. A method of compiling bytecode to native code
KR20090131796A (en) * 2008-06-19 2009-12-30 주식회사 엘지텔레콤 JavaScript file serving method and system
US20140195824A1 (en) * 2011-09-26 2014-07-10 Feitian Technologies Co., Ltd. Protecting method and system of java source code
KR102323276B1 (en) * 2021-03-18 2021-11-05 세종대학교산학협력단 Method and apparatus for converting application

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000038878A (en) 1998-12-09 2000-07-05 윤종용 Screen saver system and method recognizing user face
KR20040053179A (en) * 2001-10-19 2004-06-23 코닌클리즈케 필립스 일렉트로닉스 엔.브이. A method of compiling bytecode to native code
KR20090131796A (en) * 2008-06-19 2009-12-30 주식회사 엘지텔레콤 JavaScript file serving method and system
US20140195824A1 (en) * 2011-09-26 2014-07-10 Feitian Technologies Co., Ltd. Protecting method and system of java source code
KR102323276B1 (en) * 2021-03-18 2021-11-05 세종대학교산학협력단 Method and apparatus for converting application

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102802653B1 (en) * 2025-01-15 2025-05-07 주식회사 피앤피시큐어 Method and system for automatically reinforcing authentication functions in a communication network environment

Similar Documents

Publication Publication Date Title
US12050692B2 (en) Secure and flexible boot firmware update for devices with a primary platform
EP2657835B1 (en) Software-defined radio terminal device and method for distributing and installing radio application
CN106415491B (en) Application protection method, server and terminal
CN112989356B (en) Blank security chip burning method, system, blank security chip and storage medium
CN110855433B (en) Data encryption method and device based on encryption algorithm and computer equipment
US20140006798A1 (en) Device, system, and method for processor-based data protection
EP2151763A1 (en) Method and apparatus for obfuscating virtual to physical memory mapping
KR102604270B1 (en) Communication encryption plug-in method and system for applications using JAVA BCI technology
CN106506147B (en) Method for realizing IPsec-VPN based on cryptographic algorithm
EP3648493A1 (en) Secure personalization of a chip comprising a secure execution environment such as iuicc, issp or tee
CN113692576B (en) Method and device for dynamic switching between Native and JavaCard
CN105279399A (en) Application anti-crack method and device
WO2017140426A1 (en) Method and device for writing data into intelligent card
CN113420313A (en) Program safe operation and encryption method and device, equipment and medium thereof
CN101179379A (en) Firmware security management method for microwave access global intercommunication system
CN117828555B (en) Low-cost Java source code protection method and device
KR20180100398A (en) How to load a subscription into a mobile terminal's built-in security element
CN117113423A (en) Transparent encryption method, device, equipment and storage medium for database
US7698703B2 (en) Imparting digital uniqueness to the types of a programming language using a unique digital sequence
EP4060538B1 (en) A provisioning control apparatus and method for provisioning electronic components for electronic devices
FI111567B (en) Procedure for loading the program module
CN116074106A (en) Message encryption and decryption method and device, electronic equipment and storage medium
KR20190035356A (en) Method for provisioning key information and apparatus using the same
CN110730166B (en) Data encryption and data decryption method, system, computer device and storage medium
CN119484044B (en) Data encryption and decryption methods and devices

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20230822

PA0201 Request for examination
PA0302 Request for accelerated examination

Patent event date: 20230907

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

Patent event date: 20230822

Patent event code: PA03021R01I

Comment text: Patent Application

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20231018

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20231115

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20231116

End annual number: 3

Start annual number: 1

PG1601 Publication of registration