CS/Network

[네트워크] 대칭키와 공개키

bu119 2023. 6. 26. 16:40
728x90
반응형
  • 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말한다.
  • 공개키 암호화 방식은 암복호화에 사용하는 키가 서로 다른 암호화 방식을 말한다. (비대칭키 암호화라고도 한다.)

 

대칭키(Symmetric Key)

암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘

 

하나의 키를 양쪽(client & server)가 같이 사용한다.

대칭키는 암복호화키가 동일하므로 해당 키를 아는 사람이 문서를 복호화할 수 있게 된다.

 

 

장점

동일한 키를 주고받기 때문에

  • 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르다.
  • 비교적 간편하다.

단점

  • 암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다. (키를 교환해야 하는 문제가 발생)

 

이게 왜 단점?

  1. 물리적으로 직접 만나서 전달하지 않는 한, 대칭키를 전달하는 과정에서 해킹의 위험에 노출될 수 있다. (키가 탈취될 수도 있다.)
  2. 사용자가 증가할수록 각각의 키가 필요하기 때문에 관리해야 할 키의 개수가 방대해진다.

 

이러한 문제를 해결하기 위한 방법으로 키의 사전 공유키 배포 센터 사용Diffie-Hellman 키 교환공개키 암호화 방식 등이 있다.

 

대표적인 알고리즘은으로는 DES3DESAESSEEDARIA 등이 있다.

 

 

공개키(Public Key) / 비대칭키(Asymmetric Key)

암호화와 복호화에 사용하는 암호키를 분리한 알고리즘

 

공개키와 비밀키 두 개가 존재한다.

  • 공개키: 모든 사람이 접근 가능한 키
  • 개인키: 각 사용자만이 가지고 있는 키

 

공개키 암호화 방식은 효율은 떨어지지만, 대칭키 암호화 방식의 키를 교환해야 하는 문제를 해결하기 위해 등장했다.

  • 대칭키일 때는 송수신자 간만 키를 알아야하기 때문에 분배가 복잡하고 어렵지만
  • 공개키와 비밀키로 분리할 경우, 남들이 알아도 되는 공개키만 공개하면 되므로
  • 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화할 수 있는 암호키(공개키)를 대중에 공개한다.
  • 이름 그대로 키가 공개되어있기 때문에 키를 교환할 필요가 없다.

 

 

 

공개키(Public Key)만 대중에게 공개하고, 암호화 된 데이터는 고유한 비밀키(Private Key)로만 복호화할 수 있다. 이 비밀키를 가진 사용자만이 내용을 열어볼 수 있다.

 

장점

  • 수신자의 개인키로만 해독할 수 있으므로 안전하다. (키 전달 문제를 해결)

단점

  • 암호화와 복호화를 위해 복잡한 수학 연산을 수행하기 때문에 대칭키 알고리즘에 비해 속도가 느리다. (약 1000배)

 

대표적인 알고리즘으로는 Diffie-Hellman, RSA, DSA, ECC, 등이 있다.

 

 

암호화/복호화 시나리오

대칭키(Symmetric Key) 암호화 시나리오

1. A는 사전에 공유된 대칭키로 데이터를 암호화하여 B에게 전송한다.
2. B는 같은 대칭키로 데이터를 복호화한다.

 

공개키(Public Key) 암호화 시나리오

1. A가 웹 상에 공개된 B의 공개키를 이용하여 평문을 암호화하여 B에게 보낸다.
2. 이 암호문(CiperText)는 B가 개인적으로 가지고 있는 B의 비밀키로만 복호화가 가능하다.
3. B는 자신의 비밀키로 복호화한 평문을 확인하고, A의 공개키로 응답을 암호화하여 A에게 보낸다.
4. A는 A의 비밀키로 암호화된 응답문을 복호화한다.
  • 장점 : 대칭키의 단점을 완벽하게 해결한다.
  • 단점 : 암호화/복호화가 매우 복잡하다. (암호화하는 키가 복호화하는 키가 서로 다르기 때문에)

 

하지만 이 방식은 Confidentiallity만 보장해줄 뿐, Integrity나 Authenticity는 보장해주지 못한다.

  • 이는 MAC(Message Authentication Code)나 전자 서명(Digital Signature)으로 해결한다.
  • (MAC은 공개키 방식이 아니라 대칭키 방식임을 유의하자! T=MAC(K,M) 형식)

 

이론적으로 완벽한 암호화 시나리오 (대칭키+공개키)

대칭키와 공개키 암호화 방식을 적절히 혼합해보면? (하이브리드 방식)

1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하여 B에게 보낸다.
2. B는 암호문을 받아, 자신(B)의 비밀키로 복호화한다.
3. B는 A로 부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
4. A는 자신의 대칭키로 암호문을 복호화한다.
5. 계속 대칭키로 암호화 통신을 한다.

 

즉 ,대칭키를 주고 받을 때만 공개키 암호화 방식을 사용하고, 이후에는 계속 대칭키 암호화 방식으로 통신하는 것이다.

 

이 방식이 바로 SSL(Secure Socket Layer)의 시초가 되었다.


참고 자료

https://jaehoney.tistory.com/290

https://velog.io/@yanghl98/Network-%EB%8C%80%EC%B9%AD%ED%82%A4%EA%B3%B5%EA%B0%9C%ED%82%A4-Symmetric-KeyPublic-Key

728x90
반응형