IP Library Granted Patent US 12,481,796
Granted Patent B2
US 12,481,796 · App. 17/138,552 · Granted Nov 25, 2025

Secure memory sharing

Inventors: Steven Robert Hetzler (Los Altos, CA); Guerney D. H. Hunt (Yorktown Heights, NY); Charles R. Johns (Austin, TX); James A. Kahle (Austin, TX)
Assignee: International Business Machines Corporation
G06F21/79G06F21/602G06F21/72G06F21/74
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 12,481,796
App. No.
17/138,552
Granted
Nov 25, 2025
Kind
B2
Abstract

A computer-implemented method includes, receiving, by a source node, a request from a destination node for data stored in a region of shared memory controlled by the source node. The data is encrypted in a local key of the source node. The method includes decrypting, by the source node, the locally encrypted data using the local key and encrypting, by the source node, the decrypted data using a first key for generating first encrypted data. The method also includes encrypting, by the source node, the first encrypted data using a second key for generating second encrypted data, and sending, by the source node, the second encrypted data to the destination node. A computer program product includes one or more computer readable storage media and program instructions collectively stored on the one or more computer readable storage media. The program instructions includes program instructions to perform the foregoing method.

Claims (52)

1 . A computer-implemented method, comprising:

receiving, by a source node, a request from a destination node for data stored in a region of shared memory controlled by the source node, the data being encrypted in a local key of the source node, the request originating from the destination node, wherein the shared memory has a plurality of other regions, the other regions being associated with other destination nodes, wherein data stored in the other regions of memory are protected by unique local keys associated with the other regions;

decrypting, by the source node, the locally encrypted data using the local key;

encrypting, by the source node, the decrypted data using a first key for generating first encrypted data;

encrypting, by the source node, the first encrypted data using a second key for generating second encrypted data; and

sending, by the source node, the second encrypted data to the destination node.

2 . The computer-implemented method of claim 1 , comprising sending, by the source node, the second key to the destination node, wherein the destination node is able to access the data without access to the local key of the source node.

3 . The computer-implemented method of claim 1 , wherein the region of shared memory is requestable by a plurality of destination nodes, wherein at least two of the destination nodes are associated with a different second key that is different than the second key used to generate the second encrypted data.

4 . The computer-implemented method of claim 1 , wherein the destination node is configured to decrypt the second encrypted data using the second key to obtain the first encrypted data, wherein the destination node is configured to decrypt the first encrypted data using the first key to obtain the data.

5 . A computer-implemented method, comprising:

receiving, by a destination node, second encrypted data sent by a source node in response to a request sent to the source node by the destination node,

wherein the second encrypted data is data that has been encrypted in a first key to create first encrypted data that is then encrypted in a second key to create the second encrypted data;

receiving, by the destination node, the second key;

receiving, by the destination node, the first key from a key manager located remotely from the source and destination nodes;

decrypting, by the destination node, the second encrypted data using the second key to obtain the first encrypted data; and

decrypting, by the destination node, the first encrypted data using the first key to obtain the data,

wherein the second encrypted data corresponds to data stored in a region of shared memory controlled by a source node, the region being associated with the destination node, the shared memory having a plurality of other regions associated with other destination nodes, wherein the data stored in the other regions of memory are protected by different first keys that are different than the first key.

6 . The computer-implemented method of claim 5 , wherein a local key used to encrypt the data when stored on the source node is ephemeral whereby a power outage on memory results in destruction of the local key, wherein the local key is not available to the destination node.

7 . The computer-implemented method of claim 5 , wherein the first encrypted data is stored in the region of shared memory, wherein a copy of the first key on the source node is ephemeral whereby a power outage on memory results in destruction of the first key on the source node.

8 . The computer-implemented method of claim 5 , wherein the second encrypted data corresponds to data stored in a region of shared memory controlled by a source node, wherein the data stored in the shared memory is encrypted in a local key of the source node, wherein the local key is not available to the destination node.

9 . The computer-implemented method of claim 8 , wherein the local key of the source node is ephemeral whereby a power outage on memory destroys the local key.

10 . A computer-implemented method, comprising: receiving, by a destination node, second encrypted data,

wherein the second encrypted data is data that has been encrypted in a first key to create first encrypted data that is then encrypted in a second key to create the second encrypted data, wherein the first key is associated with a region of memory controlled by a source node, wherein the memory is a shared memory having a plurality of different regions, the different regions being associated with different respective destination nodes, wherein the data stored in the different regions of memory are protected by different first keys that are different than the first key, wherein the second key is associated with the destination node;

receiving, by the destination node, the second key;

receiving, by the destination node, the first key;

decrypting, by the destination node, the second encrypted data using the second key to obtain the first encrypted data; and

decrypting, by the destination node, the first encrypted data using the first key to obtain the data.

11 . The computer-implemented method of claim 10 , wherein the second key is received from the source node.

12 . The computer-implemented method of claim 10 , wherein the second encrypted data corresponds to the region of memory controlled by the source node, wherein the first key is ephemeral whereby a power outage on memory destroys the first key.

13 . The computer-implemented method of claim 10 , comprising replacing, by the destination node, the second key with a dummy key for ending data sharing between the source node and the destination node.

14 . The computer-implemented method of claim 10 , wherein the region of memory controlled by the source node is requested by a plurality of destination nodes, wherein each destination node is associated with the same second key.

15 . A computer-implemented method, comprising:

receiving, by a transcoder, second encrypted data,

wherein the second encrypted data is data stored in a region of shared memory controlled by a source node, the data being encrypted in a first key to create first encrypted data that is then encrypted in a second key to create the second encrypted data;

receiving, by the transcoder, the second key;

decrypting, by the transcoder, the second encrypted data using the second key to obtain the first encrypted data;

encrypting, by the transcoder, the first encrypted data using a third key to create third encrypted data;

sending, by the transcoder, the third key to a destination node; and

sending, by the transcoder, the third encrypted data to the destination node,

wherein the second key is received from the source node, wherein the shared memory has a plurality of other regions, the other regions being associated with other destination nodes, wherein data stored in the other regions of memory are protected by unique local keys associated with the other regions.

16 . The computer-implemented method of claim 15 , wherein the third key is received from a transcoder manager.

17 . The computer-implemented method of claim 15 , wherein the second encrypted data corresponds to the region of memory controlled by the source node.

18 . The computer-implemented method of claim 15 , wherein the region of memory controlled by the source node is requested by the destination node.

19 . The computer-implemented method of claim 15 , wherein the region of memory controlled by the source node is requested by a plurality of destination nodes, wherein each destination node is associated with the same first key, wherein at least two of the destination nodes are each associated with a different second key.

20 . The computer-implemented method of claim 15 , wherein the destination node is configured to decrypt the third encrypted data using the third key to obtain the first encrypted data, wherein the destination node is configured to decrypt the first encrypted data using the first key to obtain the data.

21 . A computer program product, the computer program product comprising:

one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising:

program instructions to receive, by a source node, a request from a destination node for data stored in a region of shared memory of the source node, the data being encrypted in a local key of the source node, the shared memory having a plurality of other regions, the other regions being associated with other destination nodes, wherein the other regions of the shared memory are associated with distinct first keys corresponding to the other regions, wherein the other destination nodes are associated with distinct second keys corresponding to the other destination nodes;

program instructions to decrypt, by the source node, the locally encrypted data using the local key;

program instructions to encrypt, by the source node, the decrypted data using a first key for generating first encrypted data;

program instructions to encrypt, by the source node, the first encrypted data using a second key for generating second encrypted data; and

program instructions to send, by the source node, the second encrypted data to the destination node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2021
From: HETZLER, STEVEN ROBERT; HUNT, GUERNEY D. H.; JOHNS, CHARLES R.; KAHLE, JAMES A.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 054819/0370 →
Continuity (1)
Related Publication 20220207191A1 · Jun 30, 2022
References Cited (54)
US 5940870A · Chi · 1999 [cited by examiner]
US 7181017B1 · Nagel et al. · 2007 [cited by applicant]
US 7548987B2 · Jabri et al. · 2009 [cited by applicant]
US 8904181B1 · Felsher et al. · 2014 [cited by applicant]
US 8966287B2 · Bogorad · 2015 [cited by applicant]
US 9104618B2 · Sela et al. · 2015 [cited by applicant]
US 9342466B2 · Shapiro · 2016 [cited by applicant]
US 9800560B1 · Guo et al. · 2017 [cited by applicant]
US 9847979B2 · Peterka et al. · 2017 [cited by applicant]
US 10033702B2 · Ford et al. · 2018 [cited by applicant]
US 10127389B1 · Roth · 2018 [cited by examiner]
US 10528485B2 · Chhabra et al. · 2020 [cited by applicant]
US 10735137B2 · Yanovsky et al. · 2020 [cited by applicant]
US 20050256742A1 · Kohan · 2005 [cited by examiner]
US 20080049942A1 · Sprunk · 2008 [cited by examiner]
US 20120110327A1 · Doerner · 2012 [cited by examiner]
US 20120284522A1 · Lewis · 2012 [cited by examiner]
US 20130097421A1 · Lim · 2013 [cited by examiner]
US 20150163053A1 · Izu · 2015 [cited by examiner]
US 20160182229A1 · Glickman · 2016 [cited by examiner]
US 20160275309A1 · Austin · 2016 [cited by examiner]
US 20160335201A1 · Lea · 2016 [cited by examiner]
US 20190386957A1 · Leon · 2019 [cited by examiner]
US 20200134207A1 · Doshi et al. · 2020 [cited by applicant]
US 20200313880A1 · Marinet · 2020 [cited by examiner]
US 20210067495A1 · Yuting · 2021 [cited by examiner]
US 20210167955A1 · Rameez · 2021 [cited by examiner]
CN 102065135A · 2011 [cited by applicant]
CN 108768633A · 2018 [cited by applicant]
CN 112133396A · 2020 [cited by applicant]
CN 112150147A · 2020 [cited by applicant]
CN 116745766A · 2023 [cited by applicant]
DE 112021005979T5 · 2023 [cited by applicant]
EP 1220079A2 · 2002 [cited by applicant]
GB 2616811A · 2023 [cited by applicant]
JP H04181282A · 1992 [cited by applicant]
JP 2016152041A · 2016 [cited by applicant]
JP 2017537538A · 2017 [cited by applicant]
JP 2024501168A · 2024 [cited by applicant]
WO 2016126296A1 · 2016 [cited by applicant]
WO 2022144643A1 · 2022 [cited by applicant]
Wu et al., “Comprehensive VM Protection against Untrusted Hypervisor through Retrofitted AMD Memory Encryption,” IEEE International Symposium on High Performance Computer Architecture, 2018, pp. 441-453. [cited by applicant]
Furtak, J., “Cryptographic Keys Generating and Renewing System for IoT Network Nodes—A Concept,” Sensors, vol. 20, 2020, pp. 1-31. [cited by applicant]
Olakanmi et al., “An efficient point-to-point security solution for multihop routing in wireless sensor networks,” Wiley, Special Issue Article, 2019, pp. 1-14. [cited by applicant]
Dang et al., “The Meeting of Acquaintances: A Cost-Efficient Authentication Scheme for Light-Weight Objects with Transient Trust Level and Plurality Approach,” Hindawi, Security and Communication Networks, Wol. 2019, Ap… [cited by applicant]
Chan et al., “PIKE: Peer Intermediaries for Key Establishment in Sensor Networks,” Proceedings IEEE 24th Annual Joint Conference of the IEEE Computer and Communications Societies, 2005, 13 pages, retrieved from https://… [cited by applicant]
Wikipedia, “Transcoding,” Wikipedia, 2020, 4 pages, retrieved from https://en.wikipedia.org/wiki/Transcoding. [cited by applicant]
Anonymous, “NIST Cloud Computing Program,” NIST, Information Technology Laboratory, Nov. 13, 2013, pp. 1-2, retrieved from www.nist.gov/itl/cloud/. [cited by applicant]
Mell et al., “The NIST Definition of Cloud Computing,” Version 15, Oct. 7, 2009, pp. 1-2. [cited by applicant]
Mell et al., “The NIST Definition of Cloud Computing,” Recommendations of the National Institute of Standards and Technology, NIST Special Publication 800-145, Sep. 2011, pp. 1-7. [cited by applicant]
CSRC, “Cloud Computing,” Computer Security Resource Center, Oct. 2017, 3 pages, retrieved from https://csrc.nist.gov/projects/cloud-computing. [cited by applicant]
Hetzler et al., U.S. Appl. No. 17/138,539, filed Dec. 30, 2020. [cited by applicant]
International Search Report and Written Opinion from PCT Application No. PCT/IB2021/061458, dated Mar. 16, 2022. [cited by applicant]
Japan Patent Office, “Notice of Reasons for Refusal” Jun. 2, 2025, 12 Pages, JP Application No. 2023-534079. [cited by applicant]