IP Library Granted Patent US 8,954,724
Granted Patent B2
US 8,954,724 · App. 13/766,999 · Granted Feb 10, 2015

Anonymization of data within a streams environment

Inventors: Michael J. Branson (Rochester, MN); Ryan K. Cradick (Oronoco, MN); John M. Santosuosso (Rochester, MN); Brandon W. Schulz (Rochester, MN)
Assignee: International Business Machines Corporation
H04L9/00H04L9/088
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,954,724
App. No.
13/766,999
Granted
Feb 10, 2015
Kind
B2
Abstract

Streams applications may decrypt encrypted data even though the decrypted data is not used by an operator. Operator properties are defined to permit decryption of data within the operator based on a number of criteria. By limiting the number of operators that decrypt encrypted data, the anonymous nature of the data is further preserved. Operator properties also indicate whether an operator should send encrypted or decrypted data to a downstream operator.

Claims (46)

1. A method, comprising:

providing a plurality of processing elements comprising one or more operators, the operators configured to process streaming data tuples by operation of one or more computer processors;

defining attributes of the operators, wherein the attributes comprise at least an access indicator defining processing rules for tuples containing encrypted data;

establishing an operator graph of a plurality of operators, the operator graph defining at least one execution path in which a first operator of the plurality of operators is configured to receive data tuples from at least one upstream operator and transmit data tuples to at least one downstream operator;

upon receiving a first data stream having a first tuple containing encrypted data in the first operator, determining, based on the access indicator of the first operator, whether to decrypt the encrypted data in the first operator;

upon determining that the access indicator of the first operator permits decryption of the encrypted data based on a windowing condition existing within the first operator, decrypting the encrypted data, wherein the windowing condition is defined by the presence of both the first tuple and a predefined set of tuples within a window of the first operator during a predefined period of time; and

transmitting the tuple to a second operator, downstream from the first operator.

2. The method of claim 1 , wherein the processing rules of the access indicator further comprises at least one of:

ignoring, in the operator, tuples that contain encrypted data, wherein ignoring the tuple indicates that the encrypted data is not decrypted;

ignoring, in the operator, tuples that contain encrypted data in predefined attributes, wherein ignoring the tuple indicates that the encrypted data in the predefined attributes is not decrypted;

decrypting, in the operator, encrypted data within a tuple; and

decrypting, in the operator, encrypted data for a limited purpose.

3. The method of claim 2 , wherein the limited purpose comprises at least one of:

decrypting to perform a join operation on at least a first tuple and a second tuple;

decrypting to perform a windowing operation;

decrypting to perform grouping within an aggregate function; and

decrypting to perform a sort.

4. The method of claim 1 , wherein decrypting the encrypted data comprises at least one of:

decrypting the encrypted data within the operator;

decrypting the encrypted data by moving the operator and the state of the operator to a predetermined node to perform the decryption;

decrypting the encrypted data using a second data in the first tuple; and

decrypting the encrypted data using a key from a second tuple in a second data stream.

5. The method of claim 1 , wherein transmitting the first tuple comprises:

upon determining the access indicator of the second operator does not permit the second operator to receive unencrypted data, transmitting the encrypted data to the second operator;

upon determining the access indicator of the second operator permits the second operator to receive unencrypted data, transmitting the decrypted data to the second operator;

upon determining that a computing system hosting the processing element containing the second operator is not permitted to receive unencrypted data, transmitting the encrypted data to the second operator; and

upon determining that a computing system hosting the processing element containing the second operator is permitted to receive unencrypted data, transmitting the decrypted data to the second operator.

6. The method of claim 1 , wherein the first tuple is transmitted upon determining that the number of tuples received in the first operator exceed a predefined threshold.

7. A method, comprising:

providing a plurality of processing elements comprising one or more operators, the operators configured to process streaming data tuples by operation of one or more computer processors;

defining attributes of the operators, wherein the attributes comprise at least an access indicator defining processing rules for tuples containing encrypted data;

establishing an operator graph of a plurality of operators, the operator graph defining at least one execution path in which a first operator of the plurality of operators is configured to receive data tuples from at least one upstream operator and transmit data tuples to at least one downstream operator;

upon receiving a first data stream having a first tuple containing encrypted data in the first operator, determining, based on the access indicator of the first operator, whether to decrypt the encrypted data in the first operator;

upon determining the access indicator of the first operator permits decryption of the encrypted data, decrypting the encrypted data; and

transmitting the tuple to a second operator, downstream from the first operator, wherein transmitting the first tuple comprises:

upon determining the access indicator of the second operator does not permit the second operator to receive unencrypted data, transmitting the encrypted data to the second operator; and

upon determining the access indicator of the second operator permits the second operator to receive unencrypted data, transmitting the decrypted data to the second operator.

8. A method, comprising:

providing a plurality of processing elements comprising one or more operators, the operators configured to process streaming data tuples by operation of one or more computer processors;

defining attributes of the operators, wherein the attributes comprise at least an access indicator defining processing rules for tuples containing encrypted data;

establishing an operator graph of a plurality of operators, the operator graph defining at least one execution path in which a first operator of the plurality of operators is configured to receive data tuples from at least one upstream operator and transmit data tuples to at least one downstream operator;

upon receiving a first data stream having a first tuple containing encrypted data in the first operator, determining, based on the access indicator of the first operator, whether to decrypt the encrypted data in the first operator;

upon determining the access indicator of the first operator permits decryption of the encrypted data, decrypting the encrypted data; and

transmitting the tuple to a second operator, downstream from the first operator, wherein transmitting the first tuple comprises:

upon determining that a computing system hosting the processing element containing the second operator is not permitted to receive unencrypted data, transmitting the encrypted data to the second operator; and

upon determining that a computing system hosting the processing element containing the second operator is permitted to receive unencrypted data, transmitting the decrypted data to the second operator.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: AIRBNB, INC.
Reel/Frame 056427/0193 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2013
From: BRANSON, MICHAEL J.; CRADICK, RYAN K.; SANTOSUOSSO, JOHN M.; SCHULZ, BRANDON W.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 029812/0112 →
Continuity (2)
Continuation 13467593 · May 9, 2012
Related Publication 20130305034A1 · Nov 14, 2013