# US 9,521,132 B2 · Secure data storage

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,521,132 B2
- Document ID: US9521132B2
- Status: Granted
- Kind: B2
- Application number: 14/262,177
- Filed: 2014-04-25
- Published: 2015-02-12
- Granted: 2016-12-13
- Earliest claimed: 2013-08-08
- Assignees: Silicon Safe Limited
- Applicants: Silicon Safe Limited
- Inventors: William Thomas Harwood; Roger Alan Gross
- Web page: https://patentgrep.com/patent/US9521132B2

## CPC

- G06F 21/6245: {Protecting personal data, e.g. for financial or medical purposes}
- G06F 16/2272: {Management thereof}
- G06F 21/121: {Restricting unauthorised execution of programs}
- G06F 21/30: Authentication, i.e. establishing the identity or authorisation of security principals
- G06F 21/60: Protecting data
- G06F 21/62: Protecting access to data via a platform, e.g. using keys or access control rules
- G06F 21/70: Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F 21/79: in semiconductor storage media, e.g. directly-addressable memories
- H04L 9/0877: {using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/08: {for authentication of entities (cryptographic mechanisms or cryptographic arrangements for entity authentication H04L9/32)}
- H04L 63/0884: {by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity}
- H04L 63/123: {received data contents, e.g. message integrity}
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method and apparatus for storing data and performing logical comparisons and other operations on said data, the results of said comparisons and operations reveal only limited information about the stored data. Stored data may include, but is not limited to, confidential information such as passwords, biometric data, credit card data, personal identifiers that uniquely identify an individual, authorization levels where an entity may make a claim to have a certain level of access right or authorization, votes cast in an election, and encryption keys. Control logic within the apparatus prevents direct access to the data store other than via a restricted command interface which prevents data from being revealed. For example, operations such as checking a putative password against a password in the data store is performed by the apparatus which returns a pass or fail, but does not reveal the stored password.

## Claims

### Claim 1

Apparatus comprising:
(i) an interface configured to receive messages from and transmit messages to an application server that uses the apparatus for protecting data associated with a plurality of users,
(ii) a memory configured to store information associated with a plurality of independent users, wherein the memory is a non-transitory storage medium, wherein the memory comprises flash memory organized as a hash table for storing secure data, the flash memory being organized as a single uniform space of blocks, each of which accommodates a user profile, and
(iii) a processor configured to perform a limited number of pre-determined operations on the information stored in the memory, the information comprising data, wherein the information is kept secure from unauthorized access,
wherein the processor is configured so that it is not programmable at run-time;
wherein the interface is configured to receive a message from the application server that comprises data associated with one of the plurality of independent users, the data having been received by the application server from another device,
wherein the processor is configured to perform an operation on the information in the memory, comprising comparing data based on the received data against the secure data stored in the memory and to provide a response to the application server, via the interface, based on the comparison,
wherein the limited number of pre-determined operations do not include providing the secure data stored in the memory to the application server, and wherein the secure data is not extractable from the memory via the interface.

### Claim 2 (depends on 1)

Apparatus according to claim 1, wherein the information stored in the memory comprises indices and data associated with each index and wherein the processor is configured to perform the limited number of pre-determined operations on the information by using the indices.

### Claim 3 (depends on 1)

Apparatus according to claim 1, wherein the information stored in the memory comprises user ids and authentication data associated with each user id for authenticating a user and wherein the application server is an authentication server arranged to authenticate a user based on responses from the apparatus.

### Claim 4 (depends on 1)

Apparatus according to claim 1, wherein the information stored in the memory comprises user ids and one or more out of passwords, biometric data and pins associated with the user ids for one or more external resources and the application server is configured to permit or reject access to the one or more external resources based on responses from the apparatus.

### Claim 5 (depends on 1)

Apparatus according to claim 1, wherein the processor is configured to only accept messages from the application server up to a predetermined length and to reject or truncate input messages that are larger than the predetermined length.

### Claim 6 (depends on 1)

Apparatus according to claim 1, wherein the limited number of predetermined operations comprise an operation to update the secure data in the memory with data received from the application server.

### Claim 7 (depends on 1)

Apparatus according to claim 1 wherein the processor is configured to provide results of the limited number of operations to the application server and wherein the results are limited to success, failure or information about an error condition.

### Claim 8 (depends on 1)

Apparatus according to claim 1, wherein the interface provides a first interface and the apparatus further comprises a second interface for providing information to a back-up entity and wherein the processor is configured to provide secure data, in encrypted form, to the back up entity via the second interface.

### Claim 9 (depends on 1)

Apparatus according to claim 1, wherein the memory is configured to store data and meta data associated with a user profile in the same block of the uniform space of blocks.

### Claim 10 (depends on 1)

Apparatus according to claim 1, further comprising an application server configured to use the memory to store data associated with a plurality of users, the application server being configured to receive data from a plurality of devices associated with the plurality of independent users and to transmit data received from the plurality of devices, via the interface, to the processor for comparison against data stored in the memory.

### Claim 11 (depends on 10)

Apparatus according to claim 10, further comprising a pre-server configured to provide an intermediary between the plurality of devices and the application server, the pre-server being configured to rewrite data received from the plurality of devices, to be compared against secure data stored in the memory, and forwarding the rewritten data, and not the actual data received from the plurality of devices, to the application server, the pre-server being configured to re-write the data by one out of
encrypting the data,
rewriting the data to a temporary tag and communicating the tag and data to the processor, via the interface, while only communicating the tag to the application server, and
rewriting the data to a hash value using a key shared between the pre-server and the processor.

### Claim 12

A computer implemented method, executable on a processor, the method comprising:
receiving in an apparatus including the processor a message from an application server that uses the apparatus for protecting data associated with a plurality of independent users from unauthorized access, the message comprising data received by the application server from another device, the message comprising data associated with one of the plurality of independent users;
carrying out in the processor an operation on the information stored in the memory, in response to the message, the information comprising data associated with the plurality of independent users, wherein the information is kept secure from unauthorized access, the operation comprising comparing data based on the received data against the secure data stored in the memory; and
providing a response to the application server based on the comparison, wherein the operation is one out of limited number of pre-determined operations that the processor of the apparatus can carry out on information in the memory,
the processor not providing the secure data stored in the memory to the application server,
the processor configured not to respond to a request to extract the secure data from the memory via the interface,
the processor configured so as always not to respond to an attempt to re-program the processor at run-time, and
the processor arranged to operate on a memory configured to store information associated with a plurality of independent users, wherein the memory is a non-transitory storage medium, wherein the memory comprises flash memory organized as a hash table for storing secure data, the flash memory being organized as a single uniform space of blocks, each of which accommodates a user profile.

### Claim 13 (depends on 12)

A computer implemented method according to claim 12, wherein the limited number of pre-determined operations include updating the secure data and the method further comprises receiving a message from an application server with data to be protected from unauthorized access and updating the memory with the received data.

### Claim 14 (depends on 12)

A computer implemented method according to claim 12 further comprising providing the secure data in encrypted form to an external back-up device via an interface that is separate from an interface over which messages are exchanged with the application server.

### Claim 15

A non-transitory computer readable medium having executable instructions stored thereon that are executable by a processor, the instructions executable to cause the processor to:
(i) receive and interpret a message received via an interface from an application server configured to use an apparatus comprising the processor to protect data associated with a plurality of users, the message comprising data received by the application server from another device, the message comprising data associated with one of the plurality of independent users;
(ii) carry out a limited number of predetermined operations on the memory storing the information comprising data associated with the plurality of users wherein the information is kept secure from unauthorized access, wherein the limited number of operations comprise comparing data based on the received data against secure data stored in memory; and
(iii) provide a response back to the application server, via the interface, based on results of operations of the limited number of predetermined operations, wherein the limited number of operations do not include returning secure data to the application server,
(iv) not respond to a request to extract the secure data from the memory via the interface, and
(v) not respond to an attempt to re-program the processor at run-time.
wherein the processor arranged to operate on a memory configured to store information associated with a plurality of independent users, wherein the memory is a non-transitory storage medium, wherein the memory comprises flash memory organized as a hash table for storing secure data, the flash memory being organized as a single uniform space of blocks, each of which accommodates a user profile.
