본문 바로가기
Tech/Coding

RSA 암호화 알고리즘의 원리와 예시

by redcubes 2025. 4. 5.

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는 아래의 수학적 원리를 기반으로 한다.

  1. 큰 두 소수 $p$, $q$를 선택하여 곱해 $n = p \times q$를 만든다.
  2. 오일러 파이 함수 $\varphi(n) = (p-1)(q-1)$를 구한다.
  3. 공개 키 지수 $e$를 $\varphi(n)$과 서로소로 선택한다. 일반적으로 65537이 자주 쓰인다.
  4. 개인 키 지수 $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의 핵심인 소인수 분해의 난이도와 소수 판정을 경험할 수 있다.

문제 풀이 전략

  1. 주어진 조건에 따라 두 소수를 효율적으로 탐색한다.
  2. 조건을 만족하는 범위에서 후보군을 찾고 소수 판정을 수행한다.
  3. $p, q$를 찾으면 이를 반환하여 결과를 출력한다.

이는 RSA의 수학적 배경을 실제 문제로 적용해보는 과정이며, 소수 판정과 효율적 탐색 알고리즘이 요구된다.

참고 출처: 백준 3734번 문제 페이지


5. RSA 알고리즘의 장점과 단점

장점

  • 높은 보안성: 소인수 분해의 난제를 기반으로 하므로 키가 공개되어도 안전하다.
  • 편리한 키 관리: 비대칭 암호 방식으로 안전한 키 분배가 가능하다.

단점

  • 느린 연산 속도: 복잡한 모듈러 지수 연산으로 인해 속도가 느리다.
  • 긴 키 길이: 보안을 위해 긴 키를 사용해야 하므로 연산 부담이 크다.

6. RSA 구현 시 주의점

RSA 알고리즘을 실제로 구현하거나 적용할 때 다음과 같은 사항을 주의해야 한다.

  • 키 길이 설정: 2048비트 이상의 키 길이를 사용하는 것이 권장된다.
  • 패딩(Padding): RSA에서는 패딩을 적용하여 같은 메시지가 같은 암호문으로 변환되지 않도록 한다.

마무리하며

RSA 암호화 알고리즘은 현대 보안 기술의 중심에 있는 핵심 알고리즘이다. 이 글에서 다룬 RSA의 이론적 배경과 실제 문제 풀이(백준 3734번 문제)를 통해 알고리즘을 더 깊이 이해할 수 있을 것이다. 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의 작동 원리를 직관적으로 이해할 수 있다.