WO2020065960A1 - 情報処理装置、制御方法、及びプログラム - Google Patents

情報処理装置、制御方法、及びプログラム Download PDF

Info

Publication number
WO2020065960A1
WO2020065960A1 PCT/JP2018/036444 JP2018036444W WO2020065960A1 WO 2020065960 A1 WO2020065960 A1 WO 2020065960A1 JP 2018036444 W JP2018036444 W JP 2018036444W WO 2020065960 A1 WO2020065960 A1 WO 2020065960A1
Authority
WO
WIPO (PCT)
Prior art keywords
event
sequence
event sequence
information
dictionary data
Prior art date
Application number
PCT/JP2018/036444
Other languages
English (en)
French (fr)
Inventor
純明 榮
和彦 磯山
淳 西岡
悦子 市原
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2020547832A priority Critical patent/JP7180681B2/ja
Priority to US17/278,371 priority patent/US11762713B2/en
Priority to PCT/JP2018/036444 priority patent/WO2020065960A1/ja
Publication of WO2020065960A1 publication Critical patent/WO2020065960A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Definitions

  • the present invention relates to history management.
  • Patent Literature 1 discloses a technique for managing logs of events to be investigated in a circular buffer. Since the log is a circular buffer, when the log is written to the end of the buffer, the process returns to the top of the buffer, overwrites the existing log, and continues writing the log. However, overwriting is not performed on the area where the event of the predetermined ID is stored.
  • Patent Document 2 discloses a technique for extracting an error log and a log related to an error log from a log file when a data amount of the log becomes equal to or larger than a threshold, and deleting a log other than the extracted log from the log file.
  • the log related to the error log is a log recorded n seconds before and after the error log or a log recorded n times before and after the error log.
  • JP 2014-146074 A Japanese Patent Application Laid-Open No. 2013-065244
  • Patent Literature 1 and Patent Literature 2 By using the techniques of Patent Literature 1 and Patent Literature 2, information about events other than a specific event can be deleted from the log. However, with these techniques, information about the specific event remains in the log. Therefore, for example, when a large number of specific events set to be left in the log occur, the size of the log increases.
  • the present invention has been made in view of the above-described problems, and one of its objects is to provide a technique for efficiently managing the history of events.
  • the information processing apparatus includes: 1) a specifying unit that specifies an alternative expression of an event sequence represented by a plurality of event histories using dictionary data; and 2) an output that outputs information including the specified alternative expression. And a part.
  • the dictionary data indicates an event sequence and an alternative expression corresponding to the event sequence in association with each other.
  • the control method of the present invention is executed by a computer.
  • the control method includes: 1) a specifying step of specifying an alternative expression of an event sequence represented by a plurality of event histories using dictionary data; 2) an output step of outputting information including the specified alternative expression; Having.
  • the dictionary data indicates an event sequence and an alternative expression corresponding to the event sequence in association with each other.
  • the program of the present invention causes a computer to execute each step of the control method of the present invention.
  • FIG. 3 is a diagram illustrating an outline of an operation of the information processing apparatus according to the first embodiment.
  • FIG. 2 is a diagram illustrating a configuration of a first information processing apparatus according to the first embodiment.
  • FIG. 3 is a diagram illustrating a computer for realizing a first information processing apparatus.
  • 6 is a flowchart illustrating a flow of a process executed by the first information processing device according to the first embodiment. It is a figure which illustrates an event history in a table format.
  • FIG. 2 is a block diagram illustrating a first information processing device having a rectification unit.
  • FIG. 4 is a diagram illustrating dictionary data in a table format.
  • FIG. 9 is a diagram illustrating a second event history column in a table format.
  • each block diagram represents a configuration of a functional unit, not a configuration of a hardware unit.
  • FIG. 1 is a diagram illustrating an outline of an operation of the information processing apparatus according to the first embodiment.
  • FIG. 1 is a conceptual diagram for facilitating the understanding of the operation of the information processing device 2000, and does not specifically limit the operation of the information processing device 2000.
  • the information processing device 2000 represents the event sequence represented by the plurality of event histories 12 with a simpler alternative expression 20.
  • the event history 12 is information on an event that has occurred in a target computer system (hereinafter, target system).
  • target system is composed of one or more arbitrary machines.
  • the machine may be a physical machine or a virtual machine.
  • the event represents, for example, an activity (such as access to a file or another process) performed by a process running on a machine included in the target system.
  • the alternative expression 20 is information that represents the event sequence in another form.
  • the substitute expression 20 indicates the meaning of the event sequence, the name of a series of processes realized by the event sequence, and the like.
  • ⁇ API Application Programming Interface
  • ⁇ X ⁇ Application Programming Interface
  • the event history 12 is recorded for each of the plurality of system calls executed in the API ⁇ X ⁇ . Therefore, the event sequence (the sequence of a plurality of system calls) indicated by the event history 12 has one collective meaning of executing the API ⁇ X ⁇ . Therefore, in this case, the event sequence indicated by the plurality of event histories 12 can be simply represented by the alternative expression 20 such as “execution of API ⁇ X ⁇ ”.
  • the information processing apparatus 2000 specifies the alternative expression 20 for the event sequence represented by the plurality of event histories 12.
  • the specification of the alternative expression 20 is performed using the dictionary data 30.
  • the dictionary data 30 is information in which an event sequence is associated with the substitute expression 20 corresponding to the event sequence. Further, the information processing device 2000 outputs output information including the specified alternative expression 20.
  • the information processing apparatus 2000 has acquired an event sequence “e1, e10, e3, e4, e5”.
  • the event string "e1, $ e10” is associated with the alternative expression 20 "API # 1".
  • the event string "e3, $ e4, $ e5" is associated with the alternative expression 20 "API $ 3”.
  • the information processing apparatus 2000 specifies the alternative expression 20 of “API $ 1” for the event sequence of “e1, $ e10” in the acquired event sequence, and specifies the alternative expression 20 for the event sequence of “e3, $ e4, $ e5”.
  • the information processing apparatus 2000 outputs information including the alternative expression 20 of “API $ 1” and the alternative expression 20 of “API $ 3”.
  • the information processing device 2000 stores a file sequentially indicating the alternative expressions 20 in the storage device.
  • the substitute expression 20 is specified for the event sequence represented by the plurality of event histories 12 using the dictionary data 30. Then, information including the substitute expression 20 is output. In this way, instead of a plurality of event histories 12, an alternative expression 20 that expresses them more simply is managed, so that an event that has occurred in the target system can be managed. This makes it possible to reduce the computer resources (such as the capacity of the storage device) required for managing the history of events that have occurred in the target system, so that the history of events can be managed efficiently.
  • the computer resources such as the capacity of the storage device
  • FIG. 2 is a diagram illustrating a configuration of the information processing apparatus 2000 according to the first embodiment.
  • the information processing device 2000 includes a specifying unit 2020 and an output unit 2040.
  • the specifying unit 2020 specifies the substitute expression 20 using the dictionary data 30 for the event sequence represented by the plurality of event histories 12.
  • the output unit 2040 outputs output information including the substitute expression 20.
  • the dictionary data 30 indicates association between an event sequence and the substitute expression 20 corresponding to the event sequence.
  • Each functional component of the information processing apparatus 2000 may be implemented by hardware (eg, a hard-wired electronic circuit or the like) that implements each functional component, or a combination of hardware and software (eg: Electronic circuit and a program for controlling the same).
  • hardware eg, a hard-wired electronic circuit or the like
  • software eg: Electronic circuit and a program for controlling the same.
  • FIG. 3 is a diagram illustrating a computer 1000 for realizing the information processing device 2000.
  • the computer 1000 is an arbitrary computer.
  • the computer 1000 is a stationary computer such as a personal computer (PC) or a server machine.
  • the computer 1000 is a portable computer such as a smartphone or a tablet terminal.
  • the computer 1000 may be a dedicated computer designed to realize the information processing device 2000, or may be a general-purpose computer.
  • the computer 1000 has a bus 1020, a processor 1040, a memory 1060, a storage device 1080, an input / output interface 1100, and a network interface 1120.
  • the bus 1020 is a data transmission path through which the processor 1040, the memory 1060, the storage device 1080, the input / output interface 1100, and the network interface 1120 mutually transmit and receive data.
  • a method for connecting the processors 1040 and the like to each other is not limited to a bus connection.
  • the processor 1040 is various processors such as a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and an FPGA (Field-Programmable Gate Array).
  • the memory 1060 is a main storage device realized using a RAM (Random Access Memory) or the like.
  • the storage device 1080 is an auxiliary storage device realized using a hard disk, an SSD (Solid State Drive), a memory card, or a ROM (Read Only Memory).
  • the input / output interface 1100 is an interface for connecting the computer 1000 and an input / output device.
  • an input device such as a keyboard and an output device such as a display device are connected to the input / output interface 1100.
  • the network interface 1120 is an interface for connecting the computer 1000 to a communication network.
  • the communication network is, for example, a LAN (Local Area Network) or a WAN (Wide Area Network).
  • the method by which the network interface 1120 connects to the communication network may be a wireless connection or a wired connection.
  • the storage device 1080 stores a program module that implements each functional component of the information processing apparatus 2000.
  • the processor 1040 realizes a function corresponding to each program module by reading out each of these program modules into the memory 1060 and executing them.
  • FIG. 4 is a flowchart illustrating a flow of a process executed by the information processing apparatus 2000 according to the first embodiment.
  • the specifying unit 2020 uses the dictionary data 30 to specify the alternative expression 20 for the event sequence represented by the plurality of event histories 12 (S102).
  • the output unit 2040 outputs output information including the alternative expression 20 (S104).
  • the event history 12 is information on an event that has occurred on a target system (on a machine included in the target system) at a certain point in the past.
  • the event history 12 shows an event occurrence time and an event content in association with each other.
  • the event history 12 indicates the history of the activities of the processes operating on the computer system 10. For example, the activity of a process is recorded for each system call.
  • these processes may operate on the same ⁇ OS (Operating System) ⁇ or may operate on different ⁇ OSs ⁇ Good. As an example of the latter, for example, it is conceivable that a certain process communicates with another process operating on another ⁇ OS ⁇ by using a socket interface.
  • an event is identified by information representing four elements: subject, object, activity content, and occurrence time.
  • the event history 12 indicates a combination of subject information representing a subject, object information representing an object, content information representing the content of an activity, and an occurrence time.
  • the subject information is, for example, information for identifying a process that has generated the event.
  • information for identifying a process is referred to as process identification information.
  • the process identification information includes a process ID (Identifier).
  • the process identification information on the process in which a plurality of threads operate further includes a thread ID in addition to the process ID.
  • the process identification information may further include information on an executable file of the process.
  • the information on the executable file of the process includes, for example, the name and path of the executable file, the hash value of the executable file, the digital signature of the executable file, or the name of the application realized by the executable file.
  • the object information is, for example, the type and identification information of the object.
  • the type of the object is, for example, a process, a file, or a socket.
  • the object information includes process identification information of the process.
  • the object information includes information for identifying the file (hereinafter, file identification information).
  • file identification information is, for example, a file name or a path.
  • the object information includes a hash value of the file and a combination of an identifier of the file system and an identifier (inode number or object ID) of a disk block constituting the file on the file system. May be included.
  • the object information includes an identifier assigned to the socket.
  • the content information is, for example, an identifier assigned in advance to various activities. For example, “start process”, “stop process”, “open file”, “read data from file”, “write data to file”, “open socket”, “data from socket” A different identifier is assigned to the content of the activity such as “read data” or "write data to the socket”. Note that access to a socket means access to another device associated with the socket.
  • the content information may indicate system call identification information.
  • the identification information of the system call is, for example, a system call name or a system call number.
  • the content information includes the contents of the argument given to the system call (the value of the argument itself and the data stored in the memory area pointed to by the pointer given as the argument), and under what conditions the system call is executed. Information indicating whether the operation has been performed may be further indicated.
  • FIG. 5 is a diagram illustrating the event history 12 in a table format.
  • the table in FIG. 5 is referred to as a table 200.
  • Each record in the table 200 represents one event history 12.
  • the table 200 includes subject information 202, object information 204, content information 206, and occurrence time 207.
  • the subject information 202 includes a process ID 208, a thread ID 209, and a path 210.
  • the object information 204 includes a type 212 and identification information 214.
  • the occurrence time 207 indicates the time when the event occurred.
  • the event history 12 is generated by recording the activity of the process on the target system.
  • Existing technology can be used to record the activity of the process.
  • the specifying unit 2020 acquires a plurality of event histories 12 to be processed. Specifically, the specifying unit 2020 acquires the event history sequence 10 in which the event histories 12 are arranged in chronological order.
  • the event history column 10 is stored in a storage device that can be accessed from the specifying unit 2020. This storage device is called a history storage device.
  • the history storage device may be provided inside the information processing device 2000 or may be provided outside the information processing device 2000.
  • a log file is stored in the history storage unit.
  • a plurality of event histories 12 are recorded in ascending order of occurrence time.
  • the identification unit 2020 acquires the event history sequence 10 by sequentially reading information recorded in the log file.
  • the event history column 10 may include a history of events generated by operations of various operation entities.
  • the information processing apparatus 2000 divides the event histories 12 included in the event history column 10 into groups for each operation subject. This grouping is also called “rectification of events”.
  • FIG. 6 is a block diagram illustrating an information processing device 2000 having the rectification unit 2060.
  • the rectification unit 2060 groups the event histories 12 included in the event history column 10 into event histories 12 having the same operation subject.
  • the operation subject can be specified by the process ID included in the subject information of the event history 12. However, when the operation subject is a thread, the operation subject is specified by a pair of “process ID, thread ID”.
  • the event rectification may be performed by a device other than the information processing device 2000.
  • the specifying unit 2020 acquires the event history sequence 10 for each group.
  • the specifying unit 2020 uses the dictionary data 30 to specify the alternative expression 20 for the event sequence indicated by the plurality of event histories 12 (S102). Specifically, the specifying unit 2020 acquires the event history column 10 and sets the event column (hereinafter, the first event column 14) indicated by the plurality of event histories 12 included in the acquired event history column 10 to 1 One or more alternative expressions 20 are specified.
  • dictionary data 30 is used to specify the alternative expression 20.
  • the dictionary data 30 will be specifically described.
  • the dictionary data 30 is data in which an event sequence is associated with the substitute expression 20 corresponding to the event sequence.
  • the event sequence shown in the dictionary data 30 is called a second event sequence.
  • FIG. 7 is a diagram illustrating the dictionary data 30 in a table format.
  • the table shown in FIG. 7 is referred to as a table 300.
  • the table 300 has two columns, a second event column 302 and an alternative expression 304.
  • the second event column 302 is data in which information representing events is arranged in chronological order.
  • the substitute expression 304 is the substitute expression 20 associated with the second event sequence shown in the second event sequence 302.
  • each event included in the second event column 302 is determined by, for example, a combination of the object and the content of the activity of the process (what has been done for what).
  • “read file A” is an activity of a process having “file A” as an object and “read file” as a content.
  • the information of each event indicated by the second event column 302 can be a combination of the object information and the content information in the event history 12 (the object information 204 and the content information 206 in the table 200 in FIG. 5).
  • the substitute expression 20 indicated by the dictionary data 30 indicates, for example, the meaning of the corresponding second event sequence, the name of the process realized by the corresponding second event sequence, and the like.
  • the corresponding alternative expression 20 indicates the identification information (name or the like) of the ⁇ API ⁇ . If there are a plurality of versions of ⁇ API ⁇ with the same name, and the event sequence that occurs differs depending on the version, it is preferable to include the version information in the identification information of the API #.
  • the processing to be executed may differ depending on the execution conditions of the API # (contents of arguments given to the API #, environment variables, etc.).
  • the alternative expression 20 include information indicating an execution condition in addition to the identification information of the API #.
  • the table 300 in FIG. 7 shows an execution condition 308 in addition to the API @ identification information 306 in the alternative expression 304.
  • the information represented by the alternative expression 20 may be text data that is easy for the human eye to understand, considering that the information is output as human-visible information. For example, suppose you have an API called hoo. When ⁇ hoo ⁇ is executed when the value of the argument ⁇ a ⁇ is 0 or more, events ⁇ A ⁇ and ⁇ B ⁇ are generated. When ⁇ hoo ⁇ is executed with the value of the argument ⁇ a ⁇ less than 0, events ⁇ C ⁇ and ⁇ D ⁇ are generated.
  • the alternative expression 20 is text data "API: hoo; $ argument: a ⁇ 0". By outputting such text data, a person can easily grasp which ⁇ API ⁇ was executed under what execution conditions.
  • the dictionary data 30 is not limited to the association between the event sequence and the ⁇ API ⁇ .
  • the dictionary data 30 is not limited to API #, and may associate any function with a sequence of events generated by the execution of the function.
  • the function means a processing group in which a series of processing is collectively defined as one and includes procedures and methods.
  • the association with the event sequence is not limited to the function.
  • the specifying unit 2020 extracts one or more partial event strings that match any of the second event strings from the first event string 14. Then, the information processing apparatus 2000 specifies the substitute expression 20 for each of the extracted partial event strings. Specifically, the specifying unit 2020 specifies the substitute expression 20 corresponding to the second event sequence that matches the partial event sequence as the substitute expression 20 for the partial event sequence.
  • the specifying unit 2020 calculates the similarity between each second event sequence indicated in the dictionary data 30 and the partial event sequence starting from the first event sequence. For example, a second event sequence having a length of n is compared with a partial event sequence having a length of n starting from the beginning of the first event sequence.
  • the specifying unit 2020 treats the pair of the partial event sequence and the second event sequence for which the similarity equal to or greater than the threshold value is calculated, as a match.
  • the specifying unit 2020 extracts the partial event string from the first event string 14. Then, the specifying unit 2020 specifies the substitute expression 20 (corresponding in the dictionary data 30) corresponding to the second event sequence that matches the extracted partial event sequence as the substitute expression 20 for the partial event sequence. . The specifying unit 2020 repeatedly performs the same process on the first event sequence 14 excluding the extracted partial event sequence. The process is repeated until the first event sequence 14 disappears.
  • the specifying unit 2020 performs matching between the first event sequence 14 and the second event sequence after excluding the first event history 12 from the first event sequence 14.
  • the identification unit 2020 extracts the longest partial event sequence from the first event sequence 14 among the partial event sequences for which the similarity equal to or greater than the threshold value has been calculated. Then, the specifying unit 2020 specifies the substitute expression 20 corresponding to the second event sequence that matches the partial event sequence as the substitute expression 20 of the partial event sequence.
  • a partial event sequence A1 of length 2 starting from the beginning of the first event sequence 14 matches the second event sequence B1
  • a partial event sequence A2 of length 4 starting from the beginning of the first event sequence 14 is defined as the second event sequence.
  • the specifying unit 2020 extracts the partial event sequence A2 having a length of 4 from the first event sequence 14, and associates the substitute expression 20 of the partial event sequence A2 with the second event sequence B2 in the dictionary data 30. Substitute expression 20.
  • the specifying unit 2020 calculates the similarity between the events having the same order from the top with respect to the plurality of events indicated by the partial event sequence and the event indicated by the second event sequence. That is, the specifying unit 2020 calculates “the similarity between the n-th event in the second event sequence and the n-th event in the partial event sequence (the n-th event from the top of the first event sequence 14)”. The process is performed for all events included in the second event sequence. Then, the specifying unit 2020 calculates the similarity between the second event sequence and the partial event sequence using the plurality of calculated similarities. For example, the specifying unit 2020 calculates a sum, a multiplied value, or an averaged value of the calculated plurality of similarities as the similarity between the second event sequence and the partial event sequence.
  • the similarity between events is calculated based on, for example, the similarity between the object of the activity of the process represented by the event and the activity content.
  • the specifying unit 2020 determines the object and content of the i-th event in the partial event sequence (object information and content information indicated by the i-th event history 12), the object and the activity content of the i-th event in the second event sequence. Is calculated.
  • the specifying unit 2020 calculates a total value, a multiplication value, an average value, or the like for the similarity between the objects and the similarity between the activities, and sets the calculated value as the similarity between the events.
  • both the event history 12 and the second event sequence include the function identification information and the execution condition thereof as information representing the event.
  • the specifying unit 2020 calculates the similarity between the identification information and the execution condition of each function indicated by the partial event sequence and the identification information and the execution condition of each function indicated by the second event sequence.
  • the similarity is determined by a value of 0 or more and 1 or less. Then, if the identification information of the function and all of the execution conditions match between the events to be compared, the similarity is set to 1. Then, the similarity is reduced as the number of pieces of information that match each other is smaller. However, it is preferable that a greater weight is given to the match / mismatch of the function identification information than to the match / mismatch of the execution conditions. This is because the contents of the processing differ greatly if the functions differ, but the contents of the processing often do not change much even if the execution conditions such as the arguments slightly differ.
  • 0.5 ⁇ is determined by matching / mismatching of the identification information of the functions. That is, if the function identification information matches, the value of the similarity is set to ⁇ 0.5 ⁇ . Then, a value obtained by adding the degree of coincidence of the execution condition (a value between 0 and 0.5) to the similarity is set as the similarity between the events.
  • the event history column 10 may include the event histories 12 for different actors.
  • the specifying unit 2020 divides the event history sequence 10 into the above-described groups, obtains the first event sequence 14 for each group, and specifies the alternative expression 20 for each first event sequence 14.
  • the output unit 2040 outputs information including the substitute expression 20 (S106). For example, the output unit 2040 generates a second event history sequence from the first event sequence 14 and outputs the second event history sequence.
  • the second event history column indicates the second event history in chronological order.
  • One second event history indicates the alternative expression 20 specified for one partial event sequence extracted from the first event sequence 14. In other words, the second event history column is obtained by replacing the event history 12 included in the first event column 14 with the second event history.
  • FIG. 8 is a diagram illustrating a second event history column in a table format.
  • the table in FIG. 8 is called a table 400.
  • Table 400 has two columns: time of occurrence 402 and alternative representation 404.
  • the second event history is obtained by integrating a plurality of event histories 12 into one. For this reason, the history of events that occurred in the target system is changed to the event history 12 and managed by the second event history, so that computer resources (such as the capacity of the storage device) required for managing the history of events that occurred in the target system are reduced. Can be reduced.
  • Managing the event history in the second event history makes it easier for a person to understand the behavior of the target system. For example, assume that a plurality of system calls are executed in accordance with the execution of API #. In this case, the behavior of the target system can be more easily understood by looking at the name of the ⁇ API ⁇ that called the system call than by looking at the name of each system call.
  • the output destination of the second event history is, for example, a storage device.
  • the output unit 2040 generates a log file in which the second event history is recorded for each first event sequence 14 (for each subject of operation). That is, the output unit 2040 records one or more second event histories generated from one first event sequence 14 in a log file in order of occurrence time, and causes the storage device to store it.
  • the output destination of the second event history may be a display device or another device (such as a server machine).
  • the dictionary data 30 is generated in advance and stored in a storage device.
  • a method of generating the dictionary data 30 will be described as an example.
  • the generation of the dictionary data 30 may be performed by the information processing device 2000 or may be performed by a device other than the information processing device 2000.
  • a device that generates the dictionary data 30 is referred to as a second information processing device 3000.
  • the second information processing device 3000 generates the dictionary data 30 by analyzing the record of the behavior of the test system.
  • the test system is configured to store the event history 12 in the storage device, similarly to the target system.
  • test system also stores information indicating a start time (hereinafter, start information) and information indicating an end time (hereinafter, end information) of a series of events to be expressed using the alternative expression 20 in the storage device.
  • start information information indicating a start time
  • end information information indicating an end time of a series of events to be expressed using the alternative expression 20 in the storage device.
  • the test system hooks an API call and records start information indicating information (identification information and execution conditions) related to the API before execution of the API. Further, after execution of the API #, the test system records the end information in such a manner that the correspondence with the start information can be understood. For example, by including the same identification information (for example, a random value) in the start information and the end information, it is possible to grasp the correspondence between the start information and the end information.
  • the existing technology can be used as the technology for hooking the API call so that a predetermined process is executed before and after the execution of the API.
  • a wrapper function to be called instead when the ⁇ API ⁇ is called is defined.
  • the wrapper function is implemented to perform processing in the order of “recording start information, executing API #, recording end information”. If such a wrapper function is defined, the corresponding wrapper function is executed by making an API # call, so that "start information, event history 12 representing each event generated with the execution of API #, end information "Are recorded in this order.
  • the operator of the ⁇ test system ⁇ records an event generated by the execution of the ⁇ API ⁇ by executing an application or an ⁇ OS ⁇ that calls the ⁇ API ⁇ to be included in the dictionary data 30 on the test system.
  • the processes to be executed may differ depending on the execution conditions. Therefore, in the test system, it is preferable to execute the same ⁇ API ⁇ under various execution conditions and record the event under each execution condition. Therefore, for example, various applications that call the target ⁇ API ⁇ (such as an application attached to the OS or an application that is used as a standard in the organization where the target system is installed) are executed a plurality of times to record an event.
  • various versions of the application or the ⁇ OS ⁇ it is preferable to execute various versions of the application or the ⁇ OS ⁇ .
  • the second information processing device 3000 generates the dictionary data 30 in which a series of events recorded between the start information and the end information is used as a second event sequence. For example, as described above, it is assumed that the information is recorded in the log file in the order of “start information, event history 12 for each event generated by execution of API #, and end information”. In this case, the second information processing device 3000 specifies the pair of the start information and the end information by analyzing the log file. Then, an event sequence represented by a plurality of event histories 12 recorded between the start information and the end information of the specified pair is set as a second event sequence, and information on ⁇ API ⁇ indicated in the start information is represented as an alternative expression. As 20, the dictionary data 30 is generated.
  • the substitute expression 20 is represented by, for example, the identification information of the API shown in the start information and the execution condition of the ⁇ API ⁇ .
  • each information output to the log file is configured to indicate the entity that operates the event.
  • the event history 12 includes subject information indicating the subject of operation.
  • the start information also includes subject information (process ID, thread ID, etc.) corresponding to the subject information in the event history 12.
  • the second information processing apparatus 3000 determines, from the event history 12 recorded between the start information and the end information, the subject information that matches the subject information indicated by the start information.
  • the event history 12 shown is extracted. Then, the extracted event history 12 is specified as an event generated by the execution of the ⁇ API ⁇ specified by the start information and the end information.
  • a specifying unit that specifies an alternative expression of an event sequence represented by a plurality of event histories using dictionary data
  • An output unit that outputs information including the specified alternative expression
  • the information processing apparatus wherein the dictionary data indicates an event sequence and an alternative expression corresponding to the event sequence in association with each other.
  • the identification unit is Extracting one or more partial event strings that match any of the event strings shown in the dictionary data from an event string composed of the event history of each event generated by the same operation subject, 1. Specify an alternative expression corresponding to the event sequence of the dictionary data that matches the partial event sequence as an alternative expression corresponding to the partial event sequence.
  • An information processing apparatus according to claim 1. 3.
  • the identification unit is An event history column indicating a plurality of event histories is obtained, and the plurality of event histories included in the event history column are divided into groups for each operation subject of the event, 1. For each group, extract a partial event sequence that matches any of the event sequences shown in the dictionary data from an event sequence composed of a plurality of event histories included in the group. An information processing apparatus according to claim 1. 4. The output unit generates an event sequence in which, for an event sequence formed by a plurality of event histories, each of the partial event sequences extracted from the event sequence is replaced with the substitute expression that matches the partial event sequence. 1. Output information representing the event sequence Or 3. An information processing apparatus according to claim 1. 5.
  • the substitute expression indicated by the dictionary data includes function identification information,
  • the event sequence indicated by the dictionary data indicates a sequence of events generated by the execution of the function specified by the associated identification information.
  • a control method executed by a computer A specifying step of using the dictionary data to specify an alternative expression of the event sequence represented by the plurality of event histories; Outputting an information including the specified alternative expression, and A control method, wherein the dictionary data indicates an event sequence and an alternative expression corresponding to the event sequence in association with each other.
  • the dictionary data indicates an event sequence and an alternative expression corresponding to the event sequence in association with each other.
  • An event history column indicating a plurality of event histories is obtained, and the plurality of event histories included in the event history column are divided into groups for each operation subject of the event, 7. For each of the groups, extract a partial event string that matches any of the event strings shown in the dictionary data from an event string composed of a plurality of event histories included in the group.
  • In the output step for an event sequence composed of a plurality of event histories, an event sequence is generated by replacing each of the partial event sequences extracted from the event sequence with the alternative expression that matches the partial event sequence. 7. output information representing the event sequence Or 9.
  • the substitute expression indicated by the dictionary data includes function identification information, 6.
  • the event sequence indicated by the dictionary data indicates a sequence of events generated by the execution of the function specified by the associated identification information.
  • the function is an API (Application Programming Interface). The control method described in 1.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

第1情報処理装置(2000)は、辞書データ(30)を用いて、複数のイベント履歴(12)によって表されるイベント列の代替表現(20)を特定する。第1情報処理装置(2000)は、特定された代替表現(20)を含む情報を出力する。辞書データ(30)は、イベント列と、そのイベント列に対応する代替表現(20)とを対応付けて示す。

Description

情報処理装置、制御方法、及びプログラム
 本発明は履歴の管理に関する。
 種々のイベントの履歴を管理する技術が開発されている。例えば特許文献1は、循環バッファで調査対象イベントのログを管理する技術を開示している。循環バッファであるため、バッファの最後尾までログが書き込まれたら、バッファの先頭に戻り、既存のログを上書きってログの書き込みが継続される。ただし、所定IDのイベントが格納されている領域については、上書きを行わないようにする。
 特許文献2は、ログのデータ量が閾値以上になった場合に、ログファイルからエラーログ及びエラーログに関連するログを抽出し、抽出したログ以外のログをログファイルから削除する技術を開示している。ここで、エラーログに関連するログは、エラーログの前後n秒に記録されたログ、又はエラーログの前後n件に記録されたログである。
特開2014-146074号公報 特開2013-065244号公報
 特許文献1や特許文献2の技術を利用すると、特定のイベント以外のイベントについての情報をログから削除することができる。しかしながら、これらの技術では、当該特定のイベントについての情報はログにそのまま残ることになる。そのため例えば、ログに残すように設定された特定のイベントが多く発生した場合には、ログのサイズが大きくなってしまう。
 本発明は、上述の課題に鑑みてなされたものであり、その目的の一つは、イベントの履歴を効率的に管理する技術を提供することである。
 本発明の情報処理装置は、1)辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、2)特定された代替表現を含む情報を出力する出力部と、を有する。辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す。
 本発明の制御方法はコンピュータによって実行される。当該制御方法は、1)辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、2)特定された代替表現を含む情報を出力する出力ステップと、を有する。辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す。
 本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
 本発明によれば、イベントの履歴を効率的に管理する技術が提供される。
 上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
実施形態1の情報処理装置の動作の概要を表す図である。 実施形態1の第1情報処理装置の構成を例示する図である。 第1情報処理装置を実現するための計算機を例示する図である。 実施形態1の第1情報処理装置によって実行される処理の流れを例示するフローチャートである。 イベント履歴をテーブル形式で例示する図である。 整流部を有する第1情報処理装置を例示するブロック図である。 辞書データをテーブル形式で例示する図である。 第2イベント履歴列をテーブル形式で例示する図である。
 以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
[実施形態1]
<概要>
 図1は、実施形態1の情報処理装置の動作の概要を表す図である。図1は情報処理装置2000の動作についての理解を容易にするための概念的な図であり、情報処理装置2000の動作を具体的に限定するものではない。
 情報処理装置2000は、複数のイベント履歴12によって表されるイベント列を、より簡潔な代替表現20で表す。イベント履歴12は、対象のコンピュータシステム(以下、対象システム)において発生したイベントに関する情報である。対象システムは、1つ以上の任意のマシンで構成される。マシンは、物理マシンであってもよいし、仮想マシンであってもよい。イベントは、例えば、対象システムに含まれるマシンで動作するプロセスが行った活動(ファイルや他のプロセスへのアクセスなど)を表す。
 代替表現20は、イベント列を別の形で表す情報である。例えば、代替表現20は、イベント列が持つ意味や、イベント列によって実現される一連の処理の名称などを表す。例えば、プロセスの活動をシステムコール単位でイベント履歴12に記録するように構成された対象システムにおいて、複数のシステムコールの実行を伴う API(Application Programming Interface) X が実行されたとする。この場合、API X の中で実行される複数のシステムコールそれぞれについてのイベント履歴12が記録される。そのため、これらのイベント履歴12によって示されるイベント列(複数のシステムコールの列)は、API X の実行という1つのまとまった意味を持つ。よって、このケースでは、複数のイベント履歴12によって示されるイベント列を、「API X の実行」などといった代替表現20で簡潔に表現できる。
 そこで情報処理装置2000は、複数のイベント履歴12によって表されるイベント列について、代替表現20を特定する。代替表現20の特定は、辞書データ30を利用して行われる。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20とを対応づけた情報である。さらに情報処理装置2000は、特定した代替表現20を含む出力情報を出力する。
 例えば図1の例において、情報処理装置2000は、「e1, e10, e3, e4, e5」というイベント列を取得している。ここで、辞書データ30において、「e1, e10」というイベント列に対して、「API 1」という代替表現20が対応づけられている。また、辞書データ30において、「e3, e4, e5」というイベント列に対して、「API 3」という代替表現20が対応づけられている。そこで、情報処理装置2000は、取得したイベント列のうち、「e1, e10」というイベント列に対して「API 1」という代替表現20を特定し、「e3, e4, e5」というイベント列に対して「API 3」という代替表現20を特定する。そして情報処理装置2000は、「API 1」という代替表現20及び「API 3」という代替表現20を含む情報を出力する。例えば、情報処理装置2000は、これらの代替表現20を順に示すファイルを記憶装置に記憶する。
<作用効果>
 本実施形態の情報処理装置2000によれば、辞書データ30を用い、複数のイベント履歴12によって表されるイベント列について、代替表現20が特定される。そして、代替表現20を含む情報が出力される。こうすることで、複数のイベント履歴12の代わりに、これらをより簡潔に表した代替表現20を管理することで、対象システムで発生したイベントを管理することができる。これにより、対象システムで発生したイベントの履歴の管理に要する計算機資源(記憶装置に容量など)を少なくすることができるため、イベントの履歴を効率よく管理できるようになる。
 また、代替表現20でイベントの履歴を管理することにより、対象システムの挙動を人が理解しやすくなる。例えば、API の実行に伴って複数のシステムコールが実行されたとする。この場合、各システムコールの名称等を見るよりも、それらのシステムコールを呼び出した API の名称等を見た方が、対象システムの挙動を容易に理解することができる。
 以下、本実施形態の情報処理装置2000についてさらに詳細に説明する。
<情報処理装置2000の機能構成の例>
 図2は、実施形態1の情報処理装置2000の構成を例示する図である。情報処理装置2000は、特定部2020及び出力部2040を有する。特定部2020は、複数のイベント履歴12によって表されるイベント列について、辞書データ30を用いて、代替表現20を特定する。出力部2040は、代替表現20を含む出力情報を出力する。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20との対応付けを示す。
<情報処理装置2000のハードウエア構成>
 情報処理装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、情報処理装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
 図3は、情報処理装置2000を実現するための計算機1000を例示する図である。計算機1000は任意の計算機である。例えば計算機1000は、Personal Computer(PC)やサーバマシンなどの据え置き型の計算機である。その他にも例えば、計算機1000は、スマートフォンやタブレット端末などの可搬型の計算機である。計算機1000は、情報処理装置2000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
 計算機1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。
 プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)などの種々のプロセッサである。メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスク、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
 入出力インタフェース1100は、計算機1000と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース1100には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
 ネットワークインタフェース1120は、計算機1000を通信網に接続するためのインタフェースである。この通信網は、例えば LAN(Local Area Network)や WAN(Wide Area Network)である。ネットワークインタフェース1120が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
 ストレージデバイス1080は、情報処理装置2000の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ1040は、これら各プログラムモジュールをメモリ1060に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
<処理の流れ>
 図4は、実施形態1の情報処理装置2000によって実行される処理の流れを例示するフローチャートである。特定部2020は、辞書データ30を用いて、複数のイベント履歴12によって表されるイベント列についての代替表現20を特定する(S102)。出力部2040は、代替表現20を含む出力情報を出力する(S104)。
<イベント履歴12について>
 イベント履歴12は、過去の或る時点において対象システム上で(対象システムに含まれるマシン上で)発生したイベントに関する情報である。イベント履歴12は、イベントの発生時刻とイベントの内容とを対応づけて示す。
 例えばイベント履歴12は、コンピュータシステム10上で動作するプロセスの活動の履歴を表す。例えばプロセスの活動は、システムコール単位で記録される。或るプロセスが他のプロセスを客体として活動する場合、これらのプロセスは互いに同一の OS(Operating System)上で動作するものであってもよいし、互いに異なる OS 上で動作するものであってもよい。後者の例としては、例えば、ソケットインタフェースを利用することで、或るプロセスが他の OS 上で動作する別のプロセスと通信を行うことが考えられる。
 例えばイベントは、主体、客体、活動内容、及び発生時刻という4つの要素を表す情報によって識別される。そこで例えば、イベント履歴12は、主体を表す主体情報、客体を表す客体情報、活動の内容を表す内容情報、及び発生時刻の組み合わせを示す。
 主体情報は、例えば、そのイベントを発生させたプロセスを識別する情報である。以下、プロセスを識別する情報をプロセス識別情報と呼ぶ。具体的には、プロセス識別情報は、プロセスID(Identifier)を含む。ただし、複数のスレッドが動作するプロセスについてのプロセス識別情報は、プロセスIDに加え、スレッドIDをさらに含む。
 また、プロセス識別情報は、プロセスの実行ファイルに関する情報をさらに含んでもよい。プロセスの実行ファイルに関する情報とは、例えば、実行ファイルの名称やパス、実行ファイルのハッシュ値、実行ファイルのデジタル署名、又は実行ファイルで実現されるアプリケーションの名称などである。
 客体情報は、例えば、その客体の種別及び識別情報である。客体の種別は、例えば、プロセス、ファイル、又はソケットなどである。客体がプロセスである場合、客体情報にはそのプロセスのプロセス識別情報が含まれる。
 客体がファイルである場合、客体情報には、そのファイルを識別する情報(以下、ファイル識別情報)が含まれる。ファイル識別情報は、例えばファイルの名称やパスなどである。また、客体がファイルである場合、客体情報には、そのファイルのハッシュ値や、ファイルシステムの識別子とファイルシステム上でのファイルを構成するディスクブロックの識別子(inode 番号やオブジェクトID)の組み合わせなどが含まれていてもよい。
 客体がソケットである場合、例えば客体情報には、ソケットに割り当てられた識別子が含まれる。
 内容情報は、例えば、種々ある活動内容に予め割り当てておく識別子である。例えば、「プロセスを起動する」、「プロセスを停止する」、「ファイルをオープンする」、「ファイルからデータを読み込む」、「ファイルにデータを書き込む」、「ソケットをオープンする」、「ソケットからデータを読み込む」、又は「ソケットにデータを書き込む」などといった活動の内容に、互いに異なる識別子を割り当てておく。なお、ソケットに対するアクセスは、そのソケットに対応づけられた他の装置へのアクセスを意味する。
 システムコール単位でイベントが記録される場合、内容情報は、システムコールの識別情報を示してもよい。システムコールの識別情報は、例えば、システムコール名やシステムコール番号である。また、内容情報には、システムコールに与えた引数の内容(引数自体の値や、引数として与えたポインタが指し示すメモリ領域に格納されているデータ)など、システムコールがどのような条件下で実行されたかを表す情報がさらに示されてもよい。
 図5は、イベント履歴12をテーブル形式で例示する図である。以下、図5のテーブルをテーブル200と呼ぶ。テーブル200の各レコードは、1つのイベント履歴12を表す。テーブル200は、主体情報202、客体情報204、内容情報206、及び発生時刻207を含む。主体情報202は、プロセスID208、スレッドID209、及びパス210を含む。客体情報204は、種別212及び識別情報214を含む。発生時刻207は、イベントが発生した時刻を示す。
 ここで、イベント履歴12は、対象システム上におけるプロセスの活動を記録することで生成される。プロセスの活動を記録する技術には、既存の技術を利用することができる。
<イベント履歴12の取得>
 特定部2020は、処理対象とする複数のイベント履歴12を取得する。具体的には、特定部2020は、イベント履歴12が時系列で並べられたイベント履歴列10を取得する。イベント履歴列10は、特定部2020からアクセス可能な記憶装置に記憶されている。この記憶装置を、履歴記憶装置を呼ぶ。履歴記憶装置は、情報処理装置2000の内部に設けられていてもよいし、情報処理装置2000の外部に設けられていてもよい。
 例えば履歴記憶部には、ログファイルが記憶されている。例えばこのログファイルには、発生時刻の昇順に、複数のイベント履歴12が記録されている。特定部2020は、このログファイルに記録されている情報を順に読み出すことで、イベント履歴列10を取得する。
<<イベントの整流>>
 ここで、イベント履歴列10には、様々な動作主体の動作によって生じたイベントの履歴が含まれうる。このような場合、情報処理装置2000は、イベント履歴列10に含まれるイベント履歴12を、動作主体ごとにグループ分けする。このグループ分けを「イベントの整流」とも呼ぶ。
 イベントの整流を行う機能を有する機能構成部を、整流部2060と呼ぶ。図6は、整流部2060を有する情報処理装置2000を例示するブロック図である。整流部2060は、イベント履歴列10に含まれるイベント履歴12を、動作主体が同一であるイベント履歴12ごとにグループ分けする。動作主体は、イベント履歴12の主体情報に含まれるプロセスIDによって特定できる。ただし、動作主体がスレッドである場合には、動作主体は、「プロセスID、スレッドID」のペアによって特定される。
 なお、イベントの整流は、情報処理装置2000以外の装置によって行われてもよい。この場合、特定部2020は、グループごとにイベント履歴列10を取得する。
<代替表現20の特定:S102>
 特定部2020は、辞書データ30を用いて、複数のイベント履歴12によって示されるイベント列についての代替表現20を特定する(S102)。具体的には、特定部2020は、イベント履歴列10を取得し、取得したイベント履歴列10に含まれる複数のイベント履歴12によって示されるイベントの列(以下、第1イベント列14)について、1つ以上の代替表現20の特定を行う。
<<辞書データ30について>>
 ここで、代替表現20の特定には、辞書データ30が利用される。ここでは、辞書データ30について具体的に説明する。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20とを対応づけたデータである。ここで、辞書データ30に示されるイベント列を第2イベント列と呼ぶ。
 図7は、辞書データ30をテーブル形式で例示する図である。図7に示されるテーブルを、テーブル300と表記する。テーブル300は、第2イベント列302と、代替表現304という2つの列を有する。第2イベント列302は、イベントを表す情報が時系列で並べられたデータである。代替表現304は、第2イベント列302に示される第2イベント列に対応づけられる代替表現20である。
 ここで、第2イベント列302に含まれる各イベントは、例えば、プロセスの活動の客体と内容の組み合わせ(何に対して何をしたか)によって定められる。例えば、「ファイルAの読み込み」は、「ファイルA」を客体とし、「ファイルの読み込み」を内容とするプロセスの活動である。そこで例えば、第2イベント列302が示す各イベントの情報は、イベント履歴12における客体情報と内容情報の組み合わせ(図5のテーブル200における客体情報204及び内容情報206)とすることができる。
 辞書データ30が示す代替表現20は、例えば、対応する第2イベント列が持つ意味や、対応する第2イベント列によって実現される処理の名称などを表す。例えば、或る API の実行に伴って生じるイベントの列を第2イベント列に示すケースは、対応する代替表現20は、その API の識別情報(名称など)を表す。なお、同一名称の API が複数バージョン存在し、バージョンによって発生するイベント列が異なる場合、API の識別情報には、バージョン情報も含めることが好適である。
 また、API によっては、API の実行条件(API に与える引数の内容や環境変数など)によって、実行される処理が異なることもある。この様な場合、代替表現20には、API の識別情報に加え、実行条件を表す情報も含めることが好適である。例えば図7のテーブル300は、代替表現304において、API 識別情報306に加え、実行条件308を示している。
 なお、代替表現20が示す情報は、人が目で見る情報として出力されることを考慮して、人の目で見て理解しやすいテキストデータであってもよい。例えば、hoo という API があるとする。また、引数 a の値を0以上として hoo を実行するとイベント A 及び B が発生し、引数 a の値を0未満として hoo を実行するとイベント C 及び D が発生するとする。この場合、「A, B」という第2イベント列に対応づける代替表現20は、「API:hoo; 引数:a>=0」というテキストデータとし、「C, D」という第2イベント列に対応づける代替表現20は、「API:hoo; 引数:a<0」というテキストデータとする。このようなテキストデータを出力することにより、「どの API がどのような実行条件の下で実行されたのか」を人が容易に把握できる。
 なお、辞書データ30が示すのは、イベント列と API との対応づけに限定されない。例えば辞書データ30は、API に限らず、任意の関数と、その関数の実行によって生じるイベントの列とを対応づけてもよい。なお、ここでいう関数とは、一連の処理を1つにまとめて定義した処理群を意味し、プロシージャやメソッドなども含まれるものとする。また、イベント列に対応づけられるのは、関数に限定されなくてもよい。
<<代替表現20の特定方法>>
 例えば特定部2020は、第1イベント列14から、いずれかの第2イベント列とマッチする部分イベント列を1つ以上抽出する。そして、情報処理装置2000は、抽出した各部分イベント列についての代替表現20を特定する。具体的には、特定部2020は、部分イベント列とマッチした第2イベント列に対応する代替表現20を、その部分イベント列についての代替表現20として特定する。
 第1イベント列と第2イベント列とのマッチングについて、より具体的に説明する。例えば特定部2020は、辞書データ30に示される各第2イベント列について、第1イベント列の先頭から始まる部分イベント列との類似度を算出する。例えば、長さがnの第2イベント列については、第1イベント列の先頭から始まる長さnの部分イベント列と比較する。特定部2020は、閾値以上の類似度が算出された部分イベント列と第2イベント列のペアについて、これらがマッチしたものとして扱う。
 特定部2020は、或る部分イベント列と第2イベント列とがマッチしたら、その部分イベント列を、第1イベント列14から抽出する。そして、特定部2020は、抽出した部分イベント列とマッチした第2イベント列に対応する(辞書データ30において対応づけられている)代替表現20を、その部分イベント列についての代替表現20として特定する。特定部2020は、抽出した部分イベント列を除外した第1イベント列14について、さらに同様の処理を繰り返し行う。処理の繰り返しは、第1イベント列14が無くなるまでおこなわれる。
 なお、第1イベント列14の先頭から始まる部分イベント列が、いずれの第2イベント列ともマッチしなかったとする。この場合、例えば特定部2020は、先頭のイベント履歴12を第1イベント列14から除外した後、さらに第1イベント列14と第2イベント列とのマッチングを行う。
 また、第1イベント列14の先頭から始まる部分イベント列との類似度が閾値以上である第2イベント列が複数存在したとする。この場合、例えば特定部2020は、閾値以上の類似度が算出された部分イベント列のうち、最長の部分イベント列を第1イベント列14から抽出する。そして、特定部2020は、その部分イベント列とマッチした第2イベント列に対応する代替表現20を、その部分イベント列の代替表現20として特定する。
 例えば、第1イベント列14の先頭から始まる長さ2の部分イベント列A1が第2イベント列B1とマッチし、第1イベント列14の先頭から始まる長さ4の部分イベント列A2が第2イベント列B2とマッチしたとする。この場合、特定部2020は、長さ4の部分イベント列A2を第1イベント列14から抽出し、部分イベント列A2の代替表現20を、辞書データ30において第2イベント列B2と対応づけられている代替表現20とする。
<<類似度について>>
 イベント列間の類似度を定める方法について説明する。特定部2020は、部分イベント列が示す複数のイベントと、第2イベント列が示すイベントとについて、先頭から互いに同一の順位にあるイベント同士で類似度を算出する。すなわち、特定部2020は、「第2イベント列のn番目のイベントについて、部分イベント列のn番目のイベント(第1イベント列14の先頭からn番目のイベント)との類似度を算出する」という処理を、第2イベント列に含まれる全てのイベントについて行う。そして、特定部2020は、算出された複数の類似度を用いて、第2イベント列と部分イベント列との間の類似度を算出する。例えば、特定部2020は、算出された複数の類似度を合計した値、掛け合わせた値、又は平均した値などを、第2イベント列と部分イベント列との間の類似度として算出する。
 イベント同士の類似度は、例えば、そのイベントによって表されるプロセスの活動の客体及び活動内容の類似度合いに基づいて算出する。例えば特定部2020は、部分イベント列のi番目のイベントの客体及び内容(i番目のイベント履歴12が示す客体情報及び内容情報)と、第2イベント列のi番目のイベントの客体と活動内容との類似度を算出する。例えば特定部2020は、客体同士の類似度と、活動内容同士の類似度とについて、合計値、乗算値、又は平均値などを算出し、算出した値をイベント同士の類似度とする。
 より具体的な例として、プロセスの活動がシステムコールなどの関数単位で記録されるとする。この場合、イベント履歴12が示すプロセスの活動の客体と内容は、関数の識別情報及びその関数の実行条件(引数の内容など)によって特定される。そこで、イベント履歴12と第2イベント列のいずれもが、イベントを表す情報として、関数の識別情報とその実行条件を含むようにしておく。そして特定部2020は、部分イベント列が示す各関数の識別情報及び実行条件と、第2イベント列が示す各関数の識別情報及び実行条件との類似度を算出する。
 例えば類似度は、0以上1以下の値で定める。そして、比較するイベント同士で、関数の識別情報と実行条件の全てが一致すれば、類似度を1とする。そして、イベント同士で一致する情報が少ないほど、類似度が小さくなるようにする。ただし、関数の識別情報の一致・不一致には、実行条件の一致・不一致よりも大きな重みを与えることが好適である。関数が異なれば処理の内容は大きく異なる一方で、引数などの実行条件が多少違っても処理の内容はあまり変わらないことが多いためである。
 例えば、イベント同士の類似度の最大値1のうち、0.5 は、関数の識別情報の一致・不一致で定める。すなわち、関数の識別情報が一致したら、類似度の値に 0.5 を設定する。そして、この類似度に対し、実行条件の一致度合い(0から0.5の間の値)を加算した値を、イベント同士の類似度とする。
<<動作主体が複数存在するケースについて>>
 前述した様に、イベント履歴列10には、それぞれ異なる動作主体についてのイベント履歴12が含まれることがある。この場合、特定部2020は、イベント履歴列10を前述したグループに分割し、グループごとに第1イベント列14を得て、各第1イベント列14について代替表現20の特定を行う。
<出力情報の出力:S106>
 出力部2040は、代替表現20を含む情報を出力する(S106)。例えば出力部2040は、第1イベント列14から第2イベント履歴列を生成し、第2イベント履歴列を出力する。第2イベント履歴列は、第2イベント履歴を時系列で示す。1つの第2イベント履歴は、第1イベント列14から抽出された1つの部分イベント列について特定された代替表現20を示す。言い換えれば、第2イベント履歴列は、第1イベント列14に含まれるイベント履歴12を第2イベント履歴で置き換えたものである。
 図8は、第2イベント履歴列をテーブル形式で例示する図である。図8のテーブルをテーブル400と呼ぶ。テーブル400は、発生時刻402及び代替表現404という2つの列を有する。
 第2イベント履歴は、複数のイベント履歴12を1つに集約したものであると言える。そのため、対象システムで発生したイベントの履歴を、イベント履歴12に変えて第2イベント履歴で管理することにより、対象システムで発生したイベントの履歴の管理に要する計算機資源(記憶装置に容量など)を少なくすることができる。
 また、第2イベント履歴でイベントの履歴を管理することにより、対象システムの挙動を人が理解しやすくなる。例えば、API の実行に伴って複数のシステムコールが実行されたとする。この場合、各システムコールの名称等を見るよりも、それらのシステムコールを呼び出した API の名称等を見た方が、対象システムの挙動を容易に理解することができる。
 第2イベント履歴の出力先は、例えば記憶装置である。例えば出力部2040は、第1イベント列14ごと(動作主体ごと)に、第2イベント履歴が記録されたログファイルを生成する。すなわち、出力部2040は、1つの第1イベント列14から生成した1つ以上の第2イベント履歴を、発生時刻順にログファイルに記録して、記憶装置に記憶させる。ただし、第2イベント履歴の出力先は、ディスプレイ装置や他の装置(サーバマシンなど)であってもよい。
<辞書データ30の生成方法について>
 辞書データ30は、予め生成して記憶装置に記憶させておく。ここでは、辞書データ30を生成する方法について例示する。辞書データ30の生成は、情報処理装置2000によって行われてもよいし、情報処理装置2000以外の装置によって行われてもよい。以下、辞書データ30の生成を行う装置を、第2情報処理装置3000と呼ぶ。
 第2情報処理装置3000は、テストシステムの挙動の記録を解析することによって、辞書データ30を生成する。テストシステムは、対象システムと同様に、イベント履歴12を記憶装置に記憶させるように構成されている。
 さらに、テストシステムは、代替表現20を利用して表現したい一連のイベントについて、その開始時点を表す情報(以下、開始情報)と、その終了時点を表す情報(以下、終了情報)も、記憶装置に記憶させる。例えば、開始情報と終了情報は、イベント履歴12と共に、ログファイルに記録される。
 例えば、API の実行によって発生する一連のシステムコールの実行を、一連のイベントとして扱いたいとする。この場合、例えばテストシステムは、API 呼び出しをフックし、その API の実行の前で、API に関する情報(識別情報や実行条件)を示す開始情報を記録する。さらにテストシステムは、API の実行の後に、開始情報との対応が分かる態様で、終了情報を記録する。例えば、開始情報と終了情報に同一の識別情報(例えば、ランダム値)を含めることで、開始情報と終了情報との対応を把握することができる。
 ここで、API 呼び出しをフックして、API の実行の前後で所定の処理が実行されるようにする技術には、既存の技術を利用することができる。例えば、フック対象の API について、その API が呼び出された際に代わりに呼び出されるラッパ関数を定義しておく。そして、ラッパ関数は、「開始情報の記録、API の実行、終了情報の記録」という順で処理を行うように実装される。このようなラッパ関数を定義しておけば、API 呼び出しを行うことによって対応するラッパ関数が実行されるため、「開始情報、API の実行に伴って発生する各イベントを表すイベント履歴12、終了情報」という順に情報が記録されるようになる。
 テストシステムの操作者は、テストシステム上で、辞書データ30に含めたい API を呼び出すアプリケーションや OS を実行することで、その API の実行によって発生するイベントの記録を行う。ここで、同一の API であっても、実行条件に応じて実行される処理がそれぞれ異なることがある。そのため、テストシステムでは、同一の API を様々な実行条件で実行し、各実行条件下でイベントの記録を行うことが好ましい。そこで例えば、対象の API を呼び出す種々のアプリケーション(OS 付属のアプリケーションや、対象システムが導入されている組織で標準的に使用されているアプリケーションなど)を複数回実行させて、イベントの記録を行う。なお、アプリケーションや OS に複数のバージョンがある場合、様々なバージョンのアプリケーションや OS を実行させることが好ましい。
 第2情報処理装置3000は、開始情報と終了情報との間に記録された一連のイベントを第2イベント列とする辞書データ30を生成する。例えば前述したように、「開始情報、API の実行によって生じる各イベントについてのイベント履歴12、及び終了情報」という順にログファイルに記録されるとする。この場合、第2情報処理装置3000は、ログファイルを解析することで、開始情報と終了情報のペアを特定する。そして、特定されたペアの開始情報と終了情報の間に記録されている複数のイベント履歴12によって表されるイベント列を第2イベント列とし、開始情報に示されている API に関する情報を代替表現20として、辞書データ30を生成する。代替表現20は、例えば、開始情報に示されているAPI の識別情報及び API の実行条件で表される。
 ここで、対象システムで複数の動作主体が動作する場合、ログファイルには、様々な動作主体の動作によって生じるイベントがインタリーブした状態で記憶されうる。そこで、ログファイルに出力される各情報には、イベントの動作主体が示されるようにしておく。例えばイベント履歴12には、動作主体を示す主体情報が含まれる。また、開始情報にも、イベント履歴12の主体情報に相当する主体情報(プロセスIDやスレッドIDなど)を含めるようにする。第2情報処理装置3000は、開始情報と終了情報のペアを特定したら、開始情報と終了情報の間に記録されているイベント履歴12の中から、開始情報が示す主体情報と一致する主体情報を示すイベント履歴12を抽出する。そして、抽出したイベント履歴12を、開始情報と終了情報で特定される API の実行によって発生するイベントとして特定する。
 以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の組み合わせ、又は上記以外の様々な構成を採用することもできる。
 上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
1. 辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、
 前記特定された代替表現を含む情報を出力する出力部と、を有し、
 前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、情報処理装置。
2. 前記特定部は、
  同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
  前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、1.に記載の情報処理装置。
3. 前記特定部は、
  複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
  前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、2.に記載の情報処理装置。
4. 前記出力部は、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、2.又は3.に記載の情報処理装置。
5. 前記辞書データが示す代替表現は、関数の識別情報を含み、
 前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、1.乃至4.いずれか一つに記載の情報処理装置。
6. 前記関数は API(Application Programming Interface)である、5.に記載の情報処理装置。
7. コンピュータによって実行される制御方法であって、
 辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、
 前記特定された代替表現を含む情報を出力する出力ステップと、を有し、
 前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、制御方法。
8. 前記特定ステップにおいて、
  同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
  前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、7.に記載の制御方法。
9. 前記特定ステップにおいて、
  複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
  前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、8.に記載の制御方法。
10. 前記出力ステップにおいて、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、8.又は9.に記載の制御方法。
11. 前記辞書データが示す代替表現は、関数の識別情報を含み、
 前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、7.乃至10.いずれか一つに記載の制御方法。
12. 前記関数は API(Application Programming Interface)である、11.に記載の制御方法。
13. 7.乃至12.いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。

Claims (13)

  1.  辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、
     前記特定された代替表現を含む情報を出力する出力部と、を有し、
     前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、情報処理装置。
  2.  前記特定部は、
      同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
      前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、請求項1に記載の情報処理装置。
  3.  前記特定部は、
      複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
      前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、請求項2に記載の情報処理装置。
  4.  前記出力部は、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、請求項2又は3に記載の情報処理装置。
  5.  前記辞書データが示す代替表現は、関数の識別情報を含み、
     前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、請求項1乃至4いずれか一項に記載の情報処理装置。
  6.  前記関数は API(Application Programming Interface)である、請求項5に記載の情報処理装置。
  7.  コンピュータによって実行される制御方法であって、
     辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、
     前記特定された代替表現を含む情報を出力する出力ステップと、を有し、
     前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、制御方法。
  8.  前記特定ステップにおいて、
      同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
      前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、請求項7に記載の制御方法。
  9.  前記特定ステップにおいて、
      複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
      前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、請求項8に記載の制御方法。
  10.  前記出力ステップにおいて、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、請求項8又は9に記載の制御方法。
  11.  前記辞書データが示す代替表現は、関数の識別情報を含み、
     前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、請求項7乃至10いずれか一項に記載の制御方法。
  12.  前記関数は API(Application Programming Interface)である、請求項11に記載の制御方法。
  13.  請求項7乃至12いずれか一項に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
PCT/JP2018/036444 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム WO2020065960A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020547832A JP7180681B2 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム
US17/278,371 US11762713B2 (en) 2018-09-28 2018-09-28 Information processing apparatus, control method, and program
PCT/JP2018/036444 WO2020065960A1 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/036444 WO2020065960A1 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
WO2020065960A1 true WO2020065960A1 (ja) 2020-04-02

Family

ID=69952515

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/036444 WO2020065960A1 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム

Country Status (3)

Country Link
US (1) US11762713B2 (ja)
JP (1) JP7180681B2 (ja)
WO (1) WO2020065960A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079817A (ja) * 2013-10-16 2015-04-23 キヤノン株式会社 露光装置
WO2017141589A1 (ja) * 2016-02-17 2017-08-24 日立オートモティブシステムズ株式会社 車両制御装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013065244A (ja) 2011-09-20 2013-04-11 Toshiba Corp 情報処理装置およびログ管理方法
JP6079266B2 (ja) 2013-01-25 2017-02-15 富士通株式会社 制御装置、ログ格納方法及び制御プログラム
US11043298B2 (en) * 2016-07-18 2021-06-22 Abbyy Development Inc. System and method for visual analysis of event sequences
US10942937B2 (en) * 2017-04-14 2021-03-09 Seagate Technology Llc Data mining systems
US10764149B2 (en) * 2018-09-12 2020-09-01 The Mitre Corporation Cyber-physical system evaluation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079817A (ja) * 2013-10-16 2015-04-23 キヤノン株式会社 露光装置
WO2017141589A1 (ja) * 2016-02-17 2017-08-24 日立オートモティブシステムズ株式会社 車両制御装置

Also Published As

Publication number Publication date
US11762713B2 (en) 2023-09-19
US20210357274A1 (en) 2021-11-18
JP7180681B2 (ja) 2022-11-30
JPWO2020065960A1 (ja) 2021-08-30

Similar Documents

Publication Publication Date Title
US20230126005A1 (en) Consistent filtering of machine learning data
US10713589B1 (en) Consistent sort-based record-level shuffling of machine learning data
US10366053B1 (en) Consistent randomized record-level splitting of machine learning data
US11100420B2 (en) Input processing for machine learning
US11182691B1 (en) Category-based sampling of machine learning data
CN108228861B (zh) 用于执行机器学习的特征工程的方法及系统
US11475133B2 (en) Method for machine learning of malicious code detecting model and method for detecting malicious code using the same
JP5939123B2 (ja) 実行制御プログラム、実行制御方法および情報処理装置
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
US11526419B2 (en) Information processing system and information processing method
US11645234B2 (en) Rule-based collections of subset(s) of metadata in response to a trigger event occurring
JP2019204246A (ja) 学習データ作成方法及び学習データ作成装置
CN112035471A (zh) 一种事务处理方法及计算机设备
US10275595B2 (en) System and method for characterizing malware
US11956271B2 (en) Scenario generation device, scenario generation method, and computer readable medium
US9286036B2 (en) Computer-readable recording medium storing program for managing scripts, script management device, and script management method
US20160306972A1 (en) Virus signature matching method and apparatus
WO2020065960A1 (ja) 情報処理装置、制御方法、及びプログラム
US11513884B2 (en) Information processing apparatus, control method, and program for flexibly managing event history
JP2018181121A (ja) 分析装置、分析プログラム及び分析方法
US8775873B2 (en) Data processing apparatus that performs test validation and computer-readable storage medium
JP2013214159A (ja) ログ管理方法、ログ管理システムおよび情報処理装置
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
CN111444194A (zh) 一种块链式账本中索引的清除方法、装置及设备
CN117708094B (zh) 数据处理方法、装置、电子设备和存储介质

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: 18934903

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020547832

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18934903

Country of ref document: EP

Kind code of ref document: A1