Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
Search
shigeyuki azuchi
January 24, 2019
Technology
1
210
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/01/adaptor_signature-ecdsa/
shigeyuki azuchi
January 24, 2019
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
10
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
10
Fiat-Shamir変換と注意点
azuchi
0
98
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
20
BIP-374 離散対数の等価性証明
azuchi
0
36
BIP-353 DNS Payment Instructions
azuchi
0
57
OP_CAT and Schnorr Trick
azuchi
0
54
Pay to Anchorと1P1Cリレー
azuchi
0
49
プロアクティブ秘密分散法
azuchi
0
70
Other Decks in Technology
See All in Technology
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.5k
Knowledge Work の AI Backend
kworkdev
PRO
0
260
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
250
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.2k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
2
200
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
160
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
20
7.8k
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.8k
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
200
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
240
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
210
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.4k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
78
GraphQLとの向き合い方2022年版
quramy
50
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Designing for humans not robots
tammielis
254
26k
Abbi's Birthday
coloredviolet
0
3.8k
How to build a perfect <img>
jonoalderson
0
4.7k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
190
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Transcript
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
1 Scriptless Scripts with ECDSA 2018年4月にPedro Moreno-Sanchezらが ホワイトペーパーを公開 https://lists.linuxfoundation.org/pipermail/lightning-dev/attac hments/20180426/fe978423/attachment-0001.pdf
• 前提知識 ◦ Adaptor Signatureを利用したAtomic Swap - Schnorr版 - https://goblockchain.network/2018/12/adaptor_signature/ ◦ 高速で安全な2者間のECDSA署名 https://goblockchain.network/2018/10/ecdsa_2-of-2_multisig/
2 ECDSA署名 • 楕円曲線の生成点:G • 秘密鍵:x、公開鍵:P = xG • 暗号学的ハッシュ関数:
H • メッセージダイジェスト: m 【署名の生成】 • ランダムなnonce kを選択する。 • R = kGを計算する(Rは楕円曲線上の点)。 • 点Rのx座標をrとする。 • • (r, s)が署名データ 【署名の検証】 秘密鍵 x の情報を知らなければ、 この式を満たす s は導出できない。 を計算し、その点のx座標がrと 一致するか検証する。 sの構成上、Schnorr署名のような 線形性がないため、署名の集約 スキームは持たない。 を計算する。
3 Scriptless Multisig with ECDSA 鍵ペア P1 = x1G nonce
R1 = k1G 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宛にコインを送金するとマルチシグへのロックとなる
4 Adaptor Signature with Schnorr Adaptor SignatureはAtomic Swapで必要な ハッシュのプリイメージとコインの交換を代替する署名テクニック •
通常のSchnorr署名 (R, s): R = kG、s = k + H(P, R, m) x • Adaptor Signature (R, s’, T): R = kG, s’ = k + t + H(P, R, m) x, T = tG ※ Rは同じ値 t がハッシュのプリイメージの代替でランダムに選択した数値 Tはtを秘密鍵とした楕円曲線上の点=公開鍵でハッシュの役割をする Adaptor Signature s’とsが揃うとそこからtを計算できる。 t = s’ - s
5 Adaptor Signature with ECDSA ECDSAの署名データには線形性は無いので Rにシークレットの値を加味して、Atomic Swapを実現する • 通常のECDSA署名
(R, s’): R = kG、 • Adaptor Signature 署名生成時に選択するnonceにシークレットaを含める。 (R, s): R = akG, s’とsが揃うとそこからaを計算できる。 a = s’/ s
6 Adaptor Signatureを使ったAtomic Swap Bitcoin Litecoin • 鍵ペア P1 =
x1G • nonce R1 = k1G • Paillier暗号の鍵ペア (Priv, Pub) • 鍵ペア P2 = x2G • nonce R2 = k2G • 鍵ペア P4 = x4G • nonce R4 = k4G • 鍵ペア P3 = x3G • nonce R3 = k3G P = x1P2 = x2P1 ① 1 BTCをロック P’ = x3P4 = x4P3 ② 10 LTCをロック ③ ボブはランダムなシークレット aを選択し、 A = aGを計算し、アリスに送る。 ⑥ R'を使って R = k1R’ を計算する。 ⑥ ボブも R = (a * k2)R1を計算する。 Rのx座標をrとする。 ⑧ を計算し、 を計算し、C3をアリスに送る。 ④ Paillier暗号の公開鍵Pubでx1を 暗号化したckey = Enc(x1)を ボブに送る。 ⑤ R' = k2Aを計算してアリスに送る。 R ④ Paillier暗号の公開鍵Pubでx4を 暗号化したckey’ = Enc(x4)を ボブに送る。 ⑤ T’ = k3Aを計算してアリスに送る。 ⑥ T'を使って T = k4T’ を計算する。 ⑥ ボブも T = (a * k3)R4を計算する。 Tのx座標をtとする。 T C3 Tx(m) ⑦ BTCをボブに送るTxから 署名対象のメッセージ mを生成し共有 ⑦ LTCをアリスに送るTxから 署名対象のメッセージ m’を生成し共有 Tx(m’) ※ この時、R'、T'がAから算出されていることを 証明するゼロ知識証明を必要とする。 ※ RもTも同じシークレット aが使われていることが重要 有効な署名をそれぞれのチェーンで構成するにあたって aの知識が必要となる。
⑫ アリスはボブがブロードキャストした トランザクションから sの値が分かるので、 それとs’’を使ってシークレット aを計算する。 7 Adaptor Signatureを使ったAtomic Swap
Bitcoin Litecoin ⑪ s’’とシークレットaを使ってsを計算する。 算出した(r, s)がボブがBitcoinを受け取る トランザクションの有効な署名になる。 ボブはTx(m)をブロードキャストし、 BTCを手に入れる。 ⑩ C3を復号し、s’を得る。 s’とk1を使ってs’’を計算し、 ボブに送る。 ⑬ アリスはu’’とaを使って、アリスが Litecoinを受け取るトランザクションの 有効な署名を完成させる。 Tx(m) (r, s) a ⑨ を計算し、 を計算し、C3’をアリスに送る。 Tx(m’) (t, u) ⑩ C3’を復号し、u’を得る。 u’とk4を使ってu’’を計算する。 C3’
8 まとめ • Adaptor Signatureはハッシュのプリイメージの交換を 代替する署名エンコード • タイムロックの仕組みはないので、予めnLocktimeを セットした払い戻し用のトランザクションを準備しておく 必要がある。
• オンチェーン上では、単純なアドレス(P2PKHのような) 宛の送金トランザクションに見えるだけで、 Atomic Swapが行われたことは当事者以外分からない。 • スクリプトのサイズ分手数料が安価に。 • ECDSAで現時点で利用可能