Manual/BerEditor

[BerEditor] PBKDF (Password-Based Key Derivation Function) ์‚ฌ์šฉ๋ฒ•

JayKim๐Ÿ™‚ 2023. 5. 8. 13:58

[์ด ๊ธฐ๋Šฅ์€ ๋ผ์ด์„ ์Šค ๋ฒ„์ „ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค]

๋ณดํ†ต ๋ธ”๋ก ์•”ํ˜ธ ์‚ฌ์šฉ์‹œ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ
์‚ฌ์‹ค ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ‚ค๋ฅผ ์ถ”์ถœ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด PBKDF ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท ๋ฑ…ํ‚ค์—์„œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ทธ๋•Œ ์‚ฌ์šฉ์ž๋Š” ์ธ์ฆ์„œ ์„ ํƒํ›„ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
์ด๋•Œ ์ž…๋ ฅํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•ด๋‹น ์ธ์ฆ์„œ์˜ ๊ฐœ์ธํ‚ค๋ฅผ ๋ณตํ˜ธํ™” ํ•œ๋‹ค.
์•”ํ˜ธํ™”๋œ ๊ฐœ์ธํ‚ค๋ฅผ ๋ณตํ˜ธํ™”๋Š” ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹Œ
PBKDF ๋ฅผ ํ†ตํ•ด์„œ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ PBKDF ๋Š” Password-Based Key Derivation Function ์˜ ์•ฝ์ž๋กœ ํ‚ค ์ถ”์ถœ ํ•จ์ˆ˜์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  PBKDF1๊ณผ PBKDF2 ๋‘๊ฐ€์ง€๊ฐ€ ์ฃผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋Š”๋ฐ ์ด์— ๋Œ€ํ•œ ๊ธฐ์ˆ  ํ‘œ์ค€์€ PKCS#5 (RFC8018)์— ์ •์˜ ๋˜์–ด ์žˆ๋‹ค.
์‚ฌ์‹ค PBKDF1 ๊ฒฝ์šฐ ์•ˆ์ •์„ฑ์ด ์•ฝํ•ด์„œ PBKDF2๋กœ ๋Œ€์ฒด ๋˜๊ตฌ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  BerEditor์—์„œ ํ‚ค ์ถ”์ถœ ๊ธฐ๋Šฅ์€ PBKDF2์˜ ๋‚ด์šฉ์„ ๋‹ค๋ฃฌ๋‹ค.

ํ‚ค๋ฅผ ํŒŒ์ƒ ๊ณผ์ •

DK = PBKDF2( PRF, Password, Salt, c, dkLen )

/* Each hLen-bit block Ti of derived key DK, is computed as follows (with + marking string concatenation): */
DK = T1 + T2 + โ‹ฏ + Tdklen/hlen
Ti = F(Password, Salt, c, i)

/* c ๋งŒํผ ๋ฐ˜๋ณต์„ ํ•œ๋‹ค. ์ฆ‰ ๋ฐ˜๋ณต์„ ๋งŽ์ด ํ•  ์ˆ˜๋ก ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค */
F(Password, Salt, c, i) = U1 ^ U2 ^ โ‹ฏ ^ Uc

U1 = PRF(Password, Salt + INT_32_BE(i))
U2 = PRF(Password, U1)
โ‹ฎ
Uc = PRF(Password, Uc−1)

PRF : ๋‘๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ™๋Š” ์˜์‚ฌ ๋‚œ์ˆ˜ ํ•จ์ˆ˜( ์˜ˆ: ํ‚ค๊ฐ€ ์žˆ๋Š” HMAC ํ•จ์ˆ˜ )
Password : ํ‚ค๋ฅผ ํŒŒ์ƒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๋งˆ์ŠคํŠธ ์•”ํ˜ธ
Salt : ํ‚ค์˜ ๋ณต์žกํ•จ์„ ์ถ”๊ฐ€ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’์œผ๋กœ ์‹œํ€€์Šค ๋น„ํŠธ
c : ๋ฐ˜๋ณต ์นด์šดํŠธ
dkLen : ์ถ”์ถœ ํ•˜๊ณ  ์‹ถ์€ ํ‚ค์˜ ๊ธธ์ด ๊ฐ’
DK : ์ƒ์„ฑ๋œ ํŒŒ์ƒ ํ‚ค ๊ฐ’

์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งŒ๋“ ๋Š” ๊ฒƒ์ด๋‹ค.

PBKDF2 ๊ฐ’ ์ƒ์„ฑ

๊ทธ๋Ÿผ ๊ฐ„๋‹จํžˆ ์˜ˆ์ œ๋กœ ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋ณด์ž
BerEditor ์—์„œ ์•”ํ˜ธ->ํ‚ค ๊ด€๋ฆฌ->ํ‚ค ์ถ”์ถœํƒญ์„ ์—ด์–ด์„œ ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

์•„๋ž˜ ๊ฐ’์ด ์ž…๋ ฅ ์˜ˆ์ œ ๊ฐ’์ด๋‹ค.

PRF: HMAC-SHA1
Password : plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd
Salt: A009C1A485912C6AE630D3E744240B04
c : 1,000
dkLen : 16 bytes

์ž…๋ ฅ๊ฐ’์„ ๋„ฃ๊ตฌ ํ‚ค๋ฅผ BerEditor ์—์„œ ์ถ”์ถœ ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์—ฌ๊ธฐ์„œ ์ถ”์ถœ ๋œ 17EB4014C8C461C300E9B61518B9A18B ์ƒ์„ฑ๋œ ํ‚ค ๊ฐ’์ด๋‹ค.

ํ™”๋ฉด์—์„œ ์•”ํ˜ธ๊ฐ€ password์ด๊ตฌ ์ฒจ๊ฐ€๊ฐ’์ด Salt ๋ฐ˜๋ณต ์ˆ˜ ๊ฐ€ c ์ด๋‹ค
๊ทธ๋ฆฌ๊ณ  ํ•ด์‰ฌ ์ฝค๋ณด๊ฐ€ PRF ์—์„œ ์‚ฌ์šฉ ํ•  HMAC์˜ ํ•ด์‰ฌ ํ•จ์ˆ˜ ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ‚ค ๊ธธ์ด๊ฐ€ dkLen ์ด๋‹ค.