現金に替わる電子マネーの実装 200702894 大城 翔太 木下研究室 電子マネーについて • 電子マネーとは・・・現金を電子的なデータに置 き換えて決済を行うもの • 電子マネーのメリット・・・決済の高速化と現金を 持ち歩かなくて良い しかし、現在の日本では普及している電子マネー の多くがプリペイド式で、なおかつ電子マネー間の 相互利用がほとんどできない為、利用シーンが限 られている。 研究背景 JR東日本のSuica、ビットワレットのEdyを代表 とする既存の電子マネーは、クローズドルー プ型の電子マネーであり、誰かに電子マネー を渡してもそれを発行会社が現金化しないと いけないので、1度で1回しか利用できない。 ユーザー 発行会社 SHOP モノ・サービス 買い物した店 研究の概要 従来の研究により、分散データベースと離散対 数問題を用いた、オープンループ型の現金と代 替可能な電子マネーが提案された。 現金と代替可能な電子マネーを実装する為に必 要なシステムの構成を検討し、Javaでの記述を 前提としたプロトコル実行部分の実装を行う。 実装する際の関係図 ユーザーが商品 を購入 ユーザー 取引成立の証明 取引内容の送信 決済情報の送信 取引内容の確認 取引成立の証明 受領者 データベース 決済処理と取引成立の証明 決済情報の送信 取引内容の確認と決済情報の送信 実装する際のポイント(1)ハード面 • ユーザー間の取引はパソコンなどの端末を 使用し、決済完了の確認はデータベースによ り行う。 • ユーザー間の取引は、データベース側に保 存され、第三者性を高める。 • ユーザー側のコンピュータでプログラムを起 動させることによってデータベースの負荷を 軽くし、安定した稼働を実現する。 実装する際のポイント(2)決済 • 現金が移動した履歴は離散対数問題によっ て暗号化され、第三者に知られる事がない。 それによりプライバシーが保たれる。 • データベースが決済前と決済後のユーザー の現金を確認することで、偽造を防ぐ。 • 取引成立の際は証明する書類をデータベー スからユーザーに送信する事で決済終了とな る。 今回実装する範囲について ユーザーが商品 を購入 ユーザーと受領者のや り取りについて研究を 行う。 ユーザー 決済情報の送信 取引成立の証明 取引内容の送信 取引内容の確認 取引成立の証明 受領者 データベース 決済処理と取引成立の証明 決済情報の送信 取引内容の確認と決済情報の送信 電子マネーの構造 ・𝑆𝑥 を 64bit の金額、𝑅𝑥 を 448bit の乱数とすると 𝑀𝑥 = 𝑓 𝑆𝑥 , 𝑅𝑥 = 2448 𝑆𝑥 + 𝑅𝑥 ・データベースに蓄積する電子マネーxの認証子𝐷𝑥 は、大きな 素数をn, nの原始根をgとすると 𝐷𝑥 = 𝑔𝑀𝑥 𝑚𝑜𝑑 𝑛 となり、離散対数問題を使用している事により𝐷𝑥 から𝑀𝑥 を求め る事が困難である 決済処理の方法 データベースの情報は、ユーザーの電子マネーをA、受領者の 電子マネーをBとすると次のようになる。 ・取引前 𝐷𝐴1 = 𝑔𝑀𝐴 1 𝑚𝑜𝑑 𝑛 𝐷𝐵1 = 𝑔𝑀𝐵 1 𝑚𝑜𝑑 𝑛 ・取引後 𝐷𝐴2 = 𝑔𝑀𝐴 2 𝑚𝑜𝑑 𝑛 𝐷𝐵2 = 𝑔𝑀𝐵 2 𝑚𝑜𝑑 𝑛 取引の際に間違いがなかったか確認するには、以下の式を用 いる。 𝑔𝑀𝐴 1 𝑔𝑀𝐵 1 = 𝑔𝑀𝐴 2 𝑔𝑀𝑩𝟐 𝑚𝑜𝑑 𝑛 作成したプログラムの概要 • 利用者が利用しやすいよう、ウェブ上などに 実装しやすい言語を選択する必要がある。そ こでJavaアプレット等の機能があるJavaを選択 した。 • 乱数Rxは448bit、Mxについては512bitと、通 常のJavaプログラムで処理する事が出来る 32bitよりも大きな桁の数を扱う為、大整数計 算ライブラリを用いてプログラムを書いた。 プログラムの実行画面 乱数が生成できているか確認するため、 448bitの乱数pを実行画面上に表示させる。 ユーザー1,ユーザー2の所持金をu1,u2とする。これが各 ユーザーの最初の所持金となる。 処理させる金額を入力させる。 ユーザー1の金額Ma1,ユーザー2の金額Mb1と、 データベースに記憶させる認証子Da1,Db1を乱数pを 用いて計算する 入力された金額をもとにMxを計算し,Ma1,Mb1からMx を足し引きしてMa2,Mb2を得る Ma2,Mb2から決済後のDa2,Db2を計算し、Da1,Db1 と比較して間違いがなければ、”決済が完了しまし た”というメッセージを表示し、終了となる まとめ プロトコルの実装を行った。 • Da1,Db1,Da2,Db2は離散対数問題を用いて計算され ているため、元の金額を求める事が非常に難しく、安 全性が高いと言える • プログラムの最後に両ユーザーの金額の増減に間違 いがないか計算するため、一方のユーザーが不正を して数値を改変してもすぐに判明する • プログラムの計算量をnを金額のビット数としてO記法 で表すと、O(1)となる 今後の課題 • 利用者が利用しやすいようなインタフェースを Javaアプレット等により実現する 最初の図で説明した関係図で足りない部分の システムを構築する必要がある • ユーザー管理 • データベース • ネットワーク 計算量について 金額を扱うMxのビット数が512bitではなくさらに 大きい場合、計算量はO(log n)で表される。
© Copyright 2024 ExpyDoc