이 문서에서는 SSH 연결에 양자 후 키 교환 알고리즘을 사용하도록 워크스테이션과 Compute Engine 가상 머신 (VM) 인스턴스를 구성하기 위한 권장사항을 설명합니다.
Compute Engine에서 SSH 연결이 작동하는 방식에 대해 자세히 알아보려면 Linux VM에 대한 SSH 연결을 참고하세요. IAM으로 SSH 액세스를 관리하는 방법을 알아보려면 OS 로그인 정보를 참고하세요.
다음 섹션에서는 SSH 컨텍스트에서 양자 내성 암호화에 대해 설명합니다.
다음 섹션에는 향후 양자 컴퓨팅 위협으로부터 SSH 연결을 보호하는 데 도움이 되는 권장사항이 포함되어 있습니다.
지금 캡처, 나중에 해독 공격의 위협 이해
기존 공개 키 암호화 (예: RSA 및 타원 곡선 암호화)는 이론적으로 양자 컴퓨터의 공격에 취약합니다. 대규모 양자 컴퓨터는 아직 존재하지 않지만, 공격자는 충분한 성능을 갖춘 양자 컴퓨터가 출시되면 복호화할 목적으로 오늘날 암호화된 네트워크 트래픽을 캡처하고 저장할 수 있습니다. 이를 지금 캡처, 나중에 복호화 공격이라고 합니다.
이러한 위협으로부터 보호하기 위해 OpenSSH 및 기타 최신 SSH 클라이언트는 양자 내성 암호 (PQC) 키 교환 방법을 지원합니다. 이러한 메서드는 포스트 퀀텀 알고리즘과 클래식 알고리즘 (예: X25519)을 결합한 하이브리드 키 교환 알고리즘을 사용합니다. 두 알고리즘 중 하나가 안전하게 유지되는 한 세션의 암호화 키는 도청자가 파생할 수 없습니다.
최신 SSH 구현에서는 다음과 같은 하이브리드 양자 내성 키 교환 알고리즘이 지원됩니다.
sntrup761x25519-sha512@openssh.com: 간소화된 NTRU Prime 761과 X25519의 하이브리드입니다. OpenSSH 9.0 이상 및 PuTTY 0.78 이상에서 지원됩니다.mlkem768x25519-sha256: NIST 표준화된 ML-KEM-768(이전 명칭: CRYSTALS-Kyber)과 X25519의 하이브리드입니다. OpenSSH 10.0 이상 및 PuTTY 0.83 이상에서 지원됩니다.mlkem768x25519-sha256은 현재 SSH에 선호되는 양자 후 키 교환 알고리즘입니다.
SSH의 양자 내성 보호 범위 이해
SSH 연결에는 다음 세 가지 암호화 단계가 포함됩니다.
- 키 교환 (
KexAlgorithms): 클라이언트와 서버가 공유 대칭 보안 비밀을 설정합니다. 포스트 퀀텀 키 교환 알고리즘을 사용하면 이 공유 비밀이 퀀텀 컴퓨터의 복호화로부터 보호됩니다. - 사용자 및 호스트 인증: 클라이언트가 서버 호스트 키를 확인하고 서버가 사용자의 SSH 키 또는 인증서를 확인합니다. 표준 OpenSSH는 아직 사용자 인증에 양자 후 서명 알고리즘을 사용하지 않지만, 인증은 키 교환으로 설정된 암호화된 채널 내부에서 발생하므로 사용자 인증 정보와 호스트 키는 소급 복호화로부터 보호됩니다.
- 세션 데이터 암호화 (
Ciphers): 키가 교환되면 대칭 암호 (예:aes256-gcm@openssh.com또는chacha20-poly1305@openssh.com)를 사용하여 세션이 암호화됩니다. 대칭 암호는 비대칭 (키 교환) 암호와 달리 양자 컴퓨팅 공격에 취약하지 않습니다.
알고리즘 협상 작동 방식
SSH 연결 핸드셰이크 중에 클라이언트는 지원하는 키 교환 알고리즘의 순서가 지정된 목록을 전송합니다. 서버는 클라이언트의 목록을 자체 지원 알고리즘과 비교하고 서버도 지원하는 클라이언트 목록의 첫 번째 알고리즘을 선택합니다.
클라이언트가 선호도 순서를 결정하므로 워크스테이션 클라이언트가 양자 내성 알고리즘을 선호하도록 구성하면 대상 VM이 지원할 때마다 양자 내성 키 교환이 사용됩니다.
SSH 클라이언트 구성
워크스테이션에서 SSH 클라이언트를 구성하여 양자 후 키 교환 알고리즘에 우선순위를 지정하거나 이를 적용합니다. 선호하는 클라이언트 도구에 해당하는 단계를 완료합니다.
콘솔
브라우저 내 SSH ( Google Cloud 콘솔에 내장됨)는 양자 내성 키 교환 알고리즘을 자동으로 지원하고 선호합니다.
브라우저에서 SSH를 사용하여 VM에 연결하는 경우 워크스테이션에서 설정을 구성할 필요가 없습니다. 타겟 VM이 양자 내성 알고리즘을 지원하는 경우 브라우저에서 SSH는 자동으로 양자 내성 키 교환을 협상합니다.
브라우저에서 SSH를 통해 연결하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
VM 인스턴스 목록에서 연결할 VM 행의 SSH를 클릭합니다.
gcloud
gcloud CLI (gcloud compute ssh)는 로컬 워크스테이션에 설치된 OpenSSH 클라이언트를 사용합니다.
워크스테이션에 OpenSSH 9.0 이상이 설치되어 있는지 확인합니다.
ssh -VOpenSSH 버전이 9.0 이전인 경우 운영체제의 패키지 관리자를 사용하여 OpenSSH를 업그레이드합니다.
워크스테이션에서 OpenSSH 9.0 이상을 실행하면 OpenSSH에 기본 알고리즘 목록에 포스트 퀀텀 키 교환이 포함됩니다. 호환되는 VM에 연결하면 연결에서 추가 플래그 없이 포스트 퀀텀 키 교환을 협상합니다.
gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var>다음을 바꿉니다.
<var>VM_NAME</var>: 연결할 VM의 이름<var>ZONE</var>: VM이 있는 영역입니다.
OpenSSH 클라이언트
Linux, macOS 또는 Windows에서 표준 OpenSSH 클라이언트 (ssh)를 사용하는 경우 다음 단계를 따르세요.
로컬 OpenSSH 클라이언트 버전이 9.0 이상인지 확인합니다.
ssh -V사용자 SSH 구성 파일 (Linux 및 macOS의 경우
~/.ssh/config, Windows의 경우%USERPROFILE%\.ssh\config)을 열거나 만듭니다.KexAlgorithms지시어를 추가하거나 업데이트합니다.클래식 대체 허용 시 포스트 퀀텀 알고리즘 우선순위 지정 (권장): 다음 구성을 추가합니다.
KexAlgorithms ^mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,diffie-hellman-group-exchange-sha256양자 내성 알고리즘을 엄격하게 적용하고 클래식 연결을 거부하려면 양자 내성 알고리즘만 지정하세요.
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com
SSH를 사용하여 VM에 연결합니다.
ssh -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>다음을 바꿉니다.
<var>PATH_TO_PRIVATE_KEY</var>: 비공개 SSH 키의 경로입니다.<var>USERNAME</var>: 사용자 이름 (예: OS 로그인 사용자 이름)입니다.<var>EXTERNAL_IP</var>: VM의 외부 IP 주소
PuTTY 앱
Windows에서 PuTTY를 사용하여 VM에 연결하는 경우 다음 단계를 따르세요.
PuTTY 버전 0.78 이상 (또는 ML-KEM 지원의 경우 버전 0.83 이상)을 실행해야 합니다. 버전을 확인하려면 PuTTY를 열고 정보를 클릭합니다. 필요한 경우 PuTTY 다운로드 페이지에서 최신 버전을 다운로드합니다.
Putty를 엽니다.
카테고리 창에서 연결 > SSH > Kex로 이동합니다.
알고리즘 선택 정책 목록에서 양자 후 알고리즘을 찾습니다.
- NTRU Prime / Curve25519 하이브리드 kex (PuTTY 0.78 이상에서 사용 가능)
- ML-KEM / Curve25519 하이브리드 kex (PuTTY 0.83 이상에서 사용 가능)
양자 후 알고리즘을 선택하고 클래식 Diffie-Hellman 및 ECDH 알고리즘 위 목록의 상단에 도달할 때까지 위로를 클릭합니다.
(선택사항) 양자 후 알고리즘을 엄격하게 적용하려면 각 기존 알고리즘을 선택하고 -- 여기 아래 경고 -- 또는 -- 여기 아래 사용 안 함 -- 구분선 아래에 올 때까지 아래로를 클릭합니다.
카테고리 창에서 세션을 클릭합니다.
저장된 세션에서 세션 이름을 선택하고 저장을 클릭하여 알고리즘 환경설정을 유지합니다.
열기를 클릭하여 VM에 연결합니다.
VM 구성
양자 내성 키 교환 알고리즘을 사용하려면 VM의 운영체제와 SSH 데몬이 이를 지원해야 합니다. 구성을 변경하기 전에 호환되는 운영체제를 검토하고 기본 동작을 이해하세요.
호환되는 운영체제
양자 내성 키 교환을 지원하려면 VM에서 OpenSSH 9.0 이상이 포함된 운영체제를 실행해야 합니다. Compute Engine에서 사용할 수 있는 다음 공개 Linux 이미지에는 OpenSSH 9.0 이상이 포함되어 있습니다.
- Debian: Debian 12 (Bookworm) 이상
- Ubuntu: Ubuntu 24.04 LTS (Noble Numbat) 이상
- Fedora: Fedora 39 이상
- Container-Optimized OS: 마일스톤 109 이상
- Rocky Linux / AlmaLinux: 버전 10 이상
이전 운영체제 출시 (예: Ubuntu 22.04 LTS, Debian 11, RHEL 9)에는 기본적으로 9.0 이전 버전의 OpenSSH가 포함되어 있으며 양자 후 키 교환을 지원하지 않습니다.
기본 동작
VM에서 OpenSSH 9.0 이상의 운영체제를 실행하는 경우 OpenSSH 서버 (sshd)는 기본적으로 sntrup761x25519-sha512@openssh.com를 지원합니다. OpenSSH 10.0 이상을 실행하는 VM도 기본적으로 mlkem768x25519-sha256를 지원합니다.
기본적으로 VM 구성을 변경할 필요가 없습니다. 양자 내성 기능이 있는 클라이언트가 연결되면 VM이 자동으로 양자 내성 키 교환을 협상합니다. 동시에 VM은 클래식 알고리즘만 지원하는 클라이언트의 연결을 계속 수락합니다.
양자 내성 알고리즘을 엄격하게 요구
조직에서 모든 SSH 세션에 포스트 퀀텀 키 교환이 필요한 경우 포스트 퀀텀 키 교환 알고리즘만 허용하도록 VM의 SSH 데몬을 구성할 수 있습니다.
VM에서 양자 내성 알고리즘을 엄격하게 요구하려면 다음 단계를 따르세요.
SSH를 사용하여 VM에 연결합니다.
/etc/ssh/sshd_config.d/에 드롭인 구성 파일을 만듭니다.sudo bash -c 'cat << 'EOF' > /etc/ssh/sshd_config.d/99-post-quantum-kex.conf # Require post-quantum key exchange algorithms only KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com EOF'SSH 데몬 구성에 구문 오류가 있는지 테스트합니다.
sudo sshd -t명령어에서 오류가 발생하면 계속하기 전에 구성 파일을 확인하세요.
활성 세션을 삭제하지 않고 변경사항을 적용하려면 SSH 데몬을 다시 로드합니다.
sudo systemctl reload sshdLinux 배포판에서
ssh를 서비스 이름으로 사용하는 경우 대신sudo systemctl reload ssh를 실행합니다.현재 터미널 창을 열어 두고 새 터미널 창을 열어 VM에 연결되는지 테스트합니다. 새 연결이 성공하면 VM이 양자 후 알고리즘을 요구하도록 성공적으로 구성된 것입니다.
SSH 잠금에서 복구
양자 후 알고리즘을 엄격하게 요구하도록 VM을 구성했는데 클라이언트가 필요한 알고리즘을 지원하지 않아 잠긴 경우 다음 복구 옵션 중 하나를 사용하세요.
- 브라우저에서 SSH를 통해 연결 사용: Google Cloud 콘솔을 열고 브라우저에서 SSH를 통해 연결을 사용하여 연결합니다. 브라우저에서 SSH를 통해 연결하는 기능은 양자 내성 키 교환을 지원하며 VM에 양자 내성 알고리즘이 엄격하게 요구되는 경우에도 연결할 수 있습니다.
연결되면
/etc/ssh/sshd_config.d/99-post-quantum-kex.conf을 삭제하거나 수정하고sshd을 다시 로드합니다. - 가상 직렬 콘솔 사용: 특별 관리 콘솔 (SAC) 또는 직렬 콘솔을 사용하여 VM에 연결합니다.
사용자 인증 정보로 로그인하고 구성 파일을 삭제한 후
sshd을 다시 로드합니다. - 시작 스크립트 사용: 대화형 액세스를 사용할 수 없는 경우 다음 단계를 따르세요.
- Google Cloud 콘솔에서 VM을 중지합니다.
- VM 메타데이터를 수정하여 이전에 만든
/etc/ssh/sshd_config.d/99-post-quantum-kex.conf구성 파일을 삭제하고 SSH 서버 데몬을 다시 시작하는 시작 스크립트를 추가합니다.startup-script:rm -f /etc/ssh/sshd_config.d/99-post-quantum-kex.conf && (systemctl reload ssh || systemctl reload sshd) - VM을 시작합니다. 시작 스크립트는 루트로 실행되고 클래식 호환성을 복원합니다.
- 액세스 권한을 복구한 후 메타데이터에서 시작 스크립트를 삭제합니다.
협상된 키 교환 알고리즘 확인
활성 SSH 연결이 양자 내성 키 교환 알고리즘을 사용하고 있는지 확인하려면 클라이언트에서 연결 세부정보를 확인하세요.
OpenSSH 또는 gcloud CLI를 사용하여 확인
-v 플래그를 사용하여 자세한 출력이 사용 설정된 VM에 연결합니다.
OpenSSH 사용:
ssh -v -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>gcloud CLI 사용:
gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var> -- -v
연결 설정 중에 터미널 출력을 검사합니다. kex: algorithm 줄을 찾습니다.
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
또는
debug1: kex: algorithm: mlkem768x25519-sha256
출력에 sntrup761x25519-sha512 또는 mlkem768x25519-sha256가 나열되면 연결이 양자 내성 키 교환으로 보호됩니다. curve25519-sha256 또는 ecdh-sha2-nistp256과 같은 알고리즘이 나열되면 연결에서 기존 키 교환을 사용하고 있으며 여전히 '지금 캡처, 나중에 복호화' 공격에 취약합니다.
PuTTY를 사용하여 확인
- PuTTY에서 VM에 연결합니다.
- PuTTY 창 제목 표시줄을 마우스 오른쪽 버튼으로 클릭하고 이벤트 로그를 선택합니다.
- PuTTY 이벤트 로그 창에서 키 교환 알고리즘을 나타내는 줄을 찾습니다.
Using NTRU Prime / Curve25519 hybrid key exchangeUsing ML-KEM / Curve25519 hybrid key exchange
다음 단계
- Linux VM에 대한 SSH 연결에 대해 자세히 알아보세요.
- SSH 액세스 보안 권장사항을 검토합니다.
- 보안 키로 SSH 사용자 인증 정보를 보호하는 방법을 알아보세요.
- 브라우저에서 SSH를 통해 연결 기능 및 구성에 대해 알아봅니다.