CS

CS_네트워크_대칭키 vs 비대칭키

99duuk 2024. 6. 7. 01:29

https://blog.skby.net/%EC%95%94%ED%98%B8%ED%99%94-encryption/



■  대칭키 (Symmetric-key Cryptography)

 

대칭키는 하나의 키를 사용하여 데이터를 암호화하고 해독하는 방식이다. 

송신자와 수신자는 동일한 키를 공유하고 있어야 하며, 이 키는 비밀로 유지되어야 한다. 

 

키를 교환하는 중 키가 탈취될 수 있고(키 전달 과정에서 위험 노출),

사람이 증가할수록 전부 따로 키교환이 필요해 관리해야 할 키가 방대해진다. 

 

 

대칭키 암호화 알고리즘으로는 AES, DES 등이 있다.

 

 

장점: 비교적 빠르며, 큰 데이터 블록을 처리하는데 적합하다.

단점: 키 관리가 어렵다. 키를 안전하게 공유하는 것이 중요한 문제이다. 

 

파일 암호화나, VPN에서 사용된다. 

 

 


 

 

 

■  비대칭키 암호화 (Symmetric-key Cryptography) / (공개키, 비밀키)

두 개의 키를 사용하는 방식이다.

1. 보통은 공개키를 사용하여 데이터를 암호화하고 비밀키를 사용하여 데이터를 복호화한다.

          데이터 암호화: 공개키로 암호화, 비밀키로 복호화 (주로 데이터 기밀성을 유지하기 위해 사용)

  •           예: 이메일 암호화

 

2. 반대로 비밀키를 사용하여 데이터를 암호화(즉, 서명)하고 공개키를 사용하여 복호화(즉, 서명 검증)하는 경우도 있다.

          전자 서명: 비밀키로 서명(암호화), 공개키로 서명 검증(복호화)

(주로 데이터의 무결성과 인증을 위해 사용)

  •           예: 소프트웨어 업데이트 서명 및 검증

          이 방법은 데이터의 무결성과 송신자의 신원을 검증하는 데 사용된다.

          여기서 암호화된 데이터는 실제 데이터를 암호화하는 것이 아니라,

          데이터의 해시값을 비밀키로 암호화하여 서명으로 사용하는 방식이다.

          이를 통해 데이터를 받은 사람이 송신자의 공개키를 사용하여

          서명을 검증함으로써 데이터가 원본 그대로이며, 송신자가 맞다는 것을 확인할 수 있다.

 

더보기

        

1. 데이터 암호화 (Confidentiality)

사례: 이메일 암호화

  1. **송신자(Alice)**는 **수신자(Bob)**의 공개키를 사용하여 이메일을 암호화합니다.
  2. 암호화된 이메일은 오직 Bob의 비밀키로만 복호화할 수 있습니다.
  3. Bob이 이메일을 받을 때, 자신의 비밀키를 사용하여 이메일을 복호화합니다.

이 과정에서 공개키는 누구나 사용할 수 있지만, 비밀키는 오직 Bob만이 가지고 있습니다. 따라서 Alice가 Bob의 공개키로 암호화한 이메일은 오직 Bob만이 읽을 수 있게 됩니다.

예시:

  • Alice가 "Hello Bob"이라는 메시지를 Bob의 공개키로 암호화하여 전송합니다.
  • Bob은 자신의 비밀키로 암호화된 메시지를 복호화하여 "Hello Bob"이라는 원문을 확인합니다.

2. 전자 서명 (Authentication and Integrity)

사례: 소프트웨어 업데이트 배포

  1. **개발자(Alice)**는 소프트웨어 업데이트 파일의 해시값을 자신의 비밀키로 암호화하여 서명합니다.
  2. Alice는 소프트웨어 업데이트 파일과 함께 서명을 배포합니다.
  3. **사용자(Bob)**는 Alice의 공개키를 사용하여 서명을 검증합니다.
  4. 검증이 성공하면, 소프트웨어 업데이트 파일이 Alice에 의해 서명되었고 변조되지 않았음을 확인할 수 있습니다.

이 과정에서 비밀키는 오직 Alice만이 가지고 있으며, 공개키는 누구나 접근할 수 있습니다. 따라서 Alice의 비밀키로 서명된 서명은 오직 Alice의 공개키로만 검증할 수 있습니다.

예시:

  • Alice가 "Software Update v1.2" 파일의 해시값을 자신의 비밀키로 암호화하여 서명합니다.
  • Bob은 이 서명된 해시값을 Alice의 공개키로 복호화하여 파일의 무결성과 출처를 확인합니다.

 

 

이름 그대로 키가 공개되어 있기 때문에 키를 교환할 필요가 없어진다.

공개키는 모든 사람이 접근 가능한 키고,

비밀키는 각 사용자만이 가지고 있는 키다. 

 

 

비대칭키 방식으로는 RSA, ECC 등이 있다.

 

장점: 키 분배가 쉽고, 안전하게 키를 공유할 수 있다. 

단점: 대칭키 암호화에 비해 속도가 느리고, 계산 복잡도가 높다.

 

키 분배가 쉬워 안전한 키 교환, 디지털 서명, SSL/TLS에서 사용된다.

 

 

ex) A -> B 데이터 보낼 때, A는 B의 공개키로 암호화한 데이터를 보내고 B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에 암호화된 데이터는 B의 공개키에 대응하는 개인키를 갖고 있는 B만 볼 수 있다.

 

 

 


두 방식은 안전한 통신을 위해 서로 보완적으로 사용된다.

 

대칭키 암호화속도가 빠르고 대량의 데이터를 효율적으로 처리할 수 있지만, 

키를 안전하게 분배하기 어렵다.

 

비대칭키 암호화두 개의 키(공개키, 비밀키)를 사용하여 안전하게 키를 교환할 수 있지만,

암호화와 복호화 속도가 느리고 계산 비용이 크다. 

 

 

두 방식은 보완적으로 사용되어 

 

1. 키 교환 : 비대칭키 암호화를 사용해 송신자와 수신자가 안전하게 대칭키를 교환한다.

                    ex) A는 B의 공개키로 대칭키를 암호화해 전송하고, B는 자신의 비밀키로 이를 복호화하여 대칭키를 얻는다.

 

2. 데이터 암호화 : 안전하게 교환된 대칭키를 사용해 대량의 데이터를 빠르고 효율적으로 암호화하고 복호화한다. 

                    이렇게 하면 통신 속도와 효율성을 높일 수 있다. 

 

 

 

이런 방식으로,

비대칭키 암호화의 안전한 키 교환과,

대칭키 암호화의 빠른 데이터 처리 장점을

 

결합하여 안전하고 효율적인 통신을 구현한다. 

                 

 

 

 

예시 시나리오 (SSL/TLS 방식)

  1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄.
  2. B는 암호문을 받고, 자신의 비밀키로 복호화함.
  3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄.
  4. A는 자신의 대칭키로 암호문을 복호화함.
  5. 앞으로 이 대칭키로 암호화하여 통신함.

 

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