Używamy algorytmów postkwantowych w OpenSSH
Napisał: Patryk Krawaczyński
Dzisiaj w Bezpieczeństwo Brak komentarzy. (artykuł nr 936, ilość słów: 345)
U
sługa SSH od wersji 9.0 (kwiecień 2022 roku) wprowadziła algorytm wymiany kluczy (KEX), między klientem a serwerem, który uważany jest za bezpieczny przed atakami ze strony komputerów kwantowych. Głównie chodzi o atak „zbieraj teraz, odszyfruj później” (ang. harvest now, decrypt later), w którym atakujący może złamać proces wymiany kluczy, aby odszyfrować i wyświetlić całą sesję połączenia SSH. Atak ten nie musi być przeprowadzany w czasie rzeczywistym; może opierać się na nagrywaniu ruchu sieciowego podatnych, zaszyfrowanych sesji SSH, a następnie ich odszyfrowaniu w późniejszym czasie (po uzyskaniu dostępu do komputera kwantowego). Algorytm, o którym mowa to sntrup761x25519-sha512@openssh.com – jest on oparty na NTRU Prime, połączony z tradycyjnym X25519. Daje to hybrydowe podejście: system jest bezpieczny, dopóki chociaż jeden z tych algorytmów pozostaje nie do złamania.
W wersji 9.9 OpenSSH został dodany drugi postkwantowy algorytm wymiany klucza: mlkem768x25519-sha256
i stał się on domyślnie używanym od wersji 10.0 (kwiecień 2025 roku). Aby zachęcić użytkowników do migracji na silniejsze algorytmy również od wersji OpenSSH 10.1 będzie wyświetlane ostrzeżenie, gdy wymiana klucza będzie realizowana innym algorytmem niż postkwantowy:
** WARNING: connection is not using a post-quantum key exchange algorithm. ** This session may be vulnerable to "store now, decrypt later" attacks. ** The server may need to be upgraded. See https://openssh.com/pq.html
W celu sprawdzenia, czy nasz klient SSH obsługuje w/w algorytmy wystarczy wydać polecenie:
agresor@darkstar:~$ ssh -Q KexAlgorithms diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group14-sha256 diffie-hellman-group16-sha512 diffie-hellman-group18-sha512 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256 curve25519-sha256@libssh.org sntrup761x25519-sha512 sntrup761x25519-sha512@openssh.com mlkem768x25519-sha256
W jakiej kolejności zostaną użyte wspomniane algorytmy przy połączeniu np. z adresem localhost możemy sprawdzić za pomocą:
agresor@darkstar:~$ ssh -G localhost | egrep ^kexalgorithms kexalgorithms mlkem768x25519-sha256,sntrup761x25519-sha512, sntrup761x25519-sha512@openssh.com,curve25519-sha256, curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384, ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512,diffie-hellman-group18-sha512, diffie-hellman-group14-sha256
Polecenie sprawdzające aktualną konfigurację serwera jest podobne:
agresor@darkstar:~$ sshd -T | egrep ^kexalgorithms kexalgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256, curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384, ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512,diffie-hellman-group18-sha512, diffie-hellman-group14-sha256
Aby sprawdzić, jakiego algorytmu wymiany klucza używa OpenSSH podczas rzeczywistej sesji, uruchamiamy połączenie w „gadatliwej” wersji i szukamy informacji odnośnie informacji o KEX (ang. Key Exchange):
agresor@darkstar:~$ ssh -v stardust.nfsec.pl exit 2>&1 | grep 'kex: algorithm:' debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
Wymuszenie użycia konkretnych algorytmów od strony klienta (ssh_config
), jak i serwera (sshd_config
) możemy wymusić za pomocą opcji: KexAlgorithms
.
Więcej informacji: OpenSSH Post-Quantum Cryptography, Post-quantum security for SSH access on GitHub, Post-Quantum Cryptography
Poprzedni wpis Brak nowszych postów