Slide 1

Slide 1 text

x-only Public Key


Slide 2

Slide 2 text

1 楕円曲線暗号の公開鍵
 【秘密鍵】
  secp256k1の場合、256 bitのランダム値
 
 【公開鍵】
  xを秘密鍵とした場合、楕円曲線のベースポイントGに対して
  P = xGを計算したPが公開鍵
 
 楕円曲線の点は、その(x, y)座標がy2 = x3 + ax + bを満たす
 (secp256k1の場合、 a = 0, b = 7、つまりy2 = x3 + 7)
 


Slide 3

Slide 3 text

2 公開鍵の表現方法
 公開鍵 P = xGの(x, y)座標の値はそれぞれ32バイト=合計64バイト
 
 ● 非圧縮公開鍵:65バイト
 04 || x座標 || y座標
 ● 圧縮公開鍵:33バイト
 x座標が分かると、y2 = x3 + ax + b (mod p)からy座標が計算できる
 ○ y座標が偶数の場合
 02 || x座標
 ○ y座標が奇数の場合
 03 || x座標
 
 Segwit v0まではデータスペースの観点から圧縮公開鍵の使用が主流


Slide 4

Slide 4 text

3 x-only Public Key とは?
 x座標のみで表現される公開鍵で、圧縮公開鍵より1バイト小さい
 TaprootやLN Offerなどで採用
 
 ● x座標のみだと、y座標が偶奇どちらか特定できないんじゃ?
 
 
 y座標が偶数の鍵を使用する
 
 ● P = xGのy座標が奇数の場合、秘密鍵はどうする?
 
 
 変換後の秘密鍵x’ = 曲線の位数n - x
 (n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 )