본문 바로가기
카테고리 없음

대칭키, 비대칭키 암호화

by 엔 터 2024. 10. 28.

암호화란

암호(Cryptography)란 0과 1로 이루어진 이진수 데이터를 수학적 계산을 통한 비트 변경을 수행하는 것을 말합니다. 정상적인 데이터(평문 - Plaintext)의 2진수 데이터를 암호화라는 과정으로 데이터를 변경하고, 복호화라는 과정을 통해 데이터를 원래대로 돌리는 기술을 의미합니다.

 

양방향 암호화에 사용되는 2가지 기법

  • 대칭키 암호화 기법
  • 비대칭키(공개키) 암호화 기법

대칭키 암호화 기법이란

  • 대칭키(Symmetric Key) 암호화 하나의 키로 암호화 복호화를 모두 수행하는 것을 말합니다. 이러한 대칭키 암호 알고리즘은 다양한 종류가 있습니다.

대칭키 암호화 기법

장점

  • 시스템 개발 환경에 용이하다.
  • 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합하다.

 

단점

  • 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋다.
  • 당사자간에 동일한 키를 공유해야 하기 때문에 키관리의 어려움이 있다.
  • 부인 방지 기능을 제공하지 못한다

비대칭키 암호화 기법이란

  • 비대칭키(Asymmetric Key) 암호화는 다른 말로 공개키 암호 알고리즘라고 알려져 있습니다. 이는 하나의 키가 아닌 암호화에 쓰이는 키 값과 복호화에 쓰이는 키 값이 다른 것을 의미합니다.
  • 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생했습니다. 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키입니다

비대칭키 암호화 기법

장점

  • 키 분배 및 키 관리가 용이하다.
  • 기밀성, 무결성을 지원한다.
  • 부인 방지 기능을 제공한다.
  • 암호학적 문제를 해결할 수 있다.

 

단점

  • 상대적으로 키의 길이가 길다.
  • 연산속도가 느리다.

 

부인 방지 기능이란

부인 방지란 송신자나 수신자가 메세지를 주고받은 사실을 부인하지 못하도록 방지하는 것을 말한다.

예를 들어 A 가 B 에게 돈을 빌린 후 '차용증'에 서명했는데, 후에 A 는 돈을 빌리지 않았으며 차용증 역시 자신의 서명이 아니라고 부인 하는 경우를 생각해 볼 수 있다.
이 때, B 는 문서에 있는 서명이 A 의 것이 맞다는 것을 확인하는 것이 '부인 방지'이다.

비대칭키/공개키 암호화 방식에서는 본질적으로 '발행자의 증명'과 동일한 절차로 이루어진다.

  1. B는 A에게 개인키/공개키를 생성한 뒤 공개키를 공개하도록 요구한다.
  2. B는 A에게 '문서'를 개인키로 암호화할 것으로 요구한다.
  3. B는 이 '암호화된 문서'를 수령한다.
  4. B는 '암호화된 문서'를 A 의 공개키로 해독하여, 이 문서가 A 의 개인키로 제대로 암호화 되었음을 검증할 수 있다.
  5. 만약 해독되지 않는다면, 개인키-공개키 쌍이 맞지 않음을 의미한다. 공개한 공개키가 잘못되었거나, 다른 개인키로 암호화 했음을 뜻한다.

이 '암호화된 문서'는 A 의 공개키로만 해독이 가능하므로, 이 '암호화된 문서'는 A 만이 발행할 수 있다는 증거가 된다. 또한, 변조되지 않았음도 동시에 증명할 수 있다.

 


대칭키와 비대칭키의 혼합 사용

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

HTTPS

  • HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터 통신을 암호화한 프로토콜로, 웹 브라우저와 서버 간의 안전한 통신을 보장합니다. 이는 TCP 기반에서 동작하며, 비대칭키 암호화로 세션 키를 교환한 후 대칭키 암호화로 데이터를 암호화하여 데이터의 기밀성, 무결성, 신뢰성을 제공합니다.

HTTPS에서는 대칭키 암호화비대칭키 암호화혼합하여 사용함으로써 보안성과 효율성을 모두 달성합니다.

  1. 비대칭키 암호화(공개키 암호화):
    • 역할: 초기 통신 단계에서 세션 키(대칭키)를 안전하게 교환하고, 서버의 신원을 인증하는 데 사용됩니다.
    • 과정:
      • 클라이언트는 서버에 접속하여 서버의 디지털 인증서를 요청합니다.
      • 서버는 자신의 공개키가 포함된 디지털 인증서를 클라이언트에게 전송합니다.
      • 클라이언트는 인증서를 신뢰할 수 있는 인증 기관(CA)를 통해 검증합니다.
      • 클라이언트는 세션 키로 사용할 프리마스터 시크릿을 생성하고, 서버의 공개키로 암호화하여 서버로 전송합니다.
      • 서버는 자신의 개인키로 이를 복호화하여 세션 키를 얻습니다.
  2. 대칭키 암호화:
    • 역할: 실제 데이터 통신을 암호화하는 데 사용됩니다.
    • 이유: 대칭키 암호화는 속도가 빠르고 효율적이어서 대량의 데이터 전송에 적합합니다.
    • 과정:
      • 클라이언트와 서버는 공유한 세션 키를 사용하여 모든 통신 데이터를 암호화하고 복호화합니다.
  3. HTTPS의 동작 원리 요약:
    • TCP 연결 수립: 클라이언트와 서버는 TCP 3-웨이 핸드셰이크로 연결을 수립합니다.
    • SSL/TLS 핸드셰이크: 비대칭키 암호화를 통해 세션 키를 안전하게 교환합니다.
    • 데이터 암호화 통신: 대칭키 암호화를 통해 빠르고 안전하게 데이터를 전송합니다.