-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Security ko KR
ASF๋ ํ์ฌ ECryptoMethod์ ์ ์๋ก์ ๋ค์๊ณผ ๊ฐ์ ์ํธํ ๋ฐฉ์์ ์ง์ํฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ |
|---|---|
| 0 | ํ๋ฌธ(PlainText) |
| 1 | ๊ณ ๊ธ ์ํธํ ํ์ค(AES) |
| 2 | ProtectedDataForCurrentUser |
| 3 | EnvironmentVariable |
| 4 | ํ์ผ |
์ ํํ ์ค๋ช ๊ณผ ๊ฐ ๋ฐฉ์์ ๋น๊ต๋ ์๋์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด SteamPassword์ฉ ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ๋ ค๋ฉด, ์ ํํ ์ํธํ ๋ฐฉ์๊ณผ ์๋์ ํ๋ฌธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด encrypt **๋ช
๋ น์ด**๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ดํ, ์ป์ ์ํธํ๋ ๋ฌธ์์ด์ SteamPassword ๋ด ์ค์ ์์ฑ ๊ฐ์ผ๋ก ์
๋ ฅํ๊ณ , ๋ง์ง๋ง์ผ๋ก PasswordFormat์ ์ ํํ ์ํธํ ๋ฐฉ์์ ๋ง๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์ธ์. ์ผ๋ถ ํ์์ encrypt ๋ช
๋ น์ด๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด EnvironmentVariable์ด๋ File์ ์ ์ ํ ๊ฒฝ๋ก๋ง ์
๋ ฅํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฅ ๋จ์ํ๊ณ ๊ฐ์ฅ ์์ ํ์ง ์์ ๋ฐฉ์์ผ๋ก, ECryptoMethod์ 0์ผ๋ก ์ ์๋ฉ๋๋ค. ASF๋ ์ด ๋ฌธ์์ด์ด ํ๋ฌธ(plain text) - ์ฆ ๋น๋ฐ๋ฒํธ ์๋ฌธ ๊ทธ๋๋ก - ์ด๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ์ด๋ ์ฌ์ฉํ๊ธฐ ๊ฐ์ฅ ์ฝ๊ณ , ๋ชจ๋ ์ค์ ๊ณผ 100% ํธํ๋๋ฏ๋ก ๊ธฐ๋ณธ(default) ์ ์ฅ ๋ฐฉ์์ด์ง๋ง, ์์ ํ ์ ์ฅ์ ์ํด์๋ ์ ํ ์์ ํ์ง ์์ต๋๋ค.
์ค๋๋ ๊ธฐ์ค์ผ๋ก ์์ ํ๋ค๊ณ ๊ฐ์ฃผ๋๋ AES ๋ฐฉ์์ ๋น๋ฐ๋ฒํธ ์ ์ฅ์ ECryptoMethod์ 1๋ก ์ ์๋ฉ๋๋ค. ASF๋ ์ด ๋ฌธ์์ด์ด base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ด๋ฉฐ, ์ด๋ฅผ ๋ณํํ๋ฉด AES๋ก ์ํธํ๋ ๋ฐ์ดํธ ๋ฐฐ์ด์ด ๋๊ณ , ์ดํ ํฌํจ๋ **์ด๊ธฐํ ๋ฒกํฐ(initialization vector)**์ ASF ์ํธํ ํค๋ฅผ ์ฌ์ฉํด ๋ณตํธํ๋์ด์ผ ํ๋ค๊ณ ๊ธฐ๋ํฉ๋๋ค.
์ ๋ฐฉ์์ ๊ณต๊ฒฉ์๊ฐ ๋น๋ฐ๋ฒํธ์ ์ํธํ ๋ฐ ๋ณตํธํ์ ์ฌ์ฉ๋๋ ASF ์ํธํ ํค๋ฅผ ์์ง ๋ชปํ๋ ํ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค. ASF๋ --cryptkey ๋ช
๋ น์ค ์ธ์ ๋ฅผ ํตํด ์ต๋ํ์ ๋ณด์์ ์ํด์ ํน์ ํค์ ์ฌ์ฉ์ ํ๋ฝํฉ๋๋ค. ์ด๋ฅผ ์๋ตํ๊ธฐ๋ก ํ๋ค๋ฉด ASF๋ ์๋ ค์ ธ์๊ณ ์ดํ๋ฆฌ์ผ์ด์
์ ํ๋์ฝ๋ฉ๋ ์์ฒด ํค๋ฅผ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์ด๋ ๋๊ตฌ๋ ASF ์ํธํ๋ฅผ ๋ค์ง์ด์ ๋ณตํธํ๋ ์ํธ๋ฅผ ์ป์ ์ ์๋ค๋ ๋ปํ๋๋ค. ์ฌ์ ํ ์ฝ๊ฐ ๋
ธ๋ ฅ์ด ํ์ํ๊ณ ํ๊ธฐ ์ฝ์ง๋ ์์ง๋ง, ๊ฐ๋ฅํ ์ผ์
๋๋ค. ์ด๊ฒ์ด AES ์ํธํ๋ ๋น๋ฐ๋ฆฌ์ ๋ณด๊ดํ๊ณ ์๋ ์์ ๋ง์ --cryptkey๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์
๋๋ค. ASF์์ ์ฌ์ฉํ๋ AES ๋ฐฉ๋ฒ์ ๋ง์กฑ์ค๋ฌ์ด ๋ณด์์ฑ์ ์ ๊ณตํ๊ณ ํ๋ฌธ(PlainText)์ ๋จ์ํจ๊ณผ ProtectedDataForCurrentUser์ ๋ณต์ก์ฑ ๊ฐ์ ๊ท ํ์ ์
๋๋ค. ํ์ง๋ง ์ฌ์ฉ์์ --cryptkey์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํฉ๋๋ค.
(๊ธธ๊ณ ์ฌ์ฉ์ ์ง์ ๋) --cryptkey๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๋ฉด, ๋งค์ฐ ๋์ ์์ค์ ์์ ํ ์ ์ฅ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค.
์ค๋๋ ๊ธฐ์ค์ผ๋ก ์์ ํ๋ค๊ณ ๊ฐ์ฃผ๋๋ DPAPI ๋ฐฉ์์ ๋น๋ฐ๋ฒํธ ์ ์ฅ์ ECryptoMethod์ 2๋ก ์ ์๋ฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฃผ๋ ์ฅ์ ์ ๋์์ ์ฃผ๋ ๋จ์ ์
๋๋ค. AES ๋ฑ ์ํธํ ํค๋ฅผ ์ฌ์ฉํ๋ ๋์ ํ์ฌ ๋ก๊ทธ์ธ ๋ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์๊ฒฉ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํธํํฉ๋๋ค. ์ฆ, ์ค์ง ์ํธํ๋ ๊ธฐ๊ธฐ์์๋ง, ๋ํ ์ค์ง ์ํธํํ ์ฌ์ฉ์๋ง ๋ฐ์ดํฐ๋ฅผ ๋ณตํธํํ ์ ์์ต๋๋ค.
์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด, ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ํธํ๋ SteamPassword๊ฐ ํฌํจ๋ ์ ์ฒด Bot.json ํ์ผ์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ณด๋ด๋๋ผ๋, ํด๋น ์ฌ์ฉ์๋ ์ฌ๋ฌ๋ถ์ PC์ ์ง์ ์ ๊ทผํ์ง ์๋ ํ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณตํธํํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ด๋ ๋ณด์ ์๋จ์ด์ง๋ง, ๋์์ ํธํ์ฑ์ด ๊ฐ์ฅ ๋ฎ๋ค๋ ํฐ ๋จ์ ์ด ์์ต๋๋ค. ์ด ๋ฐฉ์์ผ๋ก ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๊ธฐ๊ธฐ์๋ ํธํ๋์ง ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ์ฌ๋ฌ๋ถ์ด ์ด์์ฒด์ ๋ฅผ ์ฌ์ค์นํ๋ ๊ฒฝ์ฐ ๋ณธ์ธ ๊ธฐ๊ธฐ์์์กฐ์ฐจ ํธํ๋์ง ์์ต๋๋ค. ์ด๋ ๋ณธ์ธ ๊ธฐ๊ธฐ ์ธ์ ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ค์ ํ์ผ์ ์ ๊ทผํ ํ์๊ฐ ์๊ณ , ๊ธฐ๊ธฐ ๊ฐ ํธํ์ฑ๋ ํ์ํ์ง ์์ ๊ฒฝ์ฐ์ ๊ถ์ฅ๋๋ ๋ฐฉ์์
๋๋ค.
์ด ์ต์ ์ ํ์ฌ๋ก์๋ Windows OS๋ฅผ ์คํํ๋ ๊ธฐ๊ธฐ์์๋ง ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฅ ๋ฐฉ์์ ECryptoMethod์ 3์ผ๋ก ์ ์๋ฉ๋๋ค. ASF๋ ๋น๋ฐ๋ฒํธ ํ๋์ ์ง์ ๋ ์ด๋ฆ์ ๊ฐ์ง ํ๊ฒฝ ๋ณ์(์: SteamPassword)์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฝ์ด์ต๋๋ค. ์๋ฅผ ๋ค์ด, SteamPassword๋ฅผ ASF_PASSWORD_MYACCOUNT๋ก, PasswordFormat์ 3์ผ๋ก ์ค์ ํ๋ฉด, ASF๋ ${ASF_PASSWORD_MYACCOUNT} ํ๊ฒฝ ๋ณ์๋ฅผ ํ๊ฐํ์ฌ ํด๋น ๊ฐ์ ๊ณ์ ๋น๋ฐ๋ฒํธ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ASF ํ๋ก์ธ์ค์ ํ๊ฒฝ ๋ณ์๊ฐ ๊ถํ ์๋ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋์ง ์๋๋ก ๋ฐ๋์ ํ์ธํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ ๋ชฉ์ ์์ฒด๊ฐ ๋ฌด์๋ฏธํด์ง๋๋ค.
(ASF ์ค์ ๋๋ ํฐ๋ฆฌ ์ธ๋ถ์ผ ์๋ ์๋) ํ์ผ ๊ธฐ๋ฐ ์ ์ฅ ๋ฐฉ์์ ECryptoMethod์ 4๋ก ์ ์๋ฉ๋๋ค. ASF๋ ๋น๋ฐ๋ฒํธ ํ๋์ ์ง์ ๋ ํ์ผ ๊ฒฝ๋ก(์: SteamPassword)์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฝ์ด์ต๋๋ค. ์ง์ ๋ ๊ฒฝ๋ก๋ ์ ๋ ๊ฒฝ๋ก์ผ ์๋ ์๊ณ , ASF์ "ํ" ์์น(config ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ ํด๋) ๊ธฐ์ค์ ์๋ ๊ฒฝ๋ก์ผ ์๋ ์์ต๋๋ค. ์ด๋ --path **๋ช
๋ น์ค ์ธ์**๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์ด ๋ฐฉ์์ ์๋ฅผ ๋ค์ด ์ด๋ฐ ํ์ผ์ ์ฌ์ฉํ ์ ์๋๋ก ์์ฑํด์ฃผ๋ **Docker secrets**์ ํจ๊ป ์ฌ์ฉํ ์ ์์ง๋ง, Docker ์ธ๋ถ์์๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ ํ ํ์ผ์ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, SteamPassword๋ฅผ /etc/secrets/MyAccount.pass๋ก, PasswordFormat์ 4๋ก ์ค์ ํ๋ฉด, ASF๋ /etc/secrets/MyAccount.pass ํ์ผ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ ์ฝ์ด ๊ณ์ ๋น๋ฐ๋ฒํธ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๋น๋ฐ๋ฒํธ๊ฐ ๋ด๊ธด ํ์ผ์ด ๊ถํ ์๋ ์ฌ์ฉ์์๊ฒ ์ฝํ์ง ์๋๋ก ๋ฐ๋์ ํ์ธํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ ๋ชฉ์ ์์ฒด๊ฐ ๋ฌด์๋ฏธํด์ง๋๋ค.
ํธํ์ฑ์ด ๋ฌธ์ ๊ฐ ๋์ง ์๊ณ , ProtectedDataForCurrentUser ๋ฐฉ์์ ๋์ ๋ฐฉ์์ด ์ฌ๋ฌ๋ถ์๊ฒ ๋ฌธ์ ์๋ค๋ฉด, ์ด๊ฒ์ด ASF์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํ๋ ๊ถ์ฅ ๋ฐฉ์์
๋๋ค. ์ต๊ณ ์ ๋ณด์์ฑ๊ณผ ํธ์์ฑ์ ์ ๊ณตํฉ๋๋ค. AES ๋ฐฉ๋ฒ์ ์ํ๋ ์ด๋ ๊ธฐ๊ธฐ์์๋ ํ๊ฒฝ์ค์ ์ ์ฌ์ฉํ๊ธธ ์ํ๋ ์ฌ๋๋ค์๊ฒ ์ข์ ์ ํ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฌธ์ ๋๊ตฌ๋ JSON ํ๊ฒฝ์ค์ ํ์ผ์ ๋ค์ฌ๋ค ๋ณผ ์ ์๋ค๋ ๊ฒ์ ๊ฐ์์น ์๋๋ค๋ฉด ๊ฐ์ฅ ๋จ์ํ ์ํธ ์ ์ฅ๋ฐฉ์์
๋๋ค.
๋ค๋ง, ๊ณต๊ฒฉ์๊ฐ ์ฌ๋ฌ๋ถ์ PC์ ์ ๊ทผํ ์ ์๋ค๋ฉด ๋ชจ๋ ์ํธํ ๋ฐฉ์์ ์์ ํ์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ค๋ ์ ์ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ASF๋ ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณตํธํํ ์ ์์ด์ผ ํ๋ฉฐ, ๋ง์ฝ ์ฌ๋ฌ๋ถ์ ๊ธฐ๊ธฐ์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์ด๋ฅผ ์ํํ ์ ์๋ค๋ฉด, ๊ฐ์ ๊ธฐ๊ธฐ์์ ์คํ๋๋ ๋ค๋ฅธ ์ด๋ค ํ๋ก๊ทธ๋จ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค. ProtectedDataForCurrentUser๋ ์ฌ์ง์ด ๊ฐ์ PC๋ฅผ ์ด์ฉํ๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋ณตํธํ๋ฅผ ํ ์ ์์๋งํผ ๊ฐ์ฅ ์์ ํ์ง๋ง, ๋๊ตฐ๊ฐ๊ฐ ๋ก๊ทธ์ธ ์๊ฒฉ๊ณผ ๊ธฐ๊ธฐ์ ๋ณด, ASF ํ๊ฒฝ์ค์ ํ์ผ์ ์จ์น๋ค๋ฉด ์ฌ์ ํ ๋ณตํธํ๋ ๊ฐ๋ฅํฉ๋๋ค.
๊ณ ๊ธ ์ค์ ์ ์ํด์๋ EnvironmentVariable๊ณผ File์ ํ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ์๋ค์ ํ์ฉ๋๊ฐ ์ ํ์ ์
๋๋ค. EnvironmentVariable์ ์ฌ์ฉ์ ์ง์ ์๋ฃจ์
์ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ์ป์ด์ ์ค์ง ๋ฉ๋ชจ๋ฆฌ์๋ง ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ข์ ์ ํ์ด๋ฉฐ, File์ ์๋ฅผ ๋ค์ด **Docker secrets**์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค. ๋ค๋ง ์ด ๋ ๋ฐฉ์ ๋ชจ๋ ์ํธํ๋์ด ์์ง ์์ผ๋ฏ๋ก, ๊ฒฐ๊ตญ ์ํ์ ASF ์ค์ ํ์ผ์์ ์ฌ๋ฌ๋ถ์ด ์ ํํ ๋ ๋ฐฉ์ ์ค ํ๋๋ก ์ฎ๊ธฐ๋ ๊ฒ์ผ ๋ฟ์
๋๋ค.
์์์ ์ค๋ช
ํ ์ํธํ ๋ฐฉ์ ์ธ์๋, ๋น๋ฐ๋ฒํธ๋ฅผ ์์ ์ง์ ํ์ง ์๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด SteamPassword๋ฅผ ๋น ๋ฌธ์์ด์ด๋ null ๊ฐ์ผ๋ก ์ค์ ํ๋ ๋ฐฉ์์
๋๋ค. ์ด ๊ฒฝ์ฐ ASF๋ ํ์ํ ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌผ์ด๋ณด๋ฉฐ, ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ง ๋ณด๊ดํ๊ณ ์ด๋์๋ ์ ์ฅํ์ง ์์ต๋๋ค. ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๋ฉด ๊ทธ ๊ฐ๋ ์ฌ๋ผ์ง๋๋ค. ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์ ์ค ๊ฐ์ฅ ์์ ํ์ง๋ง(์ด๋์๋ ์ ์ฅ๋์ง ์์ผ๋ฏ๋ก), ๋์์ ๊ฐ์ฅ ๋ฒ๊ฑฐ๋ก์ด ๋ฐฉ์์ด๊ธฐ๋ ํฉ๋๋ค. ASF๋ฅผ ์คํํ ๋๋ง๋ค(ํ์ํ ๋) ๋น๋ฐ๋ฒํธ๋ฅผ ์๋์ผ๋ก ์
๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ฉด, ๋ณด์ ์ธก๋ฉด์์ ์ต์ ์ ์ ํ์
๋๋ค. ์ ์ด์ ์กด์ฌํ์ง ์๋ ๊ฒ์ ์ ์ถ๋ ์๋ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
ASF๋ ์ด๋ฏธ ์ํธํ๋ ์ํธ๋ฅผ ๋ณตํธํํ๋ ์ด๋ ํ ๋ฐฉ๋ฒ๋ ์ง์ํ์ง ์์ต๋๋ค. ๋ณตํธํ ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค ์์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. ProtectedDataForCurrentUser๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์๋ฅผ ๋ค์ด ASF๋ฅผ ๋ค๋ฅธ ๊ธฐ๊ธฐ๋ก ์ฎ๊ธฐ๋ ๋ฑ์ ์ด์ ๋ก ์ํธํ ์ ์ฐจ๋ฅผ ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด, ์ ํ๊ฒฝ์์ ์ฒ์๋ถํฐ ์ ์ฐจ๋ฅผ ๋ค์ ๋ฐ๋ณตํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
ASF๋ ํ์ฌ EHashingMethod์ ์ ์๋ก์ ๋ค์๊ณผ ๊ฐ์ ํด์ฑ ๋ฐฉ์์ ์ง์ํฉ๋๋ค:
| ๊ฐ | ์ด๋ฆ |
|---|---|
| 0 | ํ๋ฌธ(PlainText) |
| 1 | SCrypt |
| 2 | Pbkdf2 |
์ ํํ ์ค๋ช ๊ณผ ๊ฐ ๋ฐฉ์์ ๋น๊ต๋ ์๋์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด IPCPassword์ฉ ํด์๋ฅผ ์์ฑํ๋ ค๋ฉด, ์ ํํ ํด์ฑ ๋ฐฉ์๊ณผ ์๋์ ํ๋ฌธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด hash **๋ช
๋ น์ด**๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ดํ, ์ป์ ํด์ ๋ฌธ์์ด์ IPCPassword ASF ์ค์ ์์ฑ ๊ฐ์ผ๋ก ์
๋ ฅํ๊ณ , ๋ง์ง๋ง์ผ๋ก IPCPasswordFormat์ ์ ํํ ํด์ฑ ๋ฐฉ์์ ๋ง๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์ธ์.
์ด๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ฑํ๋ ๊ฐ์ฅ ๋จ์ํ๊ณ ๊ฐ์ฅ ์์ ํ์ง ์์ ๋ฐฉ์์ผ๋ก, EHashingMethod์ 0์ผ๋ก ์ ์๋ฉ๋๋ค. ASF๋ ์๋ณธ ์
๋ ฅ๊ฐ๊ณผ ์ผ์นํ๋ ํด์๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์ฌ์ฉํ๊ธฐ ๊ฐ์ฅ ์ฝ๊ณ , ๋ชจ๋ ์ค์ ๊ณผ 100% ํธํ๋๋ฏ๋ก ๋น๋ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ(default) ๋ฐฉ์์ด์ง๋ง, ์์ ํ ์ ์ฅ์ ์ํด์๋ ์ ํ ์์ ํ์ง ์์ต๋๋ค.
์ค๋๋ ๊ธฐ์ค์ผ๋ก ์์ ํ๋ค๊ณ ๊ฐ์ฃผ๋๋ SCrypt ๋ฐฉ์์ ๋น๋ฐ๋ฒํธ ํด์ฑ์ EHashingMethod์ 1๋ก ์ ์๋ฉ๋๋ค. ASF๋ SCrypt ๊ตฌํ์ ์ฌ์ฉํ๋ฉฐ, 8 ๋ธ๋ก, 8192 ๋ฐ๋ณต(iteration), 32 ํด์ ๊ธธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ํธํ ํค๋ฅผ ์ํธ(salt)๋ก ์ฌ์ฉํด ๋ฐ์ดํธ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ๋ฐ์ดํธ๋ ์ดํ base64 ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
ASF๋ ์ด ๋ฐฉ์์ ์ํ ์ํธ๋ฅผ --cryptkey **๋ช
๋ น์ค ์ธ์**๋ฅผ ํตํด ์ง์ ํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ต๋ํ์ ๋ณด์์ ์ํด์๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ฅผ ์๋ตํ๊ธฐ๋ก ํ๋ฉด, ASF๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ ค์ ธ ์๊ณ ํ๋์ฝ๋ฉ๋ ์์ฒด ํค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์ด๋ ํด์ฑ์ ๋ณด์์ฑ์ ๋จ์ด๋จ๋ฆฝ๋๋ค.
์ ๋๋ก ์ฌ์ฉํ๋ฉด(์ฌ์ฉ์ ์ง์ ์ํธ, ๊ธด ๋น๋ฐ๋ฒํธ), ์์ ํ ์ ์ฅ์ ์ํ ๋งค์ฐ ๋์ ์์ค์ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค.
์ค๋๋ ๊ธฐ์ค์ผ๋ก๋ ์ฝํ๋ค๊ณ ๊ฐ์ฃผ๋๋ Pbkdf2 ๋ฐฉ์์ ๋น๋ฐ๋ฒํธ ํด์ฑ์ EHashingMethod์ 2๋ก ์ ์๋ฉ๋๋ค. ASF๋ Pbkdf2 ๊ตฌํ์ ์ฌ์ฉํ๋ฉฐ, 10000 ๋ฐ๋ณต(iteration), 32 ํด์ ๊ธธ์ด, ์ํธํ ํค๋ฅผ ์ํธ๋ก ์ฌ์ฉํ๊ณ , HMAC ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ SHA-256์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ๋ฐ์ดํธ๋ ์ดํ base64 ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
ASF๋ ์ด ๋ฐฉ์์ ์ํ ์ํธ๋ฅผ --cryptkey **๋ช
๋ น์ค ์ธ์**๋ฅผ ํตํด ์ง์ ํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ต๋ํ์ ๋ณด์์ ์ํด์๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ฅผ ์๋ตํ๊ธฐ๋ก ํ๋ฉด, ASF๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ ค์ ธ ์๊ณ ํ๋์ฝ๋ฉ๋ ์์ฒด ํค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์ด๋ ํด์ฑ์ ๋ณด์์ฑ์ ๋จ์ด๋จ๋ฆฝ๋๋ค.
IPCPassword์ ๊ฐ์ ์ผ๋ถ ๋น๋ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ํด์ฑ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, ์ฌ์ฉ์ ์ง์ ์ํธ์ ํจ๊ป SCrypt๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ๋ฌด์ฐจ๋ณ ๋์
๊ณต๊ฒฉ(brute-forcing)์ ๋ํด ๋งค์ฐ ์ค์ํ ๋ณด์์ฑ์ ์ ๊ณตํฉ๋๋ค.
Pbkdf2๋ ์ค์ง ํธํ์ฑ์ ์ํด์๋ง ์ ๊ณต๋ฉ๋๋ค. ์ฃผ๋ ์ด์ ๋, Steam ํ๋ซํผ ์ ๋ฐ์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก(์: ๋ถ๋ชจ ์ ํ PIN)๋ฅผ ์ํด ์ด๋ฏธ ์ด์ ๋ํ ์๋ํ๋(๊ทธ๋ฆฌ๊ณ ํ์ํ) ๊ตฌํ์ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฌ์ ํ ์์ ํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง๋ง, SCrypt์ ๊ฐ์ ๋์์ ๋นํด์๋ ์ฝํ ํธ์
๋๋ค.
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
- ๐ก ํ
- ๐ฌ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
- โ๏ธ ์์ํ๊ธฐ (์ฌ๊ธฐ์๋ถํฐ)
- ๐ฅ ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒ์ ๋ฑ๋ก๊ธฐ
- ๐ข ๋ช ๋ น์ด
- ๐ ๏ธํธํ์ฑ
- ๐ง ํ๊ฒฝ์ค์
- ๐ด ItemsMatcherPlugin
- ๐ ๊ด๋ฆฌ
- โฑ๏ธ ์ฑ๋ฅ
- ๐ก ์๊ฒฉ ํต์
- ๐ช Steam ๊ฐ์กฑ ๊ณต์
- ๐ ๊ฑฐ๋
- โจ๏ธ ๋ช ๋ น์ค ์ธ์
- ๐ง ์ฌ์ฉ ์ค๋จ
- ๐ณ Docker
- ๐ค ์ถ๊ฐ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
- ๐ ๊ณ ์ฑ๋ฅ ์ค์
- ๐ IPC
- ๐ ํ์งํ
- ๐ ๋ก๊น
- ๐พ ์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ ํ๊ฒฝ ์ค์
- ๐ต๐ผโโ๏ธ MonitoringPlugin
- ๐ ํ๋ฌ๊ทธ์ธ
- ๐ ๋ณด์
- โฌ๏ธ SteamTokenDumperPlugin
- ๐ฆ ์๋ ํํฐ
- ๐ต 2๋จ๊ณ ์ธ์ฆ







