๊ฐ€์ ธ์˜ฌ ํ‚ค ํ˜•์‹ ์ง€์ •

์ด ์ฃผ์ œ์—์„œ๋Š” Cloud KMS์—์„œ ์ƒˆ ํ‚ค ๋ฒ„์ „์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ‚ค์˜ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์ž๋ฃŒ์˜ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์€ ํ‚ค ์ž๋ฃŒ๋ฅผ ๋Œ€์นญ ํ‚ค๋กœ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๋˜๋Š” ๋น„๋Œ€์นญ ํ‚ค๋กœ ๊ฐ€์ ธ์˜ค๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋Œ€์นญ ํ‚ค์™€ ๋น„๋Œ€์นญ ํ‚ค์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ‚ค ์šฉ๋„ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” ํ‚ค ํ˜•์‹

  • ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ๋Œ€์นญ ํ‚ค๋Š” 16๋ฐ”์ดํŠธ(์›์‹œ ๋Œ€์นญ ์•”ํ˜ธํ™”๋งŒ ํ•ด๋‹น) ๋˜๋Š” 32๋ฐ”์ดํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•˜๋ฉฐ ์ธ์ฝ”๋”ฉ๋œ ์ƒํƒœ์—ฌ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ 16์ง„์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋˜๊ฑฐ๋‚˜ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ํ‚ค๋ฅผ ๋””์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ช…์šฉ ๋Œ€์นญ ํ‚ค(MAC ํ‚ค)๋Š” ์‚ฌ์šฉ ์ค‘์ธ ์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ ๊ธธ์ด์™€ ๊ฐ™์•„์•ผ ํ•˜๊ณ (์˜ˆ๋ฅผ ๋“ค์–ด HMAC-SHA256 ํ‚ค์˜ ๊ธธ์ด๋Š” 32๋ฐ”์ดํŠธ์—ฌ์•ผ ํ•จ) ์ธ์ฝ”๋”ฉ๋˜๋ฉฐ ์ธ์ฝ”๋”ฉ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ 16์ง„์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋˜๊ฑฐ๋‚˜ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ํ‚ค๋ฅผ ๋””์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™” ๋˜๋Š” ์„œ๋ช…์„ ์œ„ํ•œ ๋น„๋Œ€์นญ ํ‚ค๋Š” PKCS #8 ํ˜•์‹์ด์–ด์•ผ ํ•˜๋ฉฐ DER ์ธ์ฝ”๋”ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. PCKS #8 ํ˜•์‹์€ RFC 5208์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. DER ์ธ์ฝ”๋”ฉ์€ International Telecommunications Union X.680์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋Œ€์นญ ํ‚ค๋Š” Cloud KMS์—์„œ ์ง€์›ํ•˜๋Š” ๊ธธ์ด์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์กฐํ•ฉ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์˜ ๊ธธ์ด์™€ ๊ฐ™์€ ํ‚ค์˜ ์ผ๋ถ€ ์ธก๋ฉด์€ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ํ‚ค๋ฅผ Cloud KMS๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์นญ ํ‚ค ํ™•์ธ

wc ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์นญ ํ‚ค์˜ ๊ธธ์ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

wc -c /path/to/unwrapped-key
  • ๊ธธ์ด๊ฐ€ 32๊ฐ€ ์•„๋‹Œ ๋Œ€์นญ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋Œ€์นญ ์„œ๋ช… ํ‚ค(MAC ํ‚ค)์˜ ๊ธธ์ด๋Š” ์‚ฌ์šฉ ์ค‘์ธ ์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ ๊ธธ์ด์™€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HMAC-SHA256 ํ‚ค์˜ ๊ธธ์ด๋Š” 32๋ฐ”์ดํŠธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

file ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค ํ˜•์‹์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

file /path/to/unwrapped-key
  • ์ถœ๋ ฅ์ด data์ด๋ฉด ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

  • ์ถœ๋ ฅ์ด ASCII text์ด๋ฉด cat ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    • = ๊ธฐํ˜ธ๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์™€ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ base64๋กœ ์ธ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. base64 ๋ช…๋ น์–ด(Windows์˜ ๊ฒฝ์šฐ Base64.exe)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ‚ค์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

      THzArjassB+giKeNeT1Zr74OgV24t+Ep+37Ec6ojB3Y=
      
    • 16์ง„์ˆ˜ ์ˆซ์ž๊ฐ€ ํ•œ ์ค„ ์ด์ƒ์ธ ๊ฒฝ์šฐ 16์ง„์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. xxd ๋ช…๋ น์–ด ๋˜๋Š” Windows์˜ ๊ฒฝ์šฐ Format-Hex PowerShell ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ 16์ง„์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ‚ค์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

      00000000: 4c7c c0ae 36ac b01f a088 a78d 793d 59af  L|..6.......y=Y.
      00000010: be0e 815d b8b7 e129 fb7e c473 aa23 0776  ...]...).~.s.#.v
      
    • ๋‹ค๋ฅธ ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์œ ํšจํ•œ ๋Œ€์นญ ํ‚ค๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋Œ€์นญ ํ‚ค ํ˜•์‹ ์ง€์ •

์ง€์›๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋Œ€์นญ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋น„๋Œ€์นญ ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ๊ธ‰ํ•˜์—ฌ ๊ฒฐ์ •ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Cloud KMS๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ๊ฐ ๋น„๋Œ€์นญ ํ‚ค์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. file ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค ํ˜•์‹์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    file /path/to/unwrapped-key
    
    • ์ถœ๋ ฅ์ด PEM์ด๋ฉด ํ‚ค๋Š” PEM ํ˜•์‹์ž…๋‹ˆ๋‹ค. ASCII text์ธ ๊ฒฝ์šฐ์—๋Š” PEM ํ˜•์‹์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ PCK#8 DER ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

      openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER \
          -in /path/to/asymmetric-key-pem \
          -out /path/to/formatted-key
      
    • ์ถœ๋ ฅ์ด data์ด๋ฉด ํ‚ค๊ฐ€ DER ํ˜•์‹์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ PKCS #8 ํ˜•์‹์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ ์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์ด๋ฉด ๋ช…๋ น์–ด๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ diff ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ํŒŒ์ผ์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      openssl pkcs8 -topk8 -nocrypt -inform DER -outform DER \
          -in /path/to/asymmetric-key-der \
          -out /path/to/formatted-key
      

๋ฌธ์ œ ํ•ด๊ฒฐ

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ํ‚ค๊ฐ€ ์ ์ ˆํ•œ ํ˜•์‹์ด์ง€๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ, Google Cloud ์ฝ˜์†”์—์„œ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹คํŒจํ•œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฌธ์ œํ•ด๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„