암호학/암호학 둘러보기

[암호학 둘러보기](9)[해시]

황올뱀 2025. 2. 18. 20:17

해시 함수: 임의의 입력을 고정된 길이로 출력하는 함수

h(M) = M'(해시 출력값)

  • 특징
    해시 함수로 나온 출력으로 입력을 예측하기 어렵다.
    같은 해시값을 갖는 서로 다른 입력값을 찾기 힘들다. (충돌 x)
    같은 입력을 넣는다면 출력도 당연히 같다.
    이산로그에 비해 해시는 매우 빠르다.
  • 쓰임
    디지털 서명: 원본 메세지 노출 없이 서명을 받을 수 있음
    메세지 무결성 검정: 메세지의 일부만 변경해도 해시값은 천차만별로 달라져 메세지가 수정되었는지 검증 가능
    데이터베이스 인덱싱
  • 종류: MD5, SHA, CRC 등...

SHA-1: 가장 간단한 SHA 알고리즘

반복적 연산으로 160비트의 해시를 출력한다.

  • 과정
    데이터 처리: 입력 데이터를 512의 배수로 만들기 (모자르면 패딩)
    초기 해시값: 가장 처음엔 이 값이 저장되어있음
        레지스터 A: H0=0x67452301
        레지스터 B: H1=0xEFCDAB89
        레지스터 C: H2=0x98BADCFE
        레지스터 D: H3=0x10325476
        레지스터 E: H4=0xC3D2E1F0

    이후 각 블록을 16개의 32비트의 워드로 쪼개고,
    워드 개수를 80개로 늘리기 위해
    (t>= 16)에 대해 W(t) = ROTL(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16), 1)으로
    W(17)...W(79)를 만든다.
    라운드 반복 (총 80번)
        각 라운드 t마다
        temp = ROTL(A, 5) + f(B, C, D) + E + W(t) + K(t)
        E = D
        D = C
        C = ROTL(B, 30)
        B = A
        A = temp
        라운드 별로 K, f는 정해져 있다.
        - 라운드 t = 0~19: f(B,C,D)=(B∧C)∨(~B∧D), K=0x5A827999
        - 라운드 t = 20~39: f(B,C,D)=B XOR C XOR D,  K=0x6ED9EBA1
        - 라운드 t = 40~59: f(B,C,D)=(B∧C)∨(B∧D)∨(C∧D), K=0x8F1BBCDC
        - 라운드 t = 60~79:  f(B,C,D)=B XOR C XOR D, K=0xCA62C1D6
    해시값 갱신
        H0 = A, H1 = B, H2 = C, H3 = D, H4 = E
    이걸 각 블록마다 반복...
  • 현재는 해시 충돌 문제가 밝혀져 SHA-2, 3으로 갈아탔음
728x90
반응형