KR20200093455A - Method and system for network protocol state inference through reverse engineering - Google Patents

Method and system for network protocol state inference through reverse engineering Download PDF

Info

Publication number
KR20200093455A
KR20200093455A KR1020200008698A KR20200008698A KR20200093455A KR 20200093455 A KR20200093455 A KR 20200093455A KR 1020200008698 A KR1020200008698 A KR 1020200008698A KR 20200008698 A KR20200008698 A KR 20200008698A KR 20200093455 A KR20200093455 A KR 20200093455A
Authority
KR
South Korea
Prior art keywords
messages
protocol
length
information
clustered
Prior art date
Application number
KR1020200008698A
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 건국대학교 산학협력단
Publication of KR20200093455A publication Critical patent/KR20200093455A/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

A method for inferring a network protocol state through reverse engineering and a system thereof are disclosed. According to an embodiment of the present invention, the method comprises the steps of: receiving a plurality of first messages and a plurality of second messages transmitted from a plurality of hosts through at least one protocol; obtaining syntax information, semantic information, and timing information for the at least one protocol based on the plurality of first messages; and determining a state of the at least one protocol using the syntax information, the semantic information, and the timing information, and the length of messages received so far of the plurality of second messages.

Description

역공학을 통한 네트워크 프로토콜 상태 추론 방법 및 시스템{METHOD AND SYSTEM FOR NETWORK PROTOCOL STATE INFERENCE THROUGH REVERSE ENGINEERING}METHOD AND SYSTEM FOR NETWORK PROTOCOL STATE INFERENCE THROUGH REVERSE ENGINEERING}

아래 실시예들은 역공학을 통한 네트워크 프로토콜 상태 추론 방법 및 시스템에 관한 것이다.The embodiments below relate to a method and system for network protocol state inference through reverse engineering.

최근 인터넷 환경에서는 다양한 프로토콜(protocol)을 통해 많은 정보 교환이 이루어지고 있다. 호스트(host)들은 정보를 교환하기 위해 메시지를 주고받는다. 호스트들은 대부분 공개된 국제 표준 프로토콜이나 TCP(Transmission Control Protocol)와 같은 범용적인 프로토 콜을 통해 통신을 수행한다. 하지만, 기존의 프로토콜은 사물 인터넷(IoT, Internet of Things) 및 클라우드(cloud)와 같은 새로운 분야가 발전하고 점차 생활에 밀접한 관계를 띄기 시작함에 따라 한계점이 나타나기 시작했다. 예를 들어, 기존의 TCP 프로토콜은 신뢰성이 보장되지만, IoT 기기등에서 활용하기에는 너무 무거워서 지연이 발생한다.In the recent Internet environment, a lot of information exchange has been performed through various protocols. Hosts exchange messages to exchange information. Most hosts communicate through public protocols such as the published international standard protocol or Transmission Control Protocol (TCP). However, existing protocols began to show limitations as new fields such as the Internet of Things (IoT) and the cloud developed and gradually began to have a close relationship with life. For example, the reliability of the existing TCP protocol is guaranteed, but it is too heavy to be used in IoT devices, so a delay occurs.

기존의 프로토콜은 이러한 문제점이 발생함에 따라 경량화 혹은 속도 향상 등 다양한 연구를 통해 새로운 프로토콜이 개발되었다. 새로운 프로토콜의 개발은 서비스의 품질 등 편의성 면에서는 많은 개선이 되었지만, 반대로 보안과 같은 분야에서는 퇴보하여 새로운 문제가 대두되기 시작하였다.As these problems occurred, new protocols were developed through various studies such as weight reduction or speed improvement. The development of a new protocol has improved a lot in terms of convenience, such as quality of service, but on the contrary, in the field of security, new problems have started to emerge.

보안의 측면에서는 프로토콜의 구조나 논리가 공개되지 않았거나 제한적으로 공개된 경우 통상적인 방법으로는 해당 프로토콜의 정보를 알 수 없다. 이는 프로토콜을 관리하거나 통제할 방안이 없다는 점을 의미하기도 한다. 이러한 프로토콜 외에도 자체적으로 개발되거나 수정이 가해진 프로토콜의 경우 암호화, 혼잡 제어 등의 기능이 지원되지 않는 경우가 상당수 존재하며 이로 인해 네트워크의 다양한 문제점과 보안 문제가 발생한다.In the aspect of security, if the structure or logic of the protocol is not disclosed or is limitedly disclosed, the information of the protocol cannot be known by the conventional method. This also means that there is no way to manage or control the protocol. In addition to these protocols, in the case of protocols developed or modified in-house, there are many cases in which functions such as encryption and congestion control are not supported, and this causes various problems and security problems in the network.

실시예들은 프로토콜(protocol)에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보와, 현재까지 수신된 메시지의 길이를 이용하여 프로토콜의 상태를 결정할 수 있는 기술을 제공할 수 있다.Embodiments can provide a technique for determining the state of a protocol by using syntax information, semantics information, and timing information for a protocol, and the length of a message received so far. have.

일 실시예에 따른 프로토콜 상태 결정 방법은, 복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하는 단계와, 상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하는 단계와, 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계를 포함한다.A method for determining a protocol status according to an embodiment includes receiving a first plurality of messages and a second plurality of messages transmitted through at least one protocol from a plurality of hosts, and the plurality of messages Obtaining syntax information, semantics information, and timing information for the at least one protocol based on the first messages of the; and the syntax information, the semantic information, and the timing information. And determining the status of the at least one protocol using the length of the message received to date of the second plurality of messages.

상기 획득하는 단계는, 상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하는 단계와, 군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계를 포함할 수 있다.The acquiring may include clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages, and clustering the first plurality of messages using the clustered first plurality of messages. And obtaining the syntax information, the semantic information, and the timing information for a protocol corresponding to the first plurality of messages.

상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계는, 상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하는 단계와, 상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하는 단계와, 상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는 단계를 포함할 수 있다.The obtaining of the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages may include: an entire field and the field for the clustered first plurality of messages. Generating the syntax information using a static field for the first clustered messages, and generating the timing information using the clustered first plurality of messages and the static fields And generating the semantic information based on the syntax information and the timing information.

상기 구문 정보를 생성하는 단계는, 상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하는 단계와, 상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하는 단계와, 상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하는 단계와, 상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는 단계를 포함할 수 있다.The generating of the syntax information may include extracting the static field from the clustered first plurality of messages, extracting a keyword repeated in a certain length from the static field, and extracting the keyword. Calculating a length of data for the clustered first plurality of messages using a length and a length of the entire field, and using the length of the data, the length of the entire field and the length of the keyword And generating information.

상기 타이밍 정보를 생성하는 단계는, 상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는 단계를 포함할 수 있다.The generating of the timing information may include generating the timing information based on an order of keywords of each of the clustered first plurality of messages corresponding to an order of receiving the clustered first plurality of messages. Can.

상기 의미 정보를 생성하는 단계는, 상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하는 단계와, 상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는 단계를 포함할 수 있다.The generating of the semantic information may include selecting at least one first data message among the first plurality of messages using the syntax information, and using the first data message and the timing information And generating information.

상기 결정하는 단계는, 상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하는 단계와, 상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하는 단계와, 상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는 단계를 포함할 수 있다.The determining may include selecting at least one second data message from the second plurality of messages using the timing information and the semantic information, and a buffer having a length equal to the length of the entire field. ), and the state of the protocol corresponding to the at least one second data message according to whether the length of the buffer and the length of the received message of the at least one second data message are the same. And determining.

상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계는, 상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하는 단계와, 상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는 단계를 포함할 수 있다.Determining the state of the at least one protocol according to whether the length of the buffer and the length of the received message of the at least one or more second data messages are the same include: the length of the buffer and the at least one or more Determining that the state of the protocol corresponding to the at least one second data message is completed when the length of the received message to the present is the same, and the length of the buffer and the at least one data And when the length of the received message so far is not the same, determining that the status of the protocol corresponding to the at least one second data message is being received.

상기 방법은, 상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는 단계를 더 포함할 수 있다.The method may further include performing fuzz testing on the keyword to determine an error in the transmission process of the plurality of first messages.

일 실시예에 따른 프로토콜 상태 결정 장치는, 프로토콜의 상태 결정을 위한 인스트럭션들을 저장하는 메모리와, 상기 인스트럭션들을 실행하기 위한 프로세서를 포함하고, 상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는, 복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하고, 상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하고, 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정한다.An apparatus for determining a protocol state according to an embodiment includes a memory for storing instructions for determining a state of a protocol, and a processor for executing the instructions, and when the instructions are executed by the processor, the processor includes a plurality of The first plurality of messages and the second plurality of messages transmitted through at least one protocol (protocol) from the hosts (host) of the, and based on the plurality of first messages to the at least one protocol Syntax information, semantics information, and timing information for acquiring, and obtaining the syntax information, the semantic information, and the timing information, and the length of a message received to date of the second plurality of messages Use to determine the state of the at least one protocol.

상기 프로세서는, 상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하고, 군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득할 수 있다.The processor clusters the first plurality of messages for each protocol used for transmission of each of the first plurality of messages, and uses the grouped first plurality of messages to cluster the first plurality of messages. The syntax information, the semantic information, and the timing information for a protocol corresponding to messages may be obtained.

상기 프로세서는, 상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하고, 상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하고, 상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성할 수 있다.The processor generates the syntax information using the entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages, and the clustering is performed. The timing information may be generated using the first plurality of messages and the static field, and the semantic information may be generated based on the syntax information and the timing information.

상기 프로세서는, 상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하고, 상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하고, 상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하고, 상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성할 수 있다.The processor extracts the static field from the clustered first plurality of messages, extracts a keyword repeated in a constant length from the static field, and uses the length of the keyword and the length of the entire field By calculating the length of data for the clustered first plurality of messages, the syntax information may be generated using the length of the data, the length of the entire field, and the length of the keyword.

상기 프로세서는, 상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성할 수 있다.The processor may generate the timing information based on the order of keywords of each of the clustered first plurality of messages corresponding to the order of receiving the clustered first plurality of messages.

상기 프로세서는, 상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하고, 상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성할 수 있다.The processor may select at least one first data message from the first plurality of messages using the syntax information, and generate the semantic information using the first data message and the timing information.

상기 프로세서는, 상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하고, 상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하고, 상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정할 수 있다.The processor selects at least one second data message from the second plurality of messages using the timing information and the semantic information, and generates a buffer having a length equal to the length of the entire field. , The state of the protocol corresponding to the at least one second data message may be determined according to whether the length of the buffer and the length of the at least one second data message received so far are the same.

상기 프로세서는, 상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하고, 상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정할 수 있다.The processor, when the length of the buffer and the length of the received message to the present time of the at least one or more second data messages are the same, determines that the state of the protocol corresponding to the at least one or more second data messages is completed. , When the length of the buffer and the length of the at least one data message received so far are not the same, it may be determined that the state of a protocol corresponding to the at least one second data message is being received.

상기 프로세서는, 상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단할 수 있다.The processor may perform an fuzz testing on the keyword to determine an error in the transmission process of the plurality of first messages.

도 1은 일 실시예에 따른 프로토콜 상태 결정을 위한 시스템을 나타낸 도면이다.
도 2는 시스템이 구현된 일 예를 개략적으로 나타낸 도면이다.
도 3은 시스템이 구현된 다른 예를 개략적으로 나타낸 도면이다.
도 4는 도 2에 도시된 상태 결정 장치가 이용하는 커널 바이패스(Kernel-Bypass) 구조의 일 예를 나타낸 도면이다.
도 5는 상태 결정 장치의 동작을 개략적으로 나타낸 순서도이다.
도 6은 도 1에 도시된 상태 결정 장치를 개략적으로 나타낸 도면이다.
도 7 내지 도 9는 상태 결정 장치가 복수의 메시지들에 대해 수행하는 군집화를 설명하기 위한 도면이다.
도 10 내지 도 12는 상태 결정 장치가 구문 정보 및 키워드를 획득하는 동작을 설명하기 위한 도면이다.
도 13은 상태 결정 장치가 타이밍 정보 및 의미 정보를 생성하는 과정을 설명하기 위한 도면이다.
도 14는 상태 결정 장치가 수행하는 퍼즈 테스팅에 대한 설명을 위한 도면이다.
도 15는 상태 결정 장치가 프로토콜의 상태를 결정하기 위해 이용하는 알고리즘의 일 예를 나타낸다.
도 16은 다른 실시예에 따른 시스템을 메시지 및 ACK의 송수신을 중심으로 개략적으로 나타낸 도면이다.
도 17 내지 도 24는 상태 결정 장치의 성능 평가 결과를 설명하기 위한 도면이다.
1 is a diagram illustrating a system for protocol state determination according to an embodiment.
2 is a diagram schematically showing an example in which the system is implemented.
3 is a diagram schematically showing another example in which the system is implemented.
FIG. 4 is a diagram illustrating an example of a kernel-bypass structure used by the state determination device illustrated in FIG. 2.
5 is a flowchart schematically showing the operation of the state determination device.
FIG. 6 is a diagram schematically showing a state determination device illustrated in FIG. 1.
7 to 9 are diagrams for explaining clustering performed by the state determination apparatus on a plurality of messages.
10 to 12 are diagrams for describing an operation of the state determining device to acquire syntax information and keywords.
13 is a diagram for explaining a process in which the state determination device generates timing information and semantic information.
14 is a diagram for description of fuzz testing performed by a state determination device.
15 shows an example of an algorithm used by the state determining device to determine the state of the protocol.
16 is a diagram schematically showing a system according to another embodiment with a focus on transmission and reception of messages and ACKs.
17 to 24 are diagrams for explaining the performance evaluation results of the state determination device.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, various changes may be made to the embodiments, and the scope of the patent application right is not limited or limited by these embodiments. It should be understood that all modifications, equivalents, or substitutes for the embodiments are included in the scope of rights.

실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the examples are used for illustrative purposes only and should not be construed as limiting. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, terms such as “include” or “have” are intended to indicate that a feature, number, step, operation, component, part, or combination thereof described on the specification exists, and that one or more other features are present. It should be understood that the existence or addition possibilities of fields or numbers, steps, operations, components, parts or combinations thereof are not excluded in advance.

제1 또는 제2 등의 용어가 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해서 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 실시예의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Terms such as first or second may be used to describe various components, but the components should not be limited by terms. The terms are for the purpose of distinguishing one component from another component, for example, without departing from the scope of rights according to the concept of the embodiment, the first component may be referred to as the second component, and similarly The second component may also be referred to as the first component.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person skilled in the art to which the embodiment belongs. Terms, such as those defined in a commonly used dictionary, should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined in the present application. Does not.

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same reference numerals are assigned to the same components regardless of reference numerals, and redundant descriptions thereof will be omitted. In describing the embodiments, when it is determined that detailed descriptions of related known technologies may unnecessarily obscure the subject matter of the embodiments, the detailed descriptions will be omitted.

도 1은 일 실시예에 따른 프로토콜 상태 결정을 위한 시스템을 나타낸 도면이고, 도 2는 시스템이 구현된 일 예를 개략적으로 나타낸 도면이고, 도 3은 시스템이 구현된 다른 예를 개략적으로 나타낸 도면이고, 도 4는 도 2에 도시된 상태 결정 장치가 이용하는 커널 바이패스(Kernel-Bypass) 구조의 일 예를 나타낸 도면이고, 도 5는 상태 결정 장치의 동작을 개략적으로 나타낸 순서도이다.1 is a diagram illustrating a system for determining a protocol state according to an embodiment, FIG. 2 is a diagram schematically showing an example in which the system is implemented, and FIG. 3 is a diagram schematically showing another example in which the system is implemented , FIG. 4 is a diagram illustrating an example of a kernel-bypass structure used by the state determination apparatus shown in FIG. 2, and FIG. 5 is a flowchart schematically showing the operation of the state determination apparatus.

시스템(10)은 복수의 호스트들(100) 및 상태 결정 장치(300)를 포함한다.The system 10 includes a plurality of hosts 100 and a status determining device 300.

시스템(10)은 구조나 논리를 모르는 전송 계층의 프로토콜을 패킷 트레이스(Trace)를 기반으로 프로토콜 역공학(reverse engineering)을 수행하여 프로토콜에 대한 정보와 상태를 추론할 수 있다.The system 10 may infer protocol and reverse engineering of a transport layer protocol that does not know the structure or logic based on packet trace to infer information and status about the protocol.

프로토콜 역공학이란, 프로토콜을 분석하여 현재 프로토콜의 구성 요소와 그 의존성을 파악하고, 프로토콜을 추상화하고, 프로토콜의 설계 정보를 추출 및 생성하는 과정을 의미할 수 있다. 시스템(10)은 군집화(clustering)와 같은 다양한 자동화 방법을 통해 각 프로토콜의 특징으로부터 구조와 상태를 분석할 수 있다.Protocol reverse engineering may mean a process of analyzing a protocol to grasp the components of a current protocol and its dependencies, abstracting the protocol, and extracting and generating design information of the protocol. The system 10 can analyze the structure and state from the characteristics of each protocol through various automation methods such as clustering.

시스템(10)은 프로토콜 역공학을 1) 프로토콜 메시지의 종류, 구조, 및 크기의 분석, 2) 상태 머신(State-Machine)을 통한 상관 관계의 분석을 통해 수행할 수 있다.The system 10 may perform protocol reverse engineering through 1) analysis of the type, structure, and size of protocol messages, and 2) correlation analysis through a state machine.

복수의 호스트들(100)은 네트워크(1000)를 통해 통신을 수행할 수 있다. 예를 들어, 복수의 호스트들(100)은 상태 결정 장치(300)와 직접 연결되어 통신을 수행할 수 있다. 복수의 호스트들(100)은 복수의 메시지들을 송신 및 수신할 수 있다.The plurality of hosts 100 may perform communication through the network 1000. For example, the plurality of hosts 100 may be directly connected to the state determination device 300 to perform communication. The plurality of hosts 100 may transmit and receive a plurality of messages.

상태 결정 장치(300)는 복수의 호스트들(100)로부터 적어도 하나 이상의 프로토콜을 통해 전송된 복수의 메시지들을 수신 및/또는 캡쳐할 수 있다. 상태 결정 장치(300)는 복수의 메시지들에 기초하여 프로토콜의 상태를 결정할 수 있다.The state determining device 300 may receive and/or capture a plurality of messages transmitted through at least one protocol from the plurality of hosts 100. The state determining device 300 may determine the state of the protocol based on the plurality of messages.

상태 결정 장치(300)는 복수의 호스트들(100)끼리 메시지를 교환하는 과정에서 발생하는 네트워크 트레이스를 기반으로 프로토콜의 구조나 논리를 역공학을 통해 분석할 수 있다.The state determining device 300 may analyze the structure or logic of the protocol through reverse engineering based on a network trace generated in the process of exchanging messages between a plurality of hosts 100.

상태 결정 장치(300)는 FSM(Finite State Machine)을 통해 프로토콜을 오토마타(automata)로 표현할 수 있다. FSM은 통신을 위한 구조나 아키텍처를 설계할 때 사용되는 모델을 의미할 수 있다. 상태 결정 장치(300)는 FSM을 통해 통신을 위한 구조나 아키텍처가 유한한 상태를 가진다고 가정하고, 각각의 상태별 동작과 상태 간의 전이에 관한 내용을 설계하고 정의할 수 있다.The state determination device 300 may express the protocol as an automata through a Finite State Machine (FSM). FSM may refer to a model used when designing a structure or architecture for communication. The state determination device 300 may assume that the structure or architecture for communication through the FSM has a finite state, and design and define the content of each state of operation and transition between states.

상태 결정 장치(300)는 프로토콜의 사양(Specification)을 수학식 1 내지 수학식 3을 통해 오토마타로 표현할 수 있다.The state determining device 300 may express the specification of the protocol as an automata through Equations 1 to 3.

Figure pat00001
Figure pat00001

Figure pat00002
Figure pat00002

Figure pat00003
Figure pat00003

Figure pat00004
Figure pat00004

M은 메시지의 유형, T는 메시지 간의 전이, F는 메시지를 구성하는 필드를 의미할 수 있다. 즉, T는 메시지간의 전이 확률(transition probability)을 원소로 가질 수 있다.M may be a message type, T may be a transition between messages, and F may be a field constituting the message. That is, T may have a transition probability between messages as an element.

즉, 상태 결정 장치(300)는 메시지의 유형(M)을 상태(state)로 하고, 각 메시지 유형(M) 간 전이(T)를 기반으로 하여 프로토콜의 FSM을 표현할 수 있다. 상태 결정 장치(300)는 수학식 1 내지 3을 통해 프로토콜을 역공학 하는 과정에서 획득하는 정보를 기반으로, FSM을 통해 프로토콜을 오토마타로 표현할 수 있다.That is, the state determining device 300 may set the message type M as a state, and express the FSM of the protocol based on the transition T between each message type M. The state determining device 300 may express the protocol as an automata through FSM based on information obtained in the process of reverse engineering the protocol through Equations 1 to 3.

도 3을 참조하면, 상태 결정 장치(300)는 복수의 호스트들(100) 중에서 어느 하나(100-7)에 포함될 수 있다. 상태 결정 장치(300)는 복수의 호스트들(100) 중에서 어느 하나 이상에 포함될 수 있다.Referring to FIG. 3, the state determining device 300 may be included in any one of the plurality of hosts 100 (100-7). The state determining device 300 may be included in any one or more of the plurality of hosts 100.

도 4를 참조하면, 상태 결정 장치(300)는 커널 바이패스(Kernel-Bypass) 구조로 네트워킹을 수행할 수 있다. 즉, 네트워크(1000)의 프로토콜을 분석하여 추론하기 위해서는 커널 레벨(Kernel-Level)이 아닌, 유저 레벨(User-Level)에서의 작업이 필요할 수 있다. 따라서, 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조로 통신을 수행할 수 있다. PF_RING 은 네트웍 디바이스에서 수신한 패킷을 빠르게 전달할 수 있는 패킷 캡쳐를 위한 소켓일 수 있다.Referring to FIG. 4, the state determining device 300 may perform networking in a kernel-bypass structure. That is, in order to analyze and infer the protocol of the network 1000, work at a user level (user-level) may be required, not a kernel level (kernel-level). Accordingly, the state determining device 300 can perform communication in a synchronous kernel bypass structure based on the PF_RING library. PF_RING may be a socket for packet capture that can quickly forward a packet received from a network device.

상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 메시지를 Control 영역과 Data 영역으로 구분하여 네트워킹을 수행할 수 있다. 또한, 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 별도의 쓰레드(Thread)를 생성하여 패킷 캡처만 수행하도록 전담시킴으로써, 일반적인 리눅스 커널(Linux Kernel) 대비 오버헤를 더 적게 발생시킬 수 있다.The state determining device 300 may perform networking by dividing the message into a control area and a data area through a synchronous kernel bypass structure based on the PF_RING library. In addition, the state determining device 300 is dedicated to performing packet capture by creating a separate thread through a synchronous kernel bypass structure based on the PF_RING library, thereby overcoming the general Linux kernel. It can cause less.

상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 메시지가 손실(Loss)되어 역공학이 제대로 수행되지 않는 경우를 방지할 수 있다. 일반적인 네트워크 통신은 NIC 디바이스 드라이버(480; Network Interface Card Device Driver)를 통하여, 커널의 네트워킹(TCP/IP 혹은 UDP 등)을 기반으로 데이터를 수신할 수 있다. 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 TCP/IP, UDP 등이 아닌 Unknown 프로토콜의 정보를 획득할 수 있다. 상태 결정 장치(300)는 NIC에서 커널로 정보를 넘기지 않고 PF-RING이라는 모듈을 통해 APP LAYER로 데이터를 전달하여 어플리케이션(410)에서 프로토콜의 정보를 다룰 수 있다.The state determining device 300 may prevent a case in which reverse engineering is not properly performed because a message is lost through a synchronous kernel bypass structure based on the PF_RING library. The general network communication may receive data based on the networking (TCP/IP or UDP) of the kernel through the NIC device driver 480 (Network Interface Card Device Driver). The state determining device 300 may obtain information of the unknown protocol, not TCP/IP, UDP, etc. through a synchronous kernel bypass structure based on the PF_RING library. The state determining device 300 may handle the information of the protocol in the application 410 by passing data to the APP LAYER through a module called PF-RING without passing information from the NIC to the kernel.

상태 결정 장치(300)는 PF_RING의 TCPDUMP를 기반으로 메시지 수집 기능을 수행할 수 있다. TCPDUMP는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들을 출력할 수 있다.The state determining device 300 may perform a message collection function based on TCPDUMP of PF_RING. TCPDUMP can output packets that pass through a network interface that satisfies a given conditional expression.

도 5를 참조하면, 상태 결정 장치(300)는 네트워크 트레이스(Network-Trace)에 혼재된 적어도 하나 이상의 프로토콜을 통해 전송된 복수의 메시지들을 수신할 수 있다(510). 상태 결정 장치(300)는 복수의 메시지들을 프로토콜별로 군집화할 수 있다(530). 상태 결정 장치(300)는 군집화된 복수의 메시지들을 분석하여 프로토콜의 구문(Syntax) 정보, 타이밍(timing) 정보, 및 의미(Semantics) 정보를 획득할 수 있다(550). 상태 결정 장치(300)는 구문(Syntax) 정보, 타이밍(timing) 정보, 및 의미(Semantics) 정보를 기반으로 프로토콜의 상태를 결정할 수 있다(570).Referring to FIG. 5, the state determining device 300 may receive a plurality of messages transmitted through at least one protocol mixed in a network trace (510) (510). The state determining device 300 may cluster a plurality of messages for each protocol (530 ). The state determination device 300 may obtain a syntax information, timing information, and semantics information of the protocol by analyzing a plurality of clustered messages (550). The state determining device 300 may determine the state of the protocol based on syntax information, timing information, and semantics information (570).

도 6은 도 1에 도시된 상태 결정 장치를 개략적으로 나타낸 도면이다.FIG. 6 is a diagram schematically showing a state determination device illustrated in FIG. 1.

상태 결정 장치(300)는 송수신기(310), 프로세서(330) 및 메모리(350)를 포함할 수 있다. 상태 결정 장치(300)는 송수신기(310)를 통해 네트워크(1000)에 연결되고 통신할 수 있다.The state determining device 300 may include a transceiver 310, a processor 330, and a memory 350. The state determining device 300 may be connected to and communicate with the network 1000 through the transceiver 310.

송수신기(310)는 무선 통신 및/또는 유선 통신을 통해서 네트워크(1000)에 연결되어 복수의 호스트들(100) 등과 통신할 수 있다. 송수신기(310)는 복수의 호스트들로부터 적어도 하나 이상의 프로토콜을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신할 수 있다. 송수신기(310)는 제1 복수의 메시지들 및/또는 제2 복수의 메시지들을 프로세서(330)로 전송할 수 있다.The transceiver 310 may be connected to the network 1000 through wireless communication and/or wired communication to communicate with a plurality of hosts 100 and the like. The transceiver 310 may receive a first plurality of messages and a second plurality of messages transmitted through at least one protocol from a plurality of hosts. The transceiver 310 may transmit the first plurality of messages and/or the second plurality of messages to the processor 330.

송수신기(310)는 결정된 프로토콜의 상태를 복수의 호스트들(100) 및/또는 서버(미도시) 등으로 송신할 수 있다.The transceiver 310 may transmit the determined state of the protocol to a plurality of hosts 100 and/or a server (not shown).

프로세서(330)는 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor) 중 하나 또는 그 이상을 포함할 수 있다.The processor 330 may include one or more of a central processing unit, an application processor, or a communication processor.

프로세서(330)는 상태 결정 장치(300)의 적어도 하나의 다른 구성요소들의 제어에 관한 연산이나 데이터 처리를 실행할 수 있다. 예를 들어, 프로세서(330)는 메모리(350)에 저장된 어플리케이션 및/또는 소프트웨어 등을 실행할 수 있다.The processor 330 may execute an operation or data processing related to control of at least one other component of the state determining device 300. For example, the processor 330 may execute an application and/or software stored in the memory 350.

프로세서(330)는 송수신기(310)가 수신한 데이터 및 메모리(350)에 저장된 데이터를 처리할 수 있다. 프로세서(330)는 메모리(350)에 저장된 데이터를 처리할 수 있다. 프로세서(330)는 메모리(350)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(330)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.The processor 330 may process data received by the transceiver 310 and data stored in the memory 350. The processor 330 may process data stored in the memory 350. The processor 330 may execute computer readable code (eg, software) stored in the memory 350 and instructions caused by the processor 330.

프로세서(330)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.The processor 330 may be a data processing device embodied in hardware having circuits having a physical structure for performing desired operations. For example, desired operations may include code or instructions included in a program.

예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.For example, data processing devices implemented in hardware include a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor. , ASIC (Application-Specific Integrated Circuit), FPGA (Field Programmable Gate Array).

프로세서(330)는 복수의 제1 메시지들에 기초하여 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득할 수 있다.The processor 330 may acquire syntax information, semantics information, and timing information for at least one protocol based on the plurality of first messages.

프로세서(330)는 제1 복수의 메시지들을 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)할 수 있다.The processor 330 may cluster the first plurality of messages for each protocol used for transmission of each of the first plurality of messages.

프로세서(330)는 군집화된 제1 복수의 메시지들을 이용하여, 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 구문 정보, 의미 정보 및 타이밍 정보를 획득할 수 있다.The processor 330 may acquire syntax information, semantic information, and timing information for a protocol corresponding to the clustered first plurality of messages using the clustered first plurality of messages.

프로세서(330)는 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 구문 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 군집화된 제1 복수의 메시지들로부터 정적 필드를 추출할 수 있다. 프로세서(330)는 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출할 수 있다. 프로세서(330)는 키워드의 길이 및 전체 필드의 길이를 이용하여 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산할 수 있다. 프로세서(330)는 데이터의 길이, 전체 필드의 길이 및 키워드의 길이를 이용하여 구문 정보를 생성할 수 있다.The processor 330 may generate syntax information using the entire field for the first clustered messages and the static field for the first clustered messages. For example, the processor 330 may extract a static field from the clustered first plurality of messages. The processor 330 may extract a keyword repeated in a constant length from the static field. The processor 330 may calculate the length of data for the first plurality of messages clustered using the length of the keyword and the length of the entire field. The processor 330 may generate syntax information using the length of the data, the length of the entire field, and the length of the keyword.

프로세서(330)는 군집화된 제1 복수의 메시지들 및 정적 필드를 이용하여 타이밍 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 타이밍 정보를 생성할 수 있다.The processor 330 may generate timing information using the clustered first plurality of messages and the static field. For example, the processor 330 may generate timing information based on the order of keywords of each of the first clustered messages corresponding to the order of receiving the first clustered messages.

프로세서(330)는 구문 정보 및 타이밍 정보에 기초하여 의미 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 구문 정보를 이용하여 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택할 수 있다. 프로세서(330)는 제1 데이터 메시지 및 타이밍 정보를 이용하여 의미 정보를 생성할 수 있다.The processor 330 may generate semantic information based on syntax information and timing information. For example, the processor 330 may select at least one first data message from among the first plurality of messages using syntax information. The processor 330 may generate semantic information using the first data message and timing information.

프로세서(330)는 구문 정보, 의미 정보 및 타이밍 정보와, 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 적어도 하나 이상의 프로토콜의 상태를 결정할 수 있다.The processor 330 may determine the state of at least one protocol by using syntax information, semantic information, and timing information, and the length of the message received to date of the second plurality of messages.

프로세서(330)는 타이밍 정보 및 의미 정보를 이용하여 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택할 수 있다. 프로세서(330)는 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성할 수 있다. 프로세서(330)는 버퍼의 길이와, 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정할 수 있다.The processor 330 may select at least one second data message from the second plurality of messages using timing information and semantic information. The processor 330 may generate a buffer having a length equal to the length of the entire field. The processor 330 may determine the state of the protocol corresponding to the at least one second data message according to whether the length of the buffer is equal to the length of the at least one second data message.

예를 들어, 프로세서(330)는 버퍼의 길이와 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 전송이 완료된 것으로 결정할 수 있다. 프로세서(330)는 버퍼의 길이와 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 전송중인 것으로 결정할 수 있다.For example, when the length of the buffer is equal to the length of the at least one second data message and the received message to the present, the processor 330 transmits the state of the protocol corresponding to the at least one second data message as completed. Can decide. The processor 330 may determine that the state of the protocol corresponding to the at least one second data message is being transmitted when the length of the buffer is not the same as the length of the at least one data message received to date.

프로세서(330)는 결정된 프로토콜의 상태를 송수신기(310)로 전송할 수 있다.The processor 330 may transmit the determined state of the protocol to the transceiver 310.

프로세서(330)는 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단할 수 있다.The processor 330 may perform a fuzz testing on a keyword to determine an error in a transmission process for a plurality of first messages.

메모리(350)는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(350)는 상태 결정 장치(300)의 적어도 하나의 다른 구성요소에 관계된 명령 및/또는 데이터를 저장할 수 있다.The memory 350 may include volatile and/or nonvolatile memory. The memory 350 may store instructions and/or data related to at least one other component of the state determining device 300.

메모리(350)는 소프트웨어(software) 및/또는 프로그램(program) 등을 저장할 수 있다. 예를 들어, 메모리(350)는 프로토콜의 상태 결정을 위한 어플리케이션 및 소프트 웨어 등을 저장할 수 있다.The memory 350 may store software and/or programs. For example, the memory 350 may store applications and software for determining the state of the protocol.

도 7 내지 도 9는 상태 결정 장치가 복수의 메시지들에 대해 수행하는 군집화를 설명하기 위한 도면이다.7 to 9 are diagrams for explaining clustering performed by the state determination apparatus on a plurality of messages.

상태 결정 장치(300)는 복수의 메시지들에 대해서 여러 프로토콜을 구분하기 위한 군집화 알고리즘으로 DBSCAN(Density-based spatial clustering of applications with noise)을 이용할 수 있다. DBSCAN이란, 비지도 학습의 대표적인 알고리즘으로, 군집의 개수를 따로 지정하지 않아도 효율적으로 데이터를 분석하여 군집화를 수행할 수 있다. DBSCAN의 군집화 결과는 여러 번 반복 수행하더라도 같은 결과가 일관성 있게 나타난다는 특징이 있을 수 있다.The state determination device 300 may use a density-based spatial clustering of applications with noise (DBSCAN) as a clustering algorithm for distinguishing multiple protocols for a plurality of messages. DBSCAN is a representative algorithm of unsupervised learning, and it is possible to perform clustering by analyzing data efficiently without specifying the number of clusters. The clustering result of DBSCAN may be characterized in that the same result is consistent even if it is repeated several times.

도 7을 참조하면, 상태 결정 장치(300)가 수행하는 DBSCAN을 통해 이루고자 하는 군집화의 방향과 목적성을 나타낼 수 있다. 상태 결정 장치(300)는 도 7에 표시된 3개의 군집이 프로토콜 A(Protocol A), 프로토콜 B(Protocol B), 프로토콜 C(Protocol C)로 명확히 구분된다고 가정할 때, 새로운 점(P)이 발생하면 3개의 군집 중에서 거리와 밀도 기반으로 가까운 군집을 찾아서 속하거나, 최소 개수(minPts)와 밀도(eps)를 기반으로 새로운 군집을 생성할 수 있다.Referring to FIG. 7, it is possible to indicate the direction and purpose of clustering to be achieved through DBSCAN performed by the state determining device 300. The state determining device 300 assumes that the three clusters shown in FIG. 7 are clearly classified into Protocol A, Protocol B, and Protocol C, and a new point P occurs. Then, you can find the closest cluster based on distance and density among the three clusters, or you can create a new cluster based on the minimum number (minPts) and density (eps).

상태 결정 장치(300)는 네트워크 트레이스에서, 출발지와 목적지 주소를 기준으로, 메시지의 전송 횟수, 전송 시간, 메시지의 길이, 및 메시지의 전송 순서 등을 특징(Feature) 데이터로 정의할 수 있다. 상태 결정 장치(300)는 군집화의 성능을 개선하기 위한 과정으로 특정한 기준 시간 동안 선정된 특징 데이터를 대상으로 휴리스틱(Heuristic) 하게 일차적으로 가공하는 특징 공학(Feature Engineering)을 수행할 수 있다.In the network trace, the state determining device 300 may define, as the feature data, the number of transmission of the message, the transmission time, the length of the message, and the transmission order of the message, based on the source and destination addresses. The state determining device 300 may perform feature engineering that primarily performs heuristic processing on feature data selected for a specific reference time as a process for improving the performance of clustering.

도 8을 참조하면, 도 8은 2개의 프로토콜이 혼재된 네트워크 트레이스에서 군집화를 수행한 결과의 일 예를 나타낸다. 도 8의 A 부분(810)과 B 부분(830)은 각기 다른 프로토콜의 데이터를 의미할 수 있다. 도 8과 같은 결과는 군집이 명확하게 구분되지 않으며, 중복되는 구간이 크게 발생함을 의미한다.Referring to FIG. 8, FIG. 8 shows an example of a result of clustering in a network trace in which two protocols are mixed. Part A 810 and part B 830 of FIG. 8 may refer to data of different protocols. The result shown in FIG. 8 means that the clusters are not clearly distinguished, and that overlapping sections are largely generated.

상태 결정 장치(300)는 시간과 관련된 특징 데이터를 더욱 정밀하게 가공하여 이러한 문제를 해결할 수 있다. 상태 결정 장치(300)는 시간과 관련된 특징 데이터를 밀리세컨드(millisecond) 단위로 듀레이션(duration) 혹은 인터벌(interval) 등으로 가공할 수 있다. 상태 결정 장치(300)가 시간과 관련된 특징 데이터를 가공하면, 군집화 수행 시 군집화 성능이 향상될 수 있다. The state determining device 300 may solve this problem by processing the feature data related to time more precisely. The state determination device 300 may process time-related feature data in duration or intervals in milliseconds. When the state determining device 300 processes feature data related to time, the clustering performance may be improved when clustering is performed.

일반적으로는 커널(Kernel)이 밀리세컨드 단위의 네트워킹을 지원하지 않는 경우가 있고, 이는 초 미만의 데이터가 모두 0으로 기재되는 문제점이 있을 수 있다. 하지만, 상태 결정 장치(300)는 커널 바이패스 구조로 네트워킹을 수행하기 때문에 밀리세컨드 단위의 네트워킹을 수행할 수 있다.In general, there are cases in which the kernel does not support millisecond-level networking, and this may have a problem in that data in less than a second is all described as 0. However, since the state determining device 300 performs networking in a kernel bypass structure, it can perform millisecond-level networking.

상태 결정 장치(300)는 주성분 분석(PCA, Principal Component Analysis)을 심층 신경망 기반의 Auto-Encoder을 활용하여 구현할 수 있다. 주성분 분석은 데이터에서 의미를 제대로 표현하는 특징을 갖는 성분을 추려내는 과정을 의미할 수 있다. 상태 결정 장치(300)는 활성화 함수를 sigmoid, ReLU과 같은 비선형이 아닌, 선형 함수를 사용하고, 손실 함수로MSE(Mean Squared Error)를 사용하여 주성분 분석의 효과를 얻을 수 있다.The state determining device 300 may implement Principal Component Analysis (PCA) by using an auto-encoder based on a deep neural network. Principal component analysis may refer to a process of selecting components having characteristics that properly express meaning in data. The state determination device 300 may obtain an effect of principal component analysis by using a non-linear linear function such as sigmoid and ReLU, and a mean squared error (MSE) as a loss function.

도 9를 참조하면, 상태 결정 장치(300)는 시간과 관련된 특징 데이터의 가공 및 주성분 분석을 심층 신경망 기반이 오토 엔코더로 수행함으로써, DBSCAN을 통한 군집화의 성능을 향상시킬 수 있다. 도 9에서, 상태 결정 장치(300)가 복수의 메시지들에 대한 2개의 각기 다른 프로토콜(910, 950)을 정확히 군집화한 것을 알 수 있다.Referring to FIG. 9, the state determination device 300 may improve processing performance of clustering through DBSCAN by performing processing of feature data related to time and analysis of principal components as an auto-encoder based on a deep neural network. In FIG. 9, it can be seen that the state determining device 300 accurately clusters two different protocols 910 and 950 for a plurality of messages.

도 10 내지 도 12는 상태 결정 장치가 구문 정보 및 키워드를 획득하는 동작을 설명하기 위한 도면이다.10 to 12 are diagrams for describing an operation of the state determining device to acquire syntax information and keywords.

상태 결정 장치(300)는 복수의 메시지들을 군집화한 이후, 각각의 프로토콜이 갖는 여러 종류의 메시지들을 세부적으로 분류하는 과정을 수행할 수 있다. 프로토콜은 상호 정보 교환을 위해 다양한 메시지를 교환할 수 있다. 교환되는 메시지들은 정의된 순서에 따라 서로 다른 다양한 구조와 의미가 있을 수 있다. 이는 일반적으로 프로토콜의 구문(Syntax) 정보, 타이밍(Timing) 정보, 및 의미(Semantics) 정보로 구분되어 정의될 수 있다.The state determining apparatus 300 may perform a process of classifying various types of messages of each protocol in detail after clustering a plurality of messages. The protocol can exchange various messages for mutual information exchange. The messages exchanged can have different structures and meanings in a defined order. In general, this may be defined by separating the protocol syntax information, timing information, and semantics information.

프로토콜에서 구문(Syntax)이란, 메시지가 갖는 필드(Field)와 데이터(Data) 각각의 형식과 크기 등을 의미할 수 있다. 의미(Semantics)란 메시지가 갖는 의미를 뜻하며, 타이밍(Timing)은 여러 개의 메시지 중 특정 메시지가 언제 어떠한 순서를 통해 전송될 것인지와 같은 정보를 포함할 수 있다. 프로토콜의 상태를 결정하기 위해서는 구문(Syntax) 정보, 타이밍(Timing) 정보, 및 의미(Semantics) 정보가 필요할 수 있다.Syntax in the protocol may mean the format and size of each field and data of the message. Semantics means the meaning of a message, and timing may include information such as when and in what order certain messages are transmitted among several messages. Syntax information, timing information, and semantics information may be required to determine the state of the protocol.

상태 결정 장치(300)는 메시지에서 정적 필드(예를 들어, [SYN](1010), [SYN, ACK](1030), [ACK](1050))를 추출할 수 있다. 도 10을 참조하면, TCP(Transmission Control Protocol)에서 세션을 수립하는 과정 중 교환되는 메시지의 플래그 필드(flag field)에서 등 정적인 값을 찾을 수 있다. 이처럼 정적인 값을 가지는 필드를 정적 필드(Static Field)라고 하며, 가변적으로 변하는 값을 가지는 필드를 동적 필드(Dynamic Field)라고 할 수 있다.The state determining device 300 may extract static fields (eg, [SYN] 1010, [SYN, ACK] 1030, and [ACK] 1050) from the message. Referring to FIG. 10, a static value can be found in a flag field of a message exchanged during a process of establishing a session in Transmission Control Protocol (TCP). A field having a static value is called a static field, and a field having a variable value can be referred to as a dynamic field.

상태 결정 장치(300)는 정적 필드에서 키워드(예를 들어, “SYN”, “SYN, ACK”, “ACK”)를 추출할 수 있다. 도 11을 참조하면, 메시지에서 정적인 값을 가지는 키워드들(1100)이 반복적으로 존재함을 알 수 있다. 상태 결정 장치(300)는 이처럼 고정된 값으로 반복되는 키워드들을 추출할 수 있다.The state determining device 300 may extract keywords (eg, “SYN”, “SYN, ACK”, and “ACK”) from the static field. Referring to FIG. 11, it can be seen that there are keywords 1100 repeatedly having a static value in the message. The state determining device 300 may extract keywords repeated with a fixed value.

도 12를 참조하면, 상태 결정 장치(300)는 알고리즘 1(Algorithm 1)을 통해 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 메시지에서 정적 필드를 추출하고 정적 필드에서 키워드를 추출할 수 있다.Referring to FIG. 12, the state determining device 300 may extract a keyword through Algorithm 1. That is, the state determining device 300 may extract a static field from the message and a keyword from the static field.

예를 들어, 상태 결정 장치(300)는 정적 필드의 추출이 완료되면, 정적 필드에 대한 값을 한 바이트(1byte)씩 증감 탐색하여 리스트에 저장한 뒤, 반복적으로 다른 메시지의 필드에 포함된 값이 있는지 검증하여 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 keyword= read_byte(field, length)를 반복문으로 수행하는 행위를 통해서 키워드를 정적 필드에서 한 바이트씩 추출할 수 있다. 예를 들어, 상태 결정 장치(300)는 최초에 3바이트를 기준으로 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 정적 필드에 정적인 값이 “abcdef가 있다고 하면, 먼저 "abc"를 추출하여 다른 메시지 필드에 같은 값이 있는지 확인하고, 없으면 한 바이트를 증가시킨 "abcd"를 탐색하여 추출할 수 있다. 상태 결정 장치(300)는 이러한 동작을 정적 필드의 크기만큼 반복해서 복수의 메시지들에서 중복적으로 발생하는 키워드를 추출할 수 있다.For example, when the extraction of the static field is completed, the state determination device 300 increases and decreases the value for the static field by one byte (1 byte) and stores it in a list, and then repeatedly includes values in fields of other messages The keyword can be extracted by verifying that it exists. That is, the state determining device 300 may extract keywords from the static field one byte at a time by performing keyword= read_byte(field, length) as a loop. For example, the state determining device 300 may initially extract a keyword based on 3 bytes. That is, when the static field has a static value of “abcdef,” the state determining device 300 first extracts “abc” to check whether the other message field has the same value, and if not, increases the “abcd” by increasing one byte. You can search and extract. The state determining device 300 may repeat this operation as much as the size of a static field to extract keywords that occur repeatedly in a plurality of messages.

상태 결정 장치(300)는 수학식 4를 통해, 즉 전체 필드의 길이(Field_size)에서 키워드의 길이(Keyword_size)를 빼는 방식으로 메시지의 데이터의 길이(Data_size)를 계산할 수 있다.The state determining device 300 may calculate the length of the message data (Data_size) through Equation 4, that is, by subtracting the keyword length (Keyword_size) from the total field length (Field_size).

Figure pat00005
Figure pat00005

상태 결정 장치(300)는 Data_size! = sytax인 점을 이용하여 구문 정보를 생성할 수 있다. 상태 결정 장치(300)는 데이터의 길이, 전체 필드의 길이 및 키워드의 길이를 이용하여 구문 정보를 생성할 수 있다.The state determining device 300 is Data_size! = sytax can be used to generate syntax information. The state determination device 300 may generate syntax information using the length of the data, the length of the entire field, and the length of the keyword.

도 13은 상태 결정 장치가 타이밍 정보 및 의미 정보를 생성하는 과정을 설명하기 위한 도면이다.13 is a diagram for explaining a process in which the state determination device generates timing information and semantic information.

상태 결정 장치(300)는 획득한 키워드를 통해 해당 메시지가 갖는 순서인 타이밍 정보를 생성할 수 있다. 상태 결정 장치(300)는 해당 메시지가 갖는 순서를 대량의 메시지 트래픽(Traffic)에서 각각의 키워드가 몇 회 반복되었는지 비율과 순서 등을 산정하여 구할 수 있다. 또한, 상태 결정 장치(300)는 하나의 키워드를 기준으로 이후에 나타나는 다음 키워드와 연관성과 종속성을 찾는 작업을 반복적으로 수행할 수 있다.The state determining device 300 may generate timing information that is an order of the corresponding message through the acquired keyword. The state determining device 300 may obtain the order of the corresponding message by calculating the ratio and order of how many times each keyword is repeated in a large amount of message traffic. In addition, the state determining device 300 may repeatedly perform a task of finding a correlation and a dependency with the next keyword that appears later based on one keyword.

도 13은 상태 결정 장치(300)가 키워드를 기반으로 연관성을 탐지하는 과정의 일 예를 나타낸다. 도 13을 참조하면, TCP는 “SYN” 키워드를 가진 메시지 이후의 순서에서 “SYN+ACK” 키워드의 메시지가 발생하는 것을 알 수 있다. 이후에는 “ACK” 키워드의 메시지가 나날 수 있다. 상태 결정 장치(300)는 이러한 메시지 순서의 교환을 두 호스트의 IP주소를 교차하여 검증하는 것으로 구할 수 있다. 상태 결정 장치(300)는 이를 통해 프로토콜이 갖는 타이밍 정보를 생성할 수 있다.13 shows an example of a process in which the state determining device 300 detects association based on keywords. Referring to FIG. 13, it can be seen that TCP generates a message with the keyword “SYN+ACK” in the sequence after the message with the keyword “SYN”. Thereafter, a message of the keyword “ACK” may appear. The state determining device 300 can obtain the exchange of such message order by verifying by crossing the IP addresses of the two hosts. The state determining device 300 may generate timing information of the protocol through this.

상태 결정 장치(300)는 프로토콜의 타이밍 정보와 구문 정보를 이용하여 메시지가 갖는 의미(semantics)를 분석할 수 있다. 즉, UDP처럼 단순히 데이터 메시지를 보내는 프로토콜도 있지만, 세션을 확보하고 제한적으로 데이터를 보내는 프로토콜도 존재한다. 따라서, 상태 결정 장치(300)는 타이밍 정보를 기반으로 키워드의 연관성과 의미(Semantics)를 검증한다.The state determining device 300 may analyze the semantics of the message using the protocol timing information and syntax information. In other words, there are protocols that simply send data messages, such as UDP, but there are protocols that secure sessions and send data limitedly. Accordingly, the state determining device 300 verifies the relevance and semantics of the keyword based on the timing information.

상태 결정 장치(300)는 전체 네트워크 트레이스에서 데이터 메시지를 선택할 수 있다. 상태 결정 장치(300)는 구문 정보가 포함하는 메시지의 크기나 키워드 정보들을 통해 데이터 메시지를 선택할 수 있다.The state determining device 300 may select a data message from the entire network trace. The state determining device 300 may select a data message through the size of the message included in the syntax information or keyword information.

이후, 상태 결정 장치(300)는 데이터 메시지를 보내는 전/후에 발생하는 메시지를 타이밍 정보에서 확인하는 과정을 수행할 수 있다. 상태 결정 장치(300)는 이러한 과정을 통해 메시지 간의 연관성을 찾을 수 있다.Thereafter, the state determining device 300 may perform a process of checking a message occurring before/after sending a data message from timing information. The state determining device 300 may find association between messages through this process.

또한, 상태 결정 장치(300)는 전체 통신기록에서 각각의 메시지 유형이 몇 회 수행 및 반복되는지를 산술적으로 비율을 계산할 수 있다. 상태 결정 장치(300)는 각각의 메시지 유형이 몇 회 수행 및 반복되는지 그 비율을 계산함으로써, 메시지가 어떠한 의미가 있는지 추론할 수 있다. 또한, 상태 결정 장치(300)는 이를 통해 데이터 메시지와 다른 메시지를 명확히 구분할 수 있고, 이를 통해 의미(Semantics) 정보를 생성할 수 있다.In addition, the state determining device 300 may arithmically calculate the ratio of how many times each message type is performed and repeated in the entire communication record. The state determining device 300 may infer what the message means by calculating the ratio of how many times each message type is executed and repeated. In addition, the state determining device 300 can clearly distinguish the data message from other messages through this, and through this, the semantics information can be generated.

도 14는 상태 결정 장치가 수행하는 퍼즈 테스팅에 대한 설명을 위한 도면이다.14 is a diagram for description of fuzz testing performed by a state determination device.

상태 결정 장치(300)는 퍼징(Fuzzing, 퍼즈 테스팅(Fuzz testing))을 통해 알고리즘 1(Algorithm 1)의 과정에서 획득한, 메시지가 가지고 있는 전체 필드의 크기의 검증 및 보강을 수행할 수 있다.The state determining device 300 may perform verification and reinforcement of the size of the entire field of the message, obtained in the process of Algorithm 1 through fuzzing, fuzz testing.

예를 들어, 도 14를 참조하면, 상태 결정 장치(300)는 키워드 뒤에 “A”와 “a”를 추가하는 행위를 반복하는 퍼즈 데이터(Fuzz data)를 추가한 뒤, 메시지로 재조립하여 통신의 과정에서의 오류 발생을 검증할 수 있다.For example, referring to FIG. 14, the state determining device 300 adds fuzz data repeating the act of adding “A” and “a” after the keyword, and then reassembles the message and communicates. In the process of, errors can be verified.

상태 결정 장치(300)는 퍼즈 테스팅을 통해, 각각의 메시지에 대한 필드의 정확한 오프셋(offset) 크기를 획득할 수 있다. “A”와“a”를 교차로 반복하는 이유는 오류가 발생하였을 때, 몇 번째의 문자열에서 발생하였는지 쉽게 찾기 위함일 수 있다. 상태 결정 장치(300)는 퍼즈 테스팅을 수행함에 있어서, msg4와 같이 키워드가 없거나, 키워드를 탐지하지 못한 필드의 경우에는 키워드없이 퍼즈 테스팅을 진행할 수 있다.The state determining apparatus 300 may obtain an exact offset size of a field for each message through fuzz testing. The reason for repeating “A” and “a” alternately may be to easily find the number of strings when an error occurs. In performing the fuzz testing, the state determining device 300 may perform fuzz testing without a keyword in the case where there is no keyword such as msg4 or a keyword is not detected.

도 15는 상태 결정 장치가 프로토콜의 상태를 결정하기 위해 이용하는 알고리즘의 일 예를 나타낸다.15 shows an example of an algorithm used by the state determining device to determine the state of the protocol.

상태 결정 장치(300)는 알고리즘 2(Algorithm 2)를 통해 해당 프로토콜에서 통신 중 메시지의 수신이 완료 되었는지와 수신 중인지를 결정할 수 있다.The state determining device 300 may determine whether or not a message is being received during communication in a corresponding protocol through Algorithm 2 and whether it is being received.

상태 결정 장치(300)는 데이터 메시지를 대상으로 획득한 필드의 길이를 모두 합산하여 그 수치와 같은 길이의 버퍼를 생성하며, 수신과정에서 수신된 크기만큼 버퍼에 하나씩 누적하여 크기를 비교하는 방식으로 프로토콜의 상태를 결정할 수 있다.The state determination device 300 sums all the lengths of the fields obtained for the data message and generates a buffer having the same length as the number. The status of the protocol can be determined.

즉, TCP를 일 예로, SYN 메시지 -> SYN+ACK 메시지 -> ACK 메시지 -> 데이터 메시지의 순서대로 전송된다고 가정하면, 상태 결정 장치(300)는 타이밍 정보를 통해 메시지의 수신 순서를 알 수 있고, 의미 정보를 통해 수신될 메시지가 SYN 메시지인지, SYN+ACK 메시지인지, ACK 메시지인지, 데이터 메시지인지 알 수 있다. 따라서, 상태 결정 장치(300)는 타이밍 정보 및 의미 정보를 이용하여 새로 수신되는 복수의 메시지들 중에서 데이터 메시지를 선택할 수 있다.That is, assuming that TCP is transmitted as an example, in the order of SYN message -> SYN+ACK message -> ACK message -> data message, the state determining device 300 can know the reception order of the message through timing information. , It can be seen whether the message to be received is the SYN message, the SYN+ACK message, the ACK message, or the data message through the semantic information. Accordingly, the state determining device 300 may select a data message from a plurality of newly received messages using timing information and semantic information.

또한, 상태 결정 장치(300)는 구문 정보에 포함된 전체 필드의 길이와 같은 길이를 가지는 버퍼를 생성할 수 있다. 상태 결정 장치(300)는 버퍼의 길이와, 새로 수신되는 메시지의 길이가 동일한 때(즉, 버퍼의 길이만큼 새로 수신되는 메시지가 바이트 단위로 수신이 이루어지는 새로 수신되는 메시지가 버퍼의 길이만큼의 바이트를 만족할 때) 프로토콜의 상태를 수신이 완료된 것으로 결정할 수 있다.Also, the state determining device 300 may generate a buffer having a length equal to the length of all fields included in the syntax information. When the length of the buffer and the length of the newly received message are the same (ie, the newly received message is received in bytes by the length of the buffer, the newly received message is equal to the length of the buffer) It can be determined that the reception of the protocol is complete.

도 16은 다른 실시예에 따른 시스템을 메시지 및 ACK의 송수신을 중심으로 개략적으로 나타낸 도면이다.16 is a diagram schematically showing a system according to another embodiment with a focus on transmission and reception of messages and ACKs.

시스템(10)은 오류 정정이나 혼잡 제어 등을 지원하지 않는 프로토콜에서도 프로토콜 자체의 수정 없이, 프로토콜의 상태를 결정할 수 있다.The system 10 may determine the state of the protocol without modifying the protocol itself, even in protocols that do not support error correction or congestion control.

복수의 호스트들(100)은 메시지를 전송한 후, 상태 결정 장치(300)로부터 ACK 메시지를 수신할 때까지 대기할 수 있다. 이후, 상태 결정 장치(300)는 메시지 수신의 진행 상황을 확인할 수 있다.After transmitting the message, the plurality of hosts 100 may wait until an ACK message is received from the state determining device 300. Thereafter, the state determination device 300 may check the progress of the message reception.

상태 결정 장치(300)는 메시지 수신이 완료되면 ACK 메시지를 통해 수신 완료를 복수의 호스트들(100)에게 알릴 수 있다. 시스템(10)은 복수의 호스트들(100)이 송신한 메시지가 상태 결정 장치(300)에 제한시간 내에 정상적으로 도달하지 못하거나, 복수의 호스트들(100)의 자체적인 타임 아웃(Time-out)이 발생한 경우에는 메시지의 재전송을 수행할 수 있다.When the message reception is completed, the state determining device 300 may inform the plurality of hosts 100 that the reception is completed through an ACK message. The system 10 does not normally reach a message transmitted by the plurality of hosts 100 within the time limit for the state determination device 300, or time-out of the plurality of hosts 100 itself When this occurs, retransmission of the message can be performed.

상태 결정 장치(300)가 수행하는 프로토콜 상태 결정 동작은 UDP와 같이 비-신뢰성 프로토콜에도 적용 가능하며, 이를 통해 네트워크에서 발생하는 다양한 응용 처리를 추가 적용할 수 있다.The protocol state determination operation performed by the state determination device 300 may be applied to a non-reliability protocol such as UDP, through which various application processes occurring in the network may be additionally applied.

도 17 내지 도 24는 상태 결정 장치의 성능 평가 결과를 설명하기 위한 도면이다.17 to 24 are diagrams for explaining the performance evaluation results of the state determination device.

도 17을 참조하면, 상태 결정 장치(300)의 성능평가는 다양한 결과를 고찰하기 위해, TCP 기반의 FTP 프로토콜과 UDP 프로토콜, 그리고 Google에서 개발한 QUIC프로토콜이 실험 대상일 수 있다. 실험에 활용된 네트워크 트레이스는 3가지 프로토콜을 통한 통신이 동시에 수행되어 혼재된 상황일 수 있다.Referring to FIG. 17, in order to consider various results, the performance evaluation of the state determining device 300 may be a test object of the TCP-based FTP protocol, the UDP protocol, and the QUIC protocol developed by Google. The network trace used in the experiment may be a situation in which communication through three protocols is simultaneously performed and mixed.

FTP는 다양한 명령어의 사용하면서 여러 개의 파일을 보내는 통신을 수행하였고, UDP는 단순한 문자열(“textdata goes here”)을 불규칙하게 5,000건을 발송하는 통신을 수행하였을 수 있다. 그리고 QUIC은 YouTube를 통해비디오 스트리밍을 지속 수행하는 통신이 수행되었을 수 있다.FTP used to communicate by sending multiple files while using various commands, and UDP may have performed by sending 5,000 random strings (“textdata goes here”) irregularly. And QUIC may have been performing communication that continuously performs video streaming through YouTube.

도 18 및 도 19는 FTP 프로토콜을 대상으로 수행한 성능 평가 결과 화면의 일 예를 나타낸다. 도 18은 FTP 프로토콜의 Traffic Trace를 대상으로 Wireshark 프로그램을 통해 표시한 화면이고, 도 19는 상태 결정 장치(300)의 동작 결과를 나타낼 수 있다.18 and 19 show an example of a performance evaluation result screen performed for the FTP protocol. FIG. 18 is a screen displayed through a Wireshark program for Traffic Trace of the FTP protocol, and FIG. 19 can show the operation result of the state determining device 300.

Wireshark는, Open-Source 프로그램으로 다양한 프로토콜을 통한 통신기록을 확인하거나 교육에 활용되는 대표적인 패킷 분석 프로그램일 수 있다. 이러한 분석은 프로토콜의 Specification을 알고 있는 가정에서 구조 분석을 수행하므로, 정확한 결과가 보장될 수 있다. 하지만 상태 결정 장치(300)는 Specification을 모르는 상태에서 역공학을 통해 이러한 분석이 수행될 수 있다. 따라서, 상태 결정 장치(300)의 성능 평가는 공개된 프로토콜을 대상으로 Wireshark와의 결과를 비교하여 그 결과를 고찰해볼 수 있다.Wireshark, an open-source program, may be a representative packet analysis program used for checking communication records through various protocols or for education. Since this analysis performs structural analysis in the assumption that the specification of the protocol is known, accurate results can be ensured. However, the state determination device 300 may perform this analysis through reverse engineering without knowing the specification. Therefore, the performance evaluation of the state determination device 300 can compare the results with Wireshark for the published protocol and consider the results.

도 20은 FTP를 대상으로 성능 평가를 수행한 결과 중 일부를 나타낼 수 있다. 도 20의 결과를 통해, 상태 결정 장치(300)는 역공학을 통해 정확히 메시지 내 키워드를 식별하였으며, 메시지의 필드의 크기를 구한 것을 알 수 있다.20 may represent some of the results of performance evaluation on FTP. Through the results of FIG. 20, it can be seen that the state determining device 300 accurately identifies keywords in the message through reverse engineering and obtains the size of the message field.

도 21은 UDP 프로토콜을 대상으로 수행한 성능 평가 결과의 일 예를 나타낸다. 도 21에 표현된 오토마타는 UDP가 하나의 상태(state)만을 가진다는 점을 의미할 수 있다. 이러한 결과는 상태 결정 장치(300)가 역공학을 통해 획득한 Timing과 Semantics 정보를 기반으로 할 수 있다. 또한, 도 21에서, 상태 결정 장치(300)가 정확히 필드의 구조에서 데이터 문자열(“text data goes here”)만 추출한 것을 확인할 수 있다.21 shows an example of a performance evaluation result performed on the UDP protocol. The automata illustrated in FIG. 21 may mean that UDP has only one state. Such a result may be based on the timing and semantics information acquired by the state determination device 300 through reverse engineering. In addition, in FIG. 21, it can be confirmed that the state determination device 300 extracts only the data string (“text data goes here”) from the structure of the field accurately.

도 22는 UDP를 대상으로 성능 평가를 수행한 결과 중 일부를 나타낼 수 있다. 도 22를 통해 상태 결정 장치(300)가 정확히 메시지 내 데이터와 크기를 구한 것을 알 수 있다.22 may show some of the results of performance evaluation on UDP. It can be seen from FIG. 22 that the state determining device 300 accurately obtains data and size in the message.

도 23은 QUIC 프로토콜을 대상으로 수행한 성능 평가 결과의 일 예를 나타낸다. 도 23에 표현된 오토마타는 QUIC이 1회의 세션을 맺는 과정(Zero-RTT)이 있고, 이후부터는 UDP와 같이 데이터를 일방적으로 전송함을 의미할 수 있다. 이러한 결과는 마찬가지로 상태 결정 장치(300)가 역공학을 통해 획득한 타이밍 정보와 의미 정보를 기반으로 획득하는 것일 수 있다.23 shows an example of a performance evaluation result performed on the QUIC protocol. The automata shown in FIG. 23 may mean that there is a process (Zero-RTT) in which the QUIC establishes a session once, and thereafter, data is unilaterally transmitted like UDP. Such a result may similarly be obtained based on timing information and semantic information acquired by the state determination device 300 through reverse engineering.

도 24는 QUIC을 통해 수행된 비디오 스트리밍이 정확히 필드의 구조에서 데이터만 구분된 것을 나타내는 도면일 수 있다. 상태 결정 장치(300)는 구문 정보를 통해 정확히 암호화 통신이 수행되고 있는 데이터 부분만 추출할 수 있다. QUIC은 패킷이 전송 중 변조나 훼손되었을 경우 정정 비트를 통해 훼손된 비트를 복구하는 FEC를 제공하여 이를 탐지함에서는 한계점을 보였었지만, 현재는 해당기능이 표준에서 제외됨을 확인하였다.FIG. 24 may be a diagram illustrating that video streaming performed through QUIC is exactly data separated in a field structure. The state determining device 300 may extract only a portion of data that is being encrypted and communicated accurately through syntax information. QUIC provided a FEC that recovers a corrupted bit through a correction bit when a packet is tampered with or corrupted during transmission, showing limitations in detecting it, but it has been confirmed that the function is excluded from the standard.

도 17 내지 도 24에서 살펴본 바와 같이, 상태 결정 장치(300)는 UDP, QUIC과 같은 전송 계층의 프로토콜을 통한 성능 평가를 수행한 결과, 메시지가 가지는 구문 정보, 의미 정보 및 타이밍 정보 등을 상당히 높은 정확도로 추출할 수 있는 것을 알 수 있다.17 to 24, as a result of performing performance evaluation through a transport layer protocol such as UDP and QUIC, the state determining device 300 considerably increases syntax information, semantic information, and timing information of the message. It can be seen that it can be extracted with accuracy.

상태 결정 장치(300)는 구조나 논리가 공개되지 않은 프로토콜을 포함하여, 전송 계층의 모든 프로토콜을 네트워크 트레이스를 기반으로 역공학을 수행하여 프로토콜에 대한 정보와 상태를 추론할 수 있다.The state determining device 300 may infer information and state about the protocol by performing reverse engineering of all protocols of the transport layer based on a network trace, including protocols whose structure or logic is not disclosed.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, or the like alone or in combination. The program instructions recorded on the medium may be specially designed and constructed for the embodiments or may be known and usable by those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and magnetic media such as floptical disks. -Hardware devices specifically configured to store and execute program instructions such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language code that can be executed by a computer using an interpreter, etc., as well as machine language codes produced by a compiler. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instruction, or a combination of one or more of these, and configure the processing device to operate as desired, or process independently or collectively You can command the device. Software and/or data may be interpreted by a processing device or to provide instructions or data to a processing device, of any type of machine, component, physical device, virtual equipment, computer storage medium or device. , Or may be permanently or temporarily embodied in the transmitted signal wave. The software may be distributed on networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described by the limited drawings, those skilled in the art can apply various technical modifications and variations based on the above. For example, the described techniques are performed in a different order than the described method, and/or the components of the described system, structure, device, circuit, etc. are combined or combined in a different form from the described method, or other components Alternatively, even if replaced or substituted by equivalents, appropriate results can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (18)

복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하는 단계;
상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하는 단계; 및
상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
Receiving the first plurality of messages and the second plurality of messages transmitted through at least one protocol from a plurality of hosts;
Obtaining syntax information, semantics information, and timing information for the at least one protocol based on the plurality of first messages; And
Determining the status of the at least one protocol by using the syntax information, the semantic information and the timing information, and the length of the message received to date of the second plurality of messages.
Protocol status determination method comprising a.
제1항에 있어서,
상기 획득하는 단계는,
상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하는 단계; 및
군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 1,
The obtaining step,
Clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages; And
Obtaining the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages by using the clustered first plurality of messages.
Protocol status determination method comprising a.
제2항에 있어서,
상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계는,
상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하는 단계;
상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하는 단계; 및
상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 2,
The obtaining of the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages may include:
Generating the syntax information using an entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages;
Generating the timing information using the clustered first plurality of messages and the static field; And
Generating the semantic information based on the syntax information and the timing information
Protocol status determination method comprising a.
제3항에 있어서,
상기 구문 정보를 생성하는 단계는,
상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하는 단계;
상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하는 단계;
상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하는 단계; 및
상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 3,
Generating the syntax information,
Extracting the static field from the clustered first plurality of messages;
Extracting a keyword repeated in a certain length from the static field;
Calculating a length of data for the clustered first plurality of messages using the length of the keyword and the length of the entire field; And
Generating the syntax information using the length of the data, the length of the entire field, and the length of the keyword
Protocol status determination method comprising a.
제4항에 있어서,
상기 타이밍 정보를 생성하는 단계는,
상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
Generating the timing information,
Generating the timing information based on an order of keywords of each of the clustered first plurality of messages corresponding to an order of receiving the clustered first plurality of messages.
Protocol status determination method comprising a.
제4항에 있어서,
상기 의미 정보를 생성하는 단계는,
상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하는 단계; 및
상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
The step of generating the semantic information,
Selecting at least one first data message from the first plurality of messages using the syntax information; And
Generating the semantic information using the first data message and the timing information
Protocol status determination method comprising a.
제4항에 있어서,
상기 결정하는 단계는,
상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하는 단계;
상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하는 단계; 및
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
The determining step,
Selecting at least one second data message from the second plurality of messages using the timing information and the semantic information;
Creating a buffer having a length equal to the length of the entire field; And
Determining a state of a protocol corresponding to the at least one second data message according to whether the length of the buffer is equal to the length of a message received to date of the at least one second data message;
Protocol status determination method comprising a.
제7항에 있어서,
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계는,
상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하는 단계; 및
상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
The method of claim 7,
Determining the state of the at least one protocol according to whether the length of the buffer and the length of the received message to the present of the at least one second data message are the same are:
Determining that the state of the protocol corresponding to the at least one second data message is completed when the length of the buffer is equal to the length of the message received to date of the at least one second data message; And
Determining that a state of a protocol corresponding to the at least one second data message is being received when the length of the buffer is not the same as the length of a message received to date of the at least one data message.
Protocol status determination method comprising a.
제4항에 있어서,
상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는 단계
를 더 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
Performing fuzz testing on the keyword to determine an error in the transmission process for the plurality of first messages
Protocol status determination method further comprising a.
프로토콜의 상태 결정을 위한 인스트럭션들을 저장하는 메모리; 및
상기 인스트럭션들을 실행하기 위한 프로세서
를 포함하고,
상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는,
복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하고,
상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하고,
상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는
프로토콜 상태 결정 장치.
A memory for storing instructions for state determination of a protocol; And
Processor for executing the instructions
Including,
When the instructions are executed by the processor, the processor,
Receiving a first plurality of messages and a second plurality of messages transmitted through at least one protocol from a plurality of hosts,
Syntax information, semantics information, and timing information for the at least one protocol are obtained based on the plurality of first messages,
The state of the at least one protocol is determined by using the syntax information, the semantic information, and the timing information, and the length of the message received to date of the second plurality of messages.
Protocol status determination device.
제10항에 있어서,
상기 프로세서는,
상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하고,
군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는
프로토콜 상태 결정 장치.
The method of claim 10,
The processor,
Clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages,
Acquiring the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages by using the clustered first plurality of messages
Protocol status determination device.
제11항에 있어서,
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하고,
상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하고,
상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 11,
The processor,
The syntax information is generated using an entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages,
The timing information is generated using the clustered first plurality of messages and the static field,
Generating the semantic information based on the syntax information and the timing information
Protocol status determination device.
제12항에 있어서,
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하고,
상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하고,
상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하고,
상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 12,
The processor,
Extracting the static field from the clustered first plurality of messages,
Extract a keyword repeated in a certain length from the static field,
The length of the data for the clustered first plurality of messages is calculated using the length of the keyword and the length of the entire field,
Generating the syntax information using the length of the data, the length of the entire field and the length of the keyword
Protocol status determination device.
제13항에 있어서,
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
Generating the timing information based on the order of each keyword of the clustered first plurality of messages corresponding to the order of receiving the clustered first plurality of messages
Protocol status determination device.
제13항에 있어서,
상기 프로세서는,
상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하고,
상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
Selecting at least one first data message from the first plurality of messages using the syntax information,
Generating the semantic information using the first data message and the timing information
Protocol status determination device.
제13항에 있어서,
상기 프로세서는,
상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하고,
상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하고,
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
At least one second data message is selected from the second plurality of messages by using the timing information and the semantic information,
Create a buffer having a length equal to the length of the entire field,
Determining the state of the protocol corresponding to the at least one second data message according to whether the length of the buffer and the length of the received message of the at least one second data message are the same.
Protocol status determination device.
제16항에 있어서,
상기 프로세서는,
상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하고,
상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는
프로토콜 상태 결정 장치.
The method of claim 16,
The processor,
When the length of the buffer and the length of the received message to the present of the at least one second data message are the same, it is determined that reception of the protocol status corresponding to the at least one second data message is completed,
Determining that a state of a protocol corresponding to the at least one second data message is being received when the length of the buffer is not the same as the length of a message received to date of the at least one data message
Protocol status determination device.
제13항에 있어서,
상기 프로세서는,
상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
Fuzz testing is performed on the keyword to determine an error in the transmission process of the plurality of first messages
Protocol status determination device.
KR1020200008698A 2019-01-28 2020-01-22 Method and system for network protocol state inference through reverse engineering KR20200093455A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190010466 2019-01-28
KR20190010466 2019-01-28

Publications (1)

Publication Number Publication Date
KR20200093455A true KR20200093455A (en) 2020-08-05

Family

ID=72041725

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200008698A KR20200093455A (en) 2019-01-28 2020-01-22 Method and system for network protocol state inference through reverse engineering

Country Status (1)

Country Link
KR (1) KR20200093455A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115334179A (en) * 2022-07-19 2022-11-11 四川大学 Unknown protocol reverse analysis method based on named entity recognition

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115334179A (en) * 2022-07-19 2022-11-11 四川大学 Unknown protocol reverse analysis method based on named entity recognition
CN115334179B (en) * 2022-07-19 2023-09-01 四川大学 Unknown protocol reverse analysis method based on named entity recognition

Similar Documents

Publication Publication Date Title
WO2019120187A1 (en) Non-intrusive mechanism to measure network function packet processing delay
US10892974B2 (en) Automatic protocol test method by reverse engineering from packet traces to extended finite state machine
US9294944B2 (en) Method and apparatus to monitor and analyze end to end flow control in an Ethernet/enhanced Ethernet environment
Sija et al. A survey of automatic protocol reverse engineering approaches, methods, and tools on the inputs and outputs view
CN110719212A (en) Method, system, and computer readable medium for testing network nodes using source code
US20110054878A1 (en) Automated performance prediction for cloud services
Zhuang et al. {NetCheck}: Network Diagnoses from Blackbox Traces
CN110213124A (en) Passive operation system identification method and device based on the more sessions of TCP
US9218266B2 (en) Systems and methods for replication of test results in a network environment
WO2011134739A1 (en) Method for searching for message sequences, protocol analysis engine and protocol analyzer
GB2588837A (en) Methods, systems, and computer readable media for configuring a test system using source code of a device being tested
KR20150007411A (en) method and apparatus for transmitting and receiving data and medium thereof
JP2021502788A (en) Detection of sources of computer network failures
KR20200093455A (en) Method and system for network protocol state inference through reverse engineering
TWI538441B (en) Process system for constructing network structure deployment diagram and the method thereof and computer program product storing network structure deployment analysis program are provided to analyze the network structure deployment of target network
Xiao et al. Automatic protocol reverse engineering using grammatical inference
CN112436969A (en) Internet of things equipment management method, system, equipment and medium
CN113760753B (en) QUIC protocol testing method based on gray box blurring technology
Sija et al. Survey on network protocol reverse engineering approaches, methods and tools
Shu et al. A formal methodology for network protocol fingerprinting
US10623338B2 (en) Information processing device, information processing method and non-transitory computer-readable storage medium
CN110493081B (en) Method, device, equipment and storage medium for determining network traffic of game client
Rosay et al. Study of Network IDS in IoT devices
JP6647725B2 (en) Traffic generation device and traffic generation method
US10374898B2 (en) Network revision evaluator

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application