PGP Encryption Desktop (Symantec Encryption Desktop) has the ability to generate PGP keys for various purposes. Some keys, such as Additional Decryption Keys, are highly sensitive and there is a need to ensure that not only one individual can use the key to decrypt content. Splitting keys is the main idea behind this, so that in order to use the PGP Key Pair, more than one individual must be present to join the key for decryption.
This article will review how this is done.
WARNING: Splitting keys is a one-time event and the shares can be rejoined only once. If you split a key and rejoin the key, only the shares on the first split will work. If you split a key for the second time, new shares (split a 2nd time) **must** be used. Using shares from a previous splitting operation will not work.
EPG-36076
For example, a key called "ADK Example Org" are split into 3 shares, "Share1-V1", "Share2-V1", and "Share3-V1". Once these shares are used, they are to be considered no longer valid. New shares must be created.
A good way to know if shares have been used, is to keep your own internal records and track these for each rejoin operation. It is highly recommended to record when these sensitive keys are rejoined, not only for auditing purposes, but to know when new shares need to be created and a new split completed.
Taking a file hash of each share is also a good way to know which share goes to what split key.
For example, the "certutil
" application can be used to derive the hash values for each of your split keys, such as the following example:
Note each of the values for the "SHA256" hash:
certutil -hashfile "User1 - 1 Share.shf" sha256
certutil -hashfile "User2 - 1 Share.shf" sha256
certutil -hashfile "User3 - 1 Share.shf" sha256
certutil -hashfile "User4 - 1 Share.shf" sha256
certutil -hashfile "User5 - 1 Share.shf" sha256
Each of these files can be recorded so that when you perform a join operation, you can note which HASH value is associated with the join.
The reason this is important is that the PGP Encryption Desktop client has no indication whether the share files are associated to a particular key.
Also do this for your split key, which you can export into a .asc file and perform a hash operation on it:
certutil -hashfile ADKExample-split-key.asc sha256
Once you join a key, you will see the message below:
"The shared key has been rejoined. All old share files for this key are no longer valid".
Now you can make note in your records the hash values used, and that it was joined. The shares can never be used again to re-join a key and are rendered unusable.
Any private key can be split into shares among multiple shareholders using a cryptographic process known as Blakely-Shamir key splitting. As mentioned, this technique is recommended for extremely high security keys.
When you split a key, the shares are saved as files either encrypted to the public key of a shareholder or encrypted conventionally if the shareholder has no public key. After the key has been split, any attempts to sign or decrypt with it will automatically attempt to rejoin the key.
To Split a PGP Key:
Note: By default, each shareholder is responsible for one share. To increase the number of shares a shareholder controls, click the name in the shareholders list and then use the arrows to adjust the number of shares. |
"The key you are sharing will no longer be able to decrypt or sign without rejoining the required shares. Are you sure you want to do this?"