해나아부지 개발일지

비대칭 암호화란 본문

Developers/Coding Question

비대칭 암호화란

__APPA 2020. 9. 3. 22:14

 비대칭 암호화 방식 (공개키 암호화 방식) 


비대칭 암호 방식 

 

1) 보내는 사람인 A(Alice)는 공개키(public Key)와 개인키(private Key)를 생성한다. 

2) 받는 사람인  B(Bob)도 공개키(public Key)와 개인키(private Key)를 생성한다. 

3) A(Alice)는 B(Bob)의 공개키로 암호화하고, B는 Bob의 개인키로 복호화한다. 

 

 

 

 

비대칭 암호 장점

Signature 구현이 가능하다. 

보안 강도가 높다. 

RSA의 경우, 소인수분해 문제의 어려움을 이용했기때문에, 현재로써는 암호가 깨지지않는다.

현재 256비트의 암호키를 사용하면 , 복호화하는데 우주의 나이만큼 시간이 필요하다. 

키의 관리/ 분배가 매우 효율적이다.

비대칭 암호 단점

연산이 복잡하고 느리다.

공개키를 관리하는 것이 문제이다.

 

RSA

 

대표적인 비대칭키 암호 알고리즘 방식입니다.

 

RSA는 키 생성, 암호화, 복호화 과정으로 나누어 집니다.

 

키 생성

 

RSA에서 키를 생성하는 방식은 아래와 같습니다.

 

1. 두 소수 p, q를 준비합니다.

 

2. p와 q의 곱인 N 값을 계산합니다.

 

3. 1 < e < (p-1)*(q-1)이고, (p-1)*(q-1)와 서로소인 공개키 e를 생성합니다.

 

4. ( d * e ) mod (p-1)*(q-1) = 1 이고 0 <= d <= N 인 d를 구합니다.

 

생성된 값들 중 N과 e는 공개키로, d는 비밀키로 사용됩니다.

 

암호화

 

보내려는 평문 a를 x = a ^e mod N 으로 암호화 합니다. ( 여기서 a < N 이어야 합니다. )

 

복호화

 

받은 암호문 x를 a = x^d mod N 으로 복호화 합니다.

 

RSA에서의 개인키를 구하는 방식

 

RSA에서는 공개키 N과 e가 공개되는 값입니다. 이를 이용해서 N을 소인수 분해하면 p와 q값을 구할 수 있고, 공개키 e와 두 소수 p, q를 이용하여 개인키 d를 얻을 수 있습니다.

 

그렇기 때문에 RSA에서는 안전성을 보장하기 위해 적어도 1024 bit 길이의 키 값을 사용하고, 현대에는 2048 bit를 권장하고 있습니다.

 

현재 RSA 768 bit는 2009년도에 깨졌지만, RSA 896, 1024 ~~ 등은 아직 깨지지 않았습니다.

 

출처: 라이프위드코딩님 블로그

        딩규님 블로그

'Developers > Coding Question' 카테고리의 다른 글

what happen to input url on the browser?  (0) 2023.03.07
UTF-8  (0) 2020.10.08
Cashe란?  (0) 2020.08.07
Virtual Memory란?  (0) 2020.08.06
동적 계획법(Dynamic Programming)  (0) 2020.04.29
Comments