CA2775237A1 - System and method of sort-order preserving tokenization - Google Patents

System and method of sort-order preserving tokenization Download PDF

Info

Publication number
CA2775237A1
CA2775237A1 CA2775237A CA2775237A CA2775237A1 CA 2775237 A1 CA2775237 A1 CA 2775237A1 CA 2775237 A CA2775237 A CA 2775237A CA 2775237 A CA2775237 A CA 2775237A CA 2775237 A1 CA2775237 A1 CA 2775237A1
Authority
CA
Canada
Prior art keywords
token
server computer
data element
proxy server
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA2775237A
Other languages
French (fr)
Other versions
CA2775237C (en
Inventor
George Weilun Ang
John Harold Woelfel
Terrence Peter Woloszyn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
Perspecsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Perspecsys Inc filed Critical Perspecsys Inc
Publication of CA2775237A1 publication Critical patent/CA2775237A1/en
Application granted granted Critical
Publication of CA2775237C publication Critical patent/CA2775237C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2596Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/30Managing network names, e.g. use of aliases or nicknames
    • H04L61/301Name conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

An intercepting proxy server processes traffic between an enterprise user and a cloud application. The intercepting proxy server provides interception of real data elements in communications from the enterprise to the cloud and replacing them with obfuscating tokens. Tokens included in results returned from the cloud, are intercepted by the intercepting proxy server, and replaced with the corresponding real data elements. In order for the sort order of the tokens to correspond to the sort order of the corresponding real data elements, a sort order preserving data compression is performed on parts of the real data elements, and the compressed values concatenated with the obfuscated tokens, thus producing sortable tokens which, even though they are obfuscated, appear in the correct sort order in the cloud application.

Description

SYSTEM AND METHOD OF SORT-ORDER PRESERVING TOKENIZATION
RELATED APPLICATIONS
The present application claims benefit from the US provisional application serial number 61/479,634 filed on April 27, 2012, entire contents of which are incorporated herein by reference.

FIELD OF THE INVENTION
The present invention relates to network appliances, specifically proxy servers, mail transfer agents, and file transfer agents, and in particular, to system and methods of sort-order preserving tokenization in such appliances.

BACKGROUND OF THE INVENTION
Cloud computing has come to the forefront of information technology, and is being adopted by organizations in all sectors and jurisdictions. Cloud computing itself can be segmented into three types - Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS).

In a SaaS model, the enterprise no longer installs, configures, and manages the software application on their own premises and computing facilities - instead the software is installed and managed by a 3rd party vendor (the Cloud Vendor) that amortizes the costs of the ongoing management and maintenance of the application across the plurality of customers using it. The enterprise itself merely needs to provide its users with web browser-based workstations in order to access the software.

The challenges facing enterprise adoption of cloud SaaS is the loss of control and governance over the application and data itself. With the application and the underlying information (customer records, orders, employee information, etc.) now residing "In the cloud", the enterprise may find itself unable to be compliant with jurisdictional regulatory requirements, sector-specific regulations and standards, or their own internal security and data management guidelines. In a number of cases, even encryption is not sufficient for obfuscating the data for persistence in the cloud.

One of the primary barriers to adoption of cloud-based applications (SaaS) is the inability for an enterprise to place sensitive data into the cloud, where it would be external to the enterprise environment and control. For example, Swiss banks must adhere to stringent data protection laws wherein the customer information must not leave the Swiss jurisdiction.
Similarly, employee information must never leave the shores of Australia, and personally identifying information must not leave mainland China in any format. As a result, these potential Cloud application adopters are unable to adopt a solution providing for example CRMISFA
(Customer Relationship Management/ Sales Force Automation) support available from salesforce.com, because the data would be residing in the salesforce.com data centers in California.

Accordingly, there is a need in the industry for developing improved computer methods and systems, which would solve the above noted problems and avoid the shortcomings of the prior art.

SUMMARY OF THE INVENTION
There is an objective of the present invention to provide an improved system and methods of sort-order preserving tokenization.

According to one aspect of the invention, there is provided a method of obfuscating data in a data object, comprising:
receiving, by an intercepting proxy server computer, the data object from a client device;
at the intercepting proxy server computer, generating a modified data object for transmission to a server computer in a cloud, comprising:
(i) identifying a real data element in the data object;
(ii) creating a token having a token value;
(iii) generating a sort-order preserving prefix based on the real data element;

(iv) concatenating the sort-order preserving prefix and the token value to generate a replacement value; and
2 (v) replacing the real data element with the replacement value, thus generating the modified data object.

The method further comprises transmitting the modified data object from the intercepting proxy server computer to the server computer in the cloud.

The method further comprises:

receiving a returned data object, comprising a returned data element, from the server computer in the cloud;

identifying the returned data element as a token-to-be-replaced;
replacing the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and transmitting the modified returned data object to the client device.

In the method described above, the step (ii) of creating further comprises generating the token value as a random value. The step (ii) of creating further comprises generating the token value by encrypting the real data element.

The step (iii) of generating further comprises compressing a front portion of the real data element using a sort-order preserving compression method. The front portion comprises a first character of the real data element. The front portion may further comprise additional characters following the first character.

The step (iv) of concatenating further comprises adding a predetermined suffix to the replacement value.

The step (i) of identifying the real data element further comprises:

mapping the data in the data object against a dictionary of attributes; and identifying the real data element using a corresponding attribute in the dictionary.
The identifying the token-to-be-replaced further comprises:
3 mapping data in the returned data object against a dictionary of attributes;
and identifying the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.

The replacing the token-to-be-replaced further comprises:
extracting the token value from the token-to-be-replaced; and determining the real data element, comprising indexing a look up table with the token value.

Alternatively, the replacing the token-to-be-replaced may further comprise:
extracting the token value from the token-to-be-replaced; and generating the real data element, comprising decrypting the token value.

The replacing the token-to-be-replaced further comprises formatting the real data element according to a context in the returned data object.

According to another aspect of the invention, there is provided an intercepting proxy server computer, comprising:
a processor;
a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to obfuscate data in a data object, comprising:
receiving a data object from a client device;
generating a modified data object for transmission to a server computer in a cloud, comprising:
(i) identifying a real data element in the data object;
(ii) creating a token having a token value;
(iii) generating a sort-order preserving prefix based on the real data element;

(iv) concatenating the sort-order preserving prefix and the token value to generate a replacement value; and (v) replacing the real data element with the replacement value, thus generating the modified data object.
4 The intercepting proxy server computer further comprises computer readable instructions stored in the memory for execution by the processor, causing the processor to transmit the modified data object from the intercepting proxy server computer to the server computer in the cloud.
The intercepting proxy server computer further comprises computer readable instructions stored in the memory for execution by the processor, causing the processor to:

receive a returned data object, comprising a returned data element, from the server computer in the cloud;
identify the returned data element as a token-to-be-replaced;

replace the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and transmit the modified returned data object to the client device.

In the intercepting proxy server computer, the computer readable instructions of creating further cause the processor to generate the token value as a random value, or by encrypting the real data element.

In the intercepting proxy server computer, the computer readable instructions of generating further cause the processor to compress a front portion of the real data element using a sort-order preserving compression method.

The front portion comprises a first character of the real data element, and the front portion may further comprise additional characters following the first character.

In the intercepting proxy server computer, the computer readable instructions of concatenating further cause the processor to add a predetermined suffix to the replacement value.

In the intercepting proxy server computer, the computer readable instructions of identifying the real data element further cause the processor to:

map the data in the data object against a dictionary of attributes; and identify the real data element using a corresponding attribute in the dictionary.

In the intercepting proxy server computer, the computer readable instructions further cause the processor to:

map data in the returned data object against a dictionary of attributes; and identify the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.

In the intercepting proxy server computer, the computer readable instructions of replacing the token-to-be-replaced further cause the processor to:
extract the token value from the token-to-be-replaced; and determine the real data element, comprising indexing a look up table with the token value, or generate the real data element, comprising decrypting the token value.

In the intercepting proxy server computer, the computer readable instructions of replacing the token-to-be-replaced further cause the processor to format the real data element according to a context in the returned data object.

According to yet another aspect of the invention, there is provided an intercepting proxy server computer, comprising:

a processor comprising a network input/output (IO) system configured to receive a data object from a client device;
a memory having computer readable instructions stored thereon for execution by the processor, forming:
a tooling module configured to identify a real data element in the data object;
a token generator module configured to create a token having a token value;
a compression module configured to generate a sort-order preserving prefix based on the real data element; and a token packaging module configured to concatenate the sort-order preserving prefix and the token value to generate a replacement value and to replace the real data element with the replacement value, thus generating the modified data object.

In the intercepting proxy server computer, the network input/output (IO) system is further configured to transmit the modified data object from the intercepting proxy server computer to the server computer in the cloud.

In the intercepting proxy server computer:

the network input/output (10) system is further configured to receive a returned data object, comprising a returned data element, from the server computer in the cloud;
the tooling module is further configured to identify the returned data element as a token-to-be-replaced;

the intercepting proxy server computer further comprising a context formatting module configured to replace the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and the network input/output (IO) system is further configured to transmit the modified returned data object to the client device.

In the intercepting proxy server computer, the token generator module comprises a random token generator configured to generate the token value as a random value.
Alternatively, the token generator module comprises an encryption module configured to generate the token value by encrypting the real data element.

In the intercepting proxy server computer, the compression module is further configured to compress a front portion of the real data element using a sort-order preserving compression method. The front portion comprises a first character of the real data element, and optionally, may also further comprise additional characters following the first character.

In the intercepting proxy server computer, the token packaging module is further configured to add a predetermined suffix to the replacement value.

In the intercepting proxy server, the tooling module is further configured to map the data in the data object against a dictionary of attributes and identify the real data element using a corresponding attribute in the dictionary.

The tooling module is further configured to map data in the returned data object against a dictionary of attributes and identify the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.

In the intercepting proxy server computer, the computer readable instructions are further configured to form a look up table indexed with the token value from the token-to-be-replaced, thereby determining the real data element.

The intercepting proxy server computer further comprises a decryption module configured to extract the token value from the token-to-be-replaced and to generate the real data element by decrypting the token value.

The intercepting proxy server computer further comprises a context formatting module configured to format the real data element according to a context in the returned data object.
A computer network is also provided comprising proxy server computer described above.
According to yet another aspect of the invention, there is provided a method of obfuscating data in a data object to generate a modified data object for use in a cloud application, comprising:
(i) identifying a real data element in the data object;
(ii) creating a token having a token value;
(iii) generating a sort-order preserving prefix based on the real data element;
(iv) generating a sort-order preserving prefix from a predetermined portion of the real data element;

(v) concatenating the sort-order preserving prefix and the token value to generate a replacement value;

(vi) replacing the real data element with the replacement value, thus generating the modified data object; and (vii) storing the real data element in a look up table indexed with the token value.

The method further comprises:
obtaining a second modified data object comprising the replacement value;
identifying the replacement value as having the token value;
retrieving the real data element from the look up table by indexing with the token value;
replacing the token-to-be-replaced with the real data element, thereby restoring the real data element in the second modified data object.

In one embodiment of the invention, the token value is a random value.

Thus, an improved system and methods of sort-order preserving tokenization have been provided.
BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings in which:

Figure 1 shows an Ultimate Obfuscating system 100, including an Ultimate Obfuscation Solution 110 comprising an Intercepting Proxy Server computer 112, according to an embodiment of the invention;

Figure 2 is a simplified data flow diagram 200 illustrating the general principle of interception and obfuscation of data elements by replacement with obfuscating tokens that is performed in the Intercepting Proxy Server computer 112 of Fig. 1;

Figure 3 shows details of the Tooling module 216, including the Data dictionary of Attributes 230 and the Mapping part 232 of Fig. 2;

Figure 4 is a flowchart of an "Interception Request" process 400, according to an embodiment of the invention;

Figure 5A is a simplified return data flow diagram 500 illustrating the general principle of interception of obfuscating tokens returned from the Cloud 104 in the case of "Residency" mode, and their replacement with real data elements, performed in the Intercepting Proxy Server computer 112 of Fig. 1, according to an embodiment of the invention;

Figure 5B is a second simplified return data flow diagram 550 illustrating the general principle of interception of obfuscating tokens returned from the Cloud 104 in the case of "Privacy" mode, and their replacement with real data elements, performed in the Intercepting Proxy Server computer 112 of Fig. 1, according to another embodiment of the invention;

Figure 6 is a flowchart of a "Conversion of Tokens to Data" process 600;

Figure 7 shows a data flow diagram 700 illustrating the generation of a sort-preserving obfuscating token, referred to as a Sort Replacement Value 702, according to another embodiment of the invention; and Figure 8 shows an exemplary hardware view 800 of the Ultimate Obfuscation Solution 110 of Figure 1.

DETAILED DESCRIPTION OF THE EMBODIMENTS OF THE INVENTION
With the objective to overcome limitations of the prior art to protect sensitive data when using cloud applications, a novel intercepting proxy server has been developed by PerspecSys corporation, features and embodiments of which are described in the following.
Disclosed are a system and methods for allowing an enterprise to utilize a cloud SaaS
solution, while ensuring that the sensitive data remain out of the cloud itself, replaced only with obfuscated information. This allows the enterprise to remain compliant with their data management requirements, as the data truly never leaves the enterprise in any format, encrypted or otherwise. The proposed solution provides a means of allowing the data to be replaced with an obfuscated version of the data that is not computationally related to the original sensitive value. In this way, the enterprise is able to enjoy the benefits of a cloud application such as salesforce.com, while remaining compliant with any and all regulatory compliance requirements that preclude the sensitive data from leaving the enterprise in any format.

Figure 1 shows an Ultimate Obfuscating system 100 according to the invention, including: an enterprise installation 102 (also simply referred to as "enterprise" 102) and a cloud application installation 104 in a server computer in the cloud (also simply referred to as "Cloud" 104), the enterprise 102 and Cloud 104 being connected over the Internet 106.

The enterprise 102 includes one or more client devices 108 (also simply referred to as Client 108), an Ultimate Obfuscation Solution 110 comprising an Intercepting Proxy Server computer 112 and a Local Persistent Storage layer 114, and a conventional firewall 116.

The Ultimate Obfuscation Solution 110 shown here inside an enterprise, is shown as an example for deploying it. It is understood that there may be clients, for example in the United Kingdom where a restriction exists only in that the data must not leave the country. In such a case the Ultimate Obfuscation Solution 110 may be located in a datacenter (i.e. a Hosted Ultimate Obfuscation Solution) in a country, with the client devices 108 being located in one or more enterprises within the same country. The Hosted Obfuscation Solution is then capable of providing support for multiple enterprises.

The client device 108 may be a personal computer, a work station computer, a laptop computer, a "smart" device such as a mobile device or a tablet, or any other computer device capable of including one or more of: a web browser application 118 (also simply referred to as browser 118) using for example standard Hypertext Transfer Protocol (HTTP);
an electronic mail application 120 (also simply referred to as mail 120) using for example Simple Mail Transfer Protocol (SMTP); and computer files 122 (also simply referred to as files 122) which may be transferred for example using the File Transfer Protocol (FTP), for communicating with the Cloud 104 by way of the Ultimate Obfuscation Solution 110.

The cloud application installation 104 includes one or more Cloud Application servers 124 and a Cloud Storage device 126.

The term computer is understood to mean a device that includes a processor, and computer-readable instructions stored in a computer-readable memory for execution on the processor.

Any of the computers used in the present invention may be a general purpose computer such as any of a number of commercially available computers. Alternatively, each computer may be a specialized computer, or a hardware device such as a programmable application specific device.

The operation of the Ultimate Obfuscating system 100 is summarized as follows.

The client 108 communicates with the Cloud 104 in transactions containing subject data for storing and/or processing in the Cloud 104 and receiving appropriate responses, including data from the Cloud 104. Such transactions may involve any of the facilities in the Client 108, including the web browser application 118, the electronic mail application 120, and file transfer of computer files 122. In such transactions, the outbound subject data are intercepted and interpreted in the Intercepting Proxy Server computer 112, where selected sensitive data elements of the outbound subject data are replaced with respective replacement values, also referred to as "tokens". In the following, the terms "sensitive data" and "sensitive data element" will be used interchangeably with the terms "real data" and "real data element"
respectively to distinguish the real data from the tokens which are their tokenized or obfuscated replacements. Each of the selected real data elements may be stored, along with the corresponding replacement token, in the Local Persistent Storage layer 114. Any tokens in the response from the Cloud 104 are then identified by the Intercepting Proxy Server computer 112, and the corresponding real data elements are retrieved, and substituted for the tokens in the response. In this way, the client 108 interacts with the Cloud 104 normally and transparently, but any real data are hidden from the Cloud 104 by sending tokens instead. The tokens will then be received and processed by the Cloud Application server 124 and may be stored in the Cloud Storage device 126.

There are two types of obfuscating tokens: "resident tokens" used in a "Residency" mode of operation and "encrypted tokens" used in a "Privacy" mode of operation. In the residency mode, each real data element is stored locally, i.e. "resides" in the Local Persistent Storage layer 114 as described above. In the weaker privacy mode, the real data element does not need to be stored locally, but is encrypted into an encrypted token.

Table 1 below illustrates examples of both resident tokens (R) and encrypted tokens (E).
Table 1: Example of Tokens # Type of Data Type Example Token of Token 1 Text data element (e.g. First R prs_ABDDK_z Name) 2 Text data element (e.g. First E PJW_EX_9bf785dab65e65a740d823b137c Name) de867ffbfb977_Mev5ge- eyQ7dPs74t3fSYP
mgEw1C9oFTOAemHiMUpwgLGB VG2cE
TQD6CivtJ 1 c3LZNSfSK5OwmYNFceMZ-QrEiGI/dh3OKhEOUwCQrNRuNzZofgA7--/QJznbmV Bkn8zEg0rkgDevhMPPhbygkH
c V hYFb U1XRxckgMT9T9rOB Uzdrg9usZA
OkgmsFhriwgHOXseALV OcazRWJuPR616 nhIdLs4DAUr5g Vn8Nww=_Z

3 Text of an email address R prs_DABCZRK_z@dummymail.com 4 Two text data elements with R PJW_DONdvcK_Z PJW_DPScfpJ_Z
sort prefix codes File Attachment (e.g. R prs_ATTACH[/2012/02/23/PJW-Powerpoint presentation) 201202031252-869473701498022.EXT] ENDATTACH

Each token is composed of a token prefix, a token body, and a token suffix.
The token prefix and token suffix are used to delineate the token against the surrounding data in order to identify the tokens in the data stream. Token prefix and suffix are shown in bold in the examples of Table 1.
The prefix may for example comprise three predetermined alpha characters followed by an underscore, e.g. prs_ or PJW_. As this example shows, the suffix may be an underscore followed by a single letter e.g._z or _Z. The length of both prefix and suffix are configurable.
The requirement is that they be unique enough so as not to be part of the data itself. For example if the actual data contained ABC_Z then ABC would not be a good choice for a prefix.

Table 1 shows five examples of tokenization (#1 to #5) in three columns: Type of Data, Type of Token (R for Resident Token, (E) for Encrypted token), and Example Token.

In example #1, a simple text data element such as a first name is replaced with a resident token (R) as prs_ABDDK_z.

In example #2, a simple text data element such as a first name is replaced with an encrypted token (E), with prefix PJW_, token body which is a long string of random-looking characters (the result of encrypting the actual text data element), and token suffix _Z.

In example #3, an email address is replaced with an obfuscation token (R) as prs_DABCZRK_z.
This is followed with an email domain name such as "@dummymail.com" in order for the combination to appear as a valid email address and so formally satisfy validation when the (obfuscated) data is received in the cloud.

In example #4, two text data elements are shown, resulting in two type (R) tokens PJW_DONdvcK_Z and PJW_DPScfpJ_Z, where each token is extended with a sort prefix code "DO" and "DP" respectively. As will be explained in more detail below, the alphabetic sorting order of the original text data elements can be preserved in the corresponding replacement tokens by prefixing token values with the order-preserving prefix code.

In example #5, an attached file is replaced by a type (R) token enclosed in square brackets "["
and "]" and separated from the prefix and the suffix by keywords "ATTACH" and "ENDATTACH" respectively.

The attachment example in #5 shows a format used for resident attachments. The format of tokens for attachments is different from other tokens in order to specifically identify them as attachments. In the example of a resident attachment shown here, the value in the token is a relative path of where the file is stored. Although it is in clear text providing the location of the actual file in the Local Persistent Storage layer 114, the file name, or what is in the file is not discernible from the information in the token. The attachment example #5 of Table 1 is shown to indicate another technique of substituting tokens for real data, e.g.
attachments, which may be performed in the Ultimate Obfuscation Solution 110.

The following description of embodiments of the invention however, will be focused on cases of obfuscating tokens for general values, i.e. text values.

The resident tokens for general values are generated by a random token generator in the Intercepting Proxy Server computer 112. It is noted that tokenization with randomly generated resident tokens is considered a more secure method than encryption.
In tokenization, the resident token contains no discoverable information related to the subject data. For example, it is possible that a large amount of data, including an entire attachment is represented by a relatively short resident token. For a resident token representing an attachment, a reference pointer to a local directory location is used, the implementation and format of which may vary depending on the cloud application requirements. On the other hand, an encrypted token, containing simple an encrypted version of the subject data is open to be decrypted by an Internet eaves-dropper or by an adversary hacking into the Cloud Storage device 126 as long as they have the decryption key.

The tokens, variously referred to as "resident token" and "encrypted token"
are also collectively referred to as "index", and the processes of "tokenization" and "encrypting" are similarly also referred to as "indexing", referring to the use of a token as a key (index) for storing and retrieving the corresponding real data element in a look up table or database of the Local Persistent Storage layer 114. The term "index" is used because the token for resident data is literally an index into the look up table (value table). The term "index" is equivalent to "token", and the term "indexing" is equivalent to "tokenizing".

In some cases, complete obfuscation of a data element by replacement with a resident token may not be required. In this case it may be sufficient to use as replacement value an encrypted token in which the data element is merely encrypted.

With resident tokens, the real data element is thus only stored locally inside of the firewall 116 of the enterprise 102 (or the hosted environment), i.e. in the Local Persistent Storage layer 114 of the Ultimate Obfuscation Solution 110. The Local Persistent Storage layer 114 may be implemented in a persistent storage device of any of a number of persistent storage technologies including, but not limited to, for example one or more hard disks or a solid-state drive (SSD).
The type of data structure used in the Local Persistent Storage layer 114 may include flat files or a database, or an in-memory cache within the Intercepting Proxy Server computer 112 for example and may depend on the type of protocol and the type of data.

A simple example for tokenization may be a clear text string "John Smith". The corresponding token value that may be sent to the Cloud 104 instead could be a randomly generated token for which there is no computational method to reverse engineer it, for example "prs_ABDEEFS_z".
The primary purpose of the Ultimate Obfuscation Solution 110 is to intercept clear text data that is outbound from the enterprise and substitute it with replacement values, while preserving the application functionality. Likewise the replacement values that are now in the cloud application need to be converted back into the real values in any response data stream that is coming from the cloud application, for example HTML pages, XML files, Spreadsheet reports, etc.

The Ultimate Obfuscation Solution 110 is designed to support interception of any data, whether it is transported using the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP), or a file system for the purposes of substitution.

Figure 2 is a simplified data flow diagram 200 illustrating the general principle of interception and obfuscation of data elements by replacement with obfuscating or encrypted tokens that is performed in the Intercepting Proxy Server computer 112, according to an embodiment of the invention.

The data flow diagram 200 shows:
- a Received Data Object 202 that is received from the Client 108;

- a corresponding modified data object 204 for transmission to the Cloud 104;
and - one or more storage record(s) 206 for storing in the Local Persistent Storage layer 114.
The Received Data Object 202 may contain non-changeable elements, referred to as "unmodified elements" 208 which are passed unchanged to the modified data object 204, and one or more "Element(s) to be replaced" 210, the Elements-to-be-replaced 210 being selected by a Tooling module 216 described in more detail below.

The modified data object 204 contains the unmodified elements 208 of the Received Data Object 202, and Replacement Values 212, which are replacements for corresponding Elements-to-be-replaced 210. The Replacement Value 212 is generated by a Token Packaging function 218 from a Token Value 220, which is generated:
- in the "Residency" mode by a Random Token Value generator function 222; or - in the "Privacy" mode by encrypting the Element-to-be-replaced 210 in a standard Encryption Function 234.

The Random Token Value generator function 222 and the Encryption Function 234 may be considered as alternative implementations of a token generator function.

Depending on the mode, the Token Value 220 is selected by a Mode Selector 236 from either the output of the Encryption Function 234 ("Privacy" mode) or the output of the Random Token Value generator function 222 ("Residency" mode).

In one embodiment of the invention, the Token Packaging function 218 assembles the Replacement Value 212 by prefixing the random Token Value 220 with a token prefix 224 and appending a token suffix 226.

In the case of "Residency" mode, a storage record 206 including a copy of the Element-to-be-replaced 210, and a copy of the corresponding Replacement Value 212, may be created. The storage record 206 is then stored in the Local Persistent Storage layer 114, thus preserving the value of the Element-to-be-replaced 210 in local storage while only the Replacement Value 212 is forwarded to the Cloud 104.

In the case of "Privacy" mode, it is not necessary to create the storage record 206 or store it in the Local Persistent Storage layer 114.

Defining Interception cases What is to be intercepted, is defined by a set of metadata that describes which data elements are to be extracted based upon a context, and what obfuscation scheme is to be used.

The function of defining and selecting Elements-to-be-replaced 210 is performed in the Tooling module 216, which includes pairs of metadata records. Each pair of metadata records corresponds to one or more Elements-to-be-replaced 210 and comprises a Data dictionary of Attributes 230, and a Mapping part 232 according to which elements are selected for intercepting. A separate set of metadata may be established for each cloud application.

Figure 3 shows details of the Tooling module 216, including the Data dictionary of Attributes 230 and the Mapping part 232.

The Data dictionary of Attributes 230 includes a plurality "n" of individual Attributes 302.
An Attribute 302 is a data dictionary element that describes a data element such as for example a first name generically and comprises the following fields:

- Name of attribute;
- Description;

- Data type, which may be one of:
Single Line Text;
Multi-line Text;

Email: email formatted address;
Phone: a phone number;

Attachment: Binary file attachment; and Email List : list of email addresses used in sending email;
- Flag specifying whether the token is sortable; and - Sorting key size.

The Mapping part 230 includes a plurality "m" of mappings 304 each of which defines the mapping of a data stream element (an element-to-be-replaced 210) to one of the Attributes 302.
Each mapping 304 is an association between a data element in an HTML form or XML
Application Programming Interface (API), or other identified data element to an attribute, and comprises the following fields:

- Record type, defining what object or abstract object this mapping is related to, for example an Account or an EMAIL send page). The Record type refers to an element type for interception that is pointed to by a URL.

- Element, defining the name of the element that is to be intercepted, and may refer to a form name of the element, an XML element name, or any other identifier used for structured data.

- Mode, a flag specifying either "Privacy" or "Residency", where "Privacy"
implies encryption and "Residency" implies locally stored data combined with tokenization.
- Attribute Id, identifying one of the "n" individual Attributes that applies to the defined data element (ref 210) which is to be intercepted.

Interception of Data to Tokens Any data that is leaving the organization in the form of a web form of data, an email, or a file attached to a web page, needs to be intercepted to replace the real data with tokens.

Figure 4 is a flowchart of an "Interception Request" process 400, including steps:
402 "Identify request type";
404 "Identify data to be intercepted";
406 "Mark data for indexing";

408 "Determine Mode";
410 "Tokenize"; and 412 "Encrypt".

At the step 402 " Identify request type", the type of request is identified by categorizing the Received Data Object 202 (Fig. 2), for example in the case of an HTTP request, any of the following categories may apply:

- POST request with form data;

- POST request with multipart data, i.e. fields and binary data;

- POST request with body containing a Simple Object Access Protocol (SOAP) API
or other type of XML or JavaScript Object Notation (JSON) structure;

- POST request with comma delimited values;

- POST request with any structured data format; and - GET request with URL data.

HTTP is provided as the most popular example since most cloud applications use HTTP based communications. But in general, data may be any network transmitted data over TCP or UDP, an example being the Simple Mail Transport Protocol (SMPT), and may be file system based, or database based.

By categorizing the Received Data Object 202 in the step 402, the Intercepting Proxy Server computer 112 is able to break up the Received Data Object 202 into individual elements.

In the following step 404 "Identify data to be intercepted", this categorization is the basis of identifying which elements remain unmodified (ref 208, Fig. 2) and which are Elements-to-be-replaced 210, i.e. elements that need to be replaced with tokens or encrypted.

The metadata of the Tooling module 216 is structured to identify by object (referred to as the Record Type in the mappings 304) which fields are to be intercepted. The Element Name of the mappings 304 is the field name in the data structure, i.e. in the Received Data Object 202, that needs to be replaced based on its attribute 302.

In summary, all elements comprising the data, for example all fields in a HTML
form, are examined to determine which elements have corresponding tooling mappings.

At the step 406 "Mark data for indexing", the tooling mappings 304 are used to mark the object (the Received Data Object 202) and specific fields (Elements-to-be-replaced 210) in the object as requiring interception.

At the step 408 "Determine Mode", the Mode of the associated mapping 304 is determined.
Depending on the Mode of the associated mapping 304, either tokenization ("Residency" mode) is invoked in the step 410 "Tokenize" to generate Replacement Values 212 for the intercepted elements, or the data is encrypted ("Privacy" mode) in the step 412 "Encrypt".

Figure 5A is a simplified return data flow diagram 500 illustrating the general principle of interception of resident tokens returned from the Cloud 104 in the case of "Residency" mode, and showing the replacement of the tokens with real data elements, the replacement being performed in the Intercepting Proxy Server computer 112, according to an embodiment of the invention.

The reverse data flow diagram 500 shows:
- a Returned Data Object 502 that is received from the Cloud 104;

- a corresponding modified returned data object 504 for transmission to the Client 108; and - a plurality of key-value pair records 506 (i = 1 to z) in a look up table 508 of the Local Persistent Storage layer 114, the look up table 508 including an Index column 510 and a Real Data column 512.

The description of a preferred implementation of the look up table 508 has been simplified for clarity. In practice, the look up table 508 may be implemented as any indexed data structure indexed by the token value, e.g., as a number of flat files, or a standard database, or even as an in-memory cache within the Intercepting Proxy Server computer 112 instead of in the Local Persistent Storage layer 114.

The Returned Data Object 502 may contain unmodified elements 514 which are passed unchanged to the modified returned data object 504, and one or more returned data elements which are identified as "Token(s) to be replaced" 516, comprising Prefix, Token Value, and Suffix. The Token Value of each Token-to-be-replaced 516 is used as an index into the look up table 508 in order to retrieve the specific key-value pair record 506, which contains the value of the Token Value as its key. In the example shown here, the value of the Token Value of the Token-to-be-replaced 516 equals the value of the "Token i". As a consequence, the corresponding "Value i" in the Real Data column 512 is retrieved, and inserted into the data object 504 as a Real Data Value 518.

As described in more detail below, simply inserting the Real Data Value 518 in place of the Token-to-be-replaced 516 may give rise to format errors in the modified returned data object 504.
To avoid such problems, a Context Formatting function 520 is provided to take the context in which the token is found into account, and format the Real Data Value 518 accordingly.
Referring back to Fig. 2, the storage records 206 associated with the substitution of data elements-to-be-replaced 210 by replacement values (tokens) 212 during processing of the interception request 400 (Fig. 4), correspond to the key-value pair records 506 which are now retrieved in order to replace the tokens-to-be-replaced 516 with the corresponding original Real Data values 518 which are of course equal to the original values of the respective data elements-to-be-replaced 210. It is noted that the look up table 508 may store entire storage records 206 as described in Fig. 2, indexing with tokens to retrieve corresponding real data values may be based solely on the stripped token values, or alternatively may be based on the replacement token value including any prefix and suffix values.

As shown in Figure 5A, real data (i.e. elements-to-be-replaced 210) contained in a previous request by the Client 108 for processing in the Cloud 104, may as far as the Client 108 can determine, appear to be correctly contained in subsequent or later responses from the Cloud 104.
In reality however, the sensitive data, i.e. the "real data" never physically left the enterprise 102, but were kept in the Local Persistent Storage layer 114, while the cloud application server 124 only processed the tokens.

Figure 5B is a second simplified return data flow diagram 550 illustrating the general principle of interception of encrypted tokens returned from the Cloud 104 in the case of "Privacy" mode, and showing the replacement of the tokens with real data elements, the replacement being performed in the Intercepting Proxy Server computer 112, according to another embodiment of the invention.

In analogy to the reverse data flow diagram 500, the second reverse data flow diagram 550 shows:

- the Returned Data Object 502 that is received from the Cloud 104; and - the corresponding modified returned data object 504 for transmission to the Client 108.
The Returned Data Object 502 may contain unmodified elements 514 which are passed unchanged to the modified returned data object 504, and one or more "Token(s) to be replaced" 516. The Token-to-be-replaced 516 includes an (encrypted) Token Value 552 which is extracted and decrypted into a Retrieved Real Data Value 554 in a Decryption Function 556. The Retrieved Real Data 554 is essentially the Real Data Value 518.

But, as described above, simply inserting the Retrieved Real Data 554 in place of the Token-to-be-replaced 516 may give rise to format errors in the modified returned data object 504. To avoid such problems, the Context Formatting function 520 is provided to take the context in which the token is found into account, and format the Retrieved Real Data 554 into the Real Data Value 518 accordingly.

As shown in Fig. 5B, real data (i.e. elements-to-be-replaced 210) contained in a previous request by the Client 108 for processing by the Cloud 104, but encrypted by the Intercepting Proxy Server 112, may as far as the Client 108 can determine, appear to be correctly contained in clear text in subsequent or later responses from the Cloud 104. In reality however, the real data elements were encrypted before they physically left the enterprise 102, and were decrypted and restored to clear text by the Intercepting Proxy Server 112 in responses from the Cloud 104.

To summarize, all data coming back from the cloud application is checked for obfuscating or encrypted tokens, and those tokens are converted back into real data values.

Figure 6 is a flowchart of a "Conversion of Tokens to Data" process 600, including steps:
602 "Identify content type";

604 "Identify Tokens by mode and pattern";
606 "Security Mode?";
608 "Lookup Real Data Values";
610 "Decrypt Tokens";

612 "Format Real Data Values"; and 614 "Insert Formatted Real Data values".

At the step 602 "Identify content type" the Returned Data Object 502 received by the Intercepting Proxy Server 112 in the data stream from the Cloud 104 may contain different types of content. Depending on the content type, the processing of the stream may vary. For example in the case of an attachment the whole data stream is only the attachment, so processing can be optimized. In most cases the data stream is processed and obfuscated information is extracted for conversion to clear text.

At the step 604 "Identify Tokens by mode and pattern", the tokens are stripped from the content by identifying the prefix and suffix. Resident Tokens representing locally stored real data values are processed differently from encrypted tokens.

At the step 606 "Security Mode?", the Mode of obfuscation is determined from the Attribute 302 to which the token is mapped, i.e. "Residency" mode using resident tokens or "Privacy" mode which uses "encrypted tokens".

If the Mode is "Privacy", the token values are merely decrypted in the step 610 "Decrypt Tokens" which yields the real data values, and execution continues with the step 612. If the Mode is "Residency", the real data values are retrieved in the step 608 "Lookup Real Data Values" by using the token values to index the lookup table 508 in the Local Persistent Storage layer 114 as described above (Fig. 5). The token to value map, i.e. the look up table 508 may be partly cached in the memory of the Intercepting Proxy Server computer 112 to speed up access.
The tokens are identified and their position and context in the data stream, i.e. in the Returned Data Object 502, are recorded.

At the step 612 "Format Real Data Values", the retrieved or decrypted real data values (see steps 610 and 608 above) are formatted by the Context Formatting function 520 according to the context of the data in the Returned Data Object 502 which is the same as the context of the data in the modified returned data object 504.

At the step 614 "Insert Formatted Real Data values", the formatted Real Data Values 518, which are replacing the corresponding Tokens-to-be-replaced 516, are inserted into the result data stream, i.e. into the modified returned data object 504.

Sort-order-preserving Tokens One of the challenges when obfuscating data via tokenizing real data elements with obfuscating or encrypting tokens as described above, is the loss of certain characteristics of the data, one of which is the sort order. Depending on the context, the obfuscated data may still require to be rendered by the Cloud 104 via a report, an ordered list, a view on a web page, etc. in the sorted order, without revealing the original values. In another embodiment, the present invention provides a technique that allows data to be obfuscated via whatever encoding method is required in order to preserve the security of the value being revealed, while at the same time preserving the sort order to a configurable degree of accuracy so as to be usable in contexts that render ordered lists.

One of the characteristics of encryption is the inability of most encryption algorithms to preserve sort order. The manner in which encryption is performed typically renders the resulting encrypted value unusable for sort ordering. This means that, in a data management context such as reporting, list viewing, or other human readable applications of the data, the rendering of the list of data frequently must be performed using the real values. However, there are a number of contexts and use cases that require the data to be ordered, even if tokenized or encrypted.
While there are known techniques for preserving sort ordering while obfuscating the original data values, there is a trade off of data security versus data ordering accuracy. For example, one technique to preserve sort ordering while performing data obfuscation is to use a sort order preserving data compression algorithm such as described in United States Patent No. 5,270,712 issued to Iyer et al. This compression algorithm utilizes a derivative of the Ziv-Lempel compression technique involving a tree structure for data compression. The challenge with this technique is that, while it renders the original data obfuscated and preserves the original data sort order, it is not very secure because the encryption would be fairly easy to break. In a structured application context, for example, the list of data may be first names, states, provinces, or cities.
Knowledge of the domain of the data would enable an attacker to easily guess at a first couple of tree branches in the structure, and then leave the rest of the decoding to a dictionary attack. The dictionary attack would provide the attacker with enough information to reconstruct the rest of the encoding tree, allowing the attacker to then decode any other real values encoded using that tree structure.

The solution proposed here is a hybrid approach to the generation of a sort-order preserving obfuscated value by prefixing the already obfuscated replacement value with a "sort prefix"
code.

Essentially, a Liv-Zempel technique is used to generate a "sort prefix" code, which may represent all or only the first few characters of the real data value. As described earlier, each sensitive real data value may have been encoded using standard encryption yielding an encrypted token or may have been replaced entirely with a resident token. The resulting token value 220 is encapsulated with Prefix 224 and Suffix 226 codes, see Fig. 2 and example #4 in Table 1. By extending or replacing the Prefix 224 with the "sort prefix", the rendering of the data in a list, report, or other context based on the obfuscated value can be performed in an ordered fashion, but the value is not as susceptible to the attack problems discussed earlier.

Preferably, in order to enhance security, not the entire real data value is encoded using the sortable compression algorithm, but only the first few characters are used.
Depending on the actual sort accuracy requirement, this may be the first character alone, the first few characters, or a configurable number of characters.

Figure 7 shows a data flow diagram 700 illustrating the generation of a sort-preserving resident token, referred to as a Sort Replacement Value 702. By analogy with the data flow diagram 200 of Fig. 2, a Sort Storage Record 704 is generated in respect of one of the Elements-to-be-replaced 210 of the Received Data Object 202 (not shown in Fig. 7). The Sort Storage Record 704 includes a copy of the Element-to-be-replaced 210, the Sort Replacement Value 702, and may contain other data such as the record id (not shown in Fig. 7), and will be stored in the Local Persistent Storage layer 114.

The Sort Replacement Value 702 is composed of a Sort Prefix 706, concatenated with the Token Value 220 and the token Suffix 226. The Token Value 220 is generated by the Random Token Value generator function 222 as described above. Similarly, the value of the token Suffix 226 is chosen for delineating the Sort Replacement Value 702 as described earlier.

The Sort Prefix 706 is generated by a Liv-Zempel Compression function 708 from a Front Portion 710 of the Element-to-be-replaced 210.

In this way, any rendering of a list of the encoded values (i.e. the sort replacement values, would come arbitrarily close to the sort order of the original values, depending on the chosen length of the Front Portion 710. This technique of combining the Liv-Zempel Compression (on a selected front portion of the data element) with the random token value, has the virtue of not being as susceptible to the attack described above. An attacker may still be able to determine the first character with some level of certainty, but since they would no longer have all of the characters encoded within the Liv-Zempel tree, the token is no longer susceptible to a dictionary attack.
Instead, the remainder of the Sort Replacement Value 702 is tokenized or may be encrypted, neither of which is related to the Liv-Zempel tree, and hence not susceptible to a dictionary attack to determine the actual value.

The tradeoff is the degree of sort order accuracy. By only using the first few characters of the actual value as the sort characters, it may not be perfectly sortable.
However, depending on the context, a perfect sort may not be required. The first few characters may be more than sufficient for sorting a small set of data with a relatively even distribution of sorted data across the alphabet. The technique described is not only applicable to strings composed of single-byte characters, but also to multi-byte character sets, and even mixed characters within a UTF-8 or UTF-16 set of data.

As shown in Fig. 2 already, the Token Values 220 are generated by a Random Token Value generator function 222 in the "Residency" mode. In the "Privacy" mode, the Token Values 220 are simply generated by encrypting the Elements-to-be-replaced 210 in the standard Encryption Function 234. The appropriate Token Value 220 as selected in the Mode Selector 236, is then prefixed with the Sort Prefix 706 and the Token Suffix 226 is appended.

When an instance of a Sort Replacement Value 702 is returned from the Cloud 104 as the "Token to be replaced" 516 in the Returned Data Object 502 (see Figs. 5A and 5B), the corresponding Real Data Value 518 is recovered from the look up table 508 as shown in Fig. 5A, which applies in "Residency" mode of operation. In the "Privacy" mode (Fig.
5B), decrypting the encrypted token value returns the original clear text value. In either mode, the sort prefix is merely for use by the Cloud 104 in the rendering of the data to provide a specific degree of sorting accuracy.

The Intercepting Proxy Server computer 112 is a computer equipped with software programs for enabling the features of the embodiments of the invention to be described below. Some or all of the functions of the Intercepting Proxy Server computer 112 may also be implemented with an Application Specific Integrated Circuit (ASIC) or a number of ASICs.

Figure 8 shows an exemplary hardware view 800 of the Ultimate Obfuscation Solution 110 comprising the Intercepting Proxy Server computer 112, including a Processor 802 and a Computer Memory 804, and a Persistent Storage unit 806 in the Local Persistent Storage layer 114, according to the embodiments of the invention.

The Processor 802 may be any commercial processor capable of executing programs under an operating system such as, but not limited to, Linux, Microsoft Windows, or Mac Operating System 10 (OSX) for example, comprising a Central Processing Unit (CPU) 808, a Network Input/Output (I/O) system 810 and a Command Interface 812.

The CPU 808 may be any of a number of commercial processor implementations, including a multi-processor. The Network Input/Output (I/O) system 810 provides an interface facility to the Internet 106 via the optional Firewall 116, and to the Client 108, see Fig. 1.
The Command Interface 812 may include a keyboard, mouse, and visual interface, as well as removable storage devices, or any other hardware suitable for controlling a software configuration as well as the operations of the Intercepting Proxy Server computer 112.

The Processor 802 is connected to the Computer Memory 804 which is preferably a non-transitory memory device such as dynamic memory (DRAM) capable of storing software programs and related data. Software modules which include computer executable instructions for execution by the Processor 802 are stored in the Computer Memory 804, comprise: the Tooling module 216, a Token Packaging module 814 for performing the Token Packaging function 218, a Random Token Value generator module 816 for performing the Random Token Value generator function 222, an Encryption Engine 818 for performing the Encryption Function 234, a Context Formatting module 820 for performing the Context Formatting function 520, and a Liv-Zempel Compression Engine 822 for performing the Liv-Zempel Compression function 708.

In some embodiments of the invention, the Random Token Value generator module 816 and the Encryption Engine 818 are combined into a Token Generator module 824.

The Computer Memory 804 may also include a Cache 808 for temporarily storing a full or partial copy of data such as the Look Up Table 508 which is preferably more permanently stored in the Local Persistent Storage layer 114.

The Processor 802 is also connected to the Local Persistent Storage layer 114 which may be implemented in any of a number of persistent storage technologies including, but not limited to, for example a hard disk or a flash drive. Data stored in the Local Persistent Storage layer 114, may also be stored simultaneously in the Computer Memory 804 for periods while it is actively being used by the Processor 802.

The Local Persistent Storage layer 114 is used for storing persistent information, primarily configured information, as well as information regarding cloud applications that are being used by the Client 108, such as a set of the application specific metadata records for use by the Tooling module 216, comprising the Data dictionaries of Attributes 230, and the Mapping parts 232.

Methods and apparatus for intercepting transactions between a client and a cloud application have been described in a number of embodiments, including encrypting real data into tokens ("Privacy" mode), replacing real data with token of random value ("Residency"
mode), and combining the tokens with sort-order preserving prefixes. These techniques can be used individually, or in combination, on the data elements of client-to-cloud traffic, for the purpose of disguising or hiding sensitive data, and for enhancing the usability of the obfuscated information by the cloud application in some instances.

It is also understood that the methods of obfuscating data of the embodiments of the invention can also be used in various other software applications, i.e. other than cloud computing, where obfuscating of data may be required.

Although embodiments of the invention have been described in detail, it will be apparent to one skilled in the art that variations and modifications to the embodiments may be made within the scope of the following claims.

Claims (47)

1. A method of obfuscating data in a data object, comprising:
receiving, by an intercepting proxy server computer, the data object from a client device;
at the intercepting proxy server computer, generating a modified data object for transmission to a server computer in a cloud, comprising:

(i) identifying a real data element in the data object;
(ii) creating a token having a token value;
(iii) generating a sort-order preserving prefix based on the real data element;
(iv) concatenating the sort-order preserving prefix and the token value to generate a replacement value; and (v) replacing the real data element with the replacement value, thus generating the modified data object.
2. The method of claim 1, further comprising transmitting the modified data object from the intercepting proxy server computer to the server computer in the cloud.
3. The method of claim 1, further comprising:
receiving a returned data object, comprising a returned data element, from the server computer in the cloud;
identifying the returned data element as a token-to-be-replaced;
replacing the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and transmitting the modified returned data object to the client device.
4. The method of claim 1, wherein the step (ii) of creating further comprises generating the token value as a random value.
5. The method of claim 1, wherein the step (ii) of creating further comprises generating the token value by encrypting the real data element.
6. The method of claim 1, wherein the step (iii) of generating further comprises compressing a front portion of the real data element using a sort-order preserving compression method.
7. The method of claim 6, wherein the front portion comprises a first character of the real data element.
8. The method of claim 7, wherein the front portion further comprises additional characters following the first character.
9. The method of claim 1, the step (iv) of concatenating further comprises adding a predetermined suffix to the replacement value.
10. The method of claim 1, the step (i) of identifying the real data element further comprises:
mapping the data in the data object against a dictionary of attributes; and identifying the real data element using a corresponding attribute in the dictionary.
11. The method of claim 3, wherein the identifying the token-to-be-replaced further comprises:
mapping data in the returned data object against a dictionary of attributes;
and identifying the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.
12. The method of claim 3, wherein the replacing the token-to-be-replaced further comprises:
extracting the token value from the token-to-be-replaced; and determining the real data element, comprising indexing a look up table with the token value.
13. The method of claim 3, wherein the replacing the token-to-be-replaced further comprises:
extracting the token value from the token-to-be-replaced; and generating the real data element, comprising decrypting the token value.
14. The method of claim 3, wherein the replacing the token-to-be-replaced further comprises formatting the real data element according to a context in the returned data object.
15. An intercepting proxy server computer, comprising:
a processor;

a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to obfuscate data in a data object, comprising:
receiving a data object from a client device;
generating a modified data object for transmission to a server computer in a cloud, comprising:
(i) identifying a real data element in the data object;
(ii) creating a token having a token value;
(iii) generating a sort-order preserving prefix based on the real data element;
(iv) concatenating the sort-order preserving prefix and the token value to generate a replacement value; and (v) replacing the real data element with the replacement value, thus generating the modified data object.
16. The intercepting proxy server computer of claim 15, further comprising computer readable instructions stored in the memory for execution by the processor, causing the processor to transmit the modified data object from the intercepting proxy server computer to the server computer in the cloud.
17. The intercepting proxy server computer of claim 15, further comprising computer readable instructions stored in the memory for execution by the processor, causing the processor to:
receive a returned data object, comprising a returned data element, from the server computer in the cloud;
identify the returned data element as a token-to-be-replaced;
replace the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and transmit the modified returned data object to the client device.
18. The intercepting proxy server computer of claim 15, wherein the computer readable instructions of creating further cause the processor to generate the token value as a random value.
19. The intercepting proxy server computer of claim 15, wherein the computer readable instructions of creating are configured to generate the token value by encrypting the real data element.
20. The intercepting proxy server computer of claim 15, wherein the computer readable instructions of generating further cause the processor to compress a front portion of the real data element using a sort-order preserving compression method.
21. The intercepting proxy server computer of claim 20, wherein the front portion comprises a first character of the real data element.
22. The intercepting proxy server computer of claim 21, wherein the front portion further comprises additional characters following the first character.
23. The intercepting proxy server computer of claim 15, wherein the computer readable instructions of concatenating further cause the processor to add a predetermined suffix to the replacement value.
24. The intercepting proxy server computer of claim 15, wherein the computer readable instructions of identifying the real data element further cause the processor to:
map the data in the data object against a dictionary of attributes; and identify the real data element using a corresponding attribute in the dictionary.
25. The intercepting proxy server computer of claim 17, wherein the computer readable instructions further cause the processor to:

map data in the returned data object against a dictionary of attributes; and identify the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.
26. The intercepting proxy server computer of claim 17, wherein the computer readable instructions of replacing the token-to-be-replaced further cause the processor to:
extract the token value from the token-to-be-replaced; and determine the real data element, comprising indexing a look up table with the token value.
27. The intercepting proxy server computer of claim 17, wherein the computer readable instructions of replacing the token-to-be-replaced further cause the processor to:

extract the token value from the token-to-be-replaced; and generate the real data element, comprising decrypting the token value.
28. The intercepting proxy server computer of claim 17, wherein the computer readable instructions of replacing the token-to-be-replaced further cause the processor to format the real data element according to a context in the returned data object.
29. An intercepting proxy server computer, comprising:
a processor comprising a network input/output (IO) system configured to receive a data object from a client device;
a memory having computer readable instructions stored thereon for execution by the processor, forming:

a tooling module configured to identify a real data element in the data object;
a token generator module configured to create a token having a token value;
a compression module configured to generate a sort-order preserving prefix based on the real data element; and a token packaging module configured to concatenate the sort-order preserving prefix and the token value to generate a replacement value and to replace the real data element with the replacement value, thus generating the modified data object.
30. The intercepting proxy server computer of claim 29, wherein the network input/output (IO) system is further configured to transmit the modified data object from the intercepting proxy server computer to the server computer in the cloud.
31. The intercepting proxy server computer of claim 29, wherein:

the network input/output (IO) system is further configured to receive a returned data object, comprising a returned data element, from the server computer in the cloud;
the tooling module is further configured to identify the returned data element as a token-to-be-replaced;

the intercepting proxy server computer further comprising a context formatting module configured to replace the token-to-be-replaced with the real data element, thereby generating a modified returned data object; and the network input/output (IO) system is further configured to transmit the modified returned data object to the client device.
32. The intercepting proxy server computer of claim 29, wherein the token generator module comprises a random token generator configured to generate the token value as a random value.
33. The intercepting proxy server computer of claim 29, wherein the token generator module comprises an encryption module configured to generate the token value by encrypting the real data element.
34. The intercepting proxy server computer of claim 29, wherein the compression module is further configured to compress a front portion of the real data element using a sort-order preserving compression method.
35. The intercepting proxy server computer of claim 34, wherein the front portion comprises a first character of the real data element.
36. The intercepting proxy server computer of claim 35, wherein the front portion further comprises additional characters following the first character.
37. The intercepting proxy server computer of claim 29, wherein the token packaging module is further configured to add a predetermined suffix to the replacement value.
38. The intercepting proxy server computer of claim 29, wherein the tooling module is further configured to map the data in the data object against a dictionary of attributes and identify the real data element using a corresponding attribute in the dictionary.
39. The intercepting proxy server computer of claim 31, wherein the tooling module is further configured to map data in the returned data object against a dictionary of attributes and identify the token-to-be-replaced using a corresponding attribute of the returned data element of the returned data object.
40. The intercepting proxy server computer of claim 31, wherein the computer readable instructions are further configured to form a look up table indexed with the token value from the token-to-be-replaced, thereby determining the real data element.
41. The intercepting proxy server computer of claim 31, further comprising a decryption module configured to extract the token value from the token-to-be-replaced and to generate the real data element by decrypting the token value.
42. The intercepting proxy server computer of claim 31, further comprising a context formatting module configured to format the real data element according to a context in the returned data object.
43. A method of obfuscating data in a data object to generate a modified data object for use in a cloud application, comprising:
(i) identifying a real data element in the data object;
(ii) creating a token having a token value;

(iii) generating a sort-order preserving prefix based on the real data element;

(iv) generating a sort-order preserving prefix from a predetermined portion of the real data element;

(v) concatenating the sort-order preserving prefix and the token value to generate a replacement value;
(vi) replacing the real data element with the replacement value, thus generating the modified data object; and (vii) storing the real data element in a look up table indexed with the token value.
44. The method of claim 41, further comprising:
obtaining a second modified data object comprising the replacement value;
identifying the replacement value as having the token value;
retrieving the real data element from the look up table by indexing with the token value;
replacing the token-to-be-replaced with the real data element, thereby restoring the real data element in the second modified data object.
45. The method of claim 43, wherein the token value is a random value.
46. A computer network comprising the intercepting proxy server computer of claim 15.
47. A computer network comprising the intercepting proxy server computer of claim 29.
CA2775237A 2011-04-27 2012-04-19 System and method of sort-order preserving tokenization Active CA2775237C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161479634P 2011-04-27 2011-04-27
US61/479,634 2011-04-27

Publications (2)

Publication Number Publication Date
CA2775237A1 true CA2775237A1 (en) 2012-10-27
CA2775237C CA2775237C (en) 2015-07-07

Family

ID=47068841

Family Applications (5)

Application Number Title Priority Date Filing Date
CA2775237A Active CA2775237C (en) 2011-04-27 2012-04-19 System and method of sort-order preserving tokenization
CA2775247A Active CA2775247C (en) 2011-04-27 2012-04-19 System and method for tokenization of data for storage in a cloud
CA2775206A Active CA2775206C (en) 2011-04-27 2012-04-19 System and method of handling requests in a multi-homed reverse proxy
CA2775245A Active CA2775245C (en) 2011-04-27 2012-04-19 System and method of federated authentication with reverse proxy
CA2775427A Abandoned CA2775427A1 (en) 2011-04-27 2012-04-19 System and method of data interception and conversion in a proxy

Family Applications After (4)

Application Number Title Priority Date Filing Date
CA2775247A Active CA2775247C (en) 2011-04-27 2012-04-19 System and method for tokenization of data for storage in a cloud
CA2775206A Active CA2775206C (en) 2011-04-27 2012-04-19 System and method of handling requests in a multi-homed reverse proxy
CA2775245A Active CA2775245C (en) 2011-04-27 2012-04-19 System and method of federated authentication with reverse proxy
CA2775427A Abandoned CA2775427A1 (en) 2011-04-27 2012-04-19 System and method of data interception and conversion in a proxy

Country Status (4)

Country Link
US (5) US20120278872A1 (en)
EP (1) EP2702726B1 (en)
CA (5) CA2775237C (en)
WO (1) WO2012145827A1 (en)

Families Citing this family (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9112886B2 (en) * 2007-12-27 2015-08-18 Verizon Patent And Licensing Inc. Method and system for providing centralized data field encryption, and distributed storage and retrieval
US8949938B2 (en) 2011-10-27 2015-02-03 Cisco Technology, Inc. Mechanisms to use network session identifiers for software-as-a-service authentication
US9386105B2 (en) * 2011-11-02 2016-07-05 Microsoft Technology Licensing, Llc Techniques for dynamic domain-based isolation
US8799269B2 (en) 2012-01-03 2014-08-05 International Business Machines Corporation Optimizing map/reduce searches by using synthetic events
US9699169B2 (en) * 2012-05-10 2017-07-04 Symantec Corporation Computer readable storage media for selective proxification of applications and method and systems utilizing same
JP6066586B2 (en) * 2012-05-22 2017-01-25 キヤノン株式会社 Information processing system, control method thereof, and program thereof
US8800011B2 (en) * 2012-05-31 2014-08-05 Rackspace Us, Inc. Validating pointer records in a domain name system (DNS) service
US8898165B2 (en) 2012-07-02 2014-11-25 International Business Machines Corporation Identification of null sets in a context-based electronic document search
US8903813B2 (en) 2012-07-02 2014-12-02 International Business Machines Corporation Context-based electronic document search using a synthetic event
US9460200B2 (en) 2012-07-02 2016-10-04 International Business Machines Corporation Activity recommendation based on a context-based electronic files search
US9887872B2 (en) * 2012-07-13 2018-02-06 Microsoft Technology Licensing, Llc Hybrid application environments including hosted applications and application servers for interacting with data in enterprise environments
US9262499B2 (en) 2012-08-08 2016-02-16 International Business Machines Corporation Context-based graphical database
US9152781B2 (en) 2012-08-09 2015-10-06 Cisco Technology, Inc. Secure mobile client with assertions for access to service provider applications
US8676857B1 (en) 2012-08-23 2014-03-18 International Business Machines Corporation Context-based search for a data store related to a graph node
US9100369B1 (en) * 2012-08-27 2015-08-04 Kaazing Corporation Secure reverse connectivity to private network servers
US8959119B2 (en) 2012-08-27 2015-02-17 International Business Machines Corporation Context-based graph-relational intersect derived database
US9251237B2 (en) 2012-09-11 2016-02-02 International Business Machines Corporation User-specific synthetic context object matching
US9619580B2 (en) 2012-09-11 2017-04-11 International Business Machines Corporation Generation of synthetic context objects
US8620958B1 (en) 2012-09-11 2013-12-31 International Business Machines Corporation Dimensionally constrained synthetic context objects database
US9137501B2 (en) * 2012-09-12 2015-09-15 The Directv Group, Inc. Method and system for communicating between a host device and user device through an intermediate device using syntax translation
US9535722B2 (en) 2012-09-12 2017-01-03 The Directv Group, Inc. Method and system for communicating between a host device and a user device through an intermediate device using a composite graphics signal
US10521250B2 (en) 2012-09-12 2019-12-31 The Directv Group, Inc. Method and system for communicating between a host device and user device through an intermediate device using a composite video signal
US10268775B2 (en) * 2012-09-17 2019-04-23 Nokia Technologies Oy Method and apparatus for accessing and displaying private user information
US9223846B2 (en) 2012-09-18 2015-12-29 International Business Machines Corporation Context-based navigation through a database
JP6007697B2 (en) * 2012-09-19 2016-10-12 沖電気工業株式会社 Cache device, cache program, and content distribution system
US8782777B2 (en) 2012-09-27 2014-07-15 International Business Machines Corporation Use of synthetic context-based objects to secure data stores
US9741138B2 (en) 2012-10-10 2017-08-22 International Business Machines Corporation Node cluster relationships in a graph database
US9137131B1 (en) * 2013-03-12 2015-09-15 Skyhigh Networks, Inc. Network traffic monitoring system and method to redirect network traffic through a network intermediary
US8931109B2 (en) 2012-11-19 2015-01-06 International Business Machines Corporation Context-based security screening for accessing data
US20140177825A1 (en) * 2012-12-20 2014-06-26 Protegrity Corporation Asymmetric Tokenization
US9229932B2 (en) 2013-01-02 2016-01-05 International Business Machines Corporation Conformed dimensional data gravity wells
US8914413B2 (en) 2013-01-02 2014-12-16 International Business Machines Corporation Context-based data gravity wells
US8983981B2 (en) 2013-01-02 2015-03-17 International Business Machines Corporation Conformed dimensional and context-based data gravity wells
US9276869B2 (en) * 2013-01-02 2016-03-01 International Business Machines Corporation Dynamically selecting an identity provider for a single sign-on request
US9021262B2 (en) * 2013-01-25 2015-04-28 Concurix Corporation Obfuscating trace data
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9207969B2 (en) 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US8856946B2 (en) 2013-01-31 2014-10-07 International Business Machines Corporation Security filter for context-based data gravity wells
US9053102B2 (en) 2013-01-31 2015-06-09 International Business Machines Corporation Generation of synthetic context frameworks for dimensionally constrained hierarchical synthetic context-based objects
US9069752B2 (en) 2013-01-31 2015-06-30 International Business Machines Corporation Measuring and displaying facets in context-based conformed dimensional data gravity wells
JP6064636B2 (en) * 2013-02-06 2017-01-25 株式会社リコー Information processing system, information processing apparatus, authentication method, and program
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US9292506B2 (en) 2013-02-28 2016-03-22 International Business Machines Corporation Dynamic generation of demonstrative aids for a meeting
US9110722B2 (en) 2013-02-28 2015-08-18 International Business Machines Corporation Data processing work allocation
CN104038510B (en) * 2013-03-04 2018-11-09 腾讯科技(深圳)有限公司 The realization method and system of iOS system Transparent Proxy
US9398102B2 (en) 2013-03-06 2016-07-19 Netskope, Inc. Security for network delivered services
US9948648B1 (en) * 2013-03-14 2018-04-17 Dell Software Inc. System and method for enforcing access control to publicly-accessible web applications
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
WO2014146198A1 (en) * 2013-03-18 2014-09-25 Cloudmask Systems and methods for intercepting, processing, and protecting user data through web application pattern detection
US9246885B2 (en) 2013-04-02 2016-01-26 International Business Machines Corporation System, method, apparatus and computer programs for securely using public services for private or enterprise purposes
US10152526B2 (en) 2013-04-11 2018-12-11 International Business Machines Corporation Generation of synthetic context objects using bounded context objects
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9634935B2 (en) * 2013-04-24 2017-04-25 Secured Connectivity, Llc Method, name server, and system for directing network traffic utilizing profile records
US9195608B2 (en) 2013-05-17 2015-11-24 International Business Machines Corporation Stored data analysis
US9348794B2 (en) 2013-05-17 2016-05-24 International Business Machines Corporation Population of context-based data gravity wells
CN104184774B (en) * 2013-05-24 2017-12-26 阿里巴巴集团控股有限公司 A kind of information processing method and system based on sandbox environment
US9081978B1 (en) * 2013-05-30 2015-07-14 Amazon Technologies, Inc. Storing tokenized information in untrusted environments
WO2014195905A2 (en) * 2013-06-07 2014-12-11 Telefonaktiebolaget L M Ericsson (Publ) Optimization of resource urls in machine-to-machine networks
US9124569B2 (en) * 2013-06-14 2015-09-01 Microsoft Technology Licensing, Llc User authentication in a cloud environment
US9654473B2 (en) 2013-06-28 2017-05-16 Bmc Software, Inc. Authentication proxy agent
US9553867B2 (en) * 2013-08-01 2017-01-24 Bitglass, Inc. Secure application access system
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
WO2015048349A1 (en) * 2013-09-25 2015-04-02 Mcafee Inc. Proxy authentication for single sign-on
US9237006B2 (en) * 2013-09-30 2016-01-12 Protegrity Corporation Table-connected tokenization
US9111074B1 (en) * 2013-10-03 2015-08-18 Google Inc. Login synchronization for related websites
US9275242B1 (en) * 2013-10-14 2016-03-01 Trend Micro Incorporated Security system for cloud-based emails
WO2015070260A1 (en) * 2013-11-11 2015-05-14 Adallom, Inc. Cloud service security broker and proxy
US9772927B2 (en) 2013-11-13 2017-09-26 Microsoft Technology Licensing, Llc User interface for selecting tracing origins for aggregating classes of trace data
US9386007B2 (en) 2013-12-27 2016-07-05 Sap Se Multi-domain applications with authorization and authentication in cloud environment
US9294462B2 (en) * 2014-01-15 2016-03-22 Cisco Technology, Inc. Redirect to inspection proxy using single-sign-on bootstrapping
US20150254577A1 (en) * 2014-03-07 2015-09-10 NetSuite Inc. System and methods for location based management of cloud platform data
US9519802B2 (en) * 2014-05-07 2016-12-13 American Express Travel Related Services Company, Inc. Systems and methods for document and data protection
US9083739B1 (en) 2014-05-29 2015-07-14 Shape Security, Inc. Client/server authentication using dynamic credentials
US10324702B2 (en) 2014-09-12 2019-06-18 Microsoft Israel Research And Development (2002) Ltd. Cloud suffix proxy and a method thereof
US10296630B2 (en) 2014-10-10 2019-05-21 Salesforce.Com, Inc. Graph representation of data extraction for use with a data repository
US9973475B2 (en) * 2014-10-22 2018-05-15 Protegrity Corporation Data computation in a multi-domain cloud environment
TW201621695A (en) * 2014-12-02 2016-06-16 鴻海精密工業股份有限公司 Cloud agent, cloud storage and file transferring method
US9654518B2 (en) * 2014-12-05 2017-05-16 Cisco Technology, Inc. Stack fusion software communication service
CN107534557B (en) 2015-01-26 2021-07-09 移动熨斗公司 Identity agent providing access control and single sign-on
US9971838B2 (en) 2015-02-20 2018-05-15 International Business Machines Corporation Mitigating subjectively disturbing content through the use of context-based data gravity wells
US9928377B2 (en) 2015-03-19 2018-03-27 Netskope, Inc. Systems and methods of monitoring and controlling enterprise information stored on a cloud computing service (CCS)
CN114153702A (en) * 2015-04-03 2022-03-08 甲骨文国际公司 Method and system for implementing a log parser in a log analysis system
US11727025B2 (en) 2015-04-03 2023-08-15 Oracle International Corporation Method and system for implementing a log parser in a log analytics system
US11226975B2 (en) 2015-04-03 2022-01-18 Oracle International Corporation Method and system for implementing machine learning classifications
EP3308321B1 (en) * 2015-06-09 2021-08-04 Datex Inc. Peripheral bus security interface and method
US10110566B2 (en) 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
JP6887429B2 (en) * 2015-10-23 2021-06-16 オラクル・インターナショナル・コーポレイション Automatic behavior detection on protected fields with support for integrated search
US10193953B2 (en) * 2015-10-23 2019-01-29 Oracle International Corporation Self describing configuration
US10592684B2 (en) 2015-10-23 2020-03-17 Oracle International Corporation Automatic operation detection on protected field
US10496837B2 (en) * 2015-10-23 2019-12-03 Oracle International Corporation Support sharing the same table for protected and non-protected data columns
EP3365832B1 (en) * 2015-10-23 2021-11-03 Oracle International Corporation Self describing configuration with support for sharing data tables
US10586061B2 (en) 2015-10-23 2020-03-10 Oracle International Corporation Federated search
US10320761B2 (en) * 2015-11-02 2019-06-11 Servicenow, Inc. Selective encryption configuration
WO2017078715A1 (en) * 2015-11-05 2017-05-11 Aruba Networks Inc. Policy enforcement based on host value classification
US9807087B2 (en) 2015-11-24 2017-10-31 International Business Machines Corporation Using an out-of-band password to provide enhanced SSO functionality
US10305882B2 (en) * 2015-11-24 2019-05-28 International Business Machines Corporation Using a service-provider password to simulate F-SSO functionality
US10095860B1 (en) 2015-12-09 2018-10-09 Amazon Technologies, Inc. Validating sign-out implementation for identity federation
US9832200B2 (en) 2015-12-14 2017-11-28 Bank Of America Corporation Multi-tiered protection platform
US9992163B2 (en) 2015-12-14 2018-06-05 Bank Of America Corporation Multi-tiered protection platform
US9832229B2 (en) 2015-12-14 2017-11-28 Bank Of America Corporation Multi-tiered protection platform
US10628420B2 (en) * 2015-12-18 2020-04-21 Ca, Inc. Dynamic virtual service
US11403418B2 (en) 2018-08-30 2022-08-02 Netskope, Inc. Enriching document metadata using contextual information
US11425169B2 (en) 2016-03-11 2022-08-23 Netskope, Inc. Small-footprint endpoint data loss prevention (DLP)
US11405423B2 (en) 2016-03-11 2022-08-02 Netskope, Inc. Metadata-based data loss prevention (DLP) for cloud resources
US10176341B2 (en) * 2016-03-18 2019-01-08 Oracle International Corporation Systems and methods for providing data residency protection using remote proxies
US10979396B2 (en) * 2016-05-25 2021-04-13 Ravi Ganesan Augmented design for a triple blinded identity system
CN105897743A (en) * 2016-05-26 2016-08-24 努比亚技术有限公司 Cross-domain single sign-on method and server
US10270788B2 (en) 2016-06-06 2019-04-23 Netskope, Inc. Machine learning based anomaly detection
US10476907B2 (en) 2016-08-10 2019-11-12 Netskope, Inc. Systems and methods of detecting and responding to a data attack on a file system
US10389688B2 (en) * 2016-08-23 2019-08-20 NXT-Security, LLC Vaultless tokenization engine
US10382428B2 (en) * 2016-09-21 2019-08-13 Mastercard International Incorporated Systems and methods for providing single sign-on authentication services
US10387670B2 (en) * 2016-09-21 2019-08-20 International Business Machines Corporation Handling sensitive data in an application using external processing
US10171431B2 (en) 2016-09-21 2019-01-01 International Business Machines Corporation Secure message handling of an application across deployment locations
US10356039B1 (en) * 2016-09-30 2019-07-16 Amdocs Development Limited Apparatus, computer program, and method for utilizing a data structure to access fully qualified domain name information
US10243946B2 (en) 2016-11-04 2019-03-26 Netskope, Inc. Non-intrusive security enforcement for federated single sign-on (SSO)
US10284557B1 (en) 2016-11-17 2019-05-07 EMC IP Holding Company LLC Secure data proxy for cloud computing environments
US10659433B2 (en) * 2016-11-30 2020-05-19 Salesforce.Com, Inc. Encrypting and securing data with reverse proxies across frames in an on-demand services environment
DE102016224455A1 (en) * 2016-12-08 2018-06-14 Bundesdruckerei Gmbh Database index of several fields
DE102016224470A1 (en) * 2016-12-08 2018-06-14 Bundesdruckerei Gmbh Server computer system for providing data records
US11089028B1 (en) 2016-12-21 2021-08-10 Amazon Technologies, Inc. Tokenization federation service
US10607017B2 (en) * 2017-01-04 2020-03-31 Ca, Inc. Restricting access to sensitive data using tokenization
US10802796B1 (en) * 2017-01-30 2020-10-13 Pivotal Software, Inc. Distributed sorted set
EP3583473A1 (en) * 2017-02-20 2019-12-25 Lutron Technology Company LLC Integrating and controlling multiple load control systems
US10382450B2 (en) * 2017-02-21 2019-08-13 Sanctum Solutions Inc. Network data obfuscation
US11128437B1 (en) 2017-03-30 2021-09-21 EMC IP Holding Company LLC Distributed ledger for peer-to-peer cloud resource sharing
US10778684B2 (en) * 2017-04-07 2020-09-15 Citrix Systems, Inc. Systems and methods for securely and transparently proxying SAAS applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility
US10805352B2 (en) 2017-04-21 2020-10-13 Netskope, Inc. Reducing latency in security enforcement by a network security system (NSS)
US11030328B2 (en) * 2017-05-31 2021-06-08 Entrust Corporation Cryptographic object management across multiple remote sites
US10645183B2 (en) 2017-06-26 2020-05-05 Microsoft Technology Licensing, Llc Redirection of client requests to multiple endpoints
CN107332924B (en) * 2017-07-27 2020-06-23 奇安信科技集团股份有限公司 Reverse proxy method and device based on dynamic URL replacement
US10949486B2 (en) 2017-09-20 2021-03-16 Citrix Systems, Inc. Anchored match algorithm for matching with large sets of URL
US10601580B2 (en) * 2017-11-20 2020-03-24 International Business Machines Corporation Secure order preserving string compression
US11063745B1 (en) 2018-02-13 2021-07-13 EMC IP Holding Company LLC Distributed ledger for multi-cloud service automation
US10841313B2 (en) * 2018-02-21 2020-11-17 Nutanix, Inc. Substituting callback URLs when using OAuth protocol exchanges
RU2696240C1 (en) 2018-03-30 2019-07-31 Акционерное общество "Лаборатория Касперского" Method for anonymous communication in client-server architecture
US10728219B2 (en) * 2018-04-13 2020-07-28 R3 Ltd. Enhancing security of communications during execution of protocol flows
DE102018112742A1 (en) 2018-05-28 2019-11-28 Comforte Ag A computer-implemented method of passing a data string from an application to a privacy device
US10706746B2 (en) * 2018-06-01 2020-07-07 Polyverse Corporation Pure binary scrambling
CN108875086B (en) * 2018-07-18 2023-03-28 山东中创软件商用中间件股份有限公司 Matching method and system of URI path resources
US11681944B2 (en) 2018-08-09 2023-06-20 Oracle International Corporation System and method to generate a labeled dataset for training an entity detection system
US10783270B2 (en) 2018-08-30 2020-09-22 Netskope, Inc. Methods and systems for securing and retrieving sensitive data using indexable databases
US10938801B2 (en) * 2018-09-21 2021-03-02 Microsoft Technology Licensing, Llc Nonce handler for single sign on authentication in reverse proxy solutions
AU2019280105B1 (en) * 2018-09-21 2020-01-30 Citrix Systems, Inc. Systems and methods for intercepting and enhancing SaaS application calls via embedded browser
US11310204B2 (en) * 2018-11-13 2022-04-19 Sap Se Centralized access to data repository from a multi-cloud computing environment
US11159510B2 (en) * 2018-12-05 2021-10-26 Bank Of America Corporation Utilizing federated user identifiers to enable secure information sharing
US11176230B2 (en) 2018-12-05 2021-11-16 Bank Of America Corporation Processing authentication requests to secured information systems based on user behavior profiles
US11416641B2 (en) 2019-01-24 2022-08-16 Netskope, Inc. Incident-driven introspection for data loss prevention
US11397833B2 (en) 2019-03-29 2022-07-26 AO Kaspersky Lab System and method for anonymously collecting malware related data from client devices
RU2728503C1 (en) 2019-03-29 2020-07-29 Акционерное общество "Лаборатория Касперского" Confidential data transmission method
US11297040B2 (en) * 2019-05-01 2022-04-05 Akamai Technologies, Inc. Intermediary handling of identity services to guard against client side attack vectors
US10664615B1 (en) 2019-05-22 2020-05-26 Capital One Services, Llc Methods and systems for adapting an application programming interface
US11288398B2 (en) 2019-06-03 2022-03-29 Jpmorgan Chase Bank, N.A. Systems, methods, and devices for obfuscation of browser fingerprint data on the world wide web
RU2739862C2 (en) 2019-06-28 2020-12-29 Акционерное общество "Лаборатория Касперского" Method for adaptive selection of user data transmission paths
US11381393B2 (en) 2019-09-24 2022-07-05 Akamai Technologies Inc. Key rotation for sensitive data tokenization
CN114586020A (en) * 2019-09-27 2022-06-03 亚马逊技术有限公司 On-demand code obfuscation of data in an input path of an object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11652813B2 (en) * 2019-10-04 2023-05-16 Mastercard International Incorporated Systems and methods for real-time identity verification using a token code
US11449636B2 (en) 2019-10-04 2022-09-20 Mastercard International Incorporated Systems and methods for secure provisioning of data using secure tokens
US11856022B2 (en) 2020-01-27 2023-12-26 Netskope, Inc. Metadata-based detection and prevention of phishing attacks
US11481501B2 (en) * 2020-01-31 2022-10-25 Sap Se Low false positive token identification in source code repositories using machine learning
FR3107416B1 (en) * 2020-02-14 2022-02-04 Amadeus Sas EFFICIENT RANDOM TOKENIZATION IN A DEMATERIALIZED ENVIRONMENT
US10832656B1 (en) 2020-02-25 2020-11-10 Fawzi Shaya Computing device and method for populating digital forms from un-parsed data
RU2755251C2 (en) * 2020-02-26 2021-09-14 Акционерное общество "Лаборатория Касперского" Method for obtaining anonymous data
RU2766134C2 (en) 2020-02-26 2022-02-08 Акционерное общество "Лаборатория Касперского" Method of anonymously sending data from a user device
US11381545B2 (en) * 2020-05-22 2022-07-05 Microsoft Technology Licensing, Llc Multi-layer navigation based security certificate checking
CN111614782B (en) * 2020-05-29 2021-01-29 上海挚达科技发展有限公司 New forms of energy heavy truck networking platform vehicle management system based on SAAS mode
US10867073B1 (en) 2020-06-03 2020-12-15 Netskope, Inc. Detecting organization image-borne sensitive documents and protecting against loss of the sensitive documents
US10990856B1 (en) 2020-06-03 2021-04-27 Netskope, Inc. Detecting image-borne identification documents for protecting sensitive information
RU2749182C1 (en) * 2020-06-19 2021-06-07 Акционерное общество "Лаборатория Касперского" Method for transferring data to server using public key
CN112511316B (en) * 2020-12-08 2023-04-07 深圳依时货拉拉科技有限公司 Single sign-on access method and device, computer equipment and readable storage medium
US11809493B2 (en) * 2021-01-19 2023-11-07 Micro Focus Llc System and method for tokenization of data
US11463362B2 (en) 2021-01-29 2022-10-04 Netskope, Inc. Dynamic token bucket method adaptive to opaque server limits
US11848949B2 (en) 2021-01-30 2023-12-19 Netskope, Inc. Dynamic distribution of unified policies in a cloud-based policy enforcement system
US11734408B2 (en) * 2021-07-15 2023-08-22 Citrix Systems, Inc. Remapping of uniform resource locators for accessing network applications
US11475158B1 (en) 2021-07-26 2022-10-18 Netskope, Inc. Customized deep learning classifier for detecting organization sensitive data in images on premises
CN115883119A (en) * 2021-09-29 2023-03-31 富联精密电子(天津)有限公司 Service verification method, electronic device and storage medium
US11503038B1 (en) 2021-10-27 2022-11-15 Netskope, Inc. Policy enforcement and visibility for IaaS and SaaS open APIs
US20230247004A1 (en) * 2022-01-31 2023-08-03 Microsoft Technology Licensing, Llc Persistency of resource requests and responses in proxied communications

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5270712A (en) 1992-04-02 1993-12-14 International Business Machines Corporation Sort order preserving method for data storage compression
US6981217B1 (en) 1998-12-08 2005-12-27 Inceptor, Inc. System and method of obfuscating data
EP1016982A1 (en) 1998-12-30 2000-07-05 LION Bioscience AG Method and apparatus of processing semistructured textual data
US6081900A (en) 1999-03-16 2000-06-27 Novell, Inc. Secure intranet access
US7814208B2 (en) 2000-04-11 2010-10-12 Science Applications International Corporation System and method for projecting content beyond firewalls
JP2001344537A (en) 2000-05-31 2001-12-14 Ntt Docomo Inc Electronic value system, communication terminal and server
US6996841B2 (en) 2001-04-19 2006-02-07 Microsoft Corporation Negotiating secure connections through a proxy server
ES2328025T3 (en) 2001-10-09 2009-11-06 Mayo Foundation For Medical Education And Research IMPROVEMENT OF IMMUNE RESPONSES BY AGONIST ANTIBODIES 4-1 BB.
JP4179535B2 (en) 2002-09-03 2008-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーション Network system, reverse proxy, computer apparatus, data processing method and program
US7003117B2 (en) * 2003-02-05 2006-02-21 Voltage Security, Inc. Identity-based encryption system for secure data distribution
US7788711B1 (en) * 2003-10-09 2010-08-31 Oracle America, Inc. Method and system for transferring identity assertion information between trusted partner sites in a network using artifacts
US20060048216A1 (en) * 2004-07-21 2006-03-02 International Business Machines Corporation Method and system for enabling federated user lifecycle management
US20060021018A1 (en) * 2004-07-21 2006-01-26 International Business Machines Corporation Method and system for enabling trust infrastructure support for federated user lifecycle management
US7562382B2 (en) 2004-12-16 2009-07-14 International Business Machines Corporation Specializing support for a federation relationship
US7739744B2 (en) 2006-03-31 2010-06-15 Novell, Inc. Methods and systems for multifactor authentication
US9002018B2 (en) * 2006-05-09 2015-04-07 Sync Up Technologies Corporation Encryption key exchange system and method
CN101411117B (en) 2006-05-21 2011-12-14 国际商业机器公司 Assertion message signatures
GB0621684D0 (en) 2006-10-31 2006-12-06 British Telecomm Secure access
TW200924534A (en) * 2007-06-04 2009-06-01 Objectvideo Inc Intelligent video network protocol
US8341104B2 (en) 2007-08-16 2012-12-25 Verizon Patent And Licensing Inc. Method and apparatus for rule-based masking of data
WO2009041319A1 (en) 2007-09-25 2009-04-02 Nec Corporation Certificate generating/distributing system, certificate generating/distributing method and certificate generating/distributing program
US9578123B2 (en) * 2008-01-08 2017-02-21 International Business Machines Corporation Light weight portal proxy
US8578176B2 (en) 2008-03-26 2013-11-05 Protegrity Corporation Method and apparatus for tokenization of sensitive sets of characters
US8990911B2 (en) * 2008-03-30 2015-03-24 Emc Corporation System and method for single sign-on to resources across a network
US9836702B2 (en) 2008-10-16 2017-12-05 International Business Machines Corporation Digital rights management (DRM)-enabled policy management for an identity provider in a federated environment
US9203913B1 (en) * 2009-07-20 2015-12-01 Conviva Inc. Monitoring the performance of a content player
US20110138453A1 (en) 2009-12-03 2011-06-09 Samsung Electronics Co., Ltd. Single sign-on in mixed http and sip environments
US8595812B2 (en) 2009-12-18 2013-11-26 Sabre Inc. Tokenized data security
KR20120120955A (en) 2010-02-09 2012-11-02 인터디지탈 패튼 홀딩스, 인크 Method and apparatus for trusted federated identity
US8458487B1 (en) 2010-03-03 2013-06-04 Liaison Technologies, Inc. System and methods for format preserving tokenization of sensitive information
US8645554B2 (en) * 2010-05-27 2014-02-04 Nokia Corporation Method and apparatus for identifying network functions based on user data
US9460307B2 (en) 2010-06-15 2016-10-04 International Business Machines Corporation Managing sensitive data in cloud computing environments
US8626853B2 (en) 2010-07-28 2014-01-07 Unwired Planet, Llc Method and system for link-triggered link-translating proxying
US8539597B2 (en) 2010-09-16 2013-09-17 International Business Machines Corporation Securing sensitive data for cloud computing
US9015819B2 (en) * 2010-11-04 2015-04-21 Zte Corporation Method and system for single sign-on
US20120124659A1 (en) * 2010-11-17 2012-05-17 Michael Craft System and Method for Providing Diverse Secure Data Communication Permissions to Trusted Applications on a Portable Communication Device
US8447983B1 (en) * 2011-02-01 2013-05-21 Target Brands, Inc. Token exchange
US8583788B2 (en) * 2011-04-20 2013-11-12 Novell, Inc. Techniques for auditing and controlling network services

Also Published As

Publication number Publication date
US20120278897A1 (en) 2012-11-01
US20120278487A1 (en) 2012-11-01
CA2775237C (en) 2015-07-07
CA2775247C (en) 2015-11-17
CA2775206A1 (en) 2012-10-27
US20120278621A1 (en) 2012-11-01
US8739265B2 (en) 2014-05-27
WO2012145827A1 (en) 2012-11-01
CA2775427A1 (en) 2012-10-27
CA2775206C (en) 2019-02-26
EP2702726B1 (en) 2019-06-19
CA2775247A1 (en) 2012-10-27
EP2702726A1 (en) 2014-03-05
US20120278504A1 (en) 2012-11-01
CA2775245A1 (en) 2012-10-27
EP2702726A4 (en) 2014-12-03
US9021135B2 (en) 2015-04-28
US9647989B2 (en) 2017-05-09
CA2775245C (en) 2020-06-16
US20120278872A1 (en) 2012-11-01

Similar Documents

Publication Publication Date Title
CA2775237C (en) System and method of sort-order preserving tokenization
JP6835999B2 (en) Virtual service provider zone
US10956376B2 (en) Accessing objects in hosted storage
US10275611B1 (en) Methods and apparatus for sharing and searching encrypted data
US10021078B2 (en) System, apparatus and method for encryption and decryption of data transmitted over a network
US11366918B1 (en) Methods and apparatus for encrypted indexing and searching encrypted data
CA2786058C (en) System, apparatus and method for encryption and decryption of data transmitted over a network
EP2702723B1 (en) System and method for data obfuscation in interception of communication with a cloud
US20170068477A1 (en) Systems and methods for storing data blocks using a set of generated logical memory identifiers
US10540379B2 (en) Searching base encoded text

Legal Events

Date Code Title Description
EEER Examination request

Effective date: 20140820