Abstract:
A method is provided to dynamically encode data at runtime with a tagged data element in a program associated with an obfuscation algorithm randomly selected during runtime. Instructions for invoking the obfuscation algorithm are generated when a compiler encounters the tagged variable in the source code. At runtime, unencoded data is encoded by the obfuscation algorithm when the unencoded data is copied to the tagged data element; encoded data is re-encoded by the obfuscation algorithm when the encoded data is copied from a differently tagged data element to the tagged data element, wherein the differently tagged data element is associated with a different obfuscation algorithm; and encoded data is decoded by the obfuscation algorithm when the encoded data is copied from the tagged data element to an untagged data element.
Abstract:
To decrease a load on a network and a storage system, encryption operations can be offloaded to a server locally connected to the storage system. The server receives requests to perform encryption operations, such as LUN encryption or file encryption, for a host. The server obtains an encryption key unique to the host and performs the encryption operation using the encryption key. The server then notifies the host that an encrypted LUN or encrypted file is available for use. The host is able to utilize the encrypted data because the encryption was performed with the host's unique key. Since the server is locally connected to the storage system, offloading encryption requests to the server reduces the load on a network by reducing the amount of traffic transmitted between a host and the storage system.
Abstract:
Various embodiments are directed to providing integrity protection for a system management mode. During initialization, a hash value of a system management mode control routine may be determined. Subsequently, during operation, the hash value may be compared to a hash value of a system management mode control routine to be executed. The system management mode control routine to be executed may be determined to be authentic if the hash values are the same.
Abstract:
Examples include techniques for compressing counter values included in cryptographic metadata. In some examples, a cache line to fill a cache included in on-die processor memory may be received. The cache arranged to store cryptographic metadata. The cache line includes a counter value generated by a counter. The counter value to serve as version information for a memory encryption scheme to write a data cache line to a memory location of an off-die memory. In some examples, the counter value is compressed based on whether the counter value includes a pattern that matches a given pattern and is then stored to the cache. In some examples, a compression aware and last recently used (LRU) scheme is used to determine whether to evict cryptographic metadata from the cache.
Abstract:
Various configurations and techniques for enabling bidirectional cryptographic input output (IO) operations with an IO device of a computing system are disclosed herein. In an example, electronic operations of a computing system to enable a secure direct memory access (DMA) transaction including writing information to enable the secure DMA transaction to memory, reading and verifying the information from memory, performing encryption of data from the IO device using the information from memory, and writing encrypted secure data for the secure DMA transaction to the memory. In a further example, the information to enable the secure DMA transaction may include a counter value written by authorized software, and encrypting the secure data using the counter value, to prevent replay of the secure encrypted data by software other than the authorized software.
Abstract:
In one embodiment, a memory system stores data encrypted with a cipher key in a block of a page in non-volatile memory, reads the cipher key version number associated with the page, determines whether said version number is different from the version number of the cipher key used to encrypt the data and, if it is, writes a data pattern encrypted with the cipher key into the other blocks of the page, and stores the cipher key version number of the cipher key used to encrypt the data in the storage space in the non-volatile memory. Other embodiments are also provided.
Abstract:
A system and method is disclosed for providing zero data in response to a host data read directed to a logical address that is not associated with valid data. The system may be a non-volatile memory system including non-volatile memory and a controller configured to determine whether a logical address in a read command is associated with valid data. The controller may be configured to generate, store in non-volatile memory and retrieve from that non-volatile memory a zero data entry. The controller may also be configured to include any associated encryption key or logical address in the generation of the zero data in order to satisfy data path protection and/or encryption requirements for the non- volatile memory system. Storage and retrieval of the zero data may be via the non-volatile memory array or only the data latches of the non-volatile memory.
Abstract:
Techniques for protecting software in a computing device are provided. A method according to these techniques includes receiving a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code, determining whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module, executing one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, and controlling exit from the secure software module to return execution to the non-secure software module.
Abstract:
An electronic device is provided. The electronic device includes a housing of the electronic device, a memory disposed in the housing, a user interface, and a processor electrically connected with the memory and the user interface. The memory stores instructions, which, when executed, cause the processor to store encrypted content in the memory, receive an input for loading the content through the user interface, decrypt the content based at least in part on the input, store the decrypted content in the memory separately from the encrypted content, and provide the decrypted content through the user interface.
Abstract:
Die Erfindung betrifft ein Verfahren zum Aktualisieren erster Personalisierungsdaten (140) eines Wert- oder Sicherheitsdokuments (110) mit zweiten Personalisierungsdaten (162), wobei das Wert- oder Sicherheitsdokument (110) einen nicht-flüchtigen elektronischen Speicher (124) mit einem Chipkartenbetriebssystem (118) und einem Chipkartendateisystem (117) aufweist, wobei das Chipkartendateisystem (117) ein Dedicated File (126) mit zumindest einem Elementary File (132) umfasst, wobei das Elementary File (132) eine vordefinierte physikalische Speicherlänge aufweist, wobei das Elementary File (132) Kontrolldaten (134) und erste Personalisierungsdaten (140) umfasst, wobei die Kontroildaten (134) eine kryptographische Zugriffsbedingung umfassen und ein Lesen und/oder Schreiben in dem Elementary File (132) nur möglich ist, wenn die kryptographischen Zugriffsbedingung erfüllt wird, und wobei in dem Chipkartendateisystem (117) ein Zeiger (136) gespeichert ist, der das logische Ende (141) der ersten Personalisierungsdaten (140) in dem Elementary File (132) angezeigt, wobei das Wert- oder Sicherheitsdokument (110) ferner eine kontaktlose Kommunikationsschnittstelle (112) zum Empfangen und Senden von Personalisierungsdaten (162) aufweist, wobei das Chipkartenbetriebssystem (118) so konfiguriert ist, dass es in Antwort auf den Empfang des Schreibkommandos folgende Funktionen ausführt: • Aktualisieren der ersten Personalisierungsdaten (140) durch Schreiben der zweiten Personalisierungsdaten (162) in das Elementary File (132), • Ermitteln des logischen Endes (163) der aktualisierten Personalisierungsdaten, • Erstellen eines aktualisierten Zeiger (136), der das logische Ende (163) der aktualisierten Personalisierungsdaten angezeigt, · Speichern des aktualisierten Zeigers (136) in dem Chipkartendateisystem (117).