PKI/Cryptography

RSA vs ECDSA ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต

JayKim๐Ÿ™‚ 2023. 4. 28. 09:11

PKI ๋ฐ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด RSA ์™€ ECDSA ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
์—ฌ๊ธฐ์„œ๋Š” RSA์™€ ECDSA ์ˆ˜ํ•™์ ์ธ ๋‚ด์šฉ ๋ณด๋‹ค๋Š” ์—…๋ฌด์—์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์ด๋‹ค.
์‹ค์ œ๋กœ ๋‘๊ฐœ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฃŒ๋Š” ๊ฒ€์ƒ‰ํ•ด ๋ณด๋ฉด ์•„์ฃผ ๋งŽ์ด ์กด์žฌํ•œ์ง€๋งŒ ๋‚˜๋งŒ์˜ ์ƒ๊ฐ์„ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค.

1. RSA ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Ron Rivest, Adi Shamir ๊ทธ๋ฆฌ๊ณ  Leonard Adleman ์˜ ์—ฐ๊ตฌ์‹ค์—์„œ 1978๋…„๋„์— ์„ธ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์˜ ์•ฝ์ž๋ฅผ ๋”ฐ์„œ ๋งŒ๋“ค์–ด ์กŒ๋‹ค.
  • RSA ์•ˆ์ •์„ฑ์€ ํฐ ์ˆซ์ž๋ฅผ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด๊ฐ€ ์–ด๋ ต๋‹ค๋Š”๊ฒƒ์— ๊ธฐ๋ฐ˜์„ ๋‘” ๋น„ ๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋‹ค.
  • ํฐ ์ˆ˜์˜ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด RSA๋Š” ๋ฌด๋„ˆ์ง„๋‹ค.( ์–‘์ž ์•”ํ˜ธ์—์„œ๋Š” ๋น ๋ฅด๊ฒŒ ๋ถ„ํ•ด ๋ฐฉ๋ฒ• ๋ฐœํ‘œ ํ•จ )

2. ECDSA ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Neal Koblitz ์™€ Victor Miller ๊ฐ€ 1985๋…„ ์ œ์•ˆํ•œ ํƒ€์› ๊ณก์„  ์•”ํ˜ธ(ECC: Elliptic Curve Cryptosystem)์— ๊ธฐ๋ฐ˜ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค
  • ์œ ํ•œ์ฒด(Finite Field)์ƒ์˜ ํƒ€์›๊ณก์„  ์ ๋“ค๊ฐ„์˜ ์—ฐ์‚ฐ์—์„œ ์ •์˜ ๋˜๋Š” ์ด์‚ฐ๋Œ€์ˆ˜ ๋ฌธ์ œ์˜ ์–ด๋ ค์›€์— ๊ธฐ๋ฐ˜์„ ๋‘” ์ „์ž ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  • RSA์—์„œ ๋ณด๋‹ค ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๊ฐ•๋„์˜ ๋ณด์•ˆ ์ˆ˜์ค€์— ๋น„ํ•ด ์งง๋‹ค
  • ์ด์‚ฐ ๋Œ€์ˆ˜์˜ ์–ด๋ ค์›€ ๋ฌธ์ œ

3. RSA ์™€ ECDSA ์ฃผ์š” ์ฐจ์ด์ 

3-1 ๊ธฐ๋Šฅ ์ฐจ์ด

RSA๋Š” ์ „์ž ์„œ๋ช… ๋ฐ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์ด ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ECDSA ๋Š” ์ „์ž ์„œ๋ช…๋งŒ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

  • ECDSA ๋Š” ๋Œ€์นญํ‚ค ๊ณต์œ ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”๊ฐ€ ์—†์–ด์„œ ECDH ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํ‚ค ๊ตํ™˜์„ ํ•œ๋‹ค.
  • ์ฐธ๊ณ ๋กœ ECIES ๋ผ๋Š” ECC ๊ณ„์—ด์˜ ์•”ํ˜ธ ์šฉ์–ด๋„ ์žˆ์ง€๋งŒ ECC ์ž์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹Œ KDF ๋ฅผ ํ†ตํ•œ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • RSA ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”๋Š” ์งง์€ ๊ธธ์ด์—๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.(๋Œ€์นญํ‚ค์— ๋น„ํ•ด ์•”ํ˜ธ ์—ฐ์‚ฐ๋Ÿ‰์ด ๋„ˆ๋ฌด ํฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค)

3-2 ์„ ํƒ ์‚ฌํ•ญ

RSA๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด ํ‚ค ๊ธธ์ด ํ•˜๋‚˜๋‹ค. ํ˜„์žฌ 2048 ์ด๋ผ๋Š” ๊ธธ์ด๊ฐ€ ํ†ต์šฉ๋˜์–ด์„œ ์„ ํƒ์˜ ๊ณ ๋ฏผ์ด ์—†๋‹ค.
ํ•˜์ง€๋งŒ ECDSA ๋Š” ๋‹ค์–‘ํ•œ ์ปค๋ธŒ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋“ค์˜ ์„ ํƒ์— ์žˆ์–ด์„œ ์ˆ˜ํ•™์ž๊ฐ€ ์•„๋‹Œ์ด์ƒ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•ด๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๊ณ ๋ ค์‚ฌํ•ญ์ด ๋” ๋งŽ์•„์ง„๋‹ค. ๋ฌผ๋ก  P-256 (prime256v1) ์ด ๋Œ€์ฒด๋กœ ์‚ฌ์šฉ๋˜๊ธด ํ•œ๋‹ค.

  • ์„ ํƒ ์‚ฌํ•ญ์ด ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๋งŒํผ ํ˜ธํ™˜์„ฑ์— ๋ฌธ์ œ์˜ ์›์ธ์ด ๋œ๋‹ค.

3-3 ํ‚ค ์… ์ƒ์„ฑ

  • RSA๋Š” ํฐ ์†Œ์ธ์ˆ˜ p์™€ q๋ฅผ ๋žœ๋คํ•˜๊ฒŒ ์ฐพ๋‹ค ๋ณด๋‹ˆ ํ‚ค ์ƒ์„ฑ ์‹œ๊ฐ„์ด ์ผ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค
    • ๋ณดํ†ต ํ‚ค ์ƒ์„ฑ ์‹œ๊ฐ„์„ ๋‚˜ํƒœ๋‚ผ ๋•Œ ํ‰๊ท  ์‹œ๊ฐ„์„ ์ด์šฉํ•œ๋‹ค
  • ECDSA ๋Š” ํ•ด๋‹น ์ปค๋ธŒ์— ๋”ฐ๋ฅธ ๊ธธ์ด์˜ ๋žœ๋ฅ ๊ฐ’ ์ž์ฒด๋ฅผ ๊ฐœ์ธํ‚ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๊ฐœํ‚ค ๊ฐ’์„ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌํ•œ๋‹ค.
    • ํ‚ค์Œ ์ƒ์„ฑ์ด ๋น ๋ฅด๊ณ  ์‹œ๊ฐ„์ด ์ผ์ •ํ•˜๋‹ค.

3-4 ๋ณด์•ˆ ๊ฐ•๋„ ๋ณ„ ํ‚ค๊ธธ์ด

์•„๋ž˜ ํ‘œ๋Š” ํ•ด์‰ฌ๋„ท ์ž๋ฃŒ ์ฐธ๊ณ  ํ•จ

๋Œ€์นญํ‚ค ํฌ๊ธฐ RSA ํ‚ค ํฌ๊ธฐ ECC ํ‚ค ํฌ๊ธฐ ํ‚ค ํฌ๊ธฐ ๋น„์œจ ๋น„๊ณ 
80 1024 160 7:1 ์ทจ์•ฝ
112 2048 224 9:1 ๊ถŒ์žฅ
128 3072 256 12:1  
192 7680 384 20:1  
256 15360 512 30:1  

4. Speed ํ…Œ์ŠคํŠธ

๋‹ค์Œ์€ openssl speed ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•œ RSA ์™€ ECDSA ์ „์ž์„œ๋ช… ๋ฐ ๊ฒ€์ฆ ์‹œ๊ฐ„ ๋ฐ์ดํƒ€์ด๋‹ค.
๋ฌผ๋ก  ์ด ์‹œ๊ฐ„์€ ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ์˜ค์ฐจ๋Š” ์กด์žฌํ•˜์ง€๋งŒ ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ์˜ ๋น„๊ต์šฉ์ด๋‹ค.
์•„๋ž˜ ๋‚ด์šฉ์€ ํ•„์š” ์—†๋Š” ์ผ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•œ ๋ฉ”์„ธ์ง€ ์ด๋‹ค.

4-1 RSA ์†๋„ ํ…Œ์ŠคํŠธ

[RANIX@DESKTOP-VOGBKQM RANIX]$ openssl speed rsa
version: 3.0.8
built on: Thu Mar  2 08:01:34 2023 UTC
options: bn(64,64)
compiler: gcc -m64 -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN -D_MT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x7ffaf3bfffebffff:0x40000000029c67af
                  sign    verify    sign/s verify/s
rsa 1024 bits 0.000079s 0.000005s  12675.9 184851.7
rsa 2048 bits 0.000523s 0.000016s   1913.8  64076.9
rsa 3072 bits 0.001562s 0.000032s    640.1  30974.9
rsa 4096 bits 0.003499s 0.000054s    285.8  18388.4

4-2 ECDSA ์†๋„ ํ…Œ์ŠคํŠธ

[RANIX@DESKTOP-VOGBKQM RANIX]$ openssl speed ecdsa
version: 3.0.8
built on: Thu Mar  2 08:01:34 2023 UTC
options: bn(64,64)
compiler: gcc -m64 -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN -D_MT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x7ffaf3bfffebffff:0x40000000029c67af
                              sign    verify    sign/s verify/s
 192 bits ecdsa (nistp192)   0.0002s   0.0002s   4243.7   4531.3
 224 bits ecdsa (nistp224)   0.0003s   0.0003s   2986.7   3289.0
 256 bits ecdsa (nistp256)   0.0000s   0.0001s  45030.4  16353.3
 384 bits ecdsa (nistp384)   0.0008s   0.0007s   1185.3   1410.9
 521 bits ecdsa (nistp521)   0.0020s   0.0016s    512.1    645.0

์ฐธ๊ณ ๋กœ ํ˜„์žฌ๋Š” RSA ๊ฒฝ์šฐ๋Š” ํ‚ค ๊ธธ์ด 2048 ์ด ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ECDSA ๊ฒฝ์šฐ๋Š” 256 bits ecdsa ์ธ๋ฐ ๋‘๊ฐœ์˜ ๋ถ€๋ถ„์„ ๋ณด๋ฉด
256 bits ecdsa ์ด ์ฆ‰ ECC ๊ฐ€ RSA 2048 ๋ณด์•ˆ ๊ฐ•๋„ ๋ณด๋‹ค ๋†’์•„๋„ ์†๋„๋ฉด์—์„œ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค.
๋˜ํ•œ ํ‚ค ์ƒ์„ฑ์€ ECC ๊ฐ€ ์›”๋“ฑํžˆ ๋น ๋ฅด๋‹ค.

๋งˆ๋ฌด๋ฆฌ

์‚ฌ์‹ค RSA ์™€ ECDSA ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ ํƒ ํ•จ์— ์žˆ์–ด์„œ๋Š” ์šฉ๋„๋‚˜ ํ™˜๊ฒฝ์— ๋งž์ถ”์–ด์„œ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

RSA ๊ฒฝ์šฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅธ ํ™˜๊ฒฝ์—์„œ ๋‹ค์–‘ํ•œ ๊ณณ์— ์“ธ๋ ค๋ฉด RSA ๋ฅผ ์„ ํƒํ•˜๋ฉด ์ข‹์„ ๊บผ ๊ฐ™๋‹ค.
PC ํ™˜๊ฒฝ์ด๋‚˜ ์Šค๋งˆํŠธํฐ ์ฒ˜๋Ÿผ ์„ฑ๋Šฅ์ด ์ข‹์€ ํ™˜๊ฒฝ์—์„œ ๋ง์ด๋‹ค.
RSA๋Š” ํ‚ค ๊ธธ์ด๋งŒ ์„ ํƒ์„ ํ•˜๋ฏ€๋กœ ์„ ํƒ ์‚ฌํ•ญ์ด ๋ช…ํ™•ํ•˜๊ณ  ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์ด ์ œ๊ณต ๋˜์–ด์„œ์ด๋‹ค.

IOT ๋‚˜ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ์ฒ˜๋Ÿผ ์ œํ•œ์ ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” ECDSA๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค.
์—ฐ์‚ฐ๋Ÿ‰ ์ ๊ฒŒ ๋“ค๊ณ  ์ œํ•œ๋œ ์‹œ์Šคํ…œ์ด๋ผ ํ˜ธํ™˜์„ฑ์˜ ์š”๊ตฌ๊ฐ€ ์ ์€ ํ™˜๊ฒฝ์—์„œ ์ข‹์€๊ฒƒ์œผ๋กœ ๋ณธ๋‹ค.
์—ฐ์‚ฐ์ด ๋น ๋ฅด์ง€๋งŒ ์ปค๋ธŒ์˜ ์„ ํƒ์—์„œ ๋‹ค์–‘ํ•จ๊ณผ ๋ณต์žกํ•จ์ด ์žˆ์–ด์„œ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚˜์˜  ์ƒ๊ฐ์ด์ง€ ์„ ํƒ์€ ๋‹ค์–‘ํ•˜๊ฒŒ ์ •ํ•ด์ง„๋‹ค.