Secure element memory paging and dynamic memory management
By dynamically managing secure element memory through evicting and reinstalling applications, computing devices optimize storage usage, supporting more applications while maintaining security and reducing costs.
Patent Information
- Application Number
- PCT/US2024/031467
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-29
- Publication Date
- 2025-12-04
AI Technical Summary
Computing devices with secure elements face memory constraints, limiting the number of applications that can be executed due to insufficient storage capacity, and increasing memory capacity is costly and complex.
A computing device dynamically manages secure element memory by evicting and reinstalling applications, encrypting data, and swapping them between secure element and system memory to optimize storage usage without physical expansion.
This approach allows for more efficient use of secure element memory, supporting a greater number of applications without physical expansion, maintaining security, and reducing manufacturing costs.
Smart Images

Figure US2024031467_04122025_PF_FP_ABST
Abstract
Description
SECURE ELEMENT MEMORY PAGING AND DYNAMIC MEMORY MANAGEMENTBACKGROUND
[0001] Computing devices, such as mobile computing devices, may include a secure element. A secure element may be a system and / or chip within the computing device that includes tamper-resistant hardware designed to resist attacks and unauthorized access. The computing devices may use secure elements to store sensitive information such as credit card numbers, digital car keys (DCKs), private keys, and login information among other information in the secure environment of the secure element. In addition, the computing devices may execute applications such as applets and plugins in the secure element.SUMMARY
[0002] Techniques are described by which a computing device may change which application(s) are stored in memory of a secure element of the computing device. In accordance with the techniques of this disclosure, the computing device may determine that there is insufficient available memory in the memory of the secure element for a first application (e.g., that the secure element has insufficient available capacity for data of the application). The computing device may identify a second application to evict from the memory of the secure element based on one or more factors. For example, the computing device may use heuristics to identify the second application that can be evicted from the memory of the secure element. The computing device may encrypt the data of the second application to protect the data as if it remained in the secure element and copy the encrypted data of the second application to the system memory of the computing device (e.g., one or more storage devices of the computing device). The computing device may complete a flow that requires the first application (e.g., executing a payment card transaction, interacting with a digital car key (DCK)-enabled automobile, etc.) prior to evicting the first application. At a later time, the computing device may move the encrypted data of the first application from the system memory to the memory of the secure element and decrypt the encrypted data of the first application, thereby effectively reinstalling the first application in the secure element. In this way, the computing device may increase the amount of memory available for applications at the secure element without requiring additional physical memory to be added to the secure element and while maintaining the secure environment provided by the secure element.
[0003] In some examples, a method includes determining, by a computing device, that there is insufficient available memory in memory of a secure element of the computing device for a first application; identifying, by the computing device, a second application to evict from the memory of the secure element; evicting, by the computing device, the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; installing, by the computing device, the first application in the memory of the secure element; and executing, by the computing device, the first application in the memory of the secure element.
[0004] In some examples, a computing device includes a secure element; a memory; and one or more processors in communication with the memory, and configured to determine that there is insufficient available memory in the memory of the secure element for a first application; identify a second application to evict from the memory of the secure element; evict the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; install the first application in the memory of the secure element; and execute the first application in the memory of the secure element.
[0005] In some examples, a non-transitory computer-readable storage medium stores instructions that, when executed by one or more processors of a computing device, causes at least one processor of a computing device to determine that there is insufficient available memory in a memory of a secure element for a first application; identify a second application to evict from the memory of the secure element; evict the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; install the first application in the memory of the secure element; and execute the first application in the memory of the secure element.
[0006] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS
[0007] FIG. 1 is a conceptual diagram illustrating an example computing device configured to dynamically manage memory of a secure element, in accordance with one or more aspects of the present disclosure.
[0008] FIG. 2 is a block diagram illustrating an example computing device configured to dynamically manage memory of a secure element, in accordance with one or more aspects of the present disclosure.
[0009] FIG. 3 is a block diagram illustrating details of a computing device configured to dynamically manage memory of a secure element, in accordance with one or more techniques of this disclosure.
[0010] FIG. 4 is a flowchart illustrating an example operation of a computing device that includes a secure element, in accordance with one or more techniques of this disclosure.
[0011] FIG. 5 is a flowchart illustrating an example operation of host-assisted dynamic memory management of a secure element, in accordance with one or more techniques of this disclosure.
[0012] FIG. 6 is a flowchart illustrating an example operation of secure element memory paging, in accordance with one or more techniques of this disclosure.DETAILED DESCRIPTION
[0013] FIG. 1 is a conceptual diagram illustrating an example computing device 102 configured to dynamically manage memory of a secure element 104, in accordance with one or more aspects of the present disclosure. Examples of computing device 102 may include, but are not limited to, mobile phones (including smartphones), wearable computing devices (e.g., smart watches, smart glasses, wearable artificial intelligence assistant, etc.) virtual reality (VR) headsets / glasses, augmented reality (AR) headsets / glasses, laptop computers, tablet computers, desktop computers, server computers, point of sale (POS) systems, embedded computing systems, vehicle computing systems (e.g., head units, vehicle control systems), various home electronics (e.g., TVs, smart speakers, smart assistants, Internet of Things-enabled devices) and other types of computing devices.
[0014] As shown in the example of FIG. 1, computing device 102 includes system memory 120. System memory 120 may include one or more types of storage such as hard disk drives, solid state drives, non-volatile memory express (NVMe) storage, random-access memory (RAM), read-only memory (ROM), tape drives, embedded multimedia card (eMMC), and other types of memory. System memory 120 may store information for one or more programs and processes of computing device 102. For example, system memory 120 may store information of a host operating system (OS) of computing device 102. System memory 120 may include low-power memory that operates even when computing device 102 is in a lower- power state or is powered off. For example, system memory 120 may include low-powermemory that provides storage for instructions executed by a low-power processor when computing device 102 is powered off.
[0015] System memory 120 may store applications 122A-122N (hereinafter “applications 122”). Applications 122 may include one or more applications executed by computing device 102. For example, applications 122 may include a virtual payments application, games, retail applications, public transit applications, password managers, authentication applications, and other applications. Applications 122 may include software components such as one or more applets, plugins, or subprocesses that execute in a secure element such as secure element 104. Applications 122 may include one or more software components that execute in secure element 104 to ensure the security of confidential information. For example, a payment application of applications 122 may store payment card information and an applet that manages the payment card information in secure element 104 to maintain the confidentiality and security of the payment card information.
[0016] Computing device 102 may include secure element 104. Secure element 104 may be a subsystem or collection of interrelated / interconnected components. In some examples, secure element 104 may be packaged as a single chip (e.g., a single chip with one or more interconnected chiplets). Secure element 104 may include secure element memory 106 in addition to one or more processors and other chips (not illustrated). In some examples, the components of secure element 104 may be integrated together into a single system-on-chip (SoC).
[0017] Secure element 104 may include one or more storage devices such as secure element memory 106. Secure element memory 106 may include one or more types of memory that may securely maintain information and / or resist software and / or hardware attacks among other functions. Secure element memory 106 may include memory chips with one or more tamper-resistant features such as tamper-resistant packaging (e.g., packaging that pre-stresses the chips of secure element memory 106 and causes them to fracture when tampered with), one or more types of encryption, zeroization features (e.g., secure element memory 106 may zeroize the data stored within secure element memory 106 if tampering is detected), and cold- zeroization (e.g., secure element memory 106 may zeroize data when tampering is detected even if the power supply of computing device 102 fails or is otherwise inoperable) among other types of tamper-resistant features.
[0018] Secure element 104 may encrypt information stored in secure element memory 106. Secure element 104 may include a private key for decrypting information stored in secure memory 106 that is encrypted according to one or more types of cryptographic techniques.For example, secure element 104 may encrypt data stored in secure element memory 106 using one or more types of cryptographic algorithms such as Advanced Encryption System (AES), Rivest-Shamir-Adleman (RSA), International Data Encryption Algorithm (IDEA), post-quantum cryptography (PQC) algorithms (e.g., lattice-based cryptography, multivariate cryptography, hash-based cryptography, code-based cryptography, isogeny-based cryptography, symmetric key quantum-resistant cryptography, etc.), asymmetric encryption, and symmetric encryption among other types of encryption and / or encryption algorithms.
[0019] Secure element 104 may store information in the memory of secure element memory 106. Secure element memory 106 may store confidential information. For example, secure element memory 106 may store information such as credit card information, debit card information, mobile payment system information, digital car keys (DCKs), private keys for one or more programs of computing device 102, and a private key for secure element 104 among other information.
[0020] Secure element 104 may store applications 110A-110N (hereinafter “applications 110”) in secure element memory 106. For example, secure element memory 106 may store information such as instructions for applications 110 executed by secure element 104. Applications 110 may include applets, plugins, nano-applications, and other applications executed by secure element 104. Applications 110 may provide one or more functions for computing device 102. Applications 110 may provide functions as providing credit card information to a payment terminal via a near-field communication (NFC) radio of computing device 102, providing public transit ticket information via the NFC radio to a payment terminal, providing a DCK to an automobile, executing one or more functions that require a cryptographic key stored by secure element 104 (e.g., unlocking an encrypted store of passwords using a private key stored in secure element memory 106), and other functions.
[0021] In general, secure element 104 may include secure element memory 106 with relatively limited storage capacity (e.g., secure element memory 106 may include less than four megabytes of total capacity). A user of computing device 102 may wish to use a variety of different applications that each require storing information and / or applets in secure element memory 106. For example, a user may wish to use a public transit application that includes a payment applet in secure element memory 106, a payment application that includes an applet that stores payment card information in secure element memory 106, an automotive application that includes a plugin that manages DCKs in secure element memory 106, and a password manager that stores private keys in secure element memory 106 among other applications. Secure element memory 106 may have insufficient storage capacity tosupport all the desired applications that use secure element 104. For example, secure element memory 106 may have insufficient storage capacity to store information regarding a user’s payment cards in addition to multiple other applications that need to store information in secure element memory 106. A manufacturer may be unwilling or unable to increase the storage capacity of a secure element in devices that include a secure element such as secure element 104 due to one or more constraints (e.g., the relatively high cost of secure element memory 106 compared to other types of memory, physical packaging constraints of locating physically larger memory chips within the packaging of secure element 104, and increased complexity of secure element 104 among other constraints). In addition, a manufacturer may be unable or unwilling to increase the storage capacity of secure element 104 following the manufacture / sale of computing device 102 in response to increased usage of apps that utilize secure element 104.
[0022] In accordance with the techniques of this disclosure, computing device 102 may swap applications 110 between secure element memory 106 and other memory of computing device 102. Computing device 102 may swap which applications of applications 110 are stored in secure element memory 106 to enable an increased number of applications to be executed by secure element 104. Secure element 104 itself may orchestrate swapping of applications 110 in and out of secure element memory 106. In addition, host OS 140 may orchestrate the swapping of applications 110 in and out of secure element memory 106. Computing device 102 may encrypt the data of applications 110 prior to swapping the data of applications 110 to other storage of computing device 102. In this way, computing device 102 may enable the execution of more applications 110 in secure element 104 and avoid a need to increase the storage capacity of secure element memory 106. In addition, computing device 102 may encrypt the data of applications 110 prior to swapping them to other memory to maintain the secure nature of applications 110 and other data stored in secure element memory 106. Further, secure element 104 may swap applications 110 itself to other memory of computing device 102 and enable the swapping of applications while computing device 102 is powered off.
[0023] Computing device 102 may determine that an application may need to be added to secure element 104. Computing device 102 may determine that a particular application needs to be added to secure element 104 based on one or more factors. Computing device 102 may receive data from another computing device or system that requires the particular application to process the data. In an example, computing device 102 receives a packet from a payment processing terminal for application 122A, where application 122A is a payment application.Application 122A processes the packet and determines that an applet is required to execute in secure element 104 to retrieve payment card information and provide the payment card information to the payment processing terminal via a near-field communication (NFC) radio of computing device 102. Computing device 102 determines that the required applet is not installed in secure element 104 and installs the applet in secure element memory 106. Computing device 102 may determine that an application needs to be added based on heuristic analysis. For example, computing device 102 may determine that a particular application may be needed based on analysis of user interactions with computing device 102.
[0024] Computing device 102 may determine that there is insufficient memory available in secure element memory 106 for an application such as an application similar to applications 110 to be added to secure element memory 106. Computing device 102 may determine whether there is sufficient available memory in secure element memory 106 for an application to be installed in response to determining that an application should be installed in secure element memory 106. Computing device 102 may poll secure element memory 106 to determine whether there is sufficient available memory to install an application. For example, an OS of computing device 102 may poll secure element memory 106 and / or provide a request to secure element 104 to determine the amount of available memory in secure element memory 106. Computing device 102 may determine that there is insufficient available memory in secure element memory 106 to install an application in secure element 104 based on an amount of available memory in secure element memory 106 and an amount of memory required by an application to be installed in secure element memory 106 for execution by secure element 104.
[0025] Computing device 102 may identify one or more of applications 110 in secure element memory 106 that can be evicted to increase the amount of available memory in secure element memory 106. Computing device 102 may use one or more types of analysis such as heuristics, whether an application of applications 110 is a real-time application, and other information and other types of analysis to identify one or more of applications 110 that can be evicted from secure element memory 106. In an example, computing device 102 determines that a payment application needs to be installed in secure element memory 106 for a user of computing device 102 to make a payment at a payment terminal. Computing device 102 determines that, as the user is making a payment at the payment, computing device 102 is unlikely to need an application that supports DCKs and provides access to an automobile for at least a period of time.
[0026] Computing device 102 may evict an application of applications 110 from secure element memory 106. In some examples, computing device 102 may evict multiple applications of applications 110 from secure element memory 106. Computing device 102 may encrypt the data of an application of applications 110 in secure element memory 106 as part of evicting the application. Computing device 102 may encrypt the data of applications 110 and / or encrypt the data of a page of secure element memory 106 associated with one or more of applications 110. In an example, computing device 102 determines that application 110A should be evicted from secure element memory 106. Computing device 102 causes secure element 104 to encrypt the data of application 110A. In some examples, computing device 102 may evict a portion of the application from secure element memory 106 such evicting only the code or the data of the application.
[0027] Computing device 102 may copy the encrypted data of applications 110 from secure element memory 106 to other memory of computing device 102. Computing device 102 may copy the encrypted data to memory such as system memory 120. For example, computing device 102 may copy the encrypted data of one or more of applications 110 from secure element memory 106 to a storage device of system memory 120. Computing device 102 may copy the encrypted data of the one or more of applications 110 to low-power memory.
[0028] Computing device 102 may install an application in secure element memory 106. Computing device 102 may install the application needed to be added to secure element memory 106. For example, computing device 102 may determine that, for a payment workflow, an applet associated with one of applications 122 needs to be installed in secure element memory 106. Computing device 102 may install the applet in the memory of secure element memory made available by the eviction of one or more of applications 110.
[0029] Computing device 102 may execute the installed application in secure element memory 106. Computing device 102 may execute the installed application in secure element memory 106 in response to the installation of the application. For example, computing device 102 may execute the installed application in secure element memory 106 in response to determining that the installation of the application is complete. Computing device 102 may execute the installed application in response to an indication from one or more of application 122. Computing device 102 may execute the installed application in response to an indication from one of applications 122 that the installed application is needed to complete a flow. In an example, computing device 102 executes the installed application in response to an indication from application 122N that the installed application is required to complete a flow to provide a public transit ticket to a transit terminal.
[0030] In some examples, computing device 102 may re-install an evicted application to secure element memory 106. Computing device 102 may re-install an evicted application to secure element memory 106 to enable use of the evicted application once a flow requiring an application installed to secure element memory 106 is complete. For example, computing device 102 may determine that a flow requiring an application installed to secure element memory 106 is complete. Computing device 102 may evict the application and re-install a previously evicted application.
[0031] The techniques of this disclosure may provide one or more advantages. The evicting of applications may enable more efficient use of memory within a secure element such as secure element 104. In addition, the evicting of applications may enable a computing device such as computing device 102 to support an increased number of applications executed by secure element 104 without requiring an increase in the storage capacity of secure element memory 106. For example, the evicting of applications may enable future use cases / applications that otherwise would not be able to be installed in secure element 104. Further, the evicting of applications may enable a manufacturer to reduce manufacturing costs of computing device 102 through reducing the amount of comparatively expensive secure memory while maintaining the security of secure element 104.
[0032] FIG. 2 is a block diagram illustrating an example computing device 202 configured to dynamically manage memory of a secure element 204, in accordance with one or more aspects of the present disclosure. Computing device 202 may be similar to computing device 102 as illustrated in FIG. 1 and provide similar functionality.
[0033] Computing device 202 may include one or more of processors 242. Processors 242 may include one or more processors such as mobile processors, laptop processors, desktop processors, embedded processors, virtualized processors, and other types of processors. Processors 242 may execute the instructions of one or more processes of computing device 202. For example, processors 242 may execute the instructions of an OS such as host OS 240 and / or one or more applications of computing device 202 stored in memory of computing device 202.
[0034] Computing device 202 may include system memory 220. System memory 220 may be similar to system memory 120 as illustrated in FIG. 1 and provide similar functionality. For example, system memory 220 may include one or more types of storage such as hard disk drives, solid state drives, non-volatile memory express (NVMe) storage, random-access memory (RAM), read-only memory (ROM), tape drives, embedded multimedia card(eMMC), and other types of memory. System memory 220 may store information for one or more programs and processes of computing device 202 such as host OS 240.
[0035] System memory 220 may store host OS 240. Host OS 240 may be one or more types of operating system such as a mobile operating system, distributed operating system, desktop operating system, embedded operating system, vehicle operating system (e.g., infotainment / head unit OS, vehicle control system OS, etc.) or other type of operating system. Host OS 240 may be an operating system configured to manage one or more processes of computing device 202. For example, host OS 240 may provide an execution environment for one or more applications executed by computing device 202.
[0036] System memory 220 may store applications 222A-222N (hereinafter “applications 222”). Applications 222 may be similar to applications 122 as illustrated in FIG. 1 and provide similar functionality. For example, applications 222 may include one or more types of applications such as virtual payments applications, games, retail applications, public transit applications, password managers, authentication applications, and other applications. Applications 222 may communicate with subcomponents of applications 222 and other applications, such as applications executed by secure element 204.
[0037] Computing device 202 may include secure element 204. Secure element 204 may be similar to secure element 104 as illustrated in FIG. 1 and provide similar functionality. For example, secure element 204 may include one or more components integrated together or separately packaged in computing device 202. For example, computing device 202 may include one or more components packaged into a single SoC.
[0038] Secure element 204 may include one or more of secure element processors 208. Secure element processors 208 may include one or more processors with one or more physical and / or logical cores. Secure element processors 208 may be one or more types of processors such as digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), embedded processors, cryptographic processors, and reduced instruction set computer (RISC) processors among other types of processors. For example, secure element processors 208 may include one or more processors with multiple chiplets. Secure element processors 208 may be processors designed specifically for integration into secure element 204 and equipped with additional features beyond that of a typical processor. For example, secure element processors 208 may be equipped with features such as additional cryptographic features, antitampering features, and zeroization features among other features.
[0039] Secure element 204 includes secure element memory 206. Secure element memory 206 may be similar to secure element memory 106 as illustrated in FIG. 1 and provide similar functionality. For example, secure element memory 206 may provide cryptographically secure storage for confidential information such as payment cards. Secure element memory 206 may include one or more types of storage such NVMe storage, eMMC, electrically erasable programmable read-only memory (EEPROM), non-volatile random access memory (NVRAM), hard disk drives, solid state drives, and other types of storage. Secure element memory 206 may include one or more features such as tamper-resistance, zeroization, integrated cryptographic modules, and other features. Secure element memory 206 may store data encrypted with one or more types of encryption such as RSA, IDEA, AES, PQC algorithms (e.g., lattice-based cryptography, multivariate cryptography, hash-based cryptography, code-based cryptography, isogeny-based cryptography, symmetric key quantum-resistant cryptography, etc.), symmetric and asymmetric encryption, and other types of encryption.
[0040] Secure element 204 may use a master key to encrypt information stored in secure element memory 206. Secure element 204 may store a master key in secure element memory 206 and / or other memory of secure element 204 (e.g., a secure read-only memory (ROM) chip physically connected / incorporated with secure element 204). Secure element 204 may use the master key to encrypt data stored in secure element memory 206. For example, secure element processors 208 may use the master key to encrypt an application of applications 210 such that the master key is required to decrypt the encrypted application.
[0041] Secure element memory 206 may store one or more of applications 210A-210N (hereinafter “applications 210”). Applications 210 may be similar to applications 110 as illustrated in FIG. 1 and provide similar functionality. Applications 210 may include one or more types of applications such as modules, plugins, nano-applications, applets, and other types of applications. Applications 210 may provide one or more functions for computing device 202. For example, applications 210 may provide functions such as interacting with payment terminals to provide payment information, providing a DCK to an automobile, and / or executing one or more functions that require confidential information stored in secure element memory 206 (e.g., payment cards, personally identifiable information, private keys for password managers, etc.). Applications 210 may communicate with one or more other processors and / or components of computing device 202 via communication channels 244.
[0042] Computing device 202 includes one or more communication channels 244. Communication channels 244 may be software communication channels, hardwareinterconnects, or another type of connection. Communication channels 244 may logically and / or physically interconnect one or more one or more components of computing device 202 such as secure element 204, system memory 220, subsystem environment 230, and / or processors 242. For example, communication channels 244 may be a hardware interconnect or hardware bus between system memory 220, processors 242, and / or subsystem environment 230 within an SoC.
[0043] Computing device 202 may include one or more subsystems such as subsystem environment 230. Subsystem environment 230 may be a subsystem or collection of components of computing device 202. Subsystem environment 230 may be packaged as a part of an SoC that includes processors 242 and / or secure element 204, a separate SoC connected to one or more other SoCs of computing device 202, or one or more interconnected components connected to other components of computing device 202. Subsystem environment 230 may be a comparatively low-power computing environment compared to other components of computing device 202 such as processors 242. For example, subsystem environment 230 may be a low-power environment that enables limited operation of one or more processes even when computing device 202 is in a low power mode or is powered off. In some examples, subsystem environment 230 may be a software environment configured to execute on dedicated hardware such as low-power processors of computing device 202.
[0044] Subsystem environment 230 may include one or more subsystem processors 232 configured to execute instructions of subsystem environment 230. Subsystem processors 232 may be processors capable of operation in a low power environment. For instance, subsystem processors 232 may consume less power than processors 242. In some examples, subsystem processors 232 may include one or more low power or “efficiency” cores of processors 242. Subsystem processors 232 may execute instructions and continue operation even if computing device 202 is powered off. For example, subsystem processors 232 may continue to execute instructions of subsystem environment 230 when computing device 102 is a powered-off state. Subsystem processors 232 may execute instructions of one or more applications, applets, and / or nano-applications stored in memory such as system memory 220 and / or subsystem memory 234. In some examples, subsystem environment 230 may be a Context Hub Runtime Environment (CHRE).
[0045] Subsystem environment 230 may include subsystem memory 234. Subsystem memory 234 may be memory allocated to and / or integrated with subsystem environment 230. For example, subsystem memory 234 may include memory such as low-power memory integrated into a SoC of subsystem environment 230. Subsystem memory 234 may includememory allocated to subsystem environment 230 by computing device 202. For example, computing device 202 may allocate a portion of system memory 220 to subsystem environment 230 for use by subsystem environment 230.
[0046] Subsystem environment 230 may include subsystem API 236. Subsystem API 236 may be an application programming interface (API) that facilitates access to subsystem environment 230 for one or more hardware and / or software components of computing device 202. In an example, subsystem API 236 enables host OS 240 to access and issue commands to a nano-application executed by subsystem environment 230.
[0047] One or more components of secure element 204 may facilitate memory paging of secure element memory 206 and other memory of computing device 202. Secure element 204 may facilitate memory paging in combination with dynamic memory management by host OS 240. Secure element 204 may swap applications in and out of secure element 204 using memory paging and working in tandem with host OS 240. Additionally, secure element 204 may facilitate memory paging in lieu of any dynamic memory management by host OS 240.
[0048] Secure element processors 208 may support one or more features such as virtual memory and direct memory access (DMA). For example, secure element processors 208 may support virtual memory and issue (interchangeably referred to as “transmit” throughout) read and write commands to memory such as secure element memory 206, system memory 220, and / or subsystem memory 234. Secure element memory 206 may be configured as virtual memory in addition to other memory of computing device 202. For example, secure element memory 206 may store applications 210 as pages of virtual memory underpinned by the physical memory components / devices of secure element memory 206. Secure element 204 may interact with host OS 240 to cause host OS 240 to transmit read and write commands to memory of computing device 202.
[0049] Secure element 204 may include swap module 212. Swap module 212 may be a program, plugin, module, process, or other type of software component of secure element 204. For example, swap module 212 may be an ASIC and / or an FPGA configured to execute a set of instructions or may be a software program executed by secure element processors 208. Swap module 212 may implement a page-fault handler. For example, swap module 212 may implement a page-fault handling for virtual memory of secure element 204 and / or other virtual memory of computing device 202.
[0050] Swap module 212 may facilitate the swapping of applications in and out of secure element 204 using virtual memory. Swap module 212 may interact with other components of computing device 202 such as secure element processors 208 and / or processors 242 tofacilitate the reading and writing of pages of virtual memory that correspond to applications in and out of secure element memory 206. For example, swap module 212 may cause secure element memory 206 to evict a page of virtual memory that corresponds to application 2 ION from secure element memory 206.
[0051] Swap module 212 may determine that there is insufficient available memory in secure element memory 206 for a first application. Swap module 212 may determine whether there is sufficient memory or insufficient memory for the first application in response to an indication from processors 242, one or more of applications 222, host OS 240, subsystem environment 230, or another component of computing device 202. Swap module 212 may determine whether there is sufficient available memory by polling secure element memory 206 and / or using a record of virtual memory and applications addressed to pages of virtual memory. For example, secure element 204 may maintain a record of applications 210 and associated pages of virtual memory that store the instructions of applications 210.
[0052] Swap module 212 may identify a page to be evicted from secure element memory 206. Swap module 212 may identify a page that corresponds to a particular application of applications 210. For example, swap module 212 may identify a page of virtual memory that corresponds to application 210A. Swap module 212 may use one or more algorithms to identify a page of virtual memory to be evicted from secure element memory 206. For example, swap module 212 may use one or more algorithms such as Least Recently Used (LRU), first-in first-out (FIFO), Not Frequently Used (NFU), and / or Longest Distance First (LDF) among other types of algorithms to identify a page of virtual memory. Swap module 212 may identify the page using data regarding applications 210 such as usage information, heuristic analysis, and other information.
[0053] Swap module 212 may cause secure element processors 208 to encrypt the identified page of secure element memory 206. Swap module 212 may cause secure element processors 208 to encrypt the page of secure element memory 206 using one or more types of encryption such as IDEA, AES, RSA, PQC encryption, and / or other types of encryption. Swap module 212 may cause secure element processors 208 to encrypt the page of secure element memory 206 prior to evicting the page from secure element memory 206.
[0054] In some examples, swap module 212 may use a host (e.g., host OS 240) to dynamically manage the memory of secure element 204. Swap module 212 may provide an indication to host OS 240 for host OS 240 to poll virtual memory. Swap module 212 may provide an indication to host OS 240 as part of dynamically managing virtual memory that includes secure element memory 206. Computing device 202 may include communicationchannels 244, where communication channels may be a slave-master interface such as Serial Peripheral Interface (SPI), Synchronous Serial Interface (SSI), and / or other type of slavemaster interface. Swap module 212 may generate an indication that a poll of secure element memory 206 is needed. Swap module 212 may generate the indication based on one or more triggers such as the completion of encrypting a page of virtual memory that corresponds to the second application (e.g., the application to be evicted). Swap module 212 may transmit the indication over one or more interfaces such as the slave-master interface and / or another component. For example, secure element 204 may use an interface of an NFC chip of computing device 202 to transmit the indication to poll of secure element memory 206 to host OS 240. Swap module 212 may use a host controller interface (HCI) of the NFC chip to indicate a need for a polling of secure element memory 206. For example, swap module 212 may cause secure element 204 to use the same interface of the NFC chip used for transaction notifications (e.g., notifications relating to financial transactions conducted by computing device 202 via the NFC chip) to transmit a signal over communication channels 244 to host OS 240 requesting a polling of secure element memory 206. Host OS 240 may receive the signal indicating that a poll of secure element memory 206 is needed.
[0055] Processors 242 of computing device 202 may poll secure element memory 206. For example, the host (e.g. host OS 240) may issue a command to query an identifier of the page that is to be evicted in response to receiving a signal from swap module 212. For example, host OS 240 may cause processors 242 to execute instructions as part of issuing a query command. Host OS 240 may issue a query command for secure element 204 to indicate one or more pages that the host will write from secure element memory 206 to other memory of computing device 202 (e.g., evict from secure element memory 206). Host OS 240 may poll secure element memory 206 as part of evicting the second application from secure element memory 206.
[0056] Host OS 240 may issue one or more commands to obtain a page of secure element memory 206. Host OS 240 may issue one or more “read” commands to obtain the identified page of secure element memory 206 from secure element memory 206. Host OS 240 may issue read commands that include the identifier of the page of secure element memory 206. For example, host OS 240 may issue one or more read commands to obtain the encrypted information of a page of secure element memory 206. Host OS 240 may obtain the encrypted page from secure element memory 206.
[0057] Host OS 240 may write the obtained page to other memory of computing device 202. Host OS 240 may write and / or copy the obtained page to memory such as system memory220 and / or subsystem memory 234. For example, host OS 240 may copy the page to low power memory such as subsystem memory 234. Host OS 240 may write the obtained page to virtual memory that is underpinned by memory such as system memory 220. For example, host OS 240 may write the obtained page that corresponds to the second application to an address of virtual memory of computing device 202. Host OS 240 may cause processors 242 to execute an instruction as part of issuing commands to write the obtained page to virtual memory.
[0058] In some examples, secure element 204 may act as a master in a master-slave interface and manage memory input / output of computing device 202. For example, swap module 212 may manage mapping of virtual memory of computing device 202 and read / write pages in memory of computing device 202. Secure element 204, when configured as a master in a master-slave interface, may not require host OS 240 to perform actions / issue commands such as read and write commands.
[0059] Swap module 212 may cause secure element processors 208 to evict the page of secure element memory 206. Swap module 212 may cause secure element processors 208 to evict the page of secure element memory 206 by copying the page to other memory of computing device 202. Swap module 212 may cause secure element processors 208 to evict the page based on one or more triggers. For example, swap module 212 may cause secure element processors 208 to evict the page from secure element memory 206 in response to completing the encryption of the page in secure element memory 206.
[0060] Secure element 204 may write an encrypted page from secure element memory 206 to other memory of computing device 202 when configured as a master. Swap module 212 may write the data of an encrypted page from secure element memory 206 to other memory of computing device 202 such as system memory 220 and / or subsystem memory 234. For example, swap module 212 may cause secure element processors 208 to write the page of secure element memory 206 that corresponds to the second application to memory external to that of secure element memory 206 such as system memory 220 and / or subsystem memory 234. Secure element processors 208 may write the page by transmitting / issuing read and write commands to one or more memory components of computing device 202.
[0061] Secure element 204 may write the encrypted page from secure element memory 206 to subsystem memory 234 even when a host (e.g., computing device 202) is powered off. Due to the always-on capability of subsystem environment 230 (e.g., as low power memory), secure element 204 may still read from and write pages to subsystem memory 234 even when computing device 202 is in a low-power / powered off state. In an example, secure element204 determines that computing device 202 is in a powered off state and, by extension, that system memory 220 is unavailable. Based on the identification of a page to be evicted from secure element memory 206, secure element processors 208 writes and / or copies the page to subsystem memory 234.
[0062] Swap module 212 may use processors 242 and / or secure element processors 208 to write a page to secure element memory 206 that corresponds to the first application. For example, swap module 212 may cause processors 242 to execute instructions as part of issuing read and write commands. Swap module 212 may issue commands to copy the page corresponding to the first application to secure element memory 206. Swap module 212, when secure element 204 is configured as a master, may issue read and write commands to write the page corresponding to the first application to secure element memory 206.
[0063] Swap module 212 may cause secure element processors 208 may decrypt the page of the first application. Secure element processors 208 may decrypt the page of the first application in secure element memory 206. For example, secure element processors 208 may decrypt the page of the first application based on the page being written to secure element memory 206 by secure element processors 208 and / or processors 242. Secure element processors 208 may execute instructions to decrypt the page of the first application in secure element memory 206 to maintain the security and confidentiality of the data of the first application. In some examples, secure element 204 may receive an unencrypted page of the first application (e.g., the first application has not been previously executed and / or does not include any confidential information).
[0064] Secure element processors 208 may execute the first application. Swap module 212 may cause secure element processors 208 to execute the instructions of the first application based on the decryption of the first application and / or based on an indication that the first application is required to complete a workflow. For example, swap module 212 may cause secure element processors 208 to execute instructions of the first application in response to receiving an indication from host OS 240 that the first application is required to execute a payment processing flow.
[0065] Computing device 202 may determine whether the first application is still required for a flow or whether the first application may be evicted from secure element memory 206. Computing device 202 may use one or more programs and / or components such as swap module 212 and / or host OS 240 to determine whether the first application is still required. For example, swap module 212 may determine that the first application is no longer required as a workflow that requires the first application has been completed. Swap module 212 maydetermine that a flow requiring the first application has been completed by secure element 204. In some examples, swap module 212 may receive an indication from another component of computing device 202 such as host OS 240, one or more of applications 222, one or more of applications 210, or another component that the flow requiring the first application is complete and that the first application may be swapped out of secure element memory 206. Host OS 240 may determine that the first application is no longer required and that the second application may be swapped back into secure element memory 206. Host OS 240 may provide an indication to swap module 212 that the second application may be swapped back into secure element memory 206. Swap module 212 may cause secure element processors 208 to encrypt the page of secure element memory 206 consistent with the first application.
[0066] Swap module 212 may use secure element processors 208 and / or processors 242 to swap the second application back into secure element memory 206. For example, swap module 212 may use secure element processors 208 to swap the page of the second application into secure element memory 206 and the page of the first application out of secure element memory 206 when secure element 204 is a master. Swap module 212 may swap the pages of the first application and the second application to enable the second application to be executed by secure element 204. Swap module 212 may cause secure element processors 208 to encrypt the page corresponding to the first application prior to the first application being swapped (e.g., evicted) from secure element memory 206.
[0067] In some examples, swap module 212 may cause processors 242 to swap the first and second applications in secure element memory 206. Swap module 212 may use a similar process as causing processors 242 to swap the first application into secure element memory 206 and evicting the second application to evict the page consistent with the first application and swap the second application back into secure element memory 206. Swap module 212 may use processors 242 to issue and transmit read and write commands to copy the page of the first application to other memory of computing device 202 and to copy the page corresponding to the second application to secure element memory 206.
[0068] In some examples, swap module 212 may use secure element processors 208 to swap the second application back to secure element memory 206. Swap module 212 may facilitate swapping of the first application and the second application when secure element 204 acts as a master in managing memory of computing device 202. Swap module 212 may transmit a write command to other memory of computing device 202 such as system memory 220 to write the encrypted page consistent with the first application to the other memory of computing device 202. Swap module 212 may transmit a read command to other memory ofcomputing device 202 to obtain the page consistent with the second application. Swap module 212 may transmit a write command to secure element memory 206 to write the page consistent with the second application to secure element memory 206. Swap module 212 may cause secure element processors 208 to execute instructions as part of issuing / transmitting commands.
[0069] Secure element 204 may decrypt the page consistent with the second application in secure element memory 206. For example, responsive to receiving the page of the second application, swap module 212 may cause secure element processors 208 to decrypt the page of the second application in secure element memory 206. Secure element processors 208 may execute the instructions of the second application. For example, responsive to the decryption of the second application, swap module 212 may cause secure element processors 208 to execute the instructions of the second application.
[0070] FIG. 3 is a block diagram illustrating details of a computing device configured to dynamically manage memory of a secure element, in accordance with one or more techniques of this disclosure. Computing device 302 may be similar to computing device 102 as illustrated in FIG. 1 and / or computing device 202 as illustrated in FIG. 2 and provide similar functionality.
[0071] Computing device 302 may include processors 342. Processors 342 may include one or more processors such as mobile processors, laptop processors, desktop processors, embedded processors, virtualized processors, and other types of processors. Processors 342 may execute the instructions of one or more processes of computing device 302. Processors 342 may be similar to processors 242 as illustrated in FIG. 2.
[0072] Computing device 202 includes communication units 346. Communication units 346 may include one or more types of communication units such as modems, radios, network interfaces, optical receivers, and other types of communication units. Communication units 346 may communicate with other computing devices and / or systems using one or more communication protocols such as ETHERNET, WI-FI, BLUETOOTH, Asynchronous Transfer Mode (ATM), Synchronous Optical Networking (SONET), Synchronous Digital Hierarchy (SDH), and TCP / IP among other protocols.
[0073] Communication units 346 may include NFC module 348. NFC module 348 may be a module that includes one or more NFC radios, one or more processors, and / or one or more HCIs among other components. NFC module 348 may facilitate some functionality of computing device 302. For example, NFC module 348 may enable computing device 302 to interact with other computing devices such as payment terminals and exchange data with theother computing devices. NFC module 348 may provide an HCI that enables secure element 304 to transmit a signal to notify a host of computing device 302 that a polling of secure element memory 306 is needed.
[0074] Computing device 302 may include output components 350 and input components 352. Output components 350 may include one or more components such as displays, speakers, haptic engines, illuminated indicators, and other types of output components. Input components 352 may include one or more types of input components such as touchscreens, microphones, keyboards, mice, motion sensors, movement trackers, and other types of input devices. Collectively and / or individually, output components 350 and input components 352 may facilitate user interaction with computing device 302. For example, output components 350 and input components 352 may enable a user to provide input to and receive output from computing device 302 via one or more components.
[0075] Computing device 302 includes secure element 304. Secure element 304 may be similar to secure element 104 as illustrated in FIG. 1 and / or secure element 204 as illustrated in FIG. 2 and may provide similar functionality. For example, secure element 304 may be a subsystem of computing device 302 and / or a collection of interrelated / interconnected components. Secure element 304 may be packaged as a single chip (e.g., a single chip with one or more interconnected chiplets, as an SoC, etc.) or as one or more integrated circuits interconnected by one or more interconnects. Secure element 304 may be a master in a master-slave memory interface of computing device 302. For example, secure element 304 may be configured with DMA to other components of computing device 302 such as storage components 354.
[0076] Secure element 304 may include secure element memory 306. Secure element memory 306 may be similar to secure element memory 106 as illustrated in FIG. 1 and / or secure element memory 206 as illustrated in FIG. 2 and provide similar functionality. Secure element memory 306 may include one or more storage devices and types of memory. For example, secure element memory 306 may include such NVMe storage, eMMC, electrically erasable programmable read-only memory (EEPROM), non-volatile random access memory (NVRAM), hard disk drives, solid state drives, and other types of storage. Secure element memory 306 may include one or more security features such as tamper-resistance, zeroization, integrated cryptographic modules, and other features. Secure element memory 206 may store data encrypted with one or more types of encryption such as RSA, IDEA, AES, and other types of encryption.
[0077] Secure element memory 306 may store one or more of applications 310A-N (hereinafter “applications 310”). Applications 310 may be similar to applications 110 as illustrated in FIG. 1 and / or applications 210 as illustrated in FIG. 2 and provide similar functionality. For example, applications 310 may include one or more types of applications such as modules, plugins, nano-applications, applets, and other types of applications. Applications 310 may be software sub-components of other applications executed by computing device 302. For example, applications 310 may execute instructions of one or more other applications that must be executed in a secure environment such as sure element 304.
[0078] Secure element 304 may include one or more of secure element processors 308. Secure element processors 308 may be similar to secure element processors 208 as illustrated in FIG. 2 and provide similar functionality. For example, secure element processors 308 may execute the instructions of applications 310 and other software components of computing device 302 such as swap module 312, where swap module 312 is a software component.
[0079] Secure element 304 may include swap module 312. Swap module 312 may be similar to swap module 212 as illustrated in FIG. 2 and may provide similar functionality. For example, swap module 312 may be a hardware component such as an ASIC and / or FPGA or a software component of secure element 304 executed by secure element processors 308.Swap module 312 may facilitate the swapping of applications in and out of secure element memory 306. For example, swap module 312 may cause secure element processors 308 to transmit read and write commands to other memory of computing device 302 such as storage components 354 and / or subsystem storage 334.
[0080] Computing device 302 includes subsystem environment 330. Subsystem environment 330 may be similar to subsystem environment 230 as illustrated in FIG. 2 and provide similar functionality. Subsystem environment 330 may be a comparatively low power (e.g., compared to processors 342 and other components of computing device 302) subsystem of computing device 302 that may continue operation even while computing device 302 is in a low power and / or powered-off state. In some examples, one or more components of subsystem environment 330 may be packaged with other components of computing device 302 (e.g., subsystem processors 332 may be low-power cores of processors 342 and / or chiplets packaged with processors 342).
[0081] Subsystem environment 330 may include subsystem processors 332. Subsystem processors may be similar to subsystem processors 232 as illustrated in FIG. 2 and providesimilar functionality. For example, subsystem processors 332 may execute the instructions of one or more applications stored by subsystem storage 334.
[0082] Subsystem environment 330 may include subsystem storage 334. Subsystem storage 334 may be similar to subsystem memory 234 as illustrated in FIG. 2 and provide similar functionality. For example, subsystem storage 334 may include one or more low-power storage devices that store the instructions of one or more applications executed by subsystem environment 330.
[0083] Subsystem storage 334 may include subsystem API 336. While illustrated as within subsystem storage 334, subsystem API 336 may be stored and / or executed by one or more other components of computing device 302. Subsystem API 336 may be similar to subsystem API 236 as illustrated in FIG. 2 and provide similar functionality. For example, subsystem API 336 may enable one or more other components of computing device 302 such as secure element 304 to interact with subsystem environment 330.
[0084] Computing device 302 includes storage components 354. Storage components 354 may include one or more types of storage devices such as hard disk drives, solid state drives, NVMe storage, RAM, EEPROM, ROM, tape drives, eMMC, and other types of memory. Storage components 354 may be similar to system memory 120 as illustrated in FIG. 1 and system memory 220 as illustrated in FIG. 2 and provide similar functionality. For example, storage components 354 may include system memory such as system memory 220 as a portion of the memory of storage components 354.
[0085] Storage components 354 may include virtual memory. One or more physical components of storage components 354 may be visible to one or more other components of computing device 302 as virtual memory. For example, host OS 340 may view one or more components of storage components 354 as virtual memory.
[0086] Storage components 354 may store applications 322A-322N (hereinafter “applications 322”). Applications 322 may be similar to applications 122 as illustrated in FIG. 1 and applications 222 as illustrated in FIG. 2. For example, applications 322 may include one or more types of applications such as virtual payments applications, games, retail applications, public transit applications, password managers, authentication applications, and other applications. Applications 322 may interact with other applications executed by computing device 302 such as applications 310 and / or applications executed by subsystem environment 330.
[0087] Storage components 354 may store host OS 340. Host OS 340 may be an operating system similar to host OS 240 as illustrated by FIG. 2 and provide similar functionality. Forexample, host OS 340 may provide an execution environment for one or more of applications 322.
[0088] Host OS 340 may facilitate dynamic memory management of secure element 304. Host OS 340 may facilitate dynamic memory management through swapping of applications executed by secure element 304. For example, host OS 340 may cause secure element 304 to encrypt one of applications 310 and copy the encrypted data of the application to other memory of computing device 302 such as storage components 354 and / or subsystem storage 334. Host OS 340 may work in tandem with secure element processors 308 and / or processors 342 to dynamically manage secure element memory 306. For example, host OS 340 may facilitate dynamic memory management of secure element 304 while secure element processors 308 manage virtual memory of computing device 302.
[0089] Host OS 340 may identify a first application that needs to be installed to secure element memory 306. In some examples, host OS 340 may identify a sub-component, process, applet, or other application component that needs to be installed in secure element memory 306. Host OS 340 may identify that the first application needs to be installed in secure element memory 306 using one or more factors. Host OS 340 may use factors such as heuristics, usage patterns of computing device 302, types of data received by computing device 302, and other factors. Host OS 340 may identify a particular application that needs to be installed in secure element memory 306 based on receiving a packet for the particular application. In an example, host OS 340 receives a packet intended for a particular application that must be installed in secure element memory 306 in order to process the packet, but the particular application is not currently installed in secure element memory 306. Host OS 340 identifies the particular application as needing to be installed in secure element memory 306 based on receiving the packet.
[0090] Host OS 340 may determine whether there is insufficient available memory in secure element memory 306 for the first application. Host OS 340 may determine the amount of available memory in secure element memory 306 using one or more techniques. For example, host OS 340 may poll secure element 304 to determine the amount of available memory in secure element memory 306, provide an indication to secure element 304 to determine and indicate the amount of available memory in secure element memory 306, and / or techniques of determining available storage capacity. Responsive to determining the amount of available memory in secure element memory 306, host OS 340 may determine whether the amount of available memory is sufficient to support the installation of a first application. Host OS 340 may compare an estimated amount of memory required for the first application to the amountof available memory in secure element memory 306 to determine whether the first application can be installed in secure element 304. In some examples, host OS 340 may determine a total amount of memory required for the operation of the first application in secure element 304 and determine whether the application can be installed (e.g., a payment application may require additional memory to store payment cards).
[0091] Host OS 340 may identify a second application to evict from secure element memory 306. Host OS 340 may identify the second application as an application to evict from secure element memory 306 to increase the amount of available memory in secure element memory 306. Host OS 340 may identify the second application to evict using one or more techniques. Host OS 340 may use techniques such as identifying a second application that occupies an amount of secure element memory 306 such that evicting the second application would allow for the installation of the first application, identifying the second application based on the amount of non-read-only data of the second application, whether an application is a real-time application or non-real time application, and / or other techniques to identify the second application. For example, host OS 340 may identify application 310A as the application to be evicted based on the amount of non-read-only data of application 310A stored in secure element memory 306.
[0092] Host OS 340 may evict the second application from secure element memory 306. Host OS 340 may evict the second application by copying at least a portion of the data of the second application from secure element memory 306 to other memory of computing device 302. In some examples, host OS 340 may evict read-only code and read-only memory of the second application and retain non-read-only memory in secure element memory 306. Host 340 may retain non-read-only data such as data that secure element 304 may modify as part of conducting one or more flows. For example, host OS 340 may retain writable data that includes the context of one or more of applications 310 to maintain the context of an application while the application is evicted from secure element 304. Host OS 340 may evict the data of the second application and copy the data to one or more other storage devices of computing device 302.
[0093] Host OS 340, as part of evicting the second application, may encrypt the data of the second application. Host OS 340 may encrypt the data of the second application in secure element memory 306 prior to copying the data of the second application to one or more other storage devices of computing device 302. Host OS 340 may use one or more types of encryption such as AES, IDEA, RSA, PQC algorithms, and other types of encryption to encrypt the data of the second application. In an example, host OS 340 identifies application310A as the second application (e.g., the application to be evicted). Host OS 340 encrypts the data of application 310A. Host OS 340 copies the encrypted data of application 310A to storage components 354. Host OS 340 may encrypt the entirety of the data of the second application or the portion of the second application that is to be copied from secure element memory 306. For example, host OS 340 may encrypt only the writable data of the second application and copy the encrypted writable data of the second application to storage components 354 while leaving the read-only data of the second application unencrypted and stored in secure element memory 306. Host OS 340 may encrypt the data of the second application to ensure that the security of applications 310 is maintained regardless of whether the data of applications 310 is stored in secure element memory 306 or other storage of computing device 302 such as storage components 354.
[0094] Host OS 340 may install the first application in secure element memory 306. Host OS 340 may install the first application in secure element memory based on the eviction of the second application from secure element memory 306. In some examples, host OS 340 may cause secure element processors 308, processors 342, and / or one or more other processors to execute the instructions of an installation program, module or sub-component to install the first application. Host OS 340 may copy the data of the first application to secure element memory 306 from storage components 354 via communication channels 344. Based on the copying of the data of the first application, host OS 340 may provide an indication to secure element 204 to execute the instructions of the first application.
[0095] One or more processors of computing device 302, such as secure element processors 308, may execute the instructions of the first application. Secure element processors 308 may execute the instructions of the first application in response to the first application being installed in secure element 304. For example, secure element processors 308 may execute the instructions of the first application in secure element 304.
[0096] Computing device 302 may include communication channels 344. Communication channels 344 may be similar to communication channels 244 as illustrated in FIG. 2 and provide similar functionality. For example, communication channels 344 may interconnect one or more components of computing device 302. Communication channels 344 may include one or more types of components such as hardware interconnects, software interconnects, hardware buses, and other types of components.
[0097] Communication channels 344 may include one or more master-slave interfaces. For example, communication channels 344 may include an SPI interface interconnecting secure element 304, storage components 354, and / or subsystem environment 330. Communicationchannels 344 may enable one or more components of computing device 302 to transmit read and write commands to other components. For example, communication channels 244 may enable secure element processors 308 to transmit a write command to storage components 354 to cause storage components 354 to write an encrypted page to virtual memory underpinned by storage components 354.
[0098] FIG. 4 is a flowchart illustrating an example operation of a computing device that includes a secure element, in accordance with one or more techniques of this disclosure. For the purposes of clarity, FIG. 4 is described in the context of FIG. 2.
[0099] A computing device, such as computing device 202, determines that there is insufficient available memory in memory of a secure element, such as secure element memory 206 of secure element 204, for a first application (402). Computing device 202 may determine whether there is sufficient or insufficient available memory in secure element memory 206 in response to an indication that the first application needs to be installed in secure element 204. For example, computing device 202 may determine whether there is insufficient available memory in secure element memory 206 in response to receiving a packet intended for the first application, where the first application is not yet installed in secure element memory 206. Computing device 202 may use one or more techniques to determine whether there is insufficient available memory in secure element memory 206. For example, computing device 202 may poll secure element memory 206, generate and provide a request for secure element 204 to determine the amount of available memory in secure element memory 206, and other techniques to determine.
[0100] Computing device 202 identifies a second application to evict from secure element memory 206 (404). Computing device 202 may identify the second application based on one or more factors such as the type of application, heuristic analysis, whether one or more of applications is a real-time or non-real-time application, and / or types of analysis. For example, computing device 202 may identify the second application based on determining that the second application will not be needed for at least a predetermined period of time and therefore can be evicted from secure element memory 206 without impacting a user experience of computing device 202.
[0101] Computing device 202 evicts the second application from secure element memory 206, where evicting the second application includes encrypting the second application in secure element memory 206 (404). Computing device 202 may cause a host operating system of computing device 202 such as host OS 240 to evict the second application. For example, host OS 240 may encrypt the data of the second application and copy the encrypted data toother memory of computing device 202 such as system memory 220 and / or subsystem memory 234. Computing device 202 may cause secure element 204 to evict the second application from secure element memory 206. For example, secure element 204 may transmit write commands to other components of computing device 202 such as subsystem memory 234 and / or system memory 220 to write a page of secure element memory 206 consistent with the second application.
[0102] Computing device 202 installs the first application in secure element memory 206 (408). Computing device 202 may copy the data of the first application into secure element memory 206 and install the application. Computing device 202 may cause host OS 240 to install the first application in secure element memory 206. For example, host OS 240 may copy the data of the first application to secure element memory 206. Computing device 202 may cause secure element 204 to install the first application in secure element memory 206. For example, secure element 204 may transmit a command to write a page consistent with the data of the first application to secure element memory 206.
[0103] Computing device 202 executes the first application in secure element memory 206 (410). Computing device 202 may cause secure element 204 to execute the instructions of the first application. Secure element processors 208 may execute the instructions of the first application to complete one or more workflows. For example, secure element processors 208 may execute the instructions of the first application to complete a payment processing workflow.
[0104] FIG. 5 is a flowchart illustrating an example operation of host-assisted dynamic memory management of a secure element, in accordance with one or more techniques of this disclosure. For the purposes of clarity, FIG. 5 is described in the context of FIG. 3.
[0105] A host operating system, such as host OS 340, of a computing device such as computing device 302, determines that a first application needs to be in memory of a secure element, such as secure element memory 306 of secure element 204 (502). Host OS 340 may determine that the first application needs to be in secure element memory 306 based on one or more factors. For example, host OS 340 may determine that a packet received by computing device 302 is destined for the first application and that the first application must be installed in secure element memory 306 to securely process the packet (e.g., the packet is from a payment terminal and contains confidential information).
[0106] Host OS 340 determines whether there is sufficient available memory in secure element memory 306 (504). Host OS 340 may use one or more techniques to determine whether there is sufficient available memory. For example, host OS 340 may poll secureelement memory 306 to determine whether secure element memory 306 has sufficient available memory to install the first application.
[0107] Based on there being sufficient available memory in secure element memory 306 (“YES” branch of 504), host OS 340 installs the first application in secure element memory 306 (506). Host OS 340 may cause processors 342 to write the data of the first application to secure element memory 306. In some examples, host OS 340 may cause one or more components of computing device 302 to copy the data of the first application to secure element 304, where secure element 304 installs the copied data into secure element memory 306. Secure element 304 may execute the installed first application.
[0108] Based on there being insufficient available memory in secure element memory 306 (“NO” branch of 504), host OS 340 identifies a second application to evict from secure element memory 306. Host OS 340 may identify a second application from applications 310 to evict from secure element memory 306. Host OS 340 may identify the second application based on one or more factors. Host OS 340 may identify the second application based on heuristic analysis (e.g., whether the need for the first application would make it unlikely that the second application will be needed for at least a predetermined period of time), user interaction with computing device 302, the amount of memory of secure element memory 306 that the second application requires, and other factors.
[0109] Host OS 340 may encrypt at least a portion of the data of the second application. Host OS 340 encrypts read-only information of the second application (512) or encrypts all of the data of the second application (510). Host OS 340 may encrypt only a portion of the information of the second application such as read-only data and / or read-only code. Host OS 340 may encrypt only a portion of the second application to leave the unencrypted portions (e.g., non-read-only code and data) in secure element memory 306 when the second application is evicted. Host OS 340 may cause secure element 304 to encrypt the data of the second application using a master key stored in secure element 204. For example, host OS 240 may cause secure element 204 to encrypt the data of the second application such that the master key is required to decrypt the data of the second application.
[0110] Host OS 340 evicts the second application from secure element memory 306 (514). As part of evicting the second application, host OS 340 copies the information from secure element memory to other memory of computing device 302 such as storage components 354 and / or subsystem storage 334 (516). For example, host OS 340 may cause processors 342 to issue read and write commands to copy the encrypted data of the second application to othermemory of computing device 302. Host OS 340 may copy the data and increase the available memory of secure element memory 306.[OHl] Host OS 340 installs the first application in secure element memory 306 (518). Host OS 340 may install the first application by copying and / or causing one or more components of computing device 302 to copy the data of the first application to secure element memory 306. For example, host OS 340 may cause processors 342 to transmit read and write commands to storage components 354 and secure element memory 306. Host OS 240 may cause secure element 304 to execute one or more installation processes to install the first application in secure element memory 306.
[0112] Host OS 340 determines that one or more flows requiring the first application are complete (520). Host OS 340 may determine that the one or more flows are complete based on one or more factors. For example, host OS 340 may determine whether the one or more flows are complete based on an indication from secure element 304, an indication from one or more of applications 322 that are part of the one or more flows, and other factors. Host OS 340 may determine whether there are other flows that require the first application to complete for an upcoming period of time as part of determining whether the one or more are complete.
[0113] Host OS 340 evicts the first application from secure element memory 306 (522). Host OS 340 may cause secure element 304 to encrypt the data of the first application in secure element memory 306 prior to evicting the first application from secure element memory 306. Host OS 340 may cause one or more components of computing device 302 to evict the first application from secure element memory 306. Host OS 340 may cause one or more components to copy the data of the first application from secure element memory 306 to other memory of computing device 302 such as storage components 354 and / or subsystem storage 334. In some examples, host OS 340 may provide a command to secure element 304 and secure element 304 may transmit read and write commands to other components of computing device 302 to copy the data of the first application out of secure element memory 306. Secure element 304 may encrypt the data of the first application using the master key stored by secure element 204. For example, host OS 340 may cause secure element 304 to encrypt the data of the first application using the master key.
[0114] Host OS 240 re-installs the second application in secure element 304 (524). Host OS 340 may re-install the second application to enable other components of computing device 302 to resume use of the second application. For example, application 322A may resume processing flows that require use of the second application following the installation of the second application.
[0115] As part of re-installing the second application, host OS 340 copies the encrypted data of the second application into secure element memory 306 (526). Host OS 340 may cause one or more components of computing device 302 to copy the data to secure element memory 306. For example, host OS 340 may cause processors 342 and / or secure element processors 308 to transmit read and write commands to one or more components of computing device 302.
[0116] As part of re-installing the second application, host OS 340 decrypts the encrypted data of the second application in secure element memory 306 (528). Host OS 340 may cause one or more components of computing device 302 to decrypt the data of the second application in secure element memory 306. For example, host OS 340 may cause secure element processors 308 to decrypt the data of the second application. Host OS 340 may cause one or more components of secure element 304 to decrypt the data of the second application to preserve the security and integrity of the data of the second application. Host OS 340 may cause secure element 304 to decrypt the data of the second application using the master key.
[0117] FIG. 6 is a flowchart illustrating an example operation of secure element memory paging, in accordance with one or more techniques of this disclosure. For the purposes of clarity, FIG. 6 is discussed in the context of FIG. 2.
[0118] Computing device 202 determines that a first application needs to be in secure element memory 206 (602). One or more components of computing device 202 may determine that the first application needs to be in secure element memory 206. For example, swap module 212 may determine that the first application needs to be in secure element memory 206 based on one or more factors such as computing device 202 receiving a packet for the first application, one or more of applications 222 requesting use of the first application, and other factors.
[0119] Secure element 204 determines whether there is sufficient available memory in secure element memory 206 for the first application (604). Swap module 212 may cause secure element processors 208 to poll secure element memory 206 to determine the amount of available memory in secure element 204. Swap module 212 may compare the amount of available memory in secure element memory 206 with an amount of memory needed for the first application.
[0120] Swap module 212 may determine that there is sufficient available memory in secure element memory 206 (“YES” branch of 604). Swap module 212 causes secure element 204 to install the first application in secure element memory 206 (606). Swap module 212 may cause secure element processors 208 execute instructions as part of transmi tting / issuing readcommands. Swap module 212 may transmit read commands to cause other memory such as system memory 220 and / or subsystem memory 234 to read the page consistent with the first application. Swap module 212 may transmit / issue write commands to cause secure element memory 206 to write the received page consistent with the first application to secure element memory 206. In some examples, secure element 204 may transmit a signal to host OS 240 to cause host OS 240 to transmit read and write commands to components of computing device 202.
[0121] Swap module 212 may determine that there is insufficient available memory in secure element memory 206 for the first application (“NO” branch of 608). Swap module 212 identifies a page of virtual memory that includes secure element memory 206 to evict from secure element memory 206 (608). Swap module 212 may identify the page to evict based on identifying one or more of applications 210 to evict from secure element memory 206. For example, swap module 212 may identify a second application to evict from secure element memory 206 and the page associated with the second application.
[0122] Swap module 212 encrypts the identified page (610). Swap module 212 may cause secure element processors 208 to encrypt the identified page using one or more types / techniques of encryption such as AES, IDEA, PQC encryption, RSA, and other types of encryption. Swap module 212 may encrypt the identified page while the identified page is still in secure element memory 206 to preserve the security and confidentiality of the data of the identified page. Swap module 212 may encrypt the identified page using the master key stored in secure element memory 206 such that the master key is required to decrypt the identified page.
[0123] Swap module 212 evicts the encrypted page from secure element memory 206 (612). Swap module 212 may cause one or more components of computing device 202 to evict the encrypted page and copy the encrypted page to virtual memory of computing device 202. Swap module 212 may cause secure element 204 to transmit a signal to host OS 240 to indicate that the encrypted page needs to be written to virtual memory of computing device 202 (e.g., virtual memory including system memory 220 and / or subsystem memory 234). In some examples, secure element 204 may be configured as a master in a slave-master memory management interface and manage the evicting of the encrypted page.
[0124] As part of evicting the encrypted page from secure element memory 206, swap module 212 writes the encrypted page to remote memory (614). Swap module 212 may cause one or more components of secure element 204 to write the encrypted page to remote memory (e.g., system memory 220, subsystem memory 234, etc.). For example, swap module212 may issue read and write commands to write the encrypted page to remote memory of computing device 202. Swap module 212 may copy the page to memory that includes subsystem memory 234 via the read and write commands. In an example, computing device 202 is in a powered-off state. Swap module 212 causes subsystem memory 234 to write the data of the second application to virtual memory that includes subsystem memory 234. Swap module 212 may write pages to virtual memory that includes subsystem memory 234 to enable the writing of pages while computing device 202 is a low power / powered-off state.
[0125] In some examples, swap module 212 may write the encrypted page to subsystem memory 234. Swap module 212 may cause secure element processors 208 to execute instructions as part of writing the encrypted page to subsystem memory 234 when computing device 202 is in a low-power or powered-off state. Swap module 212 may write the encrypted page to subsystem memory 234 to enable the evicting of the encrypted page when computing device 202 is unable to write the page to system memory 220 (e.g., when computing device 202 is in a powered-off state and system memory 220 is unavailable for use). In an example, secure swap module 212 transmits a write command to subsystem memory 234 while computing device 202 is in a powered-off state. Subsystem memory 234 writes the encrypted page to virtual memory that includes subsystem memory 234. In some examples, swap module 212 may provide an indication to host OS 240 to cause host OS 240 to read and write pages of the virtual memory.
[0126] Computing device 202 completes the one or more flows that require the first application (616). One or more components of computing device 202 such as applications 222 may execute flows that require the first application. For example, applications 222 A and one or more applications executed by subsystem environment 230 may execute flows that require the first application. The first application may cause secure element processors 208 to execute instructions and may process one or more steps of the one or more flows that require the first application. For example, secure element processors 208 may execute the instructions of the first application and complete a flow that requires the first application. Swap module 212 may determine that the flows requiring the first application have been completed.
[0127] Swap module 212 evicts the first application from secure element memory 206 (618). Swap module 212 may evict the first application from secure element memory 206 using a similar process as evicting the second application from secure element memory 206. For example, swap module 212 may cause secure element processors 208 to encrypt the page of virtual memory that corresponds to the first application. Swap module 212 may write theencrypted page to other memory of computing device 202. In some examples, swap module 212 may provide an indication to host OS 240 to write the encrypted page to other memory.
[0128] Swap module 212 retrieves the encrypted page that corresponds to the second application from remote memory (620). Swap module 212 may cause one or more other components of secure element 204 from remote memory to retrieve the identified page from other memory of computing device 202 such as system memory 220. Swap module 212 may transmit a read command to obtain the encrypted page that corresponds to the second application from remote memory such as system memory 220 and / or subsystem memory 234. Swap module 212 may transmit a write command to secure element memory 206 to cause secure element memory 206 to write the encrypted page corresponding to the second application to secure element memory 206. In some examples, swap module 212 may transmit a signal to host OS 240. Host OS 240 may receive the signal and transmit read and write commands to one or more components of computing device 202 to cause the one or more components to write the encrypted page corresponding to the second application to secure element memory 206.
[0129] Swap module 212 may decrypt the encrypted page corresponding to the second application in secure element memory 206 (622). Swap module 212 may cause secure element processors 208 to decrypt the encrypted page. For example, secure element processors 208 may decrypt the identified (e.g., encrypted) page of the second application in secure element memory 206. Swap module 212 may use the master key stored in secure element 204 to decrypt the identified page of the second application. Swap module 212 may cause the second application to execute in secure element 204.
[0130] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer- readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that may be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniquesdescribed in this disclosure. A computer program product may include a computer-readable medium.
[0131] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0132] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0133] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware.
[0134] Example 1 : A method includes determining, by a computing device, that there is insufficient available memory in memory of a secure element of the computing device for a first application; identifying, by the computing device, a second application to evict from the memory of the secure element; evicting, by the computing device, the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; installing, by the computing device, the first application in the memory of the secure element; and executing, by the computing device, the first application in the memory of the secure element.
[0135] Example 2: The method of example 1, wherein the secure element is configured with direct memory access to other memory of the computing device, wherein identifying the second application includes identifying, by the secure element of the computing device, a page of the memory of the secure element that corresponds to the second application, wherein evicting the second application includes: encrypting, by the secure element, the identified page; and writing, by the secure element, the identified page to the other memory of the computing device, and further includes retrieving, by the secure element, the identified page from the other memory; and decrypting, by the secure element, the identified page in the memory of the secure element.
[0136] Example 3: The method of example 2, wherein the secure element includes one or more processors, and wherein identifying the second application includes identifying the second application by the one or more processors of the secure element.
[0137] Example 4: The method of any of examples 1-3, wherein identifying the second application to evict includes identifying, by a host operating system of the computing device, the second application, wherein evicting the second application includes evicting, by the host operating system, the second application, and further includes responsive to determining that the first application is no longer needed, evicting, by the host operating system, the first application from the memory of secure element; and re-installing, by the host operating system, the second application in the memory of the secure element, wherein re-installing the second application includes decrypting the second application in the memory of the secure element.
[0138] Example 5: The method of any of examples 1-4, wherein evicting the second application from the memory of the secure element: evicting read-only code and read-only data of the second application; and retaining non-read-only data of the second application in the memory of the secure element.
[0139] Example 6: The method of any of examples 1-5, wherein evicting the second application from the memory of the secure element includes: writing encrypted data of the second application to other memory of the computing device, wherein the other memory of the computing device is connected to the secure element.
[0140] Example 7: The method of any of examples 1-6, wherein encrypting the second application includes encrypted the second application using a master key stored in the memory of the secure element, wherein the master key is required to decrypt the second application.
[0141] Example 8: The method of any of examples 1-7, wherein the computing device includes a low power processor and low-power memory, and wherein evicting the second application includes: encrypting a page of the memory of the secure element that includes the second application; and copying the page to memory that includes the low-power memory.
[0142] Example 9: The method of any of examples 1-8, wherein identifying the second application to evict includes identifying the second application from a plurality of applications in the memory of the secure element using heuristics.
[0143] Example 10: A computing device includes a secure element; a memory; and one or more processors in communication with the memory, and configured to: determine that there is insufficient available memory in the memory of the secure element for a first application; identify a second application to evict from the memory of the secure element; evict the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; install the first application in the memory of the secure element; and execute the first application in the memory of the secure element.
[0144] Example 11 : The computing device of example 10, wherein the secure element is configured with direct memory access to other memory of the computing device, wherein to identify the second application, the secure element is configured to identify a page of the memory of the secure element that corresponds to the second application, and wherein to evict the second application, the secure element is configured to: encrypt the identified page; and write the identified page to the other memory of the computing device, and wherein the secure element is further configured to: retrieve the identified page from the other memory; and decrypt the identified page in the memory of the secure element.
[0145] Example 12: The computing device of example 11, wherein the secure element includes one or more processors, and wherein to identify the second application, the one or more processors of the secure element are configured to identify the second application.
[0146] Example 13: The computing device of any of examples 10-12, wherein the one or more processors execute a host operating system, and wherein to identify the second application to evict, the one or more processors are further configured to identify the second application using the host operating system, wherein to evict the second application, the one or more processors are configured to evict the second application using the host operating system, and wherein the one or more processors are configured to: responsive to determining that the first application is no longer needed, evict, using the host operating system, the first application from the memory of secure element; and re-install, using the host operating system, the second application in the memory of the secure element, wherein to re-install the second application, the one or more processors are further configured to decrypt the second application in the memory of the secure element.
[0147] Example 14: The computing device of any of examples 10-13, wherein to evict the second application from the memory of the secure element, the one or more processors are further configured to: evict read-only code and ready-only data of the second application; and retain non-ready-only data of the second application in the memory of the secure element.
[0148] Example 15: The computing device of any of examples 10-14, wherein to evict the second application from the memory of the secure element includes: write encrypted data of the second application to other memory of the computing device, wherein the other memory of the computing device is connected to the secure element.
[0149] Example 16: The computing device of any of examples 10-15, wherein to encrypt the second application, the one or more programmable processors are further configured to encrypt the second application using a master key stored in the memory of the secure element, wherein the master key is required to decrypt the second application.
[0150] Example 17: The computing device of any of examples 10-16, wherein the computing device further comprises a low power processor and low power memory, and wherein to evict the second application the one or more programmable processors are further configured to: encrypt a page of the memory of the secure element that includes the second application; and copy the page to virtual memory that includes the low-power memory.
[0151] Example 18: The computing device of any of examples 10-17, wherein to identify the second application to evict includes identify the second application from a plurality of applications in the memory of the secure element using heuristics.
[0152] Example 19: A non-transitory computer-readable storage medium encoded with instructions that, when executed, causes at least one processor of a computing device to: determine that there is insufficient available memory in a memory of a secure element for afirst application; identify a second application to evict from the memory of the secure element; evict the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; install the first application in the memory of the secure element; and execute the first application in the memory of the secure element.
[0153] Example 20: The non-transitory computer-readable storage medium of example 19, wherein the instructions further cause the at least one processor to perform the method of any of examples 2-10.
[0154] Example 21 : A computing device comprising means for performing the method of any of examples 1-10.
[0155] Various examples of the disclosure have been described. Any combination of the described systems, operations, or functions is contemplated. These and other examples are within the scope of the following claims.
Claims
WHAT IS CLAIMED IS:
1. A method, comprising: determining, by a computing device, that there is insufficient available memory in memory of a secure element of the computing device for a first application; identifying, by the computing device, a second application to evict from the memory of the secure element; evicting, by the computing device, the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; installing, by the computing device, the first application in the memory of the secure element; and executing, by the computing device, the first application in the memory of the secure element.
2. The method of claim 1, wherein the secure element is configured with direct memory access to other memory of the computing device, wherein identifying the second application includes identifying, by the secure element of the computing device, a page of the memory of the secure element that corresponds to the second application, wherein evicting the second application includes: encrypting, by the secure element, the identified page; and writing, by the secure element, the identified page to the other memory of the computing device, and further comprising: retrieving, by the secure element, the identified page from the other memory; and decrypting, by the secure element, the identified page in the memory of the secure element.
3. The method of claim 2, wherein the secure element includes one or more processors, and wherein identifying the second application includes identifying the second application by the one or more processors of the secure element.
4. The method of any of claims 1-3, wherein identifying the second application to evict includes identifying, by a host operating system of the computing device, the secondapplication, wherein evicting the second application includes evicting, by the host operating system, the second application, and further comprising: responsive to determining that the first application is no longer needed, evicting, by the host operating system, the first application from the memory of secure element; and re-installing, by the host operating system, the second application in the memory of the secure element, wherein re-installing the second application includes decrypting the second application in the memory of the secure element.
5. The method of any of claims 1-4, wherein evicting the second application from the memory of the secure element: evicting read-only code and read-only data of the second application; and retaining non-read-only data of the second application in the memory of the secure element.
6. The method of any of claims 1-5, wherein evicting the second application from the memory of the secure element includes: writing encrypted data of the second application to other memory of the computing device, wherein the other memory of the computing device is connected to the secure element.
7. The method of any of claims 1-6, wherein encrypting the second application includes encrypted the second application using a master key stored in the memory of the secure element, wherein the master key is required to decrypt the second application.
8. The method of any of claims 1-7, wherein the computing device includes a low power processor and low power memory, and wherein evicting the second application includes: encrypting a page of the memory of the secure element that includes the second application; and copying the page to memory that includes the low power memory.
9. The method of any of claims 1-8, wherein identifying the second application to evict includes identifying the second application from a plurality of applications in the memory of the secure element using heuristics.
10. A computing device, comprising: a secure element; a memory; and one or more processors in communication with the memory, and configured to: determine that there is insufficient available memory in the memory of the secure element for a first application; identify a second application to evict from the memory of the secure element; evict the second application from the memory of the secure element, wherein evicting the second application includes encrypting the second application in the memory of the secure element; install the first application in the memory of the secure element; and execute the first application in the memory of the secure element.
11. The computing device of claim 10, wherein the secure element is configured with direct memory access to other memory of the computing device, wherein to identify the second application, the secure element is configured to identify a page of the memory of the secure element that corresponds to the second application, and wherein to evict the second application, the secure element is configured to: encrypt the identified page; and write the identified page to the other memory of the computing device, and wherein the secure element is further configured to: retrieve the identified page from the other memory; and decrypt the identified page in the memory of the secure element.
12. The computing device of claim 11, wherein the secure element includes one or more processors, and wherein to identify the second application, the one or more processors of the secure element are configured to identify the second application.
13. The computing device of any of claims 10-12, wherein the one or more processors execute a host operating system, and wherein to identify the second application to evict, the one or more processors are further configured to identify the second application using the host operating system, wherein to evict the second application, the one or more processors areconfigured to evict the second application using the host operating system, and wherein the one or more processors are configured to: responsive to determining that the first application is no longer needed, evict, using the host operating system, the first application from the memory of secure element; and re-install, using the host operating system, the second application in the memory of the secure element, wherein to re-install the second application, the one or more processors are further configured to decrypt the second application in the memory of the secure element.
14. The computing device of any of claims 10-13, wherein to evict the second application from the memory of the secure element, the one or more processors are further configured to: evict read-only code and ready-only data of the second application; and retain non-ready-only data of the second application in the memory of the secure element.
15. A non-transitory computer-readable storage medium encoded with instructions that, when executed, causes at least one processor of a computing device to perform any combination of the method of claims 1-9.
Citation Information
Patent Citations
Apparatus and method for controlling running of multiple pieces of security application software
EP3435221A1
Page processing circuits, devices, methods and systems for secure demand paging and other operations
US20070294494A1
Method and Computing Device for Encrypting Data Stored in Swap Memory
US20160117260A1