해시 함수: 임의의 입력을 고정된 길이로 출력하는 함수
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
반응형
'암호학 > 암호학 둘러보기' 카테고리의 다른 글
[암호학 둘러보기](11)[전자 서명 2] (0) | 2025.03.20 |
---|---|
[암호학 둘러보기](10)[전자 서명 1] (0) | 2025.03.19 |
[암호학 둘러보기](8)[RSA] (0) | 2025.02.05 |
[암호학 둘러보기](7)[D-H 알고리즘] (1) | 2025.02.04 |
[암호학 둘러보기](6)[AES] (1) | 2025.01.22 |