공개키 암호화 시스템 핵심 개념 노트
RSA는 1977년 Rivest, Shamir, Adleman 세 사람이 만든 공개키 암호화 알고리즘입니다.
HTTPS, 디지털 서명, SSH 등 인터넷 보안의 근간이 되는 기술입니다.
n = p × q 계산 → 예: n = 91φ(n) = (p−1)(q−1) 계산 → 예: φ(91) = 72gcd(e, φ(n)) = 1 인 e 선택 → 공개키 지수e × d ≡ 1 (mod φ(n)) 를 만족하는 d 계산 → 개인키 지수| 구분 | 공식 | 사용 키 |
|---|---|---|
| 암호화 | C = Mᵉ mod n | 공개키 (n, e) |
| 복호화 | M = Cᵈ mod n | 개인키 (n, d) |
n은 공개되지만, n에서 p와 q를 역으로 구하는 소인수분해는 현재 컴퓨터로 불가능합니다.
2048비트 RSA 키 기준, 인수분해에 우주 나이보다 긴 시간이 소요됩니다.
실제 키 파일을 열면 Base64로 인코딩된 문자열로 보입니다:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...
-----END PUBLIC KEY-----
이 문자열을 디코딩하면 결국 수천 자리의 정수 (n, e)가 나옵니다.
PEM, DER 등 표준 포맷으로 감싸는 이유는 다루기 편하고 명확한 경계를 표시하기 위해서입니다.
RSA는 두 가지 방향으로 사용할 수 있습니다. 목적이 다르면 키 사용 방향도 반대입니다.
| 구분 | 목적 | 사용 키 | 예시 |
|---|---|---|---|
| 암호화 | 받는 사람만 읽게 | 받는 사람의 공개키로 잠금 → 개인키로 열기 | 철수→영희: 영희 공개키로 암호화 |
| 디지털 서명 | 내가 보냈음을 증명 | 보내는 사람 개인키로 서명 → 공개키로 검증 | 철수→영희: 철수 개인키로 서명 |
RSA는 느리기 때문에 모든 데이터를 직접 암호화하지 않습니다.
양자컴퓨터의 Shor 알고리즘은 소인수분해를 빠르게 풀 수 있어 RSA를 이론적으로 깰 수 있습니다.
현재 NIST를 중심으로 양자내성 암호(Post-Quantum Cryptography) 표준화가 진행 중입니다.
| 개념 | 핵심 한 줄 요약 |
|---|---|
| RSA란 | 큰 수 소인수분해의 어려움을 이용한 공개키 암호화 |
| 공개키 (n, e) | 누구나 알 수 있는 키 — 암호화·서명 검증에 사용 |
| 개인키 (n, d) | 절대 공개하면 안 되는 키 — 복호화·서명 생성에 사용 |
| 암호화 방향 | 받는 사람 공개키 → 받는 사람 개인키 |
| 서명 방향 | 보내는 사람 개인키 → 보내는 사람 공개키 |
| 실제 사용 | HTTPS에서 AES 키 교환, SSH 인증, 이메일 서명 |
| 보안 크기 | 현재 최소 2048비트, 권장 4096비트 |