{'fraction_non_alphanumeric': 0.034164358264081256, 'fraction_numerical': 0.024007386888273315, 'mean_word_length': 4.956043956043956, '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}}
Anonymous Peer-to-Peer Systems

The first major P2P system, Napster (Taylor, 2004), was introduced in 1999. Since then, P2P systems have evolved very rapidly. The first generation of P2P systems, represented by Napster, used a centralized index server to provide peer and resource discovery. This design makes the systems vulnerable to attacks on the central server. The second-generation P2P systems, such as Gnutella, avoided such problems by adopting a fully decentralized design (Taylor, 2004). However, these systems do not provide anonymity to their users, in that a resource owner is exposed to its requester, and vice versa. A user’s activities are also easily observable by the neighboring nodes. The privacy concerns triggered the development of the third generation of P2P systems (Rossi, 2006; Rohrer, 2006). These systems followed a variety of strategies to achieve anonymity, which will be discussed in detail in this article. Even though most of such systems are in the early development phase, we believe they will soon take over the second generation of P2P systems.