Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Linkable Spontaneous Anonymous Group Signatures...
Search
shigeyuki azuchi
November 28, 2020
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linkable Spontaneous Anonymous Group Signatures (LSAG) in Monero
GBECの解説動画の資料です。
https://goblockchain.network/2020/11/lsag/
shigeyuki azuchi
November 28, 2020
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
16
Hyper Tree
azuchi
0
18
FORS
azuchi
0
31
クラスターmempool
azuchi
0
43
W-OTS+
azuchi
0
50
Shorのアルゴリズム
azuchi
0
71
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
56
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
69
Other Decks in Technology
See All in Technology
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
640
Claude起点の仕様駆動開発
tanakaseiya
0
220
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
250
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
190
企業の現実世界をグラフで写し取る
sansantech
PRO
0
200
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
190
20260915deck.gl-raster を使ってみた
rena1208
0
170
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
150
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
140
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
190
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
160
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
240
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
750
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Mobile First: as difficult as doing things right
swwweet
225
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Practical Orchestrator
shlominoach
192
12k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Docker and Python
trallard
47
4.2k
Thoughts on Productivity
jonyablonski
76
5.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Fireside Chat
paigeccino
43
4k
Transcript
Linkable Spontaneous Anonymous Group Signatures (LSAG) in Monero
1 LSAGとは? Moneroの初期に、送信者を秘匿するために開発されたリング署名スキーム Linkable Spontaneous Anonymous Group Signatures
正確には、https://eprint.iacr.org/2004/027.pdf のLinkabilityが、同じリングメンバーに対して有効だったものを Adam Backが↓で https://bitcointalk.org/index.php?topic=972541.msg10619684#msg10619684 異なるリングメンバーに対してもLinkabilityが有効になるように 拡張した署名スキームがベース ※ RingCTの導入に伴い、MLSAGが使用され、現在はCLSAGが利用可能 https://web.getmonero.org/library/Zero-to-Monero-2-0-0.pdf
2 送信者を秘匿する方法 Tx Input A TXO 1 TXO 2 ユーザーが保有するUTXO
TXO 3 ・・・ Key Image Ring Signature Input B TXO 4 ・・・ Blockchain TXO Database 送金時に送金に使用するUTXOと同額のコインを持つTXOを ブロックチェーン上からランダムにサンプリングし、 デコイとしてインプットに混合し、実際に使用するコインを 難読化する。 【リング署名】 特定の公開鍵のセットの内、いずれかの公開鍵に対応する秘密鍵で作ら れた署名であることは証明できるが、それがどの公開鍵に 対応する秘密鍵であるかは分からないという特性を持つ署名方式。 ※ どれが使われたか送信者以外分からないため、BitcoinのようなUTXO管理も不可能
3 LSAGの特性 • Signer Ambiguity 外部の観察者は、署名者がリングのメンバーであることを判断できる必要があるが、 それがどのメンバーかまでわかる必要はない。
• Linkability 同じ秘密鍵を使って2つの異なるメッセージに対して署名した場合、 その2つのメッセージはリンクされる。 • Unforgeability 攻撃者は(極僅かな確率を除いて)、署名を偽造できない =適切な秘密鍵を持っていない者は有効な署名を作ることができない。 暗号通貨では、特にLinkabilityが重要(二重使用を防ぐため)
4 LSAGの署名生成 リングサイズ=3(P 1 =x 1 G、P 2 = x
2 G、P 3 = x 3 G)について リング署名を生成する。実際の署名者は P 2 = x 2 G。 1. キーイメージ I = x 2 Hp(P 2 )を生成する。 2. ランダムな数値α、r 1 、r 3 を生成する(r 2 以外)。 3. チャレンジ c 3 =H(m|αG|αHp(P 2 ))を計算する。 4. 残りのチャレンジを計算 a. c 1 =H(m|r 3 G+c 3 P 3 |r 3 Hp(P 3 )+c 3 I) b. c 2 =H(m|r 1 G+c 1 P 1 |r 1 Hp(P 1 )+c 1 I) 5. 最後にr 2 =αーc 2 x 2 を計算 6. 署名値はσ(m)=(c 1 , r 1 , r 2 , r 3 ) 【表記】 • m:署名対象のメッセージ • H():暗号学的ハッシュ関数 • Hp():楕円曲線上の点を出力するハッ シュ関数 • G:楕円曲線のベースポイント α=r 2 +c 2 x 2 なので、c 3 は c 3 =H(m|(r 2 +c 2 x 2 )G|(r 2 +c 2 x 2 )Hp(P 2 )) c 3 =H(m|r 2 G+c 2 P 2 |r 2 Hp(P 2 )+c 2 I) c 1 とc 2 と同じ構成になる。 各チャレンジは前のチャレンジを参照するリングを形成する。
5 LSAGの署名生成 公開鍵セットP 1 ,P 2 ,P 3 についての循環するSchnorr署名を作れるか? •
s 1 G=R 1 +H(m|R 3 )P 1 • s 2 G=R 2 +H(m|R 1 )P 2 • s 3 G=R 3 +H(m|R 2 )P 3 いずれかの秘密鍵を知っていると(x 2 とする) 1. R 2 =r 2 Gとする。 2. ランダムにs 3 を選択する。 3. R 3 =s 3 GーH(m|R 2 )P 3 を計算し、s 1 をランダムに選択する。 4. R 1 =s 1 GーH(m|R 3 )P 1 を計算する。 5. 最後にs 2 をランダムではなく、s 2 =r 2 +H(m|R 1 )x 2 として計算する。 こうして計算した(H(m|R3),s 1 ,s 2 ,s 3 )があれば↑を作成可能 かつ、↑だけではどの秘密鍵を使って作られたのか判断できない チャレンジハッシュの計算は、1つ前のRを参照る循環構造
6 LSAGの署名生成 リングサイズ=3(P 1 =x 1 G、P 2 = x
2 G、P 3 = x 3 G)について リング署名を生成する。実際の署名者は P 2 = x 2 G。 1. キーイメージ I = x 2 Hp(P 2 )を生成する。 2. ランダムな数値α、r 1 、r 3 を生成する(r 2 以外)。 3. チャレンジ c 3 =H(m|αG|αHp(P 2 ))を計算する。 4. 残りのチャレンジを計算 a. c 1 =H(m|r 3 G+c 3 P 3 |r 3 Hp(P 3 )+c 3 I) b. c 2 =H(m|r 1 G+c 1 P 1 |r 1 Hp(P 1 )+c 1 I) 5. 最後にr 2 =αーc 2 x 2 を計算 6. 署名値はσ(m)=(c 1 , r 1 , r 2 , r 3 ) ※ リングサイズが増えると、その分署名のデータサイズも増える。 【表記】 • m:署名対象のメッセージ • H():暗号学的ハッシュ関数 • Hp():楕円曲線上の点を出力するハッ シュ関数 • G:楕円曲線のベースポイント α=r 2 +c 2 x 2 なので、c 3 は c 3 =H(m|(r 2 +c 2 x 2 )G|(r 2 +c 2 x 2 )Hp(P 2 )) c 3 =H(m|r 2 G+c 2 P 2 |r 2 Hp(P 2 )+c 2 I) c 1 とc 2 と同じ構成になる。 各チャレンジは前のチャレンジを参照するリングを形成する。
7 LSAGの署名検証 リングサイズ=3(P 1 =x 1 G、P 2 = x
2 G、P 3 = x 3 G)について リング署名σ(m)=(c 1 , r 1 , r 2 , r 3 )、キーイメージIの検証は、 1. キーイメージ I がGの郡内に存在するかチェックする。 2. c’ 2 =H(m|r 1 G+c 1 P 1 |r 1 Hp(P 1 )+c 1 I)を計算する。 3. c’ 3 =H(m|r 2 G+c’ 2 P 2 |r 2 Hp(P 2 )+c’ 2 I)を計算する。 4. c’ 1 =H(m|r 3 G+c’ 3 P 3 |r 3 Hp(P 3 )+c’ 3 I)を計算する。 5. c 1 =c’ 1 が成立すれば署名は有効。 署名が有効えあれば、さらにキーイメージ Iがこれまでチェーン上で使用されていないかチェックする。 (キーイメージI = x 2 Hp(P 2 )から鍵が特定されることはない。) Linkabilityを利用した二重使用のチェック↑ 【表記】 • m:署名対象のメッセージ • H():暗号学的ハッシュ関数 • Hp():楕円曲線上の点を出力するハッ シュ関数 • G:楕円曲線のベースポイント
8 まとめ MoneroではLSAGの以下特徴を利用して匿名性を実現 • Signer Ambiguity 公開鍵セットに対して循環するリング署名を形成することで 、匿名セットの創出と署名の秘匿化を実現
• Linkability 同じ秘密鍵を使った署名をLinkabilityにより検出可能にすることで、 署名者は秘匿したまま二重使用を防止 • Unforgeability ただしく秘密鍵を知る者しか、循環するリング署名を作ることができない。 ※ LSAGが1つの公開鍵セットに対するリング署名なのに対し、複数の公開鍵セットにおいて 匿名性を担保するリング署名スキームが MLSAGで、RingCTの導入に伴いMLSAGに切り替わり。 さらに2020年10月17日のアップグレードで署名サイズをコンパクトにした CLSAGをリリース。