Cryptology Academy · 강의

MAC 개념과 길이 확장 공격

비밀 접두사를 덧붙이는 방식이 길이 확장 공격에 취약한 이유를 설명합니다.

레슨 1/413개 단계

MAC 개념과 길이 확장 공격은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

메시지 인증 코드(MAC)는 공유 비밀 키를 사용하여 무결성과 인증을 제공합니다. 이 수업에서는 MAC과 그 특성, 그리고 단순한 키 입력 해시의 중요한 취약점을 이해합니다.

MAC이란 무엇입니까?

MAC은 메시지와 비밀 키로 계산하는 짧은 인증 코드입니다. 같은 키를 가진 수신자는 MAC을 다시 계산하여 검증합니다. 키가 없으면 위조할 수 없게 합니다.

MAC과 해시 및 서명의 비교

해시: 키가 없고 공개되며 무결성만 제공합니다. MAC: 공유 비밀을 사용하고 대칭적이며 무결성과 인증을 제공합니다. 디지털 서명: 개인 키를 사용하고 비대칭적이며 부인 방지를 추가합니다. 부인 방지를 제공하는 것은 서명뿐입니다.

위조 불가능성

안전한 MAC은 선택 메시지 공격에 대해 존재적 위조 불가능성(EUF-CMA)을 가져야 합니다. 즉, 공격자가 어떤 메시지에 대해서든 MAC을 요청할 수 있어도 이전에 요청하지 않은 새로운 메시지에 대해 유효한 MAC을 위조할 수 없어야 합니다.

단순한 키 입력 해시: 접두사 MAC

단순한 시도: MAC(K, M) = H(K || M). 안전해 보이지만 Merkle-Damgård 해시 함수(SHA-256, SHA-512, MD5)의 길이 확장 공격에 취약합니다.

길이 확장 공격

M을 해시한 뒤의 SHA-256 상태는 단순히 H(M)입니다. H(K || M)이 주어지면 공격자는 K를 몰라도 어떤 'extra'에 대해서든 H(K || M || padding || extra)를 계산할 수 있습니다. 즉, 메시지를 확장하여 새 데이터를 덧붙일 수 있습니다.

공격의 실제 영향

Flickr(2009): API가 H(K || params)를 사용했습니다. 공격자는 인증된 요청에 &api_sig=forgery를 덧붙였습니다. 그 결과 권한 없는 API 호출이 유효한 것처럼 처리되었습니다. 순수한 길이 확장 공격의 사례입니다.

접미사 MAC도 실패합니다

MAC(K, M) = H(M || K): 오프라인 공격에 취약합니다. 공격자는 K 없이 H(message)를 계산한 다음 생일 공격으로 동일한 해시를 갖는 M'을 찾습니다. 키가 충돌 뒤에 덧붙여집니다.

HMAC이 이를 해결하는 이유

HMAC은 서로 다른 키 패드로 해시를 두 번 감쌉니다: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) 내부 해시는 H(ipad_key || M)을 생성합니다. 외부 해시는 이를 opad_key로 감쌉니다. 공격자는 외부 해시의 초기 상태를 설정할 수 없으므로 길이 확장이 실패합니다.

SHA-3와 길이 확장

SHA-3는 스펀지 구성을 사용하므로 본질적으로 길이 확장 공격에 면역입니다. H_SHA3(K || M)은 유효한 단순 MAC 구성입니다. SHA-2는 그렇지 않으므로 SHA-2와 함께 항상 HMAC을 사용해야 합니다.

MAC 검증에 대한 타이밍 공격

조기 종료 방식의 MAC 비교(==)는 실행 시간 정보를 유출합니다. 첫 번째 바이트가 '올바른' 경우가 '잘못된' 경우보다 약간 더 오래 걸립니다. 256번 질의하면 첫 번째 바이트를 알아낼 수 있고, 256번을 더 질의하면 두 번째 바이트를 알아낼 수 있습니다. 16×256번의 질의로 전체 MAC을 복구할 수 있습니다.

빠른 확인

MAC(K, M) = SHA256(K || M)이 안전하지 않은 이유는 무엇입니까?

복습

길이 확장 공격을 통해 단순한 키 입력 해시가 실패하는 이유를 확인했습니다. 다음으로 HMAC의 구성과 보안 증명을 살펴봅니다.
무료로 시작

AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
67
레슨
261

자주 묻는 질문

“MAC 개념과 길이 확장 공격” 강의는 무료인가요?

네 — “MAC 개념과 길이 확장 공격” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“MAC 개념과 길이 확장 공격”에서 뭘 배우나요?

비밀 접두사를 덧붙이는 방식이 길이 확장 공격에 취약한 이유를 설명합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“MAC 개념과 길이 확장 공격” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. MAC 개념과 길이 확장 공격
  2. HMAC 구성과 보안 증명
  3. API의 HMAC: 요청 서명
  4. CMAC 및 Poly1305: 블록 암호 MAC
← Cryptology Academy(으)로 돌아가기