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

RSA 암호화와 모듈러 연산 개념 정리

by redcubes 2025. 4. 5.

 

1. RSA 암호화 알고리즘 기초

1.1 RSA란?

  • 공개 키(Public Key)와 개인 키(Private Key)를 사용하는 비대칭 암호화 알고리즘이다.
  • 소인수 분해가 어려운 수학적 성질을 이용하여 보안을 확보한다.

1.2 키 생성 과정

  1. 두 개의 작은 소수 p=3, q=11 선택
  2. n=p×q=3×11=33
  3. 오일러 함수: φ(n)=(p1)(q1)=2×10=20
  4. 공개 키 지수 e=7 선택 (조건: gcd)
  5. 개인 키 지수 d 계산: ed \equiv 1 \mod{20} \Rightarrow 7 \cdot d \equiv 1 \mod{20} d = 3 (왜냐하면 7 \cdot 3 = 21 \mod 20 = 1)

공개 키: (e, n) = (7, 33)
개인 키: (d, n) = (3, 33)

1.3 암호화 / 복호화 과정 (예시 포함)

  • 평문 메시지: M = 4
  • 암호화: C = M^e \mod n = 4^7 \mod 33 계산:
    • 4^2 = 16
    • 4^3 = 64
    • 4^4 = 256
    • 4^5 = 1024
    • 4^6 = 4096
    • 4^7 = 16384
    • 16384 \mod 33 = 16 → 암호문 C = 16
  • 복호화: M = C^d \mod n = 16^3 \mod 33 계산:
    • 16^2 = 256
    • 16^3 = 256 \cdot 16 = 4096
    • 4096 \mod 33 = 4 → 복호화 결과: M = 4

2. 모듈러 연산 (Modular Arithmetic)

2.1 정의

a \mod mam으로 나눈 나머지를 의미한다.

예:

13 \mod 4 = 1 \\
9 \mod 4 = 1 \\
\Rightarrow 13 \equiv 9 \mod 4

2.2 합동(Congruence)

  • a \equiv b \mod mabm으로 나눈 나머지가 같음을 의미한다.

2.3 음수에 대한 모듈러

  • 음수도 모듈러 연산 가능
-2 \mod 3 = 1

3. 모듈러 연산의 항등원과 역원

3.1 항등원 (Identity)

  • 덧셈의 항등원: 0 (예: a + 0 = a)
  • 곱셈의 항등원: 1 (예: a \cdot 1 = a)

3.2 역원 (Inverse)

  • 어떤 연산의 결과가 항등원이 되게 만드는 수
  • 덧셈의 역원: -aa + (-a) = 0
  • 곱셈의 역원: a^{-1}a \cdot a^{-1} = 1

4. 모듈러 곱셈 역원 (Multiplicative Inverse)

4.1 정의

어떤 수 a에 대해 다음을 만족하는 x가 존재할 때:

a \cdot x \equiv 1 \mod m

4.2 예시

3 \cdot x \equiv 1 \mod 7 \\
\text{답: } x = 5 \Rightarrow 3 \cdot 5 = 15 \mod 7 = 1

5. 분수의 모듈러 연산

분수 \frac{a}{b} \mod m을 계산하려면 다음과 같이 한다:

\frac{a}{b} \mod m = (a \cdot b^{-1}) \mod m

5.1 예시: \frac{3}{4} \mod 7

  1. 4^{-1} \mod 7 = 2 (왜냐하면 4 \cdot 2 = 8 \mod 7 = 1)
  2. 따라서: \frac{3}{4} \mod 7 = 3 \cdot 2 \mod 7 = 6

6. 모듈러 역원 구하기: 확장 유클리드 알고리즘

6.1 확장 유클리드 알고리즘의 역할

  • 다음 식을 만족하는 정수 x, y를 찾는다: a \cdot x + m \cdot y = \gcd(a, m)
  • 만약 \gcd(a, m) = 1이라면, xa의 모듈러 역원이 된다.

6.2 예시: 3^{-1} \mod 7

  • 7 = 2 \cdot 3 + 1
  • 1 = 7 - 2 \cdot 3 = (-2) \cdot 3 + 1 \cdot 7
  • 따라서 x = -2, 즉 3^{-1} \equiv -2 \equiv 5 \mod 7

6.3 파이썬 코드 예시

# 확장 유클리드 알고리즘

def extended_gcd(a, b):
    if b == 0:
        return (1, 0, a)
    else:
        x1, y1, d = extended_gcd(b, a % b)
        x, y = y1, x1 - (a // b) * y1
        return (x, y, d)

def mod_inverse(a, m):
    x, y, g = extended_gcd(a, m)
    if g != 1:
        return None
    else:
        return x % m

print(mod_inverse(3, 7))  # 출력: 5