🔑 대칭키
대칭키 암호화 방식이란
: 동일한 키로 암호화, 복호화가 가능한 방식이다.
종류
- 블록 암호 방식 : 정보를 (정해진) 블록 단위로 암호화하는 방식
- 스트림 암호 방식 : 이진화된 평문 스트림과 이진 키 스트림의 배타적 논리합(XOR) 연산으로 암호문을 생성하는 방식
대표적인 알고리즘
DES, 3DES, AES, SEED, ARIA
(위 알고리즘은 모두 블록 암호 방식이다.)
장점
단점
- 키 배송 문제 : 키를 교환하는 중 키가 탈취될 수 있다.
- 키 관리 문제 : 1:1로 키를 교환하는 방식이기에 사용자가 증가하면 관리해야 할 키 또한 방대하게 많아진다. (심지어 강한 보안을 위해서는 키를 주기적으로 교환해 주어야 하는 번거로움이 있다.)
💡 대칭키 암호화 방식의 가장 큰 문제점인 '키 배송 문제'를 해결하기 위해서는 키 배포 센터, Diffie-Hellman 키 교환 등의 방법이 있으나 비대칭키를 사용함으로써도 그 문제를 해결할 수 있다.
우선 비대칭키가 무엇인지 알아보고, 비대칭키 암호화 방식은 어떤 절차를 거치는지 알아보자! :>
🔑 비대칭키
비대칭키 암호화 방식이란
: 암호화와 복호화에 사용되는 키가 서로 다른 방식이다.
쉽게 말해,
- A키로 암호화를 하면 B키로 복호화를 할 수 있다.
- B키로 암호화를 하면 A키로 복호화를 할 수 있다.
이는 다음과 같은 특징을 가진다.
- 둘 중 하나를 개인키(Private Key)라 부르며, 이는 자신만 가지고 있고 공개되지 않는다.
- 나머지 하나를 공개키(Public Key)라고 부르며 타인에게 제공한다. 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전하다.
(비대칭키의 두 키가 개인키, 공개키이기에 비대칭키 암호화 방식을 '공개키' 암호화 방식이라고도 한다.)
암호화-복호화 과정
1) B의 공개키/개인키 쌍 생성
2) 공개키 공개(등록), 개인키는 본인이 소유
3) A가 B의 공개키를 받아옴
4) A가 B의 공개키를 사용해 데이터를 암호화
5) 암호화된 데이터를 B에게 전송
6) B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
장점
비대칭키 암호화 방식은 공개키가 공개되어 있기 때문에 다음과 같은 장점을 얻는다.
- 키 배송 문제 해결 : 키교환이나 분배를 할 필요가 없다.
- 기밀성 : 중간 공격자가 B의 공개키를 얻는다고 해도 B의 개인키로만 복호화가 가능하기 때문에 기밀성을 제공한다. (공개키로 암호화)
- 인증 : 공개키로 복호화가 가능한 데이터는 개인키를 가지고 있는 송신자만이 (암호화를 통해) 만들어낼 수 있으므로 일종의 인증 기능도 제공한다. (개인키로 암호화)
- 부인 방지 : 부인 방지란 송신자가 수신자가 메시지를 주고받은 사실을 부인하지 못하도록 방지하는 것이다. B가 A에게 개인키로 문서를 암호화하고 공개키를 공개하도록 요구한다. A의 개인키로 된 문서를 받아 확인하고 가지고 있음으로써 'A가 이 문서를 발행했다'라는 사실을 증명할 수 있다. (개인키로 암호화)
단점
💡 비대칭키 암호화 방식의 거의 유일한 단점이 '속도가 느리다'라는 점인데, 이는 대칭키와 함께 사용하면 해결할 수 있다! 아래에서 살펴보자 :>
🔑 대칭키와 비대칭키 🔑
- A가 B의 공개키로 (암호화 통신에 사용할) 대칭키를 암호화해 B에게 송신
- B는 암호문을 받고, B의 개인키로 복호화 → 대칭키 획득
- B가 A로부터 얻은 대칭키로 평문을 암호화해 A에게 송신
- A는 대칭키로 암호문을 복호화
- 3~4와 같이 대칭키를 사용해 통신
간결히 말하자면, 대칭키를 비대칭키로 암호화해 공유하고, 이후로는 대칭키를 사용해 통신하는 것이다👍
👉 이러한 방식으로 대칭키와 비대칭키를 적절하게 혼합해 사용한다. 이로써 대칭키의 키 배송 및 관리의 문제도 해결하고, 비대칭키의 속도 문제도 해결할 수 있다.😊
📝 정리
대칭키 암호화 방식은 동일한 키로 암호화 및 복호화가 가능한 방식이고, 비대칭키 암호화 방식은 암호화와 복호화에 사용되는 키가 서로 달라 개인키, 공개키의 쌍을 가지는 방식이다. 둘을 혼합해 사용하면 각각의 단점을 모두 보완할 수 있다.