{'fraction_non_alphanumeric': 0.016581632653061226, 'fraction_numerical': 0.002551020408163265, 'mean_word_length': 5.648305084745763, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Design and Implementation of a String Matching System for Network Intrusion Detection using FPGA-based low power multiple-hashing Bloom Filters

Modern Network Intrusion Detection Systems (NIDS) inspect the network packet payload to check if it conforms to the security policies of the given network. This process, often referred to as deep packet inspection, involves detection of predefined signature strings or keywords starting at an arbitrary location in the payload. String matching is a computationally intensive task and can become a potential bottleneck without high-speed processing. Since the conventional software-implemented string matching algorithms have not kept pace with the increasing network speeds, special purpose hardware, Field Programmable Gate Arrays (FPGAs), have been introduced. A Bloom filter is a simple spaceefficient randomized data structure for representing a set in order to support string matching of Network Intrusion Detection System (NIDS). Bloom filters allow false positives but the space savings often outweigh this drawback when the probability of an error is controlled. FPGAs have achieved sufficient capability to performing complex network processing in programmable hardware. Network devices utilizing FPGAs show a desirable balance between performance and flexibility, which makes FPGA preferable to pure software and ASIC solutions. We present an implementation of low power multiple hashing bloom filter using FPGAs. We describe how multiple hashing Bloom filters can be implemented feasibly on Xilinx XCV2000E FPGA.