해시 함수: SHA-256과 그 이상
충돌 저항성, 원상 저항성, 활용 사례 등 암호학적 해시의 특성을 살펴봅니다.
해시 함수: 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해시의 용도: 디지털 서명
문서에 서명할 때는 전체 문서를 개인 키로 암호화하지 않습니다(너무 느리기 때문입니다). 대신 다음과 같이 합니다.
- 문서의 해시를 계산합니다(빠름).
- 개인 키로 해시를 암호화합니다(작고 빠름).
- 수신자는 공개 키로 복호화한 후 자신이 계산한 해시와 비교합니다.
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 대칭 암호화: AES와 스트림 암호
- 비대칭 암호화: RSA와 타원 곡선
- 해시 함수: SHA-256과 그 이상
- 전자 서명과 인증서