비대칭키 암호방식과 RSA 알고리즘

2
post-custom-banner

✔ 비대칭키 암호 방식


비대칭키 암호 방식은 암호화와 복호화에 사용하는 키가 서로 다른 암호화 방식을 의미합니다.

비대칭형 암호 방식을 이용하여 데이터를 전송하는 방식은 다음과 같습니다.

A는 공개키(public key)와 개인키(private key)를 생성한다.
A의 공개키를 이용하여 암호화된 데이터는 A의 개인키로만 복호화가 가능하다.
A의 개인키를 이용하여 암호화된 데이터는 A의 공개키로만 복호화가 가능하다.
B 역시 A와 마찬가지로 공개키와 개인키를 생성합니다.

✔ 통신 과정


  1. A는 자신의 공개키를 B에게 알려줍니다.
  1. B는 A에게서 받은 공개키를 이용해서 암호화를 합니다. 그 후에 암호화된 문서를 A에게 전달합니다.
  • 이 때, A의 공개키로 암호화된 문서는 A의 개인키로만 복호화 할 수 있기 때문에 A만이 해석 가능하게 됩니다. 그렇기 때문에 중간에 다른 사람이 공개키와 문서를 가로채더라도 안전하게 통신할 수 있습니다.

위의 그림을 보면 B는 A의 공개키를 이용하여 암호화를 하고, A는 자신의 개인키로 복호화를 하는 것을 볼 수 있습니다. 문서와 공개키가 있어도, 개인키가 있어야 복호화를 할 수 있기 때문에 대칭키 암호 방식보다 훨씬 안전한 방식입니다. 하지만 대칭키 암호 방식보다 속도가 느린 단점이 있습니다.

대표적인 비대칭키 암호 알고리즘에는 RSA 방식이 있습니다.

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

키 생성

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

  1. 두 소수 p, q를 준비합니다.
  1. p와 q의 곱인 N 값을 계산합니다.
  1. 1 < e < (p-1)(q-1)이고, (p-1)(q-1)와 서로소인 공개키 e를 생성합니다.
  1. ( 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를 권장하고 있습니다.

참고 : https://dingue.tistory.com/15

profile
ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ 🔥
post-custom-banner

0개의 댓글