본문 바로가기

Mac&iOS

iOS에서 RSA암호화(3)

이전글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(2)



1. RSA 원리



RSA 구조체를 살펴보면 n, e, d, p, q 와 같은 변수가 나오는데 이를 이해하려면 RSA에 대해서 약간의 지식이 필요하다.



RSA는 소수(Prime Number)를 이용한 공개키 암호 시스템이다. 어떤 수가 임의의 두 큰 소수의 곱으로 되어 있을 때, 이 두 큰 소수를 찾아 내기란 쉽지 않다.



이때 큰 두 소수를 p와 q라고 한다.


그리고 이 두 p와 q의 곱을 N이라고 한다.


p, q : 서로 다른 소수

N = p*q


N이 공개되더라도 p, q의 값을 쉽게 구할 수는 없다.


이제 정수 e를 선택해야 하는데, 이 값은 (p-1) * (q - 1) 인 값과 공통인수가 없는 3 ~ (N-1) 범위에 있는 수를 선택한다. 이때 e 값은 소수가 아니어도 된다.


이제 정수 d를 선택해야 하는데, e * d 를 (p-1)*(q-1)로 나눈 나머지 값이 1인 값을 만족해야 한다. 


예를 들면

p=11, q=31일 경우

N = 341, (p-1)*(q-1) = 300 이 된다.


e는 여러 값이 될 수 있는데, 7이라고 설정하고, d도 만족하는 값중에 43을 일단 선택하도록 한다.


여기서 개인키(private Key)는 (N, d)의 숫자쌍이며, 공개키(Public Key)는 (N, e)의 숫자쌍이 된다.



이때 공개키 (N, e) 중에서 N은 Modulus, e는 public exponent라고 한다.


개인키(N, d) 중에서 N은 Modulus, d는 private exponent라고 한다.



보통 암호화는 공개키로 하고, 복호화는 개인키로 하게 된다.

(참고로 공인 인증서 같은 경우에는 개인키로 암호화 해서 본인 인증을 한다고 한다.)



주제가 iOS에서 RSA 암호화이므로 공개키에 해당하는 N과 e를 꼭 기억해두고 다음으로 넘어가자.



다음글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(4)