SHA
SHA (Secure Hash Algorithm, ์์ ํ ํด์ ์๊ณ ๋ฆฌ์ฆ) ํจ์๋ค์ ์ํธํ์ ํด์ ํจ์๋ค์ ๋ชจ์์ ๋๋ค.
ํด์ ํจ์์ ๋ฒ์ ์ 0~3๋ฒ์ ๊น์ง ์กด์ฌํ๋ฉฐ, ์์ฑ ์์ ์ SHA2๊ฐ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ด๋ฉฐ, ํ์ฌ SHA3๊ฐ ๊ถ์ฅ๋๊ณ ์์ต๋๋ค.
ํน์ง
A. ํด์ ํจ์๋ ๋ ๊ฐ์ด ๋ค๋ฅด๋ฉด ๋ฐ์ดํฐ๋ ๋ค๋ฅด๋ค ( ๊ฐ์ ๊ฒฝ์ฐ ํด์ ์ถฉ๋ ) B. ํด์ฑ๋ ๊ฐ์ ๋ณตํธํ ํ ์ ์๋ค. C. ๊ฒฐ๊ณผ๋ฌผ์ ๊ณ ์ ๋ ๊ธธ์ด์ ์ซ์๋ฅผ ๊ฐ์ง๋ค.
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๋ ๋ค์๊ณผ ๊ฐ์ ๊ณต์์ ๊ฑฐ์ณ ์์ฑ๋ฉ๋๋ค.
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