現金に替わる電子マネーの実装 200702894 大城 翔太 木下研究室
電子マネーについて 電子マネーとは・・・現金を電子的なデータに置き換えて決済を行うもの 電子マネーのメリット・・・決済の高速化と現金を持ち歩かなくて良い しかし、現在の日本では普及している電子マネー の多くがプリペイド式で、なおかつ電子マネー間の 相互利用がほとんどできない為、利用シーンが限 られている。
研究背景 JR東日本のSuica、ビットワレットのEdyを代表とする既存の電子マネーは、クローズドループ型の電子マネーであり、誰かに電子マネーを渡してもそれを発行会社が現金化しないといけないので、1度で1回しか利用できない。 発行会社 SHOP ユーザー モノ・サービス 買い物した店
研究の概要 従来の研究により、分散データベースと離散対 数問題を用いた、オープンループ型の現金と代 替可能な電子マネーが提案された。 現金と代替可能な電子マネーを実装する為に必 要なシステムの構成を検討し、Javaでの記述を 前提としたプロトコル実行部分の実装を行う。 箇条書き
実装する際の関係図 ユーザー 受領者 データベース ユーザーが商品を購入 取引内容の送信 決済情報の送信 取引成立の証明 取引内容の確認 決済処理と取引成立の証明 取引内容の確認と決済情報の送信
実装する際のポイント(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)となる ここが終わったところで7分 頭に“まとめ”とかく プロトコルの実装を行った 2枚に分けてもよい O(log n )になる場合については聞かれた時用にスライドを用意するなどする
今後の課題 利用者が利用しやすいようなインタフェースをJavaアプレット等により実現する 最初の図で説明した関係図で足りない部分の システムを構築する必要がある ユーザー管理 データベース ネットワーク
計算量について 金額を扱うMxのビット数が512bitではなくさらに 大きい場合、計算量はO(log n)で表される。