๋น๋ฐํค, ๊ณต๊ฐํค, ์๋ช , ๊ทธ๋ฆฌ๊ณ ๊ฒ์ฆ ๋ฐฉ๋ฒ๊น์ง ์์๋ณด์๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ๋ง ํด์๋ ๊ฒฐ์ ๋ผ๋ ํ์๊ฐ ์ด๋ฃจ์ด์ง ์ ์๋ค. ์ด๋๊ฐ๋ก ๋ณด๋ด์ผ ํ๋ค. ๊ทธ๋ ํ์ํ ๊ธฐ์ ์ธ ์ง๋ ฌํ๋ฅผ ์์๋ณด์.
์ง๋ ฌํ
- ํน์ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ๋นํธ๋ก ๋ณํํ๋ ๊ฒ
- ์ด ๊ณผ์ ์์ ๋ถํธํ, ๋ณตํธํ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์, ์ผ๋ จ์ ํฉ์ํ๋ ๊ท์น์ด ํ์ํ๋ค.
๋น์์ถ SEC ํ์
- ์ผ๋จ
S256Point
๋ฅผ ์ง๋ ฌํํด๋ณด์. - ํด๋น ํด๋์ค๋ ๊ณต๊ฐํค๋ฅผ ํํํ๊ฒ ๋๋ ํด๋์ค์ด๋ค.
- ๊ณต๊ฐํค๋ ํ์ ๊ณก์ ์์ ํ ์ขํ๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ด๋ฐ ๊ณต๊ฐํค๋ฅผ ์ง๋ ฌํํ๋ ํ์์ SEC(Standard for Efficient Cryptography)๋ผ ํ๋ค.
๋ฐฉ๋ฒ
์ ๋ํด ๋น์์ถ SEC ํํ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
0x04
์ 1๋ฐ์ดํธ prefix๋ก ์์ํ๋ค.- ๋ฅผ 32๋ฐ์ดํธ Big Endian ์ ์๋ก ํํํ๋ค. (16์ง์๋ก 64์)
- ๋ฅผ 32๋ฐ์ดํธ Big Endian ์ ์๋ก ํํํ๋ค. (16์ง์๋ก 64์)
- 1, 2, 3์ ํ๋ฐ ๋ํ๋ค.
047211a824f55b505228e4c3d5194c1fcfaa15a456abdf37f9b9d97a4040afc073dee6c89064984f03385237d92167c13e236446b417ab79a0fcae412ae3316677
- marker: 04
- x: 7211a824f55b505228e4c3d5194c1fcfaa15a456abdf37f9b9d97a4040afc073
- y: dee6c89064984f03385237d92167c13e236446b417ab79a0fcae412ae3316677
- Big Endian, Little Endian์ ๋ํ ์ค๋ช ์ Byte Ordering์ ์ฐธ๊ณ ํ์.
- ์ฝ๊ฒ ๋งํ๋ฉด, ํน์ ๋ฐ์ดํฐ๋ฅผ ๋นํธ๋ก ๋ณํํ ๋ ์ด๋ฅผ ๋์ดํ๋ ์์์ ๋ํ ๊ฒ์ด๋ค.
- Big Endian์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ ์ซ์๋ฅผ ์ฐ๋ฏ, ์์ ํฐ ๋จ์๋ฅผ ์๋ฏธํ๋ ์ซ์๊ฐ ์ค๊ณ ,
- 0x182 = 2561 + 168 + 1*2 =
- Little Endian์ ๊ฒฝ์ฐ ๊ทธ ์ญ์์ผ๋ก ๋๋ค.
- 0x182 = 11 + 168 + 2*256 =
- ๋นํธ๋ฅผ ์ด๋ค ์์๋ก ๋์ดํ๋๋์ ๋ฐ๋ผ ์ด๋ฅผ ํ์ฑํ์ฌ ๋์ค๋ ๊ฒฐ๊ณผ๊ฐ์ด ์์ดํ๊ธฐ ๋๋ฌธ์, ์ด๋ ํ ๊ท์น์ผ๋ก ์ ์ฅํ๋์ง๋ ์ค์ํ ๋ฌธ์ ๊ฐ ๋๋ค.
๊ตฌํ
b'\x04'
๋ python์์bytes
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.- ์์ธํ ๊ฒ์ 47.3 bytes, bytearray ์ฌ์ฉํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์.
to_bytes()
ํจ์๋ ์ ์ํ์bytes
ํ์ผ๋ก ๋ฐ๊พธ๋ ๋ฉ์๋์ด๋ค.- 32: ๊ธธ์ด
- โbigโ: ๋ฐฉ์
์์ถ SEC ํ์
- ๊ณต๊ฐํค๋ ๊ฒฐ๊ตญ ํ์ ๊ณก์ ์์ ํ ์ ์ด๋ค.
- ์ด ํน์ฑ์ ์๊ณ ์๋ค๋ฉด ๊ตณ์ด ๊ณต๊ฐํค๋ฅผ ์์ถํ ๋, ๋๊ฐ์ ๊ฐ์ ๋ด์์ ๋ณด๋ผ ํ์๊ฐ ์์ ์ ์๋ค.
- ๋์ ๊ฐ ํ๋๋ง ๋ณด๋ด๊ณ , ๋ฐ๋์ชฝ์์ ์ด๋ฅผ ๊ณ์ฐํ์ฌ ๊ฐ์ ์ป์ผ๋ฉด ๋๋ค.
- ๋ค๋ง ์ฐ์ฐ๋ ฅ์ด ์ถ๊ฐ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์, ์์คํ ์ ๋ฐ๋ผ ์ ์ฅ ๋น์ฉ์ด ์ค์ํ์ง ๊ณ์ฐ ๋น์ฉ์ด ์ค์ํ์ง ํ๋จํ ํ์๋ ์๋ค.
- ์์ถ SEC ํ์์ ํต์ฌ ์์ด๋์ด๋, x๋ง ์ ๊ณตํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ y๊ฐ์ ๊ณ์ฐํ์.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ y๊ฐ์ ๊ฒฐ์ ์ ํ์ ๊ณก์ ์์์ ๋์ผ x์ ๋ํ ํด๋ค์ ๋์นญ์ ํน์ฑ์ ์ฌ์ฉํ์ฌ ์ต์ํ์ ์ ๋ณด๋ง ์ถ๊ฐํ์ฌ ๊ฒฐ์ ์ง์๋ ๊ฒ์ด๋ค.
- ์ฝ๊ฒ ์๊ฐํด๋ณด์.
- x๊ฐ ๊ณ ์ ๋์ด ์์ ๊ฒฝ์ฐ ํ์ ๊ณก์ ์์ ํด๋ ๋๊ฐ์ด๋ฉฐ ๋์นญ์ด๋ค.
- ์ ํ์ฒด์์ p์ ๊ฐ์ 2๋ณด๋ค ํฐ ์์์ด๋ค. ์ฆ โํ์โ์ด๋ค.
- ์์ชฝ์ ํด์ y๊ฐ์ด ํ์์ธ ๊ฒฝ์ฐ
- ์๋์ชฝ p-y = ํ์-ํ์ = ์ง์
- ์์ชฝ์ ํด์ y๊ฐ์ด ์ง์์ธ ๊ฒฝ์ฐ
- ์๋์ชฝ p-y = ํ์-์ง์ = ํ์
- ์ฆ, x๊ฐ๊ณผ, ํํํ๊ณ ์ถ์ y๊ฐ์ ํ์/์ง์ ์ฌ๋ถ๋ง ํํํ๋ ๊ฒ์ผ๋ก ํ์ ๊ณก์ ์์ ํน์ ์ขํ๋ฅผ ํน์ ํ ์ ์๋ค.
๋์ ๋ฐฉ์ ์ ๋ฆฌ
ํ์ ๊ณก์ ์์ ์ (๊ณต๊ฐํค)๋ฅผ ๋ณด๋ด๊ณ ์ถ์์ชฝ์ A, ๋ฐ๋์ชฝ์ B๋ผ ํ๊ฒ ๋ค.
- A๋ ๋ณด๋ด๊ณ ์ถ์ ์ ์ ๊ตฌํ๋ค.
- y๊ฐ์ ํ์/์ง์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
- x์ y์ ํ์/์ง์์ฌ๋ถ๋ฅผ ์ง๋ ฌํํ์ฌ ๋ณด๋ธ๋ค.
- B๋ x์ y์ ํ์/์ง์์ฌ๋ถ๋ฅผ ํ์ฑํ๋ค.
- ์ด๋ฏธ ์๋ก๊ฐ ์๊ณ ์๋ ํ์๊ณก์ ์ x๋ฅผ ์ ์ฉํ๋ค.
- ๊ฒฐ๊ณผ๋ก ๋์จ ๋๊ฐ์ y์ ๋ํด ํ์/์ง์์ ๋ฐ๋ผ ๊ฐ์ ๊ฒฐ์ ํ๋ค.
ํํ ๋ฐฉ์
0349c4e631e3624a545de3f89f5d8684c7b81386d94bdd531d2e213bf016b278a
- y marker - 03
- even: 02
- odd: 03
- ร - 49c4e631e3624a545de3f89f5d8684c7b81386d94bdd531d2e213bf016b278a(32 bytes)
๊ตฌํ
๊ฒฐ๊ณผ
- 65byte์์ 33byte๋ก ์ค์ด๋ค์๋ค.
- ์ฐ์ฐ๋ ์ ์ฝ๊ณผ ๊ณต๊ฐ ์ ์ฝ ๋๊ฐ์ ์ธก๋ฉด์ ๋น๊ตํ์ ๋ ๋นํธ์ฝ์ธ์ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ๋ชจ์ผ๊ณ , ์ด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ๋ ์ค์ํ๊ธฐ ๋๋ฌธ์
- ๊ณต๊ฐ ์ ์ฝ ์ธก๋ฉด์ด ๋ ์ํฅ๋ ฅ์ด ํฌ๋ค๊ณ ๋ณผ ์ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ถ ๋ฐฉ์์ ์ฐ๋ ๊ฒ์ด ๋ ์ข๋ค.
ํ์ฑ ๋ฐฉ๋ฒ
- ๋ณด๋ผ ๋๋ ์ ๋ ๊ฒ ๋ณด๋ด๋๋ผ๋, ๋ฐ๋์ชฝ์์๋ ๊ฒฐ๊ตญ ๊ณ์ฐ์ ํด์ผ ํ๋ค.
- ๋์ผ ์ ๋ํด ๋์นญ์ ์ธ ๋๊ฐ์ ๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์, ๋ค์๊ณผ ๊ฐ์ ์ํ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
ํ์ด ๋ฐฉ๋ฒ
- ํ๋ฅด๋ง์ ์์ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์์ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋ค.
- ์ฌ๊ธฐ์ ๊ฐ์ ๋ฌด์จ ๊ฐ์ผ๊น?
- ์ ํ์ฒด์์ ์ ์ํ๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ๋๋ ์ ์ญ์ ์ ํ์ฒด์ ํน์ฑ์ ๋ง์กฑํด์ผ ํ๋ค.
- ์ฆ, ์์๋ณด๋ค ์์ ์์ฌ์ผ ํ๋ฉฐ, ์ ์์ฌ์ผ ํ๋ค.
- secp256k1์์ ์ฌ์ฉํ๋ p๋ ์ ๋ง์กฑํ๋ค.
- ์ฆ, ์ด๋์ด ์ ์๊ฐ ๋๋ค.
ํ์ฑ ๋ฐฉ๋ฒ
- ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์์์ผ๋, ์ด์ ๋ฐ๋ ๋ฐฉ๋ฒ์ ์์์ผ ํ๋ค.
- ์์์ ๊ณ์ฐ ๋ฐฉ๋ฒ์ ์์์ผ๋ ์ฝ๋๋ก ์ ์ฉํด๋ณด์.