xpra icon
Bug tracker and wiki

AES Encryption


Use this option if you can securely distribute the AES key to each client.
Xpra's AES encryption layer uses either the pycrypto or the cryptography python library to:

  • encrypt the network packets with AES (Advanced Encryption Standard) CBC mode (Cipher-block chaining)
  • stretch the "passwords" with PBKDF2 (Password-Based Key Derivation Function 2)

The salts used are generated using Python's uuid.uuid4()


The encryption key to use must be specified with the "--encryption-keyfile=FILENAME" command line option or it will fallback to the password from the authentication module in use, which may not be as safe.

The contents of this key are combined with salts to generate the secret used to initialize the AES cipher.


  • server
    xpra start --start=xterm \
        --bind-tcp= \
        --tcp-encryption=AES --tcp-encryption-keyfile=key.txt
  • client:
    xpra attach tcp:$SERVERIP:10000 \
        --tcp-encryption=AES --tcp-encryption-keyfile=./key.txt
Last modified 8 months ago Last modified on 08/09/16 04:18:27