20140625 ステルスアドレスとその仕組み
DESCRIPTION
ステルスアドレスとはなにか?またそれを実現する暗号技術の説明です。TRANSCRIPT
-1-
©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
ステルスアドレスの仕組み
2014/6/25 大石哲之
-2-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
ビットコインの仮名性アドレス自体は仮名実名とは紐付いていないしかし、いったんそれが誰のものかが特定できてしまうと、完全記名になってします。トラッキングもできるし
そのため、
アドレスを取引毎に違うものにすることが推奨される
-3-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
毎回ちがうものにするとプライバシー上は最良しかし、次のようなアドレスでは不便です
寄付の受付のアドレス 会社などの代表のアドレス
– 毎回ちがうと名刺などには記載できない– かといって同じのにすると、売上が駄々漏れ
個人でも、対外的に晒すアドレス
-4-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
ステルスアドレスとは?代表性のある一つのアドレスを公開そのアドレスあてに送金すると、相手に届くしかし、第三者は、そのアドレスのトランザクションはまったく追えない送金者は、自分が送ったことは確認できるが他人のトランザクションは追えないステルスアドレスの持ち主は、すべてのトランザクションがわかる
-5-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
図解ステルスアドレス(代表)
子アドレス
子アドレス
子アドレス
子アドレス
子アドレス
※通常の 1から始まるビットコインアドレス
※特殊なアドレス
送金元アドレス送金者ステルスアドレス内の子
アドレスに送金
Public に見える世界
送信者に見える世界
ステルスアドレスの持ち主だけの世界
-6-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
Question
送金者は、どうやって、子アドレスを知るのか?(公開したら元も子もない)ステルスアドレスは、どうやって子アドレスを管理するのか?どうやって着金がわかるのか?
基本アイデア ディフィーヘルマン鍵交換をつかった共有鍵をつかって解決
次ページからの技術的な説明は、ジョナサン・アンダーウッド氏より口頭で説明うけたものを大石が解釈し、まとめたものです。
-7-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
ステルスアドレス側ステルス側あらかじめ、2つのキーペアを作成して、公開
For Scan: 公開 Q = dG For Spend: 公開 R = fG d,f は秘密鍵
送信者1つのキーペアを作成
公開 P = eG e が秘密鍵
ディフィーヘルマン鍵交換により、共有鍵 c を得る。 共有鍵 = 自分の秘密鍵 * 相手の公開鍵 c = e * Q = (e * dG) ※c は実際には、 sha256 でハッシュした値
-8-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
送金送金者は、以下の式で、送金アドレスを作成
R’ = R + cG
R’ あてに送金するが、そのとき P の情報を含めておく。 TxOut1 = OP_RETURN P ※最初に作成した new 公開鍵 TxOut2 = to R’ 10BTC TxOut3 = おつり
-9-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
着金のスキャンステルスアドレス側は、 OP_RETURN に鍵が含まれるトランザクションを常時ウオッチする。
含まれていれば、自分のステルスアドレス宛かどうかを、以下のようにして検証。もしステルスアドレス宛てのものであれば、着金を確認する。
OP_RETURN に含まれる鍵 P をつかって、ディフィーヘルマン鍵共有にて、共有鍵を得る。
c = d * P = d * (eG) ※ c は実際には sha256 した値
この時点は、共有鍵が当たりかわからないので、次のように検証
-10-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
アドレス検証含まれているアドレス R’ が、 R から生成されたものであるかを、 Cをつかって試してみる。
R’ = R + cG
= fG + cG
= (f+c)G
If R’ = Tx1’s R’ : bingo!
-11-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
使うには?R’ アドレスあての送金が自分のものであることはわかった。しかし、R’ アドレスの秘密鍵をしらねば、コインは使えない。
R’ の秘密鍵を知る方法
R’ = (f+c)G
だから、自明で、 f+c が秘密鍵である。両方すでに知っている。
-12-©2014 OTETSUYUKI OISHI 本資料の無断配布、2次配布、および無断転載・転用は固く禁じます。
クレジット、連絡先ビットコイン関連の講演可能
連絡先
Email [email protected]
Facebook: https://www.facebook.com/tyk97