[암호학] RSA 적용 : 1) RSA 키교환 방식이란

2022. 5. 2. 14:05
반응형

예전에 개발되어서 운영중인 시스템 운영 도중 클라이언트 측의 보안 요구사항이 강화됨에 따라서 서버 보안조치 및 Request Body에 전송되는 민감정보에 대한 보안 조치를 하게 될 필요성이 있었다.

기존 단방향 암호화를 적용했던 시스템에서 HTTPS 적용 혹은 암호화 알고리즘 강화를 요구하여 내부망에서만 도는 서비스라는 점을 감안하여 RSA 키교환 방식으로 조치를 하기로 결정하였다.

RSA 키교환 방식이란?

  • 기본적으로 암호화와 복호화가 가능한 양방향 암호화
  • 암호화에 사용하는 공개키와 복호화에 사용하는 개인키 두 개를 사용
  • 누구나 암호화를 할 수 있으나, 복호화 가능한 사람은 개인키를 소유한 사람 뿐.
  • 소인수 분해의 난해함을 이용한 암호화 방식. 

키 생성하기

해당 과정은 구글링해보면 잘 나와있지만 한번 복기해보자

1. 두 개의 서로 다른 소수 p, q 고르기

  • p = 13, q = 5라고 해보자

2. n = pq 찾기

  • n = 65

3. ϕ(n)을 구한다.

  • ϕ(n) = (p-1)(q-1) = 48

4. 공개키 : ϕ(n)보다 작고 ϕ(n)와 서로소인 정수 e 찾기

  • 여러개가 있지만 e = 17, e는 공개키에 사용된다.

5. 개인키 : (e*d) mod ϕ(n) = 1 에서 d 구하기

  • (17*d) mod 48 = 1 -> 17d % 48 = 1
  • d = 113, d는 개인키에 사용된다.

암호화와 복호화

암호화

원래 평문을 M = 15으로 가정

C = M^e mod n
-> C = 15^17 mod 65
C = 45

 

복호화

M = C^d mod n

-> M = 45^113 mod 65

M = 15

 

 

대략적으로 여기까지가 RSA 암호화에 대한 기본 원리이다.

이제 RSA 암호화를 프로젝트에 적용시켜야 한다.

이를 위해 RSA Key의 발급할 때의 Format의 종류가 있는데 다음 장에서 알아보도록 하자.

 

 

 

 

반응형

'CS > 보안' 카테고리의 다른 글

[암호학] RSA 적용 : 3) RSA 적용하기 (Node.js)  (0) 2022.05.02
[암호학] RSA 적용 : 2) RSA Key 포맷  (0) 2022.05.02

BELATED ARTICLES

more