672. 무결성 및 출처 인증용 서명 데이터 코드 제어

핵심 인사이트: 내가 은행에서 "철수에게 1만 원을 송금해 줘"라는 데이터를 암호화해서 보냈다. 해커는 암호를 풀진 못했지만 중간에 데이터를 가로채서 찰흙 주무르듯 조작한 뒤 "철수에게 100만 원을 송금해 줘"로 바꿔버렸다(무결성 훼손). 이를 막기 위해, 데이터 끄트머리에 "이 데이터는 조작되지 않았고, 내가 보낸 게 맞다"는 증거 도장(MAC이나 전자 서명)을 찍어서 무결성과 출처를 동시에 검증하는 체계가 필수적이다.

Ⅰ. 통신 데이터의 2가지 핵심 위협

네트워크에서 암호화(기밀성, 안 보이게 숨기기)만으로는 막을 수 없는 두 가지 치명적인 공격이 있습니다.

  1. 변조 (Tampering): 중간자(MitM)가 암호화된 패킷 덩어리의 순서를 바꾸거나 특정 비트를 뒤집어, 결과적으로 복호화했을 때 내용이 달라지게 만드는 행위. (무결성 훼손)
  2. 위장 (Spoofing): 해커가 내 노트북의 IP나 MAC 주소를 훔친 뒤, 마치 자기가 나인 척(출처 위장) 은행 서버에 가짜 송금 데이터를 쏘는 행위. (출처 인증 실패)

Ⅱ. 서명 데이터(Signature Data) 제어의 개념

이 두 가지 공격을 막기 위해, 원본 데이터 덩어리(Payload) 끝에 **추가적인 보안 꼬리표(서명 데이터 코드)**를 달아 전송하는 제어 기술을 통칭합니다.

  • 수신자(은행)는 이 꼬리표를 계산해서, 두 가지를 100% 확신하게 됩니다.
    1. 무결성 검증: "네트워크를 날아오는 동안 단 1비트의 데이터도 변경되지 않았다!"
    2. 출처 인증(Data Origin Authentication): "이 패킷은 해커가 쏜 게 아니라, 진짜로 홍길동의 컴퓨터에서 출발한 게 맞다!"

Ⅲ. 서명 코드를 구현하는 2가지 대표 기술 🌟

이 서명 데이터 꼬리표를 어떤 열쇠로 만드느냐에 따라 크게 두 가지로 나뉩니다.

1. MAC (Message Authentication Code) - 대칭키 기반

  • 송신자와 수신자가 **'미리 공유한 똑같은 비밀키(대칭키)'**를 사용하여 원본 데이터와 함께 해시 함수 믹서기에 돌려 꼬리표(MAC)를 만듭니다.
  • 특징: 계산 속도가 미친 듯이 빠릅니다. 하지만 둘만 아는 비밀키를 쓰기 때문에, 송신자가 "나 그런 거 보낸 적 없는데?"라고 거짓말을 하면 발뺌(부인)을 막을 수 없습니다. (상세 내용은 673번 문서 참조)

2. 디지털 서명 (Digital Signature) - 비대칭키(공개키) 기반

  • 송신자가 **'자신만이 가진 유일한 개인키'**를 사용하여 데이터에 서명(암호화)을 한 뒤 꼬리표를 만듭니다. 수신자는 송신자의 '공개키'로 이 꼬리표를 열어봅니다.
  • 특징: 속도는 느리지만, 전 세계에서 오직 송신자만 만들 수 있는 꼬리표이므로, 나중에 법원에 가서도 "이건 100% 네가 보낸 거잖아!"라며 발뺌을 완벽히 차단(부인 방지)할 수 있습니다. (상세 내용은 675번 문서 참조)

Ⅳ. 네트워크 프로토콜에서의 적용

  • 오늘날 안전한 인터넷을 구성하는 모든 방패 프로토콜(IPsec, SSL/TLS, SSH)은 데이터를 보낼 때 단순히 암호화만 하지 않습니다.
  • 패킷 뒤에 반드시 이 **무결성/출처 인증용 서명 코드(주로 HMAC 또는 GCM)**를 함께 덧붙여서(MAC-then-Encrypt 또는 AEAD 등), 해커의 털끝만 한 변조 시도조차 즉시 감지하고 해당 패킷을 가차 없이 폐기(Drop)해버리는 철저한 방역망을 가동합니다.

📢 섹션 요약 비유: 중요한 계약서(데이터)를 택배로 보낼 때, 서류를 까만 봉투에 넣는 것(암호화)만으로는 부족합니다. 중간에 배달부가 봉투를 몰래 뜯어 가짜 서류로 바꿔치기할 수 있기 때문입니다. 이를 막기 위해 봉투 입구에 송신자만 핥을 수 있는 '특별한 DNA 침(비밀키)'을 발라서 굳힌 우표(서명 데이터 코드)를 딱 붙여 보냅니다. 수신자는 이 우표가 찢어지지 않았는지(무결성), 그리고 진짜 송신자의 침이 맞는지(출처 인증)를 현미경으로 검사한 뒤에야 안심하고 봉투를 엽니다.