Computing system and method for tracking protected data

EP4743945A1Pending Publication Date: 2026-05-20HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
Filing Date
2024-01-03
Publication Date
2026-05-20

AI Technical Summary

Technical Problem

Existing Data Loss Prevention (DLP) systems are ineffective in protecting encrypted data and struggle with memory-related bugs like use-after-free and read-before-write, which create security vulnerabilities and are difficult to track across on-premises, cloud-based locations, and endpoint devices, with existing memory debugging tools being slow and unsuitable for large projects.

Method used

A computing system that uses hardware-based flags to mark protected data in memory, eliminating memory-related bugs and ensuring robust data protection by integrating a 'is_protected' flag to data, which is resistant to tampering and compatible with existing software architectures without performance impact.

Benefits of technology

The system provides consistent security measures against unauthorized access, eliminating memory bugs without altering user space software and ensuring reliable performance, enabling robust data protection in virtualized environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024070303_10072025_PF_FP_ABST
    Figure CN2024070303_10072025_PF_FP_ABST
Patent Text Reader

Abstract

A computing system 102 for tracking protected data in a memory 104, that includes the memory 104 and one or more memory controllers 106A-N configured to access the memory. The memory 104 includes an is_protected flag 110 indicating if the memory 104 is protected or not. The computing system 102 further includes a read_protected flag 108 associated with a process that indicates whether the process is allowed to read protected data. The one or more memory controllers 106A-N are configured to receive data. The one or more memory controllers 106A-N are configured to store the data in the memory 104. The one or more memory controllers 106A-N are configured to determine if the data is protected, and the one or more memory controllers 106A-N are configured to set the is_protected flag 110 of the memory 104 to indicate that the memory 104 is protected if the data is protected.
Need to check novelty before this filing date? Find Prior Art

Description

COMPUTING SYSTEM AND METHOD FOR TRACKING PROTECTED DATATECHNICAL FIELD

[0001] The disclosure generally relates to tracking protected data, and more particularly, the disclosure relates to a computing system for tracking protected data in a memory, and a method for tracking protected data in the computing system.BACKGROUND

[0002] Data leakage prevention, DLP is a security solution that identifies and prevents unsafe or inappropriate sharing, transfer, or use of sensitive data i.e. protected data or information of an organization. The DLP monitors and protects the sensitive data of the organization across on-premises systems, cloud-based locations, and endpoint devices. The DLP ensures that the organization complies with rules and regulations, such as Health Insurance Portability and Accountability Act, HIPAA, and General Data Protection Regulation, GDPR. Yet, the DLP cannot effectively protect the sensitive data that is encrypted. Since the DLP is software-based, the DLP can be at risk of being bypassed by attackers.

[0003] Moreover, the DLP faces difficulties in addressing bugs like memory leaks, use after free and read-before-write as (i) the bugs create vulnerabilities and security problems and (ii) tracking the bugs on the sensitive data of the organization across the on-premises systems, the cloud-based locations, and the endpoint devices is notoriously difficult. Existing programming tools for memory debugging, memory leak detection, and profiling are used to detect these bugs. However, these existing tools are extremely slow and unsuitable for anything other than development. Using these existing tools on large projects is challenging due to performance impact.

[0004] Therefore, there arises a need to address the aforementioned technical problems / drawbacks for tracking protected data.SUMMARY

[0005] It is an object of the disclosure to provide a computing system and a method for tracking protected data in a memory, while avoiding one or more disadvantages of prior art approaches.

[0006] This object is achieved by the features of the independent claims. Further, implementation forms are apparent from the dependent claims, the description, and the figures.

[0007] According to a first aspect, there is a computing system for tracking protected data which includes a memory and one or more memory controllers configured to access the memory. The memory includes an is_protected flag indicating if the memory is protected or not. The computing system further includes a read_protected flag associated with a process that indicates whether the process is allowed to read protected data. The one or more memory controllers are configured to (i) receive data, (ii) store the data in the memory, (iii) determine if the data is protected, and (iv) if so, set the is_protected flag of the memory to indicate that the memory is protected.

[0008] The computing system implements Data Leakage Prevention, DLP on the data by eliminating memory-related bugs such as use-after free, read before writes to protect sensitive data i.e. the protected data from unauthorized accesses. The computing system marks the data as protected data by incorporating the “is_protected” flag to the data on the memory for tracking the protected data. The computing system marks the data as protected data using a hardware-based tag. The hardware-based tag enhances the data more resistant to tampering, thereby ensuring that security measures are consistently applied, leaving no gaps for circumvention and providing a robust defense against potential vulnerabilities. A user space software can be used by the computing system which can remain unchanged, as there is no need for modifications which means the user space software can run on the computing system that (i) implements new instructions without any adjustments which reduces the complexity of transitioning to new architecture, and (ii) a legacy instruction set remains as it is, and the introduction of new instructions has to be altered. The computing system facilitates an integration of external virtual hardware, such as network devices and filesystems which expands a scope of applications to interact with the computing system. The computing system identifies memory bugs without introducing performance impact that ensures reliability of the performance of the computing system. A Computer Processing Unit, CPU architecture of the computing system can be used in cloud infrastructure and Virtual Machines, VMs to enforce the DLP on tenant VMs which ensures a robust protection of the sensitive data within virtualized environments. The CPU architecture can be implemented in emulators such as Quick Emulator, QEMU, TinyEmu, or the VMs such Web Assembly, WASM, JAVA to implement the DLP or memory bug tracking.

[0009] Optionally, the one or more memory controllers are configured to (i) receive the data by receiving a file, and (ii) determine if the file is protected by determining whether the is_protected flag of the file indicates that the file is protected or not.

[0010] Optionally, the one or more memory controllers are configured to (i) receive the data by receiving a memory page, and (ii) determine if the data is protected by determining whether the is_protected flag of the memory page indicates that the memory page is protected or not.

[0011] Optionally, the one or more memory controllers are configured to (i) receive the data by receiving content of a CPU register, and (ii) determine if the data is protected by determining whether an is_protected flag of the CPU register indicates that the CPU register is protected or not.

[0012] Optionally, the one or more memory controllers are configured to (i) store the data in the memory by storing the data in a memory page of the memory, and (ii) set the is_protected flag by setting an is_protected flag of the memory page.

[0013] Optionally, the one or more memory controllers are configured to set the is_protected flag of the memory page for a portion of the memory page.

[0014] Optionally, the memory includes a CPU register. The one or more memory controllers are configured to (i) store the data in the memory by storing the data in the CPU register of the memory, and (ii) set the is_protected flag by setting an is_protected flag of the CPU register.

[0015] Optionally, the computing system includes a network connection. The one or more memory controllers are configured to receive the data through the network connection.

[0016] Optionally, the one or more memory controllers are configured to (i) receive a memory instruction for a second data, (ii) determine whether the is_protected flag is set for the second data, (iii) if so, determine whether the read_protected flag is set, and if so, execute the memory instruction.

[0017] Optionally, the one or more memory controllers are configured to execute an exception when it is determined that the is_protected flag is set for the second data and the read_protected flag is not set.

[0018] Optionally, the memory instruction is a READ instruction. The one or more memory controllers are configured to (i) read the second data from the memory into a CPU register and, (ii) set an is_protected flag of the CPU register to equal the is_protected flag for the second data.

[0019] Optionally, the memory instruction is a WRITE instruction. The one or more memory controllers are configured to (i) write the second data into a CPU register and (ii) set an is_protected flag of the CPU register to equal the is_protected flag for the second data.

[0020] Optionally, the memory instruction is a WRITE instruction. The one or more memory controllers are configured to (i) write the second data into a memory page, and (ii) determine if the is_protected flag for the second data is set and if so set the is_protected flag of the memory page.

[0021] Optionally, the exception includes an interrupt.

[0022] Optionally, the exception includes a write to a log data.

[0023] Optionally, when the is_protected flag is for a memory page and the memory page has an address that is stored in an address field, the address field includes additional bits not used for the address of the memory page. The additional bits include the is_protected flag.

[0024] Optionally, when the is_protected flag is for a CPU register and the CPU register has an address that is stored in an address field, the address field includes additional bits not used for the address of the CPU register. The additional bits include the is_protected flag.

[0025] Optionally, the is_protected flag indicates protected or not.

[0026] Optionally, the is_protected flag indicates protected at a first level, protected at a second level, or not protected.

[0027] Optionally, the first level indicates a first set of allowed operations and the second level indicates a second set of allowed operations.

[0028] Optionally, the is_protected flag is a hardware flag.

[0029] According to a second aspect, there is provided a method for a computing system including a memory. The memory includes an is_protected flag indicating if the memory is protected or not. The computing system further includes a read_protected flag associated with a process that indicates whether the process is allowed to read protected data. The method includes (i) receiving data, (ii) store the data in the memory, (iii) determining if the data is protected and (iv) if so, setting the is_protected flag of the memory to indicate that the memory is protected.

[0030] This method implements Data Leakage Prevention, DLP on the data by eliminating memory-related bugs such as use-after free, read before writes to protect sensitive data i.e. the protected data from unauthorized accesses. This method marks the data as protected data by incorporating the “is_protected” flag to the data on the memory for tracking the protected data. This method marks the data as protected data using a hardware-based tag. The hardware-based tag enhances the data more resistant to tampering, thereby ensuring that security measures are consistently applied, leaving no gaps for circumvention and providing a robust defense against potential vulnerabilities. A userspace software can be used in this method which can remain unchanged, as there is no need for modifications which means the userspace software can run on the computing system that (i) implements new instructions without any adjustments which reduces the complexity of transitioning to new architecture, and (ii) a legacy instruction set remains as it is, and the introduction of new instructions has to be altered. This method facilitates an integration of external virtual hardware, such as network devices and filesystems which expands a scope of applications to interact with the computing system. This method identifies memory bugs without introducing performance impact that ensures reliability of the performance of the computing system. A Computer Processing Unit, CPU architecture of the computing system can be used in cloud infrastructure and Virtual Machines, VMs to enforce the DLP on tenant VMs which ensures robust protection of the sensitive data within virtualized environments. The CPU architecture can be implemented in emulators such as Quick Emulator, QEMU, and TinyEmu, or the VMs such as Web Assembly, WASM, and JAVA to implement the DLP or memory bug tracking.

[0031] According to a third aspect, a computer program product includes program instructions for performing the method when executed by one or more processors in a computing system.

[0032] Therefore, in contradistinction to the existing solutions, a computing system and a method for tracking protected data in memory implements Data Leakage Prevention, DLP on data in the memory by eliminating memory-related bugs such as use-after-free, read before writes to protect sensitive data from unauthorized accesses.

[0033] These and other aspects of the disclosure will be apparent from the implementation (s) described below.BRIEF DESCRIPTION OF DRAWINGS

[0034] Implementations of the disclosure will now be described, by way of example only, with reference to the accompanying drawings, in which:

[0035] FIG. 1 is a block diagram that illustrates a computing system for tracking protected data in accordance with an implementation of the disclosure;

[0036] FIG. 2A is a block diagram that illustrates an addition of is_protected bits or is_protected flag into central processing unit, CPU registers, and global CPU flags within a CPU in accordance with an implementation of the disclosure;

[0037] FIG. 2B is a block diagram that illustrates an addition of is_protected bits to a Memory Mapping Table that represents memory pages in accordance with an implementation of the disclosure;

[0038] FIG. 3 is a block diagram that illustrates transmission of data from a source machine, to a destination machine in accordance with an implementation of the disclosure;

[0039] FIGS. 4A-4B are flow diagrams that illustrate a method for a computing system that includes a memory to track protected data in accordance with an implementation of the disclosure; and

[0040] FIG. 5 is an illustration of a computer system (e.g., a computing system, memory, and one or more memory controllers) in which the various architectures and functionalities of the various previous implementations may be implemented.

[0041] DETAILED DESCRIPTION OF THE DRAWINGS

[0042] Implementations of the disclosure provide a computing system and a method for tracking protected data in a memory.

[0043] To make solutions of the disclosure more comprehensible for a person skilled in the art, the following implementations of the disclosure are described with reference to the accompanying drawings.

[0044] Terms such as "a first" , "a second" , "a third" , and "a fourth" (if any) in the summary, claims, and foregoing accompanying drawings of the disclosure are used to distinguish between similar objects and are not necessarily used to describe a specific sequence or order. It should be understood that the terms so used are interchangeable under appropriate circumstances, so that the implementations of the disclosure described herein are, for example, capable of being implemented in sequences other than the sequences illustrated or described herein. Furthermore, the terms "include" and "have" and any variations thereof, are intended to cover a non-exclusive inclusion. For example, a process, a method, a system, a product, or a device that includes a series of steps or units, is not necessarily limited to expressly listed steps or units but may include other steps or units that are not expressly listed or that are inherent to such process, method, product, or device.

[0045] FIG. 1 is a block diagram that illustrates a computing system 102 for tracking protected data in accordance with an implementation of the disclosure. The computing system 102 includes a memory 104 and one or more memory controllers 106A-N configured to access the memory 104. The memory 104 includes an is_protected flag 110 indicating if the memory 104 is protected or not. The computing system 102 further includes a read_protected flag 108 associated with a process that indicates whether the process is allowed to read protected data. The one or more memory controllers 106A-N are configured to receive data. The one or more memory controllers 106A-N are configured to store the data in the memory 104. The one or more memory controllers 106A-N are configured to determine if the data is protected, and if so set the is_protected flag 110 of the memory 104 to indicate that the memory 104 is protected if the data is protected.

[0046] The computing system 102 implements Data Leakage Prevention, DLP on the data by eliminating memory-related bugs such as use-after free, read before writes to protect sensitive data i.e. the protected data from unauthorized accesses. The computing system 102 marks the data as protected data by incorporating the “is_protected” flag to the data on the memory for tracking the protected data. The computing system 102 marks the data as protected data using a hardware-based tag. The hardware-based tag enhances the data more resistant to tampering, thereby ensuring that security measures are consistently applied, leaving no gaps for circumvention and providing a robust defense against potential vulnerabilities. A Userspace software can be used by the computing system 102 which can remain unchanged, as there is no need for modifications which means the userspace software can run on the computing system 102 that (i) implements new instructions without any adjustments which reduces the complexity of transitioning to new architecture, and (ii) a legacy instruction set remains as it is, and the introduction of new  instructions has to be altered. The computing system 102 facilitates an integration of external virtual hardware, such as network devices and filesystems which expands scope of applications to interact with the computing system 102. The computing system 102 identifies memory bugs without introducing performance impact that ensures reliability of the performance of the computing system 102. A Computer Processing Unit, CPU architecture of the computing system 102 can be used in cloud infrastructure and Virtual Machines, VMs to enforce the DLP on tenant VMs which ensures robust protection of the sensitive data within virtualized environments. The CPU architecture can be implemented in emulators such as Quick Emulator, QEMU, and TinyEmu, or the VMs such as Web Assembly, WASM, and JAVA to implement the DLP or memory bug tracking.

[0047] Optionally, the one or more memory controllers 106A-N are configured to (i) receive the data by receiving a file, and (ii) determine if the file is protected by determining whether the is_protected flag 110 of the file indicates that the file is protected or not.

[0048] Optionally, the computing system 102 includes a network connection. The one or more memory controllers 106A-N are configured to receive the data through the network connection.

[0049] Optionally, the one or more memory controllers 106A-N are configured to (i) receive a memory instruction for a second data, (ii) determine whether the is_protected flag is set for the second data, (iii) if so, determine whether the read_protected flag is set, and if so, execute the memory instruction.

[0050] Optionally, the one or more memory controllers 106A-N are configured to execute an exception when it is determined that the is_protected flag is set for the second data and the read_protected flag is not set.

[0051] Optionally, the is_protected flag indicates protected or not.

[0052] Optionally, the is_protected flag indicates protected at a first level, protected at a second level, or not protected.

[0053] Optionally, the first level indicates a first set of allowed operations and the second level indicates a second set of allowed operations.

[0054] Optionally, the is_protected flag is a hardware flag.

[0055] FIG. 2A is a block diagram that illustrates an addition of is_protected bits or is_protected flag into Central Processing Unit, CPU registers 204, and global CPU flags 206 within a CPU 202 in accordance with an implementation of the disclosure. The CPU registers 204 include register a extended, RAX, register c extended, RCX, register d extended, RDX, register b extended, RBX, register destination index, RDI, and register source index, RSI. The global CPU flags 206 include overflow and zero. The CPU 202 may include one or more memory controllers and a memory. Optionally, the memory includes the CPU registers 204.

[0056] Optionally, the one or more memory controllers are configured to (i) receive a data by receiving content of the CPU registers 204, and (ii) determine if the data is protected by determining whether the “is_protected” flag of the CPU register indicates that the CPU registers 204 is protected or not. Optionally, the one or more memory controllers are configured to (i) store the data in the memory by storing the data in the CPU registers 204 of the memory, and (ii) set the is_protected flag by setting an is_protected flag of the CPU registers 204. This means that the “is_protected” bits or the “is_protected” flag are applied to the CPU registers 204 when relevant CPU operations are executed on the  CPU registers 204. The CPU operations may be memory read, or memory write. The CPU 202 is controlled by an Operating System, OS. Optionally, the OS is configured for determining which memory, binaries, and external resources should be protected by setting or writing the “is_protected” bits for the CPU registers 204, the global CPU flags 206, and the external resources. The “is_protected” bits may be logical bits. The external resources may be files or networking. The logical bits for every CPU register indicate a protection status of the data within the CPU registers 204. Optionally, when the is_protected flag is for a CPU register and the CPU register has an address that is stored in an address field, the address field includes additional bits used to mark the “is_protected” flag on the data.

[0057] Optionally, the one or more memory controllers add the logical bits to each regular register or entire CPU registers 204 to indicate the protection status of the data by creating a separate register i.e. “is_protected” register depicted at 208, for tracking the protection status of the data. The “is_protected” register may include one bit for each regular register, indicating whether the data in each regular register is protected or not.

[0058] The one or more memory controllers integrate an “is_protected” global flag into the CPU 202 as the global CPU flags 206, and corresponding instructions for setting and resetting the “is_protected” global flag are added to an instruction set of the CPU 202. This means that when the "is_protected" global flag is set to the global CPU flags 206, the CPU 202 reads the memory marked as “is_protected” , as well as operates on the CPU registers 204 marked as protected. If the “is_protected” global flag is not set, the CPU 202 triggers a “protection fault” when the CPU 202 reads the protected memory or the protected CPU registers. Optionally, the protection fault operates similarly to a memory page fault. The protection fault may occur when the CPU 202 sets the “is_protected” global flag to the global CPU flags 206 from user space, which allows the OS to verify an integrity of the binary of the protected data using cryptographic means to prevent unauthorized tampering. Optionally, the OS provides a method to externally set the “is_protected” global flag for trusted processes without requiring direct modification, thereby enhancing the overall security of the data. The global CPU flags 206 may be updated during a context switch or a change from one task to another task or process. The task may be an application, a service, or a thread.

[0059] The networking may be marked as “is_protected” in an infrastructure-dependent manner. For example, the networking is secured by utilizing (i) a bit on an encapsulating header, such as Virtual Extensible Local Area Network, VXLAN in a cloud environment, or Internet Protocol Security, IPsec in Virtual Private Networks, VPNs, (ii) a dedicated bit on the Ethernet header, (iii) Virtual LANs, VLANs, and (iv) mark on the memory pages containing a buffer of a network packet are marked to indicate the protected status. Optionally, the process of securing the networking can be extended to cover all Input / Output, and I / O operations.

[0060] FIG. 2B is a block diagram that illustrates an addition of is_protected bits to a Memory Mapping Table 210 that represents memory pages in accordance with an implementation of the disclosure. The Memory Mapping Table 210 is managed by a Memory Management Unit, MMU. The memory pages are used for managing a virtual memory. The MMU is a hardware component used for translating virtual memory addresses to physical memory addresses. The MMU adds a logical bit for each memory page. The logical bit is the “is_protected” bits or the “is_protected” flag. Optionally, the one or more memory controllers are configured to (i) receive the data by receiving the memory page, and (ii) determine if the data is protected by determining whether the “is_protected” flag of the memory page indicates that the memory page is protected or not. Optionally, the one or more controllers are configured to (i) store the data in the memory by storing the data in the memory page of the memory, and (ii) set the is_protected flag by setting the “is_protected flag” of the memory page. Optionally, the one or more memory controllers are configured to set the “is_protected” flag of the memory page for a portion of the memory page.

[0061] The one or more memory controllers are configured to add “is_protected” bits to the memory pages to protect data or files in the memory. The “is_protected” bits act as a flag indicating whether the corresponding memory page contains the protected data. This means that each memory page has the flag that indicates whether the memory page is protected or not. The “is_protected” bits may be a single bit or multiple bits i.e. a more complex bit sequence. For example, the more complex bit sequence can be a bit 0 for readable, a bit 1 for writable, a bit 2 for executable, and a bit 3 for “is_protected” . The MMU allocates a specific bit to the OS to read the protected data. This means that the “is_protected” flag may be a dedicated bit that is used specifically to indicate whether the memory page corresponds to the protected data is protected. The OS may set or reset the memory pages “is_protected” bits. This means that the OS is used by the one or more memory controllers for setting and resetting “is_protected” flag or the “is_protected” bits for each memory page. The OS might set the protected flag to allow page reuse, where the same memory page can be used by multiple applications. Optionally, the OS allows the application or user of the application to protect the data on the memory page by setting the protected flag for the memory page.

[0062] The OS may be ring 0 or Linux kernel. Optionally, the OS has permission to set or reset the “is_protected” bit of any memory page, of any register, or the CPU-global flag, which allows if the data or file is deemed ‘protected’ , a space of the Linux kernel of the OS may set the memory pages of the buffers in a ‘read’ command as protected. If the network packet indicates that the network packet contains protected data, the space of the Linux kernel may set the memory pages of the buffers in a ‘recv’ command as protected. The “is_protected” flag can be updated based on a per-process.

[0063] Optionally, the files or data can be marked as the “is_protected” within the OS using a specific method. For example, in Linux+SELinux, a metadata key-value indicating protection may be placed in file extended attributes. The OS automatically marks the file as protected when the data that is flagged as "protected" is written to the file. The OS extends this protection to the memory into which the data is read when the protected file is read. Optionally, writing to the protected file can be restricted unless the protected CPU flag is set.

[0064] The CPU 202 utilizes multiple bits for finer granularity over memory protection. The multiple bits may operate within a limit of protection bit space of the MMU. For instance, the multiple bits can be used to specify a type, source, or level of the data that is under protection. The multiple bits are used to identify specific fragments within each memory page that are marked as protected.

[0065] The one or more memory controllers sets the "is_protected” register 208 of the CPU registers 204 to match the "is_protected” bits of memory pages upon the memory read by the OS. The CPU 202 performs OR operation between the “is_protected" register 208 of the CPU registers 204 and "is_protected" bits of the memory pages upon the memory write by the OS. This means if either the "is_protected” bits of the memory pages or “is_protected" register 208 of the CPU registers 206 are set, the "is_protected" bits of the memory pages are set.

[0066] Optionally, the one or more memory controllers are configured to (i) receive a memory instruction for a second data, (ii) determine whether the “is_protected” flag is set for the second data, (iii) if so, determine whether the read_protected flag is set, and if so, execute the memory instruction.

[0067] Optionally, the one or more memory controllers are configured to execute an exception when it is determined that the is_protected flag is set for the second data and the read_protected flag is not set.

[0068] Optionally, the memory instruction is a READ instruction. The one or more memory controllers are configured to (i) read the second data from the memory into the CPU registers 204 and, (ii) set the “is_protected” flag of the CPU registers 204 to equal the “is_protected” flag for the second data.

[0069] Optionally, the memory instruction is a WRITE instruction. The one or more memory controllers are configured to (i) write the second data into the CPU registers 204 and (ii) set an is_protected flag of the CPU registers 204 to equal the is_protected flag for the second data.

[0070] Optionally, the memory instruction is a WRITE instruction. The one or more memory controllers are configured to (i) write the second data into a memory page, and (ii) determine if the is_protected flag for the second data is set and if so set the is_protected flag of the memory page.

[0071] Optionally, the exception includes an interrupt.

[0072] Optionally, the exception includes a write to a log data.

[0073] Optionally, when the is_protected flag is for a memory page and the memory page has an address that is stored in an address field, the address field includes additional bits used to mark “is_protected” flag.

[0074] FIG. 3 is a block diagram 300 that illustrates a transmission of data from a source machine 302, to a destination machine 304 in accordance with an implementation of the disclosure. The block diagram 300 includes the source machine 302 including a protected data 306, a memory 308, a Network Interface Card, NIC 312, and the destination machine 304 including a memory 310, and a NIC 314. The NIC 312 and 314 is a hardware component that allows the source machine 302 to communicate with the destination machine 304 over a network. The NIC 312 and 314 are used for sending and receiving data packets over the network. The source machine 302 reads the data from the protected data 306 to the memory 308 of the source machine 302 as the file is marked as protected. If the memory 308 of the source machine 302 is modified by an application, “is_protection” bits of the file are carried over from the memory 308 of the source machine 302, which means if the application writes new data to the memory 308 of the source machine 302 that holds the protected data 306, the “is_protection” bits associated with the memory 308 of the source machine 302 remains unchanged. For example, if the application encrypts the protected data 306 in the memory 308 of the source machine 302, the file is still protected even when the protected data 306 is modified by the application. The source machine 302 sends the memory 308 of the source machine 302 that holds the protected data 306 to the NIC 312 of the source machine 302. The NIC 312 transfers the memory 308 that holds the protected data 306 as a network packet to the NIC 314 of the destination machine 304. The NIC 312 marks the network packet as protected when the protected data 306 is transferred over the network from the source machine 302 to the destination machine 304. The NIC 312 is used for encapsulating the protected data 306 into the network packet. The NIC 314 of the destination machine 304 receives the network packet and places the network packet into the memory 310 of the destination machine 304 as the network packet is marked as protected.

[0075] FIGS. 4A and 4B are flow diagrams that illustrate a method of a computing system that includes a memory in accordance with an implementation of the disclosure. The memory includes an is_protected flag indicating if the memory is protected or not. The computing system further includes a read_protected flag associated with a process that indicates whether the process is allowed to read protected data. At a step 402, data is received. At a step 404, the data is stored in the memory. At a step 406, the data is protected or unprotected is determined. At a step 408, the is_protected flag of the memory is set to indicate that the memory is protected if the data is protected.

[0076] This method implements Data Leakage Prevention, DLP on the data by eliminating memory-related bugs such as use-after free, read before writes to protect sensitive data i.e. the protected data from unauthorized accesses. This method marks the data as protected data by incorporating the “is_protected” flag to the data on the memory for tracking the protected data. This method marks the data as protected data using a hardware-based tag. The hardware-based tag enhances the data more resistant to tampering, thereby ensuring that security measures are consistently applied, leaving no gaps for circumvention and providing a robust defense against potential vulnerabilities. A Userspace software can be used in this method which can remain unchanged, as there is no need for modifications which means the userspace software can run on the computing system that (i) implements new instructions without any adjustments which reduces the complexity of transitioning to new architecture, and (ii) a legacy instruction set remains as it is, and the introduction of new instructions has to be altered. This method facilitates an integration of external virtual hardware, such as network devices and filesystems which expands scope of applications to interact with the computing system. This method identifies memory bugs without introducing performance impact that ensures reliability of the performance of the computing system. A Computer Processing Unit, CPU architecture of the computing system can be used in cloud infrastructure and Virtual Machines, VMs to enforce the DLP on tenant VMs which ensures robust protection of the sensitive data within virtualized environments. The CPU architecture can be implemented in emulators such as Quick Emulator, QEMU, and TinyEmu, or the VMs such as Web Assembly, WASM, and JAVA to implement the DLP or memory bug tracking.

[0077] In an implementation, a computer program product includes program instructions for performing the method when executed by one or more processors in a computing system.

[0078] FIG. 5 is an illustration of a computer system (e.g., a computing system, memory, and one or more memory controllers) in which the various architectures and functionalities of the various previous implementations may be implemented. As shown, the computer system 500 includes at least one processor 504 that is connected to a bus 502, wherein the computer system 500 may be implemented using any suitable protocol, such as Peripheral Component Interconnect, PCI-Express, Accelerated Graphics Port, AGP, Hyper Transport, or any other bus or point-to-point communication protocol. The computer system 500 also includes a memory 506.

[0079] Control logic (software) and data are stored in the memory 506 which may take a form of random-access memory, RAM. In the disclosure, a single semiconductor platform may refer to a sole unitary semiconductor-based integrated circuit or chip. It should be noted that the term single semiconductor platform may also refer to multi-chip modules with increased connectivity which simulate on-chip modules with increased connectivity which simulate on-chip operation, and make substantial improvements over utilizing a conventional central processing unit, CPU, and bus implementation. Of course, the various modules may also be situated separately or in various combinations of semiconductor platforms per the desires of the user.

[0080] The computer system 500 may also include a secondary storage 510. The secondary storage 510 includes, for example, a hard disk drive and a removable storage drive, representing a floppy disk drive, a magnetic tape drive, a compact disk drive, digital versatile disk, DVD drive, recording device, universal serial bus, USB flash memory. The removable storage drive at least one of reads from and writes to a removable storage unit in a well-known manner.

[0081] Computer programs, or computer control logic algorithms, may be stored in at least one of the memory 506 and the secondary storage 510. Such computer programs, when executed, enable the computer system 500 to perform  various functions as described in the foregoing. The memory 506, the secondary storage 510, and any other storage are possible examples of computer-readable media.

[0082] In an implementation, the architectures and functionalities depicted in the various previous figures may be implemented in the context of the processor 504, a graphics processor coupled to a communication interface 512, an integrated circuit (not shown) that is capable of at least a portion of the capabilities of both the processor 504 and a graphics processor, a chipset (namely, a group of integrated circuits designed to work and sold as a unit for performing related functions, and so forth) .

[0083] Furthermore, the architectures and functionalities depicted in the various previous-described figures may be implemented in a context of a general computer system, a circuit board system, a game console system dedicated for entertainment purposes, an application-specific system. For example, the computer system 500 may take the form of a desktop computer, a laptop computer, a server, a workstation, a game console, an embedded system.

[0084] Furthermore, the computer system 500 may take the form of various other devices including, but not limited to a personal digital assistant, PDA device, a mobile phone device, a smart phone, a television, and so forth. Additionally, although not shown, the computer system 500 may be coupled to a network (for example, a telecommunications network, a local area network, LAN, a wireless network, a wide area network, WAN such as the Internet, a peer-to-peer network, a cable network, or the like) for communication purposes through an I / O interface 508.

[0085] It should be understood that the arrangement of components illustrated in the figures described are exemplary and that other arrangement may be possible. It should also be understood that the various system components (and means) defined by the claims, described below, and illustrated in the various block diagrams represent components in some systems configured according to the subject matter disclosed herein. For example, one or more of these system components (and means) may be realized, in whole or in part, by at least some of the components illustrated in the arrangements illustrated in the described figures.

[0086] In addition, while at least one of these components are implemented at least partially as an electronic hardware component, and therefore constitutes a machine, the other components may be implemented in software that when included in an execution environment constitutes a machine, hardware, or a combination of software and hardware.

[0087] Although the disclosure and its advantages have been described in detail, it should be understood that various changes, substitutions, and alterations can be made herein without departing from the spirit and scope of the disclosure as defined by the appended claims.

Claims

1.A computing system (102) comprising a memory (104) and one or more memory controllers (106A-N) configured to access the memory (104) , wherein the computing system (102) is characterized in that,the memory (104) comprises an is_protected flag (110) indicating if the memory (104) is protected or not, whereinthe computing system (102) further comprises a read_protected flag (108) associated with a process that indicates whether the process is allowed to read protected data, and whereinthe one or more memory controllers (106A-N) are configured toreceive a data,store the data in the memory (104) ,determine if the data is protected and if soset the is_protected flag (110) of the memory (104) to indicate that the memory (104) is protected.2.The computing system (102) according to claim 1, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toreceive the data by receiving a file, and determine if the file is protected by determining whether the is_protected flag (110) of the file indicates that the file is protected or not.3.The computing system (102) according to claim 1, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toreceive the data by receiving a memory page, and determine if the data is protected by determining whether the is_protected flag (110) of the memory page indicates that the memory page is protected or not.4.The computing system (102) according to claim 1, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toreceive the data by receiving content of a CPU register, and determine if the data is protected by determining whether an is_protected flag (110) of the CPU register indicates that the CPU register is protected or not.5.The computing system (102) according to any preceding claims, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured tostore the data in the memory (104) by storing the data in a memory page of the memory (104) , and set the is_protected flag (110) by setting an is_protected flag (110) of the memory page.6.The computing system (102) according to any of claims 1, 3 or 4, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured to set the is_protected flag (110) of the memory page for a portion of the memory page.7.The computing system (102) according to any of claims 1, 3 or 4, wherein the memory comprises a CPU register and wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured tostore the data in the memory (104) by storing the data in the CPU register of the memory (104) , and set the is_protected flag (110) by setting an is_protected flag (110) of the CPU register.8.The computing system (102) according to any preceding claim, wherein the computing system (102) comprises a network connection and wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toreceive the data through the network connection.9.The computing system (102) according to any preceding claim, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toreceive a memory instruction for a second data,determine whether the is_protected flag (110) is set for a second data, andif so determine whether the read_protected flag (108) is set, and if soexecute the memory instruction.10.The computing system (102) according to claim 9, wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toexecute an exception when it is determined that the is_protected flag (110) is set for the second data and the read_protected flag (108) is not set.11.The computing system (102) according to any of claims 9 or 10, wherein the memory instruction is a READ instruction and wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured toread the second data from the memory (104) into a CPU register andset an is_protected flag (110) of the CPU register to equal the is_protected flag (110) for the second data..12.The computing system (102) according to any of claims 9, 10 or 11, wherein the memory instruction is a WRITE instruction and wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured towrite the second data into a CPU register andset an is_protected flag (110) of the CPU register to equal the is_protected flag (110) for the second data.13.The computing system (102) according to any of claims 9, 10, 11 or 12, , wherein the memory instruction is a WRITE instruction and wherein the computing system (102) is further characterized in that the one or more memory controllers (106A-N) are configured towrite the second data into a memory page,determine if the is_protected flag (110) for the second data is set and if soset the is_protected flag (110) of the memory page.14.The computing system (102) according to any of claims 10 to 13, wherein the exception comprises an interrupt.15.The computing system (102) according to any of claims 10 to 14, wherein the exception comprises a write to a log data.16.The computing system (102) according to any preceding claim, wherein the computing system (102) is further characterized in that when the is_protected flag (110) is for a memory page and the memory page has an address that is stored in an address field, the address field comprises additional bits not used for the address of the memory page, wherein the additional bits comprises the is_protected flag (110) .17.The computing system (102) according to any preceding claim, wherein the computing system (102) is further characterized in that when the is_protected flag (110) is for a CPU register and the CPU register has an address that is stored in an address field, the address field comprises additional bits not used for the address of the CPU register, wherein the additional bits comprises the is_protected flag (110) .18.The computing system (102) according to any preceding claim, wherein the is_protected flag (110) indicates protected or not.19.The computing system (102) according to any preceding claim, wherein the is_protected flag (110) indicates protected at a first level, protected at a second level, or not protected.20.The computing system (102) according to claim 18 or 19, wherein the first level indicates a first set of allowed operations and the second level indicates a second set of allowed operations.21.The computing system (102) according to any preceding claim, wherein the is_protected flag (110) is a hardware flag.22.A method for a computing system (102) comprising a memory (104) , wherein the method is characterized in thatthe memory (104) comprises an is_protected flag (110) indicating if the memory (104) is protected or not, whereinthe computing system (102) further comprises a read_protected flag (108) associated with a process that indicates whether the process is allowed to read protected data, and whereinthe method comprisesreceiving a data,storing the data in the memory (104) ,determining if the data is protected and if sosetting the is_protected flag (110) of the memory (104) to indicate that the memory (104) is protected.23.A computer program product comprising program instructions for performing the method according to claim 18, when executed by one or more processors in a computing system (102) .