Processing math: 33%
본문 바로가기
카테고리 없음

RSA 암호화 알고리즘의 원리와 예시 (백준 3734번 문제 풀이 포함)

by redcubes 2025. 4. 5.

 

RSA 암호화 알고리즘의 원리와 예시 (백준 3734번 문제 풀이 포함)

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×q를 만든다.
  2. 오일러 파이 함수 φ(n)=(p1)(q1)를 구한다.
  3. 공개 키 지수 eφ(n)과 서로소로 선택한다. 일반적으로 65537이 자주 쓰인다.
  4. 개인 키 지수 ded \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 인수 분해 문제를 소개한다.

문제 설명

양의 정수 nk가 주어진다. 다음을 만족하는 두 소수 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의 작동 원리를 직관적으로 이해할 수 있다.