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
YH
September 20, 2019
Technology
780
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
270
Current State of Key Management
mut3438
1
280
ゼロ知識証明とブロックチェーン
mut3438
1
800
Other Decks in Technology
See All in Technology
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
320
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
HookでSAST、CIでSAST、SCAでどうにかしている話 / layered-security-for-ai-written-code-with-sast-and-sca
yamaguchitk333
0
100
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
190
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
330
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
初めてのDatabricks勉強会
taka_aki
2
230
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
360
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
500
RAGの精度向上とエージェント活用
kintotechdev
2
120
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
170
product engineering with qa
nealle
0
140
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.1k
A Soul's Torment
seathinner
6
3k
Building the Perfect Custom Keyboard
takai
2
810
Unsuck your backbone
ammeep
672
58k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
The Curse of the Amulet
leimatthew05
2
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Optimizing for Happiness
mojombo
378
71k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
250
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
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