HANGUL.WIKI

해시 함수

Hash Function

번역 제공
2,383자 · 2026-04-26
목차 (14개 섹션)

해시 함수 (Hash Function)

개요

해시 함수(Hash Function)는 임의 길이의 입력 데이터를 고정된 길이의 출력값(해시값, 다이제스트)으로 변환하는 단방향 수학 함수다. 암호학, 데이터 무결성 검증, 자료구조, 블록체인 등 현대 컴퓨팅의 핵심 기반 기술로 사용된다.

핵심 특성

1. 결정론적(Deterministic): 동일 입력은 항상 동일 출력을 생성한다. 2. 단방향성(One-way): 해시값으로부터 원본 데이터를 역산하는 것이 계산적으로 불가능하다. 3. 충돌 저항성(Collision Resistance): 서로 다른 두 입력이 동일 해시값을 생성하는 경우(충돌)를 찾기 극히 어렵다. 4. 눈사태 효과(Avalanche Effect): 입력의 1비트 변화가 출력의 약 50% 비트를 변화시킨다. 5. 고정 길이 출력: 입력 크기에 무관하게 출력 길이가 일정하다.

주요 알고리즘

MD5 (Message Digest 5)

  • 128비트(32자리 16진수) 출력
  • 1991년 Ron Rivest 설계
  • 현재 암호학적으로 파괴됨: 2004년 Wang Xiaoyun 팀이 충돌 쌍 생성 기법 발표. 현재 수초 내 충돌 생성 가능
  • 암호학적 용도로 사용 금지; 비암호학적 체크섬 용도로만 제한 사용
  • SHA-1 (Secure Hash Algorithm 1)

  • 160비트 출력
  • 2017년 구글 SHAttered 프로젝트로 실제 충돌 쌍 공개
  • NIST에 의해 2011년 공식 사용 중단 권고
  • SHA-256 / SHA-2 계열

  • SHA-256: 256비트 출력 / SHA-512: 512비트 출력
  • NIST FIPS 180-4 표준
  • 현재 가장 널리 사용되는 암호학적 해시 함수
  • TLS/SSL, 비트코인, 코드 서명, 비밀번호 저장(PBKDF2 등) 등에 활용
  • 양자 컴퓨터에 대한 그로버 알고리즘 공격 시 보안 강도 절반으로 감소 → 256비트가 128비트 수준으로
  • SHA-3 (Keccak)

  • 2015년 NIST 표준화
  • SHA-2와 완전히 다른 스펀지 구조(Sponge Construction) 사용
  • 이더리움 블록체인이 Keccak-256 사용
  • BLAKE3

  • 2020년 발표, SHA-256 대비 수배~수십 배 빠른 처리 속도
  • 병렬화 최적화, 현대 하드웨어에 적합
  • 비밀번호 저장에서의 해시

    단순 SHA-256으로 비밀번호를 저장하는 것은 불충분하다. 레인보우 테이블 공격과 브루트 포스에 취약하기 때문이다.

    올바른 비밀번호 해싱 방식:

  • bcrypt: 비용 인수(cost factor)로 연산 속도 조절 가능, 솔트 내장
  • scrypt: 메모리 집약적 설계로 GPU 병렬 공격 방어
  • Argon2: 2015년 Password Hashing Competition 우승, id2 모드 권장
  • PBKDF2: NIST/FIPS 표준, 반복 횟수 설정 가능
  • 핵심 원칙: 솔트(무작위 값)를 비밀번호에 추가하여 해싱하면 동일 비밀번호도 다른 해시값 생성.

    블록체인에서의 활용

  • 비트코인: SHA-256 이중 해싱으로 블록 헤더 해시 생성; 작업증명(PoW) 채굴에서 특정 조건의 해시값 탐색
  • 블록 연결: 각 블록이 이전 블록의 해시값을 포함하여 변경 불가능한 체인 형성
  • 머클 트리(Merkle Tree): 트랜잭션을 해시로 이진 트리 구성, 효율적 검증
  • 이더리움: Keccak-256 활용, 스마트 컨트랙트 주소 생성
  • 취약점 및 공격 유형

    | 공격 유형 | 설명 | |-----------|------| | 레인보우 테이블 | 해시값→원문 역조회 테이블; 솔트로 방어 | | 생일 공격(Birthday Attack) | 확률론적 충돌 탐색; n비트 함수는 약 2^(n/2)회 시도로 충돌 발견 가능 | | 길이 확장 공격(Length Extension) | SHA-1/SHA-2 취약점; SHA-3, BLAKE3는 해당 없음 | | 양자 컴퓨팅 | 그로버 알고리즘으로 2차 가속; 256비트 이상 권장 |

    비암호학적 해시 함수

    성능 최적화 목적의 해시 함수는 암호학적 강도보다 속도를 우선한다.
  • MurmurHash, xxHash: 해시 테이블, 데이터베이스 인덱싱
  • CRC32: 네트워크 패킷 오류 검출
  • 이 함수들은 의도적 충돌 생성이 가능하므로 보안 목적 사용 금지
  • 현황 및 권고사항 (2026 기준)

  • 신규 시스템: SHA-256 이상 또는 SHA-3 사용
  • 비밀번호: Argon2id 우선, bcrypt/scrypt 차선
  • MD5/SHA-1: 즉시 폐기
  • 양자 내성 고려 시: SHA-384/SHA-512 또는 SHA-3-256 이상 권장

문서 정보

최초 작성
최종 갱신
분량
2,383자 (성인 기준)
분류
과학기술

HANGUL.WIKI가 정리·작성한 문서입니다. 정확성을 위해 노력하나 오류가 있을 수 있으므로, 중요한 내용은 공식 출처를 통해 확인하시기 바랍니다. 내용의 오류나 정정 요청은 오류·정정 신고로 알려주시면 검토 후 반영합니다.