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๋Š” ํ•ด์‹œ ์ถฉ๋Œ์— ๋Œ€ํ•œ ์ด์Šˆ๊ฐ€ ์ƒ๊ฒจ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ด ์ด์ƒ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ž‘ ์›๋ฆฌ

Drawing

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