Cyber Security Academy · 강의

해시 함수: SHA-256과 그 이상

충돌 저항성, 원상 저항성, 활용 사례 등 암호학적 해시의 특성을 살펴봅니다.

레슨 3/413개 단계

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

암호학적 해시 함수란 무엇인가요

암호학적 해시 함수는 길이에 제한이 없는 입력을 받아 고정 길이의 출력(다이제스트)을 생성합니다. 해시 함수는 결정적이어야 하고, 계산이 빨라야 하며, 역상 저항성(되돌릴 수 없음), 충돌 저항성(동일한 해시를 갖는 두 입력을 찾을 수 없음), 눈사태 효과(작은 변경이 완전히 다른 해시를 만듦)를 가져야 합니다.

SHA-2 계열

SHA-2 계열(NSA가 설계하고 NIST가 표준화함)에는 다음이 포함됩니다.

  • SHA-256 — 256비트 출력으로, 널리 사용됨
  • SHA-384 — 384비트 출력
  • SHA-512 — 512비트 출력으로, 64비트 CPU에서 더 빠름

SHA-256은 Bitcoin, TLS 인증서, Git 커밋 ID에 사용됩니다.

SHA-3 계열

SHA-3는 SHA-2와 완전히 다른 설계인 Keccak 스펀지 구조를 사용합니다. SHA-2에서 약점이 발견될 경우를 대비한 백업으로 표준화되었습니다. SHA-3은 널리 배포되지는 않았지만 일부 암호화 프로토콜과 하드웨어에서 사용됩니다.

MD5와 SHA-1: 취약한 알고리즘

보안을 목적으로 MD5 또는 SHA-1을 절대 사용하지 마십시오.

  • MD5: 일반 하드웨어로 몇 초 만에 충돌을 찾을 수 있음
  • SHA-1: 2017년에 최초의 실용적인 충돌이 입증됨(SHAttered)

MD5와 SHA-1은 보안과 무관한 체크섬(파일 중복 제거)에는 여전히 유용하지만, 무결성 보장에는 사용할 수 없습니다.

해시의 용도: 파일 무결성

다운로드 검증:

sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodified

해시의 용도: 디지털 서명

문서에 서명할 때는 전체 문서를 개인 키로 암호화하지 않습니다(너무 느리기 때문입니다). 대신 다음과 같이 합니다.

  1. 문서의 해시를 계산합니다(빠름).
  2. 개인 키로 해시를 암호화합니다(작고 빠름).
  3. 수신자는 공개 키로 복호화한 후 자신이 계산한 해시와 비교합니다.

HMAC: 무결성을 위한 키 기반 해시

HMAC(해시 기반 메시지 인증 코드)는 해시 함수와 비밀 키를 결합하여 인증 태그를 생성합니다. 데이터의 무결성과 진위를 모두 확인하는 데 사용됩니다. JWT, API 인증 및 TLS에서 사용됩니다.

import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()

해시 길이 확장 공격

SHA-2(Merkle-Damgård 구조)는 길이 확장 공격에 취약합니다. H(비밀+메시지)를 알고 있으면 비밀을 알지 못해도 H(비밀+메시지+확장)을 계산할 수 있습니다. HMAC은 이를 방지합니다. SHA-3은 이 공격에 취약하지 않습니다.

레인보 테이블과 솔팅

레인보 테이블은 빠른 조회를 위해 해시 → 입력 매핑을 미리 계산해 둔 것입니다. 솔팅을 사용하면 이를 방지할 수 있습니다. 입력마다 고유한 무작위 값을 추가하면 각 해시가 고유해지므로, 조회 대신 각 항목에 대해 전체 무차별 대입을 수행해야 합니다.

머클 트리

머클 트리는 각 부모 노드가 자식 노드들의 해시인 해시 트리입니다. Bitcoin 블록체인, Git, 인증서 투명성 로그에서 모든 데이터를 다운로드하지 않고도 대규모 데이터 세트를 효율적으로 검증하는 데 사용됩니다.

적절한 해시 선택하기

선택 가이드:

  • 일반적인 무결성/체크섬: SHA-256
  • 비밀번호 저장: Argon2id, bcrypt(SHA-256을 직접 사용하지 않음)
  • 메시지 인증: HMAC-SHA-256
  • 디지털 서명: 기반 해시로 SHA-256 또는 SHA-384 사용
  • 피해야 할 것: 보안 애플리케이션에서의 MD5, SHA-1

빠른 확인: 해시 함수

길이 확장 공격을 방지하면서 비밀 키도 필요로 하는 구성 방식은 무엇일까요?

학습 내용 요약

해시 함수는 길이에 제한이 없는 입력으로부터 고정 길이의 다이제스트를 생성합니다. SHA-256과 SHA-512가 현재 표준입니다. MD5와 SHA-1은 보안 용도로 사용하기에 취약합니다. HMAC은 인증된 무결성을 위해 비밀 키를 추가합니다. 비밀번호에는 Argon2/bcrypt를 사용하십시오. 머클 트리는 해시를 확장하여 대규모 데이터 세트를 효율적으로 검증할 수 있게 합니다.

무료로 시작

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

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

코스
76
레슨
303

자주 묻는 질문

“해시 함수: SHA-256과 그 이상” 강의는 무료인가요?

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

“해시 함수: SHA-256과 그 이상”에서 뭘 배우나요?

충돌 저항성, 원상 저항성, 활용 사례 등 암호학적 해시의 특성을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“해시 함수: SHA-256과 그 이상” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 대칭 암호화: AES와 스트림 암호
  2. 비대칭 암호화: RSA와 타원 곡선
  3. 해시 함수: SHA-256과 그 이상
  4. 전자 서명과 인증서
← Cyber Security Academy(으)로 돌아가기