โป ์ด ์นดํ ๊ณ ๋ฆฌ์ ๊ธ๋ค์ 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?):
- ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ํจ์ค์๋๋ ์ข ์ข ์ถ์ธกํ๊ธฐ ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ ๋ณด์์ฑ ๋์ ๋ณต์กํ ํจ์ค์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.

(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 ๋ฑ์ด ์์ต๋๋ค.

์ํธ ์ ์ฑ (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(๊ถํ ๋ถ์ฌ)์ ๋ํด ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค.
'๐CS > ๐Theory of Information Security' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด๋ณดํธ๋ก ] Lecture6. Symmetric Cryptography (0) | 2024.11.08 |
---|---|
[์ ๋ณด๋ณดํธ๋ก ] Lecture5. Classical Cryptography (0) | 2024.11.08 |
[์ ๋ณด๋ณดํธ๋ก ] Lecture4. Authorization (1) | 2024.10.08 |
[์ ๋ณด๋ณดํธ๋ก ] Lecture3. Authentication(1) (1) | 2024.10.06 |
[์ ๋ณด๋ณดํธ๋ก ] Lecture2. Concepts in Security (6) | 2024.10.06 |