Про SSL (и TLS) известно, что асимметричная (public-key) криптография используется лишь на этапе handshake — клиент подписывает публичным ключом сервера случайно сгенерированный (симметричный) ключ сессии, и, когда этот ключ безопасно передаётся на сервер, то уже в полный рост идёт шифрование данных каким-нибудь AES256 или, прости господи, 3DES.
Это легко проверить:
$ curl -iv https://linux.org.ru 2>&1 | grep AES
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
$ openssl s_client -connect linux.org.ru:443 -prexit 2>&1 | grep -Ei '(aes|3des|fish)'
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Ровно так же работает и PGP — сообщение шифруется «ключом сессии», а сам ключ сессии шифруется публичным ключом адресата и отправляется вместе с письмом.
Читаю документацию по SSH — и не нахожу ничего подобного, хотя симметричные шифры (AES, 3DES, ARCFOUR, twofish, serpent, blowfish) вроде упоминаются.
В выводе ssh -v
тоже ничего, что напоминало бы о симметричных шифрах:
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:...
debug1: Host '...' is known and matches the ECDSA host key.
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: Offering RSA public key: ...
debug1: Server accepts key: pkalg ssh-rsa blen 535
Вопрос: использует ли SSH симметричную криптографию, или же всё время идёт шифрование с публичным ключом?