[Security] 비대칭 암호화 (공개 키 암호화)

[Security] 비대칭 암호화 (공개 키 암호화)


Security Encryption
  • 비대칭 암호화(공개 키 암호화)는 공개 키(Public Key)와 개인 키(Private Key)를 사용하는 암호화 방식입니다.
  • 서로 다른 두 개의 키를 사용하는데,
    • 공개 키는 누구에게나 공개할 수 있습니다.
    • 개인 키는 비밀리에 안전하게 보관해야 합니다.
  • 공개 키와 개인 키는 수학적으로 서로 연결되어 있지만, 한 키로부터 다른 키를 유추하는 것은 실질적으로 불가능합니다.

주요 암호화 알고리즘

  • RSA (Rivest–Shamir–Adleman)
    • 가장 널리 사용되는 비대칭 암호화 알고리즘 중 하나로, 안전한 데이터 전송과 디지털 서명에 사용됩니다.
  • ECDSA (Elliptic Curve Digital Signature Algorithm)
    • 타원 곡선 암호화를 기반으로 한 알고리즘으로, RSA보다 더 강력한 보안을 제공하며 더 작은 키 크기를 사용합니다.
  • EdDSA (Edwards-curve Digital Signature Algorithm)
    • 특히 Ed25519라는 구현을 통해 널리 사용되며, 고성능과 높은 보안 수준을 제공합니다.

암호화와 복호화 (Encryption and Decryption)

공개 키로 암호화

  1. 공개키 받기
    • 수신자는 자신의 공개 키를 발신자에게 제공합니다.
    • 이 공개 키는 인터넷을 통해 안전하게 공유될 수 있으며, 보안을 해칠 위험이 없습니다.
  2. 데이터 암호화
    • 발신자는 수신자의 공개 키를 사용하여 메시지나 데이터를 암호화합니다.
    • 이 과정에서 발신자는 공개 키를 사용하여 메시지에 대한 암호화 작업을 수행하고, 결과적으로 암호화된 메시지(암호문)를 생성합니다.
  3. 암호화된 메시지 전송
    • 발신자는 이 암호화된 메시지를 수신자에게 전송합니다.
    • 이 메시지는 중간에 가로채지 않는 이상, 공개키를 가진 사람이라도 원본 메시지의 내용을 알 수 없습니다.

개인 키로 복호화

  1. 암호화된 메시지 수신
    • 수신자는 암호화된 메시지를 받습니다.
  2. 개인키로 복호화
    • 수신자는 자신의 개인 키를 사용하여 암호화된 메시지를 복호화합니다.
    • 복호화 과정은 개인 키를 사용하여 암호문을 원래의 평문 데이터로 변환합니다.
  3. 메시지 읽기
    • 복호화된 메시지는 원본의 평문 상태로 복원되며, 수신자는 이를 읽을 수 있습니다.

사용 사례

HTTPS

  • 웹 통신에서 SSL/TLS 프로토콜은 클라이언트와 서버 간의 안전한 세션을 설정하기 위해 비대칭 암호화를 사용합니다.
  • 초기 통신 단계에서 서버는 클라이언트에게 공개 키를 포함한 디지털 인증서를 제공합니다.
  • 클라이언트는 이 공개 키를 사용하여 세션 키와 같은 중요 정보를 암호화하고 서버에게 전송합니다.
  • 서버는 자신의 개인 키로 이 정보를 복호화하여 안전한 통신 채널을 생성합니다.

SSH

  • 사용자 인증
    1. 키 페어 생성
      • 사용자는 ssh-keygen 등의 도구를 사용하여 공개 키와 개인 키 쌍을 생성합니다.
      • 개인 키는 사용자의 시스템에 안전하게 보관하며, 공개 키는 접속하고자 하는 서버에 등록합니다.
    2. 공개 키 등록
      • 사용자는 자신의 공개 키를 SSH 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.
      • 이렇게 하면 서버는 이 공개 키로 사용자를 인식할 수 있습니다.
    3. 인증 과정
      • 사용자가 서버에 접속을 시도할 때, 서버는 사용자에게 공개 키에 해당하는 개인키를 사용하여 생성된 “도전”(Challenge)에 대한 응답을 요구합니다.
      • 사용자의 SSH 클라이언트는 개인 키를 사용하여 이 도전에 응답하고, 응답은 서버로 전송됩니다.
    4. 응답 검증
      • 서버는 받은 응답을 저장된 공개 키를 사용하여 검증합니다.
      • 응답이 유효하면, 사용자가 개인 키의 소유자임이 입증되고, 접속이 허용됩니다.
  • 세션 암호화
    • SSH 세션은 대칭 키 방식을 사용해 암호화됩니다.

디지털 서명

  • 비대칭 암호화 키는 문서나 소프트웨어와 같은 디지털 콘텐츠의 진위 및 무결성을 확인하는 데 사용됩니다.
  • 예를 들어, 소프트웨어 개발자는 자신의 개인 키를 사용하여 프로그램에 서명할 수 있고, 최종 사용자는 공개 키를 사용하여 서명을 검증함으로써 소프트웨어의 출처가 신뢰할 수 있는지 확인할 수 있습니다.
© 2024 Seungwon Bae 🇰🇷