SHA

SHA (Secure Hash Algorithm, ė•ˆė „í•œ 해ė‹œ ė•Œęŗ ëĻŦėĻ˜) 함ėˆ˜ë“¤ė€ ė•”호학ė  해ė‹œ 함ėˆ˜ë“¤ė˜ ëĒ¨ėŒėž…니다.

해ė‹œ 함ėˆ˜ė˜ 버ė „ė€ 0~3버ė „ 까ė§€ ėĄ´ėžŦ하며, ėž‘ė„ą ė‹œė ė—” SHA2가 가ėžĨ 범ėšŠė ė´ëŠ°, 현ėžŦ SHA3가 ęļŒėžĨ되ęŗ  ėžˆėŠĩ니다.

특ė§•

A. 해ė‹œ 함ėˆ˜ëŠ” 두 값ė´ 다ëĨ´ëŠ´ 데ė´í„°ë„ 다ëĨ´ë‹¤ ( 같ė„ ę˛Ŋėš° 해ė‹œ ėļŠëŒ ) B. 해ė‹ąëœ 값ė„ ëŗĩ호화 할ėˆ˜ ė—†ë‹¤. C. 결ęŗŧëŦŧė€ ęŗ ė •ëœ 길ė´ė˜ ėˆĢėžëĨŧ 가ė§„다.

Version
Name
Bit

SHA-0/1

SHA-0/1

160

SHA-2

SHA-224

224

SHA-2

SHA-256

256

SHA-2

SHA-384

384

SHA-2

SHA-512

512

SHA-2

SHA-512/224

224

SHA-2

SHA-512/256

256

SHA-3

SHA-224

224

SHA-3

SHA-256

256

SHA-3

SHA-384

384

SHA-3

SHA-512

512

SHA-3

SHAKE 128/256

ėž„ė˜

SHA-0/SHA-1

sha-0ė— ė••ėļ• 함ėˆ˜ė— 비트 회ė „ ė—°ė‚°ė„ 하나 ėļ”ę°€í•œ ė•Œęŗ ëĻŦėĻ˜ ėž…니다.

SHA-1ė€ SHA 함ėˆ˜ë“¤ ė¤‘ 가ėžĨ 많ė´ ė“°ė´ëŠ°, TLS, SSL, PGP, SSH, IPSec 등 많ė€ ëŗ´ė•ˆ 프로토ėŊœęŗŧ 프로그램ė—ė„œ ė‚ŦėšŠë˜ęŗ  ėžˆë‹¤. SHA-1ė€ ė´ė „ė— 널ëĻŦ ė‚ŦėšŠë˜ë˜ MD5ëĨŧ 대ė‹ í•´ė„œ ė“°ė´ę¸°ë„ 한다.

SHA-0ęŗŧ SHA-1는 해ė‹œ ėļŠëŒė— 대한 ė´ėŠˆę°€ ėƒę˛¨ ė¤‘ėš”í•œ 데ė´í„°ëŠ” ė´ ė´ėƒė˜ ė•Œęŗ ëĻŦėĻ˜ė„ ė‚ŦėšŠí•  것ė„ ęļŒėžĨ하ęŗ  ėžˆėŠĩ니다.

동ėž‘ ė›ëĻŦ

A 패딩

INPUT MESSAGEëĨŧ 512bitė˜ 블록ėœŧ로 나눕니다. ė´ë•Œ 512 비트는 448bit ( message + padding ) + 64bit ( message length )로 나눕니다.

B 32Bit ëļ„ëĻŦ

A

0x67452301

B

0xefcdab89

C

0x98badcfe

D

0x10325476

E

0xc3d2e1f0

W0 - W79는 ėœ„ ęŗ ė •ëœ Word Bufferė™€ 특ė • ė—°ė‚°ė„ ęą°ėŗ 160BitëĨŧ 만들ė–´ëƒ…니다.

C Hash ėƒė„ą

80개ė˜ WT는 다ėŒęŗŧ 같ė€ ęŗĩė‹ė„ ęą°ėŗ ėƒė„ąëŠë‹ˆë‹¤.

0<= t <= 19
f (t, B, C, D) = (B & C) | (~B & D)

20<= t <= 39

f (t, B, C, D) = B ^ C ^ D

40<= t <= 59

f (t, B, C, D) = (B & C ) | (B & D) | (C & D)

60 <= t <= 79

f (t, B, C, D) = B ^ C ^ D

Wt = (Wt-16 XOR Wt-14 XOR Wt-8 XOR Wt-3) <<< 1bit 레프트 로테ė´ė…˜

D Block ė—°ė‚°

80 ëŧėš´ë“œ 반ëŗĩ (80 Rounds Iteration): 80개ė˜ ëŧėš´ë“œëĨŧ 반ëŗĩ합니다. 각 ëŧėš´ë“œė—ė„œ 다ėŒęŗŧ 같ė€ ęŗ„ė‚°ė„ ėˆ˜í–‰í•Šë‹ˆë‹¤:

f(t;B,C,D) = (B AND C) OR ((NOT B) AND D): 함ėˆ˜ f(t)는 현ėžŦ ëŧėš´ë“œ tė—ė„œ ė‚ŦėšŠë˜ëŠ” 함ėˆ˜ëĄœ, B, C, D 값ė„ ė´ėšŠí•˜ė—Ŧ ęŗ„ė‚°ëŠë‹ˆë‹¤.

ęŗ„ė‚°ëœ f(t)는 ęŗ ė •ėƒėˆ˜ Ktė— ė˜í•´ A,B,C,D,E가 ėžŦë°°ėš˜ëŠë‹ˆë‹¤. ëŧėš´ë“œę°€ ėĸ…ëŖŒëœë’¤ 각 32bitė¸ ABCDEëĨŧ 합ėŗ 해ė‹œę°’ė„ 도ėļœí•Šë‹ˆë‹¤.

Last updated

Was this helpful?