Adobe made a bit of a blunder last week when it was discovered that its product security incident response team (PSIRT) accidentally posted the private key for PGP decryption to its blog.
To understand what happened, we first have to understand what a PGP private key is.
PGP is a method to encrypt and/or digitally sign email messages. To receive encrypted email messages, a user first generates a PGP public/private key pair. The public key gets posted on the web somewhere, e.g. in various PGP key stores which exist. The private key is kept private (or that is the idea). Once this is done, there are various plugins to all the known email clients (web based such as GMail, Office 365, application based such as Thunderbird, and even mobile applications such as K9) which allow one to then send and receive encrypted emails. You can only send an encrypted email to someone for whom you know their public key, and any email sent to you is decryptable by your private key.
Now, these public and private keys essentially just look like a string of random letters and numbers when written in a human readable form. One often wants to post the human readable public key on the web, so people can send you encrypted emails. But as humans are prone to human error, both look kind of similar and so it is not surprising that sometimes people post the human readable private key, instead of the public key.
A major issue with PGP is that it is not very user friendly, the basic design is after all many decades old, and so usage mistakes are easy to make. However, it also points out a fundamental issue in cryptographic security; namely key control.
In high value systems one never allows a human to have access to the private key. For example in your chip-and-PIN care you never have access to the underlying private key embedded in the chip.
However, in many situations such hardware control of a private key is impossible to obtain and one needs software based defenses to protect private keys. This is where Unbound’s unique vHSM technology (based on Multiparty Computation) can help protect and control your keys. By splitting the key into multiple parts and never bringing them back together, one can distribute security and control over many points in the system.