SSH 키란?

SSH 키는 안전한 인증을 위해 사용되는 암호화된 키 쌍으로, 공개키(공용키)와 비밀키(개인키)로 구성된다. 공개키는 서버에 배포되고 비밀키는 사용자의 로컬 시스템에 안전하게 저장된다. 이 키 쌍을 이용하여 비밀번호 없이 서버에 접속하거나 인증 과정을 간소화할 수 있다.

ssh-keygen 개요

ssh-keygen은 OpenSSH에서 제공하는 SSH 키 생성 도구이다. 사용자는 이 명령어를 통해 RSA, DSA, ECDSA, Ed25519 등 다양한 유형의 암호화 키를 생성할 수 있다. 기본적으로 SSH 프로토콜에서 가장 많이 사용되는 키는 RSA이며, 현재 Ed25519도 널리 사용된다.

ssh-keygen 명령어의 기본 사용법

다음은 가장 기본적인 SSH 키 쌍을 생성하는 명령어 예시이다.

ssh-keygen -t rsa -b 4096

이 명령어는 4096비트의 RSA 키 쌍을 생성한다. 기본적으로 생성된 비밀키는 ~/.ssh/id_rsa 파일에 저장되며, 공개키는 ~/.ssh/id_rsa.pub 파일에 저장된다.

키 생성 옵션

ssh-keygen 명령어에는 다양한 옵션이 존재하며, 그 중 몇 가지 주요 옵션은 다음과 같다:

ssh-keygen -t ed25519 -C "example@domain.com"

이 명령어는 Ed25519 키 쌍을 생성하며, 키에 "example@domain.com"이라는 주석이 추가된다.

RSA 키 생성 원리

RSA 키 쌍은 크게 세 가지 수학적 단계로 생성된다.

1. 두 소수 pq 선택

RSA 알고리즘의 첫 번째 단계는 두 개의 큰 소수 pq를 무작위로 선택하는 것이다. 이러한 소수들은 매우 크며, RSA 키의 보안 강도는 이 소수들의 크기에 크게 의존한다.

2. n 계산

두 소수 pq를 선택한 후, n을 다음과 같이 계산한다:

n = p \times q

n 값은 공개키와 비밀키 모두에서 사용되며, RSA 암호화와 복호화 과정에서 중요한 역할을 한다.

3. 오일러 토션 함수 \phi(n) 계산

오일러의 토션 함수 \phi(n)는 다음과 같이 정의된다:

\phi(n) = (p - 1) \times (q - 1)

이 함수는 공개키와 비밀키를 생성하는 과정에서 사용된다.

4. 공개 지수 e 선택

다음으로, e라고 하는 공개 지수를 선택한다. 이 값은 1 < e < \phi(n)을 만족해야 하며, 보통 e = 65537와 같이 소수로 선택한다. e는 다음 조건을 만족해야 한다:

\gcd(e, \phi(n)) = 1

이 조건은 e\phi(n)이 서로소임을 의미한다.

5. 비밀 지수 d 계산

비밀 지수 d는 모듈로 \phi(n)에 대한 e의 역수로 계산된다. 이는 다음 식을 만족하는 d를 구하는 것이다:

d \times e \equiv 1 \ (\text{mod} \ \phi(n))

즉, d는 다음과 같은 식으로 계산할 수 있다:

d = e^{-1} \ (\text{mod} \ \phi(n))

이때 d는 비밀키의 일부로 사용되며, 공개되지 않는다.

6. 공개키와 비밀키 구성

이제 공개키와 비밀키는 다음과 같이 구성된다:

공개키 (n, e)는 누구나 알 수 있지만, 비밀키 (n, d)는 소유자만이 알고 있어야 한다.

Ed25519 키 생성

최근 들어 많이 사용되는 Ed25519 키는 타원 곡선 암호화(ECC)를 기반으로 하며, RSA보다 더 짧은 키 길이로도 높은 보안성을 제공한다. Ed25519 키는 RSA와 달리 고정된 크기의 키를 생성하며, 매우 빠른 속도로 동작하는 것이 특징이다.

Ed25519 키 쌍을 생성하려면 다음과 같은 명령어를 사용할 수 있다:

ssh-keygen -t ed25519

이 명령어로 생성된 공개키는 ~/.ssh/id_ed25519.pub 파일에 저장되고, 비밀키는 ~/.ssh/id_ed25519 파일에 저장된다.