발표자 : 노수현 조원 : 장종훈,유창열,김범용 전인철,김세원 해쉬 함수 SHA-1 발표자 : 노수현 조원 : 장종훈,유창열,김범용 전인철,김세원
목차 SHA 배경 SHA-1 알고리즘 패딩 W0~W79 블록처리(80단계) SHA함수 비교 각 매개변수 비교
SHA 배경 SHA (Secure Hash Algorithm) SHA-1 일방향 해쉬 함수 1993년에 미국의 연방정보처리표준규격(FIPS PUB 180)으로 발표 NIST에서 제안 160bit의 해쉬값 생성 일방향 해쉬 함수 메시지->해쉬값 (o) 해쉬값->메시지 (x) SHA-1 1995년에 발표된 개정판 FIPS PUB 180-1으로 발표 메시지 길이에 대한 상한 존재 메시지 길이가 264비트 미만
SHA-1 알고리즘 서명문 100‥‥0 64bit L x 512 비트 = N x 32 비트 메시지 패딩 입력블록 512비트 W0~W79 32비트×80개 초기 상태 160비트 (A,B,C,D,E 32비트×5개 블록의 처리 80단계 내부 상태 해시값 최종 상태 서명문 길이 서명문 100‥‥0 64bit K비트<2 비트 64 패 딩 L x 512 비트 = N x 32 비트
패딩 메시지 다음에 여분의 데이터를 부가하여 메시지의 길이가 512비트의 정수배가 되도록 하는 것을 가리킨다. 패딩이라는 것은 「메워 넣기」라는 의미이다. SHA-1에서는 이후의 처리를 하기 쉽게 하기 위해 맨 처음에 패딩(padding)을 행한다. 패딩되는 비트수는 1~512사이의 수 이 512비트의 집합을 입력 블록이라 부른다. 서명문 100‥‥0 64bit K비트<2 비트 64 패 딩 L x 512 비트 = N x 32 비트 입력블록
W0~W79의 계산 패딩이 끝난 다음에는 입력 블록 단위의 처리가 된다. Wt = (Wt-16⊕Wt-14⊕Wt-8⊕Wt-3)을 1비트 회전
Wt 생성 과정 입력 블록 512비트로부터 32bit X 80개 (W0~W79)을 생성 입력블록 512비트 W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12 W13 W14 W15 XOR 1bit 회전 W16 W17 W18 W19 W20 Wt-16 Wt-14 Wt-8 Wt-3 XOR Wt 1bit 회전 W63 W65 W71 W76 XOR W79 1bit 회전 입력 블록 512비트로부터 32bit X 80개 (W0~W79)을 생성 W16 = (W0⊕W2⊕W8⊕W13)을 1비트 회전 Wt = (Wt-16⊕Wt-14⊕Wt-8⊕Wt-3)을 1비트 회전
회전한 모양 (예) 좌측 시프트 1회 1
블록처리 입력 블록에 대해 80 단계씩의 처리를 행한다(다음장 참조) 입력 블록의 정보를 기초로 내부 상태(160비트)를 변화시킨다. 이것을 모든 블록에 대해 행한다. 내부 상태 160비트는 A, B, C, D, E라는 이름이 붙은 32비트× 5개의 버퍼로 표현되어 있다.
+: 법232연산 입력 블록 512비트를 160비트의 내부 상태에 섞어 넣는다(80 단계) 입력 블록 512비트 단계 0 1블록 처리 전의 내부 상태 160비트 A버퍼 32비트 B버퍼 32비트 C버퍼 32비트 D버퍼 32비트 E버퍼 32비트 입력 블록 512비트 입력 블록 512비트를 160비트의 내부 상태에 섞어 넣는다(80 단계) 단계 0 단계 1 단계 2 단계 3 단계 77 단계 78 단계 79 + + +: 법232연산 + + + + A버퍼 32비트 B버퍼 32비트 C버퍼 32비트 D버퍼 32비트 E버퍼 32비트 1블록 처리 후의 내부 상태 160비트
HSHA-1각 단계 처리 : 법232 연산 1단계 처리 전의 내부 상태 160비트 + + + + + 67 45 23 01 B버퍼의 초기값 EF CD AB 89 C버퍼의 초기값 98 BA DC FE D버퍼의 초기값 10 32 54 76 E버퍼의 초기값 C3 D2 E1 F0 1단계 처리 전의 내부 상태 160비트 HSHA-1각 단계 처리 A버퍼 32비트 B버퍼 32비트 C버퍼 32비트 D버퍼 32비트 E버퍼 32비트 기약 논리함수 ft + f0~f19=(B · C) + (~B · D) f20~f39=B ⊕ C ⊕ D f40~f59=(B · C) + (C · D) + (D · B) f60~f79=B ⊕ C ⊕ D 5비트 회전 + + 입력 블록과 단계에 의존하는 수 Wt (32비트) 30비트 회전 단계에 의존하는 정수 Kt 32비트 K0~K19= 5A 82 79 99 K20~K39= 6E D9 EB A1 K40~K59= 8F 1B BC DC K60~K79= CA 62 C1 D6 + A버퍼 32비트 B버퍼 32비트 C버퍼 32비트 D버퍼 32비트 E버퍼 32비트 + : 법232 연산 1단계 처리 후의 내부 상태 160비트
SHA 매개변수 비교
서명 알고리즘은 RSA 이며 해쉬 알고리즘은 SHA1
감사합니다.