Nova Patents
US20030194085A1

Protection of application secrets

Claim Score by NHIP

Read claim 1, the broadest

Abstract

A method and system for securely storing, managing, and sending critical application data (application secrets) are disclosed. The invention provides an application program interface (API) through which applications (code components) can request a secure store component (SSC) store an application secret, retrieve an application secret, and send an application secret from one code component to another. The SSC encrypts and stores the application secrets using a symmetric cipher algorithm with a key derived by combining machine-specific entropy and evidence associated with the application (or code component), using a mechanism such as a hashing function. When an application requests the SSC to return a stored application secret, the SSC decrypts the secret using a key derived from machine-specific entropy and evidence associated with the application requesting the secret. A secret owning application can also request the SSC to create an object storing the encrypted secret, evidence associated with an intended recipient, and evidence associated with the owning application, in order to send the application secret to another code component.

US20030194085A1, drawing sheet 1
Sheet 1 of 6

Term

Term ended

Projected expiry passed 27 June 2024, 2.2 years ago.

  1. Priority and filed
  2. Published
  3. Projected expiry
  4. Today

39 claims: 8 independent, 31 dependent

  1. 1
    Broadest claimClaim Score 90, very broad(NHIP)A method of encrypting data, comprising steps of:(a) generating a cryptographic key based at least on evidence associated with a requesting application and machine specific information;and (b) using the key generated in step (a), encrypting data associated with the application.
  2. 15
    A method of retrieving protected data, comprising steps of:(a) generating a cryptographic key based at least on evidence associated with a requesting application and machine specific entropy;and (b) using the key generated in step (a), decrypting previously encrypted data using a predefined cipher algorithm.
  3. 22
    A method of securely communicating a first application's data to a second application, comprising steps of:(a) creating an object comprising: (i) evidence associated with the first application;(ii) data encrypted using a key based on the trusted evidence associated with the first application and machine-specific entropy;and (iii) evidence associated with an intended recipient application;(b) receiving from the second application a reference to the object;(c) receiving evidence corresponding to the second application;and (d) when the second application's evidence matches the intended recipient application's evidence, decrypting the data and sending the decrypted data to the second application.
  4. 26
    A data structure stored on a computer readable medium, comprising:a first portion comprising data encrypted using a symmetric cipher algorithm, based on a key generated at least from machine-specific entropy and first application evidence, wherein the first application evidence corresponds to an application requesting the data structure's creation;a second portion comprising the first application evidence;and a third portion comprising second application evidence.
  5. 31
    A computer, comprising:a processor for controlling operation of the computer;and memory storing: a code component;machine-specific entropy;a secret store component (SSC) comprising computer readable instructions that, when executed by the processor, cause the computer to perform steps of: (i) receiving from the code component a request to securely store data;(ii) retrieving from an evidence provider evidence associated with the code component;and (iii) encrypting data received from the code component, wherein the encryption algorithm is based at least in part on the evidence and the entropy.
  6. 35
    An application program interface (API), comprising:a first function call comprising application data, wherein the first function encrypts the application data and stores the encrypted data, wherein the encryption is based at least in part on machine-specific entropy and first evidence corresponding to a code component calling the first function;a second function call comprising a first reference to previously stored encrypted data, wherein the second function decrypts previously stored encrypted data corresponding to the first reference, wherein the decryption is based at least in part on the machine-specific entropy and second evidence associated with a code component calling the second function;and a third function call comprising a second reference to previously stored encrypted data and third evidence corresponding to an intended recipient, wherein the third function creates an object and returns a reference to the object, said object comprising: encrypted data corresponding to a first code component calling the third function;third evidence corresponding to a second code component intended to receive the unencrypted data;and fourth evidence corresponding to the first code component.
  7. 38
    A method for storing application secrets, comprising steps of:(a) receiving from a code component, a request to store data;(b) retrieving from a trusted evidence provider, evidence corresponding to the code component;(c) securely and non-observably retrieving machine-specific entropy;(d) hashing the evidence with the entropy;(e) encrypting the data using a symmetric cipher algorithm, wherein a key used to encrypt the data derives from the results of step (d);and (f) storing the encrypted data in a persistent memory device.
  8. 39
    A method for retrieving previously encrypted and stored data, comprising steps of:(a) receiving from a code component a request for previously encrypted and stored data, wherein the request comprises a reference value;(b) retrieving from a trusted evidence provider, evidence corresponding to the code component;(c) securely and non-observably retrieving machine-specific entropy;(d) hashing the evidence with the entropy;(e) reading encrypted data stored in a persistent storage device at a location corresponding to the reference value;(f) attempting to decrypt the encrypted data using a predefined symmetric cipher algorithm, wherein a key used to attempt to decrypt the data derives from the results of step (d);and (g) returning the results of step (f) to the code component.