CSE/이산수학
[이산수학] RSA 암호화
minkylee
2024. 10. 26. 18:58
암호화의 종류
- 대칭키 암호 시스템 : 송신자와 수신자가 같은 비밀키를 사용하여 데이터를 암호화하고 복호화 하는 방식
- 공개키 암호 시스템 : 송신자와 수신자가 각각 다른 키 사용, 송신자는 수신자의 공개키로 메시지 암호화, 수신자는 자신의 개인키로 복호화
- Bob이 Alice에게 평문을 보내려 한다.
- Bob은 자신이 가지고 있는 Alice의 공개키를 통해 암호화한다.
- 암호문을 Alice에게 보낸다.
- Alice는 자신만 가지고 있는 개인키를 가지고 복호화 한다.
암호화 방법
- 서로 다른 두 소수 p와 q를 선택한다. 두 소수를 곱해서 n을 계산한다. (n = pq) r은 $\mathbf{\phi(n)}$ 이 된다.
- r이 공개키의 모듈이 된다.
- r은 $\phi(n) = \phi(p) * \phi(q) = (p-1)(q-1)$
- r과 서로소인 e를 선택한다 (gcd(e, r) = 1), 그리고 $e \cdot d \equiv 1 \ (mod \ r) $ 를 만족하는 d(e의 역원)를 만든다.
- 공개키는 (n, e) 개인키는 (n, d) 이다
- 평문 B를 암호화하기 위해 $\mathbf{{\color{Blue} E(B) = B^e \ (mod \ n)}}$
- 암호문 C를 복호화 하기 위해 $\mathbf{{\color{Red} D(C) = C^d \ (mod \ n)}}$
예시 (p = 61, q = 127)
- n = 61 * 127 = 774, r = 7560 (7747과 서로소인 원소의 개수)
- e = 17 (r과 서로소)
- d = 3113 , $e \cdot d \equiv 1 \ (mod \ r)$
- 평문 2104를 암호화 = $2104^{17} \ mod \ 7747 = 628$
- 암호문 628을 복호화 $ 628^{3113} \ mod \ 7747 = 2104$
RSA의 정확성
경우의 수가 여러개기 때문에 암호문을 유추하기 어렵다.