본문 바로가기
블록체인/블록체인이란?

대칭 키 암호 방식과 비대칭 키 암호 방식

by 제이제이_은재 2022. 6. 20.
반응형

 

블록체인에서의 암호는 대표적으로 보안을 위해서 사용되고 기밀성, 무결성, 인증, 부인 방지를 위해 사용 된다.

 

* 기밀성: 타인이 볼 수 없도록 암호화하여 숨김

* 무결성: 메시지가 수정되지 않았는지 검증해야 함

* 인증/부인 방지 : 본인이라는 것을 확인함

 

위의 기능들은 크게 대칭 키 암호 방식과 비대칭 키 암호방식, 그리고 해시 함수를 사용하여 구현 된다.

 

💡대칭 키

암호화를 할 때의 키와 복호화를 할 때의 키가 같은 것을 대칭키라고 한다. 대칭 암호화 방식은 여러 사용자 사이에 공유된 단 하나의 키를 기반으로 한다.

 

✓ 대칭 키 암호 방식

 

하나의 키로 원본 데이터를 암호화하여, 암호화한 데이터 키를 함께 송신한다. 이를 받는 사람 역시 동봉된 동일한 키를 사용해 암호화된 데이터를 복호화 한다. 대칭 키 암호 방식에서는 블록 암호 방식이나 스트림 암호 방식을 사용할 수 있다.

 

* 블록 암호 방식: 데이터를 미리 저해둔 사이즈로 잘라 청크 단위로 그룹화하고, 각 블록을 개인 키로 암호화한다.

* 스트림 암호 방식: 원본 데이터와 같은 키로 키 스트림을 생성하고, 원본 데이터와 키 스트림을 XOR 연산하여 암호화한다. 나중에 복호화할 때도 암호화도니 값과 키 스트림을 XOR 연산을 하면 원본데이터가 나오게 된다.

 

대칭 키를 사용하게 된다면, 전송 과정에서 악의적인 해커가 암호화한 데이터와 함께 키를 탈취할 수 있는 키 배송 위험 문제가 발생한다. 데이터 암호화 및 복호화에 사용되는 키를 관리하는 어렵다는 것이다. 여러 사용자가 데이터를 공유하기 위해서는 이 키가 필수적으로 공유되어야 한다. 그러나 해당 키가 안전하지 않은 공간에서 공유되는 경우, 악의적인 제삼자를 통해 도난당할 위험이 있다. 허가받지 않은 제 삼자가 해당 키를 가지게 된다면 해당 키를 사용한 모든 데이터의 보안에 위협이 된다.

 

 

💡비대칭 키

 

비대칭 키 암호 방식은 대칭 키의 '쉽게 탈취하여 복화하가 가능하다'는 단점을 해겨하기 위한 방안으로 공나된 개념이다. 비대칭 키 암호 방식은 배칭 키 암호 방식과 다르게 단일 키가 아닌 공개 키와 개인 키 2가지를 사용한다. 비대칭 키 암호 방식엔 공개 키 암호 방식과 개인 키 암호 방식(암호 키 서명 방식)이 있다.

 

✓ 비대칭 키 암호 방식(1) - 공개 키 암호 방식

 

일반적으로, 공개 키는 전송자가 정보를 암호화 하는데 사용하며, 개인 키는 수신자가 데이터를 복호화 하는 데 사용한다. 공개 키로 암호화 한 데이터는 개인 키로 복호화 할 수 있어야 하기 때문에, 두 키는 알고리즘에 의해 수학적으로 연결되어 있다. 

공개 키 암호 방식은 기존의 대칭 키 암호 방식이 가졌던 키 배송 위험 문제를 해결하여 컴퓨터 보안을 강화하며, 데이터의 무결성을 확인하는데 사용할 수도 있다. 그러나 암호화 및 복호화의 수학적 계산이 매우 복잡하기 때문에, 대량의 데이터를 처리할 경우 오버헤드가 발생하여 속도가 느려질 수도 있다. 또한 대칭키 암호 방식과 마찬가지로, 개인 키가 안전하지 않은 공간에 노출되는 경우, 대응하는 공개 키로 암호화된 모든 데이터의 보안이 위협받게 된다.

 

✓ 비대칭 키 암호 방식(2) - 개인 키 암호 방식

 

공개 키로 암호화를 하고 개인 키로 복호화를 하는 공개 키 암호 방식의 정반대인 개인 키 암호 방식은, 개인 키로 암호화를 하고 공개 키로 복호화를 합니다. 개인 키의 소유자가 개인 키로 데이터를 암호화를 한 뒤에 공개 키와 함께 전달하는 방식이다. 공개키와 데이터를 받아서 해당 내용을 복호화할 수 있다. 이 방식은 '데이터 보호'보다 '신원 확인(보장)' 을 위해 사용된다.

 

공개 키와 개인 키는 한 쌍으로, 한쪽 키로 암호화를 했다면 다른 한쪽 키로 복호화를 할 수 있다는 특성을 활용하여, 공개 키와 한 쌍인 개인 키로 암호화했다는 것을 증명한다. 블록체인에서 이 방식은 전자 서명에 사용된다.

 

비대칭 키 암호 방식은 말 그대로 데이터를 암호를 하기 위해 만들어진 방식이다. 그렇기 때문에, 해당 내용에 관해 검색을 하다 보면 공개 키 암호방식을 비대칭 키 암호 방식의 디폴트로 가정하고 혼용하여 부르는 경우도 있다. 개인 키 암호 방식(공개 키 서명 방식)은 데이터를 복호화하여 대조하기 위한 방식이기 때문에 특이한 케이스이다.

 

💡대칭 키 암호와 비대칭 키 암호의 혼용

대칭 키 암호 방식은 비대칭 키 암호 방식에 비해 비교적 간결하기 때문에 네트워크나 CPU의 오버헤드가 적고 빠르게 작동한다. 비대칭 키 암호 방식은 대칭 키 암호방식의 단점을 보완했으나, 많은 연산을 요구하기 때문에 속도가 느리다. 그렇기에, 용량이 큰 파일을 암호문으로 처리하는 데에 한계가 있다. 그렇기 때문에 대부분의 웹 프로토콜은 대칭 암호와와 공개 키 암호 방식을 혼합하여 사용하는 디지털 봉투 라는 기술을 사용한다. 데이터를 빠른 공개 키로 암호화를 한 뒤, 암호화에 사용된 대칭키를 비대칭 키로 암호화하여 전송하는 기술이다. 대표적으로 TLS(Transport Layer Security)의 암호화 프로토콜로, TLS에서는 공개 키 암호 방식을 사용해 대칭 키 암호 방식에 사용할 키를 공유한다.

 

 

💡공개 키 암호 방식과 대칭 키 암호 방식의 비교

 

1. 키의 길이

대칭 키 암호화 알고리즘은 키의 길이가 임의로 지정되며, 보안 수준에 따라 128비트냐 256 비트로 설정된다. 반면, 공개 키 암호화 알고리즘은 공개 키와 개인 키가 수학적으로 한 쌍을 이루어야 하기 때문에 수학적 패턴을 가지고 있다. 어떠한 패턴을 가졌다는 것은 곧 공격자에 의해 패턴이 간파될 수 있따느 것을 의미한다. 따라서 공개 키 암호 방식 알고리즘은 대칭 키 방식과 동등한 수준의 보안을 제공하기 위해 훨씬 더 긴 키를 사용한다. 일반적으로 128비트의 대칭 키와 2,048 비트의 공개 키가 비슷한 수준의 보안을 제공한다.

 

2. 연산 속도

대칭 키 암호 방식에 사용되는 블록 암호화나 스트림 암호화 모두 연산이 단순하기 때문에 연산 속도가 빠르다. 따라서 대용량 데이터를 전송해야할 때 많이 사용한다. 반면, 공개 키 암호 방식의 경우, 복잡한 수학적 연산을 수행해야 하므로 비교적 속도가 느리며, 키 길이가 길기 때문에 훨씬 더 많은 연산 능력이 필요하다. 주로 데이터 전송에 앞서 안전한 통신 채널을 인증하고 구축하기 위한 소규모 트랜잭션에 많이 사용된다.

 

3. 보안

대칭 키 암호방식에서는 단일한 개인 키를 공유해야 하기 때문에, 키 노출 시 보안 위협이 크다. 반면, 공개 키 암호 방식의 경우, 암호화할 때 공개 키를 사용하고, 복호화할 때에는 개인 키를 사용하여 이러한 문제를 해결한다.

 

4. 알고리즘

잘 알려진 대칭 키 암호 방식 알고리즘에는 RC4, AES, DES, 3DES 등이 있으며, 공개 키 암호 방식 알고리즘에는 RSA, 디피=헬먼, ECC 등이 있다.

반응형

댓글