Manual/CryptokiMan

[CryptokiMan] ECDH ๋ฅผ ์ด์šฉ ๋Œ€์นญํ‚ค ์ƒ์„ฑ ํ•˜๊ธฐ

JayKim๐Ÿ™‚ 2023. 10. 31. 12:03

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

PKCS#11 ๊ธฐ๋Šฅ์—์„œ ECDH ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ๋Œ€์นญํ‚ค ์ƒ์„ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
PKCS#11 ์—์„œ ๋Œ€์นญํ‚ค๋ฅผ ์ƒ์„ฑ ํ•˜๋ ค๋ฉด ECDSA ์šฉ ํ‚ค ์Œ์ด ์žˆ์–ด์•ผ ํ•˜๊ณ  ์ด ํ‚ค ์Œ์„ ์ด์šฉํ•˜์—ฌ C_DeriveKey ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ
ECDH ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‹คํ–‰ ํ•˜๋ฉด ๋œ๋‹ค.

์ด ๋•Œ ์ƒ์„ฑํ•œ ๋Œ€์นญํ‚ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
HSM ์žฅ์น˜๋‚ด์— ์ƒ์„ฑ ๋ฐ ๋˜๊ณ  ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ํ‚ค์˜ ํ•ธ๋“ค์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ECDH ์ƒ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒดํฌ ์‚ฌํ•ญ์ด๋‹ค.

  1. ECDSA ํ‚ค๋ฅผ ๋จผ์ € ์ƒ์„ฑ ํ•˜๋Š”๋ฐ ์ด ํ‚ค ์˜ ์†์„ฑ์—์„œ CKA_DERIVE ๋ฅผ TRUE ๋กœ ์„ค์ • ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    ์—ฌ๊ธฐ์„œ ECDSA ํ‚ค๋ฅผ ์ƒ์„ฑ ์‹œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” prime256v1 ํŒŒ๋ผ ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ž.
  2. ECDH ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” C_DeriveKey ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ ์‹ค์ œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด
    C_Initialize -> C_OpenSession -> C_Login ๊นŒ์ง€ ๋จผ์ € ์ด๋ฃจ์–ด ์ ธ์•ผ ํ•œ๋‹ค.
    ์ฆ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธ์ถœ๊ณผ ๋กœ๊ทธ์ธ ๊นŒ์ง€์˜ ๊ณผ์ •์€ ์—ฌ๊ธฐ ๋ฌธ์„œ์—์„œ๋Š” ์ƒ๋žต ํ•˜์˜€์ง€๋งŒ ์ด ๊ณผ์ •์€ ํ•„์ˆ˜ ์ด๋‹ค.

์ด ๋ฌธ์„œ ์ž‘์„ฑ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ PKCS#11 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” SoftHSM2 ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

ECDSA ํ‚ค ์Œ ์ƒ์„ฑ

CryptokiMan์—์„œ Objects -> Generate KeyPair ๋ฅผ ์‹คํ–‰ ํ•˜์ž

๊ทธ๋Ÿผ ์•„๋ž˜ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ General ์ •๋ณด ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.

  • Mechanism ์„ CKM_ECDSA_KEY_PAIR_GEN ์„ ์„ ํƒ
  • NamedCurve ๋Š” prime256v1 ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ ํƒ

๊ทธ๋ฆฌ๊ณ  Private Key ํƒญ์„ ์„ ํƒ ํ•˜์ž

  • ๋ผ๋ฒจ๋ช…์„ ๊ธฐ์–ต ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ ์–ด ์ฃผ๋ฉด ๋œ๋‹ค.
  • Derive ์†์„ฑ์„ ํ•„์ˆ˜๋กœ TRUE ๋ฅผ ์„ ํƒ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  OK ๋ฅผ ๋ˆ„๋ฅด๋ฉด ECDSA ํ‚ค ์Œ์ด ์ƒ์„ฑ ๋œ๋‹ค. ์ƒ์„ฑ๋œ ํ‚ค๋Š” Objects ์—์„œ Private Key ๋ฉ”๋‰ด๋กœ ํ™•์ธ ๊ฐ€๋Šฅ ํ•˜๋‹ค.
์ด ๋•Œ ์ž…๋ ฅํ•œ ๋ผ๋ฒจ๋ช…์„ ํ™•์ธ ํ•˜๋ฉด ๋œ๋‹ค.

์ฐธ๊ณ ๋กœ ๊ณต๊ฐœํ‚ค ์ •๋ณด๋„ ๊ธฐ๋ก์ด ๋˜๋Š”๋ฐ ์‹ค์ œ ์‚ฌ์šฉ์€ ๊ฐœ์ธํ‚ค ์ด์–ด์„œ ํŠน๋ณ„ํžˆ ์„ค๋ช…์„ ํ•˜์ง€ ์•Š์•˜๋‹ค.

ECDSA ๊ณต์œ  ํ‚ค๋ฅผ ์ƒ์„ฑ ํ•ด๋ณด์ž

๊ณต์œ ํ‚ค๋ฅผ ์ƒ์„ฑ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Tools -> Derive Key ๋ฅผ ์„ ํƒ ํ•˜์ž
ECDH ํ‚ค๋ฅผ ์ƒ์„ฑ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” HSM ๋‚ด์— ์ƒ์„ฑํ•œ ๊ฐœ์ธํ‚ค์™€ ์ƒ๋Œ€๋ฐฉ์˜ ECDSA ๊ณต๊ฐœํ‚ค ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์ƒ์„ฑ ํ•˜๋ฏ€๋กœ ์ƒ๋Œ€๋ฐฉ ๊ณต๊ฐœํ‚ค๋Š” ์•„๋ž˜ ์˜ˆ์ œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

# ECDSA ์ƒ๋Œ€๋ฐฉ ๊ณต๊ฐœํ‚ค ์˜ˆ์ œ
04CABF3F1100F2D2B2E7D7DC21DB96B3C8833AFD91AAA78A3C30F3E6EEC1963272B38C5933F65D927B2FCA0D8A226D4BEA8AA1F609312546D766CC6B3D9334F73C

์ฐธ๊ณ ๋กœ ECDSA ๊ณต๊ฐœํ‚ค์˜ ์ฒซ ๋ฐ”์ดํŠธ๋Š” 04 ๋กœ ๊ณ ์ • ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
์ด ๊ฐ’์€ ํŠน๋ณ„ํžˆ ๊ณต๊ฐœํ‚ค ๊ฐ’์ด ์••์ถ• ๋˜์ง€ ์•Š์•˜์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ’์ด๋‹ค.

๊ทธ๋Ÿผ ์•„๋ž˜ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ General ํƒญ์„ ์„ค์ • ํ•˜์ž

  1. ๊ธฐ์กด์— ์ƒ์„ฑํ•œ ECDSA ์šฉ ๋ผ๋ฒจ์„ ์„ ํƒ ํ•œ๋‹ค.
  2. CKM_ECDH1_DERIVE ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ด๊ฒƒ์ด ECDH ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์„ ์•Œ๋ ค ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
  3. ๊ธฐ๋ณธ ๋ฐฉ์‹์ธ CKD_NULL ๋ฐฉ์‹์„ ์„ ํƒ ํ•œ๋‹ค.
  4. Public Data ์— ์ƒ๋Œ€๋ฐฉ ECDSA ๊ณต๊ฐœํ‚ค ๊ฐ’์„ ๋„ฃ์–ด ์ค€๋‹ค.

์ฐธ๊ณ ๋กœ EC_KDF_T ์—์„œ CKD_SHA1_KDF ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋•Œ์—๋Š” Shared Data ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์ด๊ฒƒ์€ ์–‘์ชฝ์— ๊ณต์œ ๋œ ๋ฐ์ดํƒ€์˜ ํ•ด์‰ฌ๊ฐ’์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์—ฌ๊ธฐ์„œ๋Š” ๊ธฐ๋ณธ ๋ฐฉ์‹์ธ CKD_NULL ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  Key ํƒญ์„ ์„ค์ • ํ•˜์ž.
์—ฌ๊ธฐ์„œ Key ํƒญ์„ ์ถ”์ถœ๋œ ํ‚ค์˜ ์†์„ฑ์„ ์„ค์ • ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋””ํดํŠธ ๊ฐ’์—์„œ ์ƒ์„ฑ ํ‚ค ๊ธธ์ด๋ž‘ ๋ผ๋ฒจ๋ช…์„ ์ง€์ • ํ•ด ์ฃผ์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  OK ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ‚ค ์ƒ์„ฑ์ด ๋œ๋‹ค.
์ƒ์„ฑ ๋œ ํ‚ค๋ฅผ ํ™•์ธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Secret Key ๋ฉ”๋‰ด์—์„œ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•œ ๋ผ๋ฒจ๋ช…์„ ํ™•์ธ ํ•˜๋ฉด ๋œ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

PKCS#11 API ๋ฅผ ์ด์šฉํ•˜์—ฌ ECDH ํ‚ค ์Œ ๋ฐ ๋Œ€์นญํ‚ค ์ถ”์ถœ์„ ํ•ด๋ณด์•˜๋‹ค.
ECDH ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€์นญํ‚ค๋ฅผ ์ถ”์ถœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ ๋œ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ECDH ๋Š” ํ‚ค ๊ฐ’์„ ์ถ”์ถœ ํ•˜๊ฒŒ ๋˜์ง€๋งŒ PKCS#11์—์„œ๋Š” ํ‚ค๊ฐ€ ์ƒ์„ฑ์ด ๋˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ํ•ธ๋“ค์„ ์–ป๋Š”๊ฒƒ์ด๋‹ค.
์ฆ‰ ํ‚ค๋Š” ์žฅ์น˜์— ์ €์žฅ์ด ๋˜์–ด์„œ ์‹ค์ œ ํ‚ค ๊ฐ’์„ ์•Œ ์ˆ˜๋Š” ์—†๊ณ  ๊ทธ์— ๋Œ€ํ•œ ํ•ธ๋“ค์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.