본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

EIS

이 페이지에 묻기

EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

EIS · SECURITY

EIS

생성 수정

정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.

29개 문서 · 4 · 정보보안일반 · 21 / 29

20 · 해시함수와 MAC

지도 위치 : 4과목 정보보안 일반 · README 4장 ② 부품 층 (무엇으로 지키나) | 출제기준: 2. 암호학 > 2. 해시함수 | 이전: 19 암호 알고리즘 | 다음: 21 정보보호 관리와 위험평가 출제 빈도 : ⭐ (회당 약 2.1문항 — 출제분석.md) · 변화 ▲ (이전 1.6 → 현행 2.6) · ⚠️ 상승 중 — MAC · HMAC, 충돌 저항성, MDC/MAC 문항이 늘어남 세세항목 : 1. 해시함수의 개요 및 요구사항 / 2. 해시함수별 특징 및 구조 / 3. 메시지 인증 코드(MAC)의 원리 및 구조

이 노트를 다 읽으면

  1. 해시함수를 암호화와 구별 하고, 해시가 주는 보안 서비스가 무결성 임을 말할 수 있다.
  2. 역상 · 제2역상(약한 충돌) · 충돌(강한 충돌) 저항성 을 "공격자에게 무엇이 주어졌나"로 구별할 수 있다.
  3. 생일 공격 이 왜 n비트 해시를 2^(n/2) 수준으로 약하게 만드는지 설명할 수 있다.
  4. MD5 · SHA-1 · SHA-2 · SHA-3 · HAS-160 · RIPEMD-160 · LSH 의 출력 길이와 특징을 표로 말할 수 있다.
  5. MDC ↔ MAC , MAC ↔ 전자서명 을 키 유무와 부인방지로 가를 수 있다.
  6. HMAC과 CBC-MAC 의 구조를 그리고, MAC이 못 하는 것 (부인방지 · 재전송 방지)을 말할 수 있다.
  7. 패스워드 저장에 솔트 가 왜 필요한지, 레인보우 테이블 이 무엇인지 설명할 수 있다.

0. 이 노트의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1되돌릴 수 있나암호화 (키로 복호화)해시 (일방향)AES · RSA ↔ SHA-256암호화 ↔ 해시 (⑤의 파생)
2키를 쓰나키 없는 해시 (MDC)비밀키를 쓰는 해시 (MAC)SHA-256 ↔ HMAC-SHA256이 노트의 축
3키가 몇 개인가공유 비밀키 하나 (MAC)개인키 · 공개키 (전자서명)HMAC ↔ RSA 서명 → 부인방지 유무⑤ 대칭 ↔ 비대칭
4공격자가 무엇을 쥐었나해시값만 / 메시지 하나아무것도 (둘 다 자유롭게)역상 · 제2역상 저항성 ↔ 충돌 저항성이 노트의 축

이 노트의 질문은 "데이터가 바뀌지 않았다는 것을 어떻게 증명하는가?" 입니다. 앞에서 배운 보안 목표(21번 노트) 중 무결성 을 지키는 부품이고, 앞의 19번 노트(암호)가 기밀성을 맡았다면 이 노트는 무결성을 맡습니다. 해시는 전자서명(18번 노트), OTP · 패스워드 저장(17번 노트), 무결성 점검 도구 등 뒤의 거의 모든 노트에 부품으로 들어갑니다.


1. 해시함수란

1.1 정의와 경계

해시함수 (Hash Function) — [일방향 함수]인데, [ 임의 길이의 입력을 고정 길이의 값(해시값 · 메시지 다이제스트)으로 압축하며, 키 없이 누구나 계산하지만 거꾸로 입력을 찾을 수는 없다 ]는 점에서 키로 되돌릴 수 있는 암호화와 구별된다.

해시암호화체크섬 · CRC
되돌림❌⭕ (키로)—
키❌⭕❌
출력 길이입력과 무관하게 고정입력에 비례고정
목적의도적 변조 탐지 (무결성)기밀성우연한 전송 오류 탐지
공격자에 대한 안전성⭕ (충돌을 일부러 만들기 어려움)⭕❌ (일부러 같은 값을 쉽게 만듦)

⚠️ 반례

  • CRC는 해시처럼 고정 길이 값을 내지만 암호학적 해시가 아닙니다. 공격자가 같은 CRC를 갖는 위조 데이터를 쉽게 만들 수 있습니다.
  • Blowfish는 블록 암호 입니다. "해시 함수가 아닌 것"으로 나옵니다(2025).
  • 해시 자체 는 키를 쓰지 않습니다. "해시 함수는 비밀키를 사용한다"는 틀린 설명입니다.

눈사태 효과 (Avalanche Effect) — 입력이 1비트만 바뀌어도 출력의 약 절반 비트가 바뀌는 성질. 그래서 해시값을 비교하면 미세한 변조도 드러납니다.

1.2 해시가 주는 것과 주지 않는 것

주는 것주지 않는 것
무결성 (바뀌었는지 탐지)기밀성 (해시값만으로 원문을 숨길 목적이 아님)
출처 인증 — 공격자도 바꾼 메시지의 해시를 새로 계산해 붙이면 됨
부인방지

그래서 해시만으로는 "누가 보냈나"를 증명하지 못하고 , 키를 섞은 MAC (3절)이나 개인키로 서명하는 전자서명 (18번 노트)이 필요해집니다.

📝 기출 포인트 — "일방향 해시가 주는 보안 서비스 = 무결성", "해시 함수 특징이 아닌 것 = 키 사용", "블록 암호와 해시 구분", "무결성용 해시 식별(CRC 제외)".


2. 해시의 요구사항과 생일 공격 ⭐

2.1 세 가지 저항성

성질공격자에게 주어진 것찾기 어려워야 하는 것다른 이름
역상 저항성 (Preimage Resistance)해시값 hh = H(x)인 x일방향성
제2역상 저항성 (Second Preimage Resistance)메시지 x (그리고 H(x))H(x) = H(y)인 다른 y약한 충돌 저항성
충돌 저항성 (Collision Resistance)아무것도 없음 (자유롭게 고름)H(x) = H(y)인 아무 쌍 x ≠ y강한 충돌 저항성

🔍 읽는 포인트 — 축 4로 보면 쉽습니다. 주어진 것이 하나라도 있으면 "약한" , 아무 조건 없이 아무 쌍이나 찾으면 되는 것이 "강한" 충돌 저항성입니다. 공격자에게 자유가 많은 쪽(아무 쌍)이 공격하기 쉬우므로, 그것을 막는 성질이 더 강한 요구입니다.

기본 요구사항으로는 이 셋 앞에 임의 길이 입력 · 고정 길이 출력 · 계산 용이성 이 붙습니다.

⚠️ 반례 — "역방향성(해시값에서 원문을 계산할 수 있어야 함)", "생일 공격"은 요구사항이 아닙니다 (2018 · 2022). 생일 공격은 요구사항이 아니라 충돌 저항성을 노리는 공격 입니다.

📝 기출 포인트 — G2.2에서 가장 많이 반복된 개념이 약한 충돌 저항성 = 제2역상 저항성 (2014 · 2017 · 2022 · 2024). "주어진 x에 대해 같은 해시를 갖는 다른 y를 찾기 어렵다"는 문장을 보면 바로 제2역상입니다.

2.2 생일 공격

생일 역설 — 한 방에 23명 만 있어도 생일이 같은 두 사람이 있을 확률이 50%를 넘습니다. "특정한 누구와 같은 생일"이 아니라 " 아무 둘이나 같은 생일"이라 생각보다 훨씬 빨리 겹칩니다.

생일 공격 — [해시 공격]인데, [ 아무 두 메시지의 해시가 같아지는 충돌을 찾는다 ]는 점에서 특정 메시지와 같은 해시를 찾는 제2역상 공격보다 훨씬 적은 시도로 성공한다.

공격 대상n비트 해시에서 필요한 시도
역상 · 제2역상약 2^n
충돌 (생일 공격)약 2^(n/2)
MD5 (128비트)   → 충돌 찾기 약 2^64
SHA-1 (160비트) → 약 2^80
SHA-256         → 약 2^128   ← 그래서 충돌 저항이 128비트 수준

🔍 읽는 포인트 : 출력이 n비트인 해시의 충돌 안전성은 n/2비트 입니다. "생일 공격에 안전하려면 해시 길이는 원하는 보안 강도의 2배 "라는 문항이 여기서 나옵니다.

활용 시나리오 — 공격자가 정상 계약서와 불리한 계약서를 각각 여러 변형(띄어쓰기 · 쉼표 차이)으로 만들어 해시가 같은 쌍을 찾은 뒤, 정상본에 서명을 받아 불리한 계약서에 그 서명을 옮겨 붙입니다.

📝 기출 포인트 — "생일 공격에 안전한 해시 길이"(2014), "충돌 저항성을 노리는 공격 = 생일 공격"을 제로데이 · 재전송 · 레인보우 테이블 사이에서 고르는 유형(2025).


3. 해시 알고리즘별 특징 ⭐

3.1 구조 — 머클-담고르 ↔ 스펀지

구조원리쓰는 알고리즘
머클-담고르 (Merkle-Damgård)메시지를 패딩해 고정 크기 블록으로 자르고, 압축 함수 에 블록을 하나씩 넣어 연쇄 (마지막에 메시지 길이를 덧붙임)MD5, SHA-1, SHA-2, HAS-160, RIPEMD-160
스펀지 (Sponge)내부 상태에 입력을 흡수(absorb) 한 뒤 출력을 짜냄(squeeze)SHA-3 (Keccak)

머클-담고르 구조는 길이 확장 공격 (H(K‖M)을 알면 K를 몰라도 H(K‖M‖추가)를 계산)에 약합니다. 그래서 "키를 앞에 붙여 해시"하는 단순 MAC은 위험하고, 3.3절의 HMAC 구조가 나왔습니다.

3.2 알고리즘 표 (출력 길이 암기)

알고리즘출신출력 길이블록단계 · 라운드상태
MD5Rivest (1991)128비트5124라운드 × 16 = 64단계충돌 발견 (2004). 보안 용도 사용 금지
SHA-1미국 NIST (1995)160비트5124라운드 × 20 = 80단계실제 충돌 공개 (2017). 서명 용도 금지
SHA-224 / 256NIST SHA-2 (2001~)224 / 25651264라운드현재 표준
SHA-384 / 512NIST SHA-2384 / 512102480라운드현재 표준. 64비트 워드 연산
SHA-3Keccak, NIST 공모 (FIPS 202, 2015)224 / 256 / 384 / 512(가변)Keccak-f 24라운드스펀지 구조 — SHA-2와 다른 설계
RIPEMD-160유럽 (1996)160비트5125라운드, 두 줄 병렬
HAS-160한국 (TTA 표준)160비트51280단계국내 전자서명 KCDSA 와 함께 쓰려고 설계
LSH한국 (2014)224 / 256 / 384 / 512——국내 권고 해시

🔍 읽는 포인트

  • 출력 길이만 정확히: MD5 = 128 , SHA-1 · RIPEMD-160 · HAS-160 = 160 , SHA-256 = 256, SHA-512 = 512.
  • "라운드"는 교재마다 라운드(4 · 5) 로 세기도 하고 단계(64 · 80) 로 세기도 합니다. MD5와 SHA-1을 비교하는 문항에서는 "MD5는 4라운드 64단계, SHA-1은 4라운드 80단계"로 기억하면 둘 다 대응됩니다.
  • SHA-512는 블록 1024비트 · 80라운드 로, SHA-256(블록 512 · 64라운드)과 다릅니다(2025 출제).
  • KISA 관점 — KISA 「암호 알고리즘 및 키 길이 이용 안내서」(2018)는 단순 해시 · 전자서명용 국내 권고로 SHA-2 · SHA-3 · LSH 계열 을 듭니다. HAS-160 과 SHA-1은 충돌 저항성이 112비트 보안 강도에 못 미쳐 전자서명용으로는 쓸 수 없고 , 메시지 인증 · 키 유도 · 난수 생성용으로만 허용됩니다.

📝 기출 포인트 — MD5(4회 이상) : "출력 길이 128비트", "패딩 특성", "특징". SHA-1 = 160비트 (2024 · 2025 연속). "유럽에서 개발한 160비트 해시 = RIPEMD-160"(2025). "SHA-512 블록 · 라운드"(2025). 출력 길이 표가 그대로 정답 근거입니다.


4. MDC와 MAC ⭐⭐

4.1 MDC ↔ MAC ↔ 전자서명

MDC (Modification Detection Code, 변경 탐지 코드) — [무결성 검사값]인데, [ 키 없이 해시만으로 만든다 ]는 점에서 비밀키를 쓰는 MAC과 구별된다. 해시값 자체를 안전한 별도 경로 로 받아야 의미가 있습니다(예: 다운로드 페이지에 게시된 SHA-256 값).

MAC (Message Authentication Code, 메시지 인증 코드) — [무결성 검사값]인데, [ 송 · 수신자가 공유한 비밀키와 메시지로 만들어, 키를 가진 사람만 만들 수 있다 ]는 점에서 누구나 계산하는 MDC와 구별된다. 그래서 무결성 + 메시지 출처 인증 을 줍니다.

MDC (단순 해시)MAC전자서명
키없음공유 비밀키 (대칭)개인키 · 공개키 (비대칭)
무결성⭕⭕⭕
출처 인증❌⭕ (키 공유자 중 누군가)⭕ (서명자 특정)
부인방지❌❌ — 수신자도 같은 키로 MAC을 만들 수 있으므로 제3자에게 "송신자가 만들었다"를 증명 못 함⭕
기밀성❌❌❌
속도빠름빠름느림
예SHA-256 값 게시HMAC, CBC-MAC, CMAC, GMACRSA, DSA, ECDSA

⚠️ MAC이 못 하는 두 가지

  1. 부인방지 — 키를 양쪽이 공유하니 누가 만들었는지 제3자에게 증명할 수 없습니다(2019 · 2025 출제).
  2. 재전송 방지 — 정상 메시지와 MAC을 그대로 다시 보내면 MAC은 여전히 맞습니다. 순서번호 · 타임스탬프 · Nonce 를 MAC 계산에 함께 넣어야 막힙니다(17번 노트의 재전송 공격, 2019 · 2023 · 2024 출제).

📝 기출 포인트 — MAC(8회) 이 G2.2 최빈출. "비밀키로 고정 길이 인증값을 만드는 기술", "공유키로 무결성 · 출처를 확인", " MAC 특성 오류 = 부인방지 제공 ", "MDC와 MAC(HMAC) 구분"(2022), "해시값과 MAC · HMAC의 차이와 한계"(2023).

4.2 HMAC ⭐

HMAC (Hash-based MAC) — [MAC]인데, [ 기존 해시함수에 비밀키를 두 번(안쪽 · 바깥쪽) 섞어 만든다 ]는 점에서 블록 암호로 만드는 CBC-MAC과 구별된다. 표준은 RFC 2104이며, 어떤 해시든 끼워 쓸 수 있습니다(HMAC-SHA256 등).

HMAC(K, M) = H( (K ⊕ opad) ‖ H( (K ⊕ ipad) ‖ M ) )

  ipad = 0x36을 블록 길이만큼 반복,  opad = 0x5C를 블록 길이만큼 반복
  ① 키를 해시 블록 크기에 맞춤 (길면 해시, 짧으면 0으로 채움)
  ② 안쪽 해시: (K ⊕ ipad)를 메시지 앞에 붙여 해시
  ③ 바깥 해시: (K ⊕ opad)를 ②의 결과 앞에 붙여 다시 해시

🔍 읽는 포인트 : 해시를 두 번 겹쳐서, 3.1절의 길이 확장 공격 을 막습니다. "키 ‖ 메시지를 한 번 해시"하는 단순 방식과의 차이가 바로 이것입니다. OTP(HOTP · TOTP, 17번 노트)와 TLS · IPsec의 무결성 검사가 HMAC을 씁니다.

4.3 CBC-MAC과 그 밖의 MAC

CBC-MAC — [MAC]인데, [ 블록 암호를 CBC 모드(IV = 0)로 돌려 마지막 암호문 블록을 MAC으로 쓴다 ]는 점에서 해시를 쓰는 HMAC과 구별된다.

M1 → E_K → C1
M2 ⊕ C1 → E_K → C2
...
Mn ⊕ Cn-1 → E_K → Cn  = MAC

⚠️ 기본 CBC-MAC은 고정 길이 메시지에서만 안전 합니다. 길이가 다른 메시지를 섞으면 위조가 가능해 이를 보완한 CMAC 이 나왔습니다. GMAC 은 GCM 모드의 인증 부분만 따로 쓰는 MAC입니다. CCM 모드는 CTR 암호화 + CBC-MAC 인증을 합친 것입니다(19번 노트).

해시를 이용한 메시지 인증 방식원리
해시 + 대칭키 암호화해시값을 공유키로 암호화해 첨부
해시 + 공개키(전자서명)해시값을 송신자 개인키로 서명
해시 + 비밀값 (HMAC 계열)메시지에 공유 비밀값을 섞어 해시
❌ 해시만 첨부공격자가 다시 계산해 붙이면 끝 → 인증 아님

📝 기출 포인트 — "HMAC 원리"(2024), "메시지 인증 기법 식별"(2017), " 해시를 이용한 메시지 인증 방식이 아닌 것 "(2022) → 키나 서명이 없는 "해시만 첨부"가 정답.


5. 해시의 응용 — 패스워드 저장 · 무결성 점검

5.1 패스워드 저장

서버는 패스워드를 평문으로 저장하지 않고 해시값 만 저장합니다. 로그인 때 입력값을 같은 방식으로 해시해 비교합니다(17번 노트).

레인보우 테이블 — [사전 계산 공격]인데, [ 자주 쓰는 패스워드의 해시값을 미리 대량으로 계산해 두고 탈취한 해시를 표에서 거꾸로 찾는다 ]는 점에서 매번 해시를 새로 계산하는 무차별 대입과 구별된다.

솔트 (Salt) — [패스워드 해시 보강값]인데, [ 사용자마다 다른 무작위 값을 패스워드에 섞어 해시한다 ]는 점에서 모두에게 같은 비밀값인 MAC의 키와 구별된다. 솔트는 비밀일 필요가 없고 해시와 함께 저장합니다.

솔트의 효과이유
레인보우 테이블 무력화솔트마다 표를 새로 만들어야 함
같은 패스워드라도 다른 해시값한 사람의 패스워드가 풀려도 같은 패스워드 쓰는 다른 계정이 드러나지 않음

추가로 해시를 수천~수십만 번 반복해 계산을 일부러 느리게 하는 키 스트레칭 (PBKDF2, bcrypt, scrypt, Argon2)을 씁니다.

$ sudo grep '^alice:' /etc/shadow
alice:$6$Gq3x9L2m$Yh0p...(이하 생략, 고정 길이):20380:0:90:7:::
       │ │        └ 해시값
       │ └ 솔트
       └ 알고리즘 ID ($1$ MD5, $5$ SHA-256, $6$ SHA-512)

🔍 읽는 포인트 : $6$ → SHA-512 기반. 두 번째 $ 사이가 솔트 , 그 뒤가 해시값입니다. 해시값의 길이는 패스워드가 1자든 30자든 같습니다 ("해시값 길이가 입력 길이에 비례한다"는 틀린 설명, 2024). $1$(MD5)이면 약한 알고리즘으로 점검 대상입니다. 최근 배포판은 $y$(yescrypt)를 쓰기도 합니다.

📝 기출 포인트 — " 사전 계산 공격을 막는 값 = 솔트 "(2022), "미리 계산한 해시표로 패스워드를 찾는 공격 = 레인보우 테이블"(2025), /etc/shadow 해시 길이(2024).

5.2 무결성 점검과 기타 응용

응용해시의 역할
파일 무결성 점검중요 파일의 해시값 기준선을 저장해 두고 주기적으로 다시 계산해 비교 (Tripwire 같은 도구)
다운로드 검증게시된 SHA-256 값과 내려받은 파일의 해시 비교 (MDC 방식)
전자서명긴 메시지 대신 해시값에 서명 (18번 노트)
디지털 포렌식증거 이미지의 해시값으로 원본과 동일함을 증명
블록체인앞 블록의 해시를 다음 블록에 넣어 연결
$ sha256sum /bin/ls
3c9e...a71f  /bin/ls

🔍 읽는 포인트 : 기준선 값과 다르면 파일이 바뀐 것입니다(루트킷이 시스템 명령을 바꿔치기한 흔적일 수 있음). 단, 공격자가 기준선 파일까지 고칠 수 있으면 소용없으므로 기준선은 읽기 전용 매체나 별도 서버에 보관합니다.

앞으로 다시 만납니다 — Tripwire 등 무결성 점검 도구는 05번 노트, /etc/shadow와 계정 파일은 01 · 02번 노트, 포렌식의 해시 증명은 22번 노트.


6. 실기 연결

관련 수행준거 : 2-1 "운영체제 보안설정 점검과 보완"(패스워드 저장 방식 · 무결성 점검), 3 "로그 분석으로 침입 원인 파악"(변조 파일 확인), 1-2-4 "SSL/TLS, IPSec의 동작절차"(HMAC으로 무결성).

묻는 방식답안 핵심어
해시함수의 세 가지 안전성 요건역상 저항성(일방향성), 제2역상 저항성(약한 충돌), 충돌 저항성(강한 충돌)
MAC이 부인방지를 못 하는 이유송 · 수신자가 같은 비밀키 를 공유 → 수신자도 같은 MAC 생성 가능
HMAC 구조ipad · opad, 안쪽 · 바깥쪽 두 번 해시, 길이 확장 공격 방지
솔트의 목적레인보우 테이블(사전 계산) 공격 방지, 같은 패스워드도 다른 해시
무결성 점검 절차기준 해시값 생성 → 안전한 곳에 보관 → 주기적 재계산 · 비교 → 불일치 시 경보

점검 관점 예시 — 리눅스 패스워드 해시 알고리즘 설정

$ grep ENCRYPT_METHOD /etc/login.defs
ENCRYPT_METHOD MD5

🔍 읽는 포인트 : MD5는 충돌이 발견된 약한 해시입니다. SHA-512(또는 배포판이 지원하는 yescrypt)로 바꾸고, 바꾼 뒤에는 기존 계정의 패스워드를 다시 설정해야 새 방식으로 저장됩니다(이미 저장된 해시는 자동으로 바뀌지 않음). 점검 보고서에는 "현황 → 위험(레인보우 테이블 · 충돌) → 조치(알고리즘 변경 + 패스워드 재설정)" 순서로 씁니다.


7. 확인 문제

1. "메시지 x가 주어졌을 때 H(x) = H(y)를 만족하는 다른 메시지 y를 찾기 어려워야 한다"는 성질은? ① 역상 저항성 ② 제2역상 저항성 ③ 강한 충돌 저항성 ④ 눈사태 효과

2. 출력이 256비트인 해시함수에 생일 공격을 적용할 때, 충돌을 찾는 데 필요한 계산량은 대략 얼마인가? ① 2^32 ② 2^64 ③ 2^128 ④ 2^256

3. 해시 알고리즘과 출력 길이의 연결로 옳지 않은 것은? ① MD5 – 128비트 ② SHA-1 – 160비트 ③ RIPEMD-160 – 160비트 ④ HAS-160 – 128비트

4. MAC(메시지 인증 코드)에 대한 설명으로 옳지 않은 것은? ① 송신자와 수신자가 공유한 비밀키로 생성한다 ② 메시지 무결성과 출처를 확인할 수 있다 ③ 송신자가 메시지를 보낸 사실을 제3자에게 증명하는 부인방지를 제공한다 ④ HMAC은 해시함수를 이용한 MAC이다

5. HMAC이 키를 메시지 앞에 붙여 한 번만 해시하는 방식 대신 ipad · opad로 두 번 해시하는 주된 이유는? ① 출력 길이를 늘리기 위해 ② 머클-담고르 구조의 길이 확장 공격을 막기 위해 ③ 공개키 없이 부인방지를 제공하기 위해 ④ 해시를 복호화할 수 있게 하기 위해

6. 패스워드 해시를 저장할 때 사용자마다 다른 무작위 값을 섞는 주된 목적은? ① 해시값을 복호화하기 위해 ② 레인보우 테이블 같은 사전 계산 공격을 무력화하기 위해 ③ 해시 출력 길이를 줄이기 위해 ④ 부인방지를 제공하기 위해

7. 다음 중 암호학적 해시함수가 아닌 것은? ① SHA-3 ② LSH ③ Blowfish ④ RIPEMD-160

정답과 해설

#정답해설 (판별 축)
1②메시지 x가 주어짐 → 제2역상(약한 충돌) 저항성(축 4). ①은 해시값이 주어짐, ③은 아무 쌍
2③생일 공격은 2^(n/2) → 2^128
3④HAS-160은 이름 그대로 160비트
4③MAC은 공유 비밀키라 수신자도 만들 수 있어 부인방지 불가 (축 3). 부인방지는 전자서명
5②길이 확장 공격 방지. ③ MAC은 어떤 구조든 부인방지를 못 함, ④ 해시는 되돌릴 수 없음(축 1)
6②솔트 = 사전 계산 공격 방지. 솔트는 키가 아니므로 ① · ④와 무관
7③Blowfish는 블록 암호 (축 1의 암호화 쪽)

부록 A. 스스로 확인하기

#질문답이 있는 곳
1해시 · 암호화 · CRC의 차이는?1.1
2해시만으로 출처 인증이 안 되는 이유는?1.2
3역상 · 제2역상 · 충돌 저항성에서 공격자에게 주어진 것은 각각?2.1
4"약한"과 "강한" 충돌 저항성 중 무엇이 더 강한 요구인가? 왜?2.1
5생일 공격으로 n비트 해시의 충돌을 찾는 데 필요한 시도 수는?2.2
6머클-담고르와 스펀지 구조의 대표 알고리즘은?3.1
7MD5 · SHA-1 · SHA-256 · RIPEMD-160 · HAS-160의 출력 길이는?3.2
8SHA-512의 블록 크기와 라운드 수는?3.2
9HAS-160을 전자서명용으로 쓰지 않는 이유는?3.2
10MDC · MAC · 전자서명을 키와 부인방지로 비교하면?4.1
11MAC이 못 하는 두 가지는?4.1
12HMAC의 ipad · opad 구조와 그 목적은?4.2
13CBC-MAC의 한계와 보완책은?4.3
14솔트와 키 스트레칭은 각각 무엇을 막나?5.1
15/etc/shadow의 $6$은 무엇을 뜻하나?5.1

부록 B. 자주 하는 실수 · 함정

실수바로잡기
"해시는 복호화할 수 있다"❌ 일방향 . 비교만 함
"해시함수는 비밀키를 쓴다"❌ 키를 쓰는 것은 MAC
"CRC도 무결성용 암호 해시"❌ CRC는 우연한 오류 탐지용
"약한 충돌 저항성 = 충돌 저항성"❌ 약한 = 제2역상 (x가 주어짐), 강한 = 아무 쌍
"역상 저항성 = 약한 충돌 저항성"❌ 역상은 해시값 이 주어짐
"생일 공격은 해시 요구사항"❌ 요구사항이 아니라 공격
"128비트 해시는 2^128 시도해야 충돌"❌ 생일 공격으로 2^64
"HAS-160은 128비트"❌ 160비트
"SHA-512 블록은 512비트"❌ SHA-512 블록은 1024비트 , 80라운드
"SHA-3는 SHA-2를 늘린 것"❌ Keccak 스펀지 구조 , 설계가 다름
"MAC은 부인방지를 제공"❌ 공유키라 불가 . 부인방지는 전자서명
"MAC을 쓰면 재전송도 막힌다"⚠️ 순서번호 · 타임스탬프 · Nonce를 함께 넣어야 함
"솔트는 비밀로 숨겨야 한다"⚠️ 솔트는 해시와 함께 저장해도 됨 . 목적은 사전 계산 방지
"패스워드가 길면 shadow 해시값도 길어진다"❌ 해시 출력 길이는 고정
"Blowfish는 해시"❌ Blowfish는 블록 암호

부록 C. AI · NotebookLM 복습 프롬프트

이 20번 노트만 근거로 4지선다 7문제를 내줘. 노트 밖 지식은 쓰지 마.
"세 가지 저항성 구분", "생일 공격 계산", "해시 출력 길이 표", "MDC·MAC·전자서명 비교",
"HMAC 구조", "솔트와 레인보우 테이블"은 반드시 포함해줘.
내가 답하면 채점하고, 틀린 보기가 왜 틀렸는지 노트의 판별 축과 절 번호로 설명해줘.