[CS] 대칭키와 비대칭키 암호화

insung·2025년 10월 15일

CS

목록 보기
18/20

오늘은 웹 통신의 핵심 보안 기술인 '암호화'에 대해 이야기해 보려 한다.
특히, 대칭키(Symmetric Key) 와 비대칭키(Asymmetric Key) 암호화 방식의 개념을 명확히 이해하고, HTTP와 HTTPS에 어떻게 적용되어 웹을 안전하게 만드는지 알아보려 한다.

암호화, 왜 필요한 걸까?

  • 웹에서 데이터를 주고받을 때(예: 로그인 정보, 결제 정보), 이 데이터가 누군가에게 탈취된다면 심각한 문제가 발생한다.
  • HTTP 는 데이터를 암호화하지 않은 평문 그대로 전송한다. 따라서 중간에서 데이터를 가로채면 내용이 그대로 노출된다.
  • 이 취약점을 해결하기 위해 등장한 것이 바로 보안 계층을 추가한 HTTPS(HyperText Transfer Protocol Secure) 이다.
  • HTTPS는 통신에 암호화를 적용하여 제3자가 데이터를 엿보거나 위변조하는 것을 막는다. 이때 사용되는 핵심 기술이 바로 대칭키와 비대칭키 암호화이다.

대칭키 암호화

  • 하나의 키를 사용하여 암호화와 복호화를 모두 수행하는 방식이다.
  • 암호화에 사용한 키와 복호화에 사용한 키가 같다는 의미에서 '대칭'이라는 이름이 붙었다.
  • 대표적인 알고리즘: AES, DES, SEED 등

특징 및 장단점

  • 속도 : 매우 빠름, 알고리즘이 단순하여 대용량 데이터 암호화에 유리.
  • 키 관리 : 어렵다. 송신자와 수신자가 안전하게 키를 공유해야 한다. 키가 노출되면 데이터 보안이 무너진다.
  • 보안성 : 키 공유 과정에서 키 탈취 위험이 있다.

키 공유의 어려움

  • 대칭키는 속도가 빠르지만, 통신을 시작하기 전에 이 '비밀 키'를 상대방에게 안전하게 전달해야 하는 문제가 발생한다.
  • 이 키를 안전하지 않은 채널(예: HTTP)로 보내면, 암호화 자체가 무의미해진다.
  • 이 문제를 해결하기 위해 비대칭키 암호화가 필요하다.

비대칭키 암호화 (공개키 암호화)

  • 서로 다른 두 개의 키, 즉 공개키(Public Key) 와 개인키(Private Key) 한 쌍을 사용하는 방식
  • 한 쌍의 키 중 하나로 암호화하면, 나머지 하나로만 복호화할 수 있다.
  • 공개키는 누구나 알 수 있도록 공개하며, 개인키는 소유자만이 비밀리에 보관한다.
  • 대표적인 알고리즘: RSA, ECC 등

특징 및 장단점

  • 속도 : 매우 느리다. 알고리즘이 복잡하여 대용량 데이터 암호화에는 비효율적
  • 키 관리 : 용이하다. 공개키는 누구나 가질 수 있고, 개인키만 안전하게 보관하면 된다.
  • 보안성 : 공개키로 암호화해도 개인키 없이는 복호화할 수 없어 보안성이 높다.

키의 역할 분리

  • 비대칭키는 느리지만, 키를 공개해도 안전하다는 장점이 있다.
  • 주로 데이터를 암호화하기보다는 상대방의 신원을 인증하거나 대칭키를 안전하게 교환하는 용도로 사용된다.

HTTPS, 두 암호화 방식의 '하이브리드' 사용

  • HTTPS는 대칭키의 빠른 속도와 비대칭키의 안전한 키 교환이라는 장점을 모두 활용하는 하이브리드(Hybrid) 방식을 사용한다.

  • 초기 연결 및 인증 (비대칭키 사용)

    • 클라이언트는 서버에 접속을 시도한다.
    • 서버는 자신의 공개키가 담긴 SSL/TLS 인증서를 클라이언트에게 전송한다.
    • 클라이언트는 이 서버의 공개키를 사용하여 통신에 사용할 대칭키(세션 키) 를 암호화한다.
    • 암호화된 대칭키를 서버로 전송한다.
  • 대칭키 복호화 (개인키 사용)

    • 서버는 자신의 개인키를 사용하여 클라이언트가 보낸 암호화된 데이터를 복호화하고, 대칭키(세션 키) 를 얻는다.
  • 데이터 통신 (대칭키 사용)

    • 클라이언트와 서버는 서로 공유된 동일한 대칭키를 갖게 된다.
    • 이후 실제 데이터(HTTP 메시지) 전송은 이 대칭키를 사용하여 암호화/복호화하며, 빠르고 효율적으로 통신한다.

대칭키와 비대칭키 암호화는 각각의 장단점을 보완하며, HTTPS라는 안전한 통신 환경을 구축하는 핵심 기술이다.

단 하나의 완벽한 방식보다는, 여러 기술을 조합하여 최적의 효율과 보안성을 달성하는 방향으로 발전하고 있다고 볼 수 있다.

profile
안녕하세요 프론트엔드 관련 포스팅을 주로 하고 있습니다

0개의 댓글