ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toSecurity
์๋ฌธ ์ฝ๊ธฐ
MITM ๊ณต๊ฒฉ ์ฐจ๋จ์ ์ํ Certificate Pinning ๊ธฐ๋ฐ Transport Layer ๋ณด์ ๊ฐํ
๐ SSL Pinning in Mobile Apps: Android & iOS (Practical Guide + Trade-offs) - Part 1
AI ์์ฝ
Context
ํ์ค HTTPS ํ๊ฒฝ์์ CA(Certificate Authority) ๊ธฐ๋ฐ ์ ๋ขฐ ๋ชจ๋ธ์ ์์กดํจ์ ๋ฐ๋ฅธ ์ทจ์ฝ์ ๋ฐ์. ๊ณต๊ฒฉ์๊ฐ ์ ์ฑ ์ธ์ฆ์๋ฅผ ์ค์นํ์ฌ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ๋ MITM(Man-in-the-Middle) ๊ณต๊ฒฉ ๊ฐ๋ฅ์ฑ์ ๋ฐ๋ฅธ ๋ณด์ ์ํ ์์กด.
Technical Solution
- ๋ชจ๋ CA ์ ๋ขฐ ๋ฐฉ์์์ ํํผํ์ฌ ํน์ Public Key๋ง ํ์ฉํ๋ White-list ๋ฐฉ์์ ์ ๋ขฐ ๋ชจ๋ธ ์ค๊ณ
- OkHttp์ CertificatePinner๋ฅผ ํ์ฉํ ๋๋ฉ์ธ๋ณ SHA-256 ํด์ ๊ฐ ๊ฒ์ฆ ๋ก์ง ๊ตฌํ
- OpenSSL์ ํตํ ์๋ฒ Public Key ์ถ์ถ ๋ฐ Base64 ์ธ์ฝ๋ฉ ๊ธฐ๋ฐ์ Pinning ๊ฐ ์์ฑ
- ์ธ์ฆ์ ์ ์ฒด๊ฐ ์๋ Public Key๋ฅผ Pinning ํ์ฌ ์ธ์ฆ์ ๊ฐฑ์ ์์ ์ ์ฐ์ฑ์ ํ๋ณดํ ์ค๊ณ
- Transport Layer์ ๋ณด์ ๊ฐํ๋ฅผ ํตํด ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ฐ ์ํธ ์ ๋ขฐ ์ฒด๊ณ ๊ตฌ์ถ
์ค์ฒ ํฌ์ธํธ
1. ๋จ์ ์ธ์ฆ์ ํ์ผ Pinning๋ณด๋ค ๊ฐฑ์ ์ฃผ๊ธฐ๊ฐ ๊ธด Public Key Pinning ์ฑํ ๊ฒํ
2. ์ธ์ฆ์ ๋ง๋ฃ ๋ฐ ๊ต์ฒด ์ ์ฑ ์ ๋ฐ์ดํธ ์์ด ๋์ ๊ฐ๋ฅํ Rotation ์ ๋ต ์๋ฆฝ
3. ๋ณด์ ์๊ตฌ์ฌํญ๊ณผ ์ด์ ๋ณต์ก๋ ์ฌ์ด์ Trade-off ๋ถ์์ ํตํ ๋์ ์ฌ๋ถ ๊ฒฐ์
4. OkHttp ๋ฑ ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํ ํ์ค ๊ตฌํ ๋ฐฉ์ ์ ์ฉ