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
匿名意見箱
Search
akakou
December 04, 2021
Technology
620
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
匿名意見箱
暗号の力で、プライバシと一人一票を両立する魔法の投票システム
akakou
December 04, 2021
More Decks by akakou
See All by akakou
Scrappy (and View of Applying to Web)
akakou
0
250
Scrappy: SeCure Rate Assuring Protocol with PrivacY
akakou
0
230
LINE Login ではじめる 「とりまセキュリティ」
akakou
0
720
Privacy-enhanced Revocation (and View of Applying to Web)
akakou
0
230
AnoMatch 技育展
akakou
0
220
犬でもわかる公開鍵暗号
akakou
2
340
匿名認証で守るセキュリティ
akakou
2
950
Other Decks in Technology
See All in Technology
go-sqletch
moznion
0
130
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.8k
今さら理解するウェブフォントver.2026
takanorip
3
660
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
260
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
2
830
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
480
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
190
自主式軟體工廠
philipz
0
260
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
1
140
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
680
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
580
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Being A Developer After 40
akosma
92
590k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Crafting Experiences
bethany
1
380
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Transcript
プライバシと安全に配慮した 匿名意見箱 魔法少女まきの☆マキノ QB担当 あかこう(@_akakou)
電子投票システム つくったから 自慢するよ!
電子投票って難しい プライバシ?安全性? 投票に素直に答えてもらうには、 投票者の匿名性を守る必要がある でも、誰が投票したかわからないと 同じ人がたくさん回答しちゃうかも…? ?
匿名意見箱 そこで 暗号の力で、プライバシと一人一票を 両立する魔法の投票システム
魔法の力 暗号で守られた 魔法(ブラインド署名方式)の力で、 一人一票とユーザの匿名性を両立
ここまでは 一般向けの広報
ここから 中身をマジメに 話します
目的. 電子投票の要件 電子投票では以下を同時に満たす必要がある。 (特に匿名と一人一票は相反するため) これらを同時に満たすのは難しい 匿名 一人一票 クロスプラッ トフォーム 投票者が何を投票した
か、誰もわからないこと 有権者はそれぞれ一票の み、投票できること 持っている環境(e.g.OS)を 選ばず、投票ができること ※厳密にはもっと要件があると考えられるが、今回はこの要件のみフォーカスした。
既存技術. ブラインド署名 1/3 ブラインド署名とは、署名者が暗号 化された対象に電子署名する方式。 ブラインド署名を使うことで、匿名 と一人一票が両立できる。 Aさん Bさん (signer)
封筒 trace paper いろいろ 入った 封筒 いろいろ 入った 封筒 いろいろ 入った 封筒 Bさん の署名 Bさん の署名 Bさん の署名 封筒の上から 署名する Chaum, David. "Blind signature system." Advances in cryptology. Springer, Boston, MA, 1984. 署名対象 署名のついた 署名対象 署名がtrace paperを通じて 裏写りする
既存技術. ブラインド署名 2/3 ブラインド署名とは、署名者が暗号化された対象に電子署名する方式. ブラインド署名を使うことで、匿名と一人一票が両立できる。 ②blind_vote = encrypt(vote, CKvoter) ③blind_signature =
sign(blind_vote, SKsigner) = sign(encrypt(vote, CKvoter), SKsigner) = encrypt(sign(vote, SKsigner), CKvoter) ④vote, signature = decrypt(blind_signature, CKvoter) = decrypt(encrypt(sign(vote, SKsigner), CKvoter), SKvoter) = sign(vote, SKsigner) ⑤Verify(vote, signature, PKsigner) voter verifier(集計) signer(登録) ①本人認証 1voterに1回づつ しか署名しない ようにする signerは voteが 見えない ※PKname: nameの公開鍵,※SKname: nameの(公開鍵暗号)秘密鍵,※CKname: nameの(共通鍵暗号)共通鍵 verifierは voterが 誰か知 らない 有効な署名が一つし かないので,一回し か投票できない
既存技術. ブラインド署名 3/3 signerに見えないよう証明書cert (公開鍵に対する署名)を作る方法もある. ②blind_PKvoter = encrypt(PKvoter, CKvoter) ③blind_cert =
sign(blind_PKvoter, SKsigner) = sign(encrypt(blind_PKvoter, CKvoter), SKsigner) = encrypt(sign(blind_PKvoter, SKsigner), CKvoter) ④vote, PKvoter, signature = sign(vote, SKvoter), cert = decrypt(blind_cert, CKvoter) = decrypt(encrypt(sign(PKvoter, SKsigner), CKvoter), CKvoter) = sign(PKvoter, SKsigner) ⑤Verify(PKvoter, cert, PKsigner) ∧Verify(vote, signature, PKvoter) voter ※PKname: nameの公開鍵,※SKname: nameの(公開鍵暗号)秘密鍵,※CKname: nameの(共通鍵暗号)共通鍵 ①本人認証 1voterに1回づつ しか署名しない ようにする signerは PKvoter が見え ない verifierは voterが 誰か知 らない 有効な証明書が一つ しかないので,一人 分しか投票できない verifier(集計) signer(登録)
提案 ブラインド署名方式を用いた、一人一票かつ匿名性の高いWeb投票システムを実装。 ①本人確認 ②暗号化された公開鍵 ③暗号化された証明書 ⑤票, 公開鍵, 証明書, 署名 ④
暗号化 された 証明書 クライアント サーバ ブラウザ メール ※通信の匿名性は各クライアントが必要に応じて担保する(tor、vpnの利用など)
デモ
実装 暗号関係の計算を高速に 計算するために、 WebAssembly(Rust)と WebCryptoを利用 暗号化された証明書のう けとりと投票のタイミン グが紐付かないように、 メールとハッシュリンク を利用
鍵情報はlocalStorageと ファイルにそれぞれ保管 し、主にlocalStorageか ら自動で読み込む より現実に適した構成にするため、以下のような実装になっている。 高速な暗号計算 メールを使った ブラウザへのデータ送信 鍵の保管方法
まとめ 匿名 一人一票 クロスプラット 電子投票では以下を同時 に満たす必要がある。 フォーム ブラインド署名:署名者 が暗号化されたものに電 子署名する方式。
ブラインド署名を使うこ とで、匿名性と一人一票 が両立できる。 ブラインド署名方式を用 いて、一人一票かつ匿名 性の高いWeb投票システ ム "匿名意見箱" を実 装した。 目的 先行技術 提案
プライバシと安全に配慮した 匿名意見箱 魔法少女まきの☆マキノ