Patent Description:
Patent document <CIT> is regarded as relevant prior art.

The techniques disclosed herein are directed to a traceable key blockchain ledger. The disclosed technology involves generating transaction blocks representing key transactions and chaining the blocks in an unbroken block-chain to create a secure and traceable key block-chain ledger. Mechanisms are provided for adding metadata to each transaction block that logs information relevant to the key transaction, e.g. operations performed on the key, data the key was applied to, libraries utilizing the key, and machines where operations were performed on the key or where the key resides.

The disclosed key block-chain ledger can be used to extend key traceability to certain aspects of a key. The metadata in the key block-chain ledger enables the key to be traced during a key audit even when a key operation, e.g. a key rotation, is performed that modifies the key such that the original key cannot be derived from the original key. This may allow the key to be traced to a point of attack if the key becomes compromised.

In various examples, techniques for key management are shown that involve creating a cryptographic key at a key source, generating a genesis block for a key block-chain ledger corresponding to the cryptographic key, and securely modifying the genesis block to include metadata describing the key source. These techniques also involve performing a first key transaction with the cryptographic key, generating a first transaction block corresponding to the first key transaction with the cryptographic key and adding the first transaction block to the key block-chain ledger, and securely modifying the first transaction block to include metadata describing the first key transaction with the cryptographic key. In some examples, securely modifying a transaction block involves modifying the transaction block using a block-chain emend or amend functionality to include metadata describing a key transaction. One example of a key transaction is rotation of a key.

In another aspect of the techniques disclosed herein, the techniques involve detecting an attack on data or a system associated with the cryptographic key. This aspect further involves using metadata of the transaction blocks in the key block-chain ledger to trace the cryptographic key to a point of attack and determining transaction block corresponding to the point of attack. This aspect also involves generating an alert indicating the point of attack with metadata from the transaction block corresponding to the point of attack.

It should be appreciated that the above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.

This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter.

The following Detailed Description describes technologies for the use of block-chaining in a key management system to create a key block-chain ledger that may be traced even when a key is modified such that the original key cannot be derived from the modified key. Certain examples use an emend and amend functionality of block-chain technology to add metadata to blocks of the block-chain, the metadata pertaining to key operations of a key transaction event.

Conventionally, a key is typically issued with lifecycle policies pertaining to the key. One common lifecycle policy is a key rotation policy that requires the key to be rotated on a periodic basis, such as annually. For example, the National Institute for Standards and Technology (NIST) states a lifecycle policy that an AES key of <NUM> bits requires rotation after <NUM> years. Other examples of key rotation policies also relate to the amount of data to which a key is applied. In another example, NIST states that an AES-GCM-<NUM> key must be rotated after being applied to <NUM> GB of data even if the <NUM> year time limit has not been reached.

When keys are rotated, key orthogonality is generally required, i.e. the new key cannot be feasibly derived by an unintended party, human or machine, from the original key. This poses key traceability issues during a key audit. This is a particular problem when the key rotation is performed without derivation from the master key or parent / seed key.

If a key becomes compromised and the key cannot be traced during an audit, then the point of attack, e.g. data, machine, system dependencies used, personnel involved, etc., may not be identifiable. As a result, identifying a security flaw or vulnerability is prevented and deep forensics cannot be performed. The disclosed technology provides a secure key block-chain ledger that enables key traceability. By creating blocks representing key transactions and chaining the blocks in an unbroken block-chain, a secure key block-chain ledger is created. Mechanisms are provided for adding metadata to each block that logs information relevant to the key transaction, e.g. operations performed on the key, data the key was applied to, libraries utilizing the key, and machines where operations were performed on the key or where the key resides. Examples of mechanisms for securely adding metadata to blocks in the block-chain include block-chain emend and amend functionality.

In various examples, the disclosed key block-chain ledger can be used to extend key traceability to certain aspects of a key, such as: how the key is being used; which service the key is related to; historical data logs, e.g. glitches and possible attack attempts; and tracing key usage to a service when it is rotated. Tracing key usage to a service, in particular, is important to supporting data-at-rest in that it relates to the keys associated with the same data and/or keys related to each other or to different data.

In certain simplified examples, a method, system or computer readable medium for key management involves constructing a traceable key block-chain ledger by creating a cryptographic key at a key source, generating a genesis block for a key block-chain ledger corresponding to the cryptographic key, and securely modifying the genesis block to include metadata describing the key source. These examples also involve performing a key transaction with the cryptographic key, generating a transaction block corresponding to the key transaction with the cryptographic key and adding the transaction block to the key block-chain ledger, and securely modifying the transaction block to include metadata describing the key transaction with the cryptographic key.

Certain examples use block-chain emend and amend functionality to securely introduce metadata to the transaction blocks of the key block-chain ledger.

Certain examples trace the key block-chain ledger using the metadata in the transaction blocks to determine a point of attack and generate an alert by detecting an attack on data or a system associated with the cryptographic key, using metadata of the transaction blocks in the key block-chain ledger to trace the cryptographic key to a point of attack, determining a transaction block corresponding to the point of attack, and generating an alert indicating the point of attack with metadata from the transaction block corresponding to the point of attack.

These are simplified examples and many factors may be considered in a traceable key block-chain ledger as will be discussed in greater detail below.

As will be described in more detail herein, it can be appreciated that implementations of the techniques and technologies described herein may include the use of solid state circuits, digital logic circuits, computer components, and/or software executing on one or more input devices. Signals described herein may include analog and/or digital signals for communicating a changed state of a key, data associated with a key, or other information pertaining to the key.

While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including multiprocessor systems, mainframe computers, microprocessor-based or programmable consumer electronics, minicomputers, hand-held devices, and the like.

By the use of the technologies described herein, a block-chain is used to provide a ledger for tracing key management information, such as modification or use of the key. Such technologies provide a key ledger through the use of blockchain. Certain configurations may be beneficial in auditing or tracing a key over its lifecycle even when a key is modified in a manner that the original key cannot be derived from the modified key. Among many benefits provided by the technologies described herein, the technologies may provide for a secure distributed block-chain key ledger. Other technical effects other than those mentioned herein can also be realized from implementation of the technologies disclosed herein.

In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustration specific configurations or examples. Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of a computing system, computer-readable storage medium, and computer-implemented methodologies for a traceable key block-chain ledger will be described. As will be described in more detail below with respect to the figures, there are a number of applications and services that may embody the functionality and techniques described herein.

<FIG> is an architectural diagram illustrating one example of a system <NUM> with a key block-chain ledger <NUM> for a key generated in a hardware security module (HSM) <NUM>. In this example, a set of trusted nodes, server 120A-D, are interconnected via network <NUM>. A private key is created in HSM <NUM> and a genesis block 142A is produced for a block-chain that establishes a key ledger.

When a private key is created in HSM <NUM>, genesis block 142A for a block-chain is created that includes metadata identifying the source of generation, e.g. HSM <NUM>, and mode of generation for the key, such as the type of key, protocols, etc. The genesis block 142A is signed with a signature that is cryptographically generated using information pertaining to the key. In effect, a signed birth certificate is issued to the key that includes information about the key's generation in addition to checking for proper entropy of the source.

In one example, genesis block 142A is signed with a signature derived from a key value for signing the key certificate and information pertaining to the key and key source information.

When a key transaction occurs, e.g. each time the key is rotated, a transaction block is created, signed and added to the key block-chain ledger <NUM>. In the example of <FIG>, each of transaction blocks 142B-E represents a key transaction, e.g. key rotation or key use. The key block-chain ledger <NUM> may be distributed to the nodes of a trusted cluster, e.g. servers 120A-D.

Metadata pertaining to the key transaction, such as references to data, machines, signed kernels, or libraries, is added to the block 142B-E in the key blockchain ledger <NUM> using secure cryptographic operations to insert and assert information, e.g. to add notes or records to the transaction blocks.

In certain examples of a key block-chain ledger, these secure cryptographic operations may include posteriori emend and posteriori amend. In some examples, specific tags may be added to differentiate amend and emend. In the example of <FIG>, the blocks 142A-E of key block-chain ledger <NUM> are subject to the amend and emend operations, which is similar to a block-chain fork except that, in the present technology, the changes may be made by an authorized or trusted party and the mode of change, e.g. amend or emend, is identified. The data introduced by the secure cryptographic operations, e.g. amend or emend operations, is reflected in the transaction blocks of the key block-chain ledger <NUM>, e.g. a specific Merkle tree branch of the transaction blocks of the block-chain.

An amend operation typically adds change data to metadata in a transaction block, but leaves the details of the original historical data unchanged, e.g. new facts are added, no facts replaced. For example, the amend data may indicate that an attempt was detected to cause a data dump on certain ciphered data associated with the key, but back-dated to a known time where the key was valid and the new key has been refreshed N times since the known time when the key was valid.

An emend operation typically indicates that part of the historical data is incorrect and authorized errata data is added to the metadata, e.g. facts are replaced, i.e. disclaimed and re-stated. For example, the policy for use of data associated with the key was discovered to be mis-stated, but the key data has been back-dated to a known time when the key was known to be valid, and the new key has been refreshed N times since that known time.

Note that, conventionally, a block chain is immutable, so the it is typically not possible to purge, emend or amend information from the block-chain after the fact. This can be a problem when information is inaccurate or incomplete after the fact. The present technology, in contrast, is scalable when a policy is authorized and amended. This will be specified by the attested and authorized amend mechanism. Hence, the present technology enables deep data forensics to be performed.

<FIG> is a data architecture diagram illustrating a simplified example of a key block-chain ledger <NUM> based on the blocks 142A-E of the key ledger <NUM> of <FIG>. The key block-chain ledger <NUM> example of <FIG> is simplified to show block headers, metadata and signatures of blocks 210A-E in order to demonstrate a traceable secure key ledger using a block-chain. In the example of <FIG>, a genesis block 210A with ID "<hardware_tamperproof>. <application_name>. key" is generated by HSM <NUM> of <FIG> when a key is created by the HSM.

The control flow diagram of <FIG> illustrates one example of a process <NUM> that generates a genesis block. At <NUM>, a key, such as a public private key pair, is created, e.g. by HSM <NUM>. At <NUM>, genesis block 210A is created for the new key with Metadata1 describing information regarding the origin of the key. In the example shown, Metadata1 includes the source of the key, e.g. HSM <NUM> and the issuing authority for the key, and policy data for the key, e.g. rotation requirements. At <NUM>, genesis block 210A is ciphered and signed, e.g. by a key management application residing in server 120A, with signature <NUM> to provide a key birth certificate.

Because block 210A is the genesis block, there is no previous block to which the genesis block is chained, e.g. Previous version: NIL. Because genesis block 210A is the only block in the chain at the point of creation, it is also the end block, e.g. Next Version index: NIL.

As key operations occur, e.g. key rotation or key usage, transaction blocks are added to the block-chain <NUM>. Each transaction block contains metadata that includes key traceability information for the key, such as the machine performing the key rotation, data to which the key is applied, machines where the key resides, signed kernels, libraries etc. Each transaction block contains a hash pointer as a link to a previous block, a timestamp and transaction data. A block-chain is inherently resistant to modification of the data, which maintains the integrity of the metadata and enables the key to be traced through its lifetime even when the key is modified such that the original key or an earlier version of the key cannot be derived from a modified form of the key. Note that the metadata may also be a pointer to a location of resources or logs where trace information can be found.

An example of a transaction block creation process <NUM> is illustrated in the control flow diagram of <FIG> in the context of <FIG>. At <NUM>, when a key transaction event occurs, e.g. the key is applied to data, another transaction block 210B is created, at <NUM>, block-chained to the genesis block 210A, and, at <NUM>, the transaction block is ciphered and signed to assure the authenticity of the transaction block.

At <NUM>, transaction block 210B is emended or amended to include Metadata2, which includes key traceability information pertaining to the key transaction event, such as data, signed kernels or libraries to which the key has been applied or a machine performing the key rotation or a machine where the key resides. The genesis block 210A is emended to include references to transaction block 210B, e.g. Next Version index: <NUM>. Transaction block 210B includes a link to the genesis block 210A, e.g. Previous version index: <NUM>, and is signed, e.g. signature2.

Similarly, transaction blocks 210C-E are created when subsequent key transaction events occur and the transaction blocks are block-chained into the key block-chain ledger <NUM> to provide a secure key log that is traceable using the metadata of the transaction blocks. As each block is added, the added block includes a link to the previous block and the previous block is modified to contain a link to the added block.

In the example of <FIG>, an amend operation is used to add notes (e.g. <NUM>. x is defined as <NUM>. end; e.g. <NUM>. x is derived on new branch). An emend operation is used to state errata (ID: is re-defined / renamed from"<hardware_tamperproof>. <application_name>. key"to "smartcard.

In one example of adding metadata to a transaction block 210A-E in the key block-chain ledger <NUM>, a quasi-immutable master key is utilized to emend the transaction blocks 210A-E of ledger <NUM>. In this example, the emend function includes: cipher; signature; and update and may include an original chain lock and an intermediate inter-chain lock to allow amends, which may be separate text in the transaction block 210A-E.

In another example, an immutatable key is assumed for simplicity. This may also pertain to rotating the secure log/ledger key and emend/amend lifecycle status key. Derived keys may also be utilized. The immutable key can also be a quasi-immutable key, like a certificate authority (CA) issued key as an intermediary key with high longevity for use with a secure logger. For example:.

The key block-chain ledger <NUM> may be distributed to a trusted cluster or a public block-chain. Though aspects of the technology disclosed herein resemble a smart contract, in the present techniques, the policy of the contract may determine the way that the key block-chain ledger is maintained. For example, the policy may require that the validation or authorization process is determined by a centralized control of a cluster of trusted nodes. In this case, the centralized control may be a trusted node, such as a certificate authority, authorized to attest and sign the transaction blocks to validate them and validation by miners may not be needed.

Alternatively, the policy may provide for validation process decided by a decentralized cluster of untrusted nodes. In the situation where the key blockchain ledger is distributed to a cluster of untrusted nodes, mining of blocks in the chain may be employed to validate the key block-chain ledger.

One aspect of the key block-chain ledger is that it may permit private keys to be maintained within a single secure entity, such as HSM <NUM>. This can centralize the attack risk to a centralized module where security is the primary focus leaving business functionality using single secure entity as the crypto service provider.

Taken from another perspective, because the key and its profile, e.g. attributes and rules, is an entity, e.g. a legal entity, tied to a service, the key can be viewed as having a value or currency. If the key does not rotate, then the value does not change because the nature of the service does not modify. If the key does rotate, however, then the service changes and the key transaction is logged in the key blockchain ledger, re-hashed, and broadcast to a network of nodes, which may be trusted or untrusted depending on the desired implementation. In an example where the contents of the transaction blocks are maintained as secret, then only the signature for each transaction block is released and mined for public establishment of the key block-chain ledger.

Block-chains may use various time-stamping schemes, such as proof-of-work, to serialize changes. Alternate consensus methods include proof-of-stake and proof-of-burn may also be utilized to serialize changes.

As noted above, in some examples, a key block-chain ledger may be validated by miners to secure the block-chain. In this case, miners may collectively agree on a validation solution to be utilized. However, if a small network is utilized, e.g. private network, then the solution may be a Merkle tree and mining for the validation solution may not be required. When a key is created, it is an unconfirmed and unidentified entity. To be part of the acknowledged "currency", it may be added to the block-chain, and therefore relates to the concept of a trusted cluster.

In a trusted cluster, when a key is rotated, every node competes to acknowledge the next "transaction" (key rotation or emendment/amendment), hence, an immutable key may not be needed. Hence, no single node will sign for the entire cluster on that shared key when each node is competing to rotate and validate the key rotation. In one example, the nodes compete to mine and get the lowest hash value: min{previous_hash, contents_hash, random_nonce_to_be_guess} -> result. Transaction order is protected by computational race (faith that no one can beat the network). This is useful if the service profile, e.g. Human Certificate Profile (HCP) or key (entity) is to be acknowledged and established by democratic nodes for establishment. Mutual authentication parameters are broadcast and acknowledged so that there is no double rotation. The same may be true for HCP when the service profile is re-assigned.

By broadcasting the meta-data for authenticating a secret ledger across a restricted network, e.g. only the signed hash is broadcast, the block-chain may reduce the risks that come with data being held centrally. Decentralized consensus makes block-chains suitable for the recording of secret transactions or events. The meta-data, which may contain locations of resources related to the key, may also be ciphered for restricted access so that the meta-data does not disclose network configuration information of the resources pertaining to the key.

The mining process may be utilized to deter double accounting, overriding or replaying attacks, with the community arrangement on the agreement based on the "good faith" that no single node can control the entire cluster. The working assumption for mining is the existence of equivalent power distribution of honest parties with supremacy over dishonest or compromised ones. Every node or miner in a decentralized system has a copy of the block-chain. No centralized "official" copy exists and no user is "trusted" more than any other. Transactions are broadcast to the network using software. Mining nodes validate transactions, add them to the block they are building, and then broadcast the completed block to other nodes.

Note that in a restricted network, stake-holders who are authorized to check or mine for the key lifecycle trace may or may not access the keys themselves, but would have to have keys to the meta-data (since they are members of the restricted network, and are trusted) to get the details. As keys are applied on data with different data classifications, the stake-holders could be segmented.

A decentralized block-chain may also use ad-hoc secure message passing and distributed networking. In this example, the key block-chain ledger may be different from a conventional block-chain in that there is a centralized clearing house, e.g. authorized central control for validation. Without the mining process, the trusted cluster can be contained in a centralized block-chain instead of a public or democratic block-chain. One way to view this is that a decentralized portion is as "democratic N honest parties" (multiparty honest party is a cryptography concept), and a centralized portion as a "trusted monarchy for block-chain information correction". There may be advantages to maintaining the emend and amend mechanisms as centrally authorized and kept offline similar the root certification authority for the key.

In some examples, access to a distributed traceable key block-chain ledger may be restricted by cryptographic means to be only open to authorized servers Since the key block-chain ledger is distributed, the authorized servers can validate it. A public key may be used as an address on the key block-chain.

Note that growth of a decentralized block-chain may be accompanied by the risk of node centralization because the computer resources required to operate on bigger data become increasingly expensive.

<FIG> is a control flow diagram illustrating an example of a validation process <NUM> for a key block-chain ledger distributed to untrusted nodes. In process <NUM>, when a transaction block is created for a key transaction, the key transaction is broadcast, at <NUM>, to the cluster of untrusted nodes. At <NUM>, nodes compete to compute a validation solution for the transaction. At <NUM>, a winning node broadcasts the validation solution for the transaction block and adds the transaction block to its copy of the key block-chain ledger. At <NUM>, in response to the winning node's broadcast, the other nodes add the transaction block to their copies of the key block-chain ledger in the transaction order established by the winning node. The decentralized validation protocol maintains the integrity of the key block-chain ledger.

<FIG> is a control flow diagram showing an illustrative example of a key trace process <NUM> using a key block-chain ledger of the disclosed technology. The key may be traced even if has been rotated and the key rotation is performed without derivation from the master key or the parent or seed key, e.g. key orthogonality has been maintained. In this example, at <NUM>, an attack on data or systems protected by a key is detected, where the key has a key block-chain ledger as described above. At <NUM>, the blocks of the key block-chain ledger may be traced to the origin, e.g. genesis block, for the key using the metadata of the transaction blocks.

At <NUM>, using the metadata from the key block-chain ledger, the transaction block corresponding to the point of attack on the key or the transaction block relating to the last point at which the key was valid is determined. At <NUM>, an alert is generated indicating the point of attack identified using the metadata from the key block-chain ledger. Alternatively, the alert may indicate that point at which the key was last valid for use in determining which entities, e.g. data, DLL, signed kernels, or systems that may have been compromised by the attack.

The present techniques may involve operations occurring in one or more machines. As used herein, "machine" means physical data-storage and processing hardware programed with instructions to perform specialized computing operations. It is to be understood that two or more different machines may share hardware components. For example, the same integrated circuit may be part of two or more different machines.

One of ordinary skill in the art will recognize that a wide variety of approaches may be utilized and combined with the present approach involving a traceable key block-chain ledger. The specific examples of different aspects of a traceable key block-chain ledger described herein are illustrative and are not intended to limit the scope of the techniques shown.

Note that at least parts of processes <NUM>, <NUM>, <NUM> and <NUM>, and other processes described herein may be implemented in a server, such as computer environment <NUM> in <FIG>, or the cloud, and data defining the results of the user controls signals translated or interpreted as discussed herein may be communicated to a user device for display. Alternatively, the traceable key block-chain ledger processes may be implemented in a client device. In still other examples, some operations may be implemented in one set of computing resources, such as servers, and other steps may be implemented in other computing resources, such as a client device.

It should be understood that the methods described herein can be ended at any time and need not be performed in their entireties. Some or all operations of the methods described herein, and/or substantially equivalent operations, can be performed by execution of computer-readable instructions included on a computerstorage media, as defined below. The term "computer-readable instructions," and variants thereof, as used in the description and claims, is used expansively herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on various system configurations, including singleprocessor or multiprocessor systems, minicomputers, mainframe computers, personal computers, hand-held computing devices, microprocessor-based, programmable consumer electronics, combinations thereof, and the like.

Thus, it should be appreciated that the logical operations described herein are implemented (<NUM>) as a sequence of computer implemented acts or program modules running on a computing system and/or (<NUM>) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.

As described herein, in conjunction with the FIGURES described herein, the operations of the routines (<NUM>, <NUM>, <NUM> and <NUM>) are described herein as being implemented, at least in part, by an application, component, and/or circuit. Although the following illustration refers to the components of <FIG>, <FIG>, <FIG> and <FIG>, it can be appreciated that the operations of the routines may be also implemented in many other ways. For example, the routines may be implemented, at least in part, by a computer processor or a processor or processors of another computer. In addition, one or more of the operations of the routines may alternatively or additionally be implemented, at least in part, by a computer working alone or in conjunction with other software modules.

For example, the operations of routines are described herein as being implemented, at least in part, by an application, component and/or circuit, which are generically referred to herein as modules. In some configurations, the modules can be a dynamically linked library (DLL), a statically linked library, functionality produced by an application programing interface (API), a compiled program, an interpreted program, a script or any other executable set of instructions. Data and/or modules, such as the data and modules disclosed herein, can be stored in a data structure in one or more memory components. Data can be retrieved from the data structure by addressing links or references to the data structure.

Although the following illustration refers to the components of <FIG>, <FIG>, <FIG> and <FIG>, it can be appreciated that the operations of the routines (<NUM>, <NUM>, <NUM>, <NUM> and <NUM>) may be also implemented in many other ways. For example, the routines may be implemented, at least in part, by a processor of another remote computer or a local computer or circuit. In addition, one or more of the operations of the routines may alternatively or additionally be implemented, at least in part, by a chipset working alone or in conjunction with other software modules. Any service, circuit or application suitable for providing the techniques disclosed herein can be used in operations described herein.

<FIG> shows additional details of an example computer architecture <NUM> for a computer, such as the servers 120A-D (<FIG>), capable of executing the program components described herein. Thus, the computer architecture <NUM> illustrated in <FIG> illustrates an architecture for a server computer, mobile phone, a PDA, a smart phone, a desktop computer, a netbook computer, a tablet computer, an on-board computer, a game console, and/or a laptop computer. The computer architecture <NUM> may be utilized to execute any aspects of the software components presented herein.

The computer architecture <NUM> illustrated in <FIG> includes a central processing unit <NUM> ("CPU"), a system memory <NUM>, including a random access memory <NUM> ("RAM") and a read-only memory ("ROM") <NUM>, and a system bus <NUM> that couples the memory <NUM> to the CPU <NUM>. A basic input/output system containing the basic routines that help to transfer information between sub-elements within the computer architecture <NUM>, such as during startup, is stored in the ROM <NUM>. The computer architecture <NUM> further includes a mass storage device <NUM> for storing an operating system <NUM>, data, such as key block-chain ledger data <NUM> and encrypted data <NUM>, key store <NUM>, and one or more application programs.

The mass storage device <NUM> is connected to the CPU <NUM> through a mass storage controller (not shown) connected to the bus <NUM>. The mass storage device <NUM> and its associated computer-readable media provide non-volatile storage for the computer architecture <NUM>. Although the description of computer-readable media contained herein refers to a mass storage device, such as a solid-state drive, a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available computer storage media or communication media that can be accessed by the computer architecture <NUM>.

Communication media includes computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics changed or set in a manner so as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.

By way of example, and not limitation, computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For example, computer media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks ("DVD"), HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer architecture <NUM>. For purposes the claims, the phrase "computer storage medium," "computer-readable storage medium" and variations thereof, does not include waves, signals, and/or other transitory and/or intangible communication media, per se.

According to various configurations, the computer architecture <NUM> may operate in a networked environment using logical connections to remote computers through the network <NUM> and/or another network (not shown). The computer architecture <NUM> may connect to the network <NUM> through a network interface unit <NUM> connected to the bus <NUM>. It should be appreciated that the network interface unit <NUM> also may be utilized to connect to other types of networks and remote computer systems. The computer architecture <NUM> also may include an input/output controller <NUM> for receiving and processing input from a number of other devices, including a keyboard, mouse, game controller, television remote or electronic stylus (not shown in <FIG>). Similarly, the input/output controller <NUM> may provide output to a display screen, a printer, or other type of output device (also not shown in <FIG>).

It should be appreciated that the software components described herein may, when loaded into the CPU <NUM> and executed, transform the CPU <NUM> and the overall computer architecture <NUM> from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The CPU <NUM> may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU <NUM> may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the CPU <NUM> by specifying how the CPU <NUM> transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the CPU <NUM>.

As another example, the computer-readable media disclosed herein may be implemented using magnetic or optical technology. In such implementations, the software presented herein may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations also may include altering the physical features or characteristics of particular locations within given optical media, to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this discussion.

In light of the above, it should be appreciated that many types of physical transformations take place in the computer architecture <NUM> in order to store and execute the software components presented herein. It also should be appreciated that the computer architecture <NUM> may include other types of computing devices, including hand-held computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer architecture <NUM> may not include all of the components shown in <FIG>, may include other components that are not explicitly shown in <FIG>, or may utilize an architecture completely different than that shown in <FIG>.

<FIG> depicts an illustrative distributed computing environment <NUM> capable of executing the software components described herein for a traceable key block-chain ledger. Thus, the distributed computing environment <NUM> illustrated in <FIG> can be utilized to execute many aspects of the software components presented herein. For example, the distributed computing environment <NUM> can be utilized to execute one or more aspects of the software components described herein.

According to various implementations, the distributed computing environment <NUM> includes a computing environment <NUM> operating on, in communication with, or as part of the network <NUM>. The network <NUM> may be or may include the network <NUM>, described above. The network <NUM> also can include various access networks. One or more client devices 606A-606N (hereinafter referred to collectively and/or generically as "clients <NUM>") can communicate with the computing environment <NUM> via the network <NUM> and/or other connections (not illustrated in <FIG>). In one illustrated configuration, the clients <NUM> include a computing device 606A, such as a laptop computer, a desktop computer, or other computing device; a slate or tablet computing device ("tablet computing device") 606B; a mobile computing device 606C such as a mobile telephone, a smart phone, an on-board computer, or other mobile computing device; a server computer 606D; and/or other devices 606N, which can include a hardware security module. It should be understood that any number of devices <NUM> can communicate with the computing environment <NUM>. Two example computing architectures for the devices <NUM> are illustrated and described herein with reference to <FIG> and <FIG>. It should be understood that the illustrated devices <NUM> and computing architectures illustrated and described herein are illustrative only, and should not be construed as being limited in any way.

In the illustrated configuration, the computing environment <NUM> includes application servers <NUM>, data storage <NUM>, and one or more network interfaces <NUM>. According to various implementations, the functionality of the application servers <NUM> can be provided by one or more server computers that are executing as part of, or in communication with, the network <NUM>. The application servers <NUM> can host various services, virtual machines, portals, and/or other resources. In the illustrated configuration, the application servers <NUM> host one or more virtual machines <NUM> for hosting applications or other functionality. According to various implementations, the virtual machines <NUM> host one or more applications and/or software modules for a traceable key block-chain ledger. It should be understood that this configuration is illustrative only, and should not be construed as being limiting in any way.

According to various implementations, the application servers <NUM> also include one or more key management services <NUM> and one or more block-chain services <NUM>. The key management services <NUM> can include services for managing keys used for encrypting data and communications. The block-chain services <NUM> can include services for participating in management of one or more block-chains, such as by creating genesis blocks, transaction blocks, and performing validation.

As shown in <FIG>, the application servers <NUM> also can host other services, applications, portals, and/or other resources ("other resources") <NUM>. The other resources <NUM> can include, but are not limited to, data encryption, data sharing, or any other functionality.

As mentioned above, the computing environment <NUM> can include data storage <NUM>. According to various implementations, the functionality of the data storage <NUM> is provided by one or more databases or data stores operating on, or in communication with, the network <NUM>. The functionality of the data storage <NUM> also can be provided by one or more server computers configured to host data for the computing environment <NUM>. The data storage <NUM> can include, host, or provide one or more real or virtual data stores 626A-626N (hereinafter referred to collectively and/or generically as "datastores <NUM>"). The datastores <NUM> are configured to host data used or created by the application servers <NUM> and/or other data. Aspects of the datastores <NUM> may be associated with a service for securely encrypting and storing files using encryption keys. Although not illustrated in <FIG>, the datastores <NUM> also can host or store web page documents, word documents, presentation documents, data structures, algorithms for execution by a recommendation engine, and/or other data utilized by any application program or another module.

The computing environment <NUM> can communicate with, or be accessed by, the network interfaces <NUM>. The network interfaces <NUM> can include various types of network hardware and software for supporting communications between two or more computing devices including, but not limited to, the clients <NUM> and the application servers <NUM>. It should be appreciated that the network interfaces <NUM> also may be utilized to connect to other types of networks and/or computer systems.

It should be understood that the distributed computing environment <NUM> described herein can provide any aspects of the software elements described herein with any number of virtual computing resources and/or other distributed computing functionality that can be configured to execute any aspects of the software components disclosed herein. According to various implementations of the concepts and technologies disclosed herein, the distributed computing environment <NUM> may provide the software functionality described herein as a service to the clients using devices <NUM>. It should be understood that the devices <NUM> can include real or virtual machines including, but not limited to, server computers, web servers, personal computers, mobile computing devices, smart phones, and/or other devices, which can include user input devices. As such, various configurations of the concepts and technologies disclosed herein enable any device configured to access the distributed computing environment <NUM> to utilize the functionality described herein for a traceable key block-chain ledger, among other aspects.

Turning now to <FIG>, an illustrative computing device architecture <NUM> for a computing device that is capable of executing various software components is described herein for a traceable key block-chain ledger. The computing device architecture <NUM> is applicable to computing devices that manage secure data. In some configurations, the computing devices include, but are not limited to, mobile telephones, on-board computers, tablet devices, slate devices, portable video game devices, traditional desktop computers, portable computers (e.g., laptops, notebooks, ultra-portables, and netbooks), server computers, game consoles, and other computer systems. The computing device architecture <NUM> is applicable to the servers 120A-D shown in <FIG> and computing device 606AN shown in <FIG>.

The computing device architecture <NUM> illustrated in <FIG> includes a processor <NUM>, memory components <NUM>, network connectivity components <NUM>, sensor components <NUM>, input/output components <NUM>, and power components <NUM>. In the illustrated configuration, the processor <NUM> is in communication with the memory components <NUM>, the network connectivity components <NUM>, the sensor components <NUM>, the input/output ("I/O") components <NUM>, and the power components <NUM>. Although no connections are shown between the individual components illustrated in <FIG>, the components can interact to carry out device functions. In some configurations, the components are arranged so as to communicate via one or more busses (not shown).

The processor <NUM> includes a central processing unit ("CPU") configured to process data, execute computer-executable instructions of one or more application programs, and communicate with other components of the computing device architecture <NUM> in order to perform various functionality described herein. The processor <NUM> may be utilized to execute aspects of the software components presented herein and, particularly, those that utilize, at least in part, secure data.

In some configurations, the processor <NUM> includes a graphics processing unit ("GPU") configured to accelerate operations performed by the CPU, including, but not limited to, operations performed by executing secure computing applications, general-purpose scientific and/or engineering computing applications, as well as graphics-intensive computing applications such as high resolution video (e.g., 620P, 1080P, and higher resolution), video games, three-dimensional ("3D") modeling applications, and the like. In some configurations, the processor <NUM> is configured to communicate with a discrete GPU (not shown). In any case, the CPU and GPU may be configured in accordance with a co-processing CPU/GPU computing model, wherein a sequential part of an application executes on the CPU and a computationally-intensive part is accelerated by the GPU.

In some configurations, the processor <NUM> is, or is included in, a system-on-chip ("SoC") along with one or more of the other components described herein below. For example, the SoC may include the processor <NUM>, a GPU, one or more of the network connectivity components <NUM>, and one or more of the sensor components <NUM>. In some configurations, the processor <NUM> is fabricated, in part, utilizing a package-on-package ("PoP") integrated circuit packaging technique.

The processor <NUM> may be created in accordance with an ARM architecture, available for license from ARM HOLDINGS of Cambridge, United Kingdom. Alternatively, the processor <NUM> may be created in accordance with an x86 architecture, such as is available from INTEL CORPORATION of Mountain View, California and others. In some configurations, the processor <NUM> is a SNAPDRAGON SoC, available from QUALCOMM of San Diego, California, a TEGRA SoC, available from NVIDIA of Santa Clara, California, a HUMMINGBIRD SoC, available from SAMSUNG of Seoul, South Korea, an Open Multimedia Application Platform ("OMAP") SoC, available from TEXAS INSTRUMENTS of Dallas, Texas, a customized version of any of the above SoCs, or a proprietary SoC.

The memory components <NUM> include a random access memory ("RAM") <NUM>, a read-only memory ("ROM") <NUM>, an integrated storage memory ("integrated storage") <NUM>, and a removable storage memory ("removable storage") <NUM>. In some configurations, the RAM <NUM> or a portion thereof, the ROM <NUM> or a portion thereof, and/or some combination of the RAM <NUM> and the ROM <NUM> is integrated in the processor <NUM>. In some configurations, the ROM <NUM> is configured to store a firmware, an operating system or a portion thereof (e.g., operating system kernel), and/or a bootloader to load an operating system kernel from the integrated storage <NUM> and/or the removable storage <NUM>.

The integrated storage <NUM> can include a solid-state memory, a hard disk, or a combination of solid-state memory and a hard disk. The integrated storage <NUM> may be soldered or otherwise connected to a logic board upon which the processor <NUM> and other components described herein also may be connected. As such, the integrated storage <NUM> is integrated in the computing device. The integrated storage <NUM> is configured to store an operating system or portions thereof, application programs, data, and other software components described herein.

The removable storage <NUM> can include a solid-state memory, a hard disk, or a combination of solid-state memory and a hard disk. In some configurations, the removable storage <NUM> is provided in lieu of the integrated storage <NUM>. In other configurations, the removable storage <NUM> is provided as additional optional storage. In some configurations, the removable storage <NUM> is logically combined with the integrated storage <NUM> such that the total available storage is made available as a total combined storage capacity. In some configurations, the total combined capacity of the integrated storage <NUM> and the removable storage <NUM> is shown to a user instead of separate storage capacities for the integrated storage <NUM> and the removable storage <NUM>.

The removable storage <NUM> is configured to be inserted into a removable storage memory slot (not shown) or other mechanism by which the removable storage <NUM> is inserted and secured to facilitate a connection over which the removable storage <NUM> can communicate with other components of the computing device, such as the processor <NUM>. The removable storage <NUM> may be embodied in various memory card formats including, but not limited to, PC card, CompactFlash card, memory stick, secure digital ("SD"), miniSD, microSD, universal integrated circuit card ("UICC") (e.g., a subscriber identity module ("SIM") or universal SIM ("USIM")), a proprietary format, or the like.

It can be understood that one or more of the memory components <NUM> can store an operating system. According to various configurations, the operating system may include, but is not limited to, server operating systems such as various forms of UNIX certified by The Open Group and LINUX certified by the Free Software Foundation, or aspects of Software-as-a-Service (SaaS) architectures, such as MICROSFT AZURE from Microsoft Corporation of Redmond, Washington or AWS from Amazon Corporation of Seattle, Washington. The operating system may also include WINDOWS MOBILE OS from Microsoft Corporation of Redmond, Washington, WINDOWS PHONE OS from Microsoft Corporation, WINDOWS from Microsoft Corporation, PALM WEBOS from Hewlett-Packard Company of Palo Alto, California, BLACKBERRY OS from Research In Motion Limited of Waterloo, Ontario, Canada, MAC OS or IOS from Apple Inc. of Cupertino, California, and ANDROID OS from Google Inc. of Mountain View, California. Other operating systems are contemplated.

The network connectivity components <NUM> include a wireless wide area network component ("WWAN component") <NUM>, a wireless local area network component ("WLAN component") <NUM>, and a wireless personal area network component ("WPAN component") <NUM>. The network connectivity components <NUM> facilitate communications to and from the network <NUM> or another network, which may be a WWAN, a WLAN, or a WPAN. Although only the network <NUM> is illustrated, the network connectivity components <NUM> may facilitate simultaneous communication with multiple networks, including the network <NUM> of <FIG>. For example, the network connectivity components <NUM> may facilitate simultaneous communications with multiple networks via one or more of a WWAN, a WLAN, or a WPAN.

The network <NUM> may be or may include a WWAN, such as a mobile telecommunications network utilizing one or more mobile telecommunications technologies to provide voice and/or data services to a computing device utilizing the computing device architecture <NUM> via the WWAN component <NUM>. The mobile telecommunications technologies can include, but are not limited to, Global System for Mobile communications ("GSM"), Code Division Multiple Access ("CDMA") ONE, CDMA7000, Universal Mobile Telecommunications System ("UMTS"), Long Term Evolution ("LTE"), and Worldwide Interoperability for Microwave Access ("WiMAX"). Moreover, the network <NUM> may utilize various channel access methods (which may or may not be used by the aforementioned standards) including, but not limited to, Time Division Multiple Access ("TDMA"), Frequency Division Multiple Access ("FDMA"), CDMA, wideband CDMA ("W-CDMA"), Orthogonal Frequency Division Multiplexing ("OFDM"), Space Division Multiple Access ("SDMA"), and the like. Data communications may be provided using General Packet Radio Service ("GPRS"), Enhanced Data rates for Global Evolution ("EDGE"), the High-Speed Packet Access ("HSPA") protocol family including High-Speed Downlink Packet Access ("HSDPA"), Enhanced Uplink ("EUL") or otherwise termed High-Speed Uplink Packet Access ("HSUPA"), Evolved HSPA ("HSPA+"), LTE, and various other current and future wireless data access standards. The network <NUM> may be configured to provide voice and/or data communications with any combination of the above technologies. The network <NUM> may be configured to or be adapted to provide voice and/or data communications in accordance with future generation technologies.

In some configurations, the WWAN component <NUM> is configured to provide dual- multi-mode connectivity to the network <NUM>. For example, the WWAN component <NUM> may be configured to provide connectivity to the network <NUM>, wherein the network <NUM> provides service via GSM and UMTS technologies, or via some other combination of technologies. Alternatively, multiple WWAN components <NUM> may be utilized to perform such functionality, and/or provide additional functionality to support other non-compatible technologies (i.e., incapable of being supported by a single WWAN component). The WWAN component <NUM> may facilitate similar connectivity to multiple networks (e.g., a UMTS network and an LTE network).

The network <NUM> may be a WLAN operating in accordance with one or more Institute of Electrical and Electronic Engineers ("IEEE") <NUM> standards, such as IEEE <NUM>. 11a, <NUM>. 11b, <NUM>, <NUM>. 11n, and/or future <NUM> standard (referred to herein collectively as WI-FI). Draft <NUM> standards are also contemplated. In some configurations, the WLAN is implemented utilizing one or more wireless WI-FI access points. In some configurations, one or more of the wireless WI-FI access points are another computing device with connectivity to a WWAN that are functioning as a WI-FI hotspot. The WLAN component <NUM> is configured to connect to the network <NUM> via the WI-FI access points. Such connections may be secured via various encryption technologies including, but not limited to, WI-FI Protected Access ("WPA"), WPA2, Wired Equivalent Privacy ("WEP"), and the like.

The network <NUM> may be a WPAN operating in accordance with Infrared Data Association ("IrDA"), BLUETOOTH, wireless Universal Serial Bus ("USB"), Z-Wave, ZIGBEE, or some other short-range wireless technology. In some configurations, the WPAN component <NUM> is configured to facilitate communications with other devices, such as peripherals, computers, or other computing devices via the WPAN.

The sensor components <NUM> include a magnetometer <NUM>, an ambient light sensor <NUM>, a proximity sensor <NUM>, an accelerometer <NUM>, a gyroscope <NUM>, and a Global Positioning System sensor ("GPS sensor") <NUM>. It is contemplated that other sensors, such as, but not limited to, temperature sensors or shock detection sensors, also may be incorporated in the computing device architecture <NUM>.

The I/O components <NUM> include a display <NUM>, a touchscreen <NUM>, a data I/O interface component ("data I/O") <NUM>, an audio I/O interface component ("audio I/O") <NUM>, a video I/O interface component ("video I/O") <NUM>, and a camera <NUM>. In some configurations, the display <NUM> and the touchscreen <NUM> are combined. In some configurations two or more of the data I/O component <NUM>, the audio I/O component <NUM>, and the video I/O component <NUM> are combined. The I/O components <NUM> may include discrete processors configured to support the various interfaces described below, or may include processing functionality built-in to the processor <NUM>.

The illustrated power components <NUM> include one or more batteries <NUM>, which can be connected to a battery gauge <NUM>. The batteries <NUM> may be rechargeable or disposable. Rechargeable battery types include, but are not limited to, lithium polymer, lithium ion, nickel cadmium, and nickel metal hydride. Each of the batteries <NUM> may be made of one or more cells.

The power components <NUM> may also include a power connector, which may be combined with one or more of the aforementioned I/O components <NUM>. The power components <NUM> may interface with an external power system or charging equipment via an I/O component.

Claim 1:
A computer-implemented key management method comprising:
creating a cryptographic key at a key source;
generating a genesis block for a key block-chain ledger corresponding to the cryptographic key;
securely modifying the genesis block to include metadata identifying the key source;
performing a first key transaction with the cryptographic key;
generating a first transaction block corresponding to the first key transaction with the cryptographic key and adding the first transaction block to the key block-chain ledger; and
securely modifying the first transaction block to include metadata describing the first key transaction with the cryptographic key, the metadata including traceability information for the cryptographic key.