Skip to content

Supported Ciphers

ZestSSH supports the following symmetric encryption algorithms for the SSH transport layer. During the SSH handshake, the client and server negotiate the strongest mutually supported cipher.

Algorithms are listed in ZestSSH’s preference order (most preferred first).

AEAD (Authenticated Encryption with Associated Data) ciphers provide both encryption and integrity protection in a single operation, eliminating the need for a separate MAC algorithm.

PropertyValue
AlgorithmChaCha20 stream cipher + Poly1305 MAC
Key Size512 bits (two 256-bit keys)
Nonce8 bytes (derived from packet sequence number)
Tag Size16 bytes
Block Size8 bytes
AEADYes

The recommended cipher. Uses two separate 256-bit keys: one for encrypting the packet payload and one for encrypting the packet length separately. This is an OpenSSH extension that has become the de facto standard for modern SSH.

ChaCha20-Poly1305 is constant-time on all platforms and does not require hardware AES acceleration, making it consistently fast on mobile devices and ARM servers.

PropertyValue
AlgorithmAES-256 in Galois/Counter Mode
Key Size256 bits
IV Size12 bytes
Tag Size16 bytes
Block Size16 bytes
AEADYes

AES-256-GCM provides strong authenticated encryption. Performance is excellent on hardware with AES-NI instructions (most modern x86 processors). On ARM devices without hardware AES, ChaCha20 may be faster.

PropertyValue
AlgorithmAES-128 in Galois/Counter Mode
Key Size128 bits
IV Size12 bytes
Tag Size16 bytes
Block Size16 bytes
AEADYes

Same as AES-256-GCM but with a 128-bit key. Still considered secure for all practical purposes. Slightly faster than AES-256 due to fewer key expansion rounds.

Counter mode ciphers provide encryption but require a separate MAC algorithm (typically HMAC-SHA2-256) for integrity protection.

PropertyValue
AlgorithmAES-128 in Counter Mode
Key Size128 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

Widely supported and secure. CTR mode turns AES into a stream cipher, avoiding the padding issues of CBC mode.

PropertyValue
AlgorithmAES-192 in Counter Mode
Key Size192 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

192-bit variant. Less commonly used than 128 or 256, but fully supported.

PropertyValue
AlgorithmAES-256 in Counter Mode
Key Size256 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

256-bit variant. Use when connecting to servers that do not support AEAD ciphers.

CBC (Cipher Block Chaining) mode ciphers are supported for compatibility with older servers. CTR or AEAD ciphers are preferred when available.

PropertyValue
AlgorithmAES-128 in Cipher Block Chaining Mode
Key Size128 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

Legacy cipher. Vulnerable to the SSH CBC plaintext recovery attack (CVE-2008-5161) in theory, though exploitation in practice is difficult. Use CTR mode when possible.

PropertyValue
AlgorithmAES-192 in Cipher Block Chaining Mode
Key Size192 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

192-bit CBC variant. Same caveats as aes128-cbc.

PropertyValue
AlgorithmAES-256 in Cipher Block Chaining Mode
Key Size256 bits
IV Size16 bytes
Block Size16 bytes
AEADNo

256-bit CBC variant. Same caveats as aes128-cbc.

The following ciphers are intentionally not supported:

CipherReason
3des-cbcInsecure, small block size (64-bit), slow
arcfour / arcfour128 / arcfour256RC4 is cryptographically broken
blowfish-cbc64-bit block size, deprecated
cast128-cbc64-bit block size, deprecated
noneDisabling encryption entirely is a security risk

ZestSSH offers its supported ciphers to the server in the order listed above. The first cipher supported by both sides is selected. If you are having trouble connecting to a server, check which ciphers the server supports:

Terminal window
ssh -Q cipher # on the server

If the server only supports legacy ciphers not in ZestSSH’s list (e.g. 3des-cbc), you will need to update the server’s SSH configuration to enable at least one modern cipher.