PKI/ASN.1

RSA ๊ฐœ์ธํ‚ค ํŠน์„ฑ

JayKim๐Ÿ™‚ 2024. 5. 31. 14:18

RSA ํ‚ค ์Œ์—์„œ ๊ฐœ์ธํ‚ค ํŒŒ์ผ์„ ์•Œ์•„ ๋ณด์ž
์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ์ธํ‚ค๋Š” ์•”ํ˜ธํ™” ๋˜์–ด ์žˆ์ง€๋งŒ ์•”ํ˜ธํ™” ๋˜์ง€ ์•Š์€ ํ˜•์‹์€ PKCS#1 ์—์„œ ์ •์˜ ๋œ ํ˜•์‹์„ ๊ฐ€์ง€๊ณ  ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค.

๋ณดํ†ต RSA ์—ฐ์‚ฐ์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ํ‚ค ๊ฐ’์€ n, e, d ์ด๋‹ค.
์—ฌ๊ธฐ์„œ ๋ณดํ†ต (n, d) ๊ฐ’์ด ๊ฐœ์ธํ‚ค ์ด๊ณ  (n, e) ๊ฐ’์„ ๊ณต๊ฐœํ‚ค๋กœ ํ”ํžˆ๋“ค ๋งํ•œ๋‹ค.

๊ทธ๋Ÿผ PKCS#1 ํ˜•์‹์˜ ๊ฐœ์ธํ‚ค๋ฅผ BerEditor๋กœ ๋ณด๋ฉด ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

RSA ๊ฐœ์ธํ‚ค ํ™”๋ฉด

๋ณดํ†ต ๊ฐœ์ธํ‚ค ํŒŒ์ผ์—๋Š” ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค ๊ฐ’์ด ๋ชจ๋‘ ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๋ฐ
์™œ 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 ๊ฐœ์ธํ‚ค ํŒŒ์ผ์„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๊ฐ’๋“ค์ด ์‚ฌ์šฉ ๋˜๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.