본문 바로가기
쿤즈 Secure/암호이야기

공개키 암호화! 원리와 사용방법을 알아보자!

by :)Koon 2020. 10. 28.

암호화 종류의 마지막인 공개키 암호화입니다. 이전 포스팅에서는 단방향 암호화, 대칭키 암호화를 올려드렸었습니다. 마지막인 공개키 암호화는 국제 표준으로도 있을 만큼 굉장히 많이 사용 중이며 지금도 그리고 앞으로도 계속해서 사용될 암호화 방법입니다.

 

 

오늘 포스팅에서는 공개키 암호화에 대해서 알아보도록 하겠습니다.


공개키 암호화의 의미

공개키 암호화는 말 그대로 공개되어 있는 키를 이용하는 암호화 방법입니다. 여기서 의문점이 든다면 키가 오픈되어 있다는 이야기인데, 암호화가 가능한걸까요?

 

 

사실 공개키 암호화에 사용되는 키는 2가지입니다. 공개키와 개인키. 공개키는 앞서 말씀드린 대로 공개되어 있는 키를 의미하고, 개인키는 반드시 자신만이 소유하고 있는 키를 의미합니다. 공개키는 Public Key, 개인키는 Private Key라고 합니다.

 

이 두 개의 키는 연관성을 가지고 있습니다. 공개키로 암호화하면 개인키로 복호화가 가능하고, 개인키로 서명하면 공개키로 검증이 가능합니다. 이러한 방법을 사용하는 사례가 우리나라의 공인인증서입니다.


공개키 암호화의 사용

요즘과 같이 데이터를 인터넷 네트워크상에 전달할 때에는 반드시 암호화가 필요합니다. 보통은 대칭키를 이용해서 주로 암호화를 해서 네트워크로 전달하여 주고받습니다.

 

2020/08/15 - [쿤즈 Secure/암호이야기] - 대칭키 암호화의 원리! 너와 나의 비밀 데이터!

 

대칭키 암호화의 원리! 너와 나의 비밀 데이터!

지난 포스팅에서 비밀번호 암호화와 관련하여 단방향 암호화에 대해서 올렸습니다. 우리가 사용하는 비밀번호는 단방향 암호화로 포털사이트 DB(데이터베이스) 에 저장되고 있습니다. 절대로

koonsland.tistory.com

이때, 대칭키는 서로 공유해야 하는데 사전에 공유하는 방법이 바로 공개키를 이용하는 방법입니다.


사전에 서로 다른 키를 공유하기 위해 사용하는 공개키 암호화

먼저 밥과 앨리스가 있습니다. 이 둘은 비밀 메세지를 주고받기 위해서 대칭키를 만들어야 합니다. 대칭키를 만들기 위해서 공개키 암호화 방법을 이용하기로 했습니다.

우선 밥과 앨리스는 각자 공개키와 개인키를 가지고 있습니다. 이때, 공개키는 오픈되어도 괜찮다고 말씀드렸었죠? 따라서 밥과 앨리스는 자신의 공개키를 오픈되어 있는 공간에 올려놓습니다. 이렇게 공개된 공개키는 아무나 가져갈 수 있게 됩니다.

이렇게 오픈되어 있는 공간에 있는 공개키를 밥과 앨리스는 상대방의 공개키를 자신이 가져옵니다. 그리고 앨리스에게 전달할 새로운 키를 하나 생성합니다. 이렇게 생성한 키는 둘만 알게 되는 키고 대칭키로 사용할 예정입니다.

밥은 새롭게 생성한 대칭키를 앨리스의 공개키를 이용해서 암호화를 합니다. 이렇게 암호화를 하게 되면 이 암호문을 복호화할 수 있는 키는 앨리스의 개인키 뿐입니다. 따라서 이 암호문을 다른 누군가가 탈취한다 해도 복호화 할 수 없습니다.

 

그리고 이 암호화된 공개키를 앨리스에게 전달합니다.

앨리스는 전달받은 암호화 키를 자긴의 개인키로 복호화해서 원본 키를 가지고 있게 됩니다. 그리고 다시 밥의 공개키를 가져와서 새로운 대칭키를 생성하고 밥의 공개키를 이용해서 암호화를 합니다.

 

대칭키 전달은 한 번에 끝날 수 있지만 서로가 만들어서 조합해서 사용할 수도 있습니다. 이렇게 응용됩니다. 이렇게 밥의 공개키로 암호화한 키를 밥에게 전달합니다.

밥은 자신의 공개키로 암호화된 암호키를 개인키로 복호화하고 원본 키를 얻어냅니다. 이제 밥과 앨리스는 서로 공유된 대칭키를 이용해서 안전하게 메세지를 주고받을 수 있게 됩니다. 대칭키가 탈취되지 않는 이상 중간에서 메세지를 가져와도 원본 메세지를 얻어내기는 어렵습니다.


대칭키 대신 공개키로 메세지를 주고받는다면

공개키와 개인키로도 암복호화가 가능합니다. 따라서 공개키 암호화를 이용해서 메세지를 주고받을 수도 있습니다. 다만 공개키와 개인키는 키 길이가 굉장히 길기 때문에 암복호화하는 시간이 대칭키보다 오래 걸립니다.

 

 

또한 원문(원래의 메세지)의 길이가 길어지면 길어질수록 암호화와 복호화의 시간이 점점 더 오래 걸리게 됩니다. 효율적인 면에서 떨어지기 때문에 보통은 대칭키를 공유하고 대칭키를 이용해서 메세지를 주고받는 것이 일반적입니다.


공개키 암호화 알고리즘(Algorithm) 종류

공개키 암호화의 알고리즘 종류는 여러 가지가 있습니다. 그리고 공개키라 불리기도 하지만 비대칭키라 불리기도 합니다. 그래서 비대칭키 알고리즘이라는 말도 많이 사용하고 있습니다.

 

  • DSA
  • RSA
  • ECC

비대칭키 알고리즘 역시 모두 수학적 연산의 원리를 가지고 만들어진 알고리즘입니다. 각각은 어떤 원리로 만들어졌는지 살펴보도록 하겠습니다.


DSA (Digital Signature Algorithm)

DSAsms 1991년에 NIST가 미국 전자서명 표준에서 사용하기 위해 발표한 정부용 전자서명 알고리즘입니다. 이산대수 문제의 어려움에 기반으로 하고 있는 알고리즘이며 공개키를 이용한 표준 디지털 서명 방식의 알고리즘입니다.

 

DSA는 RSA에 비해서 키를 생성하는 속도가 더 빠릅니다. 반면 RSA보다는 암호화 속도가 느리지만 복호화 능력이 빠르기 때문에 뛰어난 해독 기능으로 인한 디지털 서명이 필요한 경우 DSA를 사용하는 경우가 있습니다.

 

 

RSA (Rivest Shamir Adleman)

RSA 알고리즘은 공개키 알고리즘 중에서 가장 많이 사용된 알고리즘입니다. 이 알고리즘을 만든 세 사람 (Rivest, Shamir, Adleman)의 이름 앞글자를 따서 만든 알고리즘입니다.

 

이 알고리즘은 암복호화뿐만 아니라 전자서명 시에도 이용되는 알고리즘입니다. 전자서명은 우리가 보통 공인인증서를 사용할 때 이 알고리즘을 사용합니다.

 

RSA 암호체계의 안정성은 큰 숫자를 소인수 분해하는 것이 어렵다는 것을 기반에 두고 있습니다. 초기에는 RSA-1024를 이용했습니다. 1024의 뜻은 키의 길이를 뜻합니다. 하지만 하드웨어의 속도가 기하급수적으로 발전하면서 컴퓨터의 계산속도가 매우 빨라졌습니다. 따라서 키 길이를 늘려 현재 RSA-2048을 많이 사용하고 있습니다. 그리고 이보다 더 더 긴 키 길이도 있지만 키 길이가 늘어날수록 계산이 느려지는 단점이 있습니다.

 

만약 큰 숫자를 소인수 분해하는 획기적인 방법이나 컴퓨터가 등장한다면 RSA 알고리즘은 더 이상 사용할 수 없게 될 것입니다.

 

 

ECC (Elliptic Curve Cryptography)

ECC는 일명 타원곡선 암호 알고리즘이라고 불립니다. 수학적인 타원곡선 이론에 기반한 공개키 암호 알고리즘으로 닐 코블리츠와 빅터 밀러가 각각 제안한 알고리즘입니다.

 

타원곡선 알고리즘의 가장 큰 장점은 RSA에 비해서 키의 길이가 짧지만 안정성은 비슷한 수준을 유지한다는 것입니다. 키의 길이가 짧아지면 암호화 연산 속도가 빨라지기 때문에 그만큼 큰 장점이 있습니다. 하지만 키 길이에 따라서 보안성이 취약해질 수 있는 반면 ECC의 경우는 비슷한 수준의 안전성을 유지하고 있다는 점에서 부각되는 알고리즘입니다.

 

하지만 상대적으로 배경 이론이 복잡하고 실제고 구현하기 위해서는 전문 지식을 어느 정도 필요하기 때문에 널리 이용되는 데에서는 아직 시간이 더 필요한 것으로 보입니다.


오늘 포스팅에서는 공개키 암호에 대해서 알아보았습니다. 공개키 암호화 방법은 대칭키와 더불어서 가장 많이 사용되는 암호화 방법입니다. 이러한 공개키 암호화 구조를 보통 PKI(Public Key Infrastructure)라고 부릅니다. 우리가 안전하고 정보를 주고받을 수 있는 이유는 바로 이 PKI 구조를 이용해서 암복호화를 하면서 정보를 주고받기 때문입니다.

 

 

 

댓글