용어

머클-담고르 구조 Merkle–Damgård construction

이름 풀이: 머클(Merkle)과 담고르(Damgård) 두 사람의 이름을 딴 구조(construction)

긴 글을 정해진 크기의 블록으로 나눠, 앞 블록까지 섞은 중간 해시 값에 다음 블록을 압축 함수로 차례로 섞어 해시 값을 만드는 방식. SHA-1·SHA-256 이 이 방식이다.

해시 값은 블록을 차례로 압축 함수에 넣어 만든다

SHA-1·SHA-256 같은 해시 함수는 글을 64바이트씩 블록으로 자르고, 표준이 정해 둔 «처음 값» 에서 시작해 블록을 하나씩 섞어 넣습니다. 섞는 일을 맡은 부분이 압축 함수입니다. 블록 하나를 넣을 때마다 압축 함수가 내놓는 값이 중간 해시 값입니다. 중간 해시 값은 지금까지 넣은 블록을 모두 섞은 결과이고, 다음 블록은 이 중간 해시 값하고만 섞입니다. 마지막 블록까지 섞은 마지막 중간 해시 값이 해시 값입니다.

해시 값이 만들어지는 흐름 (머클-담고르 구조) 글을 64바이트 블록으로 자른다. 정해진 처음 값에서 시작해, 블록을 하나 넣을 때마다 압축 함수가 섞어서 중간 해시 값을 새로 만든다. 압축 함수는 바로 앞 중간 해시 값과 새 블록만 쓴다. 마지막 블록까지 넣은 마지막 중간 해시 값이 해시 값이다. 글 (몇 바이트든)블록 1블록 2블록 3…끝 표시64바이트 블록으로 자른다 · 마지막 블록엔 «끝 표시»(글의 길이)를 붙인다처음 값표준이 정해 둔 값압축블록 1중간 해시 값 1지금까지 넣은 블록을 다 섞은 값압축블록 2중간 해시 값 2지금까지 넣은 블록을 다 섞은 값압축블록 3중간 해시 값 3지금까지 넣은 블록을 다 섞은 값⋮압축끝 표시마지막 중간 해시 값 = 해시 값SHA-1 160비트 · SHA-256 256비트
해시 값이 만들어지는 흐름. «압축» 은 압축 함수 — 매번 «바로 앞 중간 해시 값» 과 «새 블록» 둘만 씁니다.

그래서 두 글이 어느 블록에서 같은 중간 해시 값에 이르면, 그 뒤로 같은 블록을 넣는 한 끝까지 같은 중간 해시 값이 되고 해시 값도 같아집니다. 이렇게 블록을 차례로 압축 함수에 넣어 이어 가는 방식을 머클-담고르 구조라고 합니다.

출처: NIST FIPS 180-4 Secure Hash Standard (§5·§6 — H(0)·H(i)·H(N), 512비트 블록) · Handbook of Applied Cryptography 9장 Algorithm 9.25 (Merkle-Damgård construction)

다른 이름: 머클-담고르 구성

관련 용어

이 말이 나오는 글

출처

  1. Menezes 외, Handbook of Applied Cryptography 9장 Algorithm 9.25 — «Merkle’s meta-method … (also called the Merkle-Damgård construction)»
  2. NIST FIPS 180-4 — SHA-1: 512비트 블록마다 앞의 중간 해시 값 H(i−1) 에 섞어 H(i)

상태: 조각 · 고친 날 2026-10-05