PSST Cryptographic Information

PSST II employs known and respect cryptographic ciphers to protect your privacy.

If you want to study the implementation in detail, download the Linux version (which contains the Python source files - exactly the same files as are used to construct the Windows version).

Generally speaking, PSST uses RSA public keys for session key exchange and verifying session key security. The session cipher employed is 256-bit Blowfish, running in Cipher Block Feedback (CFB) mode.

The RSA keys are used with blinding mode, to protect against known plaintext and other attacks where RSA is vulnerable to analysis with small data payloads.

The low level encryption and decryption are performed by the OpenSSL libcrypto library.

Protocol Summary

Here's a quick overview of the key generation, session establishment and authentication that PSST uses:

Why Separate Session Keys - Why not just use Diffie-Hellman?

It occurred to me that if an attacker has archived the raw session traffic, then compromised the private key on one side, they'll gain access to the full session plaintext.

Therefore, I've opted to have two symmetric ciphers per session - one for sending, and one for receiving.

The way the protocol is implemented, if an attacker gains access to your private key, they'll only be able to decrypt data that you've received, but won't be able to decrypt data that you've sent. This could make all the difference in the world.

If you have any suggestions about how this encryption can be even further improved, please get in touch..