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
集約署名
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
YH
September 20, 2019
Technology
770
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
集約署名
Road to Devcon 4.0
YH
September 20, 2019
More Decks by YH
See All by YH
Context of Enigma
mut3438
1
320
スマートコントラクト・セキュリティ最新事情
mut3438
1
260
Current State of Key Management
mut3438
1
280
ゼロ知識証明とブロックチェーン
mut3438
1
790
Other Decks in Technology
See All in Technology
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
13
4.3k
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
240
運用を見据えたAIエージェント設計実践
amacbee
1
3.3k
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2k
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
780
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
1
440
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
520
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
230
Rubyで音を視る
ydah
1
160
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
110
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
19
11k
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
180
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Code Review Best Practice
trishagee
74
20k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Building a Scalable Design System with Sketch
lauravandoore
463
34k
GitHub's CSS Performance
jonrohan
1033
470k
30 Presentation Tips
portentint
PRO
1
320
How to train your dragon (web standard)
notwaldorf
97
6.7k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Practical Orchestrator
shlominoach
191
11k
Transcript
集約署名 光成滋生 2019/9/20 Road to Devcon 4.0 〜 Security &
Privacy
• ペアリングの応用と実装研究 • https://github.com/herumi/bls ; BLS署名 • https://github.com/herumi/mcl ; ペアリング
• Linux/Windows/Mac/Android/iPhone/WebAssembly対応 • used by DFINITY, libsnark, Harmony.one, 0CHAIN, ChainSafe, spacemesh, Prysmatic Labs Ethereum 2.0, AZTEC protocol, .etc. • https://github.com/herumi/xbyak ; JITアセンブラ • used by Intel MKL-DNN, etc. • 『クラウドを支えるこれからの暗号技術』 @herumi 2 / 12
• あるメッセージに対して自分しか知らない秘密鍵で署名を作る • だれもが知ってる公開鍵を使って(, )が改竄されていないことを検証できる • 秘密鍵を知らない人は検証をパスする偽の署名(′, ′)を偽造できない • はの暗号文ではない(通常は定数サイズ,
は任意のサイズ) • 署名アルゴリズム • 鍵生成 • 安全性レベルを示すセキュリティパラメータを元に(, )を生成 • 署名 • メッセージとから署名を作成 • = , • 検証 • メッセージと署名とを元にtrue/falseを返す • , , = true/false 電子署名 3 / 12
• 一つのメッセージに対して複数人がそれぞれ署名する • 1 = 1 , , 2 =
2 , , 3 = 3 , • それぞれの署名を一つずつ検証するのではなくまとめて検証したい • Pragmatic signature aggregation with BLS • https://ethresear.ch/t/pragmatic-signature-aggregation-with-bls/2105 • aggregate 1 , 2 , 3 → ? • 署名サイズの削減(数千個) • 検証時間の削減 • お父さん1 、お母さん2 、子ども3 に対してどれか2個の署名があれば有効としたい • 1 , 3 → ?, 2 , 3 → ? • -of- ; 人のうち人が署名すれば全体として有効 マルチシグ(multi-signature)・集約可能署名 4 / 12
• : 「足し算」ができる個の点からなる集合 • とりあえず中身はブラックボックスでよい • 0 ; 足し算におけるゼロを表す値(点) •
; 0以外の特定の点(固定しておく) • = 0, , 2, 3, … , − 1 • = 0 ; 倍したら0に戻る • 一方向性 • の整数倍を計算するのは容易 : , ↦ • とを知っていてもを求めるのは困難:(, ) ↦ • 楕円離散対数問題(ECDLP)の困難性 • が秘密鍵でが公開鍵のパターンが多い • secp256k1という曲線がよく使われる 楕円曲線 5 / 12
• 楕円曲線を2個使う • 1 = {0, , 2, … ,
− 1 }, 2 = {0, , 2, … , − 1 } • 楕円曲線の2個の点からある集合 = {, 2, 3, … , −1}への写像で , = for , ∈ ℤ where = , を満たすもの • BN254, BLS12-381という曲線がよく使われる • BN254は100~110ビット安全性 • 従来128ビット安全と思われていたが攻撃改良により安全性が低下 • BLS12-381は128ビット安全なものとして設計される • BLS12-381のBLS(Barreto-Lynn-Scott)と BLS署名のBLS(Boneh–Lynn–Shacham)は別物なので注意 ペアリング 6 / 12
• 集約のナイーブなアイデア • 1 , 2 , … , ;
各メンバー の秘密鍵 • 1 , 2 , … , ; の公開鍵 • 公開鍵を足す • ≔ 1 + 2 + ⋯ + = 1 + ⋯ + • これに対応する秘密鍵 ≔ 1 + ⋯ + はお互い誰も知らない • Rogue-key攻撃( が攻撃者とする) • 乱数を使って自分の公開鍵を ≔ − (1 + ⋯ + −1 )とする • 公開鍵を足すと = 1 + ⋯ + = ; はを知っている • 対策例 : PoP/KoSK(Proof of possesion/Knowledge of secret key) • 各 を各自の で署名させる • は に対応する秘密鍵( − 1 − 2 − ⋯ − −1 )は知らないので署名できない Rogue-key攻撃 7 / 12
• 楕円曲線ベース • Schnorr署名の派生バージョン • BCJ, MWLD, CoSi, MuSig1(MPSW18a),,... •
ペアリングベース • BLS署名の派生バージョン いろいろな方式 8 / 12
• https://eprint.iacr.org/2018/417 • 既存の楕円曲線ベースの方式に安全性の問題ありと指摘 • ペアリングベースで安全なものを提案 • Compact Multi-Signatures for
Smaller Blockchains • https://eprint.iacr.org/2018/483.pdf On the Security of Two-Round Multi-Signatures 9 / 12
• 前述の論文Table 1 • -out-of- multisig wallets • tx=1500, inp=3,
n=3 • 今回はMSPを紹介 • 注 : ペアリングの計算は重たい(BLS12-381で0.75msec@core i7-8700) • スカラー倍算の20倍弱 サイズ比較 10 / 12
• 1 = ⟨⟩, 2 = ⟨⟩, : 1 ×
2 → • 1 : → 1 • 鍵生成 • ; 秘密鍵, = ; 公開鍵 • 署名 • ; メッセージ, = Sign , ≔ 1 () • 検証 • Verify , , = true if , == (1 , ) BLS署名 11 / 12
• 鍵生成 • ; の秘密鍵, ; の公開鍵 • 集約 •
≔ , 1 , … , where : → ℤ • ≔ 1 1 + ⋯ + • input : { , } ; メッセージに対する の署名, ≔ 1 () • verify each ( , ) • ≔ 1 1 + ⋯ + • 検証 • Verify , , = true if , == (1 , ) ; original BLS署名の検証と同じ • = σ 1 () = σ 1 • LHS= σ 1 , = 1 , σ =RHS Multi-Signatures from pairings (MSP) 12 / 12