CS/네트워크

대칭키 VS 공개키

이충무 2022. 9. 20. 22:59

개요


  • 대칭키 암호화 방식은 암호화 복호화에 사용하는 키가 동일한 암호화 방식
  • 공개키 암호화 방식은 암호화 복호화에 사용하는 키가 서로 다른 방식
  • 공개키 암호화 방식은 비대칭키 암호화라고도 부름
  • 공개키 암호화 방식은 송수신자 모두 한쌍의 키(개인키, 공개키)를 가짐
  • 개인키는 비밀키로 비공개키를 의미

대칭키


개요

  • 하나의 비밀키를 Client와 Server 모두가 같이 사용
  • 암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘
  • Session Key, Secret Key, Shared Key, 단용키라고도 함
  • 대표적인 알고리즘으로 공인 인증서 암호화 방식으로 유명한 SEED 알고리즘, DES, 3DES, 3AES, ARIA, 최근 주목받고 있는 암호화 알고리즘인 ChaCha20 등이 존재
  • 암호화 하는 단위에 따라 스트림 암호와 블록암호로 구별

장점

  • 암호화 속도가 빠름
  • 대용량 Data 암호화에 적합
  • 기밀성 제공

단점

  • 키 배송 문제
    • 키를 교환해야 하는 문제
    • 탈취 관리 문제와 사용자가 증가할수록 키관리가 어려워지는 문제 모두 키 배송 문제 때문에 발생
    • 키의 사전공유, 키 배포센터 이용, Diffie-Hellman 키교환, 공개키 암호에 의한 해결 등의 방식을 통해 문제 해결
  • 탈취 관리 문제
    • 키를 교환하는 과정에서 키가 탈취될 수 있는 문제 발생
    • 비밀키 하나만 알아내면 암호화된 내용을 확인 가능하기 때문에 해커로 부터 안전하지 않음
  • 사용자가 증가할 수록 키관리가 어려워짐
    • 사용자가 증가할수록 전부 따로따로 키 교환을 해야하기 때문에 발생
    • 통신을 n명이 한다면 nC2만큼의 작업이 필요
  • 확장성이 떨어짐
  • 무결성, 인증, 부인방지를 보장하지 않음

스트림 암호

  • 연속적인 비트나 바이트를 계속해서 입력받아 그에 해당하는 암호화 비트나 바이트를 생성하는 방식
  • 블록 암호에 비해 상대적으로 사용빈도가 낮음
  • 블록 암호에 비해 가볍고 고속 동작이 용이해 무선 환경이나 스트리밍 서비스와 같은 환경에서 많이 사용
  • 구현이 용이하고 수행속도가 빨라 수신되는 정보의 실시간 처리가 가능
  • 계산 능력이 한정된 휴대폰이나 RFID 센서등에 이용

블록 암호

  • 정해진 한 단위(블록)을 입력받아 그에 대응하는 암호화 블록을 생성하는 방식
  • 적절한 운용모드를 조합하여 블록단위보다 큰 입력 처리 가능

공개키


개요

  • 암호화와 복호화에 사용되는 키가 서로 다른 암호화 알고리즘
  • 암호화에 공개키 사용
  • 복호화에 비밀키(개인키) 사용
  • 공개키 암호를 구성하는 알고리즘을 대칭키 암호 방식과 비교해 비대칭 암호라고 함
  • 공개키는 누구나 알 수 있지만, 비밀키는 소유자만 알 수 있기 때문에 특정 비밀키를 가지는 사용자만이 내용을 열어볼 수 있음
  • 속도가 느려 긴 문서의 암호화 보다는 대칭키 알고리즘의 키 값에 대한 암호화에 사용
  • 대표적으로 Diffie-Hellman, RSA, DSA, ECC 알고리즘 존재

과정

  1. B가 공개키와 개인키 한쌍의 키 생성
  2. 공개키는 공개(등록), 개인키는 본인이 소유
  3. A가 B의 공개키를 받아옴
  4. B의 공개키를 이용해 메세지 암호화
  5. 암호화된 메세지 B에게 전송
  6. B는 개인키를 이용해 암호화된 메세지 복호화

장점

  • 키 교환 문제 없음
  • 기밀성, 인증, 부인방지 기능 제공
  • 암호화된 메세지는 비밀키로만 복호화 할 수 있어 안전하게 메세지 전달 가능

단점

  • 속도가 느림(대칭키의 약 1000배)

방식

암호모드

  • 송신자 공개키로 암호화 후 송신자 사설키로 복호화
  • 소량의 메세지 암호화에 사용
  • 주로 키 교환의 용도로 사용

인증 모드

  • 송신자 사설키로 암호화 후 송신자 공개키로 복호화
  • 메세지를 인증(부인방지)하기 위해 사용

암호학적 해시함수(Cryptographic hash)


개요

  • 공개키의 단점인 메세지의 크기가 크면 암호화 속도가 느린 점을 해결하기 위한 방식
  • 메세지에 해시함수를 적용하면 메세지의 크기에 상관없이 해시함수에서 정의해놓은 일정한 크기의 데이터로 변경
  • SHA256 방식 사용시 메세지가 256bits로 줄어듬

특징

일방향성

  • 메세지 m에 해시함수를 적용해 h(m)을 만드는 계산은 빠르지만 h(m)으로 원본 메시지를 복구하는 건 불가능

충돌 방지

  • 서로다른 메세지 m과 n에 해시함수를 적용시켜 h(m), h(n)을 만들때 동일한 m과 n의 쌍을 찾는것은 불가능
  • 서로 다른 메세지의 해쉬값들은 서로 다를 수 밖에 없음
  • h(m)의 경우의 수는 2^256개

SSL(Secure Socket Layer)


개요

  • Netscape사에서 만든 계층 , 프로토콜
  • 웹서버와 브라우저 사이의 보안 담당
  • Certificate Authority(CA)라고 불리는 서드 파티로부터 서버와 클라이언트의 인증에 사용

SSL인증서

  • 클라이언트와 서버 간의 통신을 제3자가 보증해주는 전자화된 문서
  • 웹사이트가 믿을 만 한가에 대한 지표
  • 인증서는 트리구조를 이룸
  • 최상위 인증서는 Root CA라고 하며 인증서를 발행한 기관을 의미

SSL 통신과정

  1. 웹브라우저에서 웹서버로 SSL 통신 요청
  2. 웹서버는 인증서 전송(인증서에 개인키 포함)
  3. 웹브라우저는 웹서버에서 받은 인증서가 신뢰할 수 있는 지 확인
  4. 웹브라우저는 웹서버로부터 받은 개인키를 사용해 랜덤한 대칭키 및 http 데이터를 암호화해 웹서버로 전송
  5. 웹서버는 개인키를 이용해 랜덤 대칭키와 http데이터 복호화
  6. 웹서버는 요청받은 URL에 대한 응답을 웹브라우저로부터 전달받은 랜덤 대칭키를 이용해 데이터를 암호화해 웹브라우저로 전송
  7. 웹브라우저는 대칭키를 이용해 http데이터를 복호화해 화면에 정보 출력

대칭키 VS 공개키


※용어

기밀성(Confidentiality)

  • 메세지에 대한 내용을 송신자와 수신자만 알수 있도록 하는 것

무결성(integrity)

  • 메세지의 내용이 중간에 변조되지 않도록 하는 것

부인방지(non-repudiation)

  • 메세지를 받았을 때 송신자가 딴소리 하지 못하도록

'CS > 네트워크' 카테고리의 다른 글

Blocking,Non-blocking & Synchronous,Asynchronous  (0) 2022.09.20
TLS/SSL HandShake  (0) 2022.09.20
HTTP & HTTPS  (0) 2022.09.20
UDP  (0) 2022.09.20
TCP/IP, 흐름제어 혼잡제어  (0) 2022.09.20