673. MAC (Message Authentication Code) 변수 및 기능

핵심 인사이트: 무결성을 검증하는 '해시 함수'는 치명적인 약점이 있다. 해커가 원본 편지를 가짜 편지로 조작한 뒤, 해시 믹서기에 가짜 편지를 넣고 돌려 나온 '가짜 해시값'을 뻔뻔하게 다시 붙여서 보내면 수신자는 감쪽같이 속는다. 이 해커의 꼼수를 막기 위해, 해시 믹서기에 돌릴 때 "너와 나만 아는 비밀번호(대칭키)"를 같이 넣고 갈아버려, 해커가 절대 흉내 낼 수 없는 나만의 해시 도장을 만드는 기술이 바로 MAC이다.

Ⅰ. 단순 해시(Hash)의 치명적 한계

  • 앨리스가 밥에게 [1만 원 송금] 이라는 평문과 그것을 믹서기에 간 해시값 [AB12]를 같이 보냅니다.
  • 중간에서 훔쳐본 해커 다스가 평문을 [100만 원 송금]으로 쓱 조작합니다. 그리고 다스가 직접 해시 믹서기에 이 가짜 평문을 돌려 새로운 해시값 [XX99]를 뽑아냅니다.
  • 다스가 [100만 원 송금] + 가짜 해시값 [XX99]를 밥에게 보냅니다. 밥은 평문을 믹서기에 돌려보니 똑같이 [XX99]가 나오므로 "아, 무결성이 지켜졌네! 조작 안 됐어!"라고 완벽하게 속아버립니다. (단순 무결성 검증의 실패)

Ⅱ. MAC (메시지 인증 코드)의 개념과 원리 🌟

위의 해커 기만술을 완벽히 차단하기 위해 **'비밀키(Secret Key)'**라는 변수를 추가한 기술입니다.

  • 개념: 메시지의 무결성(안 깨졌나?)과 출처 인증(진짜 앨리스가 보냈나?)을 '동시에' 보장하기 위해, **송신자와 수신자가 사전에 공유한 비밀키(K)를 원본 데이터와 함께 섞어서 만들어낸 짧은 인증용 블록(꼬리표)**입니다.
  • 동작 원리 (앨리스 ➜ 밥):
    1. 앨리스와 밥은 사전에 둘만 아는 비밀번호(K)를 나눠 가집니다.
    2. 앨리스는 [1만 원 송금] 메시지와 비밀키 K를 합쳐서(섞어서) MAC 생성기(믹서기)에 넣고 돌립니다. 그 결과물인 꼬리표 MAC_A를 만듭니다.
    3. 앨리스는 [1만 원 송금] 메시지와 MAC_A 꼬리표를 밥에게 보냅니다.
    4. 밥은 받은 메시지 [1만 원 송금]에 자신이 가진 비밀키 K를 섞어서 직접 MAC 생성기를 돌려 MAC_B를 만듭니다.
    5. 밥이 직접 만든 MAC_B와 앨리스가 보낸 MAC_A가 100% 똑같으면 "중간에 아무도 조작하지 않았고, K를 아는 앨리스가 보낸 게 확실해!"라고 통과시킵니다.

Ⅲ. 해커의 절망 (왜 위조가 불가능한가?)

  • 해커 다스가 중간에 메시지를 [100만 원 송금]으로 바꾸는 것까진 가능합니다.
  • 하지만 다스는 앨리스와 밥이 공유한 비밀키(K)를 모르기 때문에, 조작된 메시지에 맞는 '합격용 가짜 MAC 꼬리표'를 절대로 만들어낼 수 없습니다. 결국 밥이 가짜 편지를 받아 계산해 보면 MAC 값이 달라서 즉시 해킹 시도를 적발하고 폐기해 버립니다.

Ⅳ. MAC의 한계 (부인 방지 불가)

  • MAC은 대칭키(비밀키)를 씁니다. 즉, 열쇠 하나를 앨리스와 밥 두 명이 똑같이 공유하고 있습니다.
  • 만약 앨리스가 "나 그런 송금 메시지 보낸 적 없는데? 밥 네가 나랑 똑같은 열쇠 가지고 있으니까, 네가 스스로 조작해서 MAC 만든 거 아냐?"라고 우기면(부인), 제3자인 판사는 이 MAC 도장을 앨리스가 찍은 건지 밥이 찍은 건지 구별할 방법이 없습니다.
  • 따라서 MAC은 고속 무결성 검증엔 좋지만, 법적인 부인 방지(Non-repudiation) 기능은 제공하지 못하며, 이를 원하면 비대칭키 기반의 '전자 서명(RSA)'을 써야 합니다.

📢 섹션 요약 비유: 단순 해시가 편지 봉투에 찍는 누구나 살 수 있는 '딱풀 인장'이라면, 해커가 편지를 뜯고 자기가 문방구에서 딱풀을 사서 다시 봉인하면 그만입니다. 하지만 MAC은 앨리스와 밥 두 사람만 몰래 맞춰 깎아놓은 '특수 합금 인장 장치(비밀키)'를 써서 왁스를 굳히는 것입니다. 해커가 편지를 뜯어 고쳐도, 이 특수 인장 장치가 없으니 다시 봉투를 예쁘게 잠글 방법이 없어 범행이 100% 들통나고 맙니다.