๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“–CS/๐Ÿ“™Theory of Information Security

[์ •๋ณด๋ณดํ˜ธ๋ก ] Lecture3. Authentication(2)

by goguma.dev 2024. 10. 6.

โ€ป ์ด ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€๋“ค์€ knu JY.Lee ๊ต์ˆ˜๋‹˜์˜ <์ •๋ณด๋ณดํ˜ธ๋ก > ์ˆ˜์—…์„ ๋“ฃ๊ณ  ๋‚˜๋ฆ„๋Œ€๋กœ ํ•„์ž๊ฐ€ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

โ€ป ๋ถ€์กฑํ•œ ์„ค๋ช…์ด ์žˆ๊ฑฐ๋‚˜, ์ž˜๋ชป ์•Œ๊ณ  ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์ด ๋ณด์ธ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜Š

 

2-2. Security Considerations

์ €๋ฒˆ ๊ธ€์— ์ด์–ด์„œ ํŒจ์Šค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Security Considerations (๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ)

  • ํŒจ์Šค์›Œ๋“œ์˜ ํ†ต์‹  ๋ฐฉ์‹(How is the password communicated?):
    • ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ†ต์‹ ๋˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ†ต์‹  ์ค‘์— ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋„์ฒญ๋‹นํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค๋ฉด ํฐ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจ์Šค์›Œ๋“œ์˜ ์ €์žฅ ๋ฐฉ์‹(How is the password stored?):
    • ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋ช…ํ™•ํ•œ ํ…์ŠคํŠธ๋กœ ์ €์žฅ๋˜๋Š”์ง€, ์•”ํ˜ธํ™”๋˜์—ˆ๋Š”์ง€, ํ•ด์‹œ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋ณด์•ˆ ์ˆ˜์ค€์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํ•ด์‹œ ์ฒ˜๋ฆฌ๋œ ํŒจ์Šค์›Œ๋“œ๋Š” ๋” ์•ˆ์ „ํ•˜์ง€๋งŒ, ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋Š” ํ•ดํ‚น์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋Š”๊ฐ€(How does the system check the password?) _ ์—ฌ๊ธฐ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค!
    • ์‹œ์Šคํ…œ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•˜๊ฑฐ๋‚˜ ์šฐํšŒํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€?(How easy is it to guess the password?):
    • ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฌ์šด ํŒจ์Šค์›Œ๋“œ๋Š” ์ข…์ข… ์ถ”์ธกํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ์„ฑ ๋†’์€ ๋ณต์žกํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

Common Implementation Mistakes

(1) Response Information Exposure (์‘๋‹ต ์ •๋ณด ๋…ธ์ถœ)

  • ์‘๋‹ต ๋ถˆ์ผ์น˜: ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์š”์ฒญ์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ์‘๋‹ตํ•  ๊ฒฝ์šฐ, ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์ƒํƒœ๋‚˜ ํŠน์ • ์ •๋ณด๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ณต๊ฒฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ด๋ฏธ์ง€์—์„œ๋Š” ์‹œ์Šคํ…œ์ด ํ•ด๋‹น ํŒจ์Šค์›Œ๋“œ๋ฅผ ์–ด๋Š ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋…ธ์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€์‘ ๋ฐฉ๋ฒ•:
    • ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋˜๋Š” ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€, ๊ณ„์ •์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”์ง€, ๊ณ„์ •์ด ์ž ๊ฒจ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(2) Response Discrepancy: Login (๋กœ๊ทธ์ธ ๋ถˆ์ผ์น˜)

  • ์ž˜๋ชป๋œ ์‘๋‹ต ์˜ˆ์‹œ:
    • "๋กœ๊ทธ์ธ ์‹คํŒจ: ์‚ฌ์šฉ์ž foo์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
    • "๋กœ๊ทธ์ธ ์‹คํŒจ: ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ID์ž…๋‹ˆ๋‹ค."
    • "๋กœ๊ทธ์ธ ์‹คํŒจ: ๊ณ„์ •์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
  • ์ด๋Ÿฌํ•œ ์‘๋‹ต์€ ๊ณต๊ฒฉ์ž์—๊ฒŒ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋‚˜ ๊ณ„์ • ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ฌ๋ฐ”๋ฅธ ์‘๋‹ต ์˜ˆ์‹œ:
    • "๋กœ๊ทธ์ธ ์‹คํŒจ: ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ID ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค." ์ด์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋Š” ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

(3) Response Discrepancy: Password Recovery (ํŒจ์Šค์›Œ๋“œ ๋ณต๊ตฌ ๋ถˆ์ผ์น˜)

  • ์ž˜๋ชป๋œ ์‘๋‹ต ์˜ˆ์‹œ:
    • "๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๋งํฌ๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค."
    • "ํ•ด๋‹น ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
  • ์ด๋Ÿฌํ•œ ์‘๋‹ต์€ ํŠน์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์‹œ์Šคํ…œ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ณต๊ฒฉ์ž์—๊ฒŒ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ฌ๋ฐ”๋ฅธ ์‘๋‹ต ์˜ˆ์‹œ:
    • "ํ•ด๋‹น ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•œ๋‹ค๋ฉด, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." ์ด์™€ ๊ฐ™์€ ์‘๋‹ต์€ ์ด๋ฉ”์ผ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ˆจ๊ธฐ๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ์ •๋ณด ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

(4) Response Discrepancy: HTTP Status Codes (HTTP ์ƒํƒœ ์ฝ”๋“œ ๋ถˆ์ผ์น˜)

  • HTTP ์ƒํƒœ ์ฝ”๋“œ์— ๋”ฐ๋ฅธ ์ •๋ณด ๋…ธ์ถœ: HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ์‘๋‹ต ์˜ˆ์‹œ:
    • "๋กœ๊ทธ์ธ ์‹คํŒจ: ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ID ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋•Œ๋กœ๋Š” HTTP 200 ์ฝ”๋“œ๋กœ, ๋•Œ๋กœ๋Š” HTTP 403 ์ฝ”๋“œ๋กœ ๋ฐ˜ํ™˜๋  ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž๋Š” ์ƒํƒœ ์ฝ”๋“œ ์ฐจ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ฌ๋ฐ”๋ฅธ ์‘๋‹ต ์˜ˆ์‹œ:
    • ํ•ญ์ƒ HTTP 403 ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ƒํƒœ ์ฝ”๋“œ ์ฐจ์ด๋ฅผ ํ†ตํ•ด ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(5) Response Discrepancy: Timing (์‘๋‹ต ์‹œ๊ฐ„ ์ฐจ์ด)

  • ์‘๋‹ต ์‹œ๊ฐ„ ์ฐจ์ด์— ๋”ฐ๋ฅธ ์ •๋ณด ๋…ธ์ถœ: ์ธ์ฆ ์ฝ”๋“œ์—์„œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์ง€๋ฉด ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋‚˜, ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ ์˜ˆ์‹œ:
const userExists = await lookupUserExists(username);
if (userExists) {
    const passwordHash = hash(password);
    const isValid = await lookupCredentials(username, passwordHash);
    if (!isValid) {
        throw Error('Invalid username or password');
    }
} else {
    throw Error('Invalid username or password');
}

 

  • ์ด ์ฝ”๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ ํ›„์—๋งŒ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹ฑํ•˜๊ณ , ์ž๊ฒฉ ์ฆ๋ช…(๋น„๋ฐ€๋ฒˆํ˜ธ)์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณง๋ฐ”๋กœ "Invalid username or password" ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ์™€ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ‹€๋ ธ์„ ๋•Œ์˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฒฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • ์ข‹์€ ์ฝ”๋“œ ์˜ˆ์‹œ:
const passwordHash = hash(password);
const isValid = await lookupCredentials(username, passwordHash);
if (!isValid) {
    throw Error('Invalid username or password');
}
  • ์ด ์ฝ”๋“œ์—์„œ๋Š” lookupUserExists() ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ƒ๋žตํ•˜๊ณ , ํ•ญ์ƒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ•ด์‹ฑํ•œ ํ›„ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์—, ์‘๋‹ต ์‹œ๊ฐ„์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ, ๊ณต๊ฒฉ์ž๋Š” ์‘๋‹ต ์‹œ๊ฐ„์„ ๋ถ„์„ํ•ด๋„ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด๋‚˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 


Security Considerations (๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ)

  • ํŒจ์Šค์›Œ๋“œ์˜ ํ†ต์‹  ๋ฐฉ์‹(How is the password communicated?):
    • ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ†ต์‹ ๋˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ†ต์‹  ์ค‘์— ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋„์ฒญ๋‹นํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค๋ฉด ํฐ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจ์Šค์›Œ๋“œ์˜ ์ €์žฅ ๋ฐฉ์‹(How is the password stored?):
    • ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋ช…ํ™•ํ•œ ํ…์ŠคํŠธ๋กœ ์ €์žฅ๋˜๋Š”์ง€, ์•”ํ˜ธํ™”๋˜์—ˆ๋Š”์ง€, ํ•ด์‹œ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋ณด์•ˆ ์ˆ˜์ค€์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํ•ด์‹œ ์ฒ˜๋ฆฌ๋œ ํŒจ์Šค์›Œ๋“œ๋Š” ๋” ์•ˆ์ „ํ•˜์ง€๋งŒ, ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋Š” ํ•ดํ‚น์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋Š”๊ฐ€(How does the system check the password?) 
    • ์‹œ์Šคํ…œ์ด ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•˜๊ฑฐ๋‚˜ ์šฐํšŒํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€?(How easy is it to guess the password?) _ ์—ฌ๊ธฐ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค!
    • ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฌ์šด ํŒจ์Šค์›Œ๋“œ๋Š” ์ข…์ข… ์ถ”์ธกํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ์„ฑ ๋†’์€ ๋ณต์žกํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

๊ณต๊ฒฉ์ž๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ธกํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ)

  • ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ๋’ค์ง‘์–ด์„œ ์‚ฌ์šฉ
  • ์‚ฌ๋žŒ ์ด๋ฆ„, ๊ฑฐ๋ฆฌ ์ด๋ฆ„, ๋„์‹œ ์ด๋ฆ„ ๋“ฑ
  • ๋Œ€๋ฌธ์ž ์ด๋‹ˆ์…œ์„ ์ด์šฉํ•œ ํŒจ์Šค์›Œ๋“œ
  • ์ฃผ(state) ๋‚ด ๋ชจ๋“  ์œ ํšจํ•œ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ
  • ๋ฐฉ ๋ฒˆํ˜ธ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ
  • ๋ฌธ์ž ๋Œ€์ฒด ๊ธฐ๋ฒ• (์˜ˆ: '3' ๋Œ€์‹  'E' ์‚ฌ์šฉ ๋“ฑ)

 

๋˜ํ•œ, ๊ณต๊ฒฉ์ž๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ์•”ํ˜ธํ™”๋œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์—ญ์ถ”์ ํ•˜์—ฌ ์‹ค์ œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์•Œ์•„๋‚ด๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (Password Hash Cracking)

ํ•ด์‹œ๊ฐ’์„ ์—ญ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, GPU์™€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์˜ ๋ฐœ๋‹ฌ๋กœ ์†๋„๊ฐ€ ์ ์  ๋นจ๋ผ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • GPU ๊ธฐ๋ฐ˜ ํ•˜๋“œ์›จ์–ด:
    • GPU๋Š” ๊ฒŒ์ž„์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ•ด์‹ฑ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์—๋„ ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, Nvidia RTX 4090์€ ์ดˆ๋‹น 300๊ธฐ๊ฐ€ ํ•ด์‹œ์˜ ์„ฑ๋Šฅ์„ ๋‚ด์–ด, ์œˆ๋„์šฐ NTLM ํ•ด์‹œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํฌ๋ž˜ํ‚น ๋„๊ตฌ:
    • Crackq์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๋„๊ตฌ๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํฌ๋ž˜ํ‚นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • "๋น„๋ฐ€๋ฒˆํ˜ธ ํฌ๋ž˜ํ‚น ์„œ๋น„์Šค"๋ผ๋Š” ๊ฐœ๋…๋„ ์กด์žฌํ•˜๋ฉฐ, ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ๋กœ RTX 4090 8๊ฐœ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฆฌ๊ทธ๋Š” 48๋ถ„ ๋งŒ์— ๋Œ€๋ถ€๋ถ„์˜ 8์ž๋ฆฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํฌ๋ž˜ํ‚นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Defense #1: Password Requirements (ํŒจ์Šค์›Œ๋“œ ์š”๊ตฌ ์‚ฌํ•ญ)

  • ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ํŒจ์Šค์›Œ๋“œ ๊ทœ์น™์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    • ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธ
    • ์ตœ์†Œ X์ž ์ด์ƒ์ด์–ด์•ผ ํ•จ
    • ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•จ
    • ์ตœ๊ทผ์— ์œ ์ถœ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํฌํ•จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, haveibeenpwned.com ๊ฐ™์€ ํƒ€์‚ฌ ์„œ๋น„์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šคํ•˜์—ฌ ์œ ์ถœ๋œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Defense #2: Hash Stretching (ํ•ด์‹œ ์ŠคํŠธ๋ ˆ์นญ)

  • ํ•ด์‹œ ์ŠคํŠธ๋ ˆ์นญ ๊ธฐ๋ฒ•:
    • ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ•ด์‹ฑ ๋ผ์šด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ, ๊ณต๊ฒฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํฌ๋ž˜ํ‚นํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž์›์„ ํฌ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‹ค์ค‘ ํ•ด์‹ฑ ๋ผ์šด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์„œ๋ฒ„๋Š” ๋™์‹œ์— ์ธ์ฆ ์‹œ๋„๊ฐ€ ํญ์ฃผํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ ๋ถ€ํ•˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ‘œ์ค€ํ™”๋œ ๋‹ค์ค‘ ๋ผ์šด๋“œ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” PBKDF2, bcrypt, scrypt ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PBKDF2 + HMAC-SHA-256 (ํ•ด์‹œ ์ŠคํŠธ๋ž˜์นญ์˜ ์˜ˆ์‹œ)

 

 


์•”ํ˜ธ ์ •์ฑ…(Password Policies):

  • ์ง€๋‚˜์น˜๊ฒŒ ์ œํ•œ์ ์ธ ์•”ํ˜ธ ์ •์ฑ…(7~8์ž, ํŠน์ • ๋ฌธ์ž์˜ ์กฐํ•ฉ, ์ด์ „ 12๊ฐœ์˜ ์•”ํ˜ธ์™€ ๋‹ฌ๋ผ์•ผ ํ•˜๋Š” ๊ทœ์น™ ๋“ฑ)์€ ์‚ฌ์šฉ์ž๋ฅผ ์ขŒ์ ˆ์‹œํ‚ค๊ณ  ๋ณด์•ˆ๋„ ์•ฝํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์•”ํ˜ธ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์œผ๋ฉฐ, ์ข…์ข… ์ด๋ฅผ ์‰ฝ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ๋ถˆ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๋™์ผํ•œ ์•”ํ˜ธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ณด์•ˆ์„ ์•ฝํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธ ๊ธฐ์–ต ์šฉ์ด์„ฑ(Password Memorability):

  • ์•”ํ˜ธ์˜ ๊ฐ•๋„์™€ ๊ธฐ์–ต ์šฉ์ด์„ฑ์€ ์ƒ์ถฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ณต์žกํ•œ ์•”ํ˜ธ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์–ด๋ ค์›Œํ•˜๋ฉฐ, ๊ฐ„๋‹จํ•œ ์•”ํ˜ธ๋Š” ๋ณด์•ˆ์ด ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, “jack123” ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์•”ํ˜ธ๋Š” ์‰ฝ๊ฒŒ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณด์•ˆ์ด ๋‚ฎ์œผ๋ฉฐ, ๋ณต์žกํ•œ ์•”ํ˜ธ๋Š” ๊ธฐ์–ตํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ์ด์— ๋”ฐ๋ผ ์•”ํ˜ธ ์ƒ์„ฑ์˜ ์ „๋žต์œผ๋กœ๋Š” ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: "correct horse battery staple").

์•”ํ˜ธ ์š”๊ตฌ ์‚ฌํ•ญ - ๋ชจ๋ฒ” ์‚ฌ๋ก€(Password Requirements - Best Practices):

  • ๊ตฌ์‹ ๋ฐฉ๋ฒ•: ๋ณต์žกํ•œ ์•”ํ˜ธ๋ฅผ ์š”๊ตฌํ•˜๊ณ , ์ •๊ธฐ์ ์œผ๋กœ ์•”ํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉฐ, ์ด์ „์— ์‚ฌ์šฉํ•œ ์  ์—†๋Š” ์•”ํ˜ธ๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋ถˆํŽธํ•˜๊ฒŒ ํ•˜๊ณ , ์‹ค์งˆ์ ์œผ๋กœ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ์—…๋ฐ์ดํŠธ๋œ ๋ฐฉ๋ฒ•: ์ตœ์†Œ ์•”ํ˜ธ ๊ธธ์ด๋ฅผ ์„ค์ •ํ•˜๊ณ , 64์ž๋ฅผ ๋„˜์ง€ ์•Š๊ฒŒ ํ•˜๋ฉฐ, ์•”ํ˜ธ๋ฅผ ๊ณต๊ฐœ๋œ ๋ฐ์ดํ„ฐ์™€ ๋น„๊ตํ•˜์—ฌ ์ทจ์•ฝํ•˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜๊ณ , ์ธ์ฆ ์‹œ๋„ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉฐ, ์ด์ค‘ ์ธ์ฆ์„ ๊ถŒ์žฅํ•˜๊ฑฐ๋‚˜ ํ•„์ˆ˜๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

๋ณด์•ˆ ๊ด€๋ จ ์ถ”๊ฐ€ ์ทจ์•ฝ์ 

๊ฐ€์งœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€_ ์‚ฌ์šฉ์ž๊ฐ€ ์ง„์งœ ์›น์‚ฌ์ดํŠธ๋กœ ์ฐฉ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ณต๊ฒฉ ๋ฐฉ์‹

 


3. Multiple-factor Authentication

๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•œ๋‹ค๊ณ  ํ•ด๋„ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ์„ ๋” ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

  • ๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ:
    • Password spray: ์ถ”์ธก ๊ณต๊ฒฉ, ํ•ด๋จธ๋ง, ๋Š๋ฆฌ๊ณ  ๊พธ์ค€ํ•œ ์‹œ๋„
    • Brute force: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”์ถœ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ํฌ๋ž˜ํ‚น
  • ๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ๋„ ๋ง‰์„ ์ˆ˜ ์—†๋Š” ๊ณต๊ฒฉ:
    • Credential stuffing: ์œ ์ถœ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฒฉ
    • Phishing: ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ ๋˜๋Š” ์ž๊ฒฉ ์ฆ๋ช… ๊ฐ€๋กœ์ฑ„๊ธฐ
    • Keystroke logging: ์•…์„ฑ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ํ‚ค ์ž…๋ ฅ ๊ธฐ๋ก
    • Local discovery: ๋ฌผ๋ฆฌ์  ์žฌ๋ฃŒ ํƒ์ƒ‰, ๋„คํŠธ์›Œํฌ ์Šค์บ๋‹
    • Extortion: ํ˜‘๋ฐ• ๋˜๋Š” ๋‚ด๋ถ€์ž ์œ„ํ˜‘
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•:
    • ๋‹ค์ค‘ ์ธ์ฆ (Multi-factor authentication)

 

๋‹ค์ค‘ ์ธ์ฆ์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

(1) ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ๋ฌผ๊ฑด์ด๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ex. sms ์ธ์ฆ, ์€ํ–‰ ์นด๋“œ๋‚˜ ๋ณด์•ˆ ํ† ํฐ์„ ์ธ์ฆ

๋ฌธ์ œ. ์‚ฌ์šฉ์ž๊ฐ€ ํœด๋Œ€์ „ํ™”๋‚˜ ์ธ์ฆ ์ˆ˜๋‹จ์„ ๋ถ„์‹ค, ๋„๋‚œ ๋‹นํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

(2) Time-based One-Time Passwords (TOTP) ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๊ณต์œ :
    • ์„œ๋ฒ„๋Š” ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ์‚ฌ์šฉ์ž์˜ ์Šค๋งˆํŠธํฐ ์•ฑ๊ณผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋น„๋ฐ€ ํ‚ค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ›„ ์ธ์ฆํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์•ฑ์—์„œ ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ:
    • ์Šค๋งˆํŠธํฐ ์•ฑ์€ ์นด์šดํ„ฐ(์‹œ๊ฐ„์— ๊ธฐ๋ฐ˜ํ•œ ๊ฐ’)๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ด ๊ฐ’๊ณผ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ด์šฉํ•ด ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ์ƒ์„ฑ ๊ณผ์ •์€ HMAC-SHA-1 ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ์—ฌ๊ธฐ์— ๋น„๋ฐ€ ํ‚ค(K)์™€ ์นด์šดํ„ฐ(C)๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐฑ์‹ :
    • ์•ฑ์€ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์นด์šดํ„ฐ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

>> TOTP๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ •๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ณด๋‹ค ํ›จ์”ฌ ์•ˆ์ „ํ•œ ์ธ์ฆ ๋ฐฉ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

(3) ์‚ฌ์šฉ์ž๋งŒ์ด ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ˆ˜๋‹จ์ธ ์ƒ์ฒด ์ธ์‹์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์ฒด ์ธ์‹์—๋Š” ์ง€๋ฌธ, ์†๋ฐ”๋‹ฅ ์Šค์บ”, ์–ผ๊ตด ์ธ์‹, ํ™์ฑ„/๋ง๋ง‰ ์Šค์บ”์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ƒ์ฒด ์ธ์‹์˜ ์žฅ์ ์€ ํ•ญ์ƒ ๋ชธ์— ์ง€๋‹ˆ๊ณ  ์žˆ์–ด ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์—†๊ณ , ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์žƒ์–ด๋ฒ„๋ฆฌ๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๊ณ„: ์ƒ์ฒด ์ธ์‹์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€๋Š” ๋‹ฌ๋ฆฌ "ํ™•์‹ค์„ฑ"์ด ์•„๋‹Œ "ํ™•๋ฅ "์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ƒ์ฒด ์ธ์‹ ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ํ™•์‹ ํ•  ์ˆ˜๋Š” ์—†๊ณ , ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๋งž์„ ๊ฐ€๋Šฅ์„ฑ์— ๋”ฐ๋ผ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋‹ค์ค‘ ์ธ์ฆ์€ ๋” ์•ˆ์ „ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํŽธํ•จ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

๋งˆ์ง€๋ง‰์œผ๋กœ...

  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด hashing๊ณผ solting์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค: ํ•ด์‹œ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ผ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , ์†”ํŒ…์€ ๊ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ์— ๋ฌด์ž‘์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด์‹œ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ €์žฅ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ณต๊ฒฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜์—ˆ์„ ๋•Œ๋„ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ์น˜๋“ค์ด ๋•Œ๋•Œ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋‚˜์˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Summary

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํŒจ์Šค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์ด์šฉํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ๋  ๋ณด์•ˆ ์‚ฌํ•ญ ๋‘ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋กœ, ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ์ž ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ™•์ธํ•  ๋•Œ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ถ”์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ํŒจ์Šค์›Œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์ค‘ ์ธ์ฆ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์žฅ์—์„œ๋Š” Authorization(๊ถŒํ•œ ๋ถ€์—ฌ)์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.