[암호학] 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 |