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