안녕하세요 오늘은 RSA에 대해서 알아보도록 하겠습니다. 매번 RSA에 대해서 보는데 또 까먹고 계속 까먹네요ㅠ
RSA는 비대칭키 암호입니다.
비대칭키 암호 ?
비대칭키 암호는 공개키를 이용해 암호화하고 공개키에 해당하는 비밀키를 이용해 복화하는 방식입니다.
절대 공개키만 가지고 데이터를 복호화 할 수 없습니다.
비대칭키의 대표적인 예로는 RSA, 타원 곡선 암호, 전자 서명 등이 있습니다.,
그 중에 가장 유명한 RSA 암호는 세 단계로 나누어집니다.
1. 키 생성
2. 암호화
3. 복호화
순으로 나누어 집니다.
1. 키 생성
먼저 각각의 공개키와 개인키를 생성하는 방법이 필요합니다.
그래서 RSA에서 두 개의 큰 소수인 p와 q를 선택합니다.
ex) p = 13 q = 17
p = 13 q = 17
p와 q의 곱인 N을 계산합니다
N = p * q = 13 * 17 = 221
이제 1부터 N-1까지의 정수 중 N과 서로같은 수(서로소)인 정수의 개수를 구합니다.
즉, 서로소는 두 숫자의 최대 공약수가 1이 되는 수를 말합니다.
N이 소수라면 N과 서로소인 정수는 N-1개,
N이 소수의 곱이라면 N과 서로소인 정수는 (p -1) * (q -1)
이 값을 N에 대한 오일러 파이(φ) 함수 값입니다.
φ(N) = (p - 1) * (q - 1) = (13 - 1) * (17 - 1) = 192
그러면 1 < e < φ(N)이고 φ(N)가 서로소인 공개키 e를 생성합니다.
1 < e < 192, e = 7로 생성합니다.
(d*e) mod φ(N) = 1 이고 o <= d <= N인 d를 구합니다.
(d*e) mod φ(N) = 1, (d*7) mod 192 = 1,
d = 55로 선택합니다.
생성된 값들은 N과 e는 공개키, d는 비밀키로 사용합니다.
암호화
M은 평문, C는 암호문, N과 e는 공개키입니다.
C = M^e mod N
M = 123, N = 221, e = 7
C = 123^7 mod 221 = 98
복호화
복호화에는 비밀키인 d가 사용됩니다.
M = C^d mod N
C = 98, N = 221, d = 55
M = 98 ^^ 55 mod 221 = 123
즉 결론적으로 N과 e는 공개키 값이며 N을 소인수 분해하면 p와 q를 구할 수 있고, 공개키 e와 두 소수 p, q를 이용하여 개인키 d를 얻을 수 있습니다.
이론적으로 봤었을 떄는 단순하지만 소스코드로 사용했을 때나 RSA을 1024 bit 소인수 분해했을 때는 값이 너무 커져서 알아 볼 수가 없습니다.
이상 포스터를 마치겠습니다. 감사합니다.
'운영체제' 카테고리의 다른 글
클라우드 기반 블록체인(Blockchain as a Service) (0) | 2020.06.13 |
---|---|
네트워크 OSI 7계층의 역할 (0) | 2020.06.12 |
보안의 3대 요소 및 유닉스(리눅스)의 계정 관리 (0) | 2020.06.12 |
HTTP 인증 (0) | 2020.05.28 |
JSP - doGet() 과 doPost()의 차이 (0) | 2020.04.25 |