[CS] 대칭키 & 공개키

✅ 대칭키 : 암호화와 복호화에 같은 암호키를 쓰는 알고리즘

→ 하나의 비밀키를 클라이언트와 서버가 같이 사용

  • 장점
    • 구현이 용이함
    • 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합
    • 기밀성을 제공
  • 단점
    • 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋음
    • 키 탈취 및 관리가 어려움
    • 무결성 지원이 부분적으로만 가능
    • 부인 방지 기능을 제공하지 못함
  • 종류
    • 블록 암호(Block Cipher) 방식 : 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭
      → 기밀성 있는 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템으로 만약 암호화하려는 정보가 블록 길이보다 길 경우 특정한 운용 모드가 사용됨
      → SEED, HIGHT, ARIA, LEA, DES, AES
      • 페스탈(Feistel)구조
        • DES, SEED
        • 암복호화 과정에서 역함수가 필요없다는 장점
        • 구현 시 스왑(Swap)단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야한다는 단점
      • SPN 구조
        • AES
        • 암복호화 과정에서 역함수가 필요하도록 설계되어야 한다는 단점
        • 중간에 비트의 이동 없이 한 번에 암복호화가 가능하기 때문에 페스탈 구조에 비해 효율적으로 설계할 수 있다는 장점
    • 스트림 암호(Stream Cipher) 방식 : 이진화된 평문 스트림과 이진 키스트림의 배타적 논리합 연산(XOR)으로 암호문을 생성하는 방식
      → RC4, A5/1, A5/2, A5/3
      • 비트단위로 암호화하기 때문에 블록 암호화 방식보다는 매우 빠르지만 암호화 강도는 약함

✅ 공개키(비대칭키) : 암호화할 때와 복호화할 때의 키를 서로 다른 키로 사용하는 암호화 알고리즘

  • 개인키(Private Key) : 외부에 절대 노출되어서는 안됨
  • 공개키(Public Key) : 공개적으로 개방되어 있음

  • 장점
    • 키 분배 및 키 관리가 용이
    • 기밀성, 무결성을 지원
    • 부인 방지 기능을 제공
      💡 부인방지란, 송신자나 수신자가 메시지를 주고받은 사실을 부인하지 못하도록 방지하는 것
    • 암호학적 문제를 해결할 수 있음
  • 단점
    • 상대적으로 키의 길이가 긺
    • 연산속도가 느림
  • 종류
    • RSA, 디피-헬만(Diffie-Hellman), 타원곡선암호(Elliptic Curve Cryptosystem, ECC), 전자서명

☑️ 공개키를 사용한 암호학적 문제 해결

  • 데이터 보안 (공개키 암호화 → 개인키 암호화 : 데이터를 안전하게 전송할 수 있는 보안 관점)
    • 사용자가 데이터를 서버로 보내는 과정에서 개인정보와 같은 중요 데이터의 경우 암호화해서 보내야 함
      → 서버만 유일하게 가지고 있는 개인키로 복호화할 수 있도록 하고, 서버의 공개키로 암호화하여 해서 보내도록 하면 데이터를 안전하게 전송 할 수 있음
    • 즉, 제 3자가 클라이언트로부터 전송하는 데이터를 볼 수 없음
  • 인증 (개인키 암호화 → 공개키 암호화 : 신뢰할 수 있는 단체라는 것을 인증하는 관점)
    1. 클라이언트와 서버는 서로 확인을 위해 Hankshake 과정을 진행
      → 이 때 서버에서는 CA(공인 인증 기관)에서 받은 인증서(CA의 개인키로 암호화된 전자서명)를 클라이언트로 보냄
    2. 사용자는 CA의 목록을 확인해 공인 인증 기관이 서명한 인증서인이 확인
    3. CA의 공개키를 이용해 해당 인증서를 복호화
    4. 복호화에 성공하면 서버의 공개키를 얻음

☑️ 대칭키와 공개키 암호화 방식을 적절히 혼합 → 하이브리드 방식

⇒ SSL 탄생의 시초

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

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


  대칭키 암호화 방식 비대칭키 암호화 방식
개념 - 암호키(비밀키)=복호키(비밀키)
- 대칭구조
- 암호키(공개키)와 복호키(개인키)가 다르며, 이들 중 복호화키만 비밀로 간직
- 비대칭 구조를 가짐
특징 - 대량의 Data 암호화 유리 - 전자서명, 공인인증서 등 다양한 이용
장점 - 연산속도가 빠르고 구현이 용이
- 일반적으로 같은 양의 데이터를 암호화하기 위한 연산이 공개키 암호보다 현저히 빠름
- 쉽게 기밀성 제공
- 키 분배/키 관리가 용이
- 사용자의 증가에 따라 관리할 키의 개수가 상대적으로 적음
- 기밀성, 무결성을 지원하고 특히 부인 방지 기능을 제공
단점 - 키관리가 어렵
- 무결성 지원이 부분적으로만 가능하며, 부인방지 기능을 제공하지 못함
- 키의 길이가 길고 연산속도가 느림
알고리즘 SEED, HIGHT, ARIA, LEA, DES, AES, RC4, A5/1, A5/2, A5/3 RSA, Diffie-Hellman, ECC, digital signature

'CS > Network' 카테고리의 다른 글

[CS] TLS/SSL HandShake  (0) 2024.01.26
[CS] HTTP & HTTPS  (0) 2024.01.26
[CS] UDP  (0) 2023.11.29
[CS] TCP/IP 흐름제어 & 혼잡제어  (1) 2023.11.29
[CS] TCP 3 &4 way handshake  (1) 2023.10.25