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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract 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
Description
본 발명은 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
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
삽입모듈(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
자바모듈(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
암,복호화코드는 자바 프로그램 구동 시 활성화되는 자바모듈(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
도 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
S13; 제3단계S13;
단말기(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
S15; 제5단계S15; Step 5
자바모듈(30)은 애플리케이션(A1, A2)이 다른 단말기와의 송,수신데이터를 암,복호화코드의 알고리즘에 따라 암,복호화하도록 프로세싱한다. 이에 관해 좀 더 구체적으로 설명하면, 자바모듈(30)이 소켓 통신의 inputstream과 outputstream에서 read method와 write method를 검색하여 read method를 통해 수신데이터를 확인하고 write method를 통해 송신데이터를 확인해서, 애플리케이션이 복호화코드에 따라 수신데이터를 복호화하고 암호화코드에 따라 송신데이터를 암호화하도록 한다.The
전술한 프로세스를 기반으로 송,수신데이터에 대한 암,복호화 과정을 좀 더 구체적으로 설명하면, 제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
이후, 제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
상기 제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)
자바 프로그램의 구동으로 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:
자바모듈이 소켓 통신의 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:
자바모듈이 애플리케이션의 기존 소스코드 중 데이터 실행코드가 복호화된 수신데이터를 실행하도록 프로세싱하는 제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:
자바모듈이 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:
상기 암,복호화코드가 삽입된 애플리케이션이 정지되면 암,복호화코드가 삽입된 애플리케이션의 소스코드가 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:
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)
| 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)
| 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 |
-
2023
- 2023-08-22 KR KR1020230109902A patent/KR102604270B1/en active Active
Patent Citations (5)
| 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)
| 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 |