본문 바로가기
Blockchain

[Security] 대칭키 비대칭키 암호화 방식 비교

by 개발자 염상진 2022. 6. 20.

블록체인에서 보안을 위해서 암호학을 사용합니다. 정보 보안에서는 합리적인 정보 사용을 위해 기밀성, 무결성, 가용성, 부인봉쇄의 4가지 요소를 가지고 있어야 합니다.  또한 상황에 맞는 암호방식을 사용하게 되는데, 크게 대칭키 방식와 비대칭키 암호방식으로 구분됩니다.

  • 기밀성(Confidentiality) : 타인은 볼 수 없음
  • 무결성(Integrity) : 정보가 변하지 않음
  • 가용성(Availability) : 정당한 사용자가 정보 접근 가능
  • 부인방지(Non-Repudiation) : 본인 확인 절차 필요

 

 

대칭키

 

대칭키 암호방식은 암호화 할 때 사용하는 키(Key)와 복호화할 때 키(Key)가 동일한 방식입니다. 대칭키 방식에서는 여러 사용자에게 공유된 1개의 키를 사용합니다. 1개의 키로 정보를 암호화하고 암호화된 정보와 키를 함께 전송합니다. 수신자는 정보와 함께 받은 키를 사용해 복호화를 진행합니다. 대칭키 암호화방식에는 크게 블록암호(Block Cipher)와 스트림 암호(Stream Cipher) 방식이 있습니다. 

 

블록 암호 

평문을 일정한 단위(chunk)로 나눠 그룹화를 진행하고 각 블록을 암호화 합니다. 블록의 길이는 이미 정해져 있으므로 기호의 삽입이나 삭제는 불가능합니다. 암호화 과정에서 여러 변환 과정을 거치기 때문에 전체 암호화 과정에 큰 영향을 미칩니다. 

블록암호는 암호문과 키 사이의 관계를 숨기는 혼돈 이론과 암호문과 평문 사이 관계를 숨기는 확산 이론에 그 기초를 두고 있습니다. DES, AES, SEED, ARIA 등의 종류가 있습니다.

 

스트림 암호

원본 데이터와 같은 길이로 된 키로 Key Stream을 생성합니다. 원본 데이터와 Key Stream을 XOR 연산해서 암호화를 진행합니다. 복호화 과정에서도 암호화된 데이터와 Key Stream을 XOR 연산해서 평문을 얻게 됩니다. 평문을 비트나 바이트 단위로 암호화 하기 때문에 적은 컴퓨터 연산으로도 암호화가 가능합니다.

특히 알고리즘 구현 속도가 빨라 군사적인 목적으로 많이 사용된 암호화 방식입니다. 암호 단위가 비트 혹은 바이트 단위이므로 암호화 과정에 미치는 영향이 작고, Key Stream은 공개되어서는 안됩니다. 한번 사용된 알고리즘은 재사용이 불가능합니다. LFSR, RC4등의 종류가 있습니다. 

 

 

대칭키 문제점

대칭키를 사용할 경우 적은 연산으로 암호화를 진행할 수 있다는 장점이 있지만 치명적인 문제가 있습니다. 데이터와 함께 키를 탈취 당하면 암호화가 무용지물이 된다는 것입니다. 키 배송 위험이 있는 만큼 암호화/복호화에 사용되는 키를 안전하게 보관하는 것이 무엇보다 중요합니다.

 

비대칭키

 

비대칭키는 암호화/복호화 과정에 사용되는 키를 둘로 나눠 관리하게 됩니다. 대칭키의 키 배송 문제를 해결하기 위해 고안되었습니다. 비대칭키 암호방식은 공개키 암호방식과 개인키 암호방식으로 구분됩니다.

 

공개 키 암호방식

공개키를 사용해 데이터를 암호화 하고 개인키로 복화하는 과정을 거치게 됩니다. 공개키로 암호화된 데이터가 개인키로 복호화 될 수 있어야 하므로, 공개키와 개인키는 알고리즘에 의해 수학적으로 연결되어 있습니다. 암호화/복호화 키가 분리되면서 키 배송 문제를 해결할 수 있게 됩니다.

 

 

공개 키 암호 방식의 단점으로 지적되는 것은 결국 속도 입니다. 공개키와 개인키가 수학적으로 연결되어 있어 암호화/복호화에 복잡한 수학적 연산이 필요하므로 데이터를 전송할 때 마다 비대칭키를 사용하게 되면 오버헤드로 인해 성능 저하로 이어집니다. 또한 복호화를 담당하는 개인키가 안전하지 않은 곳에 노출되는 경우 보안위협의 대상이 됩니다.

 

개인 키 암호 방식

공개 키 암호방식과 정반대로 개인키로 암호화를 진행하고 공개키로 복호활를 진행합니다. 즉, 개인키로 데이터를 암호화하고 공개키와 함께 데이터를 전송하게 됩니다. 수신자는 공개키와 데이터를 전달받고 공개키로 복호화를 하여 데이터를 확인할 수 있습니다. 

개인키 암호방식을 사용하는 이유는 데이터를 보호하기 위한 목적 보다는 신원을 확인하기 위한 용도로 사용됩니다. 발신자는 개인키로 암호화했다는 것을 증명함으로써 본인임을 증명할 수 있습니다. 블록체인 전자 서명 방식에 사용됩니다. 

 

대칭키 비대칭키 정리

정리하면 대칭키는 연산이 간단하므로 CPU 오버헤드가 적고 속도가 빠릅니다. 하지만 키 배송 문제를 가지고 있습니다. 비대칭키는 키 배송 문제를 어느정도 해결하지만 복잡한 알고리즘에 의해 속도가 느립니다. 만약 용량이 큰 데이터를 전송한다면 문제가 될 수 있습니다.

HTTPS를 구현하는 TLS(Transport Layer Security)에서는 두 가지 방식을 혼용해 디지털 봉투 기술을 사용합니다. 먼저 비대칭 키로 통신을 만들고 난 후 실제 데이터를 전송하는 단계에서는 대칭키를 사용하는 방식을 사용합니다. 즉, 대칭키로 데이터를 암호화 한 후 암호화에 사용된 대칭키를 비대칭키로 암호화해 전송하게 됩니다. 

 

 

공개 키 암호방식 vs 대칭키 암호방식

 

① 키 길이 

대칭키 암호방식은 보안 수준에 따라 128bit 혹은 256bit로 길이가 고정됩니다. 반명 공개키 암호방식은 공개키와 개인키가 수학적으로 연결되어 있으므로 대칭키에 비해 훨씬 긴 키 길이를 가지고 있습니다. 일반적으로 대칭키 128bit 길이와 동등한 보안 수준을 가지기 위해서 비대칭키는 2048bit의 키 길이를 가지게 됩니다.

 

 

② 연산 속도

대칭키 암호방식에는 블록암호나 스트림암호 방식이 사용됩니다. 두 방법 모두 단순한 연산방식을 사용하므로 속도가 빠르다는 장점을 가집니다. 대용량의 데이터를 비대칭키로 보내면 심각한 오버헤드가 발생합니다. 반면 공개키 암호방식은 두개의 키가 수학적으로 연결되어 있고 키의 길이도 길기 때문에 복잡한 연산을 수행해야 합니다. 

 

③ 보안

대칭키는 키 배송 문제를 항상 가지고 있습니다. 암호화/복호화에 필요한 키가 분실당할 위험이 큽니다. 비대칭키의 경우 이 문제를 해결하기 위해 두개의 키로 각자의 역할을 나눠 어느정도 키 배송 문제를 해결한다고 볼 수 있습니다.

 

④ 알고리즘

대칭키 암호 알고리즘으로는 RC4, AES, DES, 3DES 방식이 사용됩니다. 비대칭키 암호 알고리즘으로는 RSA, ECC, 디피-헬먼등 방식을 사용합니다.

 

 

 

 

[Security] 암호학(Cryptography), 정보 보안 3요소

블록체인에서 암호학은 굉장히 중요한 위치를 가지고 있습니다. 블록을 체인에 연결하고, 송금, 서명 등 전방위적으로 암호학의 아이디어를 차용하고 있습니다. 암호학이란 보다 안전한 암호화

about-tech.tistory.com

 

 

[Blockchain] 블록체인 코인 토큰 차이

블록체인을 처음 공부할 때 코인과 토큰이란 단어가 자주 등장하게 됩니다. 코인과 토큰이 같은 용어로 사용되기도 하면서 혼란을 가중시키고 있습니다. 물론 코인과 토큰 둘다 가치를 가지고

about-tech.tistory.com

 

 

[Blockchain] 토큰 이코노미(Token Economy)란?

토큰 이코노미(Token Economy) 특정 행동을 이끌어 내기 위해 토큰을 인센티브로 제공하고 해당 토큰은 유/무형의 가치와 교환되면서 특정 행동의 시스템적인 강화를 기반으로 한 관리 시스템이라

about-tech.tistory.com

 

댓글