반응형



6
RSA(RSA cryptosystem)가 느린 이유는 한 줄로 말하면:
엄청 큰 숫자에 대해
거대한 거듭제곱(mod exponentiation)을 반복하기 때문
이다.
반면 AES는:
XOR + 비트연산 중심
이라 CPU가 엄청 잘 처리한다.
AES와 RSA의 근본 차이
| 알고리즘 | 기반 |
| AES | 비트 연산 |
| RSA | 거대한 정수 수학 |
AES는 CPU 친화적
AES 내부:
- XOR
- Shift
- Rotate
- Lookup Table
정도다.
즉:
CPU가 원래 잘하는 작업
이다.
게다가:
- AES-NI
- 하드웨어 가속
까지 있음.
RSA는 완전히 다름
RSA는 이런 계산을 한다.

문제는 여기서
실제 RSA에서는:
n = 2048bit 이상
이다.
즉 숫자 크기가:
10^600 수준
까지 간다.
CPU 입장에서 무슨 일이냐
예를 들어:
123456789...
^
987654321...
mod gigantic_number
같은 계산을 계속 해야 한다.
단순 곱셈도 엄청 무거움
우리가 평소 CPU에서 하는 건:
64bit 정수
정도다.
근데 RSA는:
2048bit
4096bit
같은 초거대 정수 사용.
즉 CPU 기본 레지스터에 안 들어간다.
그래서 BigInteger 연산 필요
Java에서도:
BigInteger
사용한다.
내부적으로:
- 배열 단위 계산
- 다중 정밀도 연산
- carry 처리
등이 필요하다.
핵심 병목 — 모듈러 거듭제곱
RSA 핵심 계산:
ab na^b \bmod n
이다.
왜 어려울까?
예:
5^235
만 해도 엄청 커진다.
RSA는 이걸:
2048bit 숫자
로 수행한다.
그래서 반복 최적화 필요
실제로는:
- square-and-multiply
- Montgomery multiplication
같은 최적화 사용.
그래도 무겁다.
AES와 체감 차이
대략 느낌:
작업속도
| AES-GCM | 초고속 |
| RSA-2048 | 매우 느림 |
실제로 RSA는:
AES보다 수백~수천 배 느릴 수 있음
왜 HTTPS에서 RSA 안 쓰나?
예를 들어 1GB 파일을 RSA로 암호화하면:
사실상 매우 비효율
이다.
그래서 HTTPS는:
STEP 1
RSA/ECC:
AES 세션키만 교환
STEP 2
실제 데이터:
AES-GCM 통신
한다.
RSA는 작은 데이터만 처리
RSA는 보통:
- 세션키
- 해시
- 전자서명
같은 작은 데이터 처리용이다.
공개키 암호가 느린 이유의 본질
결국 RSA는:
"역산이 어려워야 안전"
하다.
즉 일부러 계산이 어려운 수학 위에 만든 거다.
AES는 반대
AES는:
빠르게 암호화하는 게 목적
이다.
그래서:
- CPU 친화적
- 병렬 처리 가능
- 하드웨어 가속 가능
하게 설계했다.
ECC가 뜬 이유
RSA 느리니까:
- Elliptic-curve cryptography
가 많이 사용된다.
ECC 장점
더 작은 키
=
같은 보안성
예:
RSAECC
| 2048bit | 256bit 수준 |
그래서:
- 모바일
- TLS 1.3
에서 ECC 많이 사용.
실제 CPU 사용 차이
AES:
CPU 명령어 수준
가능.
RSA:
소프트웨어 다중 정밀도 수학
필요.
핵심 한 줄
RSA가 느린 이유는:
CPU가 직접 처리하기 어려운
초거대 정수의 거듭제곱 mod 연산을 반복해야 하기 때문
이다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| DH / ECDHE (0) | 2026.05.14 |
|---|---|
| ECC는 왜 RSA를 대체하는가 (0) | 2026.05.14 |
| RSA 원리 (0) | 2026.05.14 |
| 공개키 암호화는 어떻게 가능한가 (0) | 2026.05.14 |
| DB 컬럼 암호화 방식 (0) | 2026.05.14 |
댓글