US20130024637A1 - Memory access unlock - Google Patents

Memory access unlock Download PDF

Info

Publication number
US20130024637A1
US20130024637A1 US13/459,523 US201213459523A US2013024637A1 US 20130024637 A1 US20130024637 A1 US 20130024637A1 US 201213459523 A US201213459523 A US 201213459523A US 2013024637 A1 US2013024637 A1 US 2013024637A1
Authority
US
United States
Prior art keywords
memory
memory location
access
controller
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/459,523
Inventor
Ted A. Hadley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to US13/459,523 priority Critical patent/US20130024637A1/en
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HADLEY, TED A.
Publication of US20130024637A1 publication Critical patent/US20130024637A1/en
Assigned to HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP reassignment HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31719Security aspects, e.g. preventing unauthorised access during test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Definitions

  • Memories are used within computing devices to store data.
  • data are stored and accessed within computing devices such as personal computers, notebook and laptop computers, smartphones, personal digital assistants (“PDAs”), tablet and slate devices, personal entertainment devices such as MP3 players and media players, set-top boxes, gaming consoles, appliances, embedded devices, smart meters, and other computing devices at memories such as random-access memories (“RAMs”).
  • PDAs personal digital assistants
  • RAMs random-access memories
  • data stored at RAMs or other memories of a computing device are accessed by a processor and some operation is performed by the processor based on the data.
  • an encryption key may be stored at a memory and a processor may access the encryption key to encrypt or decrypt a document.
  • FIGS. 1-4 are example schematic block diagrams of computing devices including memory control modules and a selector, according to one or more implementations.
  • FIG. 5 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 6 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 7 is an example illustration of a memory having a plurality of memory map spaces, according to an implementation.
  • FIG. 8 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 9 is an example flowchart of a process to unlock access to memory based on an operation at a control register, according to an implementation.
  • FIG. 10 is an example flowchart of a process to unlock access to memory based on an operation at a control register, according to an implementation.
  • steps may be taken to protect one or more keys stored in memory.
  • steps may be taken to protect one or more keys stored in memory.
  • data stored in a memory region which holds the key(s) may be accidentally transmitted out of a computing device, for example, via an Ethernet port, and thus, may completely invalidate all of the system security features.
  • an I/O port for example, Ethernet port
  • a source address of the data and a length are configured into the hardware of the Ethernet port on the microprocessor, and the port is instructed to transmit. If either the address is wrong and points to the key storage memory, or nearby instead, or if the length is too long and the transmit packet is adjacent to the keys in memory, then the key(s) may be transmitted out of the computing device.
  • a memory access lock which protects memory access.
  • Software may manipulate a control register, and/or its contents, via an operation to the control register, to unlock access to memory or registers for read and/or write access.
  • This access may be limited access, for example, limited to one read or write access or multiple read and/or write accesses.
  • a memory location for example, a control register, or unlock register, that is located in a different memory map space than the memory location of the memory or registers being protected may be used.
  • control register as used herein may be interpreted as a memory location.
  • Unlocked access may be automatically re-locked following the access.
  • a timeout may also be applied to automatically re-lock access to the memory.
  • a lock When used, for example, in a microprocessor, a lock protects memory or register accesses which may be unlocked by software in accordance with expected operation of the software, but is difficult to defeat by such things as malware, software bugs and DMA-like hardware including DMA, ethernet controllers, etc.
  • Examples provided herein describe a memory access lock with respect to a secure key stored in memory.
  • the memory access lock may be implemented for any type of data stored in memory.
  • unlocking memory means providing access to memory which was initially locked, i.e., access to the memory is not permitted.
  • FIGS. 1-4 are schematic block diagrams of computing devices including a memory access lock, according to one or more implementations. Although various implementations of computing devices and memory control modules are illustrated at FIGS. 1-4 , these examples are not exhaustive and memory access locks, systems, and processes discussed herein are applicable to other computing devices or systems not illustrated in FIGS. 1-4 .
  • FIG. 1 illustrates a computing device that includes a memory control module with an integrated memory.
  • Computing device 100 includes processor 110 , communication interface 120 , memory 130 , and memory control module 140 .
  • Processor 110 is any of a variety of processors.
  • processor 110 may be a general-purpose processor or an application-specific processor implemented as a hardware module and/or a software module hosted at a hardware module.
  • a hardware module may be, for example, a microprocessor, a microcontroller, an application-specific integrated circuit (“ASIC”), a programmable logic device (“PLD”) such as a field programmable gate array (“FPGA”), and/or other electronic circuits that perform operations.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • FPGA field programmable gate array
  • a software module may be, for example, instructions, commands, and/or codes stored at a memory and executed at another processor.
  • Such a software module may be defined using one or more programming languages such as JavaTM, C++, C, an assembly language, a hardware description language, and/or another suitable programming language.
  • a processor may be a virtual machine hosted at a computer server including a microprocessor and a memory.
  • processor 110 may include multiple processors.
  • processor 110 may be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores).
  • processor 110 may be a computing device including multiple processors with a shared clock, memory bus, input/output bus, and/or other shared resources.
  • processor 110 may be a distributed processor.
  • processor 110 may include multiple computing devices, each including a processor, in communication one with another via a communications link such as a computer network.
  • Processor 110 is operatively coupled to communications interface 120 , memory 130 , and memory control module 140 .
  • memory 130 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 110 during operation of computing device 100 .
  • memory 130 includes instructions that define operating system 131 , device drivers 132 , and applications 133 (e.g., software application programs).
  • operating system 131 , device drivers 132 , applications 133 , and other software modules stored as instructions (not shown) at memory 130 and executed at processor 110 are hosted at computing device 100 .
  • Applications 133 may include, for example, an application software module, a hypervisor, a virtual machine module, or an environment such as a runtime environment or virtual machine instance.
  • applications 133 may include a cryptographic service such as a file encryption application.
  • memory 130 is a volatile memory and computing device 100 includes a non-volatile (or non-transient) memory or processor-readable medium (not shown) such as a hard disk drive (“HDD”), a solid-state drive (“SSD”), a FLASH drive, or is in communication with a data storage service (e.g., via communications interface 120 and a communications link such as a communications network) at which software applications (e.g., computer codes or instructions that implement software applications when executed at a processor), data, or combinations thereof may be stored and accessed by processor 110 . Such software applications, data, or combinations thereof may be moved or copied to memory 130 by processor 110 and accessed by processor 110 at memory 130 during operation of computing device 100 .
  • a non-volatile (or non-transient) memory or processor-readable medium such as a hard disk drive (“HDD”), a solid-state drive (“SSD”), a FLASH drive
  • a data storage service e.g., via communications interface 120 and a communications link such as a communications network
  • processor-readable media include, but are not limited to: magnetic storage media such as a hard disk, a floppy disk, and/or magnetic tape; optical storage media such as a compact disc (“CD”), a digital video disc (“DVDs”), a compact disc read-only memory (“CD-ROM”), and/or a holographic device; magneto-optical storage media; non-volatile memory such as read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electronically erasable read-only memory (“EEPROM”), and/or FLASH memory; and random-access memory (“RAM”).
  • magnetic storage media such as a hard disk, a floppy disk, and/or magnetic tape
  • optical storage media such as a compact disc (“CD”), a digital video disc (“DVDs”), a compact disc read-only memory (“CD-ROM”), and/or a holographic device
  • magneto-optical storage media non-volatile memory such as
  • Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, and files containing higher-level instructions that are executed by a computer using an interpreter.
  • machine instructions such as produced by a compiler
  • files containing higher-level instructions that are executed by a computer using an interpreter For example, an implementation may be implemented using JavaTM, C++, or other object-oriented programming language and development tools.
  • Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
  • Communications interface 120 is an interface accessible to processor 110 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link.
  • communications interface 120 may receive data from processor 110 and transmit symbols representing those data via a communications link.
  • communications interface 120 may receive symbols from other communications interfaces via a communications link and send data represented by those symbols to processor 110 .
  • communications interface 120 may be a telephone network interface, a twisted-pair network interface, a coaxial network interface, a fiber-optic network interface, a wireless network interface such as a wireless local area network (“WLAN”) or a cellular network, or some other network or communications interface.
  • WLAN wireless local area network
  • Memory control module 140 includes memory controller 144 and memory 141 at which key 145 is stored.
  • Memory controller 144 includes circuitry, software hosted at that circuitry, or a combination thereof to provide an access lock 150 for key 145 in memory 141 , as discussed more fully below. Access to key 145 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • Key 145 is a data set such as a cryptographic key that is accessed by processor 110 for use within one or more of applications 133 such as a cryptographic service hosted at computing device 100 .
  • processor 110 may request key 145 at memory control module 140 , the memory control module 140 providing access to key 145 in accordance with lock 150 , use key 145 to perform a cryptographic process based on instructions or codes stored at memory 130 , and discard key 145 .
  • FIG. 2 illustrates a computing device and a memory control module with an integrated memory in communication with the computing device.
  • Computing device 200 includes processor 210 , communication interface 220 , and memory 230 .
  • Processor 210 is operatively coupled to communications interface 220 , and memory 230 .
  • memory 230 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 210 during operation of computing device 210 similar to those discussed above in relation to FIG. 1 .
  • communications interface 220 is an interface accessible to processor 210 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1 .
  • Memory control module 240 is separate (or separable) from computing device 200 and includes memory controller 244 and memory 241 at which key 245 is stored.
  • Memory controller 244 includes circuitry, software hosted at that circuitry, or a combination thereof to provide an access lock 250 to key 245 in memory 241 . Access to key 245 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • memory controller 244 may be a processor at memory control module 240 .
  • Key 245 is a data set such as a cryptographic key that is accessed by computing device 200 for use within one or more of applications 233 such as a cryptographic service hosted at computing device 200 .
  • computing device 200 may be in communication with memory control module 240 via an interface (not shown) such as a USB interface, a network (e.g., Ethernet) interface, or some other interface.
  • processor 210 may request key 245 at memory control module 240 , the memory control module 240 providing access to key 245 in accordance with lock 250 , use key 245 to perform a cryptographic process based on instructions or codes stored at memory 230 , and discard key 245 .
  • FIG. 3 illustrates a computing device hosting a memory control module.
  • Computing device 300 includes processor 310 , communication interface 320 , and memory 330 .
  • Processor 310 is operatively coupled to communications interface 320 , and memory 330 .
  • Communications interface 320 is an interface accessible to processor 310 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1 .
  • memory 330 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 310 during operation of computing device 310 similar to those discussed above in relation to FIG. 1 .
  • Memory 330 also includes memory control module 340 , and key 345 . That is, memory control module 340 is hosted at processor 310 . In other words, instructions or codes that define memory control module 340 are accessed at memory 330 by processor 310 and executed or interpreted by processor 310 to provide an access lock 350 to key 345 at memory 330 . Access to key 345 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • FIG. 4 illustrates a computing device including a memory control module.
  • Computing device 400 includes processor 410 , communication interface 420 , memory 430 , and memory control module 440 .
  • Processor 410 is operatively coupled to communications interface 420 and memory control module 440 .
  • Communications interface 420 is an interface accessible to processor 410 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1 .
  • memory 430 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 410 during operation of computing device 410 similar to those discussed above in relation to FIG. 1 .
  • Memory control module 440 includes circuitry, software hosted at that circuitry, or a combination thereof to implement a memory access lock 450 to key 445 in memory 430 . Access to key 445 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • Processor 410 accesses memory 430 via memory control module 440 . More specifically, processor 410 requests access to data values at memory 430 from (or at) memory control module 440 . That is, processor 410 provides a request for data values to memory control module 440 , memory control module 440 accesses those data values at memory 430 , and provides the requested data values to processor 410 .
  • FIG. 5 is an example illustration of address decode logic, a memory cell, and an access lock according to an implementation.
  • address decode logic 502 provides the microprocessor access to locations in memory.
  • the microprocessor produces an address on address bus 504 , the address corresponding to memory cell 506 .
  • the /Memory 520 output from the address decode logic 502 produces an active-low signal.
  • the active-low /Memory decode signal is gated through OR gates 508 to allow the active/Read or /Write signal to control the memory cell.
  • /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 508 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 510 .
  • the inhibit signal controlled by flip-flop 510 may disallow the progression of /Read and /Write to the memory cell.
  • flip-flop 510 has two defined inputs, an active-high Unlock 512 and a rising-edge Relock 514 .
  • flip-flop 510 sets, and /Read and /Write are allowed to access memory 506 .
  • Memory 506 may access the data in the memory cell via bus 507 .
  • the unlock input 512 is controlled by a flip-flop (not shown), the unlock state is retained until relocked.
  • flip-flop 510 If flip-flop 510 is not set, /Read and /Write are inhibited and access to memory cell 506 is locked in a disabled state.
  • the flip-flop 510 When a rising edge appears at the relock input 514 , the flip-flop 510 resets and /Read and /Write are again inhibited. As the relock 514 is controlled by a flip-flop (not shown), the locked state is retained until unlocked.
  • the /Memory signal returns to logic 1, which in turn forces the outputs of the OR gate to their inactive logic-1 states.
  • unlock active high 512 different controls may be input into unlock active high 512 .
  • Unlock is controlled by any address decode circuit connected to the address bus (not shown).
  • the source of the Re-lock signal may be anything that is guaranteed to follow the /Memory access to the memory cell, including /Memory itself (the de-assertion at the end of the access cycle), timers, etc., as shown in later figures.
  • FIG. 6 depicts an example illustration where access to the memory is automatically relocked after access is made to the memory.
  • address decode logic 602 provides the microprocessor access to locations in memory.
  • the microprocessor produces an address on address bus 604 , the address corresponding to memory cell 606 .
  • the /Memory output from the address decode logic 602 produces an active-low signal.
  • the active-low /Memory decode signal is gated through OR gates 608 to allow the active /Read or /Write signal to control the memory cell.
  • /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 608 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 610 .
  • the inhibit signal controlled by flip-flop 610 may disallow the progression of /Read and /Write to the memory cell.
  • Address decode logic 602 includes logic to decode a signal from address bus 604 corresponding to /UnlockReg 614 .
  • UnlockReg may be implemented as a control register or memory location that is used to trigger the unlocking of access to a memory location.
  • NOR gate 612 receives two inputs, /UnlockReg 614 from address decode logic 602 and /Write 616 .
  • NOR gate 612 logically combines the address decode for /UnlockReg with the /Write 616 control.
  • the output of NOR gate 612 provides the input to flip-flop 610 and is used to set the lock control of flip-flop 610 .
  • Flip-flop 610 receives the output from NOR gate 612 .
  • the flip-flop 612 may be set to unlock access to memory cell 606 .
  • the output of flip-flop 610 is input to OR gates 608 thereby unlocking access to memory cell 608 .
  • a read or write operation may then be made to memory cell 606 where the memory location is accessed through memory bus 607 .
  • an additional input to flip-flop 612 is /Memory signal 620 .
  • /Memory signal 620 After access to the memory cell 608 completes and the decode returns to its quiescent active-high state, a rising edge is produced at the relock control and flip-flop 610 resets. Access to the memory cell 608 is relocked.
  • access may be granted for one or more accesses.
  • an alternative to this example may be a read operation instead of a write operation, where the input to NOR gate 612 is /Read, instead of /Write 616 .
  • the operation may be a write operation of a predetermined value in the unlock register.
  • unlock registers there may be different unlock registers to memory locations having odd and even addresses.
  • an unlock register in a first location may be used to unlock a memory location having an odd number address.
  • An unlock register in a second location may be used to unlock a memory location having an even number address.
  • FIG. 7 depicts an example memory as discussed herein.
  • memory 700 includes a first memory map space 702 and a second memory map space 704 .
  • memory map space 702 is physically spaced away from memory map space 704 .
  • memory map space 702 may be adjacent to memory map space 704 .
  • Memory map space 702 includes a plurality of memory locations, including memory location 706 .
  • Memory location 706 may be implemented as, for example, a memory location, for example, an unlock register, a control register, etc.
  • Memory map space 704 includes a plurality of memory locations, including memory location 708 .
  • Memory location 708 may be implemented as a location in memory to be locked. It may be appreciated that memory locations 706 and 708 may be located anywhere in memory map spaces 702 and 704 respectively.
  • memory location 706 when an operation, for example, a read operation, write operation, etc., is made to memory location 706 , access to memory location 708 may be unlocked.
  • an operation for example, a read operation, write operation, etc.
  • unlock registers may be utilized for different types of memory access.
  • an unlock register i.e., a first memory location
  • An unlock register i.e., another memory location
  • more than one access to the memory cell may be permitted for an unlock cycle. For example, a predetermined number of operations may be permitted to the unlocked memory location when an operation is performed at the unlock register.
  • FIG. 8 depicts an example illustration where access to the memory is automatically relocked after a period of time. Components in FIG. 8 are similar to those discussed with respect to those in FIG. 6 , except as discussed herein.
  • address decode logic 802 provides the microprocessor access to locations in memory.
  • the microprocessor produces an address on address bus 804 , the address corresponding to memory cell 806 .
  • the /Memory 820 output from the address decode logic 802 produces an active-low signal.
  • the active-low /Memory decode signal is gated through OR gates 808 to allow the active /Read or /Write signal to control the memory cell.
  • /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 808 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 810 .
  • the inhibit signal controlled by flip-flop 810 may disallow the progression of /Read and /Write to the memory cell.
  • Address decode logic 802 includes logic to decode a signal from address bus 804 corresponding to /UnlockReg 814 .
  • UnlockReg may be implemented as a control register or memory location that is used to trigger the unlocking of access to another memory location.
  • NOR gate 812 receives two inputs, /UnlockReg 814 from address decode logic 802 and /Write 816 .
  • NOR gate 812 logically combines the address decode for /UnlockReg 814 with the /Write 816 control.
  • the output of NOR gate 812 provides an input to delay counter 822 .
  • delay clock signal 824 is input to delay counter 822 .
  • Delay counter 822 may be implemented as a standard 2 n -type, which products a short negative pulse when it overflows, for example, 2 n counts from reset. The overflow is combined with the memory address decode /Memory 820 for the relock.
  • the /UnlockReg 814 signal is input into NOR gate 812 , thus resetting the counter.
  • the overflow output is input to AND gate 826 and input to flip-flop 810 , thus locking access.
  • a write to the unlock register unlocks the memory similar to the other examples set forth above.
  • completion of the memory access relocks the memory access similar to the other examples set forth above, as the /Memory signal 820 is input to AND gate 826 thereby relocking the flip-flop.
  • any delay in addition to direct access can be used to automatically relock access to the memory.
  • Choices of delay clock 824 may include, for example, real time input, central processing unit (CPU) clock, and an instruction fetch control signal.
  • a real-time input When a real-time input is used, it may be derived from a source other than the CPU's clock, and may allow a fixed time delay, e.g., 10 ⁇ s, which may remain constant regardless of the microprocessor speed, thus permitting a lock after an absolute time period.
  • the delay is directly proportional to the operating speed of the microprocessor, e.g., 128 cycles, which would remain constant regardless of the clock frequency, but whose actual time would vary with the CPU clock, thus permitting locking after a processor-relative time period.
  • Another clock source may be the CPU instruction fetch signal.
  • the delay may be operational, e.g., 128 instructions. In this way, the amount of code between unlock and re-lock is constant, thus permitting locking after a work time period.
  • the output of flip-flop 810 is input to OR gates 808 thereby unlocking access to memory cell 806 .
  • a read or write operation may then be made to memory cell 806 where the memory location is accessed through memory bus 807 .
  • UnlockReg register when there is a write operation to UnlockReg register in memory, this unlocks access to the memory cell for a single access. Once access is made, access to the memory cell is locked. In addition, access to the memory cell is locked after a predetermined number of clock cycles.
  • an alternative to this example may be a read operation instead of a write operation, where the input to NOR gate 812 is /Read, instead of /Write 816 .
  • FIG. 9 is a flowchart of a process to unlock access to a memory region, for example a memory location, according to an implementation.
  • Process 900 may be implemented as a hardware module, as a software module hosted at a computing device, or as a combination thereof.
  • process 900 may be implemented as application-specific circuitry or as a software module including instructions stored at a memory and executed at a processor in communication with the memory. More specifically, for example, process 900 may be implemented at a memory control module.
  • a signal may be received indicating an operation has been performed at a control register ( 902 ). This signal may be received at a controller, the controller controlling access to one or more memory locations. Access to a memory region may be unlocked based on the operation that was performed at the control register ( 904 ).
  • Access to the memory region may be unlocked for one or more accesses to the memory region.
  • Access to the memory region may be automatically relocked, for example, after the one or more accesses to the memory region, after a predetermined period of time, the predetermined period of time based on one of a processor-relative time period, an absolute time period, a work time period, etc.
  • FIG. 10 is a flowchart of a process to unlock access to a memory region, for example a memory location, and to relock access to a memory region, according to an implementation.
  • Process 1000 may be implemented as a hardware module, as a software module hosted at a computing device, or as a combination thereof.
  • process 1000 may be implemented as application-specific circuitry or as a software module including instructions stored at a memory and executed at a processor in communication with the memory. More specifically, for example, process 1000 may be implemented at a memory control module.
  • a signal may be received indicating an operation has been performed at a control register ( 1002 ). This signal may be received at a controller, the controller controlling access to one or more memory locations. Access to a memory region may be unlocked based on the operation that was performed at the control register ( 1004 ).
  • An indication may be received to relock access to the memory region ( 1006 ). This indication may be based on, for example, an indication that one or more predetermined number of operations have been performed at the unlocked memory region, that a predetermined time period has elapsed, the predetermined time period being one of absolute time, work time, or a process-relative time period, etc.
  • access to the memory region may be relocked ( 1008 ). Thus, any further operations to the locked memory region are inhibited.
  • process 100 is discussed above with reference to an example environment within a memory control module, process 100 is applicable within other environments.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Quality & Reliability (AREA)
  • Microcomputers (AREA)
  • Measurement Of Current Or Voltage (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Testing Or Calibration Of Command Recording Devices (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

In one implementation, a controller is provided such that when an operation is performed at a first memory location, the controller unlocks access to a second memory location.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims priority to U.S. provisional patent application no. 61/509,078, filed on Jul. 18, 2011, which is hereby incorporated by reference herein in its entirety.
  • BACKGROUND
  • Memories are used within computing devices to store data. For example, data are stored and accessed within computing devices such as personal computers, notebook and laptop computers, smartphones, personal digital assistants (“PDAs”), tablet and slate devices, personal entertainment devices such as MP3 players and media players, set-top boxes, gaming consoles, appliances, embedded devices, smart meters, and other computing devices at memories such as random-access memories (“RAMs”).
  • Typically, data stored at RAMs or other memories of a computing device are accessed by a processor and some operation is performed by the processor based on the data. For example, an encryption key may be stored at a memory and a processor may access the encryption key to encrypt or decrypt a document.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIGS. 1-4 are example schematic block diagrams of computing devices including memory control modules and a selector, according to one or more implementations.
  • FIG. 5 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 6 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 7 is an example illustration of a memory having a plurality of memory map spaces, according to an implementation.
  • FIG. 8 is an example illustration of address decode logic, memory cell and access lock, according to an implementation.
  • FIG. 9 is an example flowchart of a process to unlock access to memory based on an operation at a control register, according to an implementation.
  • FIG. 10 is an example flowchart of a process to unlock access to memory based on an operation at a control register, according to an implementation.
  • DETAILED DESCRIPTION
  • In a microprocessor-based system, which performs cryptography or manages cryptographic keys, steps may be taken to protect one or more keys stored in memory. However, due to software bugs, malware, etc., data stored in a memory region which holds the key(s) may be accidentally transmitted out of a computing device, for example, via an Ethernet port, and thus, may completely invalidate all of the system security features.
  • This may occur where, for example, an I/O port, for example, Ethernet port, is configured to transmit a packet of data. In order to transmit the packet of data, a source address of the data and a length are configured into the hardware of the Ethernet port on the microprocessor, and the port is instructed to transmit. If either the address is wrong and points to the key storage memory, or nearby instead, or if the length is too long and the transmit packet is adjacent to the keys in memory, then the key(s) may be transmitted out of the computing device.
  • As discussed herein, a memory access lock is provided which protects memory access. Software may manipulate a control register, and/or its contents, via an operation to the control register, to unlock access to memory or registers for read and/or write access. This access may be limited access, for example, limited to one read or write access or multiple read and/or write accesses.
  • In one implementation, a memory location, for example, a control register, or unlock register, that is located in a different memory map space than the memory location of the memory or registers being protected may be used. The term “control register” as used herein may be interpreted as a memory location.
  • Unlocked access may be automatically re-locked following the access. Alternatively, or in addition, a timeout may also be applied to automatically re-lock access to the memory.
  • When used, for example, in a microprocessor, a lock protects memory or register accesses which may be unlocked by software in accordance with expected operation of the software, but is difficult to defeat by such things as malware, software bugs and DMA-like hardware including DMA, ethernet controllers, etc.
  • Examples provided herein describe a memory access lock with respect to a secure key stored in memory. However, the memory access lock may be implemented for any type of data stored in memory.
  • Further, as discussed herein, unlocking memory means providing access to memory which was initially locked, i.e., access to the memory is not permitted.
  • FIGS. 1-4 are schematic block diagrams of computing devices including a memory access lock, according to one or more implementations. Although various implementations of computing devices and memory control modules are illustrated at FIGS. 1-4, these examples are not exhaustive and memory access locks, systems, and processes discussed herein are applicable to other computing devices or systems not illustrated in FIGS. 1-4.
  • FIG. 1 illustrates a computing device that includes a memory control module with an integrated memory. Computing device 100 includes processor 110, communication interface 120, memory 130, and memory control module 140. Processor 110 is any of a variety of processors. For example, processor 110 may be a general-purpose processor or an application-specific processor implemented as a hardware module and/or a software module hosted at a hardware module. A hardware module may be, for example, a microprocessor, a microcontroller, an application-specific integrated circuit (“ASIC”), a programmable logic device (“PLD”) such as a field programmable gate array (“FPGA”), and/or other electronic circuits that perform operations. A software module may be, for example, instructions, commands, and/or codes stored at a memory and executed at another processor. Such a software module may be defined using one or more programming languages such as Java™, C++, C, an assembly language, a hardware description language, and/or another suitable programming language. For example, a processor may be a virtual machine hosted at a computer server including a microprocessor and a memory.
  • In some implementations, processor 110 may include multiple processors. For example, processor 110 may be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores). As another example, processor 110 may be a computing device including multiple processors with a shared clock, memory bus, input/output bus, and/or other shared resources. Furthermore, processor 110 may be a distributed processor. For example, processor 110 may include multiple computing devices, each including a processor, in communication one with another via a communications link such as a computer network.
  • Processor 110 is operatively coupled to communications interface 120, memory 130, and memory control module 140. Typically, as illustrated in FIG. 1, memory 130 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 110 during operation of computing device 100. For example, memory 130 includes instructions that define operating system 131, device drivers 132, and applications 133 (e.g., software application programs). In other words, operating system 131, device drivers 132, applications 133, and other software modules stored as instructions (not shown) at memory 130 and executed at processor 110 are hosted at computing device 100. Applications 133 may include, for example, an application software module, a hypervisor, a virtual machine module, or an environment such as a runtime environment or virtual machine instance. As a specific example, applications 133 may include a cryptographic service such as a file encryption application.
  • In some embodiments, memory 130 is a volatile memory and computing device 100 includes a non-volatile (or non-transient) memory or processor-readable medium (not shown) such as a hard disk drive (“HDD”), a solid-state drive (“SSD”), a FLASH drive, or is in communication with a data storage service (e.g., via communications interface 120 and a communications link such as a communications network) at which software applications (e.g., computer codes or instructions that implement software applications when executed at a processor), data, or combinations thereof may be stored and accessed by processor 110. Such software applications, data, or combinations thereof may be moved or copied to memory 130 by processor 110 and accessed by processor 110 at memory 130 during operation of computing device 100.
  • Examples of processor-readable media include, but are not limited to: magnetic storage media such as a hard disk, a floppy disk, and/or magnetic tape; optical storage media such as a compact disc (“CD”), a digital video disc (“DVDs”), a compact disc read-only memory (“CD-ROM”), and/or a holographic device; magneto-optical storage media; non-volatile memory such as read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electronically erasable read-only memory (“EEPROM”), and/or FLASH memory; and random-access memory (“RAM”). Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, and files containing higher-level instructions that are executed by a computer using an interpreter. For example, an implementation may be implemented using Java™, C++, or other object-oriented programming language and development tools. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
  • Communications interface 120 is an interface accessible to processor 110 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link. In other words, communications interface 120 may receive data from processor 110 and transmit symbols representing those data via a communications link. Moreover, communications interface 120 may receive symbols from other communications interfaces via a communications link and send data represented by those symbols to processor 110. For example, communications interface 120 may be a telephone network interface, a twisted-pair network interface, a coaxial network interface, a fiber-optic network interface, a wireless network interface such as a wireless local area network (“WLAN”) or a cellular network, or some other network or communications interface.
  • Memory control module 140 includes memory controller 144 and memory 141 at which key 145 is stored. Memory controller 144 includes circuitry, software hosted at that circuitry, or a combination thereof to provide an access lock 150 for key 145 in memory 141, as discussed more fully below. Access to key 145 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • Key 145 is a data set such as a cryptographic key that is accessed by processor 110 for use within one or more of applications 133 such as a cryptographic service hosted at computing device 100. In other words, processor 110 may request key 145 at memory control module 140, the memory control module 140 providing access to key 145 in accordance with lock 150, use key 145 to perform a cryptographic process based on instructions or codes stored at memory 130, and discard key 145.
  • FIG. 2 illustrates a computing device and a memory control module with an integrated memory in communication with the computing device. Computing device 200 includes processor 210, communication interface 220, and memory 230.
  • Processor 210 is operatively coupled to communications interface 220, and memory 230. Typically, as illustrated in FIG. 2, memory 230 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 210 during operation of computing device 210 similar to those discussed above in relation to FIG. 1. Moreover, communications interface 220 is an interface accessible to processor 210 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1.
  • Memory control module 240 is separate (or separable) from computing device 200 and includes memory controller 244 and memory 241 at which key 245 is stored. Memory controller 244 includes circuitry, software hosted at that circuitry, or a combination thereof to provide an access lock 250 to key 245 in memory 241. Access to key 245 may be unlocked based on an operation to a control register, or unlock register, in memory. For example, memory controller 244 may be a processor at memory control module 240.
  • Key 245 is a data set such as a cryptographic key that is accessed by computing device 200 for use within one or more of applications 233 such as a cryptographic service hosted at computing device 200. For example, computing device 200 may be in communication with memory control module 240 via an interface (not shown) such as a USB interface, a network (e.g., Ethernet) interface, or some other interface. In other words, processor 210 may request key 245 at memory control module 240, the memory control module 240 providing access to key 245 in accordance with lock 250, use key 245 to perform a cryptographic process based on instructions or codes stored at memory 230, and discard key 245.
  • FIG. 3 illustrates a computing device hosting a memory control module. Computing device 300 includes processor 310, communication interface 320, and memory 330. Processor 310 is operatively coupled to communications interface 320, and memory 330. Communications interface 320 is an interface accessible to processor 310 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1. Moreover, as illustrated in FIG. 3, memory 330 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 310 during operation of computing device 310 similar to those discussed above in relation to FIG. 1.
  • Memory 330 also includes memory control module 340, and key 345. That is, memory control module 340 is hosted at processor 310. In other words, instructions or codes that define memory control module 340 are accessed at memory 330 by processor 310 and executed or interpreted by processor 310 to provide an access lock 350 to key 345 at memory 330. Access to key 345 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • FIG. 4 illustrates a computing device including a memory control module. Computing device 400 includes processor 410, communication interface 420, memory 430, and memory control module 440. Processor 410 is operatively coupled to communications interface 420 and memory control module 440. Communications interface 420 is an interface accessible to processor 410 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors or computing devices via a communications link as discussed above in relation to FIG. 1. Moreover, as illustrated in FIG. 4, memory 430 includes instructions or codes (e.g., computer codes or object codes) defining software modules that are executed by processor 410 during operation of computing device 410 similar to those discussed above in relation to FIG. 1.
  • Memory control module 440 includes circuitry, software hosted at that circuitry, or a combination thereof to implement a memory access lock 450 to key 445 in memory 430. Access to key 445 may be unlocked based on an operation to a control register, or unlock register, in memory.
  • Processor 410 accesses memory 430 via memory control module 440. More specifically, processor 410 requests access to data values at memory 430 from (or at) memory control module 440. That is, processor 410 provides a request for data values to memory control module 440, memory control module 440 accesses those data values at memory 430, and provides the requested data values to processor 410.
  • FIG. 5 is an example illustration of address decode logic, a memory cell, and an access lock according to an implementation. As show in FIG. 5, address decode logic 502 provides the microprocessor access to locations in memory. The microprocessor produces an address on address bus 504, the address corresponding to memory cell 506. The /Memory 520 output from the address decode logic 502 produces an active-low signal. The active-low /Memory decode signal is gated through OR gates 508 to allow the active/Read or /Write signal to control the memory cell. /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 508 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 510. The inhibit signal controlled by flip-flop 510 may disallow the progression of /Read and /Write to the memory cell. In this example, flip-flop 510 has two defined inputs, an active-high Unlock 512 and a rising-edge Relock 514.
  • When an active-high level occurs at the unlock input 512, flip-flop 510 sets, and /Read and /Write are allowed to access memory 506. Memory 506 may access the data in the memory cell via bus 507. As the unlock input 512 is controlled by a flip-flop (not shown), the unlock state is retained until relocked.
  • If flip-flop 510 is not set, /Read and /Write are inhibited and access to memory cell 506 is locked in a disabled state.
  • When a rising edge appears at the relock input 514, the flip-flop 510 resets and /Read and /Write are again inhibited. As the relock 514 is controlled by a flip-flop (not shown), the locked state is retained until unlocked.
  • When the memory access is complete, the /Memory signal returns to logic 1, which in turn forces the outputs of the OR gate to their inactive logic-1 states.
  • It may be appreciated that different controls may be input into unlock active high 512. For example, Unlock is controlled by any address decode circuit connected to the address bus (not shown). Thus, whenever code in the microprocessor addresses the location in the memory map which decodes to assert Unlock, then the inhibit output from flip-flop 510 is released and the memory cell can be addressed. The source of the Re-lock signal may be anything that is guaranteed to follow the /Memory access to the memory cell, including /Memory itself (the de-assertion at the end of the access cycle), timers, etc., as shown in later figures.
  • In this example, relocking of the memory access is not automatic. FIG. 6 depicts an example illustration where access to the memory is automatically relocked after access is made to the memory. Components in FIG. 6 are similar to those discussed with respect to those in FIG. 5, except as discussed herein. As shown in FIG. 6, address decode logic 602 provides the microprocessor access to locations in memory. The microprocessor produces an address on address bus 604, the address corresponding to memory cell 606. The /Memory output from the address decode logic 602 produces an active-low signal. The active-low /Memory decode signal is gated through OR gates 608 to allow the active /Read or /Write signal to control the memory cell. /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 608 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 610. The inhibit signal controlled by flip-flop 610 may disallow the progression of /Read and /Write to the memory cell.
  • Address decode logic 602 includes logic to decode a signal from address bus 604 corresponding to /UnlockReg 614. UnlockReg may be implemented as a control register or memory location that is used to trigger the unlocking of access to a memory location.
  • NOR gate 612 receives two inputs, /UnlockReg 614 from address decode logic 602 and /Write 616. NOR gate 612 logically combines the address decode for /UnlockReg with the /Write 616 control. The output of NOR gate 612 provides the input to flip-flop 610 and is used to set the lock control of flip-flop 610.
  • Flip-flop 610 receives the output from NOR gate 612. Thus, when a write operation is made to the UnlockReg register in memory, the flip-flop 612 may be set to unlock access to memory cell 606. In other words, the output of flip-flop 610 is input to OR gates 608 thereby unlocking access to memory cell 608. A read or write operation may then be made to memory cell 606 where the memory location is accessed through memory bus 607.
  • As shown in FIG. 6, an additional input to flip-flop 612 is /Memory signal 620. After access to the memory cell 608 completes and the decode returns to its quiescent active-high state, a rising edge is produced at the relock control and flip-flop 610 resets. Access to the memory cell 608 is relocked.
  • Thus, in this example, when there is a write operation to UnlockReg register in memory, this unlocks access to the memory cell for a single access. Once access is made, access to the memory cell is locked.
  • It may be appreciated that access may be granted for one or more accesses.
  • It may be appreciated an alternative to this example may be a read operation instead of a write operation, where the input to NOR gate 612 is /Read, instead of /Write 616.
  • It may further be appreciated that the operation may be a write operation of a predetermined value in the unlock register.
  • It may further be appreciated that there may be different unlock registers to memory locations having odd and even addresses. For example, an unlock register in a first location may be used to unlock a memory location having an odd number address. An unlock register in a second location may be used to unlock a memory location having an even number address.
  • It may be further appreciated that the unlock register may be located in a memory map space that is separate, or different, from the memory map space where the memory cell is located. FIG. 7 depicts an example memory as discussed herein. As shown in FIG. 7, memory 700 includes a first memory map space 702 and a second memory map space 704. As can be seen from FIG. 7, memory map space 702 is physically spaced away from memory map space 704. Alternatively, memory map space 702 may be adjacent to memory map space 704. Memory map space 702 includes a plurality of memory locations, including memory location 706. Memory location 706 may be implemented as, for example, a memory location, for example, an unlock register, a control register, etc. Memory map space 704 includes a plurality of memory locations, including memory location 708. Memory location 708 may be implemented as a location in memory to be locked. It may be appreciated that memory locations 706 and 708 may be located anywhere in memory map spaces 702 and 704 respectively.
  • Thus, when an operation, for example, a read operation, write operation, etc., is made to memory location 706, access to memory location 708 may be unlocked.
  • In another implementation, multiple memory locations, for example, unlock registers may be utilized for different types of memory access. For example, an unlock register, i.e., a first memory location, may trigger unlocking for access to the memory cell for a write operation. An unlock register, i.e., another memory location, may trigger unlocking access to the memory cell for a read operation.
  • In another implementation, more than one access to the memory cell may be permitted for an unlock cycle. For example, a predetermined number of operations may be permitted to the unlocked memory location when an operation is performed at the unlock register.
  • FIG. 8 depicts an example illustration where access to the memory is automatically relocked after a period of time. Components in FIG. 8 are similar to those discussed with respect to those in FIG. 6, except as discussed herein. As shown in FIG. 8, address decode logic 802 provides the microprocessor access to locations in memory. The microprocessor produces an address on address bus 804, the address corresponding to memory cell 806. The /Memory 820 output from the address decode logic 802 produces an active-low signal. The active-low /Memory decode signal is gated through OR gates 808 to allow the active /Read or /Write signal to control the memory cell. /Read and /Write in this example are mutually exclusive, and controlled by the microprocessor core. If the access is a memory write, then /Write will go low; otherwise for a memory read, /Read will go low.
  • OR gates 808 have three inputs each. A /Read signal or a /Write signal, a /Memory decode signal, and an inhibit signal controlled by flip-flop 810. The inhibit signal controlled by flip-flop 810 may disallow the progression of /Read and /Write to the memory cell.
  • Address decode logic 802 includes logic to decode a signal from address bus 804 corresponding to /UnlockReg 814. UnlockReg may be implemented as a control register or memory location that is used to trigger the unlocking of access to another memory location.
  • NOR gate 812 receives two inputs, /UnlockReg 814 from address decode logic 802 and /Write 816. NOR gate 812 logically combines the address decode for /UnlockReg 814 with the /Write 816 control. The output of NOR gate 812 provides an input to delay counter 822. In addition, delay clock signal 824 is input to delay counter 822. Delay counter 822 may be implemented as a standard 2n-type, which products a short negative pulse when it overflows, for example, 2 n counts from reset. The overflow is combined with the memory address decode /Memory 820 for the relock. Thus, when the write to the unlock register takes place, the /UnlockReg 814 signal is input into NOR gate 812, thus resetting the counter. When the counter overflows, the overflow output is input to AND gate 826 and input to flip-flop 810, thus locking access.
  • In this example, a write to the unlock register unlocks the memory similar to the other examples set forth above. In addition, completion of the memory access relocks the memory access similar to the other examples set forth above, as the /Memory signal 820 is input to AND gate 826 thereby relocking the flip-flop.
  • By selecting a choice of counter size and delay clock frequency, any delay, in addition to direct access can be used to automatically relock access to the memory.
  • Choices of delay clock 824 may include, for example, real time input, central processing unit (CPU) clock, and an instruction fetch control signal. When a real-time input is used, it may be derived from a source other than the CPU's clock, and may allow a fixed time delay, e.g., 10 μs, which may remain constant regardless of the microprocessor speed, thus permitting a lock after an absolute time period.
  • When the CPU clock is used for the delay clock source, the delay is directly proportional to the operating speed of the microprocessor, e.g., 128 cycles, which would remain constant regardless of the clock frequency, but whose actual time would vary with the CPU clock, thus permitting locking after a processor-relative time period.
  • Another clock source may be the CPU instruction fetch signal. In this example, the delay may be operational, e.g., 128 instructions. In this way, the amount of code between unlock and re-lock is constant, thus permitting locking after a work time period.
  • As in the above examples, the output of flip-flop 810 is input to OR gates 808 thereby unlocking access to memory cell 806. A read or write operation may then be made to memory cell 806 where the memory location is accessed through memory bus 807.
  • Thus, in this example, when there is a write operation to UnlockReg register in memory, this unlocks access to the memory cell for a single access. Once access is made, access to the memory cell is locked. In addition, access to the memory cell is locked after a predetermined number of clock cycles.
  • It may be appreciated an alternative to this example may be a read operation instead of a write operation, where the input to NOR gate 812 is /Read, instead of /Write 816.
  • FIG. 9 is a flowchart of a process to unlock access to a memory region, for example a memory location, according to an implementation. Process 900 may be implemented as a hardware module, as a software module hosted at a computing device, or as a combination thereof. For example, process 900 may be implemented as application-specific circuitry or as a software module including instructions stored at a memory and executed at a processor in communication with the memory. More specifically, for example, process 900 may be implemented at a memory control module.
  • As shown in FIG. 9, a signal may be received indicating an operation has been performed at a control register (902). This signal may be received at a controller, the controller controlling access to one or more memory locations. Access to a memory region may be unlocked based on the operation that was performed at the control register (904).
  • Access to the memory region may be unlocked for one or more accesses to the memory region.
  • Access to the memory region may be automatically relocked, for example, after the one or more accesses to the memory region, after a predetermined period of time, the predetermined period of time based on one of a processor-relative time period, an absolute time period, a work time period, etc.
  • FIG. 10 is a flowchart of a process to unlock access to a memory region, for example a memory location, and to relock access to a memory region, according to an implementation. Process 1000 may be implemented as a hardware module, as a software module hosted at a computing device, or as a combination thereof. For example, process 1000 may be implemented as application-specific circuitry or as a software module including instructions stored at a memory and executed at a processor in communication with the memory. More specifically, for example, process 1000 may be implemented at a memory control module.
  • As shown in FIG. 10, a signal may be received indicating an operation has been performed at a control register (1002). This signal may be received at a controller, the controller controlling access to one or more memory locations. Access to a memory region may be unlocked based on the operation that was performed at the control register (1004).
  • An indication may be received to relock access to the memory region (1006). This indication may be based on, for example, an indication that one or more predetermined number of operations have been performed at the unlocked memory region, that a predetermined time period has elapsed, the predetermined time period being one of absolute time, work time, or a process-relative time period, etc.
  • After receipt of the indication to lock access to the memory region, access to the memory region may be relocked (1008). Thus, any further operations to the locked memory region are inhibited.
  • Although process 100 is discussed above with reference to an example environment within a memory control module, process 100 is applicable within other environments.

Claims (15)

1. An apparatus, comprising:
a memory having a first and second memory location, the first memory location being in a first memory map space and the second memory location being in a second memory map space; and
a controller operatively coupled to the memory to unlock access to the second memory location based on an operation to the first memory location.
2. The apparatus of claim 1, wherein the controller is further to:
automatically lock access to the second memory location a predetermined period of time after access has been unlocked, wherein the predetermined period of time is one of a processor-relative time period, an absolute time period, and a work time period.
3. The apparatus of claim 1, where the controller is further to:
automatically lock access to the second memory location after completion of an operation to the second memory location.
4. The apparatus of claim 1, further comprising:
a third memory location, wherein
the controller unlocks access to the second memory location for a write operation based on the operation to the first memory location; and
the controller unlocks access to the second memory location for read operation based on an operation to the third memory location.
5. The apparatus of claim 1, wherein the controller is to permit a predetermined number of operations to the second memory location after the access to the second memory location is unlocked.
6. An apparatus, comprising:
a controller to unlock access to a first memory location in a first memory map space based on an operation to a second memory location in a second memory map space.
7. The apparatus of claim 6, further comprising:
a clock; and
a counter to count clock cycles;
wherein the controller is to automatically lock access to the first memory location after a predetermined number of counted clock cycles.
8. The apparatus of claim 6, wherein the operation is a write operation to the second memory location.
9. The apparatus of claim 6, wherein the operation is a read operation to the second memory location.
10. The apparatus of claim 6, wherein the write operation includes writing a predetermined value to the second memory location.
11. The apparatus of claim 6, the apparatus further including:
a third memory location, wherein
if the first memory location is an odd number address, the controller is to unlock access to the first memory location based on an operation to the second memory location; and
if the first memory location is an even number address, the controller is to unlock access to the first memory location based on an operation to the third memory location.
12. The apparatus of claim 6, the controller to:
automatically lock access to the unlocked first memory location.
13. A method, comprising:
receiving a signal indicating an operation has been performed at a control register; and
unlocking access to a memory region based on the operation that has been performed at the control register.
14. The method of claim 13, further comprising:
automatically locking access to the memory region after one of an operation to the memory region and a predetermined time period after unlocking access to the memory region.
15. The method of claim 13, further comprising:
unlocking access to the second memory location for a write operation based on the operation to the first memory location; and
the controller unlocks access to the second memory location for read operation based on an operation to the third memory location.
US13/459,523 2011-07-18 2012-04-30 Memory access unlock Abandoned US20130024637A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/459,523 US20130024637A1 (en) 2011-07-18 2012-04-30 Memory access unlock

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161509078P 2011-07-18 2011-07-18
US13/459,523 US20130024637A1 (en) 2011-07-18 2012-04-30 Memory access unlock

Publications (1)

Publication Number Publication Date
US20130024637A1 true US20130024637A1 (en) 2013-01-24

Family

ID=47422868

Family Applications (12)

Application Number Title Priority Date Filing Date
US14/233,310 Abandoned US20140149729A1 (en) 2011-07-18 2011-12-15 Reset vectors for boot instructions
US14/233,321 Active US9465755B2 (en) 2011-07-18 2011-12-15 Security parameter zeroization
US14/232,217 Abandoned US20140164793A1 (en) 2011-07-18 2011-12-22 Cryptographic information association to memory regions
US14/232,229 Abandoned US20140140512A1 (en) 2011-06-18 2012-01-06 Requested and allowed cryptographic operations comparison
US13/355,315 Active 2033-04-20 US8930154B2 (en) 2011-07-18 2012-01-20 First and second voltage measurements to adjust a voltage measurer
US14/232,224 Active US9483422B2 (en) 2011-07-18 2012-01-31 Access to memory region including confidential information
US14/131,291 Abandoned US20140223113A1 (en) 2011-07-18 2012-02-03 Selector syncronized with movement of data in memory
US14/130,871 Expired - Fee Related US9418026B2 (en) 2011-07-18 2012-02-08 Transition between states in a processor
US13/407,845 Active 2033-10-14 US9015516B2 (en) 2011-07-18 2012-02-29 Storing event data and a time value in memory with an event logging module
US14/233,334 Expired - Fee Related US9418027B2 (en) 2011-07-18 2012-03-30 Secure boot information with validation control data specifying a validation technique
US13/455,867 Abandoned US20130024153A1 (en) 2011-07-18 2012-04-25 Microprocessor testing circuit
US13/459,523 Abandoned US20130024637A1 (en) 2011-07-18 2012-04-30 Memory access unlock

Family Applications Before (11)

Application Number Title Priority Date Filing Date
US14/233,310 Abandoned US20140149729A1 (en) 2011-07-18 2011-12-15 Reset vectors for boot instructions
US14/233,321 Active US9465755B2 (en) 2011-07-18 2011-12-15 Security parameter zeroization
US14/232,217 Abandoned US20140164793A1 (en) 2011-07-18 2011-12-22 Cryptographic information association to memory regions
US14/232,229 Abandoned US20140140512A1 (en) 2011-06-18 2012-01-06 Requested and allowed cryptographic operations comparison
US13/355,315 Active 2033-04-20 US8930154B2 (en) 2011-07-18 2012-01-20 First and second voltage measurements to adjust a voltage measurer
US14/232,224 Active US9483422B2 (en) 2011-07-18 2012-01-31 Access to memory region including confidential information
US14/131,291 Abandoned US20140223113A1 (en) 2011-07-18 2012-02-03 Selector syncronized with movement of data in memory
US14/130,871 Expired - Fee Related US9418026B2 (en) 2011-07-18 2012-02-08 Transition between states in a processor
US13/407,845 Active 2033-10-14 US9015516B2 (en) 2011-07-18 2012-02-29 Storing event data and a time value in memory with an event logging module
US14/233,334 Expired - Fee Related US9418027B2 (en) 2011-07-18 2012-03-30 Secure boot information with validation control data specifying a validation technique
US13/455,867 Abandoned US20130024153A1 (en) 2011-07-18 2012-04-25 Microprocessor testing circuit

Country Status (4)

Country Link
US (12) US20140149729A1 (en)
EP (3) EP2734951A4 (en)
CN (3) CN103688269A (en)
WO (8) WO2013012435A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015516B2 (en) 2011-07-18 2015-04-21 Hewlett-Packard Development Company, L.P. Storing event data and a time value in memory with an event logging module
US20230418590A1 (en) * 2022-06-22 2023-12-28 Hewlett-Packard Development Company, L.P. Instruction updates

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130155081A1 (en) * 2011-12-15 2013-06-20 Ati Technologies Ulc Power management in multiple processor system
US9094830B2 (en) * 2012-07-05 2015-07-28 Blackberry Limited Managing data transfer across a network interface
US9275223B2 (en) * 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9258119B2 (en) * 2013-05-08 2016-02-09 Cyber Solutions International, Llc Trusted tamper reactive secure storage
EP3025271B1 (en) * 2013-07-24 2020-04-01 Marvell World Trade Ltd. Key rotation for a memory controller
WO2015015305A1 (en) * 2013-07-31 2015-02-05 Marvell Word Trade Ltd. Parallelizing boot operations
US10235935B2 (en) * 2013-10-30 2019-03-19 Joled Inc. Power off method of display device, and display device
US9253213B2 (en) * 2013-12-16 2016-02-02 International Business Machines Corporation Query flow reconstruction in database activity monitoring systems
WO2015116077A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Access controlled memory region
WO2015132838A1 (en) * 2014-03-03 2015-09-11 株式会社日立製作所 Method and device for displaying material fatigue of machine
EP3771138B1 (en) * 2014-03-31 2021-09-22 Irdeto B.V. Cryptographic chip and related methods
US20150293862A1 (en) * 2014-04-10 2015-10-15 Andes Technology Corporation Hardware configuration apparatus
CN114692167A (en) * 2014-04-15 2022-07-01 麦利尔亚洲新加坡私人有限公司 Root of trust
GB201413836D0 (en) 2014-08-05 2014-09-17 Arm Ip Ltd Device security apparatus and methods
GB2529429B (en) * 2014-08-19 2021-07-21 Origami Energy Ltd Power distribution control system
US9835043B2 (en) * 2014-10-01 2017-12-05 United Technologies Corporation Guided binding-resistant actuation apparatus and method
WO2016068996A1 (en) 2014-10-31 2016-05-06 Hewlett Packard Enterprise Development Lp Security record transfer in a computing system
WO2016068974A1 (en) 2014-10-31 2016-05-06 Hewlett Packard Enterprise Development Lp System and method for vulnerability remediation verification
US10277565B2 (en) 2014-12-31 2019-04-30 Hewlett Packard Enterprise Development Lp Enterprise service bus logging
US10419339B2 (en) * 2015-01-22 2019-09-17 Hewlett Packard Enterprise Development Lp Router to send a request from a first subnet to a second subnet
US9772652B2 (en) * 2015-02-23 2017-09-26 Dell Products L.P. Systems and methods for distributing and synchronizing real-time clock
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
US9444822B1 (en) * 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US10691476B2 (en) * 2015-06-27 2020-06-23 Mcafee, Llc Protection of sensitive data
GB2540961B (en) * 2015-07-31 2019-09-18 Arm Ip Ltd Controlling configuration data storage
GB2540965B (en) 2015-07-31 2019-01-30 Arm Ip Ltd Secure configuration data storage
CN108351938B (en) * 2015-10-29 2022-02-08 惠普发展公司,有限责任合伙企业 Apparatus, system, and method for verifying a security value computed for a portion of program code
US10235297B2 (en) 2015-11-04 2019-03-19 International Business Machines Corporation Mechanism for creating friendly transactions with credentials
US10270773B2 (en) * 2015-11-04 2019-04-23 International Business Machines Corporation Mechanism for creating friendly transactions with credentials
US10185633B2 (en) * 2015-12-15 2019-01-22 Intel Corporation Processor state integrity protection using hash verification
US9685389B1 (en) 2016-02-03 2017-06-20 Taiwan Semiconductor Manufacturing Co., Ltd. Formation of getter layer for memory device
US11734430B2 (en) 2016-04-22 2023-08-22 Hewlett Packard Enterprise Development Lp Configuration of a memory controller for copy-on-write with a resource controller
US10417441B2 (en) * 2016-04-29 2019-09-17 International Business Machines Corporation Effectively validating dynamic database queries through database activity monitoring
FR3052280A1 (en) 2016-06-03 2017-12-08 Proton World Int Nv
FR3052279B1 (en) * 2016-06-03 2019-06-21 Proton World International N.V. AUTHENTICATION OF A CARD WITH NON-CONTACT READING
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
JP6799404B2 (en) * 2016-07-13 2020-12-16 株式会社デンソーテン Information processing device and information processing method
US10664183B1 (en) 2016-07-25 2020-05-26 Oracle International Corporation Method and apparatus for storing memory attributes
WO2018060769A1 (en) * 2016-09-28 2018-04-05 Nanolock Security Inc. Access control for integrated circuit devices
US10069633B2 (en) * 2016-09-30 2018-09-04 Data I/O Corporation Unified programming environment for programmable devices
US20180275731A1 (en) * 2017-03-21 2018-09-27 Hewlett Packard Enterprise Development Lp Processor reset vectors
US11178160B2 (en) * 2017-04-26 2021-11-16 Splunk Inc. Detecting and mitigating leaked cloud authorization keys
US10909248B2 (en) * 2017-06-29 2021-02-02 Microsoft Technology Licensing, Llc Executing encrypted boot loaders
CN109753821B (en) * 2017-11-01 2022-03-15 瑞昱半导体股份有限公司 Data access device and method
US10318438B1 (en) * 2017-12-07 2019-06-11 Nuvoton Technology Corporation Secure memory access using memory read restriction
EP3514499B1 (en) * 2018-01-23 2020-08-26 Siemens Aktiengesellschaft Verification of sensor data
LU100844B1 (en) 2018-06-25 2019-12-30 Univ Luxembourg Method for preventing ransomware attacks on computing systems
CN110677250B (en) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 Key and certificate distribution method, identity information processing method, device and medium
EP3599737A1 (en) * 2018-07-24 2020-01-29 Gemalto Sa Method to create a primary cryptographic key with owner-defined transformation rules
CN110795742B (en) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 Metric processing method, device, storage medium and processor for high-speed cryptographic operation
CN110795774B (en) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 Measurement method, device and system based on trusted high-speed encryption card
CN110826113A (en) * 2018-08-09 2020-02-21 深圳市菲德越科技有限公司 Data secure storage method and device
CN110874478B (en) 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 Key processing method and device, storage medium and processor
JP2020043258A (en) 2018-09-12 2020-03-19 キオクシア株式会社 Semiconductor memory and manufacturing method thereof
US10747909B2 (en) 2018-09-25 2020-08-18 Northrop Grumman Systems Corporation System architecture to mitigate memory imprinting
US10754993B2 (en) 2018-09-25 2020-08-25 Northrop Grumman Systems Corporation Architecture to mitigate configuration memory imprinting in programmable logic
US11599403B2 (en) * 2018-10-03 2023-03-07 SK Hynix Inc. Logging mechanism for memory system
US10984108B2 (en) * 2018-10-05 2021-04-20 International Business Machines Corporation Trusted computing attestation of system validation state
JP7018864B2 (en) * 2018-10-15 2022-02-14 ルネサスエレクトロニクス株式会社 Semiconductor devices and their control methods
US11625459B2 (en) * 2019-02-08 2023-04-11 Raytheon Technologies Corporation Embedded processing system with multi-stage authentication
US11228443B2 (en) * 2019-03-25 2022-01-18 Micron Technology, Inc. Using memory as a block in a block chain
CN110309083B (en) * 2019-06-28 2021-09-07 兆讯恒达科技股份有限公司 Memory data scrambling method
US11169973B2 (en) * 2019-08-23 2021-11-09 International Business Machines Corporation Atomically tracking transactions for auditability and security
DE102019122806A1 (en) * 2019-08-26 2021-03-04 Infineon Technologies Ag Cryptographic device
US20210097184A1 (en) * 2019-09-27 2021-04-01 Advanced Micro Devices, Inc. Secure buffer for bootloader
US11768611B2 (en) 2020-04-02 2023-09-26 Axiado Corporation Secure boot of a processing chip
CN113704144B (en) * 2020-05-22 2024-10-01 澜起科技股份有限公司 Memory controller and method for controlling access to memory module
US11868476B2 (en) * 2020-06-02 2024-01-09 Hypori, Inc. Boot-specific key access in a virtual device platform
US11184159B1 (en) * 2020-09-01 2021-11-23 Slack Technologies, Inc. Encryption key management for channels with multiple organizations
DE102020212772A1 (en) * 2020-10-09 2022-04-14 Robert Bosch Gesellschaft mit beschränkter Haftung Method and device for managing cryptographic keys
CN112631720B (en) * 2020-12-23 2023-05-23 海光信息技术股份有限公司 Memory control method, medium and equipment
US12039090B2 (en) 2021-01-19 2024-07-16 Cirrus Logic Inc. Integrated circuit with asymmetric access privileges
WO2022157467A1 (en) * 2021-01-19 2022-07-28 Cirrus Logic International Semiconductor Limited Integrated circuit with asymmetric access privileges
US11809334B2 (en) 2021-01-19 2023-11-07 Cirrus Logic Inc. Integrated circuit with asymmetric access privileges
US11977664B2 (en) * 2021-11-19 2024-05-07 Nxp Usa, Inc. Supply voltage proportionality monitoring in a system-on-chip (SOC)
US12072818B2 (en) * 2022-04-28 2024-08-27 Infineon Technologies Ag Systems and methods for concurrent logging and event capture
US20240160745A1 (en) * 2022-11-16 2024-05-16 Nxp B.V. Testing of security systems in integrated circuits
EP4372567A1 (en) * 2022-11-18 2024-05-22 Thales Dis France Sas Processor and method for modifying processor behavior based on memory attributes and instruction type

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4424561A (en) * 1980-12-31 1984-01-03 Honeywell Information Systems Inc. Odd/even bank structure for a cache memory
US20030140228A1 (en) * 2001-09-06 2003-07-24 Binder Philip A. Method and device for control by consumers over personal data
US20030197638A1 (en) * 2002-04-19 2003-10-23 Enuvis, Inc. Compensation for frequency adjustment in mobile communication-positioning device with shared oscillator
US20070192828A1 (en) * 2005-01-19 2007-08-16 Stmicroelectronics S.R.L. Enhanced security memory access method and architecture
US20080162848A1 (en) * 2006-12-30 2008-07-03 Hewlett-Packard Development Company, L.P. Controlling access to a memory region

Family Cites Families (191)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3183498A (en) 1961-10-02 1965-05-11 Itt Line-monitor circuit
JPH0628885B2 (en) 1986-12-19 1994-04-20 松下電器産業株式会社 Injection molding machine
AU601784B2 (en) 1986-12-18 1990-09-20 Honeywell Bull Inc. Data processing system having a bus command generated by one subsystem on behalf of another subsystem
JPH0628885Y2 (en) 1987-05-26 1994-08-03 松下電工株式会社 Box
US5214760A (en) 1988-08-26 1993-05-25 Tektronix, Inc. Adaptable multiple port data buffer
US5497497A (en) 1989-11-03 1996-03-05 Compaq Computer Corp. Method and apparatus for resetting multiple processors using a common ROM
US5872967A (en) 1989-12-29 1999-02-16 Packard Bell Nec Method for warm boot from reset
US5249286A (en) 1990-05-29 1993-09-28 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
US5131040A (en) 1991-02-28 1992-07-14 Motorola, Inc. Method for backing up and erasing encryption keys
US6836548B1 (en) 1991-10-29 2004-12-28 The Commonwealth Of Australia Communications security and trusted path method and means
US5389738A (en) 1992-05-04 1995-02-14 Motorola, Inc. Tamperproof arrangement for an integrated circuit device
JPH0628885A (en) * 1992-06-23 1994-02-04 Takayama:Kk Memory device
JPH06236325A (en) 1993-02-08 1994-08-23 Sansei Denshi Japan Kk Data storage device
US5450082A (en) 1993-11-29 1995-09-12 Caterpillar Inc. Single multi-purpose input for different types of sensors with data edge conditioning circuit or ADC to provide digital output
US5600576A (en) 1994-03-11 1997-02-04 Northrop Grumman Corporation Time stress measurement device
JP2697621B2 (en) 1994-07-29 1998-01-14 日本電気株式会社 Signal cycle detection circuit and signal loss monitoring circuit
JP3565583B2 (en) 1994-08-31 2004-09-15 株式会社日立コミュニケーションテクノロジー Semiconductor file storage device
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5956377A (en) 1996-05-31 1999-09-21 Vtech Communications, Ltd. Method and apparatus for synchronizing frames within a continuous stream of digital data
SE516581C2 (en) 1996-05-31 2002-01-29 Totalfoersvarets Forskningsins Auto-calibrating analog-to-digital converter and sensor device including such
US5682328A (en) 1996-09-11 1997-10-28 Bbn Corporation Centralized computer event data logging system
US5825878A (en) 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US6047376A (en) 1996-10-18 2000-04-04 Toshiba Information Systems (Japan) Corporation Client-server system, server access authentication method, memory medium stores server-access authentication programs, and issuance device which issues the memory medium contents
US6377691B1 (en) 1996-12-09 2002-04-23 Microsoft Corporation Challenge-response authentication and key exchange for a connectionless security protocol
US7580919B1 (en) 1997-03-10 2009-08-25 Sonicwall, Inc. Query interface to policy server
JPH10333898A (en) * 1997-05-29 1998-12-18 Nec Corp Microcomputer
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6161180A (en) * 1997-08-29 2000-12-12 International Business Machines Corporation Authentication for secure devices with limited cryptography
US6694460B2 (en) 1997-09-11 2004-02-17 Renesas Technology Corporation Semiconductor memory device having deterioration determining function
JP3204379B2 (en) 1997-09-29 2001-09-04 エヌイーシーマイクロシステム株式会社 Nonvolatile semiconductor memory device
US6078873A (en) 1997-10-02 2000-06-20 Cummins Engine Company, Inc. Method and apparatus for real-time data stamping via datalink and volatile ECM timer/clock
US6003117A (en) 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
IES80916B2 (en) 1997-12-15 1999-06-30 Tellabs Research Limited Memory addressing
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6292898B1 (en) 1998-02-04 2001-09-18 Spyrus, Inc. Active erasure of electronically stored data upon tamper detection
DE19824362A1 (en) 1998-05-30 1999-12-16 Micronas Intermetall Gmbh Process for monitoring the function of a sensor module and sensor module for carrying out the process
JP2000200218A (en) 1998-09-01 2000-07-18 Texas Instr Inc <Ti> Microprocessor with cache memory
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US6553496B1 (en) * 1999-02-01 2003-04-22 Koninklijke Philips Electronics N.V. Integration of security modules on an integrated circuit
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US6289455B1 (en) 1999-09-02 2001-09-11 Crypotography Research, Inc. Method and apparatus for preventing piracy of digital content
WO2001029776A1 (en) 1999-10-18 2001-04-26 Stamps.Com Cryptographic module for secure processing of value-bearing items
US6928551B1 (en) * 1999-10-29 2005-08-09 Lockheed Martin Corporation Method and apparatus for selectively denying access to encoded data
US6625727B1 (en) 1999-11-23 2003-09-23 Motorola, Inc. Apparatus and method for configuring a data processing system by retrieving a configuration value from storage device using reset vector and configuring parameters after reset
US6704865B1 (en) 1999-12-23 2004-03-09 Delphi Technologies, Inc. Microprocessor conditional deterministic reset vector method
US6512289B1 (en) 2000-05-09 2003-01-28 Xilinx, Inc. Direct current regulation on integrated circuits under high current design conditions
US6789182B1 (en) 2000-11-13 2004-09-07 Kevin Jay Brothers System and method for logging computer event data and physical components of a complex distributed system
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
JP4074057B2 (en) 2000-12-28 2008-04-09 株式会社東芝 Method for sharing encrypted data area among tamper resistant processors
US6859876B2 (en) 2000-12-29 2005-02-22 Hewlett-Packard Development Company, L.P. System and method for detecting and using a replacement boot block during initialization by an original boot block
US20040088333A1 (en) 2002-01-25 2004-05-06 David Sidman Apparatus method and system for tracking information access
GB2372597B (en) 2001-02-27 2005-08-10 Hewlett Packard Co Device and method for data timestamping
JP2002269065A (en) 2001-03-08 2002-09-20 Mitsubishi Electric Corp Microcomputer with incorporated programmable nonvolatile memory
US6466048B1 (en) 2001-05-23 2002-10-15 Mosaid Technologies, Inc. Method and apparatus for switchably selecting an integrated circuit operating mode
US7237121B2 (en) 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7242766B1 (en) * 2001-11-21 2007-07-10 Silicon Image, Inc. Method and system for encrypting and decrypting data using an external agent
JP2003167649A (en) 2001-11-28 2003-06-13 Mitsubishi Electric Corp Information processor
US7107459B2 (en) 2002-01-16 2006-09-12 Sun Microsystems, Inc. Secure CPU and memory management unit with cryptographic extensions
US7065651B2 (en) 2002-01-16 2006-06-20 Microsoft Corporation Secure video card methods and systems
JP2003240810A (en) 2002-02-14 2003-08-27 Mitsubishi Electric Corp Break detection circuit
US6715085B2 (en) 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7603551B2 (en) 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7089419B2 (en) 2002-04-18 2006-08-08 International Business Machines Corporation Control function with multiple security states for facilitating secure operation of an integrated system
US7185249B2 (en) 2002-04-30 2007-02-27 Freescale Semiconductor, Inc. Method and apparatus for secure scan testing
US7512810B1 (en) 2002-09-11 2009-03-31 Guardian Data Storage Llc Method and system for protecting encrypted files transmitted over a network
US20040054859A1 (en) * 2002-09-13 2004-03-18 Chanson Lin Mouse device capable of storing data
US7761904B2 (en) * 2002-09-30 2010-07-20 Harris Corporation Removable cryptographic ignition key system and method
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
EP1563388A2 (en) 2002-11-18 2005-08-17 ARM Limited Secure memory for protecting against malicious programs
DE60306952T2 (en) 2002-11-18 2007-02-08 Arm Ltd., Cherry Hinton ALLOCATION OF VIRTUAL TO PHYSICAL MEMORY ADDRESSES IN A SYSTEM WITH A SAFE AREA AND A NON-SAFE AREA
GB0229759D0 (en) 2002-12-20 2003-01-29 Becrypt Ltd Security device
FR2849233B1 (en) * 2002-12-24 2005-05-20 Trusted Logic METHOD FOR SECURING COMPUTER SYSTEMS BY SOFTWARE CONFINEMENT
GB2413914B (en) 2003-01-16 2007-04-04 Obs Inc Systems and methods for mobile security and monitoring
JP3880933B2 (en) 2003-01-21 2007-02-14 株式会社東芝 Data access control method using tamper resistant microprocessor and cache memory processor
WO2004073163A1 (en) * 2003-02-11 2004-08-26 Koninklijke Philips Electronics N. V. Self zeroing for critical, continuous-time applications
JP4082261B2 (en) 2003-03-31 2008-04-30 株式会社デンソー Disconnection detection circuit for sensor device
JP2004326671A (en) * 2003-04-28 2004-11-18 National Institute Of Advanced Industrial & Technology Remote calibration system for metering instrument and remote calibration method for metering instrument
US20040267847A1 (en) * 2003-05-13 2004-12-30 Bsi2000, Inc. Hardware random-number generator
US7360073B1 (en) 2003-05-15 2008-04-15 Pointsec Mobile Technologies, Llc Method and apparatus for providing a secure boot for a computer system
CN100363855C (en) 2003-07-04 2008-01-23 诺基亚有限公司 Key storage administration
US8055910B2 (en) 2003-07-07 2011-11-08 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
US20050091554A1 (en) 2003-08-07 2005-04-28 Dmitrii Loukianov Event time-stamping
US7062615B2 (en) 2003-08-29 2006-06-13 Emulex Design & Manufacturing Corporation Multi-channel memory access arbitration method and system
KR101044937B1 (en) * 2003-12-01 2011-06-28 삼성전자주식회사 Home network system and method thereof
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7299347B1 (en) * 2004-04-02 2007-11-20 Super Talent Electronics, Inc. Boot management in computer systems assisted by an endpoint with PCI-XP or USB-V2 interface
DE102004024002B4 (en) 2004-05-14 2008-05-21 Aim Infrarot-Module Gmbh Method for authenticating sensor data and associated sensor
US7222053B2 (en) 2004-07-12 2007-05-22 Mack Trucks, Inc. Event-driven portable data bus message logger
US8656185B2 (en) 2004-07-30 2014-02-18 Safenet, Inc. High-assurance processor active memory content protection
US7890769B2 (en) 2004-08-04 2011-02-15 Broadcom Corporation System and method for secure code downloading
US20060095726A1 (en) 2004-08-31 2006-05-04 Ivivity, Inc. Independent hardware based code locator
US7818574B2 (en) * 2004-09-10 2010-10-19 International Business Machines Corporation System and method for providing dynamically authorized access to functionality present on an integrated circuit chip
US20060059373A1 (en) 2004-09-10 2006-03-16 International Business Machines Corporation Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface
US20060059368A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation System and method for processing by distinct entities securely configurable circuit chips
US7237094B2 (en) 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices
US8332653B2 (en) 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7774619B2 (en) 2004-11-17 2010-08-10 Broadcom Corporation Secure code execution using external memory
US7457960B2 (en) 2004-11-30 2008-11-25 Analog Devices, Inc. Programmable processor supporting secure mode
KR100654446B1 (en) 2004-12-09 2006-12-06 삼성전자주식회사 Apparatus and method for Secure booting
US8601283B2 (en) * 2004-12-21 2013-12-03 Sandisk Technologies Inc. Method for versatile content control with partitioning
WO2006069274A2 (en) 2004-12-21 2006-06-29 Sandisk Corporation Versatile content control with partitioning
US7725703B2 (en) * 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
JP4522372B2 (en) 2005-02-07 2010-08-11 株式会社ソニー・コンピュータエンタテインメント Method and apparatus for implementing a secure session between a processor and an external device
JP4489030B2 (en) 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント Method and apparatus for providing a secure boot sequence within a processor
US20060184791A1 (en) 2005-02-14 2006-08-17 Schain Mariano R Encryption/decryption mechanism of network deployed executable image for secure boot of a device embedded in an un-trusted host
JP2009510808A (en) 2005-02-18 2009-03-12 クレダント テクノロジーズ、インク. Intelligence-based security systems and methods
US7321314B2 (en) 2005-03-09 2008-01-22 Intel Corporation Device, system and method of detection of input unit disconnection
US20060215437A1 (en) 2005-03-28 2006-09-28 Trika Sanjeev N Recovering from memory imprints
FR2883998A1 (en) 2005-04-05 2006-10-06 St Microelectronics Sa Coprocessor`s control execution securing method for e.g. microcontroller, involves placing coprocessor in default error mode from commencement of execution of control accomplished by coprocessor
US7571475B2 (en) * 2005-04-05 2009-08-04 Cisco Technology, Inc. Method and electronic device for triggering zeroization in an electronic device
US7336212B2 (en) * 2005-05-02 2008-02-26 Ati Technologies Inc. Apparatus and methods for measurement of analog voltages in an integrated circuit
US7549064B2 (en) 2005-05-10 2009-06-16 Hewlett-Packard Development Company, L.P. Secure circuit assembly
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US20070067644A1 (en) 2005-08-26 2007-03-22 International Business Machines Corporation Memory control unit implementing a rotating-key encryption algorithm
DE602005011967D1 (en) 2005-09-09 2009-02-05 Infineon Technologies Ag JTAG port
US7218567B1 (en) 2005-09-23 2007-05-15 Xilinx, Inc. Method and apparatus for the protection of sensitive data within an integrated circuit
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
JP4643427B2 (en) 2005-12-08 2011-03-02 株式会社日立製作所 Storage system with built-in encryption function
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US8001374B2 (en) 2005-12-16 2011-08-16 Lsi Corporation Memory encryption for digital video
US7379325B1 (en) 2005-12-16 2008-05-27 Maxim Intergrated Products, Inc. Non-imprinting memory with high speed erase
US7398441B1 (en) 2005-12-21 2008-07-08 Rockwell Collins, Inc. System and method for providing secure boundary scan interface access
US20070237325A1 (en) 2006-02-01 2007-10-11 Gershowitz Michael N Method and apparatus to improve security of cryptographic systems
US7792302B2 (en) 2006-02-01 2010-09-07 Dolby Laboratories Licensing Corporation Securely coupling an FPGA to a security IC
US8291226B2 (en) 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
US7512719B1 (en) 2006-03-16 2009-03-31 American Megatrends, Inc. Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment
US8060744B2 (en) * 2006-03-23 2011-11-15 Harris Corporation Computer architecture for an electronic device providing single-level secure access to multi-level secure file system
EP1845470B1 (en) 2006-04-13 2016-11-09 STMicroelectronics (Research & Development) Limited Multiple purpose integrated circuit
US20070288740A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for secure boot across a plurality of processors
US7424398B2 (en) 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
US7757098B2 (en) 2006-06-27 2010-07-13 Intel Corporation Method and apparatus for verifying authenticity of initial boot code
US8560863B2 (en) 2006-06-27 2013-10-15 Intel Corporation Systems and techniques for datapath security in a system-on-a-chip device
US7886355B2 (en) * 2006-06-30 2011-02-08 Motorola Mobility, Inc. Subsidy lock enabled handset device with asymmetric verification unlocking control and method thereof
GB2439968B (en) 2006-07-07 2011-05-25 Advanced Risc Mach Ltd Memory testing
US7475226B2 (en) 2006-09-20 2009-01-06 International Business Machines Corporation System for managing data dependency using bit field instruction destination vector identifying destination for execution results
US8732854B2 (en) 2006-11-01 2014-05-20 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
US7414553B1 (en) 2006-11-17 2008-08-19 Zilog, Inc. Microcontroller having in-situ autocalibrated integrating analog-to-digital converter (IADC)
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8725974B2 (en) 2007-01-17 2014-05-13 Oracle America, Inc. Page-protection based memory access barrier traps
US8615665B2 (en) 2007-01-26 2013-12-24 Harris Corporation Method for providing high assurance integrity of installed software images in a software defined radio
US8151118B2 (en) * 2007-01-29 2012-04-03 Microsoft Corporation Master-slave security devices
JP2008192036A (en) 2007-02-07 2008-08-21 Renesas Technology Corp Microcontroller
JP4933946B2 (en) 2007-04-18 2012-05-16 株式会社日立製作所 External storage device and information leakage prevention method
EP2164020B1 (en) 2007-05-11 2014-02-26 Nagrastar L.L.C. Apparatus for controlling processor execution in a secure environment
JP2008310270A (en) * 2007-06-18 2008-12-25 Panasonic Corp Cryptographic equipment and cryptography operation method
US20090031135A1 (en) 2007-07-27 2009-01-29 Raghunathan Kothandaraman Tamper Proof Seal For An Electronic Document
US7895426B2 (en) 2007-08-24 2011-02-22 International Business Machines Corporation Secure power-on reset engine
US7937596B2 (en) 2007-08-30 2011-05-03 Harris Corporation Adaptable microcontroller based security monitor
JP4993733B2 (en) 2007-09-28 2012-08-08 東芝ソリューション株式会社 Cryptographic client device, cryptographic package distribution system, cryptographic container distribution system, and cryptographic management server device
US8082439B2 (en) 2007-12-06 2011-12-20 Hewlett-Packard Development Company, L.P. Firmware modification in a computer system environment supporting operational state changes
EP2232759B1 (en) 2007-12-13 2018-08-15 Symantec Corporation Apparatus and method for facilitating cryptographic key management services
US7729156B2 (en) 2007-12-26 2010-06-01 Texas Instruments Incorporated Cycling to mitigate imprint in ferroelectric memories
US7667997B2 (en) 2007-12-27 2010-02-23 Texas Instruments Incorporated Method to improve ferroelectronic memory performance and reliability
US8495438B2 (en) 2007-12-28 2013-07-23 Texas Instruments Incorporated Technique for memory imprint reliability improvement
US8175276B2 (en) 2008-02-04 2012-05-08 Freescale Semiconductor, Inc. Encryption apparatus with diverse key retention schemes
KR101484110B1 (en) * 2008-02-29 2015-01-28 삼성전자주식회사 Memory controller and memory device thereof
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
DE102008021567B4 (en) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computer system with secure boot mechanism based on symmetric key encryption
US8607034B2 (en) 2008-05-24 2013-12-10 Via Technologies, Inc. Apparatus and method for disabling a microprocessor that provides for a secure execution mode
US8819839B2 (en) * 2008-05-24 2014-08-26 Via Technologies, Inc. Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels
US7958130B2 (en) 2008-05-26 2011-06-07 Microsoft Corporation Similarity-based content sampling and relevance feedback
CN101620466A (en) 2008-06-30 2010-01-06 鸿富锦精密工业(深圳)有限公司 Password protection system and method and password generation device
US8484486B2 (en) * 2008-08-06 2013-07-09 Silver Spring Networks, Inc. Integrated cryptographic security module for a network node
US8051467B2 (en) 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
US8452984B2 (en) * 2008-08-28 2013-05-28 Alcatel Lucent Message authentication code pre-computation with applications to secure memory
US20100064125A1 (en) 2008-09-11 2010-03-11 Mediatek Inc. Programmable device and booting method
US10802990B2 (en) 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
WO2010041462A1 (en) * 2008-10-10 2010-04-15 パナソニック株式会社 Information processing device, information processing method, information processing program, and integrated circuit
CN101478538B (en) 2008-12-31 2012-06-06 成都市华为赛门铁克科技有限公司 Storage method, apparatus or system for safety management device
US7949912B1 (en) 2009-01-15 2011-05-24 Xilinx, Inc. System and method of securing data stored in a memory
US20100268942A1 (en) 2009-04-15 2010-10-21 Secuware Systems and Methods for Using Cryptographic Keys
JP2010282352A (en) 2009-06-03 2010-12-16 Renesas Electronics Corp Dma transfer control device
US8970344B2 (en) 2009-07-14 2015-03-03 Compx International Inc. Method and system for data control in electronic locks
US8644622B2 (en) 2009-07-30 2014-02-04 Xerox Corporation Compact signature for unordered vector sets with application to image retrieval
CN101995301B (en) 2009-08-20 2012-08-01 上海华虹Nec电子有限公司 Temperature detection circuit of integrated circuit and calibration method thereof
JP5662092B2 (en) 2009-10-27 2015-01-28 株式会社ソニー・コンピュータエンタテインメント Electronic parts and inspection system
WO2011058533A2 (en) 2009-11-16 2011-05-19 Discretix Technologies Ltd. Methods circuits devices and systems for provisioning of cryptographic data to one or more electronic devices
US20110154501A1 (en) 2009-12-23 2011-06-23 Banginwar Rajesh P Hardware attestation techniques
JP5440613B2 (en) 2009-12-28 2014-03-12 富士通株式会社 Power supply control device and power supply control method
TW201741925A (en) * 2010-04-12 2017-12-01 內數位專利控股公司 Staged control release in boot process
US20120185636A1 (en) * 2010-08-04 2012-07-19 Isc8, Inc. Tamper-Resistant Memory Device With Variable Data Transmission Rate
US9030953B2 (en) 2011-03-04 2015-05-12 Alcatel Lucent System and method providing resilient data transmission via spectral fragments
US8667244B2 (en) 2011-03-21 2014-03-04 Hewlett-Packard Development Company, L.P. Methods, systems, and apparatus to prevent memory imprinting
US20140149729A1 (en) 2011-07-18 2014-05-29 Ted A. Hadley Reset vectors for boot instructions
US8527675B2 (en) 2011-07-27 2013-09-03 Raytheon Company System and method for implementing a secure processor data bus
US9759763B2 (en) 2011-07-28 2017-09-12 Integrated Technology Corporation Damage reduction method and apparatus for destructive testing of power semiconductors
EP2665032A1 (en) 2012-05-14 2013-11-20 Thomson Licensing Methods and devices for 3d object protection using surface subdivision
US8572410B1 (en) * 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
EP2808804A1 (en) 2013-05-29 2014-12-03 Fujitsu Ltd. Database controller, method, and program for handling range queries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4424561A (en) * 1980-12-31 1984-01-03 Honeywell Information Systems Inc. Odd/even bank structure for a cache memory
US20030140228A1 (en) * 2001-09-06 2003-07-24 Binder Philip A. Method and device for control by consumers over personal data
US20030197638A1 (en) * 2002-04-19 2003-10-23 Enuvis, Inc. Compensation for frequency adjustment in mobile communication-positioning device with shared oscillator
US20070192828A1 (en) * 2005-01-19 2007-08-16 Stmicroelectronics S.R.L. Enhanced security memory access method and architecture
US20080162848A1 (en) * 2006-12-30 2008-07-03 Hewlett-Packard Development Company, L.P. Controlling access to a memory region

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015516B2 (en) 2011-07-18 2015-04-21 Hewlett-Packard Development Company, L.P. Storing event data and a time value in memory with an event logging module
US9418027B2 (en) 2011-07-18 2016-08-16 Hewlett Packard Enterprise Development Lp Secure boot information with validation control data specifying a validation technique
US9465755B2 (en) 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
US20230418590A1 (en) * 2022-06-22 2023-12-28 Hewlett-Packard Development Company, L.P. Instruction updates

Also Published As

Publication number Publication date
WO2013012444A1 (en) 2013-01-24
US20140165206A1 (en) 2014-06-12
US9418027B2 (en) 2016-08-16
CN103890852A (en) 2014-06-25
US20140164793A1 (en) 2014-06-12
CN103733204A (en) 2014-04-16
WO2012177295A1 (en) 2012-12-27
US9483422B2 (en) 2016-11-01
US8930154B2 (en) 2015-01-06
EP2734903A1 (en) 2014-05-28
US20140223113A1 (en) 2014-08-07
US20140156961A1 (en) 2014-06-05
WO2013012447A1 (en) 2013-01-24
EP2734951A4 (en) 2015-05-20
WO2013012461A1 (en) 2013-01-24
CN103688269A (en) 2014-03-26
EP2734903B1 (en) 2018-10-10
US20130024716A1 (en) 2013-01-24
EP2734951A1 (en) 2014-05-28
US20130024143A1 (en) 2013-01-24
WO2013012437A1 (en) 2013-01-24
EP2735000A4 (en) 2015-03-11
WO2013012449A1 (en) 2013-01-24
EP2734903A4 (en) 2016-03-02
WO2013012436A1 (en) 2013-01-24
US20140140512A1 (en) 2014-05-22
US20140149729A1 (en) 2014-05-29
EP2735000A1 (en) 2014-05-28
WO2013012435A1 (en) 2013-01-24
US20140130189A1 (en) 2014-05-08
US20130024153A1 (en) 2013-01-24
US9465755B2 (en) 2016-10-11
US9015516B2 (en) 2015-04-21
US9418026B2 (en) 2016-08-16
US20140189340A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
US20130024637A1 (en) Memory access unlock
US11777705B2 (en) Techniques for preventing memory timing attacks
TWI467383B (en) Apparatus and method for accessing a secure partition in non-volatile storage and article comprising a non-transitory machine-accessible storage medium
EP3274850B1 (en) Protecting a memory
EP3646223B1 (en) Remote attestation for multi-core processor
US9710651B2 (en) Secure processor for SoC initialization
US8522322B2 (en) Platform firmware armoring technology
CN1808455A (en) Secure license management
JP6682752B2 (en) Techniques for strengthening data encryption using secure enclaves
JP2012089108A (en) Security protection for memory content of processor main memory
US20180285600A1 (en) Connected secure iot processor
EP3373187B1 (en) Defensive techniques to increase computer security
EP3646224B1 (en) Secure key storage for multi-core processor
CN101303721A (en) Reducing information leakage between processes sharing a cache
Buhren et al. Fault attacks on encrypted general purpose compute platforms
US20140344947A1 (en) Method and apparatus for handling storage of context information
US20170286325A1 (en) Method and system for defining logical block addressing (lba) access permission in storage devices
EP3782066B1 (en) Nop sled defense
CN103745140A (en) Program code protection method and device for microcontroller and other embedded systems
CN117471154A (en) Burr detection unit, method, processing unit and computing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HADLEY, TED A.;REEL/FRAME:028189/0907

Effective date: 20120430

AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001

Effective date: 20151027

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE