Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
高速で安全な2者間のECDSA署名
Search
shigeyuki azuchi
December 04, 2018
Technology
0
180
高速で安全な2者間のECDSA署名
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2018/10/ecdsa_2-of-2_multisig/
shigeyuki azuchi
December 04, 2018
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Replacement Cycling Attack
azuchi
0
11
Bitcoinのタイムロックの仕組み
azuchi
0
6
Inner Product Argument
azuchi
0
25
Codex32
azuchi
0
9
PSBT
azuchi
0
28
Trampoline Payment
azuchi
0
15
KZG Commitment
azuchi
0
98
Silent Payment
azuchi
0
62
FROST
azuchi
0
9
Other Decks in Technology
See All in Technology
Next'24 事例セッションの紹介とクラウド資格を活用したキャリア形成について語りMuscle
yasumuusan
1
420
ユーザーストーリーのレビューを自動化したみたの
bun913
1
390
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.3k
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
210
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
820
JAWS-UG Bedrock Claude Night
yamahiro
3
500
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
420
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
740
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
1
260
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.7k
MapLibreとAmazon Location Service
dayjournal
1
140
SREとその組織類型
tatsuo48
9
1.6k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
990
Six Lessons from altMBA
skipperchong
20
3k
Designing Experiences People Love
moore
136
23k
RailsConf 2023
tenderlove
2
530
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Gamification - CAS2011
davidbonilla
76
4.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Faster Mobile Websites
deanohume
298
30k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Transcript
高速で安全な2者間のECDSA署名
1 Bitcoinの通常の2-of-2マルチシグ Bitcoinを使用する際に複数個の署名を必要とする仕組み 2人の署名があればBitcoinを使用できる アリス ボブ 2 <アリスの公開鍵> <ボブの公開鍵> 2 CHECKMULTISIG 2-of-2のマルチシグスクリプト scriptPubKey 0 <アリスの署名> <ボブの署名>
scriptSig
2 ECDSA Signature • 秘密鍵: x • 公開鍵: P =
xG • メッセージ: m • ハッシュ関数: H() 【署名の生成】 1. ランダムなnonce k を選択。 2. kを秘密鍵とした楕円曲線上の点 R = kGを計算。 3. 点Rのx座標をrとする。 4. を計算 5. 生成した (r, s)がECDSAの署名データ。 【署名の検証】
3 Yehuda Lindellのペーパー
4 ECDSAでマルチシグを構成するポイント 署名(r, s)の内、秘密鍵を使った計算をするのはsの計算↓ 秘密鍵xを2者の秘密鍵から計算する値にすると、署名は単 一だが、有効な署名を生成するためには2者の秘密鍵を必 要とするマルチシグを構成することができる。 x = アリスの秘密鍵
× ボブの秘密鍵 ※両者がお互い自分の秘密鍵を明らかにすることなく sを計算できる必要がある
鍵ペア P1 = x1G nonce R1 = k1G 5 コインのロック
Pにロックされたコインをアンロックするすためには が計算できればいい 鍵ペア P2 = x2G nonce R2 = k2G P1, R1, P2, R2を共有 P = x1 ・ P2 を計算 R = k1 ・R2 を計算 P = x2 ・ P1 を計算 R = k2 ・R1 を計算 計算した点Pと点Rはそれぞれ同じ点になる P宛にコインを送金するとマルチシグへのロックとなる
6 秘密計算で署名データを計算 ①アリスは、Paillier暗号用の鍵ペアを生成(priv, pub) ※Paillier暗号は加法準同型性がある暗号スキーム ②pubを使ってアリスの秘密鍵x1を暗号化Enc(x1)し、 pubと一緒にボブに送信 Enc(x1) pub ③
ボブは、以下の計算をしてpubで暗号化 Enc(x1)を使って以下を計算 c3 = c1⊕c2を計算して、アリスに送る。 ④ アリスはc3を復号して s’ を計算 ⑤ s’にk1^-1を掛けるとアンロックに必要な署名値 s が手に入る 両者ともに秘密鍵 x1, x2を明らかにすることなく、 マルチシグのアンロックに必要な署名値を計算できる 1
7 ECDSAベースのマルチシグのメリット • プライバシーの向上 ロックスクリプトも通常のP2PKHやP2WPKHのように単一の公開鍵への ロックとなるため、マルチシグを利用したコントラクトであることは当事者 以外分からない。 • データサイズの削減 通常のマルチシグの場合、1つの署名データにつき73バイトのデータを
必要とするが、Lindellのマルチシグでは単一の署名データになるため、 その分トランザクションサイズが削減され、ブロックチェーンのスペースも 削減できる。 • さまざまなコントラクトへの適用 Lightning Network(Multi-Hop Locks)やAdaptor Signatureを利用した Atomic SwapなどScriptlessなコントラクトに(Schnorrを待たずとも) 今すぐ適用可能。