


이건 암호학에서 가장 신기한 부분인데, 핵심은:
"잠그는 건 쉬운데,
푸는 건 특정 정보 없이는 매우 어려운 수학"
를 이용한다는 거야.
즉 공개키 암호는:
한 방향 계산은 쉽고,
역방향 계산은 매우 어려운 문제
위에 만들어진다.
가장 대표적인 게 RSA
RSA cryptosystem 기준으로 설명할게.
먼저 목표
원하는 건 이런 거다:
공개된 키로는 암호화 가능
하지만
개인키 없이는 복호화 불가
어떻게 그게 가능하냐?
RSA는:
소인수분해의 어려움
을 이용한다.
STEP 1 — 아주 큰 소수 2개 선택
예:
p = 큰 소수
q = 큰 소수
STEP 2 — 둘을 곱함
n=p×q
예:
17 × 23 = 391
중요한 특징
곱하는 건 쉽다.
하지만:
391만 보고
17 × 23 찾기
는 더 어렵다.
실제 RSA는 엄청 큰 수 사용
실제로는:
2048bit 이상
이라 사실상 현재 컴퓨터로 분해가 매우 어렵다.
STEP 3 — 공개키 생성
공개키는 보통:
(e,n)
형태.
여기서:
- n = 공개
- e = 공개
STEP 4 — 개인키 생성
개인키는:
(d,n)
여기서 d는:
p와 q를 알아야 계산 가능
하다.
암호화
평문 M을:

로 암호화한다.
복호화
암호문 C를:

로 복호화한다.
왜 이게 동작할까?
이건 수학적으로:
특정 mod 연산 성질
때문이다.
정확히는:
- 오일러 정리
- 모듈러 산술
위에 기반한다.
핵심 직관
공개키로는:
앞 방향 계산
5^3 mod 13 = 8
만 쉽다.
하지만 역으로 풀려면:
개인키 d 필요
"5를 몇 번 제곱해야 8이 되나?"
하다.
그리고 d 계산하려면:
원래 소수 p,q 알아야 함
그런데 공개된 건 n뿐
즉 공격자는:
n = p × q
만 본다.
문제는 여기서
엄청 큰 n
→
원래 p,q 찾기
가 현실적으로 매우 어렵다.
이걸 Trapdoor Function이라고 함
Trapdoor function
특징:
| 방향 | 난이도 |
| 정방향 | 쉬움 |
| 역방향 | 매우 어려움 |
비유하면
재료 섞어서 케이크 만들기는 쉬움
근데 케이크 보고 원재료 정확히 복원은 어려움
느낌.
공개키 암호가 혁명적이었던 이유
원래 대칭키만 있던 시절엔:
"키를 어떻게 안전하게 전달?"
문제가 있었다.
공개키 암호 등장 후
공개키는 공개
개인키만 비밀
구조가 가능해졌다.
즉 처음 만나는 상대와도 안전한 통신 가능.
그런데 왜 RSA가 느릴까?
문제는:

같은 계산이 엄청 무겁다.
즉:
- 큰 정수 연산
- 거대한 거듭제곱
- mod 반복
이라 CPU 부담이 크다.
그래서 실제 인터넷은
RSA/ECC
→ AES 키 교환만
하고,
이후 실제 데이터는:
AES-GCM
으로 처리한다.
ECC는 뭐가 다르냐?
요즘은 RSA 대신:
- Elliptic-curve cryptography
많이 사용.
이유
ECC는:
더 작은 키로
같은 보안성
제공 가능.
그래서 모바일/HTTPS/TLS 1.3에서 매우 많이 사용된다.
핵심 요약
공개키 암호화가 가능한 이유는:
"계산은 쉽지만,
거꾸로 푸는 건 극도로 어려운 수학 문제"
를 이용하기 때문이다.
RSA는 특히:
큰 수 소인수분해의 어려움
위에서 동작한다.
신뢰 문제와 암호화
현대 인터넷의 핵심 문제는 사실 단순하다.
"상대를 믿을 수 없는 환경에서
어떻게 안전하게 통신할 것인가?"
이 문제를 해결하기 위해 등장한 기술이 바로 암호화다.
1. 인터넷은 기본적으로 신뢰할 수 없는 환경
인터넷은:
- 공개 네트워크
- 수많은 중간 경유지
- 누구나 접근 가능
- 공격자도 동일 네트워크 사용
이라는 특징을 가진다.
즉 데이터는:
내 PC → 공유기 → ISP → 중간 라우터 → 서버
처럼 여러 장비를 거쳐 이동한다.
문제는 이 과정에서:
- 누군가 데이터를 볼 수도 있고
- 변조할 수도 있고
- 가짜 서버로 위장할 수도 있다는 것
이다.
2. 신뢰 문제는 인터넷 전체에 존재한다
인터넷에서 가장 어려운 건:
"지금 통신 중인 상대가 진짜인가?"
를 증명하는 것이다.
예를 들어:
- 진짜 은행 서버인가?
- 진짜 회사 API인가?
- 중간 공격자가 위장한 서버는 아닌가?
를 알기 어렵다.
3. 암호화 이전의 인터넷은 매우 위험했다
초기 HTTP는 평문 통신이었다.
예:
POST /login
id=admin
password=1234
이 데이터가 그대로 네트워크를 이동했다.
즉 중간에서 패킷을 캡처하면:
아이디와 비밀번호를 그대로 볼 수 있었다
4. 암호화는 "신뢰를 수학적으로 만드는 기술"
많은 사람들이 암호화를 단순히:
데이터 숨기기
정도로 생각한다.
하지만 실제 본질은 더 크다.
암호화는:
신뢰를 수학적으로 검증 가능하게 만드는 기술
이다.
즉:
- 누가 보냈는지
- 중간에 바뀌지 않았는지
- 진짜 서버인지
- 데이터가 안전한지
를 수학적으로 증명한다.
5. 암호화가 해결하는 신뢰 문제
암호화는 크게 3가지 문제를 해결한다.
1) 기밀성 — 남이 못 보게
예:
- HTTPS
- VPN
- AES 암호화
중간 공격자가 데이터를 봐도:
해독할 수 없게 만든다
2) 무결성 — 중간 변조 방지
예:
- Hash
- HMAC
- 전자서명
데이터가 조금이라도 바뀌면:
검증 실패
가 발생한다.
3) 인증 — 진짜 상대인지 확인
예:
- TLS 인증서
- 공개키 암호화
- CA(Certificate Authority)
서버가:
"나는 진짜 네이버 서버다"
를 증명한다.
6. HTTPS는 신뢰 문제 해결 시스템이다
HTTPS는 단순 암호화가 아니다.
실제로는:
- 공개키 암호화
- 대칭키 암호화
- 전자서명
- 인증서
- Hash
- 키교환
이 모두 합쳐진:
인터넷 신뢰 시스템
에 가깝다.
7. 왜 공개키 암호화가 혁명적이었나
과거에는:
"같은 비밀키를 미리 공유"
해야 했다.
문제는 인터넷에서는:
처음 만나는 상대와도 통신해야 한다
는 점이다.
공개키 암호화는:
- 공개키는 공개
- 개인키는 서버만 보관
하는 방식으로:
처음 보는 상대와도 안전한 통신
을 가능하게 만들었다.
8. 결국 현대 인터넷은 "암호화 위에서 동작"
현재 인터넷 서비스 대부분은:
- 로그인
- 결제
- API
- 클라우드
- 모바일 앱
- OAuth
- JWT
- VPN
전부 암호화 기반이다.
즉 현대 인터넷은 사실상:
암호화가 없으면 성립 불가능한 구조
라고 봐도 된다.
9. Zero Trust 보안 철학도 같은 맥락
현대 보안은:
아무도 기본적으로 믿지 않는다
를 전제로 한다.
즉:
- 내부망도 신뢰하지 않고
- 사용자도 신뢰하지 않고
- 요청도 신뢰하지 않고
- 패킷도 신뢰하지 않는다
그래서 모든 요청에 대해:
- 인증
- 검증
- 서명 확인
- 암호화
를 수행한다.
10. 암호화의 본질
결국 암호화의 핵심은:
신뢰할 수 없는 환경에서
신뢰를 만드는 것
이다.
그리고 현대 인터넷은:
수학적 신뢰 위에 구축된 시스템
이라고 볼 수 있다.
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| RSA가 느린 이유 (0) | 2026.05.14 |
|---|---|
| RSA 원리 (0) | 2026.05.14 |
| DB 컬럼 암호화 방식 (0) | 2026.05.14 |
| 용어정리 (0) | 2026.05.14 |
| 파일 암호화 구조 (0) | 2026.05.14 |
댓글