Patent Description:
One field that is the most threatening today to privacy is digital advertising, which has almost unlimited access to personal data. Targeted online advertising, also known as online behavioral advertising, has become commonplace for almost every website, search engine, social media platform, webmail program, etc. It has gotten to the point that most people do not even notice the advertisements lining the banners or ad boxes in their web browsers or mobile applications. Many people just assume its normal for a web browser to review their browsing history and thereafter display advertisements related to the websites visited or products purchased. For example, after visiting the website of Lacoste®, many web banners on subsequent webpages (such as new websites) display banner ads or video box ads for Lacoste® products.

However, every so often, there is an advertisement that stands out. The advertisement stands out not because the content is offensive or the message is compelling. Instead, the advertisement stands out because it represents a violation of personal privacy. The advertisement may reflect, for example, something that was written in a personal email message, communicated via a text message, posted to a private social media account, or bought in a store using a loyalty card. Other than analyzing that very personal content, there is no way a company or server would know to place that particular advertisement.

In an example, an individual writes a social media message to their significant other expressing an interest in vacationing in Bonaire during the last week in June. Up to that point, the individual never visited a travel site related to Bonaire or even looked up Bonaire on a map. And indeed, Bonaire is not a relatively popular travel destination. However, shortly after sending the email, the individual's web browser provides banner ads and video ads for Bonaire, with text about room specials for the last week in June. Worse yet, the individual's web browser displays advertisements for neighboring islands including Aruba and Curacao.

In more embarrassing examples, an individual may discuss prospects of a divorce or a medical issue through social media. Afterwards, the individual or another user of the individual's computer may later find advertisements in banner ads for divorce lawyers or the medical issue. Even seemingly deeply private conversations are at the mercy of monetization in today's environment.

As mentioned above, personal data is also prone to abuse outside of the advertising space. For instance, personal data collected from polls, IoT connected devices, medical/fitness devices, and facial recognition sensors is generally not protected during collection or transmission. Moreover, the personal data may be made available to data processors such as information society service companies or advertisers that collect and analyze data from their users/clients. The personal data may further be made available to third-parties, such as data brokers, cloud providers, or advertising technological companies that provide data analytics, advertisements placement, and/or bidding technologies or services. The personal data is made available to all of these entities regardless of any data protection safeguards implemented by a hosting site. Oftentimes, people are not even aware their personal data is being collected, shared with a multitude of companies, and monetized.

Needless to say, an increasing number of people are becoming weary regarding how their personal data is being used outside their control. Many companies, especially in the United States, have virtually disregarded privacy of personal data in return for profits generated by advertising revenue. Very recently, Facebook® came under fire for permitting unauthorized use of its member's personal data for borderline illegal election influence. To improve the protection of personal data, the European Union implemented the General Data Protection Regulation ("GDPR"). However, the GDPR only applies to Europe and requires that companies follow the regulations. Other countries have also started implementing GDPR-inspired regulations such as the California Consumer Privacy Act ("CCPA"). However, as the industry has seen, despite compliance, there is a likely possibility that breaches and misuse of personal data will continue to occur.

A solution to protect an individual's private data is to encrypt the data. For example, messages between individuals can be encrypted while in transit. In addition, web browsing content, website content, or social media content can be encrypted while stored. However, encryption of data prevents analytics from being performed on the data by third-parties or by data controllers themselves. As a result, targeted advertisements cannot be placed using encrypted personal data, thereby significantly reducing the value of online advertisements and making encryption unpractical and used as little as possible at the expense of individuals' privacy.

The absence of personal data significantly reduces the revenue stream of most online providers, thereby threatening the historically "free and independent" Intemet model and taking away powerful technologies for companies to efficiently promote their products/services. If personal data cannot be monetized, online providers will have to turn to other sources of revenue, such as subscriptions and fees to access even the most basic content or providing different tiers of data transmission rates based on fees. As one can imagine, online content providers, search engine providers, social media providers, online advertisers, etc. are resistant to encrypting data permanently to preserve advertisement revenue streams instead of forcing users to pay directly.

<CIT> relates to a system for enforcing centralized privacy controls in de-centralized systems. The system comprises a communication interface for sending data over a network. The system further comprises a memory having, stored therein, computer program code and one or more distributed ledgers capable of recording data records. The system further comprises one or more processing units operatively coupled to the memory and configured to execute instructions in the computer program code. The computer program code causes the processing units to obtain data from a first user pertaining to a first data subject. The computer program code further causes the processing units to generate a first dynamically-changing, temporally unique identifier (DDID) for the first data subject, wherein the first DDID is configured to replace a first value related to the first data subject. The computer program code further causes the processing units to store the first DDID in a first element of a first one of the one or more distributed ledgers, and to receive, over the network, a first request from a first requesting party for the first value related to the first data subject.

<CIT> relates to a method for the anonymisation of data that could help identify the user while a profile of said user is collected by a targeting data collection server. To implement such anonymisation, an anonymisation server is placed between a user terminal and the collections server. The profile data collected are encrypted by the terminal using a secret key shared with the data collection server. Those profile data supplemented with data that could help identify the user are then sent to the anonymisation server. The anonymisation server encrypts the data that could help identify the user with an anonymisation key of said anonymisation server before sending on the encrypted collected data and the anonymised identification data to said collection server.

<CIT> relates to techniques for generation and use of an online and offline integrated profile for a person, for use in advertisement targeting. The integrated profile may be generated based at least in part on obtained historical offline and online consumer-related behavior information relating to the person. Online or offline advertisements are then targeted to the person based at least in part on the profile. Use and association of online and offline unique identifiers for the person can allow sharing of targeting information between online and offline entities while maintaining a degree of privacy with regard to the person.

In a first aspect of the invention, a cryptographic anonymization system is provided, as defined by independent claim <NUM>. In a second aspect of the invention, a cryptographic anonymization method is provided, as defined by independent claim <NUM>.

The present disclosure is directed to a system, method, and apparatus that provide an innovative equilibrium between the imperious need for companies to be able to collect, process, and benefit from targeted advertising technologies and the essential protection of individuals' privacy and personal data. The system, method, and apparatus disclosed herein are configured to use one or more algorithms or computational models to enable one or more participants of a personalized advertising chain to anonymously determine a user's preferences (or otherwise provide secured personal data analysis) by analyzing encrypted personal data. The system, method, and apparatus provide an innovative equilibrium between the imperious need for companies to be able to collect, process, and benefit from targeted advertising technologies and the essential protection of individuals' privacy and personal data. The example system, method, and apparatus receive a user's browsing history, online navigation information, geolocation data, transaction data, personal identifiers, and other usage information (or personal data) in an encrypted format. Instead of decrypting the information, the example system, method, and apparatus compare the encrypted information to one or more rules related to user segmentation and/or categorization. The analysis of the encrypted information is used to assign a user identifier to one or more categories or segments associated with web browsing/navigation, application usage, and/or other personal data. A third-party server may access the categories and/or segments to obtain the assigned user identifiers to determine which users should be provided a particular advertisement (or other content) and/or whether a particular user is included in a category or profile (e.g., a collection of categories) to provide targeted advertisements or other content placement. The system, method, and apparatus may enable the placement of anonymously delivered targeted advertisements.

The example system, method, and apparatus acquire a user's browsing history and other related usage data according to categories or segments, which may be hierarchal. The system, method, and apparatus use one or more rules that define criteria for categories or segments. Based on the rules, the example system, method, and apparatus determine categories that correspond to content a user is viewing and create an instance or count for those categories. The system, method, and apparatus protect a user's identity by encrypting the instance/count and/or the category identifier before transmission across a network. The example system, method, and apparatus analyze the encrypted instances/counts and/or category/segment identifiers to create or update a user vector across available categories/segments. The data is then made available to a third-party by adding or updating an identifier of the user for one or more categories/segments. A third-party and/or the system, method, and apparatus may create a category/segment profile by combining categories or segments that correspond to a particular targeted-content goal. Accordingly, third-parties do not have access to a user's profile (only user terminals and/or a secure server has a key for user-encrypted data). Instead, third-parties are provided access to categories/segments and a list of users associated with those categories/segments (e.g., profiles). In some embodiments, the example system, method, and apparatus may only provide, to a third-party, identifiers of users for requested (permitted) categories/segments or profiles to prevent the third-parties from reconstructing a user's individual profile. However, the example system, method, and apparatus may provide third-party data processors with category information to create specific content profiles relevant to the particular third-party data processor.

The example system, method, and apparatus are configured to use homomorphic encryption on a user's browsing, purchasing, and/or commerce information. The use of homomorphic encryption enables patterns or trends (indicative of a user's preferences) to be identified using one or more category rules. The example system, method, and apparatus use encryption to secure and anonymize a user's information (including geolocation information), thereby preventing any party from intercepting, processing, accessing, and analyzing the information in plaintext. Further, the example system, method, and apparatus anonymize a user's information by only providing patterns, trends, etc. for a particular set of categories (related to dynamic identifiers) to a third-party rather than a user's personal information. Thus, third-parties select advertisements or other content for placement based on generalized categorical profile information for groups of users with similar browsing, purchasing, or commerce histories rather than based on an identity or personal profile of the user. Accordingly, the example system, method, and apparatus maintain targeted advertising revenue streams for online content and service providers through efficient processes that enable advertisers to promote their products/services while anonymizing and protecting a user's personal information.

In light of the present disclosure and the above aspects, it is therefore an advantage of the present disclosure to provide a system that provides for the protection of user information for serving advertisements.

It is another advantage of the present disclosure to perform calculations on encrypted user information without decrypting the user information for determining which targeted advertisements should be served.

It is a further advantage of the present disclosure to merge different sources of user information from one or more encrypted data sources and perform secured multi-party calculations on the merged encrypted user information without decrypting the user information for determining which targeted advertisements should be served.

It is yet another advantage of the present disclosure to prevent a user's information from being reconstructed for identification of a user.

The advantages discussed herein may be found in one, or some, and perhaps not all of the embodiments disclosed herein. Additional features and advantages are described herein, and will be apparent from, the following Detailed Description and the figures.

The present disclosure relates in general to a method, system, and apparatus configured to use homomorphic encryption to provide anonymized user information to a third-party server to enable content to be selected and served to a user terminal (e.g., digital advertisement placement). The method, system, and apparatus disclosed herein receives an encrypted input in the form of user information, which is processed and anonymized in an encrypted format. The method, system, and apparatus process the encrypted user information, without decrypting, to determine categories/segments of content viewed, interacted with, and/or created by a user in a web page or application. The categories are determined, in some embodiments, using one or more rules that specify content conditions for the categories/segments. Identifiers of the users are assigned to categories/segments that are determined from an analysis of the users' encrypted information, which is indicative of their web browsing/application use. Third-party servers may request lists of user identifiers for certain categories/segments to create profiles of groups of similar users to identify whether a particular advertisement or other content should be served to a user and/or to identify advertisements or other content that relates to a user's information including past browsing or navigation experience. As disclosed herein, a user's past browsing may include data indicative of previously viewed advertisements or media content. In addition, a user's information may include user preferences, transaction data, credit card or payment information, geolocation data, offline purchases, commerce information, IoT/navigation related data, electrical grid balance information, polling data, political data, medical diagnosis/recommendation, facial recognition feedback, etc..

As disclosed herein, a user's web browsing history or application usage includes one or more categories or segments of content, products, prices, product selections, product purchases, etc. The categories or segments may be organized in a hierarchical structure. In some embodiments, the categories are relatively granular, such as a category for women's shoes, a webpage related to professional baseball information, socio-professional general information, or a travel application in which a user searched for tropical islands. In other embodiments, the categories or segments are more precise. For example, a category for a webpage related to shoe purchases may be categorized as shoes→sport shoes →women → price [<NUM>, <NUM>]. In other examples, the categories or segments may indicate a professional baseball team or specific islands searched in the South-Pacific.

As described in more detail below, the categories and/or segments are defined by or relate to one or more rules. The rules are configured to define how content on a webpage or application is determined to be related to one or more categories. The rules may also define a count or incremental value that is associated with a matching category to enable the reporting of a user's browsing or navigation history. In other words, the rules specify how webpage or application information is translated into a snapshot of a user's browsing or navigation behavior without containing a user's personal information. In some embodiments, the rules may be replaced or used in conjunction with other data classification methods, such as neural networks, supervised classification, unsupervised classification, graph databases, etc..

Reference is made to data anonymization. As discussed throughout, data anonymization refers to an irreversible process that de-personalizes data related to an individual user and makes the data permanently untraceable by any party. In some instances, the data for individual users cannot even be re-identified by a homomorphic encryption processor that provides the example system, method, and apparatus disclosed herein. In the described method, system, and apparatus, a user's data is encrypted end-to-end and analyzed by one or more participants using homomorphic encryption. The analysis based on homomorphic encryption enables user data to be analyzed, visualized, and organized at the individual-level, while preventing the personal data to be decipherable, therefore keeping personal data anonymized and secure at all times. Decryption keys are not provided, and need not be created, because the data is not decrypted by the example method, system, and apparatus or third-party servers.

Reference is made herein to digital advertisement placement. Digital advertisements may include static images, video, audio, animated graphics interchange formatted ("GIF") content, text, etc. Digital advertisements are configured to be presented within a banner or in-text advertisement space in a web browser on a webpage. Digital advertisements may also be configured for presentation within an application. Some digital advertisements may be displayed as a pop-up window or overlaid on webpage content. Further, some digital advertisements may be presented as search results for a search engine. In addition to online environments, digital advertisements may be included within streaming content, television broadcast programming, and/or radio programming.

The example method, system, and apparatus disclosed herein may also be configured to facilitate the placement of other content. For instance, third-party providers may determine user preferences for products, services, or experiences based on the relevant categories in which a user is assigned. Third-party providers may also determine what a user likes or hates (based on the category information) for communicating this information to other users or content/service providers.

The example method, system, and apparatus may also be used for secure personal data analysis of non-advertising related data. For example, the method, system, and apparatus disclosed herein may analyze categorized or segmented encrypted personal data from polls, medical/fitness trackers, IoT devices, and/or facial recognition sensors. The analysis is secure since it is conducted over homomorphic encrypted data and reduced to pre-defined categories or segments. Results from the analysis may be used to provide a personalized service, secure result, and/or feedback. For instance, the method, system, and apparatus may use encrypted facial recognition information to provide user verification or entry control. In another example, encrypted medical or fitness information may be used for providing health recommendations or feedback. In yet another example, encrypted IoT data may be securely analyzed to schedule certain events (such as appliance repair, food ordering, etc.) or provide context-relevant messages to a user.

Reference is further made to homomorphic encryption. As disclosed herein, homomorphic encryption is a form of encryption that permits computation on ciphertexts. The computation generates an encrypted result which, when decrypted, matches or at least closely resembles the result of the computations as if they had been performed on plaintext. The purpose of homomorphic encryption herein is to enable computation (e.g., mathematic operators) on encrypted data, such as category information. In some embodiments, the example system, method, and apparatus disclosed herein may support arbitrary computation on ciphertexts, which is known as fully homomorphic encryption ("FHE").

The example system, method, and apparatus are configured to protect user's personal information while enabling the user to receive personalized and relevant advertising or other directed content. Such a configuration offers the advertisement industry and information society industry an unprecedented OBA ("Online Behavioral Advertising") ethical solution while preserving the "free internet" model based on the activation and monetization of users' personal information.

In some embodiments, the example method, apparatus, and system disclosed herein include an application installed on a user device or terminal that collects a user's browsing/navigation information or application use based on categorization. The example method, apparatus, and system disclosed herein may also collect a user's geolocation data. The application may conduct a pre-processing routine on the collected data to anonymize the data, thereby making the re-identification from the pre-processed data impossible without a personal identifier. The data handled by the example method, apparatus, and system (and third-parties) may no longer include the pages visited or the precise actions performed on a website (such as ones collected by cookies), but rather an aggregation of categories related to a user's browsing/navigation/application use (e.g., a glazed cookie). In some embodiments, at least some categories with no information may also be sent with an encrypted null or zero value (in addition to categories with a count or indication of at least a value of '<NUM>'), making it increasingly more difficult to reconstruct a user's profile from transmitted encrypted data and preserve anonymity. Further, in some embodiments, the categories themselves may also be encrypted, thereby further protecting user information.

The example system, methods, and apparatus described herein accordingly provide a "zero-knowledge" advertising system based on homomorphic encryption of categorical data related to a user's browsing activity, navigation, and/or application usage. The example system, methods, and apparatus disclosed herein enable online advertising players, from editors to advertisers and/or data processors, to continue benefiting from user online/offline behavioral advertising activities while at the same time guaranteeing a high level of individual privacy and data protection through data anonymization. The example system, methods, and apparatus provide compliance with the highest standards of legal personal data protection while still enabling monetization of user information, thereby protecting the free and independent Internet model for users and allowing innovative OBA technologies to efficiently promote advertisers' products and/or services.

<FIG> shows an example content serving system <NUM> in which a user's encrypted use information is determined and used for targeted advertising, according to an example embodiment of the present disclosure. The example system <NUM> is configured to permit OBA with a high level of data protection without compromising the privacy of users. The example system <NUM> ensures that the processing of user personal information along with their IP address are never accessible as a result of homomorphic encryption and zero-knowledge advertisement processing. Additionally, the system <NUM> ensures that no party can access non-encrypted personal information. While ensuring personal data protection, the example system <NUM> provides for categorization of user browsing behavior, navigation information, purchasing and commercial online/offline information, and/or application usage (i.e., user information). Targeted group profiles may be created from the categorized information and linked or referenced to certain advertisement targets, campaigns, and/or advertisements themselves. Thus, when a user identifier is later received from web browsing or application usage, the system <NUM> can identify one or more advertisements to serve to the user by matching a user's unique identifier to their identifier contained within one or more profiles.

The example system <NUM> is illustrated as operating in a supply-side platform ("SSP") in which a SSP provider <NUM> provides advertisements and other targeted content to one or more content providers <NUM> and/or service providers <NUM> (e.g., content publishers). In other embodiments, the system <NUM> may additionally or alternatively operate in a demand-side platform ("DSP") or a combination of a SSP and DSP. Moreover, in some embodiments, the system <NUM> is configured for a walled garden and/or header bidder framework. In the SSP configuration, the providers <NUM> and <NUM> use the SSP provider <NUM> to activate data from users and monetize the available inventories through OBA. For example, the content provider <NUM> and/or the service provider <NUM> have designated spaces on hosted websites, applications, social media platforms, etc. for advertisements. Normally, the providers <NUM> and <NUM> collect a user's information, which is transmitted to the SSP provider <NUM>. The SSP provider <NUM> in turn analyzes the user information, uses the user information to create a request for a proposal to valorize inventories on an ad exchange, selects the advertisements of the highest bidders, and identifies one or more targeted advertisements, which are then transmitted to the providers <NUM> and/or <NUM> to display in conjunction with their content to the users. In some embodiments, the providers <NUM> and <NUM> and/or the SSP provider <NUM> may also use user information from one or several third-parties (such as data brokers) to further complete a user's profile for selecting an advertisement.

In contrast to known systems, the example system <NUM> of <FIG> includes a management server <NUM> that is configured as a secured proxy between the providers <NUM> and <NUM> and the SSP provider <NUM>. The system <NUM> also includes a data processor <NUM> that analyzes encrypted user information (received from one or more user terminals <NUM>) using one or more crypto-calculations to create a user vector that relates a user's online or application usage to one or more pre-defined categories. The data processor <NUM> may use one or more application programming interfaces ("APIs") that perform the calculations on the encrypted data. The management server <NUM> is configured to remove and/or encrypt any user-identifying information, such as IP addresses, MAC addresses, etc. such that the encrypted information is associated with a unique user identifier (e.g., an identification anonymization process). The data processor <NUM> is configured to compile or otherwise aggregate a list of users by their identifiers for each category (and/or subcategories). In some embodiments, the data processor <NUM> creates one or more profiles of combined categories. The profiles contain lists of user identifiers that share common online usage or application usage, and are used by the example system <NUM> for selecting designated advertisements for a particular profile.

In some examples, the profiles may also be created by one or more data processors <NUM>. The data processor <NUM> may host be hosted or operated by, or otherwise have a relationship with the content provider <NUM> and/or the service provider <NUM>. The data processor <NUM> is configured to create profiles based on content viewed or application usages by users through the related provider <NUM> and/or <NUM>. In other words, the data processor <NUM> is configured to provide data analytics of anonymous user data to optimize targeted advertising space or other targeted content and/or services. The data processor <NUM> is configured to transit the profile to the DSP provider <NUM> (and/or SSP provider), which uses the profile for selecting an advertisement to serve when a matching identifier is received at a later time during bidding operations when a user is browsing or otherwise using a website or application related to the data provider <NUM>.

As described above, the SSP provider <NUM> (and/or DSP provider) is configured to transmit an advertisement for display. To further anonymize the process, the SSP provider <NUM> (and/or DSP provider) may encrypt an advertisement and transmit the advertisement to the management server <NUM>, which routes the advertisement to the user's terminal <NUM> and/or the providers <NUM> and <NUM> for display on a webpage or other content provided by the providers <NUM> and <NUM>. In some alternative embodiments, the selected advertisement may be sent directly to the user terminal <NUM> and/or provided on the application/webpages of the providers <NUM> and <NUM>, using an IP or other destination address securely and temporarily held available during the bidding process by the management server <NUM>.

In the illustrated example, a user terminal <NUM> is communicatively coupled to one or more of the content provider <NUM>, the service provider <NUM>, the management server <NUM>, the data processor <NUM>, and the SSP provider <NUM> via a network <NUM>. The user terminal <NUM> may include a smartphone, cellular phone, tablet computer, smart-eyewear, smartwatch, virtual-reality headset, laptop computer, desktop computer, connected television, ,workstation, smart device, etc. While <FIG> shows a single user terminal <NUM>, it should be appreciated that the system <NUM> may include a plurality of user terminals <NUM> connected to the network <NUM>. The network <NUM> may include any wide area network (e.g., the Internet), local area network, cellular network, or combinations thereof. The user terminal <NUM> includes a processor and a memory storing instructions for operating a web browser or application for accessing webpages or services from one or more of the content providers <NUM>. The processor and memory of the user terminal <NUM> also operate in conjunction for executing one or more application that access content from the content provider <NUM> and/or the service provider <NUM>. Applications may include news forums applications, e-commerce applications, audio streaming applications, games, movie/television show streaming applications, social media applications, messaging applications, personal finance and payment applications, etc..

In some embodiments, the example user terminal <NUM> also includes a data collection application <NUM>, which may be operated by the providers <NUM> and/or <NUM>. In other instances, the providers <NUM> and <NUM> collect user information from another data source and transform personal identifiers of users and associated collected user information into dynamic identifiers and encrypted data. These other instances may render moot the use of the application <NUM>. The providers <NUM> and <NUM> may use the data processor <NUM> as, for example, a data management platform ("DMP") for collecting and processing online data. The providers <NUM> and <NUM> may transmit an identifier of a user and collected information to the management server <NUM>. In some instances, the providers <NUM> and <NUM> may include the application <NUM> for encrypting both user (usage) information and identifiers.

<FIG> also shows a customer relationship management ("CRM") server <NUM> that is configured to collect offline data related to users. The offline data may include data related to purchases of items and/or services in physical retail locations. The CRM server <NUM> may transmit collected data and user identifiers for encryption at the management server <NUM>. In other instances, the CRM server <NUM> may include the application <NUM> for encrypting the collected information and/or user identifiers.

In an example, a user makes a purchase at a retail location. Information related to the purchase is transmitted to the CRM server <NUM>. The information may include an identifier of the user, such as an email address and/or a phone number. The CRM server <NUM> transmits the collected user information to the management server <NUM>. The CRM server <NUM> also transmits the email address and/or phone number. The management server <NUM> and/or a DMP references the email address and/or the phone number to other encrypted identifiers that are associated with a user's online presence (i.e., data onboarding). For example, the user's email address may be indexed to an encrypted identifier, which enables comparison to an email address provided in association with an offline purchase. After the association, the encrypted user information may be processed by the management server <NUM> and/or the data processor <NUM> for classification and/or assigning the encrypted user identifier (and/or the encrypted email address) to one or more sections or labels such that the user's offline purchases are also considered.

In some embodiments, the CRM server and/or the providers <NUM>/<NUM> may be associated with (i) a customer data platform ("CDP") used to unify online and offline user/customer information, and/or (ii) an existing user database. The unified user information may be encrypted in addition to one or more identifiers for transmission to the management server <NUM>, which encrypts the one or more identifiers. Alternatively, the management server <NUM> encrypts the user information and the identifier that is received from the CDP.

The example data collection application <NUM> operates based on one or more instructions stored in a memory of the user terminal <NUM>, and is configured to collect a user's information. In some embodiments, the application <NUM> may be embedded or configured as a plug-in (e.g., a software development kit ("SDK") or a JavaScript code) into a web browser (or specific application) operating on the user terminal <NUM>. In other embodiments, the application <NUM> may be a stand-alone application <NUM> configured to monitor web usage in addition to usage of third-party content applications. The data collection application <NUM> encrypts certain usage information and transmits the encrypted information to the management server <NUM>. To collect a user's information, the application <NUM> is configured to read HyperText Markup Language ("HTML") and/or Cascading Style Sheets ("CSS") code. The tags may identify categories of information displayed by a webpage, such as a category of a product or descriptors of a webpage. The collection application <NUM> may also collect information regarding specific links selected by a user, for example, to a particular product and/or whether a user started/completed a checkout for one or more products or any interaction with services delivered by the application <NUM> or another application on the user terminal <NUM>. The tags of the visited pages are combined with metadata, such as timestamps, into a history file or data structure. When an advertisement is requested, the application <NUM> may be configured to transmit contextual tags used in a bid request/request proposal to enable an advertisement to be served based on a webpage that is currently visited and/or a format of the inventory requesting an advertisement.

In some examples, the application <NUM> may also record a user's engagement with advertisements. The engagement may include selecting an ad, watching an ad, purchasing a product provided by an ad, etc. The application <NUM> may encrypt data related to an ad's performance and send the encrypted data to the management server <NUM>, which routes it to the DSP and/or the SSP <NUM> and/or the providers <NUM>/<NUM> to improve or refine crypto-calculation models for the user targeting (or group of users).

In some examples, the application <NUM> is configured to apply category rules to the collected information. The application <NUM> may create, for example, a taxonomy for the user for each pre-defined category. The taxonomy may be specified in a vector or a sparse vector, which is encrypted and transmitted to the management server <NUM> and/or the data processor <NUM>. The application <NUM> may be configured to add noise in the form of null or zero-value vectors for a sparse vector to make it more difficult for a party to determine categories associated with the user.

<FIG> shows an example diagram of the system <NUM> of <FIG> for group profile creation and advertisement serving, according to an example embodiment of the present disclosure. In the illustrated example, the application <NUM> (e.g., an SDK or JavaScript code) is installed on the terminal <NUM> via a webpage, app store, and/or the management server <NUM>. In other examples, the application <NUM> may be installed from a webpage hosted by the provider <NUM>/<NUM> or another application installed on the terminal <NUM>. In these other example, the application <NUM> may be a plug-in software application. The application <NUM> is assigned a unique identifier <NUM> for the user (e.g., the terminal <NUM>). The application <NUM> may also assign a unique or dynamic identifier to the user and/or the terminal <NUM>.

The application <NUM> installs a cookie (e.g., a glazed cookie that may call a secure and anonymizing server, such as the management server <NUM>) that uses javascript code (or similar code) or SDK (e.g., a glazed SDK that calls a secure and anonymizing server, such as the management server <NUM>) to collect user browser/navigation and/or application usage information. The collected information may include tags and/or metadata from visited webpages. In an embodiment, the application <NUM> transmits identifier <NUM> and encrypts and transmits the collected information, shown as information <NUM>, to the management server <NUM>, which encrypts the identifier <NUM>. The data processor <NUM>, in communication with the management server <NUM>, applies rules or other data classification routines to the encrypted collected information to create a vector or sparse vector for the encrypted identifier <NUM>.

In some embodiments, the management server <NUM> is configured to re-encrypt or trans-cipher the information <NUM> to homomorphic encryption without having to decrypt the data. In other embodiments, the application <NUM> may use a different key for each instance of information <NUM> transmitted or each web browsing session or webpage visited. The use of different keys at the terminal <NUM> by the application <NUM> prevents a third-party from being able to identify an origination or contents of the information <NUM>. The encrypted information accordingly comprises alphanumerical encrypted data related to a vector that is indicative of a user's browsing or application usage. The application <NUM> transmits the identifier <NUM> in conjunction with the encrypted information to identify a source of the encrypted information.

In the illustrated example, the management server <NUM> is configured to remove or otherwise delete IP addresses or any other personal identifier that is received with the identifier <NUM> and/or the information <NUM>. In some embodiments, the identifier <NUM> may not be transmitted with the information <NUM>. Instead, the management server <NUM> deletes and replaces the IP address (or other identifying information that is transmitted with the information <NUM>) with the identifier <NUM>.

The management server <NUM> provides the data processor <NUM> with the encrypted information <NUM> and the identifier <NUM>. The data processor <NUM> manages a data management platform ("DMP"), which is similar to a customer relationship manager, but for online user/customer data. The data processor <NUM> uses the DMP to organize the encrypted data for customization or marketing purposes. Specifically, the data processor <NUM> is configured to apply one or more rules, queries, (e.g., rules/queries that define an API), or other classification algorithms to the encrypted data using, for example, homomorphic calculations. The rules and queries define criteria for different categories. For example, the rules may specify keyword or tags that are referenced to a certain category. In an example, the data processor <NUM> may match encrypted keywords or tags of a webpage showing women's sports shoes with prices between $<NUM> and $<NUM> to a category for shoes-sports shoes →women → price [<NUM>, <NUM>]. Once a match to a category is made, the example data processor <NUM> is configured to increment a value for this category within an encrypted vector (associated with the identifier <NUM> for the user) at a coordinate or point that corresponds to the matching category.

In another example, a user uses a terminal <NUM> to visit a webpage for travel to Hawaii for seven days and view a hotel website with a rate of $<NUM> per night. Depending on the category organization, the example application <NUM> encrypts information related to Hawaii, seven day duration, and $<NUM> per night price. The application <NUM> may include categories or labels with the encrypted information. In some examples, the application <NUM> may use javascript tags for the encrypted information and/or labels. The data processor <NUM> is configured to use the labels and rules to increment values in a vector corresponding to a Hawaii travel destination subcategory (or more generally a travel subcategory), a $<NUM> price per night subcategory (or price range), and a <NUM> day duration subcategory (or day range).

In instances where the application <NUM> applies the rules or queries locally in the user terminal <NUM>, the data processor <NUM> analyzes the vector to determine which values within a managed user vector are to be incremented or otherwise modified. The results from updating the vector cause a taxonomy to be updated for the user of the terminal <NUM> for each pre-defined category that is indicative of a user's web browsing activity. In other words, the application <NUM> at the terminal <NUM> creates the encrypted vectors, where each coordinate is individually encrypted or the coordinates are encrypted together.

After a vector is created and/or updated for the identifier <NUM> of <FIG>, the data processor <NUM> reverses the data. Instead of providing vectors for each identifier, the data processor <NUM> creates a list of identifiers for each category specified by the vectors. The data processor <NUM> may transmit the categories and identifiers, as information <NUM> to a DSP <NUM>. In other instances, the data processor <NUM> creates a profile by creating groups of users by combining one or more related categories or selecting users that are contained within one or more categories. For example, a profile may be created for women's sports shoes and athletic wear that would contain identifiers of users that visited both, sports shoe webpages and athletic wear webpages. The profile is transmitted by the data processor <NUM> as the information <NUM> shown in <FIG>. In some embodiments, the data processor <NUM> may create profiles for certain dates/times or ranges of dates/times from when encrypted information is received (or timestamped).

In the illustrated example, the DSP <NUM> uses the information <NUM> to create one or more advertising campaigns or targets <NUM>. The DSP <NUM> is configured to run an online advertising campaign for advertisers. The DSP <NUM> is accordingly configured to purchase through real-time bidding, inventories of advertisement space from SSPs, which manage online editors and inventories for advertisement placement within the content provided by the providers <NUM> and/or <NUM>.

<FIG> shows a diagram that is illustrative of the advertisement campaign <NUM> of <FIG>, according to an example embodiment of the present disclosure. In this embodiment, the campaign <NUM> includes an aggregation of, for example, three categories and their corresponding list of encrypted user identifiers. For example, Category <NUM> comprises first list of user identifiers and a Category <NUM> comprises a second list of user identifiers. The campaign <NUM> also includes advertisements selected for the campaign by the DSP <NUM>, and may include one or more default advertisements if a user identifier cannot be matched for serving. The campaign may specify that a first advertisement or a second advertisement may be selected for user identifiers that correspond to Category <NUM>. In other examples, the campaign <NUM> may comprise a list of user identifiers that are present within each of a number of specified categories or a combination of aggregation and overlap of user identifiers.

Returning to <FIG>, the illustration also shows a process flow for serving an advertisement to the user terminal <NUM>. When a user visits a webpage or uses an application, the application <NUM> transmits bid request contextual information and the identifier <NUM> to the management server <NUM>. The management server <NUM> encrypts the identifier <NUM> and filters the bid request information (limit precision of geolocation data and remove personal information). The management server <NUM> then transmits the filtered bid request contextual information and the encrypted identifier <NUM> to the SSP <NUM>. In other examples, the management server <NUM> encrypts and transmits the identifier <NUM> to a SSP <NUM> that is in charge of monetizing the inventory of the website or application that is being visited by the user. The message from the management server <NUM> with the identifier <NUM> provides an indication that the user needs an advertisement served. The example SSP <NUM> communicates the encrypted identifier <NUM> to the DSP <NUM>. In some embodiments, the DSP <NUM> receives the encrypted identifier <NUM> from the SSP <NUM> and/or the data processor <NUM>. The DSP <NUM> compares the received encrypted identifier <NUM> to the list of encrypted identifiers in, for example, the campaign <NUM> shown in <FIG>. In some embodiments, the DSP <NUM> may manage multiple profiles and/or campaigns and accordingly compare the identifier <NUM> to each of the profiles and/or campaigns. In some embodiments, the data processor <NUM> may maintain a list of identifiers. In these embodiments, the DSP <NUM> may transmit a search or query to the data processor <NUM> regarding a particular label or category. In some examples, the DSP <NUM> receives from the SSP <NUM> an encrypted identifier and checks with a secure matching function if it is included in an encrypted list corresponding to a category.

In some examples, the DSP <NUM> receives from the SSP <NUM> an encrypted identifier <NUM>. The DSP <NUM> checks a secure matching function or operation to determine if the encrypted identifier <NUM> is included within an encrypted list of identifiers corresponding or stored in association with a category. The DSP <NUM> may also select an advertisement <NUM> based on bid request contextual parameters, a history of campaign results, and/or campaign budget and target parameters using algorithms, such as those described above.

As shown in <FIG> and <FIG>, if a match is made, the DSP <NUM> selects one of the advertisements from the campaign <NUM>. The DSP <NUM> may be provisioned to encrypt the selected advertisements, shown as advertisement <NUM>. The DSP <NUM> transmits the encrypted advertisement <NUM> to the SSP <NUM>, which transmits it to the management server <NUM>.

The management server <NUM> is configured to transmit the advertisement <NUM> to the terminal <NUM> for display in the website or application. The management server <NUM> may also be configured to perform visibility checking by receiving feedback from the application <NUM> as to whether the user clicked on the advertisement or purchased a product/service related to the advertisement. The application <NUM> may encrypt the feedback, which is transmitted to the management server <NUM> and/or the data processor <NUM> or DSP <NUM>. If the DSP <NUM> cannot make a match, the DSP <NUM> may transmit a default advertisement and/or not participate in the bidding.

As shown in <FIG> and <FIG>, the user's personal data is anonymized because the data processor <NUM> only manipulates encrypted vectors and the DSP <NUM> has a list of encrypted user identifiers corresponding to categories. The SSP <NUM> only passes encrypted identifiers and (encrypted) advertisements. Both the DSP <NUM> and the SSP <NUM> cannot re-identify the user data because (i) they do not possess the user's key for decryption, (ii) the identifiers are dynamic and encrypted, and (iii) the management server <NUM> encapsulated the advertisement bidding process by not allowing access to IP addresses and is the only point of access for advertisements to the terminal <NUM>.

<FIG> illustrates a diagram showing how rules and categories/sections are used to create encrypted vectors indicative of a user's browsing history/navigation and/or application usage, according to an example embodiment of the present disclosure. In the illustrated example, the application <NUM> at the terminal <NUM> collects information <NUM> related to a user's web browsing, navigation, and/or application usage. The information <NUM> includes keys/values (e.g., tags) related to the webpage or application, including section information. The application <NUM> may determine the section information based on metadata associated with the webpage, information provided by a website host regarding a hierarchy of webpages (including labels), user-selected filtering information, or any other information that is indicative of the text, images, etc. displayed on the webpage/application. After determining the section, the application <NUM> may store the information in a hierarchy based on the section information. The hierarchy may be based on a category hierarchy defined by one or more rules, queries, and/or classification algorithm at the data processor <NUM>. In the illustrated example, the application <NUM> stores webpage section information as "Section=footwear; subsection = trainers; color = white; price = <NUM>".

The information <NUM> may also include, for example, web content such as a uniform resource locator ("URL"), referrer, actions performed, etc. and/or context, such as an operating system of the terminal <NUM>, a web browser type, and/or an IP address assigned to the terminal <NUM>. The information <NUM> may further include a personal identifier, such as a MAC address, a username, dynamic identifier, etc. associated with the user.

The example application <NUM> is configured to encrypt all or at least some of the keys and values of the information <NUM>, as shown in <FIG>. The application may use homomorphic encryption, AES encryption, or any other type of encryption. As illustrated, the application <NUM> encrypts keys along with the associated values for color and price in the section information. The application <NUM> also encrypts "Section", "Subsection", and section information "footwear" and "trainers". In other embodiments, this section information may be unencrypted or all of the information <NUM> may be encrypted.

The information <NUM> is transmitted from the application <NUM> to the management server <NUM>. As discussed above in connection with <FIG>, the management server <NUM> is configured to remove personal identifying information and replace it with a unique or dynamic identifier. The server <NUM> is also configured to ensure the information <NUM> is protected via homomorphic encryption. In an embodiment, the server <NUM> may use trans-cyphering to convert all or at least some of the information <NUM> from AES encryption to homomorphic encryption, except for the personal identifier, which is encrypted with another encrypted scheme. The management server <NUM> may also remove or delete other of the information, as shown in <FIG>, including web content, context, tags, etc. In other examples, the application <NUM> may be configured not to transmit or otherwise acquire the web content, context, etc..

The management server <NUM> transmits or otherwise provides the data processor <NUM> with all or at least some of the information <NUM> that is protected via homomorphic encryption. The data processor <NUM> is configured to apply rules <NUM> (or a classification algorithm) over the encrypted information <NUM> to organize it into information for a vector related to the user. For instance, if a user visited a webpage that is hosted by a shoe retailer, each section or webpage of the website visited by the user is associated by the data processor <NUM> to a category in a taxonomy. The rules <NUM> are associated with one or more sections/labels of the information <NUM>. The rules <NUM> are configured to determine whether a section, label, and/or value are within a predefined range, threshold, and/or match one or more keywords. If a rule is satisfied, a dynamic identifier is added to the list of the corresponding one or more categories. The rules <NUM> may comprise a single label or section, or a combination of labels, sections, and subsections. Each rule may correspond to a category in the taxonomy.

In some embodiments, the taxonomy may be replaced by a functional database structure, such as a structured query language ("SQL") database and/or other database type or combination of database types. In these embodiments, the data processor <NUM> is configured to apply one or more queries on the encrypted usage information to at least one of compare, group, classify, order, or score the encrypted usage information. At least some of the one or more queries may specify an occurrence threshold, a value range, or a label value.

In the illustrated example, the data processor <NUM> determines that the categories of "price_100_200", "visitors", "visitors_shoes" are to be incremented based on values or section information (e.g., price of <NUM> and "section = shoes") matching the defined ranges or matching keywords. The data processor <NUM> uses homomorphic calculations to determine how categories are incremented based on encrypted values, labels, and/or section information. <FIG> includes a data structure <NUM> that illustrates the category taxonomy and how the encrypted values and section information are applied to the individual categories. In some embodiments, the data structure <NUM> is illustrative of a vector data structure <NUM> that stores the same encrypted category information. In some embodiments, the vector data structure <NUM> may store sparse vectors for the users. The sparse vector may identify the coordinates in which a non-zero value is present, and the values of the coordinates. In the illustrated example, the values of the sparse vector and coordinates may be encrypted.

The example data processor <NUM> is configured to reverse the data shown in the vector data structure <NUM>. Instead of storing a vector or profile for each user, the data processor <NUM> stores, for each category, a list of the unique user identifiers that match the category. In some embodiments, the data processor <NUM> may have a threshold for each category to determine if a unique identifier is to be included. For example, the threshold may include an encrypted value of <NUM>, which means, for example, that a user had to perform a certain action (e.g., visit a certain website or view a certain category of products) five different times to warrant being included in the category.

In some examples, the data processor <NUM> is configured to create profiles or user groups, shown as information <NUM>. The profiles correspond to traits or histories for a certain advertisement, group of advertisements, or campaign, as discussed above in connection with <FIG>. The data processor <NUM> may combine one or more categories to create a large user group of unique identifiers. In other examples, the data processor <NUM> may perform a routine, algorithm, etc. on the categories to determine resulting unique identifiers for a profile. The routines or algorithms may specify certain categories in which a user overlaps in conjunction with thresholds or weights.

The example data processor <NUM> is configured to perform look-a-like modeling <NUM>. Additionally or alternatively, the data processor <NUM> may transfer the information <NUM> to the DSP <NUM> to enable the DSP <NUM> to make data queries (as shown as data queries <NUM>) and enable the DSP <NUM> to create its own profiles.

<FIG> shows a diagram illustrative of a procedure <NUM> for purchasing media, according to an example embodiment of the present disclosure. In the illustrated example, at a publisher/client provider <NUM> and <NUM>, a publisher website includes advertising space information within or associated with a bid request, which routed to the management server <NUM> for de-identification. The management server also encrypts and/or makes a personal identifier dynamic. The encrypted identifier and then provided to the SSP <NUM>. As discussed above, the SSP <NUM> is a supply-side platform used to sell advertising in an automated fashion. The SSP <NUM> is used by the website of the provider <NUM>, <NUM> to help sell display, video, and/or mobile advertisements. The DSPs <NUM> interface with the SSP <NUM> to determine which ad is to be served to the website (or application) of the provider <NUM> and <NUM> in a cost-effective manner.

When a user visits the website (or the application) of the provider <NUM>, <NUM>, the application 120a, the management server <NUM>, and/or the publisher website (or the application) of the provider <NUM>/<NUM> collects a unique identifier and/or context information (e.g., the information <NUM> of <FIG>). The SSP <NUM> receives, from the management server <NUM>, the encrypted identifier and the bid request- which is communicated to the DSPs <NUM>. The DSPs <NUM> compare the encrypted identifier to one or more lists of encrypted identifiers that are attached or otherwise associated with campaign labels to identify matching encrypted identifiers. If there is a match, the DSP <NUM> checks the bid request's information against campaign criteria and identifies an advertisement or media to serve to the SSP <NUM>. Then, the SSP <NUM> sends a message to an adserver publisher <NUM> for the display, video, or mobile ad. The DSP <NUM> or adserver publisher <NUM> may encrypt the received media or advertisement, which is transmitted to the management server <NUM>, which safely and securely stores IP addresses for custom adserving. The management server <NUM> delivers the encrypted advertisement to the terminal <NUM> using a stored IP address, where the application <NUM> may decrypt the advertisement for display within the website or application. The management server <NUM> operates with the application <NUM> to perform visibility tracking regarding whether (or how long) the user viewed the ad or clicked-into the ad. The management server <NUM> receives the tracking information (which may be encrypted) from the application <NUM>, which is transmitted to the DSP <NUM> that provided the advertisement. This provides anonymized feedback regarding an effectiveness of the advertisement and is used to track clicks for compensation.

<FIG> shows a diagram that is illustrative of another procedure <NUM> for purchasing media, according to an example embodiment of the present disclosure. In the illustrated example, the data processor <NUM> and/or the management server <NUM> receive an IP address and context information from a publisher website and/or user terminal <NUM> regarding an advertisement to be served. The management server <NUM> and/or the data processor <NUM> matches the IP address with a unique user identifier. The management server <NUM> and/or the data processor <NUM> then sends the user identifier to an SSP, which sends the identifier to the DSPs to compete for ad placement. The example SSP selects a winning DSP and sends the advertisement to the data processor <NUM>. The advertisement may be encrypted. The data processor <NUM> is configured to serve the advertisement to the publisher website and/or user terminal. In some instances, the data processor <NUM> decrypts the advertisement (using a key shared with the DSP). In other instances, the data processor sends the encrypted advertisement to the website or user terminal. In these other instances, the publisher or user terminal decrypts the advertisement for display/playing. In addition, the data processor <NUM> is configured to receive feedback regarding a user's interaction or viewing of the advertisement, which may be encrypted.

<FIG> shows example procedures <NUM>, <NUM>, and <NUM> for classifying use information for targeted advertising using homomorphic encryption, according to an example embodiment of the present disclosure. Although the procedures <NUM>, <NUM>, and <NUM> are described with reference to the flow diagrams illustrated in <FIG>, it should be appreciated that many other methods of performing the steps associated with the procedures <NUM>, <NUM>, and <NUM> may be used. For example, the order of many of the blocks may be changed, certain blocks may be combined with other blocks, and many of the blocks described are optional. Further, the actions or steps described in procedures <NUM>, <NUM>, and <NUM> may be performed among multiple devices including, for example the application <NUM> on the user terminal <NUM>, the management server <NUM> and/or the data processor <NUM>. In some instances, the procedures <NUM>, <NUM>, and <NUM> are defined by machine-readable instructions (e.g., software) stored in a memory. When executed by a processor, the machine-readable instructions are configured to cause the operations described herein to be performed.

The example procedure <NUM> begins when the application <NUM> on the user terminal <NUM> collects information related to a user's web browsing, navigation, and/or application usage (block <NUM>). The information may include keys/values (e.g., tags) related to the webpage or application, including section information. The application <NUM> analyzes the collected information to identify certain information for classification or sectioning (block <NUM>). In some instances, the operations of collecting and identifying are combined such that the only information collected by the application <NUM> is the information needed for classification.

In some embodiments, the application <NUM> creates section information using metadata associated with the webpage, information provided by a website host regarding a hierarchy of webpages (including labels), user-selected filtering information, or any other information that is indicative of the text, images, etc. displayed on the webpage/application (block <NUM>). In some instances, the application <NUM> stores the information in a hierarchy based on the section information. The example application <NUM> is configured to encrypt at least some of the section information (block <NUM>). This may include encrypting just the data itself and/or labels or section identifiers for the data. The application may use homomorphic encryption, AES encryption, or any other type of encryption.

The application <NUM> transmits the encrypted information, as information <NUM> described above in connection with <FIG> (block <NUM>). The application <NUM> also transmits an identifier <NUM> with the encrypted information. The procedure <NUM> then returns to block <NUM> when the application <NUM> detects there is additional user information to collect.

It should be appreciated that in some embodiments, a CRM server for offline data or a DMP of the providers <NUM>/<NUM> for online data collects information related to user purchases or browsing. In these examples, the CRM server or DMP transmits the collected information and an identifier of the user for encryption on the management server <NUM>. In some instances, the CRM server or the DMP includes the application <NUM> for encrypting and/or classifying/sectioning the collected user information.

Procedure <NUM> begins when the management server <NUM> receives the identifier <NUM> and the encrypted information <NUM> from the application <NUM>. The management server <NUM> removes or replaces the identifier (including personal identifying information) with a unique or dynamic identifier (block <NUM>). This may include encrypting the unique identifier. In instances where the identifier <NUM> already comprises a unique or dynamic identifier, this step can be omitted. The management server <NUM> trans-cyphers all or at least some of the information <NUM> into homomorphic encrypted information (block <NUM>). This may include applying transcription to convert at least some of the information <NUM> from AES encryption to homomorphic encryption. If the application <NUM> already applied homomorphic encryption, this step may be omitted. In some instances, the management server <NUM> may remove or delete certain information provided in conjunction with or included within the encrypted information, such as unencrypted and/or encrypted labels, tags, context, web content, etc..

The management server <NUM> then transmits or otherwise provides the unique and/or dynamic identifier in addition to the homomorphic encrypted information in one or more messages <NUM> (block <NUM>). The example procedure <NUM> then ends. The procedure <NUM> begins again when an identifier <NUM> and new information <NUM> is received from the same or a different application <NUM>.

Procedure <NUM> begins when the data processor <NUM> receives the one or more messages <NUM> with the unique and/or dynamic identifier and the homomorphic encrypted information. In some embodiments, the data processor <NUM> may be combined with the management server <NUM> such that transmission of the messages <NUM> across the network is not needed. The data processor <NUM> uses one or more rules or queries (e.g., the rules <NUM>) or a classification/scoring algorithm to classify the encrypted information (block <NUM>). The classification may include creating a vector for the user using encrypted section information, where points along the vector correspond to different categories. Each point may include a separately encrypted value or character. In instances where the application <NUM> already classified the information by, for example, creating a vector, this operation may be omitted.

In an example, a vector may contain fifty points or coordinates that correspond to different categories or section information. Each point of the vector includes information that is indicative as to whether a user visited a webpage with corresponding category information (specified by headers, labels or rules), or a number of times a user visited a webpage with the category information. Each point may include an encrypted value, or all of the values may be encrypted together. The data processor <NUM> performs computations on the encrypted values of the vector points for comparison to the one or more rules or queries and/or for classification/labeling/scoring of the unique of dynamic identifier.

The data processor <NUM> then updates one or more categories with the encrypted and/or unique/dynamic identifier of the user based on the classification (block <NUM>). The data processor <NUM> next provides the updated categories for advertising campaigns (block <NUM>). As discussed in conjunction with <FIG>, that may include transmitting the encrypted identifiers and categories to one or more DSPs <NUM>. The example procedure <NUM> then ends. The procedure <NUM> begins again when addition messages <NUM> are received from the management server <NUM> that cause the data processor <NUM> to update the categories with identifiers.

<FIG> shows a diagram of a content serving system <NUM>, according to another example embodiment of the present disclosure. In the example system <NUM>, the applications <NUM> operating on the user terminals <NUM> are configured to identify and/or collect application usage and/or web usage information. The applications <NUM> may also segment and analyze the collected information for classification. In the illustrated embodiment, the system <NUM> is configured to use multi-source cryptographically anonymized personal information. In addition to data collection, the advertisements themselves may also be protected using a cryptographic anonymization protocol.

In addition to the application <NUM>, the example user terminal <NUM> includes a third-party application <NUM>, which may include a retailor app, an information society app, a product manufacturer app, a service app, etc. The application <NUM> enables a user to have access to news content or browse/purchase goods or services. The application <NUM> is provisioned to collect data regarding usage of the application <NUM>. In some instances, a provider of the application <NUM> and/or the application <NUM> may transmit a message to the application <NUM> that is indicative of the application <NUM> to be monitored.

The application <NUM> may include a SDK routine that is configured to collect, encrypt, anonymize, and/or route the data collected from the application <NUM> to the management server <NUM>. In some instances, the application <NUM> may be a plug-in (or other enhancement) to the application <NUM> and/or operate in conjunction with the application <NUM> on the device <NUM>. In some embodiments, the application <NUM> is configured to store a Symmetric Encryption System ("SES") (with random key) for encrypting the collected data.

At Event <NUM> shown in <FIG>, the application <NUM> collects browsing or other usage data of the application <NUM>. In addition, the application <NUM> encrypts the data using SES. In the illustrated example, the SES encryption/decryption key is only owned by the device owner. Since the SES-encrypted data will be later trans-cyphered, it is unnecessary for another party to own the key for decryption. In some embodiments, the application <NUM> may include a stream cypher encryption system for encrypting the collected data. A stream cypher encryption system is configured to encrypt streams of data and is symmetric for relatively quick encryption. Also at Event <NUM>, the application <NUM> also collects a device identifier (e.g., "IFA"). The application <NUM> transmits the encrypted usage data and the device identifier to the management server <NUM> (e.g., a cloud-based secured proxy service or cryptographic hardware).

At Event <NUM>, the example management server <NUM> is configured to trans-cypher the encrypted usage data from SES-encryption to homomorphic encryption, called HE or fully HE ("FHE"). It should be appreciated that the usage data is not decrypted. Trans-cyphering includes, for example, modifying the encrypted usage data with an encryption system E, from E(Data) into E'(Data) with E' another encryption system without deciphering it (and without any decryption key). The management server <NUM> may trans-cypher each encrypted character individually or trans-cypher a string of encrypted characters. At Event <NUM>, the example management server <NUM> may also convert the IFA identifier via an encryption and/or hashing function F, giving F(IFA). The management server <NUM> then deletes the IFA identifier. The F function includes a mapping (hash-like) from a set S of possible IFA identifiers to a set S' of possible images, where S' is at least <NUM><NUM> times larger than S. In an example, the IFA identifier may include a MAC address of the user terminal <NUM>, which is deleted less than <NUM> minutes after collection by the management server <NUM>.

In an example, the management server <NUM> may receive encrypted data d from the application <NUM> at the user terminal <NUM>, which is encrypted using a stream cypher system ("SC"). The management server <NUM> is configured to use trans-cyphering to compute FHE(d) knowing only SC(d). In other words, the management server <NUM> can perform FHE(d) having only the SC(d), without any knowledge of d itself.

As shown in <FIG>, at Event <NUM>, the example management server <NUM> also encrypts the F(IFA) identifier with a general encryption ("GE") system or method, resulting in identifier GE(F(IFA)), which may be denoted as an ID ("RID"). As disclosed herein, RIDs are dynamic and may change at each query or action made by an entity of the data. It should be noted that GE is a nondeterministic encryption, where results from GE(F(IFA)) are different each time when the encryption is replayed, therefore making RIDs more dynamic. The number of encryptions of a given RID is at least <NUM><NUM>.

The management server <NUM> may use GE via a general encryption system or scheme for the F(IFA) identifier. This encryption system or scheme is asymmetrical and not deterministic (e.g., any identifier has at least <NUM><NUM> different encryption possibilities). For each identifier, there is a particular encryption called canonical that the server <NUM> can retrieve via a decryption key. An encryption system is symmetrical when the encryption key is the decryption key. An encryption system may be deterministic or not deterministic. In the first case, a given identifier that is encrypted many times is always encrypted with the same result. In the second case (not deterministic), this given identifier may be encrypted many times and will have many different encryptions. Of course, all these encryption possibilities have the same decryption result, namely the initial identifier.

As shown in <FIG>, at Event <NUM>, the management server <NUM> couples or otherwise creates a correspondence between HE(d) and the RID, which is transmitted to the data processor <NUM> as, for example, (RID, HE(d)). In some instances, the HE(d) and the RID are transmitted to the data processor <NUM> in a DMP.

At Event <NUM> of <FIG>, the data processor <NUM> is configured to receive the homomorphically encrypted data along with the RID. The data processor <NUM> is configured to segment the homomorphically encrypted data for inclusion within a taxonomy or other data structure, such as a SQL database. An example taxonomy <NUM> is shown in <FIG>, according to an example embodiment of the present disclosure. The taxonomy <NUM> defines a hierarchy of node or data labels/categories for organizing usage of, for example, the application <NUM>. Each lowest-level (and lower level) label includes a list of RIDs, that correspond to users that are related to that category (e.g., users that performed that action or viewed a product with the corresponding classification). The taxonomy <NUM> may be stored as a data structure in a memory that is accessible by the data processor <NUM>.

The example data processor <NUM> is configured to use one or more internal rules or queries to compare the data HE(d) to labels within the taxonomy <NUM>. In some embodiments, the node or data labels are encrypted using the same encryption scheme that is used for the encrypted usage information received from the management server <NUM>. The rules may be applied by a hardware security module ("HSM") <NUM> that is separate from or included with the data processor <NUM> and/or the management server <NUM>. The use of an HSM <NUM> enables the data processor <NUM> to keep the keys secure from inception and inaccessible at all times. The HSM <NUM> also controls functions that the data processor <NUM> can perform in order to guarantee and safeguard anonymization conditions. The HSM <NUM> can be parameterized jointly with a third party such as a regulatory body. The HSM <NUM> may be partitioned among the management server <NUM> and the data processor <NUM>, as shown in <FIG>. The HSM <NUM> performs the decryption internally and returns only encrypted RIDs for the data processor <NUM>.

In the illustrated example, the data processor <NUM> transmits each of the nodes or data labels of the taxonomy <NUM> separately in addition to the encrypted usage information and the encrypted RID. The HSM <NUM> is configured to decrypt at least a node included with the encrypted usage information (if the node or data label is encrypted). In some instances, the HSM <NUM> may also decrypt internally all of the usage information. The HSM <NUM> also decrypts the node or data label of the taxonomy <NUM>. The HSM <NUM> then applies one or more rules or queries (or other classification algorithms) to determine if the decrypted node or data label of the taxonomy <NUM> matches the node or data label of the usage information. If there is a match, the HSM <NUM> decrypts the RID, re-encrypts the RID, and transmits the RID back to the data processor <NUM> for inclusion within the matching node or data label of the taxonomy <NUM>. In some instances, if there is a match, the HSM <NUM> may apply one or more rules or computations to the encrypted (or decrypted) usage information to determine if the RID should be associated with the node or data label of the taxonomy <NUM>. The rules may include threshold values, ranges or values, etc. For example, a rule may specify that a RID may only be associated with a node or data label of the taxonomy <NUM> if the encrypted usage information corresponding to the matching node or data label has a value that is greater than an encrypted value of <NUM> or returns a result that is greater than <NUM> when a specified homomorphic computation is applied.

If the decrypted node or data label of the taxonomy <NUM> does not match the node or data label of the usage information, the HSM <NUM> encrypts a value of '<NUM>' (or similar null value) instead of the decrypted RID. The encrypted value of '<NUM>' is returned to the data processor <NUM> for or inclusion within the node or data label of the taxonomy <NUM> that was compared. The data processor <NUM> and HSM <NUM> continue to perform these comparisons for each of the nodes or data labels in the taxonomy <NUM> and for each of the nodes or data labels provided with the encrypted usage information.

The example data processor <NUM> of the illustrated example may operate via cloud services and one or more APIs for comparing and adding the RID under the HE(labels), shown in the taxonomy <NUM> of <FIG>, with respect to their correspondence with the HE(d). Because the HSM <NUM> and/or the data processor <NUM> performs the matching and correspondence on usage data that is homomorphically encrypted (i.e., HE(d)), RID is added under the correct HE(label) and noise may be added under the other non-matching HE(labels) of the taxonomy <NUM>. Also, since the result from a match in HE is encrypted, the RID and the noise are encrypted with GE. It is therefore impossible for the data processor <NUM> (or any other entity) to differentiate a RID from noise. The conditions for adding HE(labels) or noise may be performed by the data processor <NUM> according to conditional encryption, where the input: FHE(b), GE(d), and output: GE(<NUM>) if b = <NUM> and a different GE-encryption of d if b=<NUM>. At this point in Event <NUM>, the RIDs are stored under each corresponding HE(label), as shown in <FIG>.

In some embodiments, the data processor <NUM> (and/or the management server <NUM>) may be configured with a FHE system. In these embodiments, the fully homomorphic encryptions system is configured on the data processor <NUM> such that if there are two numbers a and b, the encryption of those numbers is FHE(a) + FHE(b) = FHE(a + b) and FHE(a) x FHE(b) = FHE(a x b). FHE enables the data processor <NUM> to perform computations over the encrypted data received from the application <NUM> and/or the management server <NUM>.

In order to obtain a taxonomy with the RIDs without noise values, the data processor <NUM> of the illustrated example sends the RID batch (e.g., a batch of taxonomy profiles) to an internal or external HSM <NUM>. The example HSM <NUM> may include a highly secured hardware device configured to perform one kind of computations and communicate to specified devices, such as the data processor <NUM>. An independent entity may control the HSM <NUM>, including the software and the installation of the software on the hardware. In some instances, after controls are performed on the HSM <NUM>, the hardware is permanently locked and no entity has the ability to reprogram it. The hardware of the HSM <NUM> is configured to be resistant to any physical attack. For instance, if a malicious party attempts to open the hardware of the HSM <NUM>, for instance, the HSM <NUM> is configured to destroy or erase the software so that its data becomes unreadable to anyone.

The example HSM <NUM> is configured with a decryption key for the GE. The HSM <NUM> performs cleaning with a function to eliminate the noise corresponding to null when decrypted. As discussed above, noise = GE(<NUM>), therefore GE^(<NUM>)( GE(<NUM>)) = <NUM>, which is removed from the RID batch by the HSM <NUM>. The cleaning function may include an input: a set of GE(di), with the data including encryptions of <NUM>, and an output: a list expunged from the encryptions of <NUM>. The remaining data is changed into other encryptions of the same data. The computation may be done only if the input set contains at least a given number of elements (e.g. <NUM> elements).

In other words, a node of the taxonomy <NUM> holds a noised RID batch. This RID batch may be cleaned by the HSM <NUM>. To maintain user privacy, a noised batch of encrypted RIDs cannot be cleaned if it holds less than a given number of items (e.g. <NUM> RIDs). The non-noised data is decrypted and re-encrypted to ensure RIDs are different after the HSM <NUM> exits the process. For instance, if the list to be cleaned is (<NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>), and only <NUM> and <NUM> are encryptions of non-zero data, the returned list could be (<NUM>, <NUM>) corresponding to the re-encrypted values of <NUM> and <NUM>.

The example HSM <NUM> is configured to re-encrypt the RIDs to generate new values of RIDs (noted as RID'). <FIG> shows a taxonomy <NUM> with the noise removed from the taxonomy <NUM> of <FIG>. In addition, the RIDs have been re-encrypted to RID'. The HSM <NUM> transmits the encrypted RID data back to the data processor <NUM>, as shown in <FIG>. In this manner, the data processor <NUM> obtains a clean list of RIDs, but cannot link the RIDs from the cleaned RID batch with the RIDs from the old RID batch shown in the taxonomy <NUM> of <FIG>.

The example system <NUM> of <FIG> also illustrates how an advertisement is served to the user terminal <NUM> and/or the user terminal 110a. In the illustrated example, the DSP <NUM> is configured with an advertising campaign. As shown at Event <NUM>, the data processor <NUM> make its data accessible to the DSP <NUM> (i.e., the taxonomy <NUM> including RIDs + HE(labels)) through the DMP. The data processor <NUM> or the DSP <NUM> select the RIDs corresponding to the label(s) concerning the campaign for serving target advertisements to those RIDs. To do so, the DSP <NUM> requests RIDs that are related to specified label(s).

In an example, the DSP <NUM> is interested in one label for a campaign. As such, the DSP <NUM> transmits a request message to a request API <NUM> of the data processor <NUM> to collect RIDs against a wanted label, referred to in this example as LABEL_TARGET. The API <NUM> receives the taxonomy (e.g., the taxonomy <NUM> of <FIG>) including the RID batch from the data processor <NUM> and performs a match to the specified label. The request involves the API <NUM> matching in HE (i.e., HE(LABEL_TARGET)?= HE(labels)). Therefore, the corresponding RID batch is GE encrypted and needs to be cleaned by the HSM <NUM>. The HSM <NUM> returns a list of RID's (the previous RID's are decrypted and re-encrypted again) that correspond to LABEL_TARGET. The returned list of RIDs may be provided to the DSP <NUM>, for later comparison of RIDs provided by the management server <NUM> for users that are to be served advertisements. Alternatively, the data processor <NUM> associates the returned list of RIDs to the advertising campaign related to the DSP <NUM>. In this alternative embodiment, the data processor <NUM> receives RIDs of users to which an advertisement is to be served, and compares the RIDs to the returned list of RIDs that are associated with the advertising campaign.

At Event <NUM> a user of a user terminal 110a uses a publisher's app (e.g., app 802a) or visits a publisher's website. The application 802a operates with an SDK application 120a installed on the user terminal <NUM>. The application 120a determines the application 802a is being used by a user and is to receive a targeted advertisement. The application 120a transmits a call message to communicate with a partner SSP <NUM>. The call message may be to a cloud service related to the data processor <NUM> and/or the management server <NUM>. The example application 120a sends to the management server <NUM>, or a cloud provider, an IFA identifier of the user terminal <NUM> and/or the application 120a. The IFA identifier may be part of a bid request, which may contain geolocation data collected by the application 120a. The bid request and/or the geolocation data may have noise applied by the application 120a, the management server <NUM>, and/or the data processor <NUM>, as described herein. The management server <NUM>, or cloud provider sends the IFA identifier to the HSM <NUM> of the data processor <NUM> to generate a RID_NEW in a similar manner as the RID was created at Event <NUM>.

The example management server <NUM> transmits the RID_NEW to the SSP <NUM>, which routes it to the DSP <NUM>. The DSP <NUM> transmits the RID_NEW to the HSM <NUM> to perform a function to ask an operation at an ID matching API <NUM> to see if RID_NEW matches its batch of RID's. The operation may include an oracle function regarding GE(d) and GE(d'). The purpose of the oracle function is to say if d=d', with an output: a boolean d = d' (TRUE / FALSE). The DSP <NUM> receives a TRUE/FALSE answer for the RID matching test from the API <NUM>. To do so, the HSM <NUM> decrypts the RID_NEW and RIDs from RID BATCH and checks if H(IFA) = H(IFA'). If YES, the DSP <NUM> sends back an advertisement to the SSP <NUM> that routes it to management server <NUM>, and back to the user terminal <NUM> for display in the application 802a. The advertisement may be encrypted by the DSP <NUM>, and decrypted at the application 802a using, for example, the SDK application 120a.

<FIG> shows example procedures <NUM>, <NUM>, and <NUM> for applying encrypted user identifiers to one or more data labels in a hierarchy, taxonomy, or functional database of categories, according to an example embodiment of the present disclosure. Although the procedures1100, <NUM>, and <NUM> are described with reference to the flow diagrams illustrated in <FIG>, it should be appreciated that many other methods of performing the steps associated with the procedures <NUM>, <NUM>, and <NUM> may be used. For example, the order of many of the blocks may be changed, certain blocks may be combined with other blocks, and many of the blocks described are optional. Further, the actions or steps described in procedures <NUM>, <NUM>, and <NUM> may be performed among multiple devices including, for example the application <NUM> on the user terminal <NUM>, the management server <NUM> and/or the data processor <NUM>. In some instances, the procedures <NUM>, <NUM>, and <NUM> are defined by machine-readable instructions (e.g., software) stored in a memory. When executed by a processor, the machine-readable instructions are configured to cause the operations described herein to be performed.

The example procedure <NUM> begins when the application <NUM> on the user terminal <NUM> collects information related to a user's web browsing, navigation, and/or application usage (block <NUM>). The information may include keys/values (e.g., tags) related to the webpage or application, including section information. The application <NUM> analyzes the collected information to identify certain information for classification or comparison to data labels (block <NUM>). In some instances, the operations of collecting and identifying are combined such that the only information collected by the application <NUM> is the information needed for classification.

In some embodiments, the application <NUM> creates section information using metadata associated with the webpage, information provided by a website host regarding a hierarchy of webpages (including labels), user-selected filtering information, or any other information that is indicative of the text, images, etc. displayed on the webpage/application. In some instances, the application <NUM> stores the information in a hierarchy based on a taxonomy or other functional database structure of data labels. The example application <NUM> is configured to encrypt at least some of the collected information (block <NUM>). This may include encrypting just the data itself and/or labels or section identifiers for the data. The application may use a homomorphic encryption scheme, a SES encryption scheme, an AES encryption scheme, or any other type of encryption.

The application <NUM> transmits the encrypted information <NUM> (block <NUM>). The application <NUM> also transmits an identifier <NUM> with the encrypted information. The procedure <NUM> then returns to block <NUM> when the application <NUM> detects there is additional usage information to collect.

Procedure <NUM> begins when the management server <NUM> receives the identifier <NUM> and the encrypted information <NUM> from the application <NUM>. The management server <NUM> removes or replaces the identifier (including personal identifying information) with a unique or dynamic identifier (block <NUM>). The management server <NUM> also converts at least some of the information <NUM> into homomorphic encrypted information (block <NUM>). This may include applying transcription to convert at least some of the information <NUM> from AES or SES encryption to homomorphic encryption. If the application <NUM> already applied homomorphic encryption, this step may be omitted. In some instances, the management server <NUM> may remove or delete certain information provided in conjunction with or included within the encrypted information, such as unencrypted and/or encrypted labels, tags, context, web content, etc..

The management server <NUM> also encrypts the identifier <NUM> using, for example, a GE method or system (block <NUM>). The management server <NUM> then transmits or otherwise provides the encrypted unique and/or dynamic identifier in addition to the homomorphic encrypted information in one or more messages <NUM> (block <NUM>). The example procedure <NUM> then ends. The procedure <NUM> begins again when an identifier <NUM> and new encrypted information is received from the same or a different application <NUM>.

Procedure <NUM> begins when the data processor <NUM> receives the one or more messages <NUM> with the encrypted unique and/or dynamic identifier and the homomorphic encrypted information. In some embodiments, the data processor <NUM> may be combined with the management server <NUM> such that transmission of the messages <NUM> across the network is not needed. The data processor <NUM> uses one or more rules, queries, or a classification algorithm to match the encrypted information to data labels in a taxonomy or other database, such as the taxonomy <NUM> of <FIG> (block <NUM>). This may include decrypting encrypted data labels of the encrypted information for comparison to decrypted data labels of the taxonomy or other database. In some instances, the rules may provide an association between the encrypted information and the data labels. The association may be based on known locations of encrypted data relative to the specific data labels in the taxonomy, such as locations within an encrypted vector. In other instances, the rules define one or more homomorphic computations to be performed on the encrypted data for comparison to the data labels or values representative of the data labels. The rules may also specify thresholds, value ranges, keywords, etc. that must be satisfied by the comparison for the data processor <NUM> to determine a match. In other instances, the homomorphic encrypted-data may be accompanied by labels that are compared to the data labels.

After the comparison, the data processor <NUM> updates one or more data labels of the taxonomy or other database with the encrypted unique or dynamic identifier of the user (block <NUM>). The data processor <NUM> may also update non-matching data labels of the taxonomy with an encrypted null value. The data processor <NUM> next provides the updated data labels for advertising campaigns (block <NUM>). As discussed above, this may include transmitting the encrypted identifiers and/or data labels to one or more DSPs <NUM>. Alternatively, the data processor <NUM> may receive an encrypted identifier from a DSP <NUM> (created by the management server <NUM> based on a unique identifier received from the application <NUM> or a SSP <NUM>) and return data labels that includes a matching encrypted identifier. The data processor <NUM> may further receive data label information from the DSP <NUM> and return a list of corresponding encrypted identifiers to enable an advertisement to be served. The example procedure <NUM> then ends. The procedure <NUM> begins again when addition messages <NUM> are received from the management server <NUM> that cause the data processor <NUM> to update the data labels with encrypted identifiers.

Claim 1:
A cryptographic anonymization system (<NUM>) comprising:
an application (<NUM>) operating on a user terminal (<NUM>) of a user or at a service provider (<NUM>), the application configured to:
collect usage information that relates to web or service usage of the user terminal (<NUM>) from the user terminal (<NUM>) or from an existing user database that stores online, offline, usage, purchase, commercial, and/or geolocation information,
encrypt at least some of the usage information using a first encryption scheme, and
transmit the encrypted usage information and an identifier of the application, an identifier of the user terminal (<NUM>), or personal identifiers from the existing user database;
the cryptographic anonymization system (<NUM>) further comprising a management server (<NUM>) communicatively coupled to the application via a network, the management server (<NUM>) configured to:
trans-cypher the encrypted usage information from the first encryption scheme to a second encryption scheme to create second encrypted usage information without decrypting the encrypted usage information by using the second encryption scheme to perform encryption on individual characters or strings of characters of the usage information that is encrypted using the first encryption scheme, and
convert the identifier of the application, the identifier of the user terminal (<NUM>), or personal identifiers to a unique or dynamic identifier; and
a data processor (<NUM>) communicatively coupled to the management server (<NUM>) and configured to:
compare the second encrypted usage information to a taxonomy or other data structure of data labels, at least some of the data labels including unique or dynamic identifiers of other users,
for each match of at least some of the second encrypted usage information to a data label, add the unique or dynamic identifier to the matching data label, and
provide at least one of the data labels or the corresponding unique or dynamic identifiers for serving advertisements to the data processor of a third party;
wherein the first encryption scheme includes a Symmetric Encryption System, SES, scheme or an Advanced Encryption Standard, AES, scheme, and
the second encryption scheme includes a homomorphic encryption scheme or a fully homomorphic encryption scheme.