RSA(Rivest-Shamir-Adleman)는 현대 정보 보안에서 가장 널리 사용되는 공개 키 암호화 알고리즘이다. 1977년 MIT의 연구자인 론 리베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)이 개발하였으며, 이들의 이름 앞글자를 따서 RSA라는 이름이 붙었다.
이 글에서는 RSA의 수학적 원리, 키 생성 과정, 암호화 및 복호화 방식, 그리고 실제 문제 풀이를 통해 RSA 알고리즘을 자세히 알아본다.
1. RSA 암호화 알고리즘이란?
RSA는 공개 키와 개인 키라는 두 가지 키를 사용하는 비대칭 키(Asymmetric-key) 암호화 방식이다. 여기서 공개 키는 데이터를 암호화할 때 사용되고, 개인 키는 데이터를 복호화할 때 사용된다. RSA는 '소수의 곱으로 표현된 큰 정수의 소인수 분해가 어렵다'는 수학적 난제를 이용해 보안을 유지한다. 즉, 공개 키가 공개되어도 개인 키를 알아내는 것은 사실상 불가능에 가깝다.
참고 출처: ssdragon 티스토리
2. RSA 알고리즘의 수학적 원리
RSA는 아래의 수학적 원리를 기반으로 한다.
- 큰 두 소수 $p$, $q$를 선택하여 곱해 $n = p \times q$를 만든다.
- 오일러 파이 함수 $\varphi(n) = (p-1)(q-1)$를 구한다.
- 공개 키 지수 $e$를 $\varphi(n)$과 서로소로 선택한다. 일반적으로 65537이 자주 쓰인다.
- 개인 키 지수 $d$는 $ed \equiv 1 \mod \varphi(n)$을 만족하는 값이다.
이렇게 생성된 공개 키는 $(e, n)$이고, 개인 키는 $(d, n)$이 된다.
참고 출처: brightchords 티스토리
3. RSA의 암호화와 복호화 과정
RSA의 암호화와 복호화는 다음과 같은 과정으로 이루어진다.
- 암호화 (Encryption) $$ C \equiv M^e \mod n $$
- $M$: 원본 메시지(평문), $C$: 암호화된 메시지(암호문)
- 복호화 (Decryption) $$ M \equiv C^d \mod n $$
이 과정은 공개 키를 사용한 암호화와 개인 키를 사용한 복호화로 이루어진다.
참고 출처: coding-by-head 티스토리
4. RSA의 실제 예시 문제 풀이 (백준 3734번)
RSA의 원리를 더욱 깊이 있게 이해하기 위해 백준 온라인 저지에 수록된 3734번: RSA 인수 분해 문제를 소개한다.
문제 설명
양의 정수 $n$과 $k$가 주어진다. 다음을 만족하는 두 소수 $p, q$를 찾는 문제이다.
- $n = p \times q$
- $p \leq q$
- $|q - k \times p| \leq 10^5$
주어진 조건을 만족하는 소수를 찾는 문제이며, RSA의 핵심인 소인수 분해의 난이도와 소수 판정을 경험할 수 있다.
문제 풀이 전략
- 주어진 조건에 따라 두 소수를 효율적으로 탐색한다.
- 조건을 만족하는 범위에서 후보군을 찾고 소수 판정을 수행한다.
- $p, q$를 찾으면 이를 반환하여 결과를 출력한다.
이는 RSA의 수학적 배경을 실제 문제로 적용해보는 과정이며, 소수 판정과 효율적 탐색 알고리즘이 요구된다.
참고 출처: 백준 3734번 문제 페이지
5. RSA 알고리즘의 장점과 단점
장점
- 높은 보안성: 소인수 분해의 난제를 기반으로 하므로 키가 공개되어도 안전하다.
- 편리한 키 관리: 비대칭 암호 방식으로 안전한 키 분배가 가능하다.
단점
- 느린 연산 속도: 복잡한 모듈러 지수 연산으로 인해 속도가 느리다.
- 긴 키 길이: 보안을 위해 긴 키를 사용해야 하므로 연산 부담이 크다.
6. RSA 구현 시 주의점
RSA 알고리즘을 실제로 구현하거나 적용할 때 다음과 같은 사항을 주의해야 한다.
- 키 길이 설정: 2048비트 이상의 키 길이를 사용하는 것이 권장된다.
- 패딩(Padding): RSA에서는 패딩을 적용하여 같은 메시지가 같은 암호문으로 변환되지 않도록 한다.
마무리하며
RSA 암호화 알고리즘은 현대 보안 기술의 중심에 있는 핵심 알고리즘이다. 이 글에서 다룬 RSA의 이론적 배경과 실제 문제 풀이(백준 3734번 문제)를 통해 알고리즘을 더 깊이 이해할 수 있을 것이다. RSA의 원리를 바탕으로 다양한 암호학적 문제를 해결해 보며 그 중요성과 활용 가능성을 체감해보길 바란다.
출처 명시
- RSA 개념 및 수학적 배경:
- 문제 출처:
아래는 RSA 알고리즘의 키 생성부터 암호화 및 복호화까지의 간단한 예시를 표로 나타낸 것이다.
간단한 RSA 예시
암호화 및 복호화 과정
다이어그램으로 표현한 RSA 과정 흐름
[p=3, q=11]
│
▼
[n=33, φ(n)=20]
│
▼
[e=7 (공개키 선택), d=3 (개인키 계산)]
│
├───────▶ 공개키 (e=7, n=33)
└───────▶ 개인키 (d=3, n=33)
│ ▲
▼ │
┌─────────────────┐ │
평문(M=4)──▶암호화(공개키)───▶암호문(C=16)
└─────────────────┘ │
│
┌─────────────────┐ │
암호문(C=16)──▶복호화(개인키)───┘
└─────────────────┘
이 표와 다이어그램을 통해 RSA의 작동 원리를 직관적으로 이해할 수 있다.

'Tech > Coding' 카테고리의 다른 글
| Python 고속 입력 처리법 (0) | 2025.04.11 |
|---|---|
| RSA 암호화와 모듈러 연산 개념 정리 (0) | 2025.04.05 |
| PS(Problem Solving)에서의 컨볼루션과 컴퓨터 비전(CV, Computer Vision)에서의 컨볼루션 (0) | 2025.03.31 |
| 1067번 이동 (0) | 2025.03.30 |
| Black and White Stones (0) | 2025.03.29 |