PKI/ASN.1

ECDSA ์ธ์ฆ์„œ ๊ณต๊ฐœํ‚ค ๊ฐ’์— 0x04 ๊ฐ€ ์•ž์— ๋ถ™๋Š” ์ด์œ 

JayKim๐Ÿ™‚ 2023. 10. 13. 17:54

์ผ๋ฐ˜์ ์œผ๋กœ ECDSA ๊ณต๊ฐœํ‚ค๋ฅผ ์ธ์ฆ์„œ์—์„œ ๊ฐ’์„ ์ฝ์–ด ๋ณด๋ฉด
ํ•ญ์ƒ ์ฒซ ๋ฐ”์ดํŠธ๊ฐ€ 0x04 ๊ฐ’์œผ๋กœ ์‹œ์ž‘ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ECDSA ๊ณต๊ฐœํ‚ค ๊ฒฝ์šฐ ๋ณดํ†ต P-256 ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 64 ๋ฐ”์ดํŠธ ๊ธธ์ด์–ด์•ผ ํ•˜๋Š”๋ฐ 0x04 ๊ฐ€ ๋ถ™์Œ์œผ๋กœ 65 ๋ฐ”์ดํŠธ๊ฐ€ ๋œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์—์„œ 03 42 00 04 ... ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ ํ•˜๋Š”๋ฐ
03 ์€ BitString ์ด๊ตฌ
42 ๋Š” 66 ๋ฐ”์ดํŠธ์ด๊ตฌ
00 ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋น„ํŠธ ๊ฐœ์ˆ˜์ด๊ตฌ
04 ๋ถ€ํ„ฐ ๊ณต๊ฐœํ‚ค ๊ฐ’์ด๋‹ค ์ฆ‰ ์ด๋ ‡๊ฒŒ 04 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ด 0x04 ๊ฐ’์˜ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
์ด ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š” RFC5480 ๋ฌธ์„œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‚˜์˜จ๋‹ค.

o The first octet of the OCTET STRING indicates whether the key is compressed or uncompressed. The uncompressed form is indicated by 0x04 and the compressed form is indicated by either 0x02 or 0x03 (see 2.3.3 in [SEC1]). The public key MUST be rejected if any other value is included in the first octet.

์ด ๋ฌธ์„œ์—์„œ 0x04 ์˜ ์˜๋ฏธ๋Š” ์‹ค์ œ ๊ณต๊ฐœํ‚ค ๊ฐ’์ด ์••์ถ• ๋˜์ง€ ์•Š๋Š” ํ˜•์‹ (uncompressed form) ์ด๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๋งŒ์•ฝ 0x02 ๋˜๋Š” 0x03 ์ธ ๊ฒฝ์šฐ๋Š” ์••์ถ•๋œ ๊ณต๊ฐœํ‚ค๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ๊ฑฐ๋ถ€ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

0x04 ๊ฐ’ ์ดํ›„์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์ด ECDSA ์‹ค์ œ ๊ณต๊ฐœํ‚ค ์ฃ„ํ‘œ๊ฐ’์ด X Y ์ขŒํ‘œ์˜ ์—ฐ์† ๊ฐ’์ด๋‹ค.

๋งˆ๋ฌด๋ฆฌ

๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ECDSA ๊ณต๊ฐœํ‚ค์— ์žˆ๋Š” 0x04 ๊ฐ’์„ ์•ˆ ์‚ฌ์šฉํ•˜๋Š”๋ฐ
๊ทธ๋ฆฌ๊ณ  0x02๋‚˜ 0x03 ์€ ์••์ถ• ๋œ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค๊ตฌ ํ•˜๋Š”๋ฐ..
์•„์ง๊นŒ์ง€ 0x02 ๋‚˜ 0x03 ์€ ๋ณธ์ ์ด ์—†๋‹ค.
์‚ฌ์‹ค ECDSA ๊ณต๊ฐœํ‚ค ๊ธธ์ด๊ฐ€ ๊ธธ์ง€ ์•Š์•„์„œ ์••์ถ• ๊ฐ’์„ ๋งŒ๋“ค ํ•„์š”๋„ ์—†๋Š”๊ฑฐ ๊ฐ™๋‹ค.

ECDSA ์—์„œ๋Š” ์••์ถ• ๋˜์ง€ ์•Š์€ ๊ฐ’์˜ ์˜๋ฏธ๋กœ ํ•ญ์ƒ 0x04๊ฐ€ ์ถ”๊ฐ€ ๋˜๋Š”๊ฒŒ ํ‘œ์ค€์ด๋‹ค.
์ด ๊ฐ’์€ ECDSA ์—์„œ๋งŒ ์žˆ์–ด์„œ ํ•œ๋ฒˆ ์ •๋ฆฌ ํ•ด ๋ณด์•˜๋‹ค.