공개키·개인키 쌍은 어떻게 생성되나요?
공개키(public key)를 만들려면 반드시 개인키(private key)가 함께 생성되어야 합니다. 두 키는 모두 매우 큰 비밀 소수(prime number)를 기반으로 하며, 특히 개인키 안에는 두 개의 거대한 비밀 소수가 담겨 있습니다.
네트워크 보안에서 공개키와 개인키란?
공개키는 평문(plain text)을 암호문(cipher text)으로 변환하는 데 사용됩니다. 반면 개인키는 수신자가 암호문을 다시 평문으로 복호화하여 내용을 읽을 때 쓰입니다. 개인키 암호 방식에서는 하나의 키가 비밀로 유지되며, 공개키 암호 방식에서는 두 키 중 하나만 비밀로 관리됩니다.
공개키와 개인키의 작동 원리
공개키 암호학에서는 하나의 공개키에 하나의 개인키가 짝을 이룹니다. 메시지는 이 두 키를 통해 암호화·복호화되며, 누군가의 공개키로 암호화된 메시지는 오직 그 사람의 개인키로만 해독할 수 있습니다. 공개키와 개인키를 모두 활용하는 이 체계는 '비대칭 암호화(asymmetric cryptography)'라고도 불립니다.
개인키로부터 공개키는 어떻게 만들어질까요?
공개키는 일반적으로 디지털 인증서 형태로 누구나 열람할 수 있습니다. 발신자는 수신자의 공개키로 데이터를 암호화하고, 해당 데이터는 개인키를 가진 사람만 복호화할 수 있습니다. 키 생성 시에는 난수 생성기(RNG)와 의사난수 생성기(PRNG)를 활용해 사전에 예측할 수 없는 무작위성을 확보합니다.
개인-공개 키 쌍이란 무엇인가요?
RSA 공개키 알고리즘에서는 한 쌍의 공개키/개인키가 사용됩니다. 메시지를 암호화할 때는 공개키를, 복호화할 때는 개인키를 사용하며, 이 과정을 뒤집으면 디지털 서명을 만들 수 있습니다. 공개키는 모두가 알 수 있지만, 개인키는 오직 소유자만 알고 있어야 합니다.
Windows에서 PuTTYgen으로 키 쌍 생성하기
먼저 PuTTYgen 프로그램을 실행합니다. 키 유형(Type of key) 옵션을 SSH-2 RSA로 설정하면 RSA 키를 생성할 수 있으며, 2048비트 키를 만들려면 'Number of bits' 입력란에 2048을 입력한 뒤 키를 생성하면 됩니다.
PuTTYgen으로 SSH 공개키 생성하기
PuTTYgen이 열리면 SSH-2 RSA 알고리즘으로 키를 생성할 수 있습니다. 'Generate' 버튼을 클릭한 후 진행 표시줄 아래 영역에서 마우스를 움직여 생성을 진행하고, 'Key passphrase' 필드에 암호 문구(passphrase)를 입력합니다. 마지막으로 'Save private key'를 클릭하면 개인키가 저장됩니다.
명령줄 환경에서 키 쌍 만들기
키 생성 프로그램이 실행되면 키 파일의 저장 경로를 지정할 수 있습니다. 키 사용 시 암호 문구를 입력하고, 확인을 위해 한 번 더 입력합니다. 생성 결과를 확인한 뒤 공개키를 복사하여 $HOME/.ssh 디렉터리에 추가하면 바로 사용할 수 있습니다.
공개키와 개인키 쌍 확인 방법
OpenSSL 명령어로 두 키의 일치 여부를 검증할 수 있습니다. 공개 인증서에는 openssl -noout -modulus -in *public.crt를, 개인키에는 openssl rsa -noout -modulus -in *private.key | openssl md5 > /tmp/key.pub를 실행한 후, 각 결과 파일(/tmp/crt.pub와 /tmp/key.pub)을 비교하면 됩니다.
SSH 키 이해하기
내 SSH 공개키란 무엇인가요?
서버는 공개키를 통해 SSH 키 인증을 수행합니다. SSH로 서버에 로그인을 시도하면 공개키와 개인키가 서로 대조되며, 두 키가 일치하면 시스템에 접근할 수 있습니다.
SSH 키는 공개키일까요, 개인키일까요?
SSH 키 쌍은 서로 연관된 두 개의 키, 즉 공개키와 개인키로 구성됩니다. 이 두 키가 함께 자격 증명(credential)의 기반이 되는 키 쌍을 이루며, 개인키는 반드시 암호화하여 안전하게 보관해야 합니다.
SSH 공개키를 보내도 안전한가요?
네, 안전합니다. 공개키는 이름 그대로 공개적으로 사용하기 위해 설계된 것이기 때문입니다. 굳이 공유할 필요는 없지만, 필요하다면 자유롭게 배포해도 보안상 문제가 없습니다.
예시로 보는 공개키 vs 개인키
개인키: 두 당사자 간에만 비밀리에 사용되며, 키가 분실되면 시스템 전체가 무효화될 위험이 있습니다.
공개키: 공개된 디렉터리를 통해 누구나 접근할 수 있으며, 이미 공개된 정보이므로 분실 우려가 없습니다.
공개키에서 개인키를 만들 수 있나요?
PuTTYgen을 사용하면 개인키에서 공개키를 도출할 수 있지만, 그 반대는 불가능합니다. 만약 공개키만으로 개인키를 만들 수 있다면 RSA 알고리즘은 무용지물이 되고, 시스템 전체가 심각한 보안 위협에 노출될 것입니다.
공개키와 개인키의 역할과 관계
두 개의 키 중 하나는 데이터를 암호화하는 데, 다른 하나는 복호화하는 데 사용됩니다. 암호화에는 공개키를 사용하고, 개인키는 철저히 비밀로 유지되어야 합니다. 개인키는 사용자의 장치에 저장되어 데이터 복호화에 활용되며, 공개키로 암호화된 데이터는 오직 짝을 이루는 개인키로만 해독할 수 있습니다.