์๋
ํ์ธ์. ICOREPORT์ @sanghyun ์
๋๋ค.
๋นํธ์ฝ์ธ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์ํธํ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ ์ค์์ ํค ๊ฐ๋ค์ ์ํธํ ์ํค๋ ๋ฐฉ๋ฒ์ธ ํ์ ๊ณก์ ์ํธํ์ ๋ํด ๊ธ์ ์จ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ณธ ์๋ฃ๋ 1๋ถ,2๋ถ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ 1๋ถ๋ ํ์ ๊ณก์ ์ํธํ๋ฅผ ๋ฐฐ์ฐ๊ธฐ์ ์๋ฐ์ ์ ๋๋ก ์๊ฐํ์๋ฉด ๋ ๊ฒ๊ฐ์ต๋๋ค. 2๋ถ๋ ํ์ ๊ณก์ ์ํธํ์ ์ข ๋ ์ด์ ์ ๋ง์ถ๊ณ ์ฅ๋จ์ ์ ๋ํด ์์ ํด๋ณด๊ฒ ์ต๋๋ค.
๋ณธ๋ก ์ ๋๊ฐ๊ธฐ์ ์์, ์ด ๊ธ์ ๋ธ๋ก์ฒด์ธ์ ๊ดํ ๊ตญ๋ด ์๋ฃ๊ฐ ๋งค์ฐ ๋ถ์กฑํ๋ค๊ณ ์๊ฐํ์ฌ ํด์ธ ์๋ฃ์ค ์ ์ ๋ฆฌ๋ ๊ธ์ ๋ฒ์ญํ ๊ฒ์์ ์๋ ค๋๋ฆฝ๋๋ค. (์์๋งํฌ : https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/ )
์ฐ๊ตฌ์๋ค์ RSA์ Diffie-Hellman์ ๋์
ํ ํ ์ธ์ ๋ถํด(factoring)์ ๋ฐ์ด ๋๋ ๋ค๋ฅธ ์ํ์ ๋ฒ ์ด์ค๋กํ ์ํธํ ์๋ฃจ์
์ ์ฐ๊ตฌํ์ต๋๋ค. 1985๋
์ ํ์ ๊ณก์ (Elliptic curve)์ ๋ฒ ์ด์ค๋ก ํ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ด ์ ์๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ ๊ณก์ ์ด ์ ํํ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ํธ๋ฉ๋์ด ํจ์๊ฐ ์๋ํ ์ ์์๊น์?
๋ถํํ๋, ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์คํ๊ต์์ ์ฒ์ ์ธ์ ๋ถํด๋ฅผ ๋ฐฐ์ ๋๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ํ์ ๊ณก์ ์ ์น์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์๋ ๋ช๊ฐ์ง ์น์ ์ ํตํด ์ค๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํ์ ๊ณก์ ์ ํน์ ์ํ ๋ฐฉ์ ์์ ๋ง์กฑํ๋ ์ ๋ค์ ์งํฉ์ ๋๋ค. ์๊ณผ ๊ทธ๋ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ ๊ณก์ ์ ๋จ์ํ ์์ ๊ทธ๋ฆผ์ด ์๋๋ฉฐ ์ํธ ์์ฑ์ ์ ํฉํ ์์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์์ ํ์ ๊ณก์ ์ ์์ธํ ์ดํด๋ด
์๋ค. ํฅ๋ฏธ๋ก์ด ํน์ง์ด ๋ช ๊ฐ์ง ์๋๋ฐ ์ด๋ค ์ค ํ๋๋ ์ํ ๋์นญ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํฅ๋ฏธ๋ก์ด ํน์ง์ ๋น ์์ง์ (non-vertical line)์ด ์ต๋ 3๊ฐ ์ง์ ์์ ๊ณก์ ์ ๊ต์ฐจํ๋ค๋ ๊ฒ ์
๋๋ค.
์ด ๊ณก์ ์ ๋น๊ตฌ ๊ฒ์์ด๋ผ๊ณ ์๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
์ด ๋น๊ตฌ ๊ฒ์์์๋ A ์ง์ ์์ ๊ณต์ ๊ฐ์ ธ์์ B ์ง์ ์ผ๋ก ์ด๋ฒ๋ฆฝ๋๋ค. ๊ทธ๋ผ ๋น์์ง์ ์ด ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด A์ B์ ์ด ์๋ ๋๋จธ์ง ํ์ ๊ณผ ๊ณต์ด ๋ง๋ฌ์๋ ๊ณต์ด ์๋ก ๋๋ ์๋๋ก ํ์ด ์ค๋ฆ ๋๋ค. (์๋๊ทธ๋ฆผ ์ฐธ์กฐ)
์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ด์ํ ์์ง์์ ๋ ์ ์ "dot" ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๊ณก์ ์์ ์ด๋ ํ ๋์ ์ ์๋ก์ด ์ ์ ์ป๊ธฐ ์ํด dotted ๋ ์ ์์ต๋๋ค.
(์ ๊ทธ๋ฆผ๊ณผ๋ ๋ฌด๊ดํ ์์ ์
๋๋ค.)
A dot B = C
A dot A = B (A์ ์์ ์ ์ ์ ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ์ ์ด ํ์ ๊ณก์ ๊ณผ ๋ง๋๋ ์ ์ด B)
A dot B = C
A dot C = D
...
๋น์ ์ด ๋ง์ฝ ๋ ์ ์ ๊ฐ์ง๊ณ ์๊ณ ์ต์ข
์ ์ ๋์ฐฉํ๊ธฐ ์ํด initial point์ ์์์ n๋ฒ์ dot ์์ผ์ค๋ค๋ฉด, ์ฒซ๋ฒ์งธ ์ ๊ณผ ๋ง์ง๋ง ์ ๋ง ๊ฐ์ง๊ณ ์๋ n์ ์ฐพ๋๊ฒ์ด ์ด๋ ต์ต๋๋ค. (do๋ ์ฝ๊ณ undo๋ ์ด๋ ต๋ค๋ ๋ง์ด๊ณ ์ด๊ฒ์ ๊ณง ํธ๋ฉ๋์ด ํจ์์ ํต์ฌ์
๋๋ค.) ์ค๋ช
์ด ์ข ๋์กํ๋ ๋ค์ ๋น๊ตฌ ์๊ธฐ๋ก ๋์๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ํ ์ฌ๋์ด ํผ์ ๋น๊ตฌ๋ฅผ ์น๋ค๊ณ ์๊ฐํด ๋ด
์๋ค. ์์ ์ค๋ช
๋ ๊ท์น์ ๋ฐ๋ณตํ์ฌ ๋ฐ๋ณตํด์ ๋ณผ์ ์น ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋์ค์ ๋๊ตฐ๊ฐ๊ฐ ๋ฐฉ ์์ผ๋ก ๋ค์ด๊ฐ์ ๊ณต์ด ๋๋ ๊ณณ์ ํ์ธํ๋ฉด, ๊ฒ์์ ๋ชจ๋ ๊ท์น๊ณผ ๊ณต์ด ์์๋ ๊ณณ์ ์๊ณ ์๋ค๊ณ ํ๋๋ผ๋ ๋น๊ตฌ ๊ฒ์์ ๋ค์ ์์ํ์ง ์๋ ๊ณต์ด ๊ฐ์ ์ง์ ์ ๊ฐ๋๊น์ง ๊ณต์ ์น ํ์๋ฅผ ์์๋ผ ์ ์์ต๋๋ค. do๋ ์ฝ๊ณ undo๋ ์ด๋ ต์ต๋๋ค. ์ข์ ํธ๋ฉ๋์ด ํจ์์ ํ๋ณธ์ด์ฃ .
์์ ๋จ์ํ๋ ๊ณก์ ์ ๋ณด๊ธฐ ์ฝ๊ณ ํ์ ๊ณก์ ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋
์ ์ค๋ช
ํ๊ธฐ์ ์ข์ง๋ง ์ํธํ๋ฅผ ์ํด ์ฌ์ฉํ๋ ๊ณก์ ์ด ์ด๋ค ๋ชจ์์ด ๋์ด์ผ ํ๋์ง์ ๋ํด์๋ ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด์๋ RSA์ ๊ฐ์ด ๊ณ ์ ๋ ๋ฒ์์ ์ซ์๋ก ์ ํํด์ผ ํฉ๋๋ค. ํ์ ๊ณก์ y^2 = x^3 + ax+ b์ ๊ณต์์ ๊ณ์ฐํ ๋ ์ต๋๊ฐ์ ๊ตฌํ ๋์ ๊ฐ์ด ์ซ์๋ฅผ rolling over (๋๊น ํน์ ๋ฒ๋ฆผ) ํด์ฃผ๋ ํธ๋ฆญ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์ต๋๊ฐ์ ์์๋ก ์ ํํ๋ฉด ํ์ ๊ณก์ ์ ์์ ๊ณก์ (prime curve)์ด๋ผ ๋ถ๋ฆฌ๋ฉฐ ํ๋ฅญํ ์ํธํ ์์ฑ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ ๊ทธ๋ฆผ์ ์ ํต์ ์ธ ์๊ฐ์ผ๋ก ๋ณด๋ฉด ๊ณก์ ์ด๋ผ๊ณ ๋ณด๊ธฐ๋ ์ด๋ ต์ง๋ง ์ค์ ๋ก ์ด๊ฒ์ ๊ณก์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์ํ๋์นญ์์ ์ ์ ์์ต๋๋ค. ์ฌ์ค์, ๋น์ ์ ์ฌ์ ํ ์ด ๊ณก์ ๊ณผ ์ ์ ๊ฐ์ง๊ณ ๋น๊ตฌ๊ฒ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ dot ์ฐ์ฐ์ ํจ์จ์ ์ผ๋ก ๊ณ์ฐํ ์ ์์ต๋๋ค. ๋ ์ ์ฌ์ด์ ์ ์ ์ ์ ๋๋ฌ ํ ๋๊น์ง ๊ฒฝ๊ณ์์ ์ค ๋ฐ๊ฟํจ์ผ๋ก์จ ์๊ฐํ ํ ์ ์์ต๋๋ค. ๋ง์น ๋น๊ตฌ ๊ฒ์์์ ๋ณผ์ด ๋ณด๋์ ๊ฐ์ฅ์๋ฆฌ์ ๋ฟ์์ ๋, ํ ์ด๋ธ์ ๋ฐ๋์ชฝ์ผ๋ก ์ฎ๊ฒจ์ง๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณต์ ๊ณก์ ์์ ๋ค๋ฅธ ํ ์ ์ ๋ฟ์๋๊น์ง ๊ณ์๋ฉ๋๋ค. ๊ทธ๋ฆผ์ ๋ด ์๋ค.
์ด ์๋ก์ด ๊ณก์ ํํ์ ์ฌ์ฉํ๋ฉด ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์์ ๊ณก์ ์์ ์ ์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์์ ๊ทธ๊ฒ์ x์ขํ๋ก ์ค์ ํ๊ณ , y๋ฅผ ํ๋ฉด ๊ณก์ ์์ ์ ์ ์ฐ๋ ๊ฒ์ ๋ํด ์๊ฐํด ๋ณผ ์ ์์ต๋๋ค
**์ฃผ์ : x๊ฐ์ด 65์ธ ์ขํ๋ ์์ผ๋ฏ๋ก ํ์ค ์ธ๊ณ์์๋ ์ด ๊ฐ์ ํผํ ์ ์์ต๋๋ค. **
ํ์ ๊ณก์ ์ํธ ์์คํ ์ ์์๋ก์ ์ต๋๊ฐ, ๊ณก์ ๋ฐฉ์ ์ ๋ฐ ๊ณก์ ์์ ๊ณต๊ฐ์ ์ ์ ํํจ์ผ๋ก์จ ์ ์ ๋ ์ ์์ต๋๋ค. ๊ฐ์ธ ํค๋ ์ซ์ priv์ด๊ณ , ๊ณต๊ฐ ํค๋ priv๊ฐ์ priv ๋ฐฐ์๋งํผ ์ ๊ณฑํ์ฌ dotted๋ ๊ณต๊ฐ์ ์ ๋๋ค.๋ฌผ๋ก ์ต๋๊ฐ์ ๋์ด๊ฐ๋๋ง๋ค ์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ฒ ์ฃ ? priv๊ฐ์ ๋ชจ๋ฅธ๋ค๋ฉด ์ฒซ๋ฒ์งธ ์ ๊ณผ ๋์ค์ ์ ์์น๋ฅผ ์๊ณ ์๋ค๊ณ ํ๋๋ผ๋ ๋ช๋ฒ dot์์ผ์ฃผ๋์ง๋ ๋ชจ๋ฅผํ ๋ do๋ ์ฝ๊ณ undo๋ ์ด๋ ต๋ค๊ณ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ํธ๋ฉ๋์ด ํจ์๋ก์์ ์๊ฒฉ์ ์ถฉ๋ถํ ๊ฐ์ถ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ Trapdoor ๊ธฐ๋ฅ์ผ๋ก ๋ฐํ์ก์ต๋๋ค.
์ต๊ทผ๋ค์ด ํ์ ๊ณก์ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ผ๋ฉฐ ์ฑํ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ์์ต๋๋ค. ํ์ ๊ณก์ ์ํธํ๋ ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ํ์ ๊ณก์ ์ํธํ๋ ๋ฏธ๊ตญ ์ ๋ถ์ ๋ด๋ถ ํต์ ๋ณดํธ, ๋นํธ์ฝ์ธ ์์ ๊ถ ์ฆ๋ช
, Apple์ iMessage ์๋น์ค์ ๊ฒฝ์ฐ DNSCurve๋ฅผ ์ฌ์ฉํ์ฌ DNS ์ ๋ณด๋ฅผ ์ํธํํ๋๋ฐ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ SSL / TLS๋ฅผ ํตํด ์์ ํ ์น ๋ธ๋ผ์ฐ์ง ์ธ์ฆ์ ์ํด๋ ์ ํธ๋๋ ๋ฐฉ๋ฒ์
๋๋ค.
CloudFlare๋ ํ์ ๊ณก์ ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ์ ์๋ฒฝํ ๋ณด์์ ์ ๊ณตํฉ๋๋ค. RSA ๋ฐ Diffie-Hellman๊ณผ ๊ฐ์ 1์ธ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ ํ ๋๋ถ๋ถ์ ์์ญ์์ ํ์ค์ผ๋ก ๋ฐ์๋ค์ฌ์ง๊ณ ์์ง๋ง, ํ์ ๊ณก์ ์ํธํ๋ ์จ๋ผ์ธ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์์ ์ํ ์ ์ํ ์๋ฃจ์ ์ผ๋ก ๋ถ์ํ๊ณ ์์ต๋๋ค.
(์ด ๊ธ์ 2013๋ ์ ์ฐ์ฌ์ ์๋์ ์ธ ์์๊ฐ ์ ์ฉ์ด ๋์ง ์์ง๋ง ์ด๋ฐ๊ฒ ์๊ตฌ๋ ํ๊ณ ์ดํดํ๋ ์ ๋๋ก ๋์ด๊ฐ์๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.)
์ต์ ๋ฒ์ ์ Chrome ๋๋ Firefox์์ HTTPS ๋ฒ์ ์ ์ด ๋ธ๋ก๊ทธ์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ ํ์ ๊ณก์ ์ํธํ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ง์ ํ์ธํ์ค ์ ์์ต๋๋ค.
Chrome์์๋ ์ฃผ์ ํ์ ์ค์ ์ ๊ธ์ ํด๋ฆญํ๊ณ ์ฐ๊ฒฐ ํญ์ผ๋ก ์ด๋ํ์ฌ ๋ณด์ ์ฐ๊ฒฐ์ ์ค์ ํ๋๋ฐ ์ฌ์ฉ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ํ์ธํ ์ ์์ต๋๋ค. Chrome 30์์ ์๋ฌผ์ ๋ฅผ ํด๋ฆญํ๋ฉด ๋ค์ ์ด๋ฏธ์ง๊ฐ ๋ณด์ ๋๋ค.
์ ์ฌ์ง์์ ์ค์ํ ํ ์คํธ๋ ECDHE_RSA ์ ๋๋ค. ECDHE๋ Elliptic Curve Diffie Hellman Ephemeral์ ์ฝ์์ด๋ฉฐ ํ์ ๊ณก์ ์ ๊ธฐ๋ฐ์ผ๋กํ๋ ํค ๊ตํ ๋ฉ์ปค๋์ฆ ์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ SSL๋ด์ ์๋ฒฝํ ์ ๋ฌ ๋ณด์์ ์ ๊ณตํ๊ธฐ์ํด CloudFlare๋ก ๋ถํฐ ์ฑํ๋์์ต๋๋ค. RSA ๊ตฌ์ฑ ์์๋ RSA๊ฐ ์๋ฒ์ ID๋ฅผ ์ฆ๋ช ํ๋๋ฐ ์ฌ์ฉ๋จ์ ์๋ฏธํฉ๋๋ค. CloudFlare์ SSL ์ธ์ฆ์๊ฐ RSA ํค ์์ ๋ฐ์ธ๋ฉ๋์ด ์๊ธฐ ๋๋ฌธ์ RSA๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๋ธ๋ผ์ฐ์ ๋ ํ์ ๊ณก์ ๊ธฐ๋ฐ์ ์ธ์ฆ์๋ ์ง์ํฉ๋๋ค. CloudFlare์ SSL ์ธ์ฆ์๊ฐ ํ์ ๊ณก์ ์ธ์ฆ์์ธ ๊ฒฝ์ฐ์ ์ด ํ์ด์ง ๋ถ๋ถ์ ECDHE_ECDSA๊ฐ ํ์๋ฉ๋๋ค. ์๋ฒ์ ์ ์ ์ฆ๋ช ์ ECDSA (Elliptic Curve Digital Signature Algorithm)์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
CloudFlare์ ECDHE๋ฅผ ์ํ ECC Curve
max: 115792089210356248762697446949407573530086143415290314195533631308867097853951
curve: yยฒ = xยณ + ax + b
a = 115792089210356248762697446949407573530086143415290314195533631308867097853948
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291
RSA๊ฐ ์๋ ECDSA์ ์ฑ๋ฅ ํฅ์์ ๊ทน์ ์
๋๋ค. ์ด์
๋ธ๋ฆฌ ์ต์ ํ ๋ ํ์ ๊ณก์ ์ฝ๋๊ฐ ์๋ ๊ตฌ ๋ฒ์ ์ OpenSSL์ด ์๋๋ผ๋ 256 ๋นํธ ํค๊ฐ์๋ ECDSA ์๋ช
์ 2,048 ๋นํธ ํค๊ฐ์๋ RSA ์๋ช
๋ณด๋ค 20 ๋ฐฐ ์ด์ ๋น ๋ฆ
๋๋ค.
๋งฅ๋ถ ํ๋ก OpenSSL 0.9.8 (speed benchmark returns)
Doing 256 bit sign ecdsa's for 10s: 42874 256 bit ECDSA signs in 9.99s
Doing 2048 bit private rsa's for 10s: 1864 2048 bit private RSA's in 9.99s
RSA๋ณด๋ค ECDSA๋ฅผ ์ฌ์ฉํ๋ฉด 23๋ฐฐ๋ ๋ง์ ์๋ช
์ด ๊ฐ๋ฅํฉ๋๋ค. CloudFlare๋ SSL ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋์์์ด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ์ฃผ CloudFlare๋ ECDHE ์๋๋ฅผ ๋ ๋ฐฐ ์ด์ ๋์ด๋ ์ด์
๋ธ๋ฆฌ ์ต์ ํ ๋ฒ์ ์ ECC๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ์ด๋ฌํ ํ์ ๊ณก์ ์ํธํ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๋ชจ๋์์ ์๊ฐ,์ ๋ ฅ ๋ฐ ๊ณ์ฐ ๋ฆฌ์์ค๋ฅผ ์ ์ฝ ํ ์ ์์ผ๋ฏ๋ก ์น์ ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ์ฐ์
๊ณ์ ๋ชจ๋ ์ฌ๋๋ค์ด ํ์ ๊ณก์ ์ํธํ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ช๊ฐ์ง ์ง๋ฌธ๊ณผ ๋ถํ์ค์ฑ์ด ์์์ต๋๋ค. ์ต๊ทผ ๋ด์ค์ ๋์จ ํ๊ฐ์ง๋ Dual Elliptic Curve Deterministic Random Bit Generator (Dual_EC_DRBG) ์
๋๋ค. ์ด๊ฒ์ ํ์ค ๊ธฐ์ ์ฐ๊ตฌ์ (NIST)์์ ํ์คํํ๊ณ NSA์์ ํ๋ณด์ค์ธ ๋์ ์์ฑ๊ธฐ ์
๋๋ค.
Dual_EC_DRBG๋ ํ์ ๊ณก์ ์ํ์ ์ฌ์ฉํ์ฌ ์์์ ์ซ์๋ฅผ ์์ฑํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ ๊ณก์ ์์ ์ ์ ์ฐ๊ณ ํ์ ๊ณก์ "dot" ์ฐ์ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํฉ๋๋ค. ์ด ๋์ ์์ฑ๊ธฐ๊ฐ ๊ณต๊ฐ ๋ ํ์ ๋ฐฑ๋์ด๋ก ๋์์ธ ๋ ์ ์๋ค๊ณ ๋ณด๊ณ ๊ฐ ๋์๋๋ฐ ๊ทธ ๋ป์ ๋ฐํ๋๋ ์ซ์๋ค์ ์์๊ฐ ์ด๋ค secret number๋ฅผ ๊ฐ์ง ์ฌ๋์ผ๋ก๋ถํฐ ์์ ํ ์์ธก๋ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ต๊ทผ์ RSA๋ผ๋ ํ์ฌ๋ ์ด ๋์ ์์ฑ๊ธฐ๊ฐ ๋ณด์ ์ ํ ๋ผ์ธ์ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ์ ํ์ ํ์ํด์ผ ํ์ต๋๋ค.
(Dual_EC_DRBG ๋ฐฑ๋์ด์ ๊ดํ ์ข์ ๊ธ)
์ด ๋์ ์์ฑ๊ธฐ๊ฐ ๋ฐฑ๋์ด๋ก ์์ฑ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํ์ ๊ณก์ ๊ธฐ์ ์์ฒด์ ๊ฐ๋๋ ๋ณ๊ฒฝ๋ ๊ฒ์ด ์์ง๋ง ํ์ ๊ณก์ ์ ๋ํ ํ์คํ ํ๋ก์ธ์ค์ ๋ํ ์ง๋ฌธ์ด ์ ๊ธฐ๋ฉ๋๋ค. ์ด์ ์ ๋งํ๋ฏ์ด, ์์คํ ์ด ์ ์ ํ๊ฒ ์์์ ์ซ์๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ค๋ฉด ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค.
ํ์ฌ ์ ์ธ๊ณ์ ํ์๋ก ์ ์ํธ์ฌ์ฉ์๋ค์ค ์ผ๋ถ๋ NIST ์์ฒด์ NSA๊ฐ ์ง์ํ ์ถํ ํ์ค์ ๋ํด ์ ๋ฐ์ ์ธ ๋ถ์ ์ด ์์ต๋๋ค. ๋๋ฆฌ ๊ตฌํ๋ ํ์ํ ๊ณก์ ์ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ์ด ๋ฒ์ฃผ์ ์ํฉ๋๋ค. Daniel Bernstein์ด ๋ง๋ ๊ณก์ 25519์ Paulo Baretto์ ๊ณต๋ ์์ ์๊ฐ ์ต๊ทผ์ ๊ณ์ฐํ ๊ณก์ ์ ํฌํจํ์ฌ ํจ์จ์ ์ธ ์ฐ์ ๋ก ๊ณก์ ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ด ์งํ๋์์ง๋ง ์ด๋ฌํ ๊ณก์ ์ ๋ณด๊ธ์ ์๋ ์ด ๊ฑธ๋ ธ์ต๋๋ค. ์ด๋ฌํ ์๋ก์ด ๊ณก์ ๋ค์ด ๋ธ๋ผ์ฐ์ ์ ์ํด ๊ตฌํ ๋ ๋๊น์ง๋ ์น์์์ ์ํธํ ์ ์ก์ ๋ณดํธํ๋๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ ๊ณก์ ์ํธํ์ ๊ดํ ๋ ๋ค๋ฅธ ๋ถํ์ค์ฑ์ ํนํ์ ๊ด๋ จ์ด ์์ต๋๋ค. 2009๋ Certicom์ด ์ธ์๋ฅผ ํตํด BlackBerry์์ ์์ ํ ํ์ํ ๊ณก์ ์ ํน์ ์ฉ๋๋ฅผ ๋ค๋ฃจ๋ 130๊ฐ ์ด์์ ํนํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํนํ ์ค ๋ค์๋ ๋ฏผ๊ฐ ๋จ์ฒด ๋ฐ ๊ตญ๊ฐ ์๋ณด๊ตญ(NSA)์์๋ ์ฌ์ฉ์ด ํ๊ฐ ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์ผ๋ถ ๊ฐ๋ฐ์๋ ECC ๊ตฌํ์ด ์ด ํนํ ํฌํธํด๋ฆฌ์ค๋ฅผ ์นจํดํ๋์ง ์ฌ๋ถ๋ฅผ ๋๊ณ ์ ์ ๊ฐ๋ฐ์ ๋ฉ์ถ์์ต๋๋ค. 2007๋ ์ Certicom์ ํ์ํ ๊ณก์ ์ ์ผ๋ถ ์ฉ๋๋ก Sony์ ์์ก์ ์ ๊ธฐํ์ง๋ง 2009๋ ์๋ ์์ก์ด ๊ธฐ๊ฐ๋์์ต๋๋ค. ํ์ฌ๋ ์ด๋ฌํ ํนํ๋ฅผ ์นจํดํ์ง ์๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ํ์ ๊ณก์ ์ํธํ๋ค์ด ๋ง์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
ECDSA ์ ์ ์๋ช ์ ์ํธ๋กํผ์ ์ข์ ์์ค๊ฐ ํ์ํ๋ค๋ ์ ์์ RSA์ ๋นํด ๋จ์ ์ด ์์ต๋๋ค. ์ ์ ํ ์์์ฑ์ด ์์ผ๋ฉด ๊ฐ์ธ ํค๊ฐ ๊ณต๊ฐ ๋ ์ ์์ต๋๋ค. ์๋๋ก์ด๋์ ๋์ ์์ฑ๊ธฐ์ ๊ฒฐํจ์ด ์์ด ํด์ปค๊ฐ 2013๋ ์ด์ ์ฌ๋ฌ๋ช ์ ๋นํธ์ฝ์ธ ์ง๊ฐ์ ๋ณดํธํ๋๋ฐ ์ฌ์ฉ๋๋ ECDSA์ ๊ฐ์ธ ํค๋ฅผ ์ฐพ์ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์๋ช ์ ์์ฑํ๋ ๊ธฐ๊ณ์๋ ๋์์ ์ข์ ์์ค๊ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ Dual_EC_DRBG๋ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์์ ์ฃผ์์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ์ ํต์ ์ธ RSA์ ๋นํด ํ์ ๊ณก์ ์ํธํ์ ์ฅ์ ์ด ๋๋ฆฌ ๋ฐ์ ๋ค์ฌ์ง๊ณ ์์ต๋๋ค. ๋ง์ ์ ๋ฌธ๊ฐ๋ค์ RSA์ Diffie-Hellman์ ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ด 5๋
์ด๋ด์ ๊นจ์ง ์ ์์ด ECC๋ฅผ ์ ์ผํ ๋์์ผ๋ก ๋จ๊ฒจ๋๊ณ ์์ต๋๋ค.
ํ์ ๊ณก์ ์ ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ฉฐ ๋๋ถ๋ถ์ ์ธ์ฆ๊ธฐ๊ด์์๋ ํ์ ๊ณก์ ์ธ์ฆ์๋ฅผ ์ ๊ณตํฉ๋๋ค. CloudFlare ๋ณดํธ ์ฌ์ดํธ์ ๋ํ ๋ชจ๋ SSL ์ฐ๊ฒฐ์ ์ต์ ๋ธ๋ผ์ฐ์ ์ ECC๋ก ๊ธฐ๋ณธ ์ค์ ๋ฉ๋๋ค. ๊ณง CloudFlare๋ ๊ณ ๊ฐ์ด ์์ ์ ํ์ ๊ณก์ ์ธ์ฆ์๋ฅผ ์ ๋ก๋ ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๊ธฐ๋ณธ ๋ฉ์์ง ๋ณด์๋ฟ๋ง ์๋๋ผ ์ ์ ํ์ธ์ ECC๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก HTTPS ์ธ์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.