테마
04. 비대칭키 암호
학습 목표
- 비대칭키(Asymmetric Key) 암호의 원리를 설명할 수 있다.
- **공개키(Public Key)**와 **개인키(Private Key)**의 역할을 구분할 수 있다.
- 모듈러 거듭제곱 예시로 비대칭키의 동작을 직관적으로 이해한다.
- 대칭키와 비대칭키의 효율 차이를 설명할 수 있다.
- PKI(Public Key Infrastructure)의 기본 개념을 파악한다.
전체 구조
1. 비대칭키란?
핵심 개념
비대칭키 암호는 키가 2개다. 이 두 키는 **한 쌍(pair)**으로 작동한다.
- 공개키(Public Key): 바깥에 공개하는 키
- 개인키(Private Key): 나만 갖고 있는 키
가장 중요한 규칙
한쪽 키로 암호화하면, 쌍을 이루는 다른 키로만 복호화할 수 있다.
이것만 외우면 비대칭키의 90%를 이해한 것이다.
2. 모듈러 거듭제곱으로 이해하기
실제 계산 예시
비대칭키가 수학적으로 어떻게 작동하는지 간단한 예시로 보자.
설정:
- 공개키(Public Key): 5
- 개인키(Private Key): 29
- 모듈러스(Modulus): 323 (공개됨)
암호화할 대상: 대문자 A (ASCII = 65)
계산 과정 상세
| 단계 | 계산 | 결과 |
|---|---|---|
| 평문 | A의 ASCII 코드 | 65 |
| 암호화 | 65^5 mod 323 | 12 (암호문) |
| 복호화 | 12^29 mod 323 | 65 (평문 복원!) |
여기서 5와 29가 키 쌍이다. 반대로 29로 암호화하고 5로 복호화해도 된다.
왜 안전한가: "큰 수"의 힘
12^29를 계산하면 어마어마하게 큰 수가 나온다. 이 숫자 자체가 보안의 핵심이다.
소수(Prime Number)의 역할
위 예시에서 5, 29, 323은 모두 특별한 숫자다.
- 5는 소수
- 29는 소수
- 323 = 17 × 19 (두 소수의 곱)
비대칭키에서는 소수가 핵심이다. 큰 소수 두 개를 곱하면 그 결과에서 원래 소수를 찾아내기 매우 어렵다. 이것이 RSA의 보안 기반이다.
3. 대표 비대칭키 알고리즘
| 알고리즘 | 원리 | 키 길이 | 특징 |
|---|---|---|---|
| RSA | 큰 소수의 곱 분해 어려움 | 2048~4096비트 | 가장 널리 사용 |
| ECC | 타원곡선 이산 로그 어려움 | 256~384비트 | 짧은 키로 동등 보안 |
4. 대칭키 vs 비대칭키 비교
이것이 이 장의 핵심 비교표다. 반드시 외워야 한다.
| 항목 | 대칭키 | 비대칭키 |
|---|---|---|
| 키 개수 | 1개 | 2개 (한 쌍) |
| 효율 | 높음 (빠름) | 낮음 (느림) |
| 키 길이 | 짧음 (128비트) | 길음 (2048비트) |
| 비슷한 보안성 | AES-128 | RSA-2048 |
| 주 용도 | 데이터 암/복호화 | 키 교환, 서명, 인증 |
| 키 전달 | 안전한 전달 방법 필요 | 공개키는 자유롭게 배포 |
| 인터넷 환경 | 키 전달 문제 | 공개키 배포로 해결 |
효율 차이의 현실적 의미
AES-128과 RSA-2048은 비슷한 보안성을 제공한다. 하지만:
- AES-128: 키 길이 128비트, 연산 빠름
- RSA-2048: 키 길이 2048비트, 연산 느림
RSA는 AES보다 키가 16배 길지만 보안성은 비슷하다. 그만큼 연산을 많이 하고 CPU를 많이 쓴다.
암기 포인트: 둘 중 아무거나 써도 된다면, 무조건 대칭키를 써라. 효율이 압도적으로 좋다.
5. 키 생성 비용
비대칭키 쌍을 생성하는 것은 시간과 자원이 많이 든다.
- 인텔 i7 기준, RSA-2048 키 쌍 생성에 약 1초, CPU 100% 사용
- 매 통신마다 생성하면 서버가 버티지 못함
- 따라서 한 번 생성 → 6개월~1년간 사용하는 것이 일반적
6. 비대칭키와 블록체인(비트코인)
비트코인을 포함한 암호화폐의 본질은 비대칭키다.
- 공개키 = 다른 사람에게 알려주는 지갑 주소
- 개인키 = 내 지갑에 접근하는 비밀 키
- 개인키가 파일로 저장된 정보에 불과하므로, 노출되면 끝
7. 보안의 유효기간
모든 암호에는 유통기한이 있다.
암기 포인트: 암호의 목적은 영원한 보호가 아니다. 정보의 가치가 있는 유효기간 동안만 지키면 된다.
핵심 암기 포인트
비대칭키: 키가 2개, 한 쌍. 공개키(Public) + 개인키(Private).
핵심 규칙: 한쪽으로 암호화 → 반대쪽으로만 복호화.
RSA: 가장 많이 쓰이는 비대칭키 알고리즘. 큰 소수의 곱 기반.
ECC: 짧은 키로 RSA와 동등한 보안성. 모바일에 유리.
효율: 대칭키 >> 비대칭키. 가능하면 대칭키를 써라.
유통기한: 모든 암호에는 유효기간이 있다.
확인 질문
- 비대칭키에서 "비대칭"이라는 이름이 붙은 이유는 무엇인가?
- 공개키로 암호화한 데이터를 공개키로 복호화할 수 있는가? 왜?
- RSA에서 소수(Prime Number)가 중요한 이유는 무엇인가?
- AES-128과 RSA-2048의 보안성이 비슷하다면, 왜 대칭키가 더 효율적인가?
- "모든 암호에는 유통기한이 있다"는 말의 의미를 설명하라.