PromleeBlog
sitemap
aboutMe

posting thumbnail
해시 함수
Hash Function

📅

🚀

해시 함수란 (What is a Hash Function) 🔗

임의의 크기의 데이터를 입력받아 고정된 크기의 출력을 반환하는 함수

🚀

암호학적 해시 함수 (Cryptographic Hash Function) 🔗

임의 길이의 메시지를 입력받아
고정된 길이의 메시지 다이제스트
를 출력하는 함수 hh
암호학적 해시 함수는 다음 조건을 만족해야 함
  1. 효율적 계산
    (Computational Efficiency)
    • 입력 mm이 주어지면 h(m)h(m)을 효율적으로 계산할 수 있어야 함
  2. 단방향성
    or
    원본 숨김 저항성
    (One-way or Pre-image Resistance)
    • yy가 주어졌을 때 h(m)=yh(m')=y를 만족하는 mm'을 찾는 것이 계산적으로 불가능해야 함
  3. 제2 원본 숨김 저항성
    or
    약한 충돌 저항성
    (Second Pre-image Resistance or Weak Collision Resistance)
    • mm이 주어졌을 때 h(m)=h(m)h(m')=h(m)을 만족하는 mm'을 찾는 것이 계산적으로 불가능해야 함
  4. 충돌 저항성
    (Collision Resistance)
    • m,mm, m'이 주어졌을 때 h(m)=h(m)h(m)=h(m')을 만족하는 m,mm, m'을 찾는 것이 계산적으로 불가능해야 함
예시: MD5, HAVAL-128, SHA-1,
SHA-2
, SHA-3

🚀

SHA-1 및 SHA-2의 설계 논리 (Design Rationale of SHA-1 and SHA-2) 🔗

image
  1. 초기화 벡터 (IV: Initialization Vector)
  2. 메시지 블록 (Message Block)
  3. 압축 함수:c (Compression Function)
  4. 해시 출력 (Hash Output)

SHA-1과 SHA-2의 라운드 함수 (Round Function of SHA-1 and SHA-2) 🔗

image
  1. 초기값
    • A,B,C,D,EA, B, C, D, E
  2. 라운드 함수
    • ft(B,C,D)f_t(B, C, D) - 라운드 번호 tt에 따라 다른 논리 연산 수행
  3. 비트 순환 이동
    • AABB비트는 각각 5 비트와 30비트 순환 이동
    • 순환 이동은 비트를 왼쪽으로 회전시키며, 가장 왼쪽 비트는 가장 오른쪽 비트로 이동
  4. 연산 및 업데이트
    • 각 라운드에서 A,B,C,D,EA, B, C, D, E는 각각 ftf_t와 다른 연산을 통해 갱신됨
    • A=ft(B,C,D)+Kt+Wt+EA = f_t(B, C, D) + K_t + W_t + E와 같은 식으로 갱신
예: 첫 라운드에서 다음과 같은 연산 수행

🚀

SHA-3의 설계 논리 (Design Rationale of SHA-3) 🔗

스펀지 구조 기반: 데이터가 흡수된 후 결과 압축
image