Manual/BerEditor

[BerEditor] ECDH (Elliptic Curve Diffie-Hellman ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

JayKim๐Ÿ™‚ 2023. 6. 1. 09:00

[์ด ๊ธฐ๋Šฅ์€ ๋ผ์ด์„ ์Šค ๋ฒ„์ „ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค]

ECDH๋Š” DH ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ ํ‚ค ๊ตํ™˜ ๋˜๋Š” ํ‚ค ๋™์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ECC ํ‚ค ์Œ์„ ์ด์šฉํ•ด ์ž์‹ ๊ณผ ์ƒ๋Œ€๋ฐฉ๊ณผ์˜ ๋Œ€์นญํ‚ค๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

DH ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„๊ตํ•˜๋ฉด DH ๊ฒฝ์šฐ๋Š” ๋ณ„๋„์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ 
ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ์„ฑ ์—†์–ด ์‚ฌ์šฉํ•  ECC์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„๋ฉ”์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ ํƒ ํ•˜๋ฉด ๋œ๋‹ค.
ECDH ๋Š” ECC ํ‚ค ์Œ์— ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ปค๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰ ECDH ๋Š” ECDSA ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ECDH ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…

ECDH ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์‹์œผ๋กœ ๋งŒ๋“ค์–ด ์ง„๋‹ค.
ECC ์ž์ฒด์˜ ์ˆ˜ํ•™์€ ์–ด๋ ต์ง€๋งŒ ECDH ๊ฐœ๋…์„ ์ดํ•ด์— ํ•„์š”ํ•œ ์ˆ˜ํ•™์€ ๊ฐ„๋‹จํ•˜๋‹ค.^^

$$ ( a * G ) * b = ( b * G ) * a $$ $$ secret = ( a * G ) = ( b * G ) * a $$
G : ECC elliptice curve

์ด๋ ‡๊ฒŒ secret ๊ฐ’์€ a ์™€ b์˜ ๊ฐ™์€ ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

  1. Alice ECC ํ‚ค ์Œ ์ƒ์„ฑ : {alicePrivKey, alicePubKey = alicePrivKey * G}
  2. Bob ECC ํ‚ค ์Œ ์ƒ์„ฑ: {bobPrivKey, bobPubKey = bobPrivKey * G}
  3. Alice ์™€ Bob ์€ ๋ณ„๋„์˜ ์ฑ„๋„์„ ํ†ตํ•˜์—ฌ ๊ณต๊ฐœํ‚ค ๊ตํ™˜
  4. Alice ๊ณต์œ ํ‚ค ๊ณ„์‚ฐ = bobPubKey * alicePrivKey
  5. Bob ๊ณต์œ ํ‚ค ๊ณ„์‚ฐ = alicePubKey * bobPrivKey
  6. Alice์™€ Bob ์€ ๊ฐ™์€ ๊ณต์œ ํ‚ค ๊ตฌํ•จ ( bobPubKey * alicePrivKey == alicePubKey * bobPrivKey )

ECDH ํ‚ค ๊ตํ™˜ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

๊ทธ๋Ÿผ ECDH ๋ฅผ BerEditor ๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ๊ตฌํ•ด ๋ณด์ž
BerEdior ๋ฅผ ์‹คํ–‰ ํ›„ ์•”ํ˜ธ->ํ‚ค ๋™์˜->ECDH ํƒญ์„ ์„ ํƒ ํ•˜์ž

  1. ECC ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ์„ฑ
  2. A์˜ ๊ฐœ์ธํ‚ค ์ƒ์„ฑ
  3. A์˜ ๊ณต๊ฐœํ‚ค ์ƒ์„ฑ
  4. B์˜ ๊ฐœ์ธํ‚ค ์ƒ์„ฑ
  5. B์˜ ๊ณต๊ฐœํ‚ค ์ƒ์„ฑ
  6. A์˜ ๋น„๋ฐ€ํ‚ค ์ƒ์„ฑ
  7. B์˜ ๋น„๋ฐ€ํ‚ค ์ƒ์„ฑ

์ด๋ ‡๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰์„ ํ•ด ๋ณด๋ฉด A์˜ ๋น„๋ฐ€ํ‚ค์™€ B์˜ ๋น„๋ฐ€ํ‚ค๋Š” ๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.
์‚ฌ์‹ค A์˜ ๋น„๋ฐ€ํ‚ค๋Š” A์˜ ๊ฐœ์ธํ‚ค์™€ B์˜ ๊ณต๊ฐœํ‚ค ๊ฐ’๋งŒ ์žˆ์œผ๋ฉด ๊ตฌํ•ด์ง„๋‹ค.
๊ทธ๋ฆฌ๊ณ  B์˜ ๋น„๋ฐ€ํ‚ค๋Š” B์˜ ๊ฐœ์ธํ‚ค์™€ A์˜ ๊ณต๊ฐœํ‚ค ๊ฐ’๋งŒ์œผ๋กœ ๊ตฌํ•ด ์ง„๋‹ค.

์ฐธ๊ณ ๋กœ ์ˆœ์„œ์™€๋Š” ๋ณ„๋„๋กœ ๋ฒ„ํŠผ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๊ณต๊ฐœํ‚ค ์ฒดํฌ : ์ด๋ฏธ ์ƒ์„ฑ๋œ ๊ฐœ์ธํ‚ค์— ๋งž๋Š” ๊ณต๊ฐœ์ด ์ธ์ง€ ์ฒดํฌ
ํ‚ค ์Œ ์ฒดํฌ : ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค ์Œ์ด ๋งž๋Š”์ง€ ์ฒดํฌ
ํ‚ค์Œ ์ƒ์„ฑ : ๊ฐœ์ธํ‚ค์™€ ๊ณต๊ฐœํ‚ค๋ฅผ ๋™์‹œ์— ๊ฐ’์„ ์ƒ์„ฑ

TLS ์—์„œ ECDH ์™€ ECDHE ์— ๋Œ€ํ•œ ์ดํ•ด

์‚ฌ์‹ค TLS ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด Cipher Suite ์—์„œ ECDH ์™€ ECDHE ๋ผ๋Š” ๋ฌธ์ž๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.
ECDH๋Š” ์‚ฌ์‹ค ์„œ๋ฒ„์˜ ECDSA ์ธ์ฆ์„œ์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ํ‚ค ๊ตํ™˜์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ฆ‰ ์—ฐ๊ฒฐ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๊ฐ™์€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
(์‚ฌ์‹ค ํด๋ผ์ด์–ธํŠธ๋Š” ECDH๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ƒˆ๋กญ๊ฒŒ ECDH ํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ๋Š” ํ•œ๋‹ค)

์„œ๋ฒ„์—์„œ ๊ฐ™์€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณด์•ˆ ๊ฐ•๋„๊ฐ€ ์•ฝํ•ด์ง€๋ฏ€๋กœ
์„œ๋ฒ„์ชฝ์—์„œ๋„ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ํ‚ค์Œ์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ECDHE ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ECDH ๊ธฐ๋Šฅ์„ BerEditor๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํžˆ ๊ตฌํ•ด ๋ณด์•˜๋‹ค.