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 to Join a key that has been split up into 4 parts.
For more information on how to split the key, see the following article:
180242 - HOW TO: Split PGP Keys in Symantec Encryption Desktop 10.X for Windows
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.
Once a key is split among multiple shareholders, attempting to sign or decrypt with it causes PGP Encryption Desktop to attempt to rejoin the key automatically. There are two ways to rejoin the key: locally and remotely
Locally:
Rejoining key shares locally requires the shareholders presence at the rejoining computer. Each shareholder is required to enter the passphrase for their key share.
Note: If you elected to temporarily rejoin the key in order to decrypt or sign, the file is signed or decrypted with the split key and the rejoined key is discarded. If you elected to permanently rejoin the key, the key is saved as a fully rejoined key (and is no longer split). |
Remotely:
Rejoining key shares remotely requires the remote shareholders to authenticate and decrypt their keys before sending them over the network. The PGP Desktop Transport Layer Security (TLS) feature provides a secure link to transmit key shares, allowing multiple individuals in distant locations to securely sign or decrypt with their key share.
To collect key shares over the network, make sure the remote shareholders have PGP Encryption Desktop installed and are prepared to send their key share file. Remote shareholders must have:
Caution: If you have not signed the key that is being used to authenticate the remote system, the key is considered invalid. Although you can rejoin the split key with an invalid authenticating key, it is not recommended. You should verify each shareholders fingerprint and sign each shareholders public key to ensure that the authenticating key is legitimate. |
Troubleshooting:
Key cannot be rejoined and receive the following error:
"The passphrase formed by the collected shares is not able to unlock the key."
Even if the dialog box accepts the passphrase for each share that was used to split, the split key cannot be rejoined more than once:
The above key was split and shared for User1, User2, User3, User4, and User5.
Now if the key was joined, but then split again, the shares will no longer work.
For example, we will split ADKExample again and this time, the shares will be called:
User6, User7, User8, User9, and User10
Now we will attempt to join the key with the previous shared files, "User1, User2, and User3":
You can see that each share, the user entered the passphrase properly and was accepted.
This does not indicate the join will work if the shares were for a previous split.
In this case, the shares do not match, and the following shows up (because only User6 through User10 will work):
"The passphrase formed by the collected share is not able to unlock the key."
This is why it is important to take hashes of the files as well as a hash of the key that was split.
It is possible to export the split key into the .asc format and that key can be rejoined multiple times, but only when imported anew.
Important Note: Look for additional copies of your split key in .asc format and re-import into the PGP Encryption Desktop client.
These exported .asc files can still be unlocked with old shares, so be sure to try all your split keys you have previously exported!
For further guidance, reach out to Symantec Encryption Support.