RSA ๊ฐ์ธํค ํน์ฑ
RSA ํค ์์์ ๊ฐ์ธํค ํ์ผ์ ์์ ๋ณด์
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ธํค๋ ์ํธํ ๋์ด ์์ง๋ง ์ํธํ ๋์ง ์์ ํ์์ PKCS#1 ์์ ์ ์ ๋ ํ์์ ๊ฐ์ง๊ณ ๋ง๋ค์ด์ ธ์๋ค.
๋ณดํต RSA ์ฐ์ฐ์์ ์ฌ์ฉ ๋๋ ํค ๊ฐ์ n, e, d ์ด๋ค.
์ฌ๊ธฐ์ ๋ณดํต (n, d) ๊ฐ์ด ๊ฐ์ธํค ์ด๊ณ (n, e) ๊ฐ์ ๊ณต๊ฐํค๋ก ํํ๋ค ๋งํ๋ค.
๊ทธ๋ผ PKCS#1 ํ์์ ๊ฐ์ธํค๋ฅผ BerEditor๋ก ๋ณด๋ฉด ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
๋ณดํต ๊ฐ์ธํค ํ์ผ์๋ ๊ฐ์ธํค์ ๊ณต๊ฐํค ๊ฐ์ด ๋ชจ๋ ๋ค์ด๊ฐ ์๋๋ฐ
์ n, e, d ๊ฐ ์์ ๋ค๋ฅธ ๊ฐ์ด ๋ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด ๊ฐ๋ค์ PKCS#1 ์ ์ ์ ๋ ASN.1 ๊ฐ์ ์ฐธ์กฐ ํ๋ฉด ์๋์ ๊ฐ๋ค.
RSA ๊ฐ์ธํค ASN.1
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
์ ASN.1 ๊ฐ์ ๋ณด๊ฒ ๋๋ฉด p, q, d mod (p-1), d mod (q-1), inverse of q mod p ๊ฐ์ด ๋ ์๋ค.
๊ทธ๋ผ ๊ฐ๊ฐ์ ๊ฐ์ ๋ํด์ ์์ ๋ณด์.
RSA ๊ฐ์ธํค ๊ฐ
- version : 0 ์ผ๋ก ๊ณ ์ ๊ฐ
- modulus (n) : p * q ๊ฐ
- publicExponent (e) : ์์ ๊ณต๊ฐํค ๊ฐ
- privateExponet (d) : ๊ฐ์ธํค ๊ฐ
- prime1 (p) : ์์์ ์์ p
- prime2 (q) : ์์์ ์์ q
- exponent1 ( d mod (p-1) ) : CRT ์ง์๊ฐ
- exponent2 ( d mod (q-1) ) : CRT ์ง์๊ฐ
- coefficient ( ( inverse of q ) mod p ) : CRT ์ง์ ๊ฐ
์ด๋ ๊ฒ ๊ตฌ์ฑ ๋๋ค.
์ฌ์ค exponent1, exponent2, coefficient ๊ฐ์ ์์ด๋ ์/๋ณตํธํ๋ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ์ด ๊ฐ๋ค์ด ์กด์ฌ ํ๋ ์ด์ ๋ ์ค๊ตญ์ธ์ ๋๋จธ์ง ์ ๋ฆฌ ์ด๋ก ์ ์ ์ฉํ์ฌ ์ฐ์ฐ์ ํ๊ธฐ ์ํ ๊ฒ์ด๋ค.
์ฆ ์ค๊ตญ์ธ์ ๋๋จธ์ง ์ ๋ฆฌ (Chinese Remainder Theorem) ์ฐ์ฐ์ ํ๋ฉด ๊ทธ๋งํผ ์ํธํ ๋ณตํธํ ์ฐ์ฐ์ ๋น ๋ฅธ ๊ณ์ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ณดํต 2048 bit ์ RSA ํค๋ผ๊ณ ๋งํ๋ฉด n ๊ฐ์ ๊ธธ์ด๋ฅผ ๋งํ๋ค.
๊ทธ๋์ n ๊ฐ์ ๊ธธ์ด๋ p * q ์ด๋ฏ๋ก p ์ q๋ ๊ฐ์ ๊ธธ์ด๋ n ๊ธธ์ด์ 1/2 ์ด ๋๋ค.
์ฌ์ค RSA ๊ฐ์ธํค์์ p ์ q ๊ฐ์ด ์๋ ค์ง๋ฉด ๊ฐ์ธํค๋ฅผ ์ฝ๊ฒ ๊ตฌํ ์ ์์ด์ p ์ q์ ๊ฐ์ ๊ฐ์ธํค์ ๊ฐ์ด ๋
ธ์ถ์ด ๋๋ฉด ์๋๋ ๊ฐ์ด๋ค.
๊ณต๊ฐํค์์ ์ฌ์ฉํ๋ e ๊ฐ์ ๊ฒฝ์ฐ ๊ฑฐ์ ๋ชจ๋ ์ธ์ฆ์๋ค์ด 65537 ๊ณ ์ ์์๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ e ๊ฐ๊ณผ n ๊ฐ์ ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
๊ฐ์ธ ํค d๋
$$ d×e≡1 \, mod \, ฯ(n) $$
$$ d ≡e^{-1} \, mod \, ๐(n) $$
์ด๋ ๊ฒ ๊ณ์ฐ ํ ์ ์๋ค.
ํ์ฅ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ํตํ์ฌ ๊ฐ์ธํค๋ฅผ ๊ตฌํ ์ ์๋ค.
์ฌ๊ธฐ์ ฯ(n)=(p−1)×(q−1) ์ด๋ค.
์ฆ p์q๋ฅผ ์๋ฉด ์ด๋ ๊ฒ ๊ฐ์ธํค๋ฅผ ๊ตฌ ํ ์ ์๋ค.
์ฌ์ค n ๊ฐ์ ๊ณต๊ฐ ํค๋ก ๊ณต๊ฐ๋ n = p * q ๊ฐ์ด์ง๋ง ์ฌ์ค n ๊ฐ๋ง ์ ๋ ์์์ธ p ์ q ๊ฐ์ ๊ตฌํ๊ธฐ๋ ์ด๋ ต๋ค
์ด๊ฒ์ด RSA ์ ์ธ์ ๋ถํด ์ด๋ ค์์ ๋ฌธ์ ์ด๋ค.
๋ง๋ฌด๋ฆฌ
์ฌ๊ธฐ์ RSA ๊ฐ์ธํค ํ์ผ์์ ๊ธฐ๋ก๋์ด์ง ๊ฐ๋ค์ ๋ํ ์ ๋ฆฌ๋ฅผ ํ์ฌ ๋ณด์๋ค.
RSA ๊ฐ์ธํค์๋ ์ค์ ๊ฐ์ธํค ๊ฐ ๋ฟ๋ง ์๋๋ผ ๊ณต๊ฐํค ๊ฐ์ด ์กด์ฌ ํ๋ค๋ ๊ฒ๊ณผ
CRT ์ฐ์ฐ์ ์ํ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ RSA ์/๋ณตํธํ๋ฅผ ์ข ๋ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ๊ฐ์ด ์๋ค๋ ๊ฒ์ด๋ค.
ํน์๋ RSA ๊ฐ์ธํค ํ์ผ์ ๋ฌธ์ ๊ฐ ์๋์ง ์๊ธฐ ์ํด์๋ ์ด๋ค ๊ฐ๋ค์ด ์ฌ์ฉ ๋๋์ง ์ ํ์๊ฐ ์๋ค.