비대칭키 암호 방식은 암호화와 복호화에 사용하는 키가 서로 다른 암호화 방식을 의미합니다.
비대칭형 암호 방식을 이용하여 데이터를 전송하는 방식은 다음과 같습니다.
A는 공개키(public key)와 개인키(private key)를 생성한다.
A의 공개키를 이용하여 암호화된 데이터는 A의 개인키로만 복호화가 가능하다.
A의 개인키를 이용하여 암호화된 데이터는 A의 공개키로만 복호화가 가능하다.
B 역시 A와 마찬가지로 공개키와 개인키를 생성합니다.
위의 그림을 보면 B는 A의 공개키를 이용하여 암호화를 하고, A는 자신의 개인키로 복호화를 하는 것을 볼 수 있습니다. 문서와 공개키가 있어도, 개인키가 있어야 복호화를 할 수 있기 때문에 대칭키 암호 방식보다 훨씬 안전한 방식입니다. 하지만 대칭키 암호 방식보다 속도가 느린 단점이 있습니다.
대표적인 비대칭키 암호 알고리즘에는 RSA 방식이 있습니다.
RSA는 키 생성, 암호화, 복호화 과정으로 나누어 집니다.
키 생성
RSA에서 키를 생성하는 방식은 아래와 같습니다.
생성된 값들 중 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를 권장하고 있습니다.