Crypto Engine Secure Execution Environment Communication
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Distributed computing systems face challenges in establishing secure communication between execution environments without relying on shared memory or certificate exchanges, which can be cumbersome and inhibit scalability.
Innovation Solution
A crypto engine is used to securely transfer information by receiving plaintext, obtaining and storing cryptographic keys associated with specific execution environments, encrypting and decrypting data, and making it available to intended environments, thereby establishing secure tunnels for communication without certificate exchanges.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If shared memory is established for each pair of execution environments, then secure communication is achieved, but memory resources are wasted and scalability is inhibited
Solution Approach 1:
A crypto engine is introduced as an intermediary component that manages cryptographic keys and performs encryption/decryption operations. The crypto engine stores keys in a key store and acts as a mediator between execution environments, enabling secure communication without requiring dedicated shared memory between each pair of environments. This intermediary approach consolidates security functionality into a single component rather than distributing memory resources across all environment pairs.
2Reliability
If certificate exchanges are used to establish secure channels, then authentication is achieved, but the process becomes cumbersome and complex
Solution Approach 1:
The complex certificate exchange and key provisioning processes are extracted from the execution environments and consolidated into the crypto engine. The crypto engine pre-stores cryptographic keys in its key store and manages the authentication process internally. Execution environments simply provide identifiers to the crypto engine, which handles the complex key selection and authentication logic, thereby removing the burden of certificate management from the distributed execution environments.
Solution Approach 2:
Cryptographic keys are pre-provisioned and stored in the crypto engine's key store before any communication occurs. The crypto engine performs preliminary authentication by matching provided identifiers with pre-stored keys and authorized recipient lists. This preliminary setup eliminates the need for runtime certificate exchanges and complex key provisioning during actual communication operations.
3Reliability
If dedicated secure channels are established between execution environments, then communication security is ensured, but the system design effort and key management become significant
Solution Approach 1:
The crypto engine is designed as a universal security component that serves multiple execution environments simultaneously. A single crypto engine instance can manage security for numerous execution environments, performing encryption, decryption, and authentication for all of them. This multi-functional approach eliminates the need for separate security infrastructure for each execution environment pair, significantly reducing overall design effort and complexity.
Data Source
AI summary
A of a method of securely transferring information between execution environments includes: receiving, at a crypto engine, original plaintext from a first execution environment; obtaining a first cryptographic key by the crypto engine, the first cryptographic key being retained in memory such that the first cryptographic key is associated with the first execution environment and a second execution environment that is not the first execution environment; encrypting the original plaintext by the crypto engine using the first cryptographic key to produce encrypted information, and storing the encrypted information in an intermediate storage location; obtaining, at the crypto engine, the encrypted information from the intermediate storage location; decrypting the encrypted information by the crypto engine using the first cryptographic key to produce reconstituted plaintext; and making the reconstituted plaintext available to the second execution environment by the crypto engine.


