WO2021045312A1 - 해시 코드 기반의 검색 장치 및 검색 방법 - Google Patents
해시 코드 기반의 검색 장치 및 검색 방법 Download PDFInfo
- Publication number
- WO2021045312A1 WO2021045312A1 PCT/KR2019/015259 KR2019015259W WO2021045312A1 WO 2021045312 A1 WO2021045312 A1 WO 2021045312A1 KR 2019015259 W KR2019015259 W KR 2019015259W WO 2021045312 A1 WO2021045312 A1 WO 2021045312A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- hash
- document
- token
- search
- hash code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/313—Selection or weighting of terms for indexing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/02—Indexing scheme relating to groups G06F7/02 - G06F7/026
- G06F2207/025—String search, i.e. pattern matching, e.g. find identical word or best match in a string
Definitions
- the present invention relates to a hash code-based search technology, and more particularly, to a hash code-based search apparatus and a search method capable of reducing an index storage space for a document and improving a search speed of a document.
- malware refers to a program that penetrates or installs a computer without the permission of a computer user, and performs malicious behavior.
- new malicious codes and variant malicious codes are generated on average of 390,000 per day based on statistics of'AV-TEST' (Anti-Virus testing agency). I can see it.
- the current malware detection technology consists of signature-based pattern detection, and the pattern of malicious code is manually analyzed by an analyst, and malicious code patterns are extracted and registered in the malicious code database for comparison. I'm doing it.
- An embodiment of the present invention is to provide a search apparatus and method based on a hash function capable of reducing an index storage space for a document and improving a document search speed.
- An embodiment of the present invention is to provide a search apparatus and method based on a hash function capable of searching for documents based on a user's search word and ordering and presenting similarities between documents.
- An object of the present invention is to provide a hash function-based search apparatus and method capable of determining.
- a token set extraction unit for extracting a token set including at least one token from a document, and N hash codes by applying each of N (where N is a natural number) hash functions to the at least one token.
- a hash code generation unit to generate and an index generation unit to index the document with the N number of hash codes to generate a search index.
- the token set extractor may generate the at least one token by performing an N-gram-based shingling operation on the document.
- the token set extractor may generate the at least one token by performing an N-gram-based shingling operation on the document and maintain the duplicated token with a number after it.
- the token set extractor may generate the at least one token by performing an N-gram-based shingling operation on the document and remove duplicate tokens.
- the hash code generator may determine the N number of hash functions and generate one hash code by applying one of the N number of hash functions to the at least one token.
- the hash code generator may select the N number of hash functions from a hash function population based on the type of the document.
- the hash code generator may configure each of the N hash functions as a minimum hash function, and each receives the at least one token and determines a minimum value having the smallest value as the hash code.
- the index generator may reduce the index storage capacity of the document by configuring the N number of hash codes into an index set having a fixed size.
- the token set extraction unit, the hash code generation unit, and the index generation unit may further include a document search unit for receiving a search word and searching for the document based on the similarity between the search word and the search index. have.
- the hash code-based search device may receive the document as a malicious code and generate the search index as a malicious code index.
- extracting a set of tokens including at least one token from a document generating N hash codes by applying each of N hash functions (where N is a natural number) to the at least one token And generating a search index by indexing the document with the N number of hash codes.
- the disclosed technology can have the following effects. However, since it does not mean that a specific embodiment should include all of the following effects or only the following effects, it should not be understood that the scope of the rights of the disclosed technology is limited thereby.
- the hash function-based search apparatus and search method according to an embodiment of the present invention can reduce index storage space and improve the search speed of documents through application of shingling and minimum hash functions to documents. have.
- a hash function-based search apparatus and a search method according to an embodiment of the present invention may present similarity between documents in the same order as the Jaccard similarity through the application of a minimum hash function (Minhash). .
- the hash function-based search apparatus and search method when a document is received, shingling is performed on the document, and a minimum hash function (MinHash) is applied to convert it into a hash code, and the existing malicious code An attempt is made to provide a hash function-based search apparatus and method capable of determining whether a document is malicious by determining whether it is similar to or not.
- MinHash minimum hash function
- FIG. 1 is a diagram illustrating a search system based on a hash code according to an embodiment of the present invention.
- FIG. 2 is a block diagram illustrating a physical configuration of the hash code-based search apparatus shown in FIG. 1.
- FIG. 3 is a block diagram illustrating a functional configuration of the hash code-based search device of FIG. 1.
- FIG. 4 is a flowchart illustrating a search process performed by the hash code-based search device of FIG. 1.
- MinHash a minimum hash function
- first and second are used to distinguish one component from other components, and the scope of rights is not limited by these terms.
- a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component.
- the identification code (e.g., a, b, c, etc.) is used for convenience of explanation, and the identification code does not describe the order of each step, and each step has a specific sequence clearly in the context. Unless otherwise stated, it may occur differently from the stated order. That is, each of the steps may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.
- the present invention can be implemented as computer-readable codes on a computer-readable recording medium, and the computer-readable recording medium includes all types of recording devices in which data that can be read by a computer system are stored.
- Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tapes, floppy disks, and optical data storage devices.
- the computer-readable recording medium is distributed over a computer system connected through a network, so that computer-readable codes can be stored and executed in a distributed manner.
- FIG. 1 is a diagram illustrating a search system 100 based on a hash code according to an embodiment of the present invention.
- a hash code based search system 100 may include a user terminal 110, a hash code based search device 130, and a hash function population database 150.
- the user terminal 110 may correspond to a computing device that can be connected to the hash code-based search device 130 through a network and input a search word, for example, but is not limited thereto, a smartphone or a laptop computer. , It may be implemented as a tablet PC or a computer.
- the user terminal 110 may be connected to the hash code-based search device 130 through a wireless network such as Bluetooth or WiFi, or may be connected through a wired network.
- the user terminal 110 may provide a malicious code as a document or a type of document to the hash code-based search device 130.
- the hash code-based search device 130 may be implemented as a computing server, receives a search word from the user terminal 110 and determines the degree of similarity to an existing document, and a search result generated based on the most similar document or the most similar document May be provided to the user terminal 110.
- the most similar documents may correspond to the singular or plural, and in the case of plural, Y (Y is a natural number) may be provided in the most similar order.
- the hash code-based search device 130 may include a processor 210, a memory 230, a user input/output unit 250, and a network input/output unit 270, which will be described in more detail with reference to FIG. 2.
- the hash function population database 150 is operated by an independent device to logically constitute a single database, and stores data of at least N or more hash functions.
- the hash function population database 150 may transmit a hash function to the hash code-based search device 130 at the request of the hash code-based search device 130.
- the hash function population database 150 may determine a hash function by receiving the type of document.
- the hash function population database 150 may randomly determine a hash function when there is no separate request.
- FIG. 2 is a block diagram illustrating a physical configuration of the hash code-based search apparatus 130 in FIG. 1.
- a hash code based search device 130 includes a processor 210, a memory 230, a user input/output unit 250, and a network input/output unit 270.
- the processor 210 can execute each procedure that processes operations in the process of generating and providing a hash function according to the user's request, and can manage the memory 230 that is read or written throughout the process, A synchronization time between the volatile memory and the nonvolatile memory in the memory 230 may be scheduled.
- the processor 210 can control the overall operation of the hash code-based search device 130, and is electrically connected to the memory 230, the user input/output unit 250, and the network input/output unit 270 to flow data between them. Can be controlled.
- the processor 210 may be implemented as a CPU (Central Processing Unit) of the hash code-based search device 130.
- the memory 230 is implemented as a nonvolatile memory such as a solid state disk (SSD) or a hard disk drive (HDD), and includes an auxiliary storage device used to store all data required for the hash code-based search device 130.
- a main memory device implemented as a volatile memory such as random access memory (RAM) may be included.
- the user input/output unit 250 may include an environment for receiving a user input and an environment for outputting specific information to a user.
- the user input/output unit 250 may include an input device including an adapter such as a touch pad, a touch screen, an on-screen keyboard, or a pointing device, and an output device including an adapter such as a monitor or a touch screen.
- the user input/output unit 250 may correspond to a computing device accessed through a remote connection, and in that case, the hash code-based search device 130 may be performed as a server.
- the network input/output unit 270 includes an environment for connecting to an external device or system through a network, for example, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), and a VAN ( Value Added Network) may include an adapter for communication.
- a local area network LAN
- MAN metropolitan area network
- WAN wide area network
- VAN Value Added Network
- FIG. 3 is a block diagram illustrating a functional configuration of the hash code-based search apparatus 130 in FIG. 1.
- the hash code-based search device 130 includes a token set extraction unit 310, a hash code generation unit 330, an index generation unit 350, a search unit 370, and a control unit 390. Includes.
- the token set extraction unit 310 may extract a document as a token set, and the token set includes at least one token.
- the document may correspond to a text file or a binary file.
- a token is a classification element of the smallest unit in a given document.
- the token may correspond to a document segment separated by a separator predefined by the user.
- the separator can correspond to user-defined characters or special characters such as spaces, commas, colons, and semicolons.
- the token set extractor 310 may generate at least one token by performing an N-gram-based shingling operation.
- N-grams are long-length documents that can be used to break up documents into tokens, and can control the size of the tokens in the document. More specifically, N-gram may be classified into 1-gram, Bi-gram, and Tri-gram methods based on the size of the token. For example, when the document contains (rose is a rose), the token set extraction unit 310 is a token set of ⁇ (rose),(is),(a),(rose) ⁇ through 1-gram. Can be obtained, and a token set of ⁇ (roese,is),(is,a),(a,rose) ⁇ can be obtained through Bi-gram.
- the token set extractor 310 generates at least one token by performing an N-gram-based shingling operation, and when the tokens are duplicated, the number of duplicates may be included after the duplicated tokens. For example, if the document contains (a rose is a rose is a rose) and a shingle of size 4 is applied, the token set extraction unit 310 may use ⁇ (a,rose,is,a, 1), (rose,is,a,rose,1), (is,a,rose,is,1), (a,rose,is,a,2), (rose,is,a,rose,2) ⁇ You can get a set of tokens.
- the token set extraction unit 310 may generate at least one token and remove duplicate tokens by performing an N-gram-based shingling operation. For example, if the document contains (a rose is a rose is a rose) and a shingle of size 4 is applied, the token set extraction unit 310 is ((a,rose,is,a) You can get a set of tokens of, (rose,is,a,rose), (is,a,rose,is) ⁇ .
- the hash code generator 330 may generate N hash codes by applying each of N (N is a natural number) hash functions to at least one token.
- N is a natural number
- the hash code generator 330 may determine a hash code by applying a hash function to the token set, and by repeating this application and determination process N times, N hash codes with N hash functions. Can be created.
- the hash code generation unit 330 may generate a hash code of a fixed length by applying a hash function to a token set composed of tokens having a variable number. For example, the hash code may be calculated based on a hash value. have.
- the hash code generator 330 may employ a minimum hash function as a hash function, and relatively less system resources such as CPU and memory are consumed through the minimum hash function, thereby increasing a search speed.
- the minimum hash function will be described later with reference to FIG. 5.
- the hash code generator 330 may determine N hash functions. In one embodiment, the hash code generation unit 330 may determine a hash function based on a fixed size of the hash code. For example, the hash code generation unit 330 has a hash function of 32 bits, 64 bits, 128 bits, and 160 bits. , 192bit, 224bit, 256bit, 512bit, 1024bit or 2056bit can be determined to have an output value. In another embodiment, the hash code generator 330 may select N hash functions from a hash function population based on the type of document. For example, when the document corresponds to a text file, the hash code generator 330 may select a hash function that outputs a hash code having a relatively large fixed size. For another example, when the document corresponds to a binary file, the hash code generator 330 may select a hash function that outputs a hash code having a relatively small fixed size.
- the hash code generation unit 330 may configure each of the N hash functions as a minimum hash function (Minhash), and each receive at least one token and determine the minimum value having the smallest value as the hash code. have.
- the hash code generator 330 generates a matrix composed of shingles to configure a minimum hash function, and each row of the matrix may be regarded as one document.
- the hash code generation unit 330 generates a number of shuffle lists by shuffling the column indexes of the matrix, and checks the shuffled list for each column in order from 1 to n, and when 1 comes out. Fill in the signature matrix with the shuffle list number.
- the hash code generation unit 330 configures M (M is a natural number less than N) of N hash functions as a minimum hash function (Minhash), and (NM) is a maximum hash function (MaxHash). Each can receive at least one token and determine a minimum value or a maximum value as a hash code.
- the index generator 350 may reduce the index storage capacity of a document by configuring the N number of hash codes into an index set having a fixed size.
- Elastic search has a disadvantage of increasing the storage capacity because it indexes documents by shingling them immediately.
- the index generator 350 may save storage capacity by indexing a hash code of a fixed size.
- the hash code-based search device 130 shingles a search word and applies the minimum hash function to the hash code and the above documents. Since the similarity between the indexing files for Korea can be detected, the previously stored document and the indexing file can be deleted to save storage space.
- the search unit 370 may receive a search word and search for a document based on a similarity between the search word and a search index.
- the search unit 370 is an index of a document generated by the token set extraction unit 310, the hash code generation unit 330, and the index generation unit 350 in the case of a general document. Compare the value with the hash code value of the search word.
- the search unit 370 is an index value of a malicious code document generated by the token set extraction unit 310, the hash code generation unit 330, and the index generation unit 350.
- the hash code value of the input document is compared.
- the search unit 370 may use Jaccard similarity in the process of checking the similarity.
- the jacquard index between the two shingled sets A and B is calculated as shown in [Equation 1] below.
- the search unit 370 may calculate a similarity with a maximum value of 1 using the jacquard similarity with respect to the similarity between the search word and the indexed document.
- the Jacquard index has a value of 1 when the two token sets are the same, and has a value of 0 if there is no common element in the two token sets.
- the search unit 370 may compare the shingling set of the search word with the shingling set of the document to detect the similarity of the jacquard to determine the similarity between the document and the search word. .
- the search unit 370 detects the jacquard similarity by using a fixed number of hash values indexed of the document and a fixed number of hash values of the search word. You can determine the degree of similarity between the and search word. For example, the set derived by applying shingling to document 1 is X, and the set derived by applying shingling to document 2 is called Y, and the minimum size is k for each set X and Y. If the set to which the hash function is applied is X ⁇ , Y ⁇ , it can be expressed as [Equation 2] as follows.
- the jacquard similarity between the fixed number of indexed hash values of the document and the fixed number of hash values of the search word is similar to the jacquard similarity between the shingling set of the document and the shingling set of the search word. This will be described in detail in FIG. 5.
- FIG. 4 is a flowchart illustrating a search process performed by the hash code-based search device 130 of FIG. 1.
- the search process 400 performed by the hash code-based search device 130 includes steps S410 to S470.
- the hash code-based search device 130 may extract a token set by performing a shingling operation on a document through the token set extracting unit 310 (step S410).
- the step of extracting the token set (S410) is a process of creating a target to which the hash function is applied.
- a token may be generated by performing an N-gram-based shingling operation on a document or a set of malicious codes.
- the hash code-based search device 130 may generate N hash codes by substituting a set of tokens into N hash functions through the hash code generation unit 330 (step S430).
- the step of generating the hash code (S430) is a step of generating N number of hash codes by applying N number of hash functions to the tokens extracted in the step of extracting a token set (S410), and is a preprocessing process for indexing.
- the hash code-based search apparatus 130 may index N hash codes through the index generator 350 (step S450).
- the step of indexing N hash codes (S450) is a process of reducing storage space by indexing hash codes of a fixed size.
- the hash code-based search device 130 may receive a search word through the search unit 370 and search based on the similarity between the search word and the document (step S470).
- the jacquard similarity may be used in the process of checking the similarity.
- MinHash a minimum hash function
- FIG. 5A illustrates a general inverse index search method
- FIG. 5B illustrates a search method using a minimum hash function
- a general inverse index search method may be used to determine the similarity of components between sets A1 510 and B1 520 and an arbitrary Q1 set 530.
- the similarity between the Q1 set 530 and the A1 set 510 or the B1 set 520 is the same as the three components between the Q1 set 530 and the A1 set 510, so the Q1 set 530 and the A1 set 510 The result is that the similarity between the liver is higher.
- a general inverse index search method has a problem that the number of similar elements and the order of the Jacquard index are not the same, and also has a problem that the search speed decreases when the size of the sets of A1 (510) and B1 (520) is large.
- the minimum hash function-based inverse index search method solves the storage capacity and speed problem of a general inverse index search method in that the size of a file is determined by the number of minimum hash functions, and a high jacquard according to the order of similarity The index value can be guaranteed.
- A2' (552) by substituting A2 (551), B2 (561) and Q2 (571) with the size of the minimum hash function 540 as 3, Values B2 ⁇ (562) and Q2 ⁇ (572) can be obtained.
- the following [Equation 3] is derived.
- processor 230 memory
- token set extraction unit 330 hash code generation unit
- index generation unit 370 search unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- General Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Power Engineering (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 해시 코드 기반의 검색 장치 및 검색 방법에 관한 것으로, 실시예들 중에서, 문서에서 적어도 하나의 토큰을 포함하는 토큰 집합을 추출하는 토큰 집합 추출부, N개(상기 N은 자연수)의 해시 함수 각각을 상기 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성하는 해시 코드 생성부 및 상기 N 개의 해시 코드로 상기 문서에 대한 인덱싱을 수행하여 검색용 인덱스를 생성하는 인덱스 생성부를 포함한다.
Description
본 발명은 해시 코드 기반의 검색 기술에 관한 것으로, 보다 상세하게는, 문서에 관한 인덱스 저장공간을 줄이고 문서의 검색 속도를 향상시킬 수 있는 해시 코드 기반의 검색 장치 및 검색 방법에 관한 것이다.
인터넷 및 컴퓨터 기술이 지속적으로 개발됨에 따라, 이는 전세계 사람들에게 일반적으로 보급되었다. 또한, 인터넷 및 컴퓨터 기술의 지속적인 개발에 따라, 이러한 기술을 악용하여 부당한 이익을 챙기려는 시도도 증가하고 있다. 예를 들면, 악성코드(Malware)를 사용자들의 컴퓨터에 설치 및 배포하여, 사용자들로부터 부당한 이익을 챙기는 방법이 증가하고 있다. 여기서, 악성코드(Malware)란, 컴퓨터 사용자의 승인 없이 컴퓨터에 침투하거나 설치되어, 악의적인 행동을 하는 프로그램을 의미한다. 이러한 새로운 악성코드와 변종 악성코드는 'AV-TEST'(Anti-Virus 시험기관) 통계 기준으로 하루에 평균 390,000개가 발생하고 있으며 특히 악성코드 자신을 숨기는 다양한 방법들이 시도되고, 자동화 변조 보급되는 패턴을 보이고도 있다.
현재의 악성코드 탐지 기술은 시그니처(Signature) 기반의 패턴탐지가 핵심을 이루고 있고, 악성코드의 패턴은 분석가에 의하여 수작업으로 분석되며, 악성코드 패턴(Pattern)을 추출하여 악성코드 데이터베이스에 등록하여 비교하고 있다.
본 발명의 일 실시예는 문서에 관한 인덱스 저장공간을 줄이고 문서의 검색 속도를 향상시킬 수 있는 해시 함수 기반의 검색 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 사용자의 검색어를 기초로 문서 들을 검색하고 문서들 간의 유사도를 순서화 하여 제시할 수 있는 해시 함수 기반의 검색 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 문서가 수신되면 문서에 대해 슁글링(shingling)을 하고 최소 해시 함수(MinHash)를 적용하여 해시 코드로 변환하고 기존의 악성코드와 유사 여부를 결정하여, 문서의 악성 여부를 결정할 수 있는 해시 함수 기반의 검색 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 문서에서 적어도 하나의 토큰을 포함하는 토큰 집합을 추출하는 토큰 집합 추출부, N개(상기 N은 자연수)의 해시 함수 각각을 상기 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성하는 해시 코드 생성부 및 상기 N 개의 해시 코드로 상기 문서에 대한 인덱싱을 수행하여 검색용 인덱스를 생성하는 인덱스 생성부를 포함한다.
상기 토큰 집합 추출부는 상기 문서에 대한 N-gram 기반의 슁글링 연산(shingling operation)을 수행하여 상기 적어도 하나의 토큰을 생성할 수 있다.
상기 토큰 집합 추출부는 상기 문서에 대한 N-gram 기반의 슁글링 연산을 수행하여 상기 적어도 하나의 토큰을 생성하고 중복되는 토큰 뒤에 숫자를 붙여 유지시킬 수 있다.
상기 토큰 집합 추출부는 상기 문서에 대한 N-gram 기반의 슁글링 연산을 수행하여 상기 적어도 하나의 토큰을 생성하고 중복되는 토큰을 제거할 수 있다.
상기 해시 코드 생성부는 상기 N 개의 해시 함수를 결정하고, 상기 N 개의 해시 함수 중 하나를 상기 적어도 하나의 토큰에 적용하여 하나의 해시 코드를 생성할 수 있다.
상기 해시 코드 생성부는 상기 문서의 유형을 기초로 해시 함수 모집단에서 상기 N 개의 해시 함수를 선택할 수 있다.
상기 해시 코드 생성부는 상기 N 개의 해시 함수 각각을 최소 해시 함수(MinHash function)로 구성하여 각각이 상기 적어도 하나의 토큰을 입력 받아 가장 작은 값을 가지는 최소 값을 상기 해시 코드로 결정할 수 있다.
상기 인덱스 생성부는 상기 N 개의 해시 코드를 고정된 크기의 인덱스 집합으로 구성하여 상기 문서의 인덱스 저장 용량을 감소시킬 수 있다.
실시예들 중에서, 상기 토큰 집합 추출부, 상기 해시 코드 생성부 및 상기 인덱스 생성부에 검색어를 입력 받고 상기 검색어와 상기 검색용 인덱스 간의 유사도를 기초로 상기 문서를 검색하는 문서 검색부를 더 포함할 수 있다.
상기 해시 코드 기반의 검색 장치는 상기 문서를 악성코드로 수신하여 상기 검색용 인덱스를 악성코드 용 인덱스로 생성할 수 있다.
실시예들 중에서, 문서에서 적어도 하나의 토큰을 포함하는 토큰 집합을 추출하는 단계, N개(상기 N은 자연수)의 해시 함수 각각을 상기 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성하는 단계 및 상기 N 개의 해시 코드로 상기 문서에 대한 인덱싱을 수행하여 검색용 인덱스를 생성하는 단계를 포함한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 해시 함수 기반의 검색장치 및 검색방법은 문서에 대한 슁글링(Shingling)과 최소 해시 함수(Minhash)의 적용을 통해 인덱스 저장공간을 줄이고 문서의 검색 속도를 향상시킬 수 있다.
본 발명의 일 실시예에 따른 해시 함수 기반의 검색장치 및 검색방법은 최소 해시 함수(Minhash)의 적용을 통해 문서들 간의 유사도를 자카드 유사도(Jaccard Similarity)의 순서와 동일하게 순서화 하여 제시할 수 있다.
본 발명의 일 실시예에 따른 해시 함수 기반의 검색장치 및 검색방법은 문서가 수신되면 문서에 대해 슁글링(shingling)을 하고 최소 해시 함수(MinHash)를 적용하여 해시 코드로 변환하고 기존의 악성코드와 유사 여부를 결정하여, 문서의 악성 여부를 결정할 수 있는 해시 함수 기반의 검색 장치 및 방법을 제공하고자 한다.
도 1은 본 발명의 일 실시예에 따른 해시 코드 기반의 검색 시스템을 설명하는 도면이다.
도 2는 도 1에 있는 해시 코드 기반의 검색 장치의 물리적 구성을 설명하는 블록도이다.
도 3은 도 1에 있는 해시 코드 기반의 검색 장치의 기능적 구성을 설명하는 블록도이다.
도 4는 도 1에 있는 해시 코드 기반의 검색 장치에서 수행되는 검색 과정을 설명하는 순서도이다.
도 5는 일반적인 역 인덱스(Inverted indexing)검색 방법과 최소 해시 함수(MinHash)를 이용한 검색 방법들을 비교한 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다 거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽힐 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명의 일 실시예에 따른 해시 코드 기반의 검색 시스템(100)을 설명하는 도면이다.
도 1을 참조하면, 해시 코드 기반의 검색 시스템(100)은 사용자 단말(110), 해시 코드 기반의 검색 장치(130) 및 해시 함수 모집단 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 해시 코드 기반의 검색 장치(130)와 네트워크를 통해 연결될 수 있고 검색어를 입력할 수 있는 컴퓨팅 장치에 해당할 수 있고, 예를 들어, 반드시 이에 한정되지 않지만, 스마트폰, 노트북, 태블릿 PC 또는 컴퓨터로 구현될 수 있다. 사용자 단말(110)은 해시 코드 기반의 검색 장치(130)과 블루투스, WiFi와 같은 무선 네트워크를 통해 연결될 수 있거나 또는 유선 네트워크를 통해 연결될 수 있다. 사용자 단말(110)은 문서 또는 문서의 일 종류로서 악성코드를 해시 코드 기반의 검색 장치(130)에 제공할 수 있다.
해시 코드 기반의 검색 장치(130)는 컴퓨팅 서버로 구현될 수 있고, 사용자 단말(110)로부터 검색어를 입력 받으며 기존의 문서와 유사도를 판단하여 가장 유사한 문서 또는 가장 유사한 문서를 기초로 생성된 검색 결과를 사용자 단말(110)에 제공할 수 있다. 일 실시예에서, 가장 유사한 문서는 단수 혹은 복수에 해당할 수 있고, 복수인 경우, 가장 유사한 순서대로 Y 개(Y는 자연수)를 제공할 수 있다.
해시 코드 기반의 검색 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함할 수 있으며, 이에 대해서는 도 2에서 보다 자세히 설명한다.
해시 함수 모집단 데이터베이스(150)는 독립적인 장치에 의해 운용 되어 논리적으로 단일 데이터베이스를 구성할 수 있고, 적어도 N개 이상의 해시 함수의 데이터를 저장한다. 해시 함수 모집단 데이터베이스(150)는 해시 코드 기반의 검색 장치(130)의 요청에 따라 해시 함수를 해시 코드 기반의 검색 장치(130)에 전송할 수 있다. 일 실시예에서, 해시 함수 모집단 데이터베이스(150)는 문서의 유형을 수신하여 해시 함수를 결정할 수 있다. 다른 일 실시예에서, 해시 함수 모집단 데이터베이스(150)는 별도의 요청이 없는 경우에는 랜덤하게 해시 함수를 결정할 수 있다.
도 2는 도 1에 있는 해시 코드 기반의 검색 장치(130)의 물리적 구성을 설명하는 블록도이다.
도 2를 참조하면, 해시 코드 기반의 검색 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함한다.
프로세서(210)는 사용자의 요청에 따라 해시 함수를 생성하여 제공하는 과정에서의 동작들을 처리하는 각 프로시저를 실행할 수 있고, 그 과정 전반에서 읽혀지거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄 할 수 있다. 프로세서(210)는 해시 코드 기반의 검색 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 해시 코드 기반의 검색 장치(130)의 CPU(Central Processing Unit)로 구현될 수 있다.
메모리(230)는 SSD(Solid State Disk) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 해시 코드 기반의 검색 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다.
사용자 입출력부(250)는 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함할 수 있다. 예를 들어, 사용자 입출력부(250)는 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)는 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, 해시 코드 기반의 검색 장치(130)는 서버로서 수행될 수 있다.
네트워크 입출력부(270)은 네트워크를 통해 외부 장치 또는 시스템과 연결하기 위한 환경을 포함하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다.
도 3은 도 1에 있는 해시 코드 기반의 검색 장치(130)의 기능적 구성을 설명하는 블록도이다.
도 3을 참조하면, 해시 코드 기반의 검색 장치(130)는 토큰 집합 추출부(310), 해시 코드 생성부(330), 인덱스 생성부(350), 검색부(370) 및 제어부(390)를 포함한다.
토큰 집합 추출부(310)는 문서를 토큰 집합으로 추출할 수 있고, 토큰 집합은 적어도 하나의 토큰(Token)을 포함한다. 여기에서, 문서는 텍스트 파일 또는 이진 파일에 해당할 수 있다. 토큰(Token)은 주어진 문서에서 가장 적은 단위의 분류 요소로서, 예를 들어, 텍스트 문서의 경우 단어에 해당할 수 있고, 이진 문서의 경우 이진 스트링에 해당할 수 있다. 일 실시예에서, 토큰은 사용자에 의해 미리 규정된 분리자(separator)에 의해 구분된 문서 절편에 해당할 수 있다. 예를 들어, 분리자는 사용자 정의 문자 또는 스페이스, 콤마, 콜론, 세미콜론과 같은 특수 문자에 해당할 수 있다.
일 실시예에서, 토큰 집합 추출부(310)는 N-gram 기반의 슁글링 연산(shingling operation)을 수행하여 적어도 하나의 토큰을 생성할 수 있다. N-gram이란 긴 길이의 문서를 나누는 것으로, 문서를 토큰으로 분해할 때 사용될 수 있고, 문서에 있는 토큰의 크기를 제어할 수 있다. 보다 구체적으로, N-gram은 토큰의 크기를 기초로 1-gram, Bi-gram 및 Tri-gram 방식으로 분류될 수 있다. 예를 들어, 토큰 집합 추출부(310)는 문서가 (rose is a rose)를 포함하는 경우, 1-gram을 통해 {(rose),(is),(a),(rose)}의 토큰집합을 획득할 수 있고, Bi-gram을 통해 {(roese,is),(is,a),(a,rose)}의 토큰집합을 획득할 수 있다.
일 실시예에서, 토큰 집합 추출부(310)는 N-gram 기반의 슁글링 연산을 수행하여 적어도 하나의 토큰을 생성하고, 토큰이 중복되는 경우에는 중복되는 토큰 뒤에 중복 회수를 포함시킬 수 있다. 예를 들어, 토큰 집합 추출부(310)는 문서가 (a rose is a rose is a rose)를 포함하고 크기 4의 슁글(shingle)이 적용되는 경우에는, {(a,rose,is,a,1), (rose,is,a,rose,1), (is,a,rose,is,1), (a,rose,is,a,2), (rose,is,a,rose,2)}의 토큰집합을 얻을 수 있다.
일 실시예에서, 토큰 집합 추출부(310)는 N-gram 기반의 슁글링 연산을 수행하여 적어도 하나의 토큰을 생성하고 중복되는 토큰을 제거할 수 있다. 예를 들어, 토큰 집합 추출부(310)는 문서가 (a rose is a rose is a rose)를 포함하고 크기 4의 슁글(shingle)이 적용되는 경우에는, {(a,rose,is,a), (rose,is,a,rose), (is,a,rose,is)}의 토큰집합을 얻을 수 있다.
해시 코드 생성부(330)는 N개(N은 자연수)의 해시 함수(Hash Function) 각각을 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성할 수 있다. 해시 코드 생성부(330)는 문서가 토큰 집합으로 분해되면 토큰 집합에 대해 해시 함수를 적용하여 해시 코드를 결정할 수 있고, 이러한 적용 및 결정 과정을 N번 반복하여 N 개의 해시 함수로 N 개의 해시 코드를 생성할 수 있다. 해시 코드 생성부(330)는 해시 함수를 가변적 개수를 가지는 토큰으로 구성된 토큰 집합에 적용하여 고정된 길이의 해시 코드를 생성할 수 있고, 예를 들어, 해시 코드는 해시값을 기초로 산출될 수 있다. 해시 코드 생성부(330)는 해시 함수로서 최소 해시 함수(MinHash Function)를 채용할 수 있고, 최소 해시 함수를 통해 상대적으로 CPU, 메모리와 같은 시스템 자원을 적게 소모하여 검색속도를 증가시킬 수 있다. 최소 해시 함수는 도 5를 참조하여 후술한다.
해시 코드 생성부(330)는 N 개의 해시 함수를 결정할 수 있다. 일 실시예에서, 해시 코드 생성부(330)는 해시 코드의 고정 크기를 기초로 해시 함수를 결정할 수 있고, 예를 들어, 해시 코드 생성부(330)는 해시 함수가 32bit, 64bit, 128bit, 160bit, 192bit, 224bit, 256bit, 512bit, 1024bit 또는 2056bit의 출력 값을 가지도록 결정할 수 있다. 다른 일 실시예에서, 해시 코드 생성부(330)는 문서의 유형을 기초로 해시 함수 모집단에서 N 개의 해시 함수를 선택할 수 있다. 예를 들어, 해시 코드 생성부(330)는 문서가 텍스트 파일에 해당하는 경우에는 상대적으로 고정 크기가 큰 해시 코드를 출력하는 해시 함수를 선택할 수 있다. 다른 예를 들어, 해시 코드 생성부(330)는 문서가 이진 파일에 해당하는 경우에는 상대적으로 고정 크기가 적은 해시 코드를 출력하는 해시 함수를 선택할 수 있다.
일 실시예에서, 해시 코드 생성부(330)는 N 개의 해시 함수 각각을 최소 해시 함수(Minhash)로 구성하여 각각이 적어도 하나의 토큰을 입력 받아 가장 작은 값을 가지는 최소 값을 해시 코드로 결정할 수 있다. 해시 코드 생성부(330)는 최소 해시 함수를 구성하기 위해 슁글 들로 구성된 행렬(Matrix)을 생성하고, 행렬의 각 행(row)은 하나의 문서로 간주될 수 있다. 다음으로, 해시 코드 생성부(330)는 행렬의 열(column) 인덱스를 셔플한 셔플 리스트(permutation)를 다수 생성하고, 각 열에 대해 셔플한 리스트를 1~n 까지 순서대로 확인하면서, 1이 나오면 시그니처 매트릭스(signature matrix)를 셔플 리스트 번호로 채운다.
다른 일 실시예에서, 해시 코드 생성부(330)는 N 개의 해시 함수 중 M (M은 N보다 작은 자연수) 개를 최소 해시 함수(Minhash)로 구성하고 (N-M) 개를 최대 해시 함수(MaxHash)로 구성하여 각각이 적어도 하나의 토큰을 입력 받아 최소 값 또는 최대 값을 해시 코드로 결정할 수 있다.
인덱스 생성부(350)는 N 개의 해시 코드를 고정된 크기의 인덱스 집합으로 구성하여 문서의 인덱스 저장 용량을 감소시킬 수 있다. 일래스틱 서치(elastic search)는 문서에 대해 슁글링(shingling)하여 곧바로 인덱싱 하기 때문에 저장 용량이 늘어나는 단점이 있다. 인덱스 생성부(350)는 고정된 크기의 해시 코드에 인덱싱 하여 저장 용량을 절약할 수 있다. 일 실시예에서, 문서에 대해 슁글링을 하고 최소 해시 함수를 적용한 후에 인덱싱을 하는 경우, 해시 코드 기반의 검색 장치(130)는 검색어에 슁글링을 하고 최소 해시 함수를 적용한 해시코드와 이상의 문서에 대한 인덱싱파일 간의 유사도를 검출하면 되므로 기 저장된 문서와 인덱싱파일을 삭제하여 저장공간을 절약할 수 있다.
검색부(370)는 검색어를 입력 받고 검색어와 검색용 인덱스 간의 유사도를 기초로 문서를 검색할 수 있다. 일 실시예에서, 검색부(370)는 일반 문서의 경우, 일반 문서의 경우, 토큰 집합 추출부(310), 해시 코드 생성부(330) 및 인덱스 생성부(350)에 의해 생성된 문서의 인덱스 값과 검색어의 해시코드 값을 비교한다.
다른 일 실시예에서, 검색부(370)는 악성코드 문서의 경우, 토큰 집합 추출부(310), 해시 코드 생성부(330) 및 인덱스 생성부(350)에 의해 생성된 악성코드 문서의 인덱스 값과 입력되는 문서의 해시코드 값을 비교한다.일 실시예에서, 검색부(370)는 유사도를 검사하는 과정에서 자카드 유사도(Jaccard similarity)를 이용할 수 있다. 2 개의 슁글링 된 집합 A 및 B 간의 자카드 지수는 다음의 [수학식 1]과 같이 산출된다.
[수학식 1]
이다.
예를 들어, 검색부(370)는 검색어와 인덱싱 된 문서 사이의 유사도에 대해서 자카드 유사도를 이용하여 최대값을 1로 하는 유사도를 산출할 수 있다. 자카드 지수는 2 개의 토큰 집합이 동일한 경우 1의 값을 가지고 2 개의 토큰 집합에 공통의 원소가 존재하지 않는다면 0의 값을 가진다.
일 실시예에서, 검색부(370)는 문서의 슁글링 집합을 삭제하지 않은 경우에는 검색어의 슁글링 집합과 문서의 슁글링 집합을 비교하여 자카드 유사도를 검출하여 문서와 검색어간 유사도를 판단할 수 있다.
일 실시예에서, 검색부(370)는 문서의 슁글링 집합을 삭제한 경우에는 문서의 인덱싱 되어 있는 고정된 개수의 해시값과 검색어의 고정된 개수의 해시값을 이용하여 자카드 유사도를 검출하여 문서와 검색어간 유사도를 판단할 수 있다. 예를 들어, 1 번 문서에 대해 슁글링을 적용하여 도출된 집합을 X, 2 번 문서에 대해 슁글링을 적용하여 도출된 집합을 Y라 하고 각각의 집합 X, Y에 대해 크기가 k인 최소 해시 함수를 적용한 집합은 X`, Y` 이라 한다면, 아래와 같이 [수학식2]로 나타낼 수 있다.
[수학식2]
문서의 인덱싱 되어 있는 고정된 개수의 해시값과 검색어의 고정된 개수의 해시값 간의 자카드 유사도는 문서의 슁글링 집합과 검색어의 슁글링 집합 간의 자카드 유사도와 비슷하다. 이에 대해서는 도 5에서 자세히 알아본다.
도 4는 도 1에 있는 해시 코드 기반의 검색 장치(130)에서 수행되는 검색 과정을 설명하는 순서도이다.
도 4에서, 해시 코드 기반의 검색 장치(130)에서 수행되는 검색 과정(400)은 단계들 S410 내지 S470을 포함한다.
해시 코드 기반의 검색 장치(130)는 토큰 집합 추출부(310)를 통해 문서에 대해 슁글링 연산을 수행하여 토큰 집합을 추출할 수 있다(단계 S410). 토큰 집합을 추출하는 단계(S410)는 해시 함수를 적용할 대상을 만드는 과정이다. 일 실시예에서, 문서 또는 악성코드 집합에 대해 N-gram기반의 슁글링 연산을 수행하여 토큰을 생성할 수 있다.
해시 코드 기반의 검색 장치(130)는 해시 코드 생성부(330)를 통해 N 개의 해시 함수에 토큰 집합을 대입하여 N 개의 해시 코드를 생성할 수 있다(단계 S430). 해시 코드를 생성하는 단계(S430)는 토큰 집합을 추출하는 단계(S410)에서 추출된 토큰에 대해 N개의 해시 함수를 적용하여 N 개의 해시 코드를 생성하는 단계로서, 인덱싱을 하기 위한 전처리 과정이다.
해시 코드 기반의 검색 장치(130)는 인덱스 생성부(350)를 통해 N 개의 해시 코드를 인덱스 할 수 있다(단계 S450). N 개의 해시 코드를 인덱스 하는 단계(S450)는 고정된 크기의 해시 코드를 인덱싱하여, 저장공간을 줄이는 과정이다.
해시 코드 기반의 검색 장치(130)는 검색부(370)를 통해 검색어를 입력 받고 검색어와 문서 간의 유사도를 기초로 검색할 수 있다(단계 S470). 검색어와 문서 간의 유사도를 기초로 검색하는 단계(S470)는 일 실시예에서, 유사도를 검사하는 과정에서 자카드 유사도를 이용할 수 있다.
도 5는 일반적인 역 인덱스(Inverted indexing) 검색 방법과 최소 해시 함수(MinHash)를 이용한 검색 방법을 비교한 도면이다.
도 5a는 일반적인 역 인덱스 검색 방법을 설명하고, 도 5b는 최소 해시 함수를 이용한 검색 방법을 설명한다.
도 5a에서, 일반적인 역 인덱스 검색 방법은 A1(510), B1(520) 집합과 임의적인 Q1집합(530)간의 구성요소의 유사도를 판단하는데 사용될 수 있다. Q1집합(530) 및 A1집합(510) 또는 B1집합(520) 간의 유사도는 Q1집합(530)과 A1집합(510) 간의 3가지 구성요소가 동일하므로 Q1집합(530)과 A1집합(510) 간의 유사도가 더 높다는 결과가 도출된다. 하지만 Q1집합(530) 및 A1집합(510) 또는 B1집합(520) 간의 자카드 지수(Jaccard Index) 값은 J(A1,Q1)=3/10이고 J(B1,Q1)=2/6으로 B1집합(520)과 Q1집합(530) 간의 자카드 지수 값이 더 높다. 일반적인 역 인덱스 검색 방법은 유사한 구성요소의 개수와 자카드 지수의 순서가 동일하지 않다는 문제 뿐만 아니라, A1(510), B1(520) 집합의 크기가 큰 경우에는 검색속도의 감소라는 문제점을 가지고 있다.
일 실시예에서, 최소 해시 함수 기반의 역 인덱스 검색 방법은 최소 해시 함수의 개수에 의해 파일의 사이즈가 결정된다는 점에서 일반적인 역 인덱스 검색 방법의 저장용량 및 속도문제를 해결하고 유사도 순서에 따라 높은 자카드 지수 값을 보장할 수 있다. 도 5b의 최소 해시 함수 기반의 역 인덱스 검색 방법을 살펴보면, 최소 해시 함수(540)의 사이즈를 3으로 하여 A2(551), B2(561) 그리고 Q2(571)를 대입하여 A2`(552), B2`(562), Q2`(572) 값을 구할 수 있다. Q2`집합(572)과 A2`집합(552) 또는 B2`집합(562)간의 유사도를 측정해 보면, 다음과 같은 [수학식 3]가 도출된다.
[수학식 3]
이러한 결과는 J(B2,Q2)>J(A2,Q2)라는 결과와 동일한 결과이다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명을 지원한 국가연구개발사업
과제고유번호:1711093221
부처명:과학기술정보통신부
연구관리전문기관:정보통신기획평가원
연구사업명:정보보호핵심원천기술개발(R&D)
연구과제명:보안 빅데이터 자동 분석을 위한 실시간 유사도 측정 원천 기술 연구
기여율:1/2
주관기관:국민대학교산학협력단
연구기간:2019.01.01~2019.12.31
본 발명을 지원한 국가연구개발사업
과제고유번호:1711082836
부처명:과학기술정보통신부
연구관리전문기관:정보통신기획평가원
연구사업명:정보보호핵심원천기술개발(R&D)
연구과제명:I/O 분포를 이용한 행위 기반의 랜섬웨어 탐지 기술
기여율:1/2
주관기관:인하대학교산학협력단
연구기간:2019.01.01~2019.12.31
[부호의 설명]
100: 해시 코드 기반의 검색 시스템
110: 사용자 단말 130: 해시 코드 기반의 검색 장치
150: 해시 함수 모집단 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 토큰 집합 추출부 330: 해시 코드 생성부
350: 인덱스 생성부 370: 검색부
390: 제어부
510: A1집합 520: B1집합
530: Q1집합
540: 최소 해시 함수(Minhash)
551: A2집합 552: A2`집합
561: B2집합 562: B2`집합
571: Q2집합 572: Q2`집합
Claims (11)
- 문서에서 적어도 하나의 토큰을 포함하는 토큰 집합을 추출하는 토큰 집합 추출부;N개(상기 N은 자연수)의 해시 함수 각각을 상기 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성하는 해시 코드 생성부; 및상기 N 개의 해시 코드로 상기 문서에 대한 인덱싱을 수행하여 검색용 인덱스를 생성하는 인덱스 생성부를 포함하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 토큰 집합 추출부는상기 문서에 대한 N-gram 기반의 슁글링 연산(shingling operation)을 수행하여 상기 적어도 하나의 토큰을 생성하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 토큰 집합 추출부는상기 문서에 대한 N-gram 기반의 슁글링 연산을 수행하여 상기 적어도 하나의 토큰을 생성하고 중복되는 토큰 뒤에 숫자를 붙여 유지시키는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 토큰 집합 추출부는상기 문서에 대한 N-gram 기반의 슁글링 연산을 수행하여 상기 적어도 하나의 토큰을 생성하고 중복되는 토큰을 제거하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 해시 코드 생성부는상기 N 개의 해시 함수를 결정하고, 상기 N 개의 해시 함수 중 하나를 상기 적어도 하나의 토큰에 적용하여 하나의 해시 코드를 생성하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제5항에 있어서, 상기 해시 코드 생성부는상기 문서의 유형을 기초로 해시 함수 모집단에서 상기 N 개의 해시 함수를 선택하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 해시 코드 생성부는상기 N 개의 해시 함수 각각을 최소 해시 함수(MinHash function)로 구성하여 각각이 상기 적어도 하나의 토큰을 입력 받아 가장 작은 값을 가지는 최소 값을 상기 해시 코드로 결정하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 인덱스 생성부는상기 N 개의 해시 코드를 고정된 크기의 인덱스 집합으로 구성하여 상기 문서의 인덱스 저장 용량을 감소시키는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서,검색어를 입력 받고 상기 검색어와 상기 검색용 인덱스 간의 유사도를 기초로 상기 문서를 검색하는 문서 검색부를 더 포함하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 제1항에 있어서, 상기 해시 코드 기반의 검색 장치는상기 문서를 악성코드로 수신하여 상기 검색용 인덱스를 악성코드 용 인덱스로 생성하는 것을 특징으로 하는 해시 코드 기반의 검색 장치.
- 문서에서 적어도 하나의 토큰을 포함하는 토큰 집합을 추출하는 단계;N개(상기 N은 자연수)의 해시 함수 각각을 상기 적어도 하나의 토큰에 적용하여 N 개의 해시 코드를 생성하는 단계; 및상기 N 개의 해시 코드로 상기 문서에 대한 인덱싱을 수행하여 검색용 인덱스를 생성하는 단계를 포함하는 해시 코드 기반의 검색 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/623,058 US11971851B2 (en) | 2019-09-03 | 2019-11-11 | Hash code-based search apparatus and search method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0109032 | 2019-09-03 | ||
KR1020190109032A KR102289408B1 (ko) | 2019-09-03 | 2019-09-03 | 해시 코드 기반의 검색 장치 및 검색 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021045312A1 true WO2021045312A1 (ko) | 2021-03-11 |
Family
ID=74853396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2019/015259 WO2021045312A1 (ko) | 2019-09-03 | 2019-11-11 | 해시 코드 기반의 검색 장치 및 검색 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11971851B2 (ko) |
KR (1) | KR102289408B1 (ko) |
WO (1) | WO2021045312A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102289408B1 (ko) * | 2019-09-03 | 2021-08-12 | 국민대학교산학협력단 | 해시 코드 기반의 검색 장치 및 검색 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090028441A1 (en) * | 2004-07-21 | 2009-01-29 | Equivio Ltd | Method for determining near duplicate data objects |
KR100964207B1 (ko) * | 2009-11-13 | 2010-06-17 | 동국대학교 산학협력단 | 해시 기반 문서의 색인화 및 검색 방법 및 장치 |
US20100169329A1 (en) * | 2000-07-31 | 2010-07-01 | Alion Science And Technology Corporation | System for similar document detection |
KR20130078594A (ko) * | 2011-12-30 | 2013-07-10 | 주식회사 아이디스 | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 |
US20170161375A1 (en) * | 2015-12-07 | 2017-06-08 | Adlib Publishing Systems Inc. | Clustering documents based on textual content |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100289065B1 (ko) | 1997-10-14 | 2001-05-02 | 정선종 | 전자상거래상품정보검색용자연언어질의어처리방법 |
JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
US8661498B2 (en) * | 2002-09-18 | 2014-02-25 | Symantec Corporation | Secure and scalable detection of preselected data embedded in electronically transmitted messages |
US20070136243A1 (en) * | 2005-12-12 | 2007-06-14 | Markus Schorn | System and method for data indexing and retrieval |
US7509477B2 (en) * | 2006-04-12 | 2009-03-24 | Microsoft Corporation | Aggregating data from difference sources |
US8151352B1 (en) * | 2006-07-14 | 2012-04-03 | Bitdefender IPR Managament Ltd. | Anti-malware emulation systems and methods |
US20080109651A1 (en) * | 2006-11-02 | 2008-05-08 | Carl Duda | System and methods for digital file management and authentication |
KR101079817B1 (ko) * | 2008-12-22 | 2011-11-03 | 한국전자통신연구원 | 시그니처 자동생성 시스템을 위한 문자열 포함성 결정장치 및 방법 |
US8131738B2 (en) | 2008-12-30 | 2012-03-06 | International Business Machines Corporation | Search engine service utilizing hash algorithms |
KR20110131627A (ko) * | 2010-05-31 | 2011-12-07 | 한국전자통신연구원 | 악성 코드 진단 및 복구 장치, 그리고 이를 위한 단말 장치 |
US9813367B2 (en) * | 2010-07-16 | 2017-11-07 | Firstwave Technology Pty Ltd | Methods and systems for analysis and/or classification of information |
US11914674B2 (en) * | 2011-09-24 | 2024-02-27 | Z Advanced Computing, Inc. | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US9773039B2 (en) * | 2012-09-14 | 2017-09-26 | Fti Consulting, Inc. | Computer-implemented system and method for identifying near duplicate documents |
KR101369254B1 (ko) * | 2013-04-19 | 2014-03-06 | 주식회사 안랩 | 악성 애플리케이션 진단장치 및 방법 |
US10579661B2 (en) * | 2013-05-20 | 2020-03-03 | Southern Methodist University | System and method for machine learning and classifying data |
US9330104B2 (en) * | 2014-04-30 | 2016-05-03 | International Business Machines Corporation | Indexing and searching heterogenous data entities |
US11159545B2 (en) * | 2015-04-10 | 2021-10-26 | Cofense Inc | Message platform for automated threat simulation, reporting, detection, and remediation |
US10885098B2 (en) * | 2015-09-15 | 2021-01-05 | Canon Kabushiki Kaisha | Method, system and apparatus for generating hash codes |
WO2017049045A1 (en) * | 2015-09-16 | 2017-03-23 | RiskIQ, Inc. | Using hash signatures of dom objects to identify website similarity |
US9578048B1 (en) * | 2015-09-16 | 2017-02-21 | RiskIQ Inc. | Identifying phishing websites using DOM characteristics |
WO2017053779A1 (en) * | 2015-09-24 | 2017-03-30 | Trustees Of Boston University | Data storage and retrieval system using online supervised hashing |
US10776487B2 (en) * | 2018-07-12 | 2020-09-15 | Saudi Arabian Oil Company | Systems and methods for detecting obfuscated malware in obfuscated just-in-time (JIT) compiled code |
KR102289408B1 (ko) * | 2019-09-03 | 2021-08-12 | 국민대학교산학협력단 | 해시 코드 기반의 검색 장치 및 검색 방법 |
US11398911B1 (en) * | 2020-07-12 | 2022-07-26 | Run Interactive, Inc. | System for interacting objects as tokens on a blockchain using a class-based language |
-
2019
- 2019-09-03 KR KR1020190109032A patent/KR102289408B1/ko active IP Right Grant
- 2019-11-11 US US17/623,058 patent/US11971851B2/en active Active
- 2019-11-11 WO PCT/KR2019/015259 patent/WO2021045312A1/ko active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169329A1 (en) * | 2000-07-31 | 2010-07-01 | Alion Science And Technology Corporation | System for similar document detection |
US20090028441A1 (en) * | 2004-07-21 | 2009-01-29 | Equivio Ltd | Method for determining near duplicate data objects |
KR100964207B1 (ko) * | 2009-11-13 | 2010-06-17 | 동국대학교 산학협력단 | 해시 기반 문서의 색인화 및 검색 방법 및 장치 |
KR20130078594A (ko) * | 2011-12-30 | 2013-07-10 | 주식회사 아이디스 | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 |
US20170161375A1 (en) * | 2015-12-07 | 2017-06-08 | Adlib Publishing Systems Inc. | Clustering documents based on textual content |
Also Published As
Publication number | Publication date |
---|---|
KR102289408B1 (ko) | 2021-08-12 |
US11971851B2 (en) | 2024-04-30 |
US20220229810A1 (en) | 2022-07-21 |
KR20210027939A (ko) | 2021-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9571509B1 (en) | Systems and methods for identifying variants of samples based on similarity analysis | |
TWI515598B (zh) | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 | |
CN101751535B (zh) | 通过应用程序数据访问分类进行的数据损失保护 | |
EP2947595A1 (en) | Attack analysis system, coordination device, attack analysis coordination method, and program | |
CN106557696A (zh) | 用于检测恶意数据加密程序的系统和方法 | |
US20150186649A1 (en) | Function Fingerprinting | |
WO2017155292A1 (ko) | 비정상행위 탐색방법 및 탐색프로그램 | |
WO2019160195A1 (ko) | 파일 내 포함된 악성 위협 탐지 장치 및 방법, 그 기록매체 | |
CN108256329B (zh) | 基于动态行为的细粒度rat程序检测方法、系统及相应的apt攻击检测方法 | |
CN101021886A (zh) | 防止恶意软件在计算机系统内执行的方法 | |
WO2013100320A1 (ko) | 시스템 파일 보호 및 복구를 위한 장치, 방법, 사용자 단말기 및 시스템 | |
WO2022108318A1 (ko) | 스마트 컨트랙트 코드 취약점 분석 장치 및 방법 | |
CN107403093A (zh) | 检测多余软件的系统和方法 | |
Thunga et al. | Identifying metamorphic virus using n-grams and hidden markov model | |
WO2021045312A1 (ko) | 해시 코드 기반의 검색 장치 및 검색 방법 | |
US20240095289A1 (en) | Data enrichment systems and methods for abbreviated domain name classification | |
KR102289395B1 (ko) | 자카드 모델 기반의 문서 검색 장치 및 방법 | |
WO2023113158A1 (ko) | 범죄 행위자 프로파일링 방법, 이를 수행하는 장치 및 컴퓨터 프로그램 | |
WO2023140519A1 (ko) | 얼굴 개인정보 보호 기술을 이용한 기계학습 데이터베이스 구축 시스템 | |
WO2019177265A1 (ko) | 랜섬웨어 대응을 위한 데이터 처리 방법, 이를 실행시키는 프로그램 및 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 | |
WO2018043885A1 (ko) | 악성코드탐지시스템 및 악성코드 탐지 방법 | |
US12079285B2 (en) | Training device, determination device, training method, determination method, training method, and determination program | |
KR102269652B1 (ko) | 보안관제 데이터 분석을 위한 머신러닝 기반의 학습 벡터 생성 장치 및 방법 | |
WO2019103368A1 (ko) | 빅데이터를 활용한 악성코드 검출 방법 | |
Mabzool et al. | Intrusion detection system based on web usage mining |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19944069 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19944069 Country of ref document: EP Kind code of ref document: A1 |