Constructive Key Management (CKM) is a cryptographic system that constructs keys as needed and immediately destroys them after each use. This method provides greater security than other systems that store keys in public or private directories, or that include the key with the encrypted information.
CKM uses encryption not only to ensure information privacy, but also to provide selective access to information. When encrypting with CKM, users or applications label information with Credentials, defining the rights required to access the information. Users holding matching Credentials will be able to decrypt the information while those who do not will be unable to view the information. For example, a document may be labeled ‘Proprietary’ or ‘Sensitive’, and it may be labeled to require certain other Credentials.
Behind the scenes, each Credential is associated with binary information. Since this binary information becomes a piece of a cryptographic key, it is called a key value or, more simply, just a value. When encrypting, each of these values is combined with other values and random information to construct a key – the Working Key. This Working Key is used with any number of cryptographic algorithms to encrypt the information, and is then destroyed. The same key will never be used again to encrypt other information.
Once encrypted, the information is unreadable until it is decrypted using the same key and the same algorithm. Since CKM immediately destroys the key, it must later reconstruct it to decrypt the information. It does this by using a header that it attaches to the encrypted information, along with data retrieved from the user’s Member Profile.
In the header, CKM includes identifiers to the Credentials applied, but not the actual values. When decrypting, CKM attempts to retrieve the values needed to build the key from the receiver’s set of Credentials. If the receiver holds the appropriate Credentials, CKM will be able to construct the key needed to decrypt the information. If not, the information will remain unreadable. This process is transparent and requires no instructions or intervention from the user.