JPWO2003077173A1 - サービス実行モジュール - Google Patents
サービス実行モジュール Download PDFInfo
- Publication number
- JPWO2003077173A1 JPWO2003077173A1 JP2003575316A JP2003575316A JPWO2003077173A1 JP WO2003077173 A1 JPWO2003077173 A1 JP WO2003077173A1 JP 2003575316 A JP2003575316 A JP 2003575316A JP 2003575316 A JP2003575316 A JP 2003575316A JP WO2003077173 A1 JPWO2003077173 A1 JP WO2003077173A1
- Authority
- JP
- Japan
- Prior art keywords
- service
- ticket
- information
- processing
- certificate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 227
- 238000000034 method Methods 0.000 claims description 147
- 230000008569 process Effects 0.000 claims description 132
- 238000004891 communication Methods 0.000 claims description 56
- 238000012546 transfer Methods 0.000 claims description 46
- 238000012795 verification Methods 0.000 claims description 20
- 238000013500 data storage Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 62
- 238000011084 recovery Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 230000008859 change Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 4
- 238000012508 change request Methods 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 2
- 239000011692 calcium ascorbate Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/04—Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2103—Challenge-response
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/101—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
- Devices For Checking Fares Or Tickets At Control Points (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
SE内に、サービスアイテム登録領域を設け、特定の証明書をもつサービスサーバのみが、SEのサービスアイテム登録領域を用いたサービスを提供することができる。サービスアイテム登録領域のデータを用いた処理を行う場合には、必ず署名付きメッセージの交換を行う。
Description
技術分野
本発明は、セキュアモジュールを用いたサービスの提供方法、そのサービスのひとつとして電子チケットの購入、使用、譲渡など電子バリューを活用するためのシステム、利用方法、プログラム、装置、プログラムを記録した記録媒体に関するものである。
背景技術
セキュアにモバイルサービスを提供するために、携帯電話やPDAにICチップなどのタンパレジスタントなセキュアモジュールであるセキュアエレメント(SE)を挿入して、安全性を向上する技術がある。携帯電話などに挿入して使うICチップの例としては、従来、たとえばGSMのSIMであれば、オペレータが発行管理をしていた。また、WAP(Wireless Application Protocol)では、WIM(WAP Identifier Module)という署名機能をもったセキュアモジュールの仕様を公開している。このWIMの実装のひとつとして、WIMをSIMと同一チップ上に実装するSWIMという形態があり、これもまたオペレータが発行管理を行う見込みである。
ここで、電子チケットサービスに関しては、大きく二つのタイプがある。一つ目は、電子チケット自体に、携帯電話やPDA、またはそれらに挿入されたSEの秘密情報をあらかじめ含めて発行する方式であり、二つ目は、電子チケット自体には、それらデバイスの秘密情報は含まずに発行する方式である(例えば、日本電気株式会社、プレスリリース(2002年10月3日)、モバイル向け基盤技術、モバイル電子チケット・会員証サービス基盤、平成15年1月14日検索、インターネット<URL:http://www.nec.co.jp/press/ja/0210/0303−01.html,http://www.nec.co.jp/press/ja/0210/0303−06.html,http://www.nec.co.jp/press/ja/0210/0303−07.html>参照)。
これらの電子チケットサービスの方式の間には、チケットの譲渡および格納の操作に関して大きな違いがある。
まず、譲渡に関しては、前者は、チケットにSE固有の情報を含むため、他人に譲渡する場合、サーバで再発行するなど、サーバ経由の処理が必須であった。それに比べ、後者では、サーバを介さずにオフラインで譲渡が可能である。
次に、格納に関しては、前者の方法であると、チケットにSE固有の情報が含まれており、他人がチケットデータを盗んでもSEがなくては改札処理ができないため、SE持ち主による不正コピーのみを防げばよい。そのため、TRMに正しいチケットデータのハッシュ値を保存しておき、改札時にチケットと照合するなどといったSE所有者の不正コピーを検出する仕組みを入れることで、チケットデータを暗号化することなく保存できる。後者の方法であると、SE所有者以外にも使えるため、メモリへチケットを保存する場合には、チケットデータを暗号化する必要があった。
しかしながら、これらには以下のような課題が残る。つまり、第1に、SEなどのタンパレジスタントなモジュールは高価なため、携帯電話やPDAに実装してサービスをしようとする場合、SE発行のコスト分担が課題となっていた。サービス提供者が発行費用を負担する場合には、費用負担をしていないサービス提供者にはSEを使わせないしくみが必要である。また、オペレータ以外であっても、自由にSEの発行管理が行えるビジネスモデルが必要である。
第2に、サービス管理者が、サービス提供者にSEのアクセスを提供する場合、そのサービスでの役割ごとに、SEへのアクセスを制限しなければいけないという課題があった。例えば、サービス管理者から改札機としての許可を受けているエンティティは、チケットの改札サービスは可能だが、新規チケットの発行は不可能というように、処理の権限を制限するしくみが必要であった。
第3に、ローカルの譲渡が可能な電子チケットでは、他人が不正に使用できないようにするため、SEなどのタンパレジスタント以外のメモリにはチケットデータを暗号化して保存する必要があった。そのため、保存、表示、使用の都度、復号化が必要となり、すべての処理時間について復号化の分だけ余計にかかってしまう。なお、SEなどのタンパレジスタント以外のメモリにはチケットデータを暗号化して保存する必要のない従来の技術として、チケットにSE固有情報を含めて発行する方式がある。しかし、その方式には、譲渡の再、サーバを介して再発行を受ける必要があるという問題点がある。
第4に、チケット発行時に支払い処理の負荷分散を図るために、まずは整理券を配り、支払いをしてからチケットを発行する場合、2種類のデータを発行・管理する必要があった。
第5に、リモートで譲渡の処理をする場合、どんなチケットを譲渡したいのかを相手に伝えるのに、電話、メールやFAXなどでチケットの内容を伝える必要があった。
第6に、セキュアモジュールの高機能化に伴い、サーバ側のシステムを変化させる必要があった。サーバ側は異なる性能のデバイスをサポートできるプロトコルが必要である。
発明の開示
本発明の目的は、セキュアエレメントを用いて、セキュアエレメントへのアクセスを制限する手段をもつセキュアモバイルサービスシステムに用いられるサービス実行モジュールを提供することである。また、本発明の別の目的は、このセキュアモバイルサービスシステムを用いて、スケーラビリティのあるチケットサービスを提供することである。
上記目的を達成するために、本発明では、サービスを実行するための情報を格納したサービス実行モジュールであって、前記モジュールは耐タンパな記憶媒体で構成され、前記サービスを実行するためのアプリケーションを格納したサービスアプリケーション格納手段と、前記サービスを管理するサービス管理者の証明書であるサービス管理者証明書を格納するサービス管理者証明書格納手段と、前記サービスを実行するために必要な情報であるサービスアイテムを格納するサービスアイテム格納手段とを備える。
すなわち、本発明では、第1に、SEにサービス管理者の証明書を格納して販売し、その証明書で署名が検証可能な証明書をもつサービスサーバのみSEのそのサービス専用の領域を使ったサービスを提供できるようにした。SE上に新たなサービス領域を生成する場合にも、そのためのサービス管理者の証明書を用いる。こうすることで、第三者は、このSEを用いたサービスを提供することはできないようにすることができる。
上記の構成において、「耐タンパ」とは、ソフトウェア的にもハードウェア(物理)的にもセキュア(安全)性が保証されている仕組みを指し、耐タンパモジュールとは、社会的に使用されているものではICカードがこれに相当する。ソフトウェア的には、正当な保証が行なわれないとICチップの記憶領域内のデータへのソフト的なアクセスを不可能にしてセキュアを達成する。また、ハードウェア的には、ICチップへのハード的なアクセス、例えば、カードを分解して、メモリ領域へ信号線を接続してデータを読み取るといった強引な行為に対して、例えばメモリ内のデータが消去されたり、或いはデータが自動的に破壊されたりして、不正にデータを取得することを不可能にしてセキュアを達成するなどの仕組みをいう。
第2に、SEに通信相手格納領域を設け、証明書に記述されたサービス管理者が認めた役割ごとに、実行できる処理を制限できるようにした。通信の始めに通信相手の証明書を検証し、証明書に指定された役割をSEに設けた通信相手格納領域に格納する。SEはME(携帯電話やPDAなどのモバイルエレメント)から処理要求を受信したときに、この通信相手格納領域の値を参照し、実行可能か判断する。
第3に、SE内のサービス専用の領域にサービスアイテム登録領域を設けた。さらに、サービスアイテム登録領域のデータを用いたサービスを実行するためには、署名付きのメッセージ交換なしには、サービスが行えないプロトコルとした。
第4に、SEに設けたサービスアイテム登録領域に登録された登録データなしでは、使えない処理プロトコルとした。そのため、例えばチケット処理などにおいては、整理券とチケットデータは同一でよい。支払い処理の後、正しい登録プロトコルを実行し、SEに設けたチケット登録領域(サービスアイテム登録領域)に登録しないとチケットは無効なので、整理券の発行管理は不要となった。
第5に、正しい証明書を持ったSE同士が、SEの署名付きメッセージをやりとりして、SEに設けたチケット登録領域に登録されたチケット以外は使えない処理プロトコルとしたため、譲渡処理より前にチケットデータをメールなどに添付して譲渡相手に送信することが可能となった。相手はこのチケットデータを表示して、全内容を確認してからこのチケットを譲り受けるか決めることができる。
第6に、メッセージ全体を暗号化することのみでセキュリティ確保せず、サービスアイテム登録領域や署名機能を用いて処理を行うプロトコルとした。このため、SEの高速化、大容量化、価格の減少により、MEとの処理分担を変えることで、サービスサーバ側のサービスシステムを変更することなくサポートできる。
発明を実施するための最良の形態
以下、本発明の実施の形態について図面を参照して詳細に説明する。
<実施の形態1>
実施の形態1としてSEの発行モデルを、実施の形態2としてSEとサービスサーバの認証方式を、実施の形態3としてチケットサービスを、実施の形態4として認証と統合したチケットサービスを、実施の形態5として、処理能力の低いSEを用いた場合のチケットサービスを順に説明する。この実施の形態1では、図1から図4を用いて、セキュアモバイルサービスシステムにおけるSEの発行モデルを説明する。図1は本発明の実施の形態1に係るセキュアモバイルサービスシステムの概略構成をモデル化して示すブロック図である。携帯電話やPDAといったモバイルデバイスME100は、MEサービスアプリケーション102、署名処理を含む暗号処理機能があるタンパレジスタントなモジュールであるSE101、サービスデータ保存領域109をもつ。
なお、SE101とサービスデータ保存領域109の関係であるが、どちらか/両方が着脱可能であっても、どちらか/両方が複数あっても構わない。また、それらは物理的に同一のメディアに存在していてもしていなくても構わない。
また、それらの間でのデータのやりとりは、MEサービスアプリケーション102などの外部を介して送受信しても、101と109が物理的に同一のメディア内にある場合は、外部を介した送受信を、あるいは外部を介することなく直接送受信をしても構わない。また、本発明においてサービスデータ保存領域109はなくても構わない。
SE101は、特定のサービスを実行管理するサービス領域103をもつ。SE101は署名のための暗号鍵ペア104を格納している。この暗号鍵ペア104は、SE101に共通でもよいし、サービス領域103に特定でもよい。サービス領域103は、このサービス領域103のサービスを管理するサービス管理者の証明書であるサービス管理者証明書105を格納している。サービス管理者証明書105はSE101に共通でもサービス領域103に特定でもよい。SE証明書110は、SEが特定のサービスを行いたい場合に、サービス管理者113から取得する、サービス実行時の認証に必要な証明書である。SE証明書110は不要なサービスもある。
ここで、サービス管理者証明書105とSE証明書とサービス領域103の関係であるが、サービスの形態によってその組合せは様々である。つまり、SE所有者が一つのサービスしか登録していない場合は、サービス領域103は(後述の領域追加[図3]の可能性を持たない場合は)一つであり、その場合、SE証明書110はなくても構わない。一方、複数のサービスを登録している場合は、サービス領域103は複数存在し、105と110の組合せにより、個々のサービスが特定できる。この場合でも、サービス管理者証明書105を発行するサービス管理者が管理するサービスが一つしか存在しない場合は、SE証明書110はなくても構わない。一方、同一のサービス管理者が管理しているサービスでも、サービス管理者証明書105をそれぞれ異なるものとしても構わない。
SEサービスアプリケーション106は、MEサービスアプリケーション102と通信し、サービスサーバ111の認証と、各サービスの処理によって定義されたサービスアイテム登録領域108へのデータ処理を実行する。サービスアイテム登録領域108は、サービス領域103に特定の情報を登録しておくための領域である。
通信相手格納領域107は、SEサービスアプリケーション106がサービスの処理を行う前にサービスサーバの認証を行い、そのサービスサーバの所有するサービスサーバ証明書が証明する値を格納しておく領域である。
SEサービスアプリケーション106は、サービスの処理であるサービスアイテム登録領域108のデータ操作を行う前にこの通信相手格納領域107の値を参照し、処理が許可されているか確認する。
サービス管理者113は、このSEを発行し、SE101を用いて提供するサービスを管理する。サービスサーバ111は、サービス管理者113からサービスサーバ証明書112を取得し、SE101にサービスを提供する。サービスサーバ111とME100は、有線でもよいが、無線公衆網、またはIrDA、Bluetoothなどのローカル無線を用いて無線通信してもよい。サービスサーバ111の例としては、POS端末、キオスク端末、自動販売機、ネットワーク上の仮想店舗、改札機、などがある。
このように、SEサービスアプリケーション106は、サービスアイテム登録領域108にアクセスする前に、認証処理を行ってサービス証明書に証明された権利を格納した通信相手格納領域107の値を参照して、合致する場合だけ処理を実行するため、サービス管理者113が発行したサービス証明書をもつサービスサーバのみがSE101のサービスアイテム格納領域108を用いたセキュアなサービスを実行できる。
図2は、サービス管理者113が発行するSE101のモデル図を示す。サービス管理者は、SE101を発行する。サービス管理者113は複数のサービス(201、202、203)を管理することができる。各サービスには、サービス内の役割に応じて複数の種類のサービスサーバ証明書112を発行することができる。サービスごとに、SE101内に、各サービス特定のサービス用領域(103a,103b,103c)をもつ。複数のサービス用領域(103a,103b,103c)をもつSE101を発行してもよい。サービス用領域103別にサービス管理者証明書105を発行してもよい。サービス用領域103別にSE証明書110を発行してもよい。サービス用領域103別に暗号鍵ペア104を発行してもよい。サービス管理者証明書105および暗号鍵ペア104はSE101に共通でもよい。また、サービスによっては、SE証明書110はなくてもよい。
このように、SE101上のサービスアイテム登録領域108にアクセスできるサービスサーバ111を制限する機能を設けることで、サービス管理者113がサービスサーバ111にサービスサーバ証明書112を発行し、サービスサーバ111がSE発行管理のコストを共有することが可能となる。
図3は、サービス管理者113が発行済みのSE101上に、サービス領域103を追加するサービスの実施例を示す。サービス管理者113dは、領域追加サービス301と他のサービス(302、303)を管理しているものとする。サービス管理者113dは、SE101に領域追加サービス301のみを作成して販売しても、領域追加サービス301と他の複数のサービス、例えばサービスF303を追加して販売してもよい。このSE101を購入したユーザは、たとえば、ネットワークなどを介してサービス管理者113dにアクセスし、サービスE302の申し込みをすると、SE101は、SE領域追加サービスアプリ106aを介して、領域追加サービス管理者証明書105を用いてサービス管理者を認証し、正しければ、新たにサービスE用領域103eを生成する。
このように、SEサービスアプリ106の一つとして、サービスを追加するための処理をするアプリ(SE領域追加サービスアプリ106a)として、SE発行時に提供しておけば、サービス管理者113は、発行後もネットワークを介してSE101上にセキュアにサービス領域103を追加作成できる。これにより、サービス管理者はSE101の発行をより柔軟に行えるようになる。ユーザも、必要なサービスだけを後から追加できるので、利便性が向上する。また、サービスサーバも、すでにユーザが所有しているSE101に、あとから開始したサービスを追加することができるので、市場が広がる。
図4にサービス管理者がチケットサービスの管理を行う場合のモデル図を示す。チケットサービスを提供するサービス管理者113gは、チケットサービス領域103gをもつチケットサービス用SE101gを発行する。また、チケット発行者向けの発行サーバ証明書112g−2と、チケット改札機向けの改札機証明書112g−1と、SE向けのSE証明書110gの、3種類のサービスサーバ証明書112を発行する。ここでSE用とは、SE間でチケットの移動する処理が可能なSEを意味する。SE間でチケットの移動ができなくてもよい場合には、SE証明書110gは発行しなくてよい。
改札機111g−1は、サービス管理者113gから改札機証明書112g−1を取得すると、SE101gのチケット登録領域108gに対して、チケットの改札に関連する処理のみ実行できる。発行サーバ111g−2は、サービス管理者113gから発行サーバ証明書112g−2を取得すると、SE101gのチケット登録領域108gに対して、新規チケットの発行、チケットの交換、返却、といった処理のみ実行できる。SE101gは、サービス管理者113gからSE証明書110gを取得すると、SE証明書110gを所有するSE101gとの間で、チケットの移動に関連する処理のみ実行できる。
このように、SE101gのチケット登録領域108gへのアクセスをサービス管理者から発行された発行サーバ証明書112g−2、改札機証明書112g−1、SE証明書110gの所有者のみに制限できる。また、複数の役割にわけてサービスサーバ証明書112を発行することで、サービスにおける役割に応じてチケット登録領域108gへの処理を制限できる。また、サービス管理者113gは、発行するサービスサーバ証明書112の種類により、発行手数料などを変えるといった柔軟な運営が可能となる。
<実施の形態2>
実施の形態2では、図5から図9を用いて、SE101とサービスサーバ111の認証の仕組みについて説明する。
図5は、SEの認証処理メッセージの例を示す図である。この認証処理メッセージは、大きく分けて、「認証開始」、「認証実行」、「通信終了」の3つからなる。認証実行で、認証に成功したら、通信相手格納領域107に、サービスサーバ証明書112により証明された権利を格納する。通信終了では、通信相手格納領域107の値を削除する。
このように、サービスアイテム登録領域108にアクセスするサービス独自の処理と、認証処理をわけることで、複数のサービス領域103をもつSE101の場合には認証処理を共通化し、無駄のない実装も可能となる。
図6は、SE101がサービスサーバの認証を行う場合のメッセージの例を示す図である。この認証処理動作においては、まず(1)で、ME100からSE101に認証の開始を要求するメッセージStartAccessが送信されると、SE101は、(2)で乱数Challengeを生成し、ME100に返す。ME100は、(3)で乱数Challengeをサービスサーバ111に送信する。サービスサーバ111は、乱数Challengeに署名をし(Sign_SErver(Challenge))、(4)で上記署名をした乱数(Sign_SErver(Challenge))をサービスサーバ証明書112(Cert_SErver)とともにME100に送る。ME100は、(5)で、サービスサーバ111から受信したSign_SErver(Challenge)とCert_SErverをSE101に送信する。Sign_SErver(Challenge)とCert_SErverをME100から受信したSE101は、サービス管理者証明書105を用いてCert_SErverを検証し、Challengeの署名と値を検証し、正しければ、Cert_SErverに証明されたサービスサーバ111の権利を通信相手格納領域107に格納する。その後SE101は、(6)において、処理の結果を通知するメッセージをME100に送信する。ME100は、(7)においてサービスサーバ111に認証結果を通知(Ack)してもよい。その後、サービス特有の処理を行う。サービスの処理が終了、または、通信の切断があった場合には、ME100は、(E1)においてSE101に通信終了のメッセージを送信する。これに対して、SE101は、(E2)において通信相手格納領域107の値を削除して、処理結果をME100に返す。
図7は、SE101とサービスサーバ111が相互認証を行う場合のメッセージの例を示す図である。
この相互認証処理動作においては、(3)までは、図6と同じである。(4)で、Sign_SErver(Challenge)とCert_SErverに加え、サービスサーバ111からME100へ乱数Challenge_2を送信する。ME100は、(5)で、サービスサーバ111から受信した乱数Challenge_2,Sign_SErver(Challenge)とCert_SErverをSE101に送信する。これらのパラメータを受信したSE101は、サービス管理者証明書105を用いてCert_SErverを検証し、Challengeの署名と値を検証し、正しければ、Cert_SErverに証明されたサービスサーバ111の権利を通信相手格納領域107に格納する。加えて、(6)で、乱数Challenge_2に署名をして(Sign_SE(Challenge_2))、SE証明書110(Cert_SE)とともにME100に送信する。ME100は、これらのパラメータを(7)でサービスサーバ111へ送信する。これらのパラメータを(7)で、受信したサービスサーバ111は、Cert_SEを検証し、Challenge_2の署名と値を検証する。サービスサーバ111は、(8)においてME100に対して処理結果を通知(Ack)してもよい。またME100は、(9)においてSE101に対して処理結果を通知(Ack)してもよい。その後の通信終了処理は図6と同じである。すなわち、サービスの処理が終了、または、通信の切断があった場合には、ME100は、(E1)においてSE101に通信終了のメッセージを送信する。これに対して、SE101は、(E2)において通信相手格納領域107の値を削除して、処理結果をME100に返す。
図8は、公開鍵暗号を使ったサーバ認証処理のメッセージ例を示す図である。このサーバ認証処理動作においては、まず、サービスサーバ111からME100を介して、SE101にサービスサーバ証明書112(Cert_SErver)を送信する((1)と(2))。SEは、送信されたCert_SErverから取得した公開鍵で、生成した乱数ChallengeとSE証明書110(Cert_SE)を暗号化し、サービスサーバ111に送り返す((3)と(4))。サービスサーバ111は、メッセージを復号化し、Cert_SEから取得したSEの公開鍵でChallengeを暗号化してME100を介してSE101に送信する((5)と(6))。SE101は処理の結果を通知してもよい。通信終了処理((E1)と(E2))は図6と同じである。
図9は、公開鍵暗号を使った相互認証処理のメッセージ例を示す図である。この相互認証処理動作においては、(4)のメッセージまでは、図8と同様である。(5)のメッセージで、Challengeと、サービスサーバ111からSE101への乱数Challenge_2に、SEの公開鍵で暗号化して送信する。SE101は、メッセージを復号化し、Challengeを検証し、Challenge_2をサービスサーバ111の公開鍵で暗号化して送信する((7)と(8))。通信終了処理((E1)と(E2))は図6と同じである。
このように、サービス管理者113が発行したサービスサーバ証明書112を用いて、SE101と認証を行うことにより、SE101へのアクセスを制限できる。
<実施の形態3>
実施の形態3では、図10から図22を用いて、セキュアモバイルサービスシステムを用いたチケットサービスについて説明する。実施例1では、図10と図11を用いてチケットデータの説明を、実施例2では、図12から図16を用いてチケットダウンロードの説明を、実施例3では、図17を用いて格納してあるチケットデータの格納を証明する処理の説明を、実施例4では、図18と図19を用いてチケット改札処理の説明を、実施例5では、図20から図22を用いてチケット移動処理の説明をする。
(実施例1)
図10と図11を用いてチケットデータとSE101への格納について説明する。まず、図10を用いてチケットデータについて説明する。チケットデータ1000(Ticket)は、改札必須部1001(Ticket_Variable)、チケット固定部1004(Ticket_S)、発行情報部1005(Issuer_Info)、改札情報部1006(Punch_info)からなっている。各部は共通のチケットID(TicketID)をもつ。改札必須部1001(Ticket_Variable)は、改札必須情報1002(TicketVariable)と、それに対する署名1003からなっている。署名1003は、SE101の署名でも、改札機111g−1の署名でも、発行者111g−2の署名でもよい。改札必須部1001は、チケットID(TicketID)、有効回数(ValidTime)、有効期限(ValidPeriod)、その他の改札に必須な情報(otherInfo)が含まれる。その他の改札に必須な情報(otherInfo)には、例えば、電車切符では、入場駅とその時刻などが入る。このように改札処理に必須な情報は、有効回数・有効期限など時間的な情報や、入場駅・コンサート会場など空間的な情報が、その改札処理の内容に応じて適宜含まれる。
チケットデータ1000(Ticket)において、改札必須部1001(Ticket_Variable)は必須であるが、チケット固定部1004(Ticket_S)、発行情報部1005(Issuer_Info)、改札情報部1006(Punch_info)はなくてもよいし、複数あってもよい。
チケット固定部1004(Ticket_S)は、チケトの固定情報(TicketStatic)に発行サーバ111g−2が署名をしたものである。チケットの固定情報(TicketStatic)には、このチケットに関する情報、ユーザへの表示情報などが含まれる。
発行情報部1005(Issuer_info)は、追加情報(additionalInfo)に発行サーバ111g−2が署名をしたものである。追加情報(additionalInfo)には、発行者から発信されるこのチケットへの追加情報、また、このチケットをもつユーザへの他のサービス案内などが含まれる。発行情報部1005(Issuer_Info)は、発行時にチケットに含まれることもあれば、後から発行者からメールで送信されたり、ユーザがダウンロードすることで追加できる。
改札情報部1006(Punch_info)は、追加情報(additionalInfo)に改札機111g−1が署名をしたものである。追加情報(additionalInfo)には、改札機からの追加情報、例えば、改札のログ記録だけでなく、コンサートであれば、最新のキャストであるとか、遊園地であれば、各アトラクションの混雑情報などの情報が考えられる。
以上の内容を、以下のように記述する。
チケットデータ:Ticket=Ticket_S,Ticket_V,Punch_info,Issuer_Infoチケット固定部:Ticket_S=Sign_Issuer(TicketStatic)改札必須部:Ticket_Variable=Sign_Issuer(TicketVariable)またはSign_Verifier(TicketVariable)、またはSign_SE(TicketVariable)発行情報部:Issuer_Info=Sign_Issuer(additionalInfo)改札情報部:Punch_info=Sign_verifier(additionalInfo)改札必須情報:TicketVariable=TicketID,Validtime,ValidPeriod,otherInfo。
このように、チケットデータ1000は、共通のチケットIDをもつ発行サーバ111g−2、SE101g、改札機111g−1の署名付きデータから成り立っており、増減も柔軟に行える構造になっている。
次に、図11を用いてチケットデータのSE101へ格納について説明する。SE101gへチケットデータ1000(Ticket)の格納処理が成功すると、改札必須情報1002(TicketVariable)がチケット登録領域(108g)に格納され、チケットデータ1000(Ticket)はチケット保存領域109gに格納される。
このように、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に格納することで、チケットデータ1000(Ticket)をタンパレジスタントでないメモリ上に格納する場合にも、暗号化する必要がない。理由は、チケット登録領域(108g)に格納されていることを証明するメッセージなしには、改札処理はできないので、コピーしたチケットは使えないからである。
そのため、ユーザがチケットデータ1000(Ticket)を自由にコピーしたり、メールに添付して友人に送信することができる。友人にチケットを譲りたいとき、まずチケットをメールなどで送信して友人がデータを見てから実際のチケット移動の処理を行うことができる。
また、チケット発行時も、発行サーバ111g−2は、発行情報部1005(Issuer_Info)に、このチケットは指定された期間内に支払いを済ませると有効になりますという旨の情報と支払いのアクセス先などを含む情報を記載しておく。そして、チケットデータをユーザにメールなどで送信する。このチケットデータ1000を購入したいユーザは発行情報部1005(Issuer_Info)に記載された情報どおりに支払い処理を済ませると、SE101のチケット登録領域108gへの登録処理が実行され、有効なチケットとなる。その登録処理のときには、チケットデータ1000(Ticket)のダウンロードは不要で、登録処理のみを行えばよい。
これにより、発行サーバ111g−2は、チケットのプロモーションの自由度が上がる。また、発行サーバ111g−2は、支払い前の整理券と支払い後のチケットを別に発行管理する必要がない。
(実施例2)
図12から図16を用いてチケットダウンロードを説明する。このチケットダウンロードの前に、注文や購入の処理があってもよい。PUSHサービスのようにサーバからアクセスがあってもよい。ダウンロード処理開始の前に、発行サーバ111g−2とME100gでチャレンジ・レスポンスなどによる認証を行ってもよい。実施の形態2に説明した認証方法を用いてもよい。
図12は、SE101gと発行サーバ111g−2で行う処理のためのインターフェイスの例を示す図である。大きく3つの機能がある。新規チケットのチケット登録領域108gへの登録、チケット登録領域108gへ登録されていることの証明、チケット登録領域108gへ登録されているチケットの変更である。このうち、チケット登録領域108gへ登録されているチケットの変更については、実施例3で説明する。
図13は、新規チケットをダウンロードしてチケット登録領域108gへ登録する処理のメッセージ例を示している。この図では、実施の形態2に説明した認証処理はすでに成功したことを前提としている。また、発行サーバ111g−2とME間はトランスポート層のセキュア通信路が確保されているものとする。
まず、発行サーバ111g−2からME100gを介してSE101gにチケットデータ1000が送信され((1)と(2))、SE101gは、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する。SE101gは登録処理結果を通知してもよい((3)と(4))。
図14は、SE101gが登録処理結果の通知に、署名付きメッセージを送る例を示す図である。この図では、実施の形態2に説明した認証処理はすでに成功したことを前提としている。また、発行サーバ111g−2とME間はトランスポート層のセキュア通信路が確保されているものとする。
まず、発行サーバ111g−2からME100gを介してSE101gにチケットデータ1000と乱数Challengeが送信され((1)と(2))、SE101gは、チケットデータ1000を検証し、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する。チケットの検証はME100gで行ってもよい。SE101gは、チケット登録要求に対する応答であるということを示すフラグと、登録した改札必須情報1002(CurrentTicketVariable)と、Challengeに署名をして(Sign_SE(REGISTERTICKET,CurrentTicketVariable,Challenge))、送り返す((3)と(4))。発行サーバ111g−2は、SEの署名を検証し、CurrentTicketVariableとChallengeの値を検証する。ME100gは、(4)送信後にチケットをチケット保存領域109gに保存してもよい。
このように、発行サーバ111g−2は、SE101gに登録された改札必須情報1002(CurrentTicketVariable)を確認することができる。また乱数Challengeが含まれているので、現在の登録情報であることが確認できる。
図15は、配信鍵を用いたダウンロードメッセージの例を示す図である。この例では、配信鍵(key_Deliver)でチケットデータ1000を暗号化し、配信鍵(key_Deliver)をSE101の公開鍵104dで暗号化して、発行サーバ111g−2からSE101にダウンロードする((1)と(2))。SE101gは、配信鍵を復号化してから、チケットデータ1000を復号化して、チケットの検証を行ってから、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する((3))。(4)で、ME100gは、SE101gから復号化したチケットを受け取ると、チケットをチケット保存領域109gに保存する。
図16は、公開鍵暗号を用いたダウンロードメッセージの例を示す図である。この例では、まず、ME100gから発行サーバ111g−2にSE証明書110gを送信する(0)。発行サーバ111g−2は、乱数Challengeとチケットデータ1000をSE101の公開鍵で暗号化して送信する((1)と(2))。
(実施例3)
図17を用いて、チケット登録領域108gに登録してあるチケットデータを証明する処理を説明する。図17では、発行サーバ111g−2が、SEから通信エラーなどにより登録処理に失敗したことなどによるチケットの再登録要求を受信したときに、ほんとうにチケット登録領域108gに登録されていないのか確認する処理を示す。SE101gは、発行サーバ111g−2からチケットIDとChallengeを受信し((1)と(2))、チケット登録領域108gから対応するチケットIDを検索し、登録されていれば、現在の登録データ(CurrentTicketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして(Sign_SE(PROVETICKET,CurrentTicketVariable,Challenge))、発行サーバ111g−2に送信する((3)と(4))。発行サーバ111g−2は、署名を検証し、CurrentTicketVariableとChallengeの値を検証する。
このように、この機能を用いることで、発行サーバ111g−2は、SE101gから再登録要求が来た場合にも本当に登録に失敗したのか確認できる。また、この機能があるため、発行時のダウンロード処理では、図14に示すメッセージ(3)と(4)は省略して高速化することができる。
発行サーバ111g−2だけでなく、改札機111g−1も、サポートするするチケットがあるか確認したいときに使用することができる。
この例では、チケットIDを指定したが、チケットIDをパターンマッチ指定して一度に複数の登録証明を取得することも考えられる。
また、この例では、現在の登録データ(CurrentTicketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして返すが、チケットIDのみ、またはチケットIDとChallengeのみなどといったことも考えられる。
また、サービスサーバ111の種類によってデータの種類が変わることも考えられる。例えば、発行サーバ111g−2には、現在の登録データ(CurrentTieketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして返し、改札機には、チケットIDとChallengeと登録証明要求に応答するメッセージであることを示すフラグに署名をして返すことも考えられる。署名データには、登録証明要求に応答するメッセージであることを示すフラグが含まれているので、他の処理には用いることができない。
この機能により、サービスサーバ111は、サービスアイテム登録領域108gに登録されている内容を変えることなく、現在の登録データを知ることができる。
(実施例4)
図18と図19を用いてチケット改札処理を説明する。図18はチケット改札処理のメッセージの例を示す図である。この例では、まず、改札機111g−1は、改札命令(Punch_Order)を生成する。改札命令(Punch_Order)は、PunchOrderに改札機11g−1の署名をつけたデータである。ここでは、PunchOrderは、改札後の改札必須情報の値(UpdatedTicketVariable)を指定するものとする。この他にも、増減する料を指定する方法も考えられる。
まず、改札機111g−1は、改札命令(Punch_Order)と乱数Challengeと改札情報部1006(Punch_Info)をME100gに送信する((1))。ME101gは改札情報部1006をSE101gに送らなくてもよい。SE101gは、(2)で受信した改札命令(Punch_Order)の署名を検証し、改札命令(Punch_Order)で指定された通りにチケット登録領域108gに登録してある対応するデータを更新する。SE101gは、更新後のチケット登録領域に登録されたデータ(CurrentTicketVariable)と、乱数Challengeと、変更要求に応答するメッセージであるということを示すフラグに署名したデータ(Sign_SE(VERIFYTICKET,CurrentTicketVariable,Challenge))と、乱数Challenge_2を改札機111g−1に送信する((3)と(4))。改札機111g−1は、署名を検証し、CurrentTicketVariableとChallengeの値を検証し、乱数Challenge_2とPunchOrderと変更要求に応答するメッセージに確認するメッセージであるというフラグに署名してSE101gに返す((5)と(6))。ここで、PunchOrderはふくめなくてもよい。また、変更要求に応答するメッセージに確認するメッセージであるというフラグは含めなくてもよい。また、(3)と(4)において、Challenge_2はなくてもよい。この場合、(5)と(6)はなくてもよい。
図19に改札処理の前と後のチケットの格納モデルを説明する。この例では、まず、改札前の状態として、チケット登録領域108gに改札必須情報部1002aが登録されており、チケット保存領域109gに、チケットデータ1000の一部として、チケット固定部1004と改札情報必須部1003aと発行情報部1005が格納されている。登録されているチケットデータ1000は、改札情報必須部1003を持たなくてもよいし、発行時のまま保持していてもいいし、登録更新ごとに、SE101gの署名データに置き換えてもよいし、改札機111g−1から送信されたPunch−orderに置き換えても良い。ユーザにチケットデータ1000の状態を表示するには、チケット登録領域108gの情報を提供するのが望ましい。この例では、改札後に、チケット登録領域108gに改札必須情報部1002bが更新されると、改札情報必須部1003bも、更新されている。そして新たに改札情報部1006(Punch_Info)が追加されている。一度の改札で、複数の改札情報部1006(Punch_Info)が追加されることも考えられる。
(実施例5)
図20から図22を用いてSE間でチケットを移動する処理の説明をする。この処理動作では、ひとつのチケット全体(有効な価値すべて)を移動するほかに、例えば回数券だったら、残り有効回数のうちn回を移動、といった処理も可能である。
図20は、SE間のチケット移動処理のSEのメッセージの例を示す図である。大きく2つあり、一つ目は他のSEから移動されたチケットの登録、2つ目は、他のSEへ移動したチケットの削除(または更新)である。
図21は、SE間でチケットが移動するメッセージの例を示す図である。図21において、チケットの登録元のMEをME1(100g−1)、チケットの移動先のMEをME2(100g−2)とする。同様にチケットの登録元のSEをSE1(101g−1)、チケットの移動先のSEをSE2(101g−2)とする。また、図21では、SE間の相互認証は成功したものとする。
まず、ユーザが移動するチケットを指定し、移動処理の確認操作をすると、ME1(100g−1)は、移動させるサービスアイテムMoveOfferを生成する。ここでは、MoveOfferは、チケット移動先のチケット登録領域108gに登録される改札必須情報(MovedTicketVariable)とする。他にも、SE1に残す改札必須情報(TicketVariable)の値を指定する方法なども考えられる。MoveOfferには、チケットIDが含まれる。SE1は、(1)でMoveOfferを受け取ると、MoveOfferに指定されたサービスアイテムを、チケット登録領域108gに登録されている改札必須情報(TicketVariable)から移動する。MoveOfferの値が現在の改札必須情報(CurrentTicketVariable)に等しい場合、チケット登録領域108gから削除してもよい。SE1は、MoveOffer通りにチケット登録領域108gに登録されている改札必須情報(TicketVariable)を移動したことを示すメッセージとして、MoveOfferと、乱数Challengeと移動した処理を示すメッセージであるということを示すフラグに署名をして(Sign_SE(MOVEOUTTICKET,MoveOffer))、SE2に送信する((2)と(3)と(4))。続いて、SE2は署名を検証し、MoveOfferに指定されたとおりにSE2のチケット登録領域108gに登録する。そして、登録した改札必須情報とChallengeと移動処理に応答するメッセージであること示すフラグに署名した(Sign_SE(MOVEINTICKET,current_TicketVariable,Challenge))ものと乱数Challenge_2をSE1に返す((5)と(6)と(7))。SE1は、署名を検証し、current_TicketVariableとChallengeの値を検証し、正しかったら、Challenge_2に署名をしてSE2に返す((8)と(9)と(10))。
SE1は、(7)がないと移動処理を完了できず、移動処理はキャンセルされ、もとに戻る。SE2は、(10)がないと、移動処理を完了できず、移動処理はキャンセルされ、もとに戻る。
このように、移動元のSE101が、登録されている価値から移動する価値情報を減らしてから、すでに移動したことを証明するデータ(例えば、移動したサービスアイテムに署名をつける)を移動先に送信し、移動先のSEはそのすでに移動したことを証明するデータに基づいて、登録処理を行い、登録したことを証明するデータ(例えば、登録した内容に署名をつける)を移動元のSEに送り返すことで、移動元のSEは移動処理を完了できる。また、移動元のSEの移動処理完了を証明するデータを受信すると、移動先のSEも処理を完了する。
この結果、SE1とSE2の2つともに同時にサービスアイテムが存在することなく、SE間のサービスアイテムの移動が可能となる。
図22に公開鍵暗号方式を用いた譲渡処理動作のモデル図を示す。この処理動作では、メッセージの内容は、図21とほぼ同じだが、メッセージを公開鍵暗号で暗号化して通信している。
<実施の形態4>
実施の形態4では、図23から図25を用いて、認証処理とチケットサービス独自の処理のメッセージを結合した実施例を示す。図23は、サーバ認証とチケットダウンロード処理の混合処理のメッセージ例を示す図である。この図は、図6と図13を結合したメッセージの例を示すもので、図23の(4)、(5)、(6)において、図6の(4)、(5)、(6)と図13の(1)、(2)、(3)を統合した。また、図23の(4)において、チケットデータ1000の改札必須部1001にChallengeを含めて発行することで、SE101gでChallengeを受信した先から来たチケットであるという検証ができる。図23の(5)のメッセージは、チケットデータ1000を送っても、改札必須部1001のみを送信してもよい。
これにより、サーバ認証とチケットのダウンロード処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
図24は、サーバ認証とチケット改札処理の混合処理のメッセージ例を示す図である。この図は、図6と図18を結合したメッセージ例で、図24の(4)、(5)、(6)において、図6の(4)、(5)、(6)と図18の(1)、(2)、(3)を統合した。図24の(4)において、Punch_OrderにChallenge_0を含めて発行することで、SE101gでChallengeを受信した先から来た更新要求であるという検証ができる。
これにより、サーバ認証とチケットの改札処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
図25は、相互認証とSE間のチケット移動処理の混合メッセージの例を示す図である。この図は、図7と図21を結合したメッセージ例を示しており、図7の(4)から、図6の(4)と図18の(1)を統合した。図25では、SE証明書110を(2)で送信しているが、(8)で送信してもよい。
この図では、移動先のユーザが移動処理開始の操作をすると移動処理用の認証処理が移動元のME1に、送信され、そこで移動元のユーザが移動処理開始操作を行うことで、処理が続行する例を示している。
図25の(4)において、Move_OfferにChallenge_0を含めて発行することで、SE101gでChallengeを受信したSEから来た移動済み証明であるという検証ができる。これにより、サーバ認証とチケットの移動処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
以上のように、署名とChallengeを用いたメッセージを交換しあうことで、認証を行うと同時にメッセージデータの再利用防止し、署名付きメッセージで否認を防止することもできる。その結果、より少ないメッセージでもセキュアに処理を行うことが出来る。
<実施の形態5>
実施の形態5では、図26から図28を用いて、処理能力の低いSEを用いた実施例を示す。図26から図28は、それぞれ図23から図25のメッセージ例に対応する。
処理能力が高く、安いSEが普及するまでは、それほど処理能力の高くないSEを使わなければいけない。そのため、SEで行うべき処理をMEで肩代わりし、最低限守るべき処理のみをSEで行う実施例を以下に示す。市場に、処理能力の高くないSEと高性能なSEが混在しても、サービスサーバのインターフェイスが共通であることが望ましい。
この実施の形態では、証明書の検証、署名の検証はMEで行い、Challengeの検証、チケット登録領域へのアクセスはSEで行う例を示す。図26は、図23に相当するダウンロード処理の例を示す図である。この図26では、ME100gで、発行サーバ証明書112g−2の検証、チケットの検証を行っている。
図27は、図24に相当する改札処理のメッセージ例を示す図である。この図27では、ME100gで、改札機証明書112g−1の検証、Punch_Orderの検証を行っている。
図28は、図25に相当するSE間のチケット移動処理のメッセージ例を示す図である。この図28では、同様に、譲渡元と譲渡先のME100gで、証明書の検証とメッセージ署名の検証を行っている。これにより、処理能力が高いSEが普及するまでは、SEの処理をMEで実行し、処理能力の高いSEが普及していく移行期には、多様な性能なSEが混在するが、サービスサーバ側のインターフェイスは変えずに対応することができる。
<実施の形態6>
実施の形態6では、図29から図31を用いて、通信路のトランスポート層の暗号化がない場合におけるチケット処理を説明する。通信路の暗号化がないと、乱数が盗み見され、成りすましが可能となる。そこで、乱数のみ公開鍵暗号を用いて送信する例について説明する。このほかに、共通鍵を用いることも考えられる。
図29を用いてチケットのダウンロード処理について説明する。まず、発行サーバ111g−2からSE101gに、発行サーバ証明書112g−2を送信する((1)と(2))。SE101gは、送信された証明書を検証し、正しい発行サーバ証明書だった場合、通信相手格納領域に登録する。また、乱数Challengeを生成し、発行サーバの公開鍵で暗号化し(Encrypt_Issuer{Challenge})、送り返す((3)と(4))。
発行サーバ111g_2は、Encrypt_Issuer{Challenge}を復号化し、Challengeを取り出す。改札必須情報1002にChallengeを含め、発行サーバの署名をつけて、チケットの改札必須部1003(Ticket_V)を生成する。あらかじめ生成しておいたチケットの他の部分と合わせてチケットデータ1000(Ticket)とし、送信する((5)と(6))。MEはTicketをそのままSEにおくってもよい。チケットデータ1000の改札必須部1003のみ送ってもよい。
SEは、改札必須部1003の署名を検証し、正しければ、TicketVariableの値をチケット登録領域108gに登録する。処理が成功した場合、処理成功通知を発行サーバに送る((7)と(8))。(7)と(8)は署名付きデータでもよい。(7)と(8)は、現在登録されている改札必須情報を証明するSEの署名付きデータでもよい。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットのダウンロードがセキュアに行えるようになる。
図30を用いてチケットの改札処理について説明する。まず、改札機111g−1からSE101gに、改札機証明書112g−1を送信する(1)。MEは、改札するチケットのチケットIDと、改札機証明書112g−1を送信する(2)。チケットIDは、改札機111g−1から送信されてもよいし、ユーザ操作によりMEで付加してもよい。
SE101gは、送信された証明書を検証し、正しい改札機証明書だった場合、通信相手格納領域に登録する。また、乱数Challenge_0を生成し、改札機の公開鍵で暗号化する(Encrypt_Verifier{Challenge_0})。SEは、指定されたチケットIDに対応するチケット登録領域に登録されたチケット情報(CurrentTicketVariable)と、CurrentTicketVariableで指定されたチケットを発行サーバに提示するメッセージであることを示すフラグとを含むデータに署名をする(Sign_SE(SHOWTICKET,CurrentTicketVariable))。
また、Encrypt_Verifier{Challenge_0}とSign_SE(SHOWTICKET,CurrentTicketVariable)とSE証明書をとともに送り返す((3)と(4))。ここで、SE証明書は、SE公開鍵でもよい。
改札機111g−1は、Encrypt_SE(Challenge_0)を復号化してChallenge_0をとりだす。また、Sign_SE(SHOWTICKET,CurrentTicketVariable)の署名を検証し、使用可能なチケットかどうか判断する。使用可能な場合、Punch_Orderを生成する。Punch_Orderは、PunchOrderに改札機の署名をつけたものだが、この実施例では、チケットIDや、改札後の例えば有効期限や残り回数などの値である情報に加えて、Challenge_0を含めたデータに改札機の署名をしたものを意味する。ここでは、PunchOrderは、改札後のチケットの改札必須情報を指定する。改札後また、必要であれば、Punch_Infoを生成する。Punch_Infoはなくてもよい。複数あってもよい。また、Challengeを生成し、SEの公開鍵で暗号化する(Encrypt_SE(Challenge))。これら改札機で生成したデータである、Punch_Order、Punch_Info、Encrypt_SE(Challenge)をSEに送信する((5)と(6))。
SE101は、Encrypt_SE(Challenge)を復号化して、Challengeを取り出す。また、Punch_Orderの署名を検証する。PunchOxderに含まれるChallenge_0と、(3)で送信したChallenge_0を検証し、正しかったら変更処理を行う。チケット登録領域108gの、PunchOrderに指定されたチケットIDのデータを、PunchOrderに指定されたデータに書き換える。チケット登録領域108gで更新後の改札必須情報(CurrentTicketVariable)と、Challengeと、チケット登録領域108gのデータ更新を証明するデータであるということを示すフラグ、を含めたデータにSE101gの署名をして、改札機111g−1に送り返す((7)と(8))。
改札機111g−1は、Challengeを(5)で送った値と比較し、正しかったら、CurrentTicketVariableと(5)で送ったPunchOrderを比較する。このメッセージを証明として保存しておいても良い。正しかったら、CurrentTicketVariableの値に変更されたことを確認したという証明として、CurrentTicketVariableと、変更されたことを確認したという証明であるということを示すメッセージを含むデータに、改札機111g−1の署名をして(Sign_SE(VERIFYTICKETCONF,CurrentTicketVariable))送り返す((9)と(10))。
SE101gは、Sign_SE(VERIFYTICKETCONF,CurrentTicketVariable)の署名を検証し、CurrentTicketVariableと、(7)で送った値を比較して、正しかったら変更処理完了。このメッセージを変更確認の証明として保存しておいてもよい。
このあと、改札機111g−1は、(11)と(12)で処理成功通知(ACK)を受信したのち、ユーザにサービスを提供してもよいし、(11)と(12)はなくてもよい。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットの改札処理がセキュアに行えるようになる。
図31を用いてチケットの移動処理について説明する。このチケットの移動処理において、移動元ME1は、どのチケット価値のどのくらい移動するのかを示す情報であるMoveOfferを生成する。ユーザが入力して決めてもよいし、相手から指定されるのでも良い。MoveOfferは、移動先のチケットの、チケットIDと有効期限や回数などを含む改札必須情報となる。MoveOfferは、(4)のメッセージを送信する前までに作成すればよい。
まず、移動元ME1は移動元SE1からSE1証明書を取得し((1)と(2))、移動先SE2に送信する((3)と(4))。
移動先SE2は、SE1証明書を検証し、正しかったら、通信相手格納領域に登録する。また、乱数Challenge_0を生成し、SE1の公開鍵で暗号化し(Encrypt_SE1(Challenge_0))、SE2証明書とともに送り返す((5)と(6))。移動元ME1は、Encrypt_SE1(Challenge_0)、SE2証明書に加えて、MoveOfferをSE1に送信する(7)。
SE1は、SE2証明書を検証し、正しかったら、通信相手格納領域に登録する。また、Encrypt_SE1(Challenge_0)を復号化する。
また、MoveOfferに指定されたチケットIDのデータをチケット登録領域に登録されているデータと比較して検証してもよい。例えば有効期限などは、MoveOfferの方が長くないか検証してもよい。また、有効回数であれば、MoveOfferの回数の方が多くないか検証してもよい。MoveOfferと現在のチケット登録領域のデータ(CurrentTicketVariable)と、Challenge_0と、指定したチケットの価値が移動してもよいことを証明するデータであることを示すフラグを含むデータにSE1の署名をするSign_SE(MOVEOUTTICKET,MoveOffer,CurrentTicketVaxiable,Challenge_0)。
また、乱数Challengeを生成する。Challengeを、チケット登録領域108gの更新したチケットIDに対応するデータとして格納してもよい。ChallengeをSE2の公開鍵で暗号化するEncrypt_SE2(Challenge)。
SE1は、SE2に、Sign_SE(MOVEOUTTICKET,MoveOffer,,CurrentTicketVariable,Challenge_0)とEncrypt_SE2(Challenge)を送信する((8)と(9)と(10))。SE2は、Encrypt_SE2(Challenge)を復号化する。また、Sign_SE(MOVEOUTTICKET,MoveOffer,Challenge_0)の署名を検証する。Challenge_0と(5)で送った値とを検証する。正しければ、MoveOfferの情報をチケット登録領域108gに登録する。SE2のチケット登録領域108gに登録後の改札必須情報(CurrentTicketVariableSE2)と、CurrentTicketVariableSE2で指定したとおりに登録したことを証明するメッセージであることを示すフラグと、Challengeを含むデータに、SE2の署名をして(Sign_SE2(MOVEINTICKET,CurrentTicketVariableSE2,Challenge))、SE1に送信する((11)と(12)と(13))。
SE1は、Sign_SE2(MOVEINTICKET,CurrentTicketVariableSE2,Challenge)の署名を検証する。また、Challengeと(7)で送信した値を比較する。正しかった場合、CurrentTicketVariableSE2と(7)で送ったMoveOfferを検証する。正しかった場合、MoveOfferに回数があれば、指定された回数を減らすなどして、MoveOfferの価値だけ移動した後の価値になるようチケット登録領域のデータを変更する。
現在の改札必須情報(CurrentTicketVariableSE1)に、移動後のデータはCurrentTicketVariableSE1であるように移動処理を完了したことを証明するメッセージであることを示すフラグ、を含むデータに署名して(Sign_SE1(MOVEOUTCONF,CurrentTicketVariableSE1))、SE2に送信する((13)と(14)と(15))。
SE2は、Sign_SE1(MOVEOUTCONF,CurrentTicketVariableSE1)の署名を検証する。正しければ、CurrentTicketVariableSE1を(10)で受信したMoveOffer,CurrentTicketVariableの値と比較検証する。正しければ、処理成功通知(ACK)を送信し((16)と(17)と(18))、移動処理は完了する。この処理が成功しないと、移動処理はキャンセルされ、移動処理により登録されたチケットはキャンセルされる。処理成功通知は、SE2の署名付きデータでもよい。
SE1はSE2から処理成功通知(ACK)を受信すると、移動処理を完了する。処理成功通知を受信しないと移動処理はキャンセルされる。
この実施例では、SE1については、(8)のメッセージ送信前に実際の移動処理は行われず、(14)のメッセージ送信前に移動処理が実行されたが、(8)のメッセージの前に、実施の形態3の実施例に示す処理フローを追加することで、(8)のメッセージ送信前に実際の移動処理を行うことも考えられる。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットの移動処理がセキュアに行えるようになる。また、通信路のトランスポート層の暗号化がない場合にも、大容量の暗号化を用いずに、セキュアなサービス処理が可能となる。
<実施の形態7>
実施の形態7では、図32から図34を用いて、通信路のトランスポート層の暗号化がない場合における処理能力の高くないSEを使ったチケット処理を説明する。実施の形態6ではSEで行っていた証明書の検証、乱数の暗号化、復号化、署名検証といった処理を、実施の形態7ではMEで行うことを特徴とする。
図32は、実施の形態6における図29に相当するダウンロード処理の例を示す図である。図33は、図30に相当する改札処理の例を示す図である。図34は、図31に相当するSE間のチケット移動処理の例を示す図である。
実施の形態7では、SEは、乱数の生成、乱数の検証、チケットの登録、署名の生成を行っているが、さらに処理を簡素化し、SEではチケットの登録、署名の生成のみを行うことも考えられる。
このように、通信路のトランスポート層の暗号化がない場合にも、SEの性能に応じてMEとの処理分担を調整することで、実施の形態7が目指す世界への移行期においても、サーバ側のシステムは変更することなくサービスを続けることができる。
<実施の形態8>
実施の形態8では、図35から図39を用いて、証明書を用いた相互認証処理を含む実施例を示す。それぞれ、図35は図23、図36は図17、図37から図38は図24、図39は図25のメッセージ例に対応する。一部表記が変わっているが、それぞれIssuerは、図23の発行サーバ111g−2をあらわす。Randomは、図23のChallengeに相当する。TicketVは、改札必須情報1002に相当し、チケットIDや、有効度数、有効期限など改札処理に必須な情報を示す。
また、TicketIDは、このチケット処理を行うチケットアプリケーション種別を示すチケットシステムID、イベントチケットや回数券などといったチケットタイプID、特定のイベントなどを示すチケット種別ID、通し番号などのようにチケット一枚一枚ユニークに振られたシリアル番号など、何種類かあり、またこの組み合わせで指定することができる。こうすることで、場所や状況に応じ、確認したいチケットを効率的に特定することができる。
図35は、図23に相当するダウンロード処理の例を示す。図35では、図23に加えてメッセージ(1)から(3)で、サーバがSEを認証する処理を行っている。これにより、正しいSEにチケット登録処理を行うことができる。
図35では、SEに対するプリミティブが以下に示すように2つある。ダウンロード処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(ダウンロード処理のプリミティブ1)
プリミティブ名…StartRegistration
入力:(2)のメッセージ…Cert_Issuer,Random1
出力:(3)のメッセージ…Sign_SE(STARTREG,Random1),Random2
処理…入力された発行サーバ証明書112g−2(Cert_I)を検証する。正しければ、署名目的と入力された乱数に署名をしたデータ(Sign_I(STARTREG,Random1))と、あらたに生成した乱数(Random2)を返す。証明書の公開鍵と乱数の値(Random2)は格納しておく。
(ダウンロード処理のプリミティブ2)
プリミティブ名…Registration
入力:(6)のメッセージ…Sign_I(TicketV,Random2)
出力:(7)のメッセージ…ACK
処理…Random2をStartRegistrationで生成した乱数(Random2)と照合し、正しければ、入力されたデータの署名を、StartRegistration取得した公開鍵で検証する。正しければTicketVを格納する。正常に処理が終われば、ACKを返す。
(3)には、図23と同様に発行されるチケットに含まれることとなるRandom2が含まれる。このSE101g−1で生成したRandom2を、発行するチケットの改札必須情報1002に含めて署名生成しているため、通信中のチケットデータ1000の差し替えを阻止できている。理由は、Challenge値が重複することは確率的に無視できることに加え、Challengeが異なると署名は異なり、発行サーバの秘密鍵を知らない人間には署名が作成できないため、同じ署名になることもなく、どこかでコピーした値に差し替えることは出来ないからである。チケットデータ1000だけ盗聴しても、そこに含まれるRandom2を生成したSE101g−1しか、そのチケットを登録できないセキュアな処理となっている。
また、(3)の署名つき乱数にも、署名の目的(ここでは、チケットの登録開始のための認証処理)が含まれるので、悪意のあるユーザが、このメッセージを他の目的で再利用することができなくなっている。
ME100g−1では、(5)受信時に、改札必須部1001の検証はSEに任せるが、その他の例えば、チケット固定部1004の検証はMEで行う。このように、処理を分散し、SEでの処理を最小限にすることで、早い処理が可能となる。チケット固定部1004の署名検証を偽っても、実害のない嫌がらせにしかならないので、チケット固定部には署名をつけない場合もある。こうすることで、チケットデータ長を短縮でき、また、チケット固定部1004の署名検証処理をしなくて済む。
図36は図17に相当するチケットの証明処理の例を示す。メッセージの名前が異なっているが、処理はまったく同様である。
図35では、SEに対するプリミティブが以下に示すように1つある。証明処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(証明処理のプリミティブ)
プリミティブ名…Check
入力:(2)のメッセージ…TicketID,Random1
出力:(3)のメッセージ…Sign_SE(CHECK,TicketV,Random1)
処理…入力されたTicketIDの値を含むTicketVが格納されているか検索する。あれば、署名の目的と、そのTicketVと入力されたRandom1を含む値に署名を生成し、戻り値として返す。
このフローは、定期券や身分証明書など、チケットの改札処理によってチケットデータが変化しない場合の改札処理にも用いることができる。改札処理に用いる場合、図36のIssuerが改札機(Verifier)111g−1に変わる。また、SE101g−1と改札機111g−1の通信時間に制限時間を設けてもよい。こうすることで、以下に示す不正を防ぐことができる。
(1)不正端末が、改札機から通常手続きとして、Challenge、TicketIDをもらう。
(2)上記のChallenge、TicketIDを、(改札機から来たかのようにSEを騙して)正規端末に入力して、Challengeと価値部に関する署名を生成させる。
(3)上記の正規端末作成の署名を、不正端末は受け取り、改札機に送信して改札をとおる。
図37は、図24に相当する改札処理の例を示す。改札処理には、図36で説明した定期券や会員証のような改札時に価値が減らないサービスと、回数券やプリペイドカードのような改札処理が一度で終わるサービスと、電車のイオカードのような入場と退場の処理が必要なサービスがある。
図37では、回数券やプリペイドカードのような改札処理が一度で終わるサービスと、電車のイオカードのようなサービスの入場処理のみを示す。このようにサービスごとにプリミティブを分けることで、処理を最適化し、高速に処理を行うことができる。
図37には、SEのプリミティブが以下に示すように2つある。改札処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(改札処理のプリミティブ1)
プリミティブ名…StartTansaction
入力:(2)のメッセージ…Cert_Verifier,TicketID,Min_V
出力:(3)のメッセージ…Random1
処理…入力された改札機証明書Cert_Verifier112g−1を検証する。正しければ、指定されたTicketIDの値を含むTicketVが格納されているか検索する。Min_Vが有効度数として入力された場合、検索したTicketVの有効度数がMin_V以上か検証する。正しければ、あらたに生成した乱数を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。TicketIDとMin_Vはオプション機能としてもよい。
(改札処理のプリミティブ2)
プリミティブ名…Transaction
入力:(6)のメッセージ…Trans_Order,Random2,T
出力:(7)のメッセージ…Sign_SE(TRANSACTION,TicketV,Random2,T)
処理…StartTransactionまたはPreSEntationで生成したRandom1と、Trans_Orderに含まれる乱数の値を比較検証する。正しければ、入力の署名付きデータ(Trans_Order)の署名を、StartTransactionまたはPreSEntationで取得した公開鍵で検証する。正しければ、Trans_Orderに指定されたTicketVの値を指定された値減額し、GateInfoがあれば、書き換える。署名の目的と、更新後のTicketVの値と、入力されたRandom2およびTを含むデータ(TRANSACTION,TicketV,Random2,T)に電子署名を生成したデータを返す。
図37では、図24の処理に加え、(1)のメッセージで改札機(Verifier)111g−1からTicketIDを送っているので、ユーザが事前にチケットを選ばなくても、すべて自動的に改札処理が行えるようになった。また、(1)のメッセージでMin_V(最低限必要な有効度数など)をおくるようにしたため、実際の改札処理(Transaction)をする前に、度数が足りない場合などの判定が早く行える。
また、(5)で、改札機(Verifier)111g−1側の時間情報を送るようにし、このデータも(6)のデータに含めることで、実運用中に発生した障害処理の判定に時間情報も参照できるようになり、判断が行いやすくなった。
(6)のメッセージに含まれるTrans_Orderは、TicketIDと、減額する値(有効回数を何回、有効度数を何度、など)とStartTransactionで生成したRandom1を含む値にVerifierが署名したデータである。署名対象データの中に、他の情報(GateInfo:入退場情報など)が必要な場合、含まれることもある。
本実施の形態では、改札処理のたびに、減額していく処理を示したが、限度回数や限度度数を示す値と、累積値を表す値を別につくり、処理のたびに累積値を増やしていくという方法も可能である。このように、初期値と累積値を別にもつことで、初期値と累積値をいつでも確認することができる。
また、メッセージの(5)、(7)には、それぞれ、相手から送られた乱数が含まれるので、通信路上の差し替え攻撃を阻止できており、セキュアな通信となっている。
ME100g−1は、(5)のメッセージに含まれるTrans_Orderと(7)のメッセージに含まれるSign_SE(TRANSACTION,TicketV,Random2,T)を格納しておく。こうすることで、たとえ改札機が壊れているなど場合にも、これらのメッセージを示すことで、どの改札機に対してどんな改札処理を行ったのか、証明することができる。
図38も、図24に相当する改札処理を示しているが、図38では、電車のイオカードのようなサービスの退場処理のみを示す。
図37で示した処理と異なり、PreSEntationプリミティブを追加したので、改札処理の前に、入場時の情報を改札機111g−1に提示し、改札機111g−1は提示された入場情報に基づいて、精算の計算を行い、Trans_Orderを生成できる。
図37には、SEのプリミティブが2つある。1つ目のプリミティブを以下に示す。改札処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(改札処理のプリミティブ1)
プリミティブ名…PreSEntation
入力:(2)のメッセージ…Cert_Verifier,TicketID,Random
出力:(3)のメッセージ…Sign_SE(PRESENTATION,TicketV,Random3),Random1
処理…入力された改札機証明書Cert_Verifier112g−1を検証する。正しければ、入力されたTicketIDの値を含むTicketVが格納されているか検索する。存在すれば、署名の目的と、指定されたTicketVとRandom3を含む値(PRESENTATION,TicketV,Random3))に署名を生成したデータと、新たに生成した乱数(Random1)を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。
2つ目のプリミティブは図37で説明したTransactionプリミティブである。図37と図38は、(5)から(7)のメッセージがまったく同じである。二つのサービスを同じプリミティブで実装できるため、効率がよくなっている。例えば、今まで回数券サービスしかサポートしていなかったSE101g−1でも、PreSEntationプリミティブだけ実装すれば、電車のイオカードのような退場時に入場時の情報を参照して精算処理が必要なサービスを実現できる。
また、メッセージの(4)、(5)、(7)には、それぞれ、相手から送られた乱数が含まれるので、通信路上の差し替え攻撃を阻止できており、セキュアな通信となっている。
ME100g−1は、(5)のメッセージに含まれるTrans_Orderと(7)のメッセージに含まれるSign_SE(TRANSACTION,TicketV,Random2,T)を格納しておく。こうすることで、たとえ改札機が壊れているなど場合にも、これらのメッセージを示すことで、どの改札機に対してどんな改札処理を行ったのか、証明することができる。なお、メッセージ(4)に人数を指定するパラメータを加えても良い。こうすることで、Verifierに人数を自動検知する機能がない場合にも、Verifierは、複数人分や、大人一人とこども一人といった細かい依頼に応じたTrans_Orderを生成することができる。
図39は、図25に相当するSE間のチケット移動処理の例を示す。図39では、図25と異なり、SE1の証明書送信も含んだメッセージ図を示す。また、最適化して、確認メッセージを省いた。
図39には以下に示すように4つのプリミティブがある。送り手側に2つ、受け手側に2つである。移動処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(移動処理のプリミティブ1)
プリミティブ名…StartTransfer
入力:(2)のメッセージ…Cert_SE1
出力:(3)のメッセージ…Random1
処理…チケットを受け取る側のSE2の処理。入力されたSE1(送り手側のSE)101g−1の証明書Cert_SE1を検証する。正しければ、新たに生成した乱数(Random1)を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。
メッセージの(5)に示されるMovedataは、移動して相手のSEに登録されるTicketVの値を示す。このデータは、ME100g−1のアプリケーションを用いて、ユーザ操作を用いて生成されているものとする。チケットが一回限りのものでない場合、そのチケットの一部を移動するといった指定も可能としてもよい。また、チケットによっては、移動を一切許可しないチケットや、一部のみの移動を許さないチケットがあってよい。その場合、それを示す情報が、改札必須情報1002に含まれる。こうすることで、サービス提供者は、柔軟性のあるサービスが提供できる。
(移動処理のプリミティブ2)
プリミティブ名…Instruction
入力:(5)のメッセージ…Movedata,Random1,Cert_SE2
出力:(6)のメッセージ…MoveOffer,Random2
処理…チケットを送る側のSE1の処理。入力されたSE2(受け手側のSE)101g−2の証明書Cert_SE2を検証する。正しければ、入力されたMovedataに示されたTicketVが格納されているか確認する。あれば、Movedataに指定された分をTicketVから減算し、TicketVを更新する。処理が正常に終われば、更新前のTicketVの値と、Movedataと、Random1とSE1が管理する時刻情報とを合わせたデータに署名をしたデータMoveOffer=Sign_SE1(Movedata,TicketV,Random1,T1)と、新たに生成した乱数(Random2)を返す。証明書の公開鍵と生成した乱数の値(Random2)は格納しておく。
時間情報T1は、処理が正常に終了しなかったときに、運用者が障害の原因判断に用いることができる。ただし、SEにリアルタイムクロックが実装されていない場合、時間情報は含めなくてもよい。
予め、価値情報を削除してから、受け手側に移動命令を出すことで、価値情報が2重に存在することがなく、悪意のあるユーザが得をすることがないしくみになっているので、サービス事業者も安心してサービスを提供できる。
(移動処理のプリミティブ3)
プリミティブ名…Tansfer
入力:(7)のメッセージ…MoveOffer,Random2
出力:(8)のメッセージ…Sign_SE2(TRANSFER,TicketV,Random2,T2)
処理…チケットを送る側のSE2の処理。MoveOfferに含まれるRandom1の値をStartTransferで生成した値と比較検証する。正しければ、MoveOfferの署名をStartTransferで取得した公開鍵で検証する。正しければ、MoveOfferに含まれるMovedataの値を新たなTicketVとして格納する。正常に終了したら、署名の目的、登録したTicketV、入力されたRandom2、SE2が管理してしている時間情報T2をあわせたデータ(TRANSFER,TicketV,Random2,T2)に署名をしたデータを返す。
時間情報T2は、処理が正常に終了しなかったときに、運用者が障害の原因判断に用いることができる。ただし、SEにリアルタイムクロックが実装されていない場合、時間情報は含めなくてもよい。
(移動処理のプリミティブ4)
プリミティブ名…Receipt
入力:(9)のメッセージ…Sign_SE2(TRANSFER,TicketV,Random2,T2)
出力:(10)のメッセージ…ACK
処理…チケットを受け取る側のSE1の処理。入力データに含まれるRandom2とTicketVの値をInstructionで生成した値と比較検証する。正しければ、入力データに含まれる署名の目的を検証する。正しければ、入力データの署名をInstructionで取得した公開鍵で検証する。正常に終了したら、ACKを返す。
これらの4つのプリミティブを実装することで、サーバを介さずにチケットを譲渡することができる。また、電子署名とSEを用いてセキュリティを確保している上に、譲渡してしまえば、譲渡元の情報は残らないので、匿名性のあるセキュアな譲渡サービスを提供することができる。
ダウンロード、改札、譲渡など処理に応じてプリミティブを分け、生成されるデータに含まれる署名の目的が異なるため、ユーザが他の目的でデータを流用することができないようになっている。
また、送り手および受け手のME101は、MoveOfferとSign_SE2(TRANSFER,TicketV,Random2,T2)を保存しておく。こうすることで、トラブルが起きたときにも、どんな移動の命令に対してどんな格納処理をしたのかが証明できる。
<実施の形態9>
実施の形態9では、図40と図41を用いて実施の形態6では判断できないエラーを自動で復旧する仕組みを説明する。そのために、図11のSE101g内に、新たに、エラーリカバリー機能と処理履歴可能部を設ける。図35に示すダウンロード処理と図36に示す証明処理のみを実施する場合にはこの実施例は不要である。
まず、図40を用いてSE内で行う通信相手管理機能の処理の流れを説明する。各オペレーション実行時に、このフローを開始し、完了時に終了させる。例えば、図35のダウンロード処理では、(2)のメッセージの受信時に、ステップ400を開始し、ステップ406の処理にあたるところで、図35のダウンロード処理で説明してきたチケット処理を行い、(7)のメッセージ送信に、ステップ407を実行し、ステップ408で処理を完了する。SE内に処理履歴可能部を持ち、ステップ404またはステップ407で通信相手格納領域107gに格納した情報とその処理のステータスを履歴情報として格納しておく。そのため、ユーザは不法にアクセスして都合のよいように書き換えることができないので不正を防ぐことができる。また、同じチケットに対する、ダウンロード処理、改札処理、譲渡処理の情報を区別して管理しておくことで、処理をまたがった不正も検知することができる。また、ステップ401で、改札処理でエラー状態となったチケットは移動処理できない、等の制御も可能となり、未然にトラブルを防ぐことができる。
通信相手格納領域107gに格納する情報は、チケットID、オペレーション(プリミティブ)の種類、通信相手の種類(Issuer,Verifierなどの種別情報)、通信相手の公開鍵、処理中のデータ(生成した乱数)、検証するメッセージなどがある。これらのうち、すべてを処理履歴可能部に格納しても良いし、一部を格納しても良い。こうすることで、SEのメモリサイズに応じたエラーリカバリー機能が提供できるようになる。
PTDの電源ON時、SE挿入時、またはチケットアプリ起動時に、SEの通信相手格納領域に未完了処理データがあれば、未完了履歴にデータを格納する機能をもつこともある。
履歴情報をいつまで格納しておくかは、ユーザが設定しても良いし、期間を決めてもよいし、最大格納数を決めておいても良い。チケットサービス提供者が、この履歴情報を定期的に吸い上げ、バックアップサービスを提供するというサービスも考えられる。こうすることで、ユーザはメモリ管理を意識せずにサービスを受けることができる。また、チケットサービス提供者は、ユーザの使用履歴を集計することもできる。
次に図41を用いて、自動的にエラーリカバリーを行う処理を説明する。図40では、エラーリカバリーを行うサービス端末をVerifier111g−1と呼ぶ。この処理では、SEの通信相手管理機能と、ME100g−1の処理中のメッセージを管理する機能を用いる。ME100g−1には、チケット処理中のメッセージ、例えば、図37と図38の改札処理ではTrans_Orderと(7)のメッセージ、図39のチケットの移動の処理では、MoveOfferと(8)のメッセージ、を格納しており、TicketIDの値を指定すると、その値を含むデータを検索できる機能を持っている。これらの履歴データは、ME上にあるのでユーザが勝手に削除することなどが考えられるが、削除すると、ユーザがエラーリカバリー処理において不利になるので、勝手には削除しないと考えることができる。
この処理には2つのプリミティブを用いる。エラーリカバリーのプリミティブを定義することにより、アプリケーションとSEの互換性が保障できる。
(エラーリカバリーのプリミティブ1)
プリミティブ名…StartRecovery
入力:(2)のメッセージ…Cert_Verifier,TicketID,Random3
出力:(3)のメッセージ…Sign_SE(STARTRECOVER,TicketV,Status_data of the TicketV,Random3),Random1
処理…入力された証明書を検証する。正しければ、署名の目的と、TicketIDで指定されたTicketVの値と、そのTicketVに関係するの処理履歴Status_data of the TicketVと、入力されたRandom3を含むデータ(STARTRECOVER,TicketV,Status,Random3)に電子署名を生成したデータと、新規に生成した乱数Random1を返す。証明書の公開鍵と生成した乱数の値(Random2)は格納しておく。
(3)のメッセージを受け取ったME100g−1は、MEに格納されているチケット処理データの履歴の中からTicketIDで指定された値を含むデータを検索し、あれば、その履歴データ(Log of the TicketV)とSEの証明書を(3)のデータとともに、メッセージの(4)としてVerifierに送信する。
Verifierは、Sign_SE(STARTRECOVER,TicketV,Status_data of the TicketV,Random3)に含まれるRandom3の値を検証し、正しければ、署名を検証する。正しければ、Sign_SE(STARTRECOV,TicketV,Status_data of the TicketV,Random3)に含まれるTicketVとStatus_data of the TicketVと、履歴データからエラーの原因を切り分ける。
図37に示すチケットの移動処理のエラーを切り分ける場合には、移動元のSEと移動先のSEの両方に対してメッセージの(1)から(4)までを行う。こうすることで、移動の処理に関してもエラーの状況を正しく把握して判断することができる。
ここで、チケットのダウンロード処理においては、正常に格納したのに、すぐに譲渡処理をしたため、このSEに対象のTicketVが格納されていないのだ、と判断できることもある。または、本当にチケットダウンロード時になんらかの理由で格納処理に失敗し、SEにTicketVが格納されていないことがわかる。
同様に、改札処理では、チケット処理が正常に行われており、改札機の機械的なトラブルで改札を通れなかったと判断できることもある。または、改札処理をまだ行っていない状態だということがわかる。
同様に、譲渡処理では、チケットの移動処理は正常に行われいるが、受け手側のSEがさらに譲渡処理をしたために、送り手側のSEにも受け手側のSEにも対象のTicketVが正しく登録されていないことがわかる。または、送り手側はすでに移動処理をしたのに、何らかのエラーで受け手側のSEに格納されていない状態だということがわかる。または、まだ移動処理を開始する前の状態だということがわかる。
Verifierは、障害の原因に応じてRecovery_Orderを生成する。
Recovery_Orderは、Sign_Verifer(RECVORDER,TicketV,Status_data of the TicketV,Random1)とあらわせる。SEのTicketVに変更が必要ならば、修正後のTicketVの値を入れる。TicketVに変更が必要ない場合、現在と同じ値を入れる。Status_data of the TicketVに変更が必要ならば、変更後Status_data of the TicketVに変更を加える。
さらにあらたな乱数Random2を生成し、Verifierが管理する時間情報TとRecovery_Orderともに、メッセージの(5)としてMEに送信する。
メッセージ(5)には、ユーザに対してエラー内容を説明するデータRecovery_Infoが含まれていても良い。Recovery_Infoは署名付きデータの場合もある。Recovery_Infoが含まれる場合、MEはこの説明用のデータをユーザに提示する。これにより、ユーザはエラーの原因がどこにあり、どんなリカバリー処理をしようとしているのか知ることができ、安心してサービスを受けることができる。
(エラーリカバリーのプリミティブ2)
プリミティブ名…Recovery
入力:(6)のメッセージ…Recovery_Order,Random2,T
出力:(7)のメッセージ…Sign_SE(RECOVERY,TicketV,Random2,T)
処理…StartRecoveryで生成したRandom1と、Recover_Orderに含まれる乱数の値を比較検証する。正しければ、入力の署名付きデータ(Recover_Order)の署名を、StartRecoveryで取得した公開鍵で検証する。正しければ、Recover_Orderに指定されたTicketVの値を指定された値に更新し、対応する処理ステータスの履歴情報もStatus_data of the TicketVに書き換える。署名の目的と、更新後のTicketVの値と、入力されたRandom2およびTを含むデータ(RECOVERY,TicketV,Random2,T)に電子署名を生成したデータを返す。
乱数値を関与させて処理を行っているので、通信路での差し替え攻撃も防御でき、セキュアなリカバリー処理が行える。また、いろいろな障害の原因をこの処理を用いて分析し、リカバリーできるので効率的となっている。また、この処理のVerifierは、ユーザが至近距離に移動してサービスを実行するエラーリカバリー用の端末としても実装できるし、ネットワーク上の一サーバとしても実装できるため、サービス提供者も実装の自由度があり、ユーザも状況に応じて便利な方を選ぶことができる。また、エラーリカバリーのプリミティブを定義したので、アプリケーションとSEの互換性が保障できる。
<実施の形態10>
実施の形態10では、図35から図41を用いて、チケットIDに関連付けられた共有鍵を用いた例を説明する。
実施の形態8と9では、公開鍵暗号方式を用いる方法のみ提案したが、共有鍵を用いる方法も考えられる。共有鍵が、共有の秘密鍵の場合、鍵情報は送信先の公開鍵で暗号化して送信される。実施の形態9で説明した署名付きのデータは、署名の代わりに、共有鍵で暗号化して送受信される。共有鍵が、共有の公開鍵ペアの場合、データは暗号化または署名を用いて送受信される。どちらの場合も、共有鍵を送信する場合は、共有秘密鍵情報は送信先の秘密鍵で暗号化して送信される。相手の公開鍵で暗号化して送信する。ただし、共有の公開鍵は暗号化しなくて良い。実施の形態9で説明した署名付きのデータは、署名の代わりに、共有公開鍵で暗号化されるか、共有秘密鍵で暗号化して送受信される。
図35のダウンロード処理の場合、メッセージ(5)のIssuerの署名付きチケットデータの中に、SEの公開鍵で暗号化した共有鍵情報を含む。メッセージ(6)を受信したSEは、共有鍵を復号化し、SE内に、対応するチケットと関連付けて格納しておく。こうすることで、SEは、以後のこのチケットを用いた処理において、証明書検証などのPKIを用いた処理を行わなくて済む。
Issuerは、Verifierと相互認証ののち、Veriferの公開鍵で暗号化した共有鍵をチケットIDと関連付けて送信しておく。こうすることで、Veriferは、チケット改札時にSEごとに、SE証明書の検証を行わなくてすむ。
図36の処理の場合、メッセージ(3)は、SEの署名の代わりにそのチケットIDに対応する共有鍵で暗号化または署名したデータを出力してもよい。
図37の改札処理の場合、メッセージ(1)から(4)は不要である。または、メッセージ(3)とメッセージ(4)のRandomはあってもよい。または、メッセージ(1)と(2)でチケットIDのみを送り、メッセージ(3)と(4)では、そのチケットIDに関連付けられた共有鍵でRandomを暗号化して送っても良い。
メッセージ(5)のTrans_Orderは、Verifierの鍵で署名する代わりにそのチケットIDに対応する共有鍵で暗号化、または署名を付与されているものでもよい。また、SEで生成されるメッセージ(7)も、SEの署名を付与する代わりに、対応する共有鍵で暗号化、または署名を付与されているものでもよい。こうすることで、メッセージの数を4つ少なくすることができ、高速な処理が可能となる。
図38の改札処理の場合、メッセージ(2)のCert_Verifierは不要となる。また、メッセージ(3)のデータSig_SE(PRESENTATION,TicketV,Random3)は、SEの鍵で署名する代わりにチケットIDに対応する共有鍵で暗号化、または署名を付与したデータでもよい。メッセージ(5)から(7)は図37の説明と同じである。こうすることで、証明書の検証など、負荷の重い処理を省くことができる。
図39の移動処理の場合、メッセージ(5)までは同様である。SEで、メッセージ(5)を受信した後、共有鍵を生成し、MoveOfferに、SE2の秘密鍵で暗号化した共有鍵のデータを含めて送信する。メッセージ(7)を受信したSE2は、SE2の秘密鍵で暗号化した共有鍵を復号化し、メッセージ(8)は、SE2の秘密鍵で署名する代わりに、受信した共有鍵で暗号化、または署名を付与してもよい。メッセージ(10)は同様である。
図41の場合、メッセージ(2)のCert_Verifierは不要となる。また、メッセージ(3)のデータSig_SEは、SEの鍵で署名する代わりにチケットIDに対応する共有鍵で暗号化、または署名を付与したデータでもよい。メッセージ(5)のRecovery_Orderは、Verifierの鍵で署名する代わりにそのチケットIDに対応する共有鍵で暗号化、または署名を付与されているものでもよい。また、SEで生成されるメッセージ(7)も、SEの署名を付与する代わりに、対応する共有鍵で暗号化、または署名を付与されているものでよい。
このように、チケットIDに関連付けられた共有鍵を用いることで、SEにおける証明書の検証などの公開鍵暗号処理を省くことができ、SEへの付加が軽くて処理の早いチケットサービスを提供することができる。
<実施の形態11>
実施の形態8、9、10では、処理のメッセージの中で、相手から送られた乱数を含めた処理データに署名や暗号化をしたデータとは別に、自ら生成した乱数を送信する例を示した。しかし、相手から送られた乱数を含めた処理データに加えて、自ら生成した乱数も含めて、署名や暗号化をしたデータを送信してもよい。
例えば、図35のメッセージ(3)では、Sig_SE(STARTREG,Random1)とRandom2となっているが、Sig_SE(STARTREG,Random1,Random2)としてもよい。こうすることで、乱数の差し替えを検知することができる。
以上説明したように、本発明によれば、複数のサービスサーバ運営者がSEの発行コストを分担することで、SEを用いたセキュアなモバイルサービスの提供が容易になる。また、サービス管理者が発行する証明書を持つものだけしかSEを用いたサービスを提供でないので、SEのコストを払っていないもののSEの利用を防ぐことができる。
また、本発明によれば、サービス管理者が発行する証明書の種類によって、SEのサービスアイテム登録領域へのアクセスを制限することができるので、事業者別にも権利の制限を設定することができる。また、発行するサービス証明書の種類により、発行手数料などを変えるといった柔軟な運営が可能となる。
また、本発明によれば、サービス事業者は、一度発行したSEにも、リモートからセキュアに、ユーザの求めるサービスを追加することができる。これにより、サービス管理者はSE101の発行管理をより柔軟に行えるようになる。ユーザも、必要なサービスだけを後から追加できるので、利便性が向上する。また、サービスサーバも、すでにユーザが所有しているSE101に、あとから開始したサービスを追加することができるので、市場が広がる。
また、本発明によれば、SEのインターフェイスは公開なので、ユーザはどのSE対応の携帯電話でも、買ってきたSEを挿入することで、好みのサービスを受けることができる。
また、本発明によれば、SEに固有の情報を含まないチケットであっても、チケットデータ本体は、SE以外のメモリに暗号化せずに保存することが可能となった。
また、本発明によれば、ユーザがチケットデータを自由にコピーしたり、メールに添付して友人に送信することができる。友人にチケットを譲りたいとき、まずチケットをメールなどで送信して友人がデータを見てから実際のチケット移動の処理を行うことができる。
また、本発明によれば、チケット発行時も、チケットデータをユーザにメールなどで送信し、購入したいユーザは指定された情報どおりに支払い処理を済ませると、有効なチケットとなるといったことができるので、発行サーバは、チケットのプロモーションの自由度が上がる。また、発行サーバは、支払い前の整理券と支払い後のチケットを別に発行管理する必要がない。
また、本発明によれば、サービスサーバがSEに特定のサービスアイテムが登録されているか確認したい場合、サービスサーバが発行した乱数を含むSEの署名つきのデータにより、確認できる。
また、本発明によれば、チケットの改札やSE間のサービスアイテム移動処理に関して、サービス登録領域に登録された情報のみ送信すればよいので、データ通信量が減少した。
また、本発明によれば、SE間のサービスアイテムの移動処理において、移動先と移動元のSEの2つともに同時にサービスアイテムが存在することなく、SE間のサービスアイテムの移動が可能となる。
また、本発明によれば、SEの高機能化に伴い、多様な性能なSEが混在する市場になっても、サービスサーバ側のインターフェイスは変えずに対応することができる。
また、本発明によれば、サーバが介すことなく、SE間でセキュアなチケット譲渡が行える。譲渡を行っても、譲渡履歴を付加しないため、プライバシーが保たれ、またチケットデータ量が増えない。
また、本発明によれば、チケット発行時にSEで生成した乱数をチケットデータの価値情報の一部に含めて発行する。こうすることで、通信路での盗聴や、差し替え攻撃にも対抗できるしくみになっている。
また、本発明によれば、改札必須情報に対して付与された送り手側の署名を外してSEに格納し、チケット使用時にはSEの署名を付加する。このため、一度SEに格納されたチケットデータは、SEの署名なしにSEの外へ出ない。また署名付きデータには、処理の目的が含まれる。そのため、オープンなPKIの仕組みを用いて少ないSE領域を用いたサービスが実現できる。
また、本発明によれば、人気チケットの発売時など決済処理の負荷が課題であった。本システムによれば、改札必須部をSEに登録する処理を行わないとチケットが有効にならないため、チケットデータ(ユーザ表示部)は、整理券と本券で共通に使うことができる。そのため、発行管理の手間を増やすことなく、整理券を用いて決済処理の負荷を分散できる。
また、本発明によれば、SEを用いたエラーリカバリーのプロトコルを用いて、自動でエラーリカバリーの処理が行え、保守の手間を軽減できる。このエラーリカバリーのプロトコルでは、チケットの操作をまたがったエラーや不正を検知し、復旧することができる。また、ローカルでもリモートでもエラーリカバリーのサービスを提供することができる。
本明細書は、2002年3月13日出願の特願2002−069362および2003年1月15日出願の特願2003−007684に基づくものである。これの内容はすべてここに含めておく。
【図面の簡単な説明】
図1は、本発明の実施の形態1に係るSEを用いたセキュアモバイルサービスシステムの概略構成をモデル化して示すブロック図である。
図2は、本発明の実施の形態1においてサービス管理者が発行するSEのモデル図である。
図3は、本発明の実施の形態1においてサービス管理者が発行済みのSE上に、サービス領域を追加するサービスのモデル図である。
図4は、本発明の実施の形態1においてサービス管理者がチケットサービスの管理を行う場合のモデル図である。
図5は、本発明の実施の形態2に係るSEの認証処理メッセージの例を示す図である。
図6は、本発明の実施の形態2においてSEがサービスサーバの認証を行う場合のメッセージの例を示す図である。
図7は、本発明の実施の形態2においてSEとサービスサーバが相互認証を行う場合のメッセージの例を示す図である。
図8は、本発明の実施の形態2において公開鍵暗号を使ったサーバ認証処理のメッセージ例を示す図である。
図9は、本発明の実施の形態2において公開鍵暗号を用いた相互認証のメッセージの例を示す図である。
図10は、本発明の実施の形態3に係るセキュアモバイルサービスシステムのチケットサービスで用いられるチケットデータのモデル図である。
図11は、本発明の実施の形態3においてチケット格納のモデル図である。
図12は、本発明の実施の形態3において発行サーバ対応のSEのメッセージの例を示す図である。
図13は、本発明の実施の形態3においてダウンロード処理のメッセージ例を示す図である。
図14は、本発明の実施の形態3において署名付き確認メッセージを用いたダウンロード処理のメッセージ例を示す図である。
図15は、本発明の実施の形態3において配信鍵を用いたダウンロード処理のメッセージ例を示す図である。
図16は、本発明の実施の形態3において公開鍵暗号を用いたダウンロード処理のメッセージ例を示す図である。
図17は、本発明の実施の形態3において登録証明処理のメッセージ例を示す図である。
図18は、本発明の実施の形態3において改札処理のメッセージ例を示す図である。
図19は、本発明の実施の形態3において改札前後のチケットのモデル図である。
図20は、本発明の実施の形態3においてSE間でのチケット移動のSEのメッセージ例を示す図である。
図21は、本発明の実施の形態3においてSE間でのチケット移動処理のメッセージ例を示す図である。
図22は、本発明の実施の形態3において公開鍵暗号を用いたSE間でのチケット移動処理のメッセージ例を示す図である。
図23は、本発明の実施の形態4に係るセキュアモバイルサービスシステムのサーバ認証とチケットダウンロード処理の混合処理のメッセージ例を示す図である。
図24は、本発明の実施の形態4においてサーバ認証処理と改札処理の混合メッセージ例を示す図である。
図25は、本発明の実施の形態4において相互認証処理とSE間でのチケット移動処理の混合メッセージ例を示す図である。
図26は、本発明の実施の形態5に係るセキュアモバイルサービスシステムの処理能力の低いSEを用いたサーバ認証処理とダウンロード処理の混合メッセージ例を示す図である。
図27は、本発明の実施の形態5において処理能力の低いSEを用いたサーバ認証処理と改札処理の混合メッセージ例を示す図である。
図28は、本発明の実施の形態5において処理能力の低いSEを用いた相互認証処理とSE間でのチケット移動処理の混合メッセージ例を示す図である。
図29は、本発明の実施の形態6に係るセキュアモバイルサービスシステムのチケットのダウンロード処理のメッセージ例を示す図である。
図30は、本発明の実施の形態6においてチケットの改札処理のメッセージ例を示す図である。
図31は、本発明の実施の形態6においてチケットの移動処理のメッセージ例を示す図である。
図32は、本発明の実施の形態7において、図29に相当するチケットのダウンロード処理のメッセージ例を示す図である。
図33は、本発明の実施の形態7において図30に相当するチケットの改札処理のメッセージ例を示す図である。
図34は、本発明の実施の形態7において図31に相当するSE間のチケット移動処理のメッセージ例を示す図である。
図35は、本発明の実施の形態8におけるダウンロード処理の例図である。
図36は、本発明の実施の形態8におけるチケットの証明処理の例図である。
図37は、本発明の実施の形態8における改札処理の例図である。
図38は、本発明の実施の形態8における改札処理(退場処理)の例図である。
図39は、本発明の実施の形態8におけるチケットの移動処理の例図である。
図40は、本発明の実施の形態9における通信相手管理機能の処理の例図である。
図41は、本発明の実施の形態9におけるエラーリカバリー処理の例図である。
本発明は、セキュアモジュールを用いたサービスの提供方法、そのサービスのひとつとして電子チケットの購入、使用、譲渡など電子バリューを活用するためのシステム、利用方法、プログラム、装置、プログラムを記録した記録媒体に関するものである。
背景技術
セキュアにモバイルサービスを提供するために、携帯電話やPDAにICチップなどのタンパレジスタントなセキュアモジュールであるセキュアエレメント(SE)を挿入して、安全性を向上する技術がある。携帯電話などに挿入して使うICチップの例としては、従来、たとえばGSMのSIMであれば、オペレータが発行管理をしていた。また、WAP(Wireless Application Protocol)では、WIM(WAP Identifier Module)という署名機能をもったセキュアモジュールの仕様を公開している。このWIMの実装のひとつとして、WIMをSIMと同一チップ上に実装するSWIMという形態があり、これもまたオペレータが発行管理を行う見込みである。
ここで、電子チケットサービスに関しては、大きく二つのタイプがある。一つ目は、電子チケット自体に、携帯電話やPDA、またはそれらに挿入されたSEの秘密情報をあらかじめ含めて発行する方式であり、二つ目は、電子チケット自体には、それらデバイスの秘密情報は含まずに発行する方式である(例えば、日本電気株式会社、プレスリリース(2002年10月3日)、モバイル向け基盤技術、モバイル電子チケット・会員証サービス基盤、平成15年1月14日検索、インターネット<URL:http://www.nec.co.jp/press/ja/0210/0303−01.html,http://www.nec.co.jp/press/ja/0210/0303−06.html,http://www.nec.co.jp/press/ja/0210/0303−07.html>参照)。
これらの電子チケットサービスの方式の間には、チケットの譲渡および格納の操作に関して大きな違いがある。
まず、譲渡に関しては、前者は、チケットにSE固有の情報を含むため、他人に譲渡する場合、サーバで再発行するなど、サーバ経由の処理が必須であった。それに比べ、後者では、サーバを介さずにオフラインで譲渡が可能である。
次に、格納に関しては、前者の方法であると、チケットにSE固有の情報が含まれており、他人がチケットデータを盗んでもSEがなくては改札処理ができないため、SE持ち主による不正コピーのみを防げばよい。そのため、TRMに正しいチケットデータのハッシュ値を保存しておき、改札時にチケットと照合するなどといったSE所有者の不正コピーを検出する仕組みを入れることで、チケットデータを暗号化することなく保存できる。後者の方法であると、SE所有者以外にも使えるため、メモリへチケットを保存する場合には、チケットデータを暗号化する必要があった。
しかしながら、これらには以下のような課題が残る。つまり、第1に、SEなどのタンパレジスタントなモジュールは高価なため、携帯電話やPDAに実装してサービスをしようとする場合、SE発行のコスト分担が課題となっていた。サービス提供者が発行費用を負担する場合には、費用負担をしていないサービス提供者にはSEを使わせないしくみが必要である。また、オペレータ以外であっても、自由にSEの発行管理が行えるビジネスモデルが必要である。
第2に、サービス管理者が、サービス提供者にSEのアクセスを提供する場合、そのサービスでの役割ごとに、SEへのアクセスを制限しなければいけないという課題があった。例えば、サービス管理者から改札機としての許可を受けているエンティティは、チケットの改札サービスは可能だが、新規チケットの発行は不可能というように、処理の権限を制限するしくみが必要であった。
第3に、ローカルの譲渡が可能な電子チケットでは、他人が不正に使用できないようにするため、SEなどのタンパレジスタント以外のメモリにはチケットデータを暗号化して保存する必要があった。そのため、保存、表示、使用の都度、復号化が必要となり、すべての処理時間について復号化の分だけ余計にかかってしまう。なお、SEなどのタンパレジスタント以外のメモリにはチケットデータを暗号化して保存する必要のない従来の技術として、チケットにSE固有情報を含めて発行する方式がある。しかし、その方式には、譲渡の再、サーバを介して再発行を受ける必要があるという問題点がある。
第4に、チケット発行時に支払い処理の負荷分散を図るために、まずは整理券を配り、支払いをしてからチケットを発行する場合、2種類のデータを発行・管理する必要があった。
第5に、リモートで譲渡の処理をする場合、どんなチケットを譲渡したいのかを相手に伝えるのに、電話、メールやFAXなどでチケットの内容を伝える必要があった。
第6に、セキュアモジュールの高機能化に伴い、サーバ側のシステムを変化させる必要があった。サーバ側は異なる性能のデバイスをサポートできるプロトコルが必要である。
発明の開示
本発明の目的は、セキュアエレメントを用いて、セキュアエレメントへのアクセスを制限する手段をもつセキュアモバイルサービスシステムに用いられるサービス実行モジュールを提供することである。また、本発明の別の目的は、このセキュアモバイルサービスシステムを用いて、スケーラビリティのあるチケットサービスを提供することである。
上記目的を達成するために、本発明では、サービスを実行するための情報を格納したサービス実行モジュールであって、前記モジュールは耐タンパな記憶媒体で構成され、前記サービスを実行するためのアプリケーションを格納したサービスアプリケーション格納手段と、前記サービスを管理するサービス管理者の証明書であるサービス管理者証明書を格納するサービス管理者証明書格納手段と、前記サービスを実行するために必要な情報であるサービスアイテムを格納するサービスアイテム格納手段とを備える。
すなわち、本発明では、第1に、SEにサービス管理者の証明書を格納して販売し、その証明書で署名が検証可能な証明書をもつサービスサーバのみSEのそのサービス専用の領域を使ったサービスを提供できるようにした。SE上に新たなサービス領域を生成する場合にも、そのためのサービス管理者の証明書を用いる。こうすることで、第三者は、このSEを用いたサービスを提供することはできないようにすることができる。
上記の構成において、「耐タンパ」とは、ソフトウェア的にもハードウェア(物理)的にもセキュア(安全)性が保証されている仕組みを指し、耐タンパモジュールとは、社会的に使用されているものではICカードがこれに相当する。ソフトウェア的には、正当な保証が行なわれないとICチップの記憶領域内のデータへのソフト的なアクセスを不可能にしてセキュアを達成する。また、ハードウェア的には、ICチップへのハード的なアクセス、例えば、カードを分解して、メモリ領域へ信号線を接続してデータを読み取るといった強引な行為に対して、例えばメモリ内のデータが消去されたり、或いはデータが自動的に破壊されたりして、不正にデータを取得することを不可能にしてセキュアを達成するなどの仕組みをいう。
第2に、SEに通信相手格納領域を設け、証明書に記述されたサービス管理者が認めた役割ごとに、実行できる処理を制限できるようにした。通信の始めに通信相手の証明書を検証し、証明書に指定された役割をSEに設けた通信相手格納領域に格納する。SEはME(携帯電話やPDAなどのモバイルエレメント)から処理要求を受信したときに、この通信相手格納領域の値を参照し、実行可能か判断する。
第3に、SE内のサービス専用の領域にサービスアイテム登録領域を設けた。さらに、サービスアイテム登録領域のデータを用いたサービスを実行するためには、署名付きのメッセージ交換なしには、サービスが行えないプロトコルとした。
第4に、SEに設けたサービスアイテム登録領域に登録された登録データなしでは、使えない処理プロトコルとした。そのため、例えばチケット処理などにおいては、整理券とチケットデータは同一でよい。支払い処理の後、正しい登録プロトコルを実行し、SEに設けたチケット登録領域(サービスアイテム登録領域)に登録しないとチケットは無効なので、整理券の発行管理は不要となった。
第5に、正しい証明書を持ったSE同士が、SEの署名付きメッセージをやりとりして、SEに設けたチケット登録領域に登録されたチケット以外は使えない処理プロトコルとしたため、譲渡処理より前にチケットデータをメールなどに添付して譲渡相手に送信することが可能となった。相手はこのチケットデータを表示して、全内容を確認してからこのチケットを譲り受けるか決めることができる。
第6に、メッセージ全体を暗号化することのみでセキュリティ確保せず、サービスアイテム登録領域や署名機能を用いて処理を行うプロトコルとした。このため、SEの高速化、大容量化、価格の減少により、MEとの処理分担を変えることで、サービスサーバ側のサービスシステムを変更することなくサポートできる。
発明を実施するための最良の形態
以下、本発明の実施の形態について図面を参照して詳細に説明する。
<実施の形態1>
実施の形態1としてSEの発行モデルを、実施の形態2としてSEとサービスサーバの認証方式を、実施の形態3としてチケットサービスを、実施の形態4として認証と統合したチケットサービスを、実施の形態5として、処理能力の低いSEを用いた場合のチケットサービスを順に説明する。この実施の形態1では、図1から図4を用いて、セキュアモバイルサービスシステムにおけるSEの発行モデルを説明する。図1は本発明の実施の形態1に係るセキュアモバイルサービスシステムの概略構成をモデル化して示すブロック図である。携帯電話やPDAといったモバイルデバイスME100は、MEサービスアプリケーション102、署名処理を含む暗号処理機能があるタンパレジスタントなモジュールであるSE101、サービスデータ保存領域109をもつ。
なお、SE101とサービスデータ保存領域109の関係であるが、どちらか/両方が着脱可能であっても、どちらか/両方が複数あっても構わない。また、それらは物理的に同一のメディアに存在していてもしていなくても構わない。
また、それらの間でのデータのやりとりは、MEサービスアプリケーション102などの外部を介して送受信しても、101と109が物理的に同一のメディア内にある場合は、外部を介した送受信を、あるいは外部を介することなく直接送受信をしても構わない。また、本発明においてサービスデータ保存領域109はなくても構わない。
SE101は、特定のサービスを実行管理するサービス領域103をもつ。SE101は署名のための暗号鍵ペア104を格納している。この暗号鍵ペア104は、SE101に共通でもよいし、サービス領域103に特定でもよい。サービス領域103は、このサービス領域103のサービスを管理するサービス管理者の証明書であるサービス管理者証明書105を格納している。サービス管理者証明書105はSE101に共通でもサービス領域103に特定でもよい。SE証明書110は、SEが特定のサービスを行いたい場合に、サービス管理者113から取得する、サービス実行時の認証に必要な証明書である。SE証明書110は不要なサービスもある。
ここで、サービス管理者証明書105とSE証明書とサービス領域103の関係であるが、サービスの形態によってその組合せは様々である。つまり、SE所有者が一つのサービスしか登録していない場合は、サービス領域103は(後述の領域追加[図3]の可能性を持たない場合は)一つであり、その場合、SE証明書110はなくても構わない。一方、複数のサービスを登録している場合は、サービス領域103は複数存在し、105と110の組合せにより、個々のサービスが特定できる。この場合でも、サービス管理者証明書105を発行するサービス管理者が管理するサービスが一つしか存在しない場合は、SE証明書110はなくても構わない。一方、同一のサービス管理者が管理しているサービスでも、サービス管理者証明書105をそれぞれ異なるものとしても構わない。
SEサービスアプリケーション106は、MEサービスアプリケーション102と通信し、サービスサーバ111の認証と、各サービスの処理によって定義されたサービスアイテム登録領域108へのデータ処理を実行する。サービスアイテム登録領域108は、サービス領域103に特定の情報を登録しておくための領域である。
通信相手格納領域107は、SEサービスアプリケーション106がサービスの処理を行う前にサービスサーバの認証を行い、そのサービスサーバの所有するサービスサーバ証明書が証明する値を格納しておく領域である。
SEサービスアプリケーション106は、サービスの処理であるサービスアイテム登録領域108のデータ操作を行う前にこの通信相手格納領域107の値を参照し、処理が許可されているか確認する。
サービス管理者113は、このSEを発行し、SE101を用いて提供するサービスを管理する。サービスサーバ111は、サービス管理者113からサービスサーバ証明書112を取得し、SE101にサービスを提供する。サービスサーバ111とME100は、有線でもよいが、無線公衆網、またはIrDA、Bluetoothなどのローカル無線を用いて無線通信してもよい。サービスサーバ111の例としては、POS端末、キオスク端末、自動販売機、ネットワーク上の仮想店舗、改札機、などがある。
このように、SEサービスアプリケーション106は、サービスアイテム登録領域108にアクセスする前に、認証処理を行ってサービス証明書に証明された権利を格納した通信相手格納領域107の値を参照して、合致する場合だけ処理を実行するため、サービス管理者113が発行したサービス証明書をもつサービスサーバのみがSE101のサービスアイテム格納領域108を用いたセキュアなサービスを実行できる。
図2は、サービス管理者113が発行するSE101のモデル図を示す。サービス管理者は、SE101を発行する。サービス管理者113は複数のサービス(201、202、203)を管理することができる。各サービスには、サービス内の役割に応じて複数の種類のサービスサーバ証明書112を発行することができる。サービスごとに、SE101内に、各サービス特定のサービス用領域(103a,103b,103c)をもつ。複数のサービス用領域(103a,103b,103c)をもつSE101を発行してもよい。サービス用領域103別にサービス管理者証明書105を発行してもよい。サービス用領域103別にSE証明書110を発行してもよい。サービス用領域103別に暗号鍵ペア104を発行してもよい。サービス管理者証明書105および暗号鍵ペア104はSE101に共通でもよい。また、サービスによっては、SE証明書110はなくてもよい。
このように、SE101上のサービスアイテム登録領域108にアクセスできるサービスサーバ111を制限する機能を設けることで、サービス管理者113がサービスサーバ111にサービスサーバ証明書112を発行し、サービスサーバ111がSE発行管理のコストを共有することが可能となる。
図3は、サービス管理者113が発行済みのSE101上に、サービス領域103を追加するサービスの実施例を示す。サービス管理者113dは、領域追加サービス301と他のサービス(302、303)を管理しているものとする。サービス管理者113dは、SE101に領域追加サービス301のみを作成して販売しても、領域追加サービス301と他の複数のサービス、例えばサービスF303を追加して販売してもよい。このSE101を購入したユーザは、たとえば、ネットワークなどを介してサービス管理者113dにアクセスし、サービスE302の申し込みをすると、SE101は、SE領域追加サービスアプリ106aを介して、領域追加サービス管理者証明書105を用いてサービス管理者を認証し、正しければ、新たにサービスE用領域103eを生成する。
このように、SEサービスアプリ106の一つとして、サービスを追加するための処理をするアプリ(SE領域追加サービスアプリ106a)として、SE発行時に提供しておけば、サービス管理者113は、発行後もネットワークを介してSE101上にセキュアにサービス領域103を追加作成できる。これにより、サービス管理者はSE101の発行をより柔軟に行えるようになる。ユーザも、必要なサービスだけを後から追加できるので、利便性が向上する。また、サービスサーバも、すでにユーザが所有しているSE101に、あとから開始したサービスを追加することができるので、市場が広がる。
図4にサービス管理者がチケットサービスの管理を行う場合のモデル図を示す。チケットサービスを提供するサービス管理者113gは、チケットサービス領域103gをもつチケットサービス用SE101gを発行する。また、チケット発行者向けの発行サーバ証明書112g−2と、チケット改札機向けの改札機証明書112g−1と、SE向けのSE証明書110gの、3種類のサービスサーバ証明書112を発行する。ここでSE用とは、SE間でチケットの移動する処理が可能なSEを意味する。SE間でチケットの移動ができなくてもよい場合には、SE証明書110gは発行しなくてよい。
改札機111g−1は、サービス管理者113gから改札機証明書112g−1を取得すると、SE101gのチケット登録領域108gに対して、チケットの改札に関連する処理のみ実行できる。発行サーバ111g−2は、サービス管理者113gから発行サーバ証明書112g−2を取得すると、SE101gのチケット登録領域108gに対して、新規チケットの発行、チケットの交換、返却、といった処理のみ実行できる。SE101gは、サービス管理者113gからSE証明書110gを取得すると、SE証明書110gを所有するSE101gとの間で、チケットの移動に関連する処理のみ実行できる。
このように、SE101gのチケット登録領域108gへのアクセスをサービス管理者から発行された発行サーバ証明書112g−2、改札機証明書112g−1、SE証明書110gの所有者のみに制限できる。また、複数の役割にわけてサービスサーバ証明書112を発行することで、サービスにおける役割に応じてチケット登録領域108gへの処理を制限できる。また、サービス管理者113gは、発行するサービスサーバ証明書112の種類により、発行手数料などを変えるといった柔軟な運営が可能となる。
<実施の形態2>
実施の形態2では、図5から図9を用いて、SE101とサービスサーバ111の認証の仕組みについて説明する。
図5は、SEの認証処理メッセージの例を示す図である。この認証処理メッセージは、大きく分けて、「認証開始」、「認証実行」、「通信終了」の3つからなる。認証実行で、認証に成功したら、通信相手格納領域107に、サービスサーバ証明書112により証明された権利を格納する。通信終了では、通信相手格納領域107の値を削除する。
このように、サービスアイテム登録領域108にアクセスするサービス独自の処理と、認証処理をわけることで、複数のサービス領域103をもつSE101の場合には認証処理を共通化し、無駄のない実装も可能となる。
図6は、SE101がサービスサーバの認証を行う場合のメッセージの例を示す図である。この認証処理動作においては、まず(1)で、ME100からSE101に認証の開始を要求するメッセージStartAccessが送信されると、SE101は、(2)で乱数Challengeを生成し、ME100に返す。ME100は、(3)で乱数Challengeをサービスサーバ111に送信する。サービスサーバ111は、乱数Challengeに署名をし(Sign_SErver(Challenge))、(4)で上記署名をした乱数(Sign_SErver(Challenge))をサービスサーバ証明書112(Cert_SErver)とともにME100に送る。ME100は、(5)で、サービスサーバ111から受信したSign_SErver(Challenge)とCert_SErverをSE101に送信する。Sign_SErver(Challenge)とCert_SErverをME100から受信したSE101は、サービス管理者証明書105を用いてCert_SErverを検証し、Challengeの署名と値を検証し、正しければ、Cert_SErverに証明されたサービスサーバ111の権利を通信相手格納領域107に格納する。その後SE101は、(6)において、処理の結果を通知するメッセージをME100に送信する。ME100は、(7)においてサービスサーバ111に認証結果を通知(Ack)してもよい。その後、サービス特有の処理を行う。サービスの処理が終了、または、通信の切断があった場合には、ME100は、(E1)においてSE101に通信終了のメッセージを送信する。これに対して、SE101は、(E2)において通信相手格納領域107の値を削除して、処理結果をME100に返す。
図7は、SE101とサービスサーバ111が相互認証を行う場合のメッセージの例を示す図である。
この相互認証処理動作においては、(3)までは、図6と同じである。(4)で、Sign_SErver(Challenge)とCert_SErverに加え、サービスサーバ111からME100へ乱数Challenge_2を送信する。ME100は、(5)で、サービスサーバ111から受信した乱数Challenge_2,Sign_SErver(Challenge)とCert_SErverをSE101に送信する。これらのパラメータを受信したSE101は、サービス管理者証明書105を用いてCert_SErverを検証し、Challengeの署名と値を検証し、正しければ、Cert_SErverに証明されたサービスサーバ111の権利を通信相手格納領域107に格納する。加えて、(6)で、乱数Challenge_2に署名をして(Sign_SE(Challenge_2))、SE証明書110(Cert_SE)とともにME100に送信する。ME100は、これらのパラメータを(7)でサービスサーバ111へ送信する。これらのパラメータを(7)で、受信したサービスサーバ111は、Cert_SEを検証し、Challenge_2の署名と値を検証する。サービスサーバ111は、(8)においてME100に対して処理結果を通知(Ack)してもよい。またME100は、(9)においてSE101に対して処理結果を通知(Ack)してもよい。その後の通信終了処理は図6と同じである。すなわち、サービスの処理が終了、または、通信の切断があった場合には、ME100は、(E1)においてSE101に通信終了のメッセージを送信する。これに対して、SE101は、(E2)において通信相手格納領域107の値を削除して、処理結果をME100に返す。
図8は、公開鍵暗号を使ったサーバ認証処理のメッセージ例を示す図である。このサーバ認証処理動作においては、まず、サービスサーバ111からME100を介して、SE101にサービスサーバ証明書112(Cert_SErver)を送信する((1)と(2))。SEは、送信されたCert_SErverから取得した公開鍵で、生成した乱数ChallengeとSE証明書110(Cert_SE)を暗号化し、サービスサーバ111に送り返す((3)と(4))。サービスサーバ111は、メッセージを復号化し、Cert_SEから取得したSEの公開鍵でChallengeを暗号化してME100を介してSE101に送信する((5)と(6))。SE101は処理の結果を通知してもよい。通信終了処理((E1)と(E2))は図6と同じである。
図9は、公開鍵暗号を使った相互認証処理のメッセージ例を示す図である。この相互認証処理動作においては、(4)のメッセージまでは、図8と同様である。(5)のメッセージで、Challengeと、サービスサーバ111からSE101への乱数Challenge_2に、SEの公開鍵で暗号化して送信する。SE101は、メッセージを復号化し、Challengeを検証し、Challenge_2をサービスサーバ111の公開鍵で暗号化して送信する((7)と(8))。通信終了処理((E1)と(E2))は図6と同じである。
このように、サービス管理者113が発行したサービスサーバ証明書112を用いて、SE101と認証を行うことにより、SE101へのアクセスを制限できる。
<実施の形態3>
実施の形態3では、図10から図22を用いて、セキュアモバイルサービスシステムを用いたチケットサービスについて説明する。実施例1では、図10と図11を用いてチケットデータの説明を、実施例2では、図12から図16を用いてチケットダウンロードの説明を、実施例3では、図17を用いて格納してあるチケットデータの格納を証明する処理の説明を、実施例4では、図18と図19を用いてチケット改札処理の説明を、実施例5では、図20から図22を用いてチケット移動処理の説明をする。
(実施例1)
図10と図11を用いてチケットデータとSE101への格納について説明する。まず、図10を用いてチケットデータについて説明する。チケットデータ1000(Ticket)は、改札必須部1001(Ticket_Variable)、チケット固定部1004(Ticket_S)、発行情報部1005(Issuer_Info)、改札情報部1006(Punch_info)からなっている。各部は共通のチケットID(TicketID)をもつ。改札必須部1001(Ticket_Variable)は、改札必須情報1002(TicketVariable)と、それに対する署名1003からなっている。署名1003は、SE101の署名でも、改札機111g−1の署名でも、発行者111g−2の署名でもよい。改札必須部1001は、チケットID(TicketID)、有効回数(ValidTime)、有効期限(ValidPeriod)、その他の改札に必須な情報(otherInfo)が含まれる。その他の改札に必須な情報(otherInfo)には、例えば、電車切符では、入場駅とその時刻などが入る。このように改札処理に必須な情報は、有効回数・有効期限など時間的な情報や、入場駅・コンサート会場など空間的な情報が、その改札処理の内容に応じて適宜含まれる。
チケットデータ1000(Ticket)において、改札必須部1001(Ticket_Variable)は必須であるが、チケット固定部1004(Ticket_S)、発行情報部1005(Issuer_Info)、改札情報部1006(Punch_info)はなくてもよいし、複数あってもよい。
チケット固定部1004(Ticket_S)は、チケトの固定情報(TicketStatic)に発行サーバ111g−2が署名をしたものである。チケットの固定情報(TicketStatic)には、このチケットに関する情報、ユーザへの表示情報などが含まれる。
発行情報部1005(Issuer_info)は、追加情報(additionalInfo)に発行サーバ111g−2が署名をしたものである。追加情報(additionalInfo)には、発行者から発信されるこのチケットへの追加情報、また、このチケットをもつユーザへの他のサービス案内などが含まれる。発行情報部1005(Issuer_Info)は、発行時にチケットに含まれることもあれば、後から発行者からメールで送信されたり、ユーザがダウンロードすることで追加できる。
改札情報部1006(Punch_info)は、追加情報(additionalInfo)に改札機111g−1が署名をしたものである。追加情報(additionalInfo)には、改札機からの追加情報、例えば、改札のログ記録だけでなく、コンサートであれば、最新のキャストであるとか、遊園地であれば、各アトラクションの混雑情報などの情報が考えられる。
以上の内容を、以下のように記述する。
チケットデータ:Ticket=Ticket_S,Ticket_V,Punch_info,Issuer_Infoチケット固定部:Ticket_S=Sign_Issuer(TicketStatic)改札必須部:Ticket_Variable=Sign_Issuer(TicketVariable)またはSign_Verifier(TicketVariable)、またはSign_SE(TicketVariable)発行情報部:Issuer_Info=Sign_Issuer(additionalInfo)改札情報部:Punch_info=Sign_verifier(additionalInfo)改札必須情報:TicketVariable=TicketID,Validtime,ValidPeriod,otherInfo。
このように、チケットデータ1000は、共通のチケットIDをもつ発行サーバ111g−2、SE101g、改札機111g−1の署名付きデータから成り立っており、増減も柔軟に行える構造になっている。
次に、図11を用いてチケットデータのSE101へ格納について説明する。SE101gへチケットデータ1000(Ticket)の格納処理が成功すると、改札必須情報1002(TicketVariable)がチケット登録領域(108g)に格納され、チケットデータ1000(Ticket)はチケット保存領域109gに格納される。
このように、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に格納することで、チケットデータ1000(Ticket)をタンパレジスタントでないメモリ上に格納する場合にも、暗号化する必要がない。理由は、チケット登録領域(108g)に格納されていることを証明するメッセージなしには、改札処理はできないので、コピーしたチケットは使えないからである。
そのため、ユーザがチケットデータ1000(Ticket)を自由にコピーしたり、メールに添付して友人に送信することができる。友人にチケットを譲りたいとき、まずチケットをメールなどで送信して友人がデータを見てから実際のチケット移動の処理を行うことができる。
また、チケット発行時も、発行サーバ111g−2は、発行情報部1005(Issuer_Info)に、このチケットは指定された期間内に支払いを済ませると有効になりますという旨の情報と支払いのアクセス先などを含む情報を記載しておく。そして、チケットデータをユーザにメールなどで送信する。このチケットデータ1000を購入したいユーザは発行情報部1005(Issuer_Info)に記載された情報どおりに支払い処理を済ませると、SE101のチケット登録領域108gへの登録処理が実行され、有効なチケットとなる。その登録処理のときには、チケットデータ1000(Ticket)のダウンロードは不要で、登録処理のみを行えばよい。
これにより、発行サーバ111g−2は、チケットのプロモーションの自由度が上がる。また、発行サーバ111g−2は、支払い前の整理券と支払い後のチケットを別に発行管理する必要がない。
(実施例2)
図12から図16を用いてチケットダウンロードを説明する。このチケットダウンロードの前に、注文や購入の処理があってもよい。PUSHサービスのようにサーバからアクセスがあってもよい。ダウンロード処理開始の前に、発行サーバ111g−2とME100gでチャレンジ・レスポンスなどによる認証を行ってもよい。実施の形態2に説明した認証方法を用いてもよい。
図12は、SE101gと発行サーバ111g−2で行う処理のためのインターフェイスの例を示す図である。大きく3つの機能がある。新規チケットのチケット登録領域108gへの登録、チケット登録領域108gへ登録されていることの証明、チケット登録領域108gへ登録されているチケットの変更である。このうち、チケット登録領域108gへ登録されているチケットの変更については、実施例3で説明する。
図13は、新規チケットをダウンロードしてチケット登録領域108gへ登録する処理のメッセージ例を示している。この図では、実施の形態2に説明した認証処理はすでに成功したことを前提としている。また、発行サーバ111g−2とME間はトランスポート層のセキュア通信路が確保されているものとする。
まず、発行サーバ111g−2からME100gを介してSE101gにチケットデータ1000が送信され((1)と(2))、SE101gは、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する。SE101gは登録処理結果を通知してもよい((3)と(4))。
図14は、SE101gが登録処理結果の通知に、署名付きメッセージを送る例を示す図である。この図では、実施の形態2に説明した認証処理はすでに成功したことを前提としている。また、発行サーバ111g−2とME間はトランスポート層のセキュア通信路が確保されているものとする。
まず、発行サーバ111g−2からME100gを介してSE101gにチケットデータ1000と乱数Challengeが送信され((1)と(2))、SE101gは、チケットデータ1000を検証し、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する。チケットの検証はME100gで行ってもよい。SE101gは、チケット登録要求に対する応答であるということを示すフラグと、登録した改札必須情報1002(CurrentTicketVariable)と、Challengeに署名をして(Sign_SE(REGISTERTICKET,CurrentTicketVariable,Challenge))、送り返す((3)と(4))。発行サーバ111g−2は、SEの署名を検証し、CurrentTicketVariableとChallengeの値を検証する。ME100gは、(4)送信後にチケットをチケット保存領域109gに保存してもよい。
このように、発行サーバ111g−2は、SE101gに登録された改札必須情報1002(CurrentTicketVariable)を確認することができる。また乱数Challengeが含まれているので、現在の登録情報であることが確認できる。
図15は、配信鍵を用いたダウンロードメッセージの例を示す図である。この例では、配信鍵(key_Deliver)でチケットデータ1000を暗号化し、配信鍵(key_Deliver)をSE101の公開鍵104dで暗号化して、発行サーバ111g−2からSE101にダウンロードする((1)と(2))。SE101gは、配信鍵を復号化してから、チケットデータ1000を復号化して、チケットの検証を行ってから、改札必須情報1002(TicketVariable)をSE101のチケット登録領域(108g)に登録する((3))。(4)で、ME100gは、SE101gから復号化したチケットを受け取ると、チケットをチケット保存領域109gに保存する。
図16は、公開鍵暗号を用いたダウンロードメッセージの例を示す図である。この例では、まず、ME100gから発行サーバ111g−2にSE証明書110gを送信する(0)。発行サーバ111g−2は、乱数Challengeとチケットデータ1000をSE101の公開鍵で暗号化して送信する((1)と(2))。
(実施例3)
図17を用いて、チケット登録領域108gに登録してあるチケットデータを証明する処理を説明する。図17では、発行サーバ111g−2が、SEから通信エラーなどにより登録処理に失敗したことなどによるチケットの再登録要求を受信したときに、ほんとうにチケット登録領域108gに登録されていないのか確認する処理を示す。SE101gは、発行サーバ111g−2からチケットIDとChallengeを受信し((1)と(2))、チケット登録領域108gから対応するチケットIDを検索し、登録されていれば、現在の登録データ(CurrentTicketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして(Sign_SE(PROVETICKET,CurrentTicketVariable,Challenge))、発行サーバ111g−2に送信する((3)と(4))。発行サーバ111g−2は、署名を検証し、CurrentTicketVariableとChallengeの値を検証する。
このように、この機能を用いることで、発行サーバ111g−2は、SE101gから再登録要求が来た場合にも本当に登録に失敗したのか確認できる。また、この機能があるため、発行時のダウンロード処理では、図14に示すメッセージ(3)と(4)は省略して高速化することができる。
発行サーバ111g−2だけでなく、改札機111g−1も、サポートするするチケットがあるか確認したいときに使用することができる。
この例では、チケットIDを指定したが、チケットIDをパターンマッチ指定して一度に複数の登録証明を取得することも考えられる。
また、この例では、現在の登録データ(CurrentTicketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして返すが、チケットIDのみ、またはチケットIDとChallengeのみなどといったことも考えられる。
また、サービスサーバ111の種類によってデータの種類が変わることも考えられる。例えば、発行サーバ111g−2には、現在の登録データ(CurrentTieketVariable)と、Challengeと、登録証明要求に応答するメッセージであることを示すフラグに署名をして返し、改札機には、チケットIDとChallengeと登録証明要求に応答するメッセージであることを示すフラグに署名をして返すことも考えられる。署名データには、登録証明要求に応答するメッセージであることを示すフラグが含まれているので、他の処理には用いることができない。
この機能により、サービスサーバ111は、サービスアイテム登録領域108gに登録されている内容を変えることなく、現在の登録データを知ることができる。
(実施例4)
図18と図19を用いてチケット改札処理を説明する。図18はチケット改札処理のメッセージの例を示す図である。この例では、まず、改札機111g−1は、改札命令(Punch_Order)を生成する。改札命令(Punch_Order)は、PunchOrderに改札機11g−1の署名をつけたデータである。ここでは、PunchOrderは、改札後の改札必須情報の値(UpdatedTicketVariable)を指定するものとする。この他にも、増減する料を指定する方法も考えられる。
まず、改札機111g−1は、改札命令(Punch_Order)と乱数Challengeと改札情報部1006(Punch_Info)をME100gに送信する((1))。ME101gは改札情報部1006をSE101gに送らなくてもよい。SE101gは、(2)で受信した改札命令(Punch_Order)の署名を検証し、改札命令(Punch_Order)で指定された通りにチケット登録領域108gに登録してある対応するデータを更新する。SE101gは、更新後のチケット登録領域に登録されたデータ(CurrentTicketVariable)と、乱数Challengeと、変更要求に応答するメッセージであるということを示すフラグに署名したデータ(Sign_SE(VERIFYTICKET,CurrentTicketVariable,Challenge))と、乱数Challenge_2を改札機111g−1に送信する((3)と(4))。改札機111g−1は、署名を検証し、CurrentTicketVariableとChallengeの値を検証し、乱数Challenge_2とPunchOrderと変更要求に応答するメッセージに確認するメッセージであるというフラグに署名してSE101gに返す((5)と(6))。ここで、PunchOrderはふくめなくてもよい。また、変更要求に応答するメッセージに確認するメッセージであるというフラグは含めなくてもよい。また、(3)と(4)において、Challenge_2はなくてもよい。この場合、(5)と(6)はなくてもよい。
図19に改札処理の前と後のチケットの格納モデルを説明する。この例では、まず、改札前の状態として、チケット登録領域108gに改札必須情報部1002aが登録されており、チケット保存領域109gに、チケットデータ1000の一部として、チケット固定部1004と改札情報必須部1003aと発行情報部1005が格納されている。登録されているチケットデータ1000は、改札情報必須部1003を持たなくてもよいし、発行時のまま保持していてもいいし、登録更新ごとに、SE101gの署名データに置き換えてもよいし、改札機111g−1から送信されたPunch−orderに置き換えても良い。ユーザにチケットデータ1000の状態を表示するには、チケット登録領域108gの情報を提供するのが望ましい。この例では、改札後に、チケット登録領域108gに改札必須情報部1002bが更新されると、改札情報必須部1003bも、更新されている。そして新たに改札情報部1006(Punch_Info)が追加されている。一度の改札で、複数の改札情報部1006(Punch_Info)が追加されることも考えられる。
(実施例5)
図20から図22を用いてSE間でチケットを移動する処理の説明をする。この処理動作では、ひとつのチケット全体(有効な価値すべて)を移動するほかに、例えば回数券だったら、残り有効回数のうちn回を移動、といった処理も可能である。
図20は、SE間のチケット移動処理のSEのメッセージの例を示す図である。大きく2つあり、一つ目は他のSEから移動されたチケットの登録、2つ目は、他のSEへ移動したチケットの削除(または更新)である。
図21は、SE間でチケットが移動するメッセージの例を示す図である。図21において、チケットの登録元のMEをME1(100g−1)、チケットの移動先のMEをME2(100g−2)とする。同様にチケットの登録元のSEをSE1(101g−1)、チケットの移動先のSEをSE2(101g−2)とする。また、図21では、SE間の相互認証は成功したものとする。
まず、ユーザが移動するチケットを指定し、移動処理の確認操作をすると、ME1(100g−1)は、移動させるサービスアイテムMoveOfferを生成する。ここでは、MoveOfferは、チケット移動先のチケット登録領域108gに登録される改札必須情報(MovedTicketVariable)とする。他にも、SE1に残す改札必須情報(TicketVariable)の値を指定する方法なども考えられる。MoveOfferには、チケットIDが含まれる。SE1は、(1)でMoveOfferを受け取ると、MoveOfferに指定されたサービスアイテムを、チケット登録領域108gに登録されている改札必須情報(TicketVariable)から移動する。MoveOfferの値が現在の改札必須情報(CurrentTicketVariable)に等しい場合、チケット登録領域108gから削除してもよい。SE1は、MoveOffer通りにチケット登録領域108gに登録されている改札必須情報(TicketVariable)を移動したことを示すメッセージとして、MoveOfferと、乱数Challengeと移動した処理を示すメッセージであるということを示すフラグに署名をして(Sign_SE(MOVEOUTTICKET,MoveOffer))、SE2に送信する((2)と(3)と(4))。続いて、SE2は署名を検証し、MoveOfferに指定されたとおりにSE2のチケット登録領域108gに登録する。そして、登録した改札必須情報とChallengeと移動処理に応答するメッセージであること示すフラグに署名した(Sign_SE(MOVEINTICKET,current_TicketVariable,Challenge))ものと乱数Challenge_2をSE1に返す((5)と(6)と(7))。SE1は、署名を検証し、current_TicketVariableとChallengeの値を検証し、正しかったら、Challenge_2に署名をしてSE2に返す((8)と(9)と(10))。
SE1は、(7)がないと移動処理を完了できず、移動処理はキャンセルされ、もとに戻る。SE2は、(10)がないと、移動処理を完了できず、移動処理はキャンセルされ、もとに戻る。
このように、移動元のSE101が、登録されている価値から移動する価値情報を減らしてから、すでに移動したことを証明するデータ(例えば、移動したサービスアイテムに署名をつける)を移動先に送信し、移動先のSEはそのすでに移動したことを証明するデータに基づいて、登録処理を行い、登録したことを証明するデータ(例えば、登録した内容に署名をつける)を移動元のSEに送り返すことで、移動元のSEは移動処理を完了できる。また、移動元のSEの移動処理完了を証明するデータを受信すると、移動先のSEも処理を完了する。
この結果、SE1とSE2の2つともに同時にサービスアイテムが存在することなく、SE間のサービスアイテムの移動が可能となる。
図22に公開鍵暗号方式を用いた譲渡処理動作のモデル図を示す。この処理動作では、メッセージの内容は、図21とほぼ同じだが、メッセージを公開鍵暗号で暗号化して通信している。
<実施の形態4>
実施の形態4では、図23から図25を用いて、認証処理とチケットサービス独自の処理のメッセージを結合した実施例を示す。図23は、サーバ認証とチケットダウンロード処理の混合処理のメッセージ例を示す図である。この図は、図6と図13を結合したメッセージの例を示すもので、図23の(4)、(5)、(6)において、図6の(4)、(5)、(6)と図13の(1)、(2)、(3)を統合した。また、図23の(4)において、チケットデータ1000の改札必須部1001にChallengeを含めて発行することで、SE101gでChallengeを受信した先から来たチケットであるという検証ができる。図23の(5)のメッセージは、チケットデータ1000を送っても、改札必須部1001のみを送信してもよい。
これにより、サーバ認証とチケットのダウンロード処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
図24は、サーバ認証とチケット改札処理の混合処理のメッセージ例を示す図である。この図は、図6と図18を結合したメッセージ例で、図24の(4)、(5)、(6)において、図6の(4)、(5)、(6)と図18の(1)、(2)、(3)を統合した。図24の(4)において、Punch_OrderにChallenge_0を含めて発行することで、SE101gでChallengeを受信した先から来た更新要求であるという検証ができる。
これにより、サーバ認証とチケットの改札処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
図25は、相互認証とSE間のチケット移動処理の混合メッセージの例を示す図である。この図は、図7と図21を結合したメッセージ例を示しており、図7の(4)から、図6の(4)と図18の(1)を統合した。図25では、SE証明書110を(2)で送信しているが、(8)で送信してもよい。
この図では、移動先のユーザが移動処理開始の操作をすると移動処理用の認証処理が移動元のME1に、送信され、そこで移動元のユーザが移動処理開始操作を行うことで、処理が続行する例を示している。
図25の(4)において、Move_OfferにChallenge_0を含めて発行することで、SE101gでChallengeを受信したSEから来た移動済み証明であるという検証ができる。これにより、サーバ認証とチケットの移動処理を別々に行うより、セキュリティを保ったまま、処理を効率的に行えるようになった。
以上のように、署名とChallengeを用いたメッセージを交換しあうことで、認証を行うと同時にメッセージデータの再利用防止し、署名付きメッセージで否認を防止することもできる。その結果、より少ないメッセージでもセキュアに処理を行うことが出来る。
<実施の形態5>
実施の形態5では、図26から図28を用いて、処理能力の低いSEを用いた実施例を示す。図26から図28は、それぞれ図23から図25のメッセージ例に対応する。
処理能力が高く、安いSEが普及するまでは、それほど処理能力の高くないSEを使わなければいけない。そのため、SEで行うべき処理をMEで肩代わりし、最低限守るべき処理のみをSEで行う実施例を以下に示す。市場に、処理能力の高くないSEと高性能なSEが混在しても、サービスサーバのインターフェイスが共通であることが望ましい。
この実施の形態では、証明書の検証、署名の検証はMEで行い、Challengeの検証、チケット登録領域へのアクセスはSEで行う例を示す。図26は、図23に相当するダウンロード処理の例を示す図である。この図26では、ME100gで、発行サーバ証明書112g−2の検証、チケットの検証を行っている。
図27は、図24に相当する改札処理のメッセージ例を示す図である。この図27では、ME100gで、改札機証明書112g−1の検証、Punch_Orderの検証を行っている。
図28は、図25に相当するSE間のチケット移動処理のメッセージ例を示す図である。この図28では、同様に、譲渡元と譲渡先のME100gで、証明書の検証とメッセージ署名の検証を行っている。これにより、処理能力が高いSEが普及するまでは、SEの処理をMEで実行し、処理能力の高いSEが普及していく移行期には、多様な性能なSEが混在するが、サービスサーバ側のインターフェイスは変えずに対応することができる。
<実施の形態6>
実施の形態6では、図29から図31を用いて、通信路のトランスポート層の暗号化がない場合におけるチケット処理を説明する。通信路の暗号化がないと、乱数が盗み見され、成りすましが可能となる。そこで、乱数のみ公開鍵暗号を用いて送信する例について説明する。このほかに、共通鍵を用いることも考えられる。
図29を用いてチケットのダウンロード処理について説明する。まず、発行サーバ111g−2からSE101gに、発行サーバ証明書112g−2を送信する((1)と(2))。SE101gは、送信された証明書を検証し、正しい発行サーバ証明書だった場合、通信相手格納領域に登録する。また、乱数Challengeを生成し、発行サーバの公開鍵で暗号化し(Encrypt_Issuer{Challenge})、送り返す((3)と(4))。
発行サーバ111g_2は、Encrypt_Issuer{Challenge}を復号化し、Challengeを取り出す。改札必須情報1002にChallengeを含め、発行サーバの署名をつけて、チケットの改札必須部1003(Ticket_V)を生成する。あらかじめ生成しておいたチケットの他の部分と合わせてチケットデータ1000(Ticket)とし、送信する((5)と(6))。MEはTicketをそのままSEにおくってもよい。チケットデータ1000の改札必須部1003のみ送ってもよい。
SEは、改札必須部1003の署名を検証し、正しければ、TicketVariableの値をチケット登録領域108gに登録する。処理が成功した場合、処理成功通知を発行サーバに送る((7)と(8))。(7)と(8)は署名付きデータでもよい。(7)と(8)は、現在登録されている改札必須情報を証明するSEの署名付きデータでもよい。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットのダウンロードがセキュアに行えるようになる。
図30を用いてチケットの改札処理について説明する。まず、改札機111g−1からSE101gに、改札機証明書112g−1を送信する(1)。MEは、改札するチケットのチケットIDと、改札機証明書112g−1を送信する(2)。チケットIDは、改札機111g−1から送信されてもよいし、ユーザ操作によりMEで付加してもよい。
SE101gは、送信された証明書を検証し、正しい改札機証明書だった場合、通信相手格納領域に登録する。また、乱数Challenge_0を生成し、改札機の公開鍵で暗号化する(Encrypt_Verifier{Challenge_0})。SEは、指定されたチケットIDに対応するチケット登録領域に登録されたチケット情報(CurrentTicketVariable)と、CurrentTicketVariableで指定されたチケットを発行サーバに提示するメッセージであることを示すフラグとを含むデータに署名をする(Sign_SE(SHOWTICKET,CurrentTicketVariable))。
また、Encrypt_Verifier{Challenge_0}とSign_SE(SHOWTICKET,CurrentTicketVariable)とSE証明書をとともに送り返す((3)と(4))。ここで、SE証明書は、SE公開鍵でもよい。
改札機111g−1は、Encrypt_SE(Challenge_0)を復号化してChallenge_0をとりだす。また、Sign_SE(SHOWTICKET,CurrentTicketVariable)の署名を検証し、使用可能なチケットかどうか判断する。使用可能な場合、Punch_Orderを生成する。Punch_Orderは、PunchOrderに改札機の署名をつけたものだが、この実施例では、チケットIDや、改札後の例えば有効期限や残り回数などの値である情報に加えて、Challenge_0を含めたデータに改札機の署名をしたものを意味する。ここでは、PunchOrderは、改札後のチケットの改札必須情報を指定する。改札後また、必要であれば、Punch_Infoを生成する。Punch_Infoはなくてもよい。複数あってもよい。また、Challengeを生成し、SEの公開鍵で暗号化する(Encrypt_SE(Challenge))。これら改札機で生成したデータである、Punch_Order、Punch_Info、Encrypt_SE(Challenge)をSEに送信する((5)と(6))。
SE101は、Encrypt_SE(Challenge)を復号化して、Challengeを取り出す。また、Punch_Orderの署名を検証する。PunchOxderに含まれるChallenge_0と、(3)で送信したChallenge_0を検証し、正しかったら変更処理を行う。チケット登録領域108gの、PunchOrderに指定されたチケットIDのデータを、PunchOrderに指定されたデータに書き換える。チケット登録領域108gで更新後の改札必須情報(CurrentTicketVariable)と、Challengeと、チケット登録領域108gのデータ更新を証明するデータであるということを示すフラグ、を含めたデータにSE101gの署名をして、改札機111g−1に送り返す((7)と(8))。
改札機111g−1は、Challengeを(5)で送った値と比較し、正しかったら、CurrentTicketVariableと(5)で送ったPunchOrderを比較する。このメッセージを証明として保存しておいても良い。正しかったら、CurrentTicketVariableの値に変更されたことを確認したという証明として、CurrentTicketVariableと、変更されたことを確認したという証明であるということを示すメッセージを含むデータに、改札機111g−1の署名をして(Sign_SE(VERIFYTICKETCONF,CurrentTicketVariable))送り返す((9)と(10))。
SE101gは、Sign_SE(VERIFYTICKETCONF,CurrentTicketVariable)の署名を検証し、CurrentTicketVariableと、(7)で送った値を比較して、正しかったら変更処理完了。このメッセージを変更確認の証明として保存しておいてもよい。
このあと、改札機111g−1は、(11)と(12)で処理成功通知(ACK)を受信したのち、ユーザにサービスを提供してもよいし、(11)と(12)はなくてもよい。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットの改札処理がセキュアに行えるようになる。
図31を用いてチケットの移動処理について説明する。このチケットの移動処理において、移動元ME1は、どのチケット価値のどのくらい移動するのかを示す情報であるMoveOfferを生成する。ユーザが入力して決めてもよいし、相手から指定されるのでも良い。MoveOfferは、移動先のチケットの、チケットIDと有効期限や回数などを含む改札必須情報となる。MoveOfferは、(4)のメッセージを送信する前までに作成すればよい。
まず、移動元ME1は移動元SE1からSE1証明書を取得し((1)と(2))、移動先SE2に送信する((3)と(4))。
移動先SE2は、SE1証明書を検証し、正しかったら、通信相手格納領域に登録する。また、乱数Challenge_0を生成し、SE1の公開鍵で暗号化し(Encrypt_SE1(Challenge_0))、SE2証明書とともに送り返す((5)と(6))。移動元ME1は、Encrypt_SE1(Challenge_0)、SE2証明書に加えて、MoveOfferをSE1に送信する(7)。
SE1は、SE2証明書を検証し、正しかったら、通信相手格納領域に登録する。また、Encrypt_SE1(Challenge_0)を復号化する。
また、MoveOfferに指定されたチケットIDのデータをチケット登録領域に登録されているデータと比較して検証してもよい。例えば有効期限などは、MoveOfferの方が長くないか検証してもよい。また、有効回数であれば、MoveOfferの回数の方が多くないか検証してもよい。MoveOfferと現在のチケット登録領域のデータ(CurrentTicketVariable)と、Challenge_0と、指定したチケットの価値が移動してもよいことを証明するデータであることを示すフラグを含むデータにSE1の署名をするSign_SE(MOVEOUTTICKET,MoveOffer,CurrentTicketVaxiable,Challenge_0)。
また、乱数Challengeを生成する。Challengeを、チケット登録領域108gの更新したチケットIDに対応するデータとして格納してもよい。ChallengeをSE2の公開鍵で暗号化するEncrypt_SE2(Challenge)。
SE1は、SE2に、Sign_SE(MOVEOUTTICKET,MoveOffer,,CurrentTicketVariable,Challenge_0)とEncrypt_SE2(Challenge)を送信する((8)と(9)と(10))。SE2は、Encrypt_SE2(Challenge)を復号化する。また、Sign_SE(MOVEOUTTICKET,MoveOffer,Challenge_0)の署名を検証する。Challenge_0と(5)で送った値とを検証する。正しければ、MoveOfferの情報をチケット登録領域108gに登録する。SE2のチケット登録領域108gに登録後の改札必須情報(CurrentTicketVariableSE2)と、CurrentTicketVariableSE2で指定したとおりに登録したことを証明するメッセージであることを示すフラグと、Challengeを含むデータに、SE2の署名をして(Sign_SE2(MOVEINTICKET,CurrentTicketVariableSE2,Challenge))、SE1に送信する((11)と(12)と(13))。
SE1は、Sign_SE2(MOVEINTICKET,CurrentTicketVariableSE2,Challenge)の署名を検証する。また、Challengeと(7)で送信した値を比較する。正しかった場合、CurrentTicketVariableSE2と(7)で送ったMoveOfferを検証する。正しかった場合、MoveOfferに回数があれば、指定された回数を減らすなどして、MoveOfferの価値だけ移動した後の価値になるようチケット登録領域のデータを変更する。
現在の改札必須情報(CurrentTicketVariableSE1)に、移動後のデータはCurrentTicketVariableSE1であるように移動処理を完了したことを証明するメッセージであることを示すフラグ、を含むデータに署名して(Sign_SE1(MOVEOUTCONF,CurrentTicketVariableSE1))、SE2に送信する((13)と(14)と(15))。
SE2は、Sign_SE1(MOVEOUTCONF,CurrentTicketVariableSE1)の署名を検証する。正しければ、CurrentTicketVariableSE1を(10)で受信したMoveOffer,CurrentTicketVariableの値と比較検証する。正しければ、処理成功通知(ACK)を送信し((16)と(17)と(18))、移動処理は完了する。この処理が成功しないと、移動処理はキャンセルされ、移動処理により登録されたチケットはキャンセルされる。処理成功通知は、SE2の署名付きデータでもよい。
SE1はSE2から処理成功通知(ACK)を受信すると、移動処理を完了する。処理成功通知を受信しないと移動処理はキャンセルされる。
この実施例では、SE1については、(8)のメッセージ送信前に実際の移動処理は行われず、(14)のメッセージ送信前に移動処理が実行されたが、(8)のメッセージの前に、実施の形態3の実施例に示す処理フローを追加することで、(8)のメッセージ送信前に実際の移動処理を行うことも考えられる。
このように、乱数を送信時に暗号化するだけで、メッセージ全体を暗号化しなくても、チケットの移動処理がセキュアに行えるようになる。また、通信路のトランスポート層の暗号化がない場合にも、大容量の暗号化を用いずに、セキュアなサービス処理が可能となる。
<実施の形態7>
実施の形態7では、図32から図34を用いて、通信路のトランスポート層の暗号化がない場合における処理能力の高くないSEを使ったチケット処理を説明する。実施の形態6ではSEで行っていた証明書の検証、乱数の暗号化、復号化、署名検証といった処理を、実施の形態7ではMEで行うことを特徴とする。
図32は、実施の形態6における図29に相当するダウンロード処理の例を示す図である。図33は、図30に相当する改札処理の例を示す図である。図34は、図31に相当するSE間のチケット移動処理の例を示す図である。
実施の形態7では、SEは、乱数の生成、乱数の検証、チケットの登録、署名の生成を行っているが、さらに処理を簡素化し、SEではチケットの登録、署名の生成のみを行うことも考えられる。
このように、通信路のトランスポート層の暗号化がない場合にも、SEの性能に応じてMEとの処理分担を調整することで、実施の形態7が目指す世界への移行期においても、サーバ側のシステムは変更することなくサービスを続けることができる。
<実施の形態8>
実施の形態8では、図35から図39を用いて、証明書を用いた相互認証処理を含む実施例を示す。それぞれ、図35は図23、図36は図17、図37から図38は図24、図39は図25のメッセージ例に対応する。一部表記が変わっているが、それぞれIssuerは、図23の発行サーバ111g−2をあらわす。Randomは、図23のChallengeに相当する。TicketVは、改札必須情報1002に相当し、チケットIDや、有効度数、有効期限など改札処理に必須な情報を示す。
また、TicketIDは、このチケット処理を行うチケットアプリケーション種別を示すチケットシステムID、イベントチケットや回数券などといったチケットタイプID、特定のイベントなどを示すチケット種別ID、通し番号などのようにチケット一枚一枚ユニークに振られたシリアル番号など、何種類かあり、またこの組み合わせで指定することができる。こうすることで、場所や状況に応じ、確認したいチケットを効率的に特定することができる。
図35は、図23に相当するダウンロード処理の例を示す。図35では、図23に加えてメッセージ(1)から(3)で、サーバがSEを認証する処理を行っている。これにより、正しいSEにチケット登録処理を行うことができる。
図35では、SEに対するプリミティブが以下に示すように2つある。ダウンロード処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(ダウンロード処理のプリミティブ1)
プリミティブ名…StartRegistration
入力:(2)のメッセージ…Cert_Issuer,Random1
出力:(3)のメッセージ…Sign_SE(STARTREG,Random1),Random2
処理…入力された発行サーバ証明書112g−2(Cert_I)を検証する。正しければ、署名目的と入力された乱数に署名をしたデータ(Sign_I(STARTREG,Random1))と、あらたに生成した乱数(Random2)を返す。証明書の公開鍵と乱数の値(Random2)は格納しておく。
(ダウンロード処理のプリミティブ2)
プリミティブ名…Registration
入力:(6)のメッセージ…Sign_I(TicketV,Random2)
出力:(7)のメッセージ…ACK
処理…Random2をStartRegistrationで生成した乱数(Random2)と照合し、正しければ、入力されたデータの署名を、StartRegistration取得した公開鍵で検証する。正しければTicketVを格納する。正常に処理が終われば、ACKを返す。
(3)には、図23と同様に発行されるチケットに含まれることとなるRandom2が含まれる。このSE101g−1で生成したRandom2を、発行するチケットの改札必須情報1002に含めて署名生成しているため、通信中のチケットデータ1000の差し替えを阻止できている。理由は、Challenge値が重複することは確率的に無視できることに加え、Challengeが異なると署名は異なり、発行サーバの秘密鍵を知らない人間には署名が作成できないため、同じ署名になることもなく、どこかでコピーした値に差し替えることは出来ないからである。チケットデータ1000だけ盗聴しても、そこに含まれるRandom2を生成したSE101g−1しか、そのチケットを登録できないセキュアな処理となっている。
また、(3)の署名つき乱数にも、署名の目的(ここでは、チケットの登録開始のための認証処理)が含まれるので、悪意のあるユーザが、このメッセージを他の目的で再利用することができなくなっている。
ME100g−1では、(5)受信時に、改札必須部1001の検証はSEに任せるが、その他の例えば、チケット固定部1004の検証はMEで行う。このように、処理を分散し、SEでの処理を最小限にすることで、早い処理が可能となる。チケット固定部1004の署名検証を偽っても、実害のない嫌がらせにしかならないので、チケット固定部には署名をつけない場合もある。こうすることで、チケットデータ長を短縮でき、また、チケット固定部1004の署名検証処理をしなくて済む。
図36は図17に相当するチケットの証明処理の例を示す。メッセージの名前が異なっているが、処理はまったく同様である。
図35では、SEに対するプリミティブが以下に示すように1つある。証明処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(証明処理のプリミティブ)
プリミティブ名…Check
入力:(2)のメッセージ…TicketID,Random1
出力:(3)のメッセージ…Sign_SE(CHECK,TicketV,Random1)
処理…入力されたTicketIDの値を含むTicketVが格納されているか検索する。あれば、署名の目的と、そのTicketVと入力されたRandom1を含む値に署名を生成し、戻り値として返す。
このフローは、定期券や身分証明書など、チケットの改札処理によってチケットデータが変化しない場合の改札処理にも用いることができる。改札処理に用いる場合、図36のIssuerが改札機(Verifier)111g−1に変わる。また、SE101g−1と改札機111g−1の通信時間に制限時間を設けてもよい。こうすることで、以下に示す不正を防ぐことができる。
(1)不正端末が、改札機から通常手続きとして、Challenge、TicketIDをもらう。
(2)上記のChallenge、TicketIDを、(改札機から来たかのようにSEを騙して)正規端末に入力して、Challengeと価値部に関する署名を生成させる。
(3)上記の正規端末作成の署名を、不正端末は受け取り、改札機に送信して改札をとおる。
図37は、図24に相当する改札処理の例を示す。改札処理には、図36で説明した定期券や会員証のような改札時に価値が減らないサービスと、回数券やプリペイドカードのような改札処理が一度で終わるサービスと、電車のイオカードのような入場と退場の処理が必要なサービスがある。
図37では、回数券やプリペイドカードのような改札処理が一度で終わるサービスと、電車のイオカードのようなサービスの入場処理のみを示す。このようにサービスごとにプリミティブを分けることで、処理を最適化し、高速に処理を行うことができる。
図37には、SEのプリミティブが以下に示すように2つある。改札処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(改札処理のプリミティブ1)
プリミティブ名…StartTansaction
入力:(2)のメッセージ…Cert_Verifier,TicketID,Min_V
出力:(3)のメッセージ…Random1
処理…入力された改札機証明書Cert_Verifier112g−1を検証する。正しければ、指定されたTicketIDの値を含むTicketVが格納されているか検索する。Min_Vが有効度数として入力された場合、検索したTicketVの有効度数がMin_V以上か検証する。正しければ、あらたに生成した乱数を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。TicketIDとMin_Vはオプション機能としてもよい。
(改札処理のプリミティブ2)
プリミティブ名…Transaction
入力:(6)のメッセージ…Trans_Order,Random2,T
出力:(7)のメッセージ…Sign_SE(TRANSACTION,TicketV,Random2,T)
処理…StartTransactionまたはPreSEntationで生成したRandom1と、Trans_Orderに含まれる乱数の値を比較検証する。正しければ、入力の署名付きデータ(Trans_Order)の署名を、StartTransactionまたはPreSEntationで取得した公開鍵で検証する。正しければ、Trans_Orderに指定されたTicketVの値を指定された値減額し、GateInfoがあれば、書き換える。署名の目的と、更新後のTicketVの値と、入力されたRandom2およびTを含むデータ(TRANSACTION,TicketV,Random2,T)に電子署名を生成したデータを返す。
図37では、図24の処理に加え、(1)のメッセージで改札機(Verifier)111g−1からTicketIDを送っているので、ユーザが事前にチケットを選ばなくても、すべて自動的に改札処理が行えるようになった。また、(1)のメッセージでMin_V(最低限必要な有効度数など)をおくるようにしたため、実際の改札処理(Transaction)をする前に、度数が足りない場合などの判定が早く行える。
また、(5)で、改札機(Verifier)111g−1側の時間情報を送るようにし、このデータも(6)のデータに含めることで、実運用中に発生した障害処理の判定に時間情報も参照できるようになり、判断が行いやすくなった。
(6)のメッセージに含まれるTrans_Orderは、TicketIDと、減額する値(有効回数を何回、有効度数を何度、など)とStartTransactionで生成したRandom1を含む値にVerifierが署名したデータである。署名対象データの中に、他の情報(GateInfo:入退場情報など)が必要な場合、含まれることもある。
本実施の形態では、改札処理のたびに、減額していく処理を示したが、限度回数や限度度数を示す値と、累積値を表す値を別につくり、処理のたびに累積値を増やしていくという方法も可能である。このように、初期値と累積値を別にもつことで、初期値と累積値をいつでも確認することができる。
また、メッセージの(5)、(7)には、それぞれ、相手から送られた乱数が含まれるので、通信路上の差し替え攻撃を阻止できており、セキュアな通信となっている。
ME100g−1は、(5)のメッセージに含まれるTrans_Orderと(7)のメッセージに含まれるSign_SE(TRANSACTION,TicketV,Random2,T)を格納しておく。こうすることで、たとえ改札機が壊れているなど場合にも、これらのメッセージを示すことで、どの改札機に対してどんな改札処理を行ったのか、証明することができる。
図38も、図24に相当する改札処理を示しているが、図38では、電車のイオカードのようなサービスの退場処理のみを示す。
図37で示した処理と異なり、PreSEntationプリミティブを追加したので、改札処理の前に、入場時の情報を改札機111g−1に提示し、改札機111g−1は提示された入場情報に基づいて、精算の計算を行い、Trans_Orderを生成できる。
図37には、SEのプリミティブが2つある。1つ目のプリミティブを以下に示す。改札処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(改札処理のプリミティブ1)
プリミティブ名…PreSEntation
入力:(2)のメッセージ…Cert_Verifier,TicketID,Random
出力:(3)のメッセージ…Sign_SE(PRESENTATION,TicketV,Random3),Random1
処理…入力された改札機証明書Cert_Verifier112g−1を検証する。正しければ、入力されたTicketIDの値を含むTicketVが格納されているか検索する。存在すれば、署名の目的と、指定されたTicketVとRandom3を含む値(PRESENTATION,TicketV,Random3))に署名を生成したデータと、新たに生成した乱数(Random1)を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。
2つ目のプリミティブは図37で説明したTransactionプリミティブである。図37と図38は、(5)から(7)のメッセージがまったく同じである。二つのサービスを同じプリミティブで実装できるため、効率がよくなっている。例えば、今まで回数券サービスしかサポートしていなかったSE101g−1でも、PreSEntationプリミティブだけ実装すれば、電車のイオカードのような退場時に入場時の情報を参照して精算処理が必要なサービスを実現できる。
また、メッセージの(4)、(5)、(7)には、それぞれ、相手から送られた乱数が含まれるので、通信路上の差し替え攻撃を阻止できており、セキュアな通信となっている。
ME100g−1は、(5)のメッセージに含まれるTrans_Orderと(7)のメッセージに含まれるSign_SE(TRANSACTION,TicketV,Random2,T)を格納しておく。こうすることで、たとえ改札機が壊れているなど場合にも、これらのメッセージを示すことで、どの改札機に対してどんな改札処理を行ったのか、証明することができる。なお、メッセージ(4)に人数を指定するパラメータを加えても良い。こうすることで、Verifierに人数を自動検知する機能がない場合にも、Verifierは、複数人分や、大人一人とこども一人といった細かい依頼に応じたTrans_Orderを生成することができる。
図39は、図25に相当するSE間のチケット移動処理の例を示す。図39では、図25と異なり、SE1の証明書送信も含んだメッセージ図を示す。また、最適化して、確認メッセージを省いた。
図39には以下に示すように4つのプリミティブがある。送り手側に2つ、受け手側に2つである。移動処理のプリミティブを定義することにより、MEとSE間の互換性が保障できる。
(移動処理のプリミティブ1)
プリミティブ名…StartTransfer
入力:(2)のメッセージ…Cert_SE1
出力:(3)のメッセージ…Random1
処理…チケットを受け取る側のSE2の処理。入力されたSE1(送り手側のSE)101g−1の証明書Cert_SE1を検証する。正しければ、新たに生成した乱数(Random1)を返す。証明書の公開鍵と生成した乱数の値(Random1)は格納しておく。
メッセージの(5)に示されるMovedataは、移動して相手のSEに登録されるTicketVの値を示す。このデータは、ME100g−1のアプリケーションを用いて、ユーザ操作を用いて生成されているものとする。チケットが一回限りのものでない場合、そのチケットの一部を移動するといった指定も可能としてもよい。また、チケットによっては、移動を一切許可しないチケットや、一部のみの移動を許さないチケットがあってよい。その場合、それを示す情報が、改札必須情報1002に含まれる。こうすることで、サービス提供者は、柔軟性のあるサービスが提供できる。
(移動処理のプリミティブ2)
プリミティブ名…Instruction
入力:(5)のメッセージ…Movedata,Random1,Cert_SE2
出力:(6)のメッセージ…MoveOffer,Random2
処理…チケットを送る側のSE1の処理。入力されたSE2(受け手側のSE)101g−2の証明書Cert_SE2を検証する。正しければ、入力されたMovedataに示されたTicketVが格納されているか確認する。あれば、Movedataに指定された分をTicketVから減算し、TicketVを更新する。処理が正常に終われば、更新前のTicketVの値と、Movedataと、Random1とSE1が管理する時刻情報とを合わせたデータに署名をしたデータMoveOffer=Sign_SE1(Movedata,TicketV,Random1,T1)と、新たに生成した乱数(Random2)を返す。証明書の公開鍵と生成した乱数の値(Random2)は格納しておく。
時間情報T1は、処理が正常に終了しなかったときに、運用者が障害の原因判断に用いることができる。ただし、SEにリアルタイムクロックが実装されていない場合、時間情報は含めなくてもよい。
予め、価値情報を削除してから、受け手側に移動命令を出すことで、価値情報が2重に存在することがなく、悪意のあるユーザが得をすることがないしくみになっているので、サービス事業者も安心してサービスを提供できる。
(移動処理のプリミティブ3)
プリミティブ名…Tansfer
入力:(7)のメッセージ…MoveOffer,Random2
出力:(8)のメッセージ…Sign_SE2(TRANSFER,TicketV,Random2,T2)
処理…チケットを送る側のSE2の処理。MoveOfferに含まれるRandom1の値をStartTransferで生成した値と比較検証する。正しければ、MoveOfferの署名をStartTransferで取得した公開鍵で検証する。正しければ、MoveOfferに含まれるMovedataの値を新たなTicketVとして格納する。正常に終了したら、署名の目的、登録したTicketV、入力されたRandom2、SE2が管理してしている時間情報T2をあわせたデータ(TRANSFER,TicketV,Random2,T2)に署名をしたデータを返す。
時間情報T2は、処理が正常に終了しなかったときに、運用者が障害の原因判断に用いることができる。ただし、SEにリアルタイムクロックが実装されていない場合、時間情報は含めなくてもよい。
(移動処理のプリミティブ4)
プリミティブ名…Receipt
入力:(9)のメッセージ…Sign_SE2(TRANSFER,TicketV,Random2,T2)
出力:(10)のメッセージ…ACK
処理…チケットを受け取る側のSE1の処理。入力データに含まれるRandom2とTicketVの値をInstructionで生成した値と比較検証する。正しければ、入力データに含まれる署名の目的を検証する。正しければ、入力データの署名をInstructionで取得した公開鍵で検証する。正常に終了したら、ACKを返す。
これらの4つのプリミティブを実装することで、サーバを介さずにチケットを譲渡することができる。また、電子署名とSEを用いてセキュリティを確保している上に、譲渡してしまえば、譲渡元の情報は残らないので、匿名性のあるセキュアな譲渡サービスを提供することができる。
ダウンロード、改札、譲渡など処理に応じてプリミティブを分け、生成されるデータに含まれる署名の目的が異なるため、ユーザが他の目的でデータを流用することができないようになっている。
また、送り手および受け手のME101は、MoveOfferとSign_SE2(TRANSFER,TicketV,Random2,T2)を保存しておく。こうすることで、トラブルが起きたときにも、どんな移動の命令に対してどんな格納処理をしたのかが証明できる。
<実施の形態9>
実施の形態9では、図40と図41を用いて実施の形態6では判断できないエラーを自動で復旧する仕組みを説明する。そのために、図11のSE101g内に、新たに、エラーリカバリー機能と処理履歴可能部を設ける。図35に示すダウンロード処理と図36に示す証明処理のみを実施する場合にはこの実施例は不要である。
まず、図40を用いてSE内で行う通信相手管理機能の処理の流れを説明する。各オペレーション実行時に、このフローを開始し、完了時に終了させる。例えば、図35のダウンロード処理では、(2)のメッセージの受信時に、ステップ400を開始し、ステップ406の処理にあたるところで、図35のダウンロード処理で説明してきたチケット処理を行い、(7)のメッセージ送信に、ステップ407を実行し、ステップ408で処理を完了する。SE内に処理履歴可能部を持ち、ステップ404またはステップ407で通信相手格納領域107gに格納した情報とその処理のステータスを履歴情報として格納しておく。そのため、ユーザは不法にアクセスして都合のよいように書き換えることができないので不正を防ぐことができる。また、同じチケットに対する、ダウンロード処理、改札処理、譲渡処理の情報を区別して管理しておくことで、処理をまたがった不正も検知することができる。また、ステップ401で、改札処理でエラー状態となったチケットは移動処理できない、等の制御も可能となり、未然にトラブルを防ぐことができる。
通信相手格納領域107gに格納する情報は、チケットID、オペレーション(プリミティブ)の種類、通信相手の種類(Issuer,Verifierなどの種別情報)、通信相手の公開鍵、処理中のデータ(生成した乱数)、検証するメッセージなどがある。これらのうち、すべてを処理履歴可能部に格納しても良いし、一部を格納しても良い。こうすることで、SEのメモリサイズに応じたエラーリカバリー機能が提供できるようになる。
PTDの電源ON時、SE挿入時、またはチケットアプリ起動時に、SEの通信相手格納領域に未完了処理データがあれば、未完了履歴にデータを格納する機能をもつこともある。
履歴情報をいつまで格納しておくかは、ユーザが設定しても良いし、期間を決めてもよいし、最大格納数を決めておいても良い。チケットサービス提供者が、この履歴情報を定期的に吸い上げ、バックアップサービスを提供するというサービスも考えられる。こうすることで、ユーザはメモリ管理を意識せずにサービスを受けることができる。また、チケットサービス提供者は、ユーザの使用履歴を集計することもできる。
次に図41を用いて、自動的にエラーリカバリーを行う処理を説明する。図40では、エラーリカバリーを行うサービス端末をVerifier111g−1と呼ぶ。この処理では、SEの通信相手管理機能と、ME100g−1の処理中のメッセージを管理する機能を用いる。ME100g−1には、チケット処理中のメッセージ、例えば、図37と図38の改札処理ではTrans_Orderと(7)のメッセージ、図39のチケットの移動の処理では、MoveOfferと(8)のメッセージ、を格納しており、TicketIDの値を指定すると、その値を含むデータを検索できる機能を持っている。これらの履歴データは、ME上にあるのでユーザが勝手に削除することなどが考えられるが、削除すると、ユーザがエラーリカバリー処理において不利になるので、勝手には削除しないと考えることができる。
この処理には2つのプリミティブを用いる。エラーリカバリーのプリミティブを定義することにより、アプリケーションとSEの互換性が保障できる。
(エラーリカバリーのプリミティブ1)
プリミティブ名…StartRecovery
入力:(2)のメッセージ…Cert_Verifier,TicketID,Random3
出力:(3)のメッセージ…Sign_SE(STARTRECOVER,TicketV,Status_data of the TicketV,Random3),Random1
処理…入力された証明書を検証する。正しければ、署名の目的と、TicketIDで指定されたTicketVの値と、そのTicketVに関係するの処理履歴Status_data of the TicketVと、入力されたRandom3を含むデータ(STARTRECOVER,TicketV,Status,Random3)に電子署名を生成したデータと、新規に生成した乱数Random1を返す。証明書の公開鍵と生成した乱数の値(Random2)は格納しておく。
(3)のメッセージを受け取ったME100g−1は、MEに格納されているチケット処理データの履歴の中からTicketIDで指定された値を含むデータを検索し、あれば、その履歴データ(Log of the TicketV)とSEの証明書を(3)のデータとともに、メッセージの(4)としてVerifierに送信する。
Verifierは、Sign_SE(STARTRECOVER,TicketV,Status_data of the TicketV,Random3)に含まれるRandom3の値を検証し、正しければ、署名を検証する。正しければ、Sign_SE(STARTRECOV,TicketV,Status_data of the TicketV,Random3)に含まれるTicketVとStatus_data of the TicketVと、履歴データからエラーの原因を切り分ける。
図37に示すチケットの移動処理のエラーを切り分ける場合には、移動元のSEと移動先のSEの両方に対してメッセージの(1)から(4)までを行う。こうすることで、移動の処理に関してもエラーの状況を正しく把握して判断することができる。
ここで、チケットのダウンロード処理においては、正常に格納したのに、すぐに譲渡処理をしたため、このSEに対象のTicketVが格納されていないのだ、と判断できることもある。または、本当にチケットダウンロード時になんらかの理由で格納処理に失敗し、SEにTicketVが格納されていないことがわかる。
同様に、改札処理では、チケット処理が正常に行われており、改札機の機械的なトラブルで改札を通れなかったと判断できることもある。または、改札処理をまだ行っていない状態だということがわかる。
同様に、譲渡処理では、チケットの移動処理は正常に行われいるが、受け手側のSEがさらに譲渡処理をしたために、送り手側のSEにも受け手側のSEにも対象のTicketVが正しく登録されていないことがわかる。または、送り手側はすでに移動処理をしたのに、何らかのエラーで受け手側のSEに格納されていない状態だということがわかる。または、まだ移動処理を開始する前の状態だということがわかる。
Verifierは、障害の原因に応じてRecovery_Orderを生成する。
Recovery_Orderは、Sign_Verifer(RECVORDER,TicketV,Status_data of the TicketV,Random1)とあらわせる。SEのTicketVに変更が必要ならば、修正後のTicketVの値を入れる。TicketVに変更が必要ない場合、現在と同じ値を入れる。Status_data of the TicketVに変更が必要ならば、変更後Status_data of the TicketVに変更を加える。
さらにあらたな乱数Random2を生成し、Verifierが管理する時間情報TとRecovery_Orderともに、メッセージの(5)としてMEに送信する。
メッセージ(5)には、ユーザに対してエラー内容を説明するデータRecovery_Infoが含まれていても良い。Recovery_Infoは署名付きデータの場合もある。Recovery_Infoが含まれる場合、MEはこの説明用のデータをユーザに提示する。これにより、ユーザはエラーの原因がどこにあり、どんなリカバリー処理をしようとしているのか知ることができ、安心してサービスを受けることができる。
(エラーリカバリーのプリミティブ2)
プリミティブ名…Recovery
入力:(6)のメッセージ…Recovery_Order,Random2,T
出力:(7)のメッセージ…Sign_SE(RECOVERY,TicketV,Random2,T)
処理…StartRecoveryで生成したRandom1と、Recover_Orderに含まれる乱数の値を比較検証する。正しければ、入力の署名付きデータ(Recover_Order)の署名を、StartRecoveryで取得した公開鍵で検証する。正しければ、Recover_Orderに指定されたTicketVの値を指定された値に更新し、対応する処理ステータスの履歴情報もStatus_data of the TicketVに書き換える。署名の目的と、更新後のTicketVの値と、入力されたRandom2およびTを含むデータ(RECOVERY,TicketV,Random2,T)に電子署名を生成したデータを返す。
乱数値を関与させて処理を行っているので、通信路での差し替え攻撃も防御でき、セキュアなリカバリー処理が行える。また、いろいろな障害の原因をこの処理を用いて分析し、リカバリーできるので効率的となっている。また、この処理のVerifierは、ユーザが至近距離に移動してサービスを実行するエラーリカバリー用の端末としても実装できるし、ネットワーク上の一サーバとしても実装できるため、サービス提供者も実装の自由度があり、ユーザも状況に応じて便利な方を選ぶことができる。また、エラーリカバリーのプリミティブを定義したので、アプリケーションとSEの互換性が保障できる。
<実施の形態10>
実施の形態10では、図35から図41を用いて、チケットIDに関連付けられた共有鍵を用いた例を説明する。
実施の形態8と9では、公開鍵暗号方式を用いる方法のみ提案したが、共有鍵を用いる方法も考えられる。共有鍵が、共有の秘密鍵の場合、鍵情報は送信先の公開鍵で暗号化して送信される。実施の形態9で説明した署名付きのデータは、署名の代わりに、共有鍵で暗号化して送受信される。共有鍵が、共有の公開鍵ペアの場合、データは暗号化または署名を用いて送受信される。どちらの場合も、共有鍵を送信する場合は、共有秘密鍵情報は送信先の秘密鍵で暗号化して送信される。相手の公開鍵で暗号化して送信する。ただし、共有の公開鍵は暗号化しなくて良い。実施の形態9で説明した署名付きのデータは、署名の代わりに、共有公開鍵で暗号化されるか、共有秘密鍵で暗号化して送受信される。
図35のダウンロード処理の場合、メッセージ(5)のIssuerの署名付きチケットデータの中に、SEの公開鍵で暗号化した共有鍵情報を含む。メッセージ(6)を受信したSEは、共有鍵を復号化し、SE内に、対応するチケットと関連付けて格納しておく。こうすることで、SEは、以後のこのチケットを用いた処理において、証明書検証などのPKIを用いた処理を行わなくて済む。
Issuerは、Verifierと相互認証ののち、Veriferの公開鍵で暗号化した共有鍵をチケットIDと関連付けて送信しておく。こうすることで、Veriferは、チケット改札時にSEごとに、SE証明書の検証を行わなくてすむ。
図36の処理の場合、メッセージ(3)は、SEの署名の代わりにそのチケットIDに対応する共有鍵で暗号化または署名したデータを出力してもよい。
図37の改札処理の場合、メッセージ(1)から(4)は不要である。または、メッセージ(3)とメッセージ(4)のRandomはあってもよい。または、メッセージ(1)と(2)でチケットIDのみを送り、メッセージ(3)と(4)では、そのチケットIDに関連付けられた共有鍵でRandomを暗号化して送っても良い。
メッセージ(5)のTrans_Orderは、Verifierの鍵で署名する代わりにそのチケットIDに対応する共有鍵で暗号化、または署名を付与されているものでもよい。また、SEで生成されるメッセージ(7)も、SEの署名を付与する代わりに、対応する共有鍵で暗号化、または署名を付与されているものでもよい。こうすることで、メッセージの数を4つ少なくすることができ、高速な処理が可能となる。
図38の改札処理の場合、メッセージ(2)のCert_Verifierは不要となる。また、メッセージ(3)のデータSig_SE(PRESENTATION,TicketV,Random3)は、SEの鍵で署名する代わりにチケットIDに対応する共有鍵で暗号化、または署名を付与したデータでもよい。メッセージ(5)から(7)は図37の説明と同じである。こうすることで、証明書の検証など、負荷の重い処理を省くことができる。
図39の移動処理の場合、メッセージ(5)までは同様である。SEで、メッセージ(5)を受信した後、共有鍵を生成し、MoveOfferに、SE2の秘密鍵で暗号化した共有鍵のデータを含めて送信する。メッセージ(7)を受信したSE2は、SE2の秘密鍵で暗号化した共有鍵を復号化し、メッセージ(8)は、SE2の秘密鍵で署名する代わりに、受信した共有鍵で暗号化、または署名を付与してもよい。メッセージ(10)は同様である。
図41の場合、メッセージ(2)のCert_Verifierは不要となる。また、メッセージ(3)のデータSig_SEは、SEの鍵で署名する代わりにチケットIDに対応する共有鍵で暗号化、または署名を付与したデータでもよい。メッセージ(5)のRecovery_Orderは、Verifierの鍵で署名する代わりにそのチケットIDに対応する共有鍵で暗号化、または署名を付与されているものでもよい。また、SEで生成されるメッセージ(7)も、SEの署名を付与する代わりに、対応する共有鍵で暗号化、または署名を付与されているものでよい。
このように、チケットIDに関連付けられた共有鍵を用いることで、SEにおける証明書の検証などの公開鍵暗号処理を省くことができ、SEへの付加が軽くて処理の早いチケットサービスを提供することができる。
<実施の形態11>
実施の形態8、9、10では、処理のメッセージの中で、相手から送られた乱数を含めた処理データに署名や暗号化をしたデータとは別に、自ら生成した乱数を送信する例を示した。しかし、相手から送られた乱数を含めた処理データに加えて、自ら生成した乱数も含めて、署名や暗号化をしたデータを送信してもよい。
例えば、図35のメッセージ(3)では、Sig_SE(STARTREG,Random1)とRandom2となっているが、Sig_SE(STARTREG,Random1,Random2)としてもよい。こうすることで、乱数の差し替えを検知することができる。
以上説明したように、本発明によれば、複数のサービスサーバ運営者がSEの発行コストを分担することで、SEを用いたセキュアなモバイルサービスの提供が容易になる。また、サービス管理者が発行する証明書を持つものだけしかSEを用いたサービスを提供でないので、SEのコストを払っていないもののSEの利用を防ぐことができる。
また、本発明によれば、サービス管理者が発行する証明書の種類によって、SEのサービスアイテム登録領域へのアクセスを制限することができるので、事業者別にも権利の制限を設定することができる。また、発行するサービス証明書の種類により、発行手数料などを変えるといった柔軟な運営が可能となる。
また、本発明によれば、サービス事業者は、一度発行したSEにも、リモートからセキュアに、ユーザの求めるサービスを追加することができる。これにより、サービス管理者はSE101の発行管理をより柔軟に行えるようになる。ユーザも、必要なサービスだけを後から追加できるので、利便性が向上する。また、サービスサーバも、すでにユーザが所有しているSE101に、あとから開始したサービスを追加することができるので、市場が広がる。
また、本発明によれば、SEのインターフェイスは公開なので、ユーザはどのSE対応の携帯電話でも、買ってきたSEを挿入することで、好みのサービスを受けることができる。
また、本発明によれば、SEに固有の情報を含まないチケットであっても、チケットデータ本体は、SE以外のメモリに暗号化せずに保存することが可能となった。
また、本発明によれば、ユーザがチケットデータを自由にコピーしたり、メールに添付して友人に送信することができる。友人にチケットを譲りたいとき、まずチケットをメールなどで送信して友人がデータを見てから実際のチケット移動の処理を行うことができる。
また、本発明によれば、チケット発行時も、チケットデータをユーザにメールなどで送信し、購入したいユーザは指定された情報どおりに支払い処理を済ませると、有効なチケットとなるといったことができるので、発行サーバは、チケットのプロモーションの自由度が上がる。また、発行サーバは、支払い前の整理券と支払い後のチケットを別に発行管理する必要がない。
また、本発明によれば、サービスサーバがSEに特定のサービスアイテムが登録されているか確認したい場合、サービスサーバが発行した乱数を含むSEの署名つきのデータにより、確認できる。
また、本発明によれば、チケットの改札やSE間のサービスアイテム移動処理に関して、サービス登録領域に登録された情報のみ送信すればよいので、データ通信量が減少した。
また、本発明によれば、SE間のサービスアイテムの移動処理において、移動先と移動元のSEの2つともに同時にサービスアイテムが存在することなく、SE間のサービスアイテムの移動が可能となる。
また、本発明によれば、SEの高機能化に伴い、多様な性能なSEが混在する市場になっても、サービスサーバ側のインターフェイスは変えずに対応することができる。
また、本発明によれば、サーバが介すことなく、SE間でセキュアなチケット譲渡が行える。譲渡を行っても、譲渡履歴を付加しないため、プライバシーが保たれ、またチケットデータ量が増えない。
また、本発明によれば、チケット発行時にSEで生成した乱数をチケットデータの価値情報の一部に含めて発行する。こうすることで、通信路での盗聴や、差し替え攻撃にも対抗できるしくみになっている。
また、本発明によれば、改札必須情報に対して付与された送り手側の署名を外してSEに格納し、チケット使用時にはSEの署名を付加する。このため、一度SEに格納されたチケットデータは、SEの署名なしにSEの外へ出ない。また署名付きデータには、処理の目的が含まれる。そのため、オープンなPKIの仕組みを用いて少ないSE領域を用いたサービスが実現できる。
また、本発明によれば、人気チケットの発売時など決済処理の負荷が課題であった。本システムによれば、改札必須部をSEに登録する処理を行わないとチケットが有効にならないため、チケットデータ(ユーザ表示部)は、整理券と本券で共通に使うことができる。そのため、発行管理の手間を増やすことなく、整理券を用いて決済処理の負荷を分散できる。
また、本発明によれば、SEを用いたエラーリカバリーのプロトコルを用いて、自動でエラーリカバリーの処理が行え、保守の手間を軽減できる。このエラーリカバリーのプロトコルでは、チケットの操作をまたがったエラーや不正を検知し、復旧することができる。また、ローカルでもリモートでもエラーリカバリーのサービスを提供することができる。
本明細書は、2002年3月13日出願の特願2002−069362および2003年1月15日出願の特願2003−007684に基づくものである。これの内容はすべてここに含めておく。
【図面の簡単な説明】
図1は、本発明の実施の形態1に係るSEを用いたセキュアモバイルサービスシステムの概略構成をモデル化して示すブロック図である。
図2は、本発明の実施の形態1においてサービス管理者が発行するSEのモデル図である。
図3は、本発明の実施の形態1においてサービス管理者が発行済みのSE上に、サービス領域を追加するサービスのモデル図である。
図4は、本発明の実施の形態1においてサービス管理者がチケットサービスの管理を行う場合のモデル図である。
図5は、本発明の実施の形態2に係るSEの認証処理メッセージの例を示す図である。
図6は、本発明の実施の形態2においてSEがサービスサーバの認証を行う場合のメッセージの例を示す図である。
図7は、本発明の実施の形態2においてSEとサービスサーバが相互認証を行う場合のメッセージの例を示す図である。
図8は、本発明の実施の形態2において公開鍵暗号を使ったサーバ認証処理のメッセージ例を示す図である。
図9は、本発明の実施の形態2において公開鍵暗号を用いた相互認証のメッセージの例を示す図である。
図10は、本発明の実施の形態3に係るセキュアモバイルサービスシステムのチケットサービスで用いられるチケットデータのモデル図である。
図11は、本発明の実施の形態3においてチケット格納のモデル図である。
図12は、本発明の実施の形態3において発行サーバ対応のSEのメッセージの例を示す図である。
図13は、本発明の実施の形態3においてダウンロード処理のメッセージ例を示す図である。
図14は、本発明の実施の形態3において署名付き確認メッセージを用いたダウンロード処理のメッセージ例を示す図である。
図15は、本発明の実施の形態3において配信鍵を用いたダウンロード処理のメッセージ例を示す図である。
図16は、本発明の実施の形態3において公開鍵暗号を用いたダウンロード処理のメッセージ例を示す図である。
図17は、本発明の実施の形態3において登録証明処理のメッセージ例を示す図である。
図18は、本発明の実施の形態3において改札処理のメッセージ例を示す図である。
図19は、本発明の実施の形態3において改札前後のチケットのモデル図である。
図20は、本発明の実施の形態3においてSE間でのチケット移動のSEのメッセージ例を示す図である。
図21は、本発明の実施の形態3においてSE間でのチケット移動処理のメッセージ例を示す図である。
図22は、本発明の実施の形態3において公開鍵暗号を用いたSE間でのチケット移動処理のメッセージ例を示す図である。
図23は、本発明の実施の形態4に係るセキュアモバイルサービスシステムのサーバ認証とチケットダウンロード処理の混合処理のメッセージ例を示す図である。
図24は、本発明の実施の形態4においてサーバ認証処理と改札処理の混合メッセージ例を示す図である。
図25は、本発明の実施の形態4において相互認証処理とSE間でのチケット移動処理の混合メッセージ例を示す図である。
図26は、本発明の実施の形態5に係るセキュアモバイルサービスシステムの処理能力の低いSEを用いたサーバ認証処理とダウンロード処理の混合メッセージ例を示す図である。
図27は、本発明の実施の形態5において処理能力の低いSEを用いたサーバ認証処理と改札処理の混合メッセージ例を示す図である。
図28は、本発明の実施の形態5において処理能力の低いSEを用いた相互認証処理とSE間でのチケット移動処理の混合メッセージ例を示す図である。
図29は、本発明の実施の形態6に係るセキュアモバイルサービスシステムのチケットのダウンロード処理のメッセージ例を示す図である。
図30は、本発明の実施の形態6においてチケットの改札処理のメッセージ例を示す図である。
図31は、本発明の実施の形態6においてチケットの移動処理のメッセージ例を示す図である。
図32は、本発明の実施の形態7において、図29に相当するチケットのダウンロード処理のメッセージ例を示す図である。
図33は、本発明の実施の形態7において図30に相当するチケットの改札処理のメッセージ例を示す図である。
図34は、本発明の実施の形態7において図31に相当するSE間のチケット移動処理のメッセージ例を示す図である。
図35は、本発明の実施の形態8におけるダウンロード処理の例図である。
図36は、本発明の実施の形態8におけるチケットの証明処理の例図である。
図37は、本発明の実施の形態8における改札処理の例図である。
図38は、本発明の実施の形態8における改札処理(退場処理)の例図である。
図39は、本発明の実施の形態8におけるチケットの移動処理の例図である。
図40は、本発明の実施の形態9における通信相手管理機能の処理の例図である。
図41は、本発明の実施の形態9におけるエラーリカバリー処理の例図である。
Claims (15)
- サービスを実行するための情報を格納したモジュールであって、
前記モジュールは耐タンパな記憶媒体で構成され、
前記サービスを実行するためのアプリケーションを格納したサービスアプリケーション格納手段と、
前記サービスを管理するサービス管理者の証明書であるサービス管理者証明書を格納するサービス管理者証明書格納手段と、
前記サービスを実行するために必要な情報であるサービスアイテムを格納するサービスアイテム格納手段と、
を備えるサービス実行モジュール。 - サービスの提供元であるサービスサーバからサービスサーバ証明書を受信し、サービスサーバ証明書をサービス管理者証明書を用いて検証し、検証に成功した場合、サービスアイテムを用いて当該サービスを実行する、
請求項1記載のサービス実行モジュール。 - サービスアプリケーション格納手段には、新たに追加されるサービスである追加サービスを実行するための情報である追加サービス情報を格納するための追加サービス情報格納アプリケーションが格納され、
サービス管理者証明書格納手段には、前記追加サービス情報の発行を管理する追加サービス情報発行管理者の証明書である追加サービス情報発行管理者証明書が格納され、
サービスアイテム格納手段には、前記追加サービス情報を格納するために必要な情報である追加サービス情報格納アイテムが格納され、
追加サービス情報の提供元である追加サービス情報提供サーバから、追加サービス情報提供サーバ証明書を受信し、追加サービス情報提供サーバ証明書を追加サービス情報発行管理者証明書を用いて検証し、検証に成功した場合、追加サービス情報格納アイテムを用いて、追加サービスを実行するための追加サービスアプリケーションと、追加サービスを管理する追加サービス管理者の証明書である追加サービス管理者証明書と、追加サービスを実行するために必要な追加サービスアイテムと、を格納する、
請求項1記載のサービス実行モジュール。 - チケットデータを発行する発行サーバから発行サーバ証明書を受信し、発行サーバ証明書をサービス管理者証明書を用いて検証し、検証に成功した場合、チケットデータに記載された情報の一部又は全部を、サービスアイテム格納手段へ格納する、
請求項1記載のサービス実行モジュール。 - 耐タンパではない記憶媒体であるサービスデータ保存領域と直接又は間接的にデータの送受信が可能であり、
発行されたチケットデータはサービス保存領域に格納され、前記チケットデータのうち、改札処理に必要な情報はサービスアイテム格納手段へ格納される、
請求項4記載のサービス実行モジュール。 - チケットデータの改札処理を行う改札機から改札機証明書を受信し、改札機証明書をサービス管理者証明書を用いて検証し、検証に成功した場合、サービスアイテムを用いて当該改札処理を行う、
請求項4記載のサービス実行モジュール。 - チケットデータは、チケットIDと、チケット改札に関する時間的情報及び/又はチケット改札に関する空間的情報と、を含む改札必須情報を有し、
前記改札必須情報は、チケットデータを発行した発行者の署名、チケットデータを改札処理する改札機の署名、又はサービス実行モジュール自身の署名のいずれかがされている、
請求項4に記載のサービス実行モジュール。 - 耐タンパな記憶領域であるセキュア領域を有し、任意のサービスを実行するモジュールであって、
前記サービスを管理するサービス管理者の公開鍵であるサービス管理者公開鍵を格納する公開鍵格納手段と、
前記サービスを実行するために必要な情報であるサービスアイテムを格納するアイテム格納手段と、
公開鍵格納手段、アイテム格納手段、及び当該モジュールにおける処理の制御を行う処理制御手段と、
を前記セキュア領域内に備えるサービス実行モジュール。 - 処理制御手段は、前記サービスに関する情報であるサービス情報を発行する発行主体から、前記サービス情報の登録要求を受けると、
前記登録要求に含まれ、サービス管理者が署名した発行者証明書を、サービス管理者公開鍵で検証した後、サービス情報を受信し、
前記サービス情報に含まれる署名情報を自身の秘密鍵で検証した後、前記サービス情報に含まれるサービスアイテムを抽出し、アイテム格納手段へ格納する、
請求項8に記載のサービス実行モジュール。 - 非耐タンパな記憶領域である通常領域を有し、
サービス情報のうち、少なくともサービスアイテムを除いた情報である二次情報を格納する二次情報格納手段を前記通常領域内に備えた
請求項9に記載のサービス実行モジュール。 - あるサービスアイテムの一部又は全部の情報である譲渡情報を譲渡する場合、譲渡情報の譲渡処理より前に、前記サービスアイテムに対応する二次情報を前記譲渡処理の相手に送信する、
請求項10に記載のサービス実行モジュール。 - あるサービスアイテムの一部又は全部の情報である譲受情報を譲受する場合、譲受情報の譲受処理より前に、前記サービスアイテムに対応する二次情報を前記譲受処理の相手から受信する、
請求項10に記載のサービス実行モジュール。 - サービスを実行処理するための通信相手に関する情報を格納する通信相手格納手段と、
前記通信相手との処理の履歴を格納する処理履歴格納手段と、
をセキュア領域内に備える請求項10に記載のサービス実行モジュール。 - 前記通信相手からの処理メッセージの履歴を格納するメッセージ履歴格納手段を通常領域内に備える、
請求項13に記載のサービス実行モジュール。 - 制御手段は、ある処理のエラーを検出すると、メッセージ履歴格納手段より前記処理に関する処理メッセージを取得し、前記メッセージに再度応答する、
請求項14に記載のサービス実行モジュール。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002069362 | 2002-03-13 | ||
JP2002069362 | 2002-03-13 | ||
JP2003007684 | 2003-01-15 | ||
JP2003007684 | 2003-01-15 | ||
PCT/JP2003/002893 WO2003077173A1 (fr) | 2002-03-13 | 2003-03-12 | Module d'execution de service |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2003077173A1 true JPWO2003077173A1 (ja) | 2005-07-07 |
Family
ID=27806983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003575316A Pending JPWO2003077173A1 (ja) | 2002-03-13 | 2003-03-12 | サービス実行モジュール |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1484701A1 (ja) |
JP (1) | JPWO2003077173A1 (ja) |
KR (1) | KR20040044183A (ja) |
CN (1) | CN1507601A (ja) |
WO (1) | WO2003077173A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079402A (ja) * | 2004-09-10 | 2006-03-23 | Kyushu Univ | 物理的な鍵の性格を有し安全かつ柔軟な管理可能なソフトウェア鍵とその発行管理システム |
BRPI0614667A2 (pt) * | 2005-08-12 | 2011-04-12 | Lg Electronics Inc | método para mover objeto de direitos em gerenciamento de direitos digitais |
NL2000041C2 (nl) * | 2006-03-29 | 2007-10-03 | Aht Europ Ltd | Inrichting en werkwijze voor het opbouwen van een dynamisch datanetwerk. |
JP4626566B2 (ja) * | 2006-05-11 | 2011-02-09 | ソニー株式会社 | クーポンデータのデータ処理システム及びデータ処理方法 |
DE102007016538A1 (de) * | 2007-04-05 | 2008-10-09 | Infineon Technologies Ag | Kommunikationsendgerät, Kommunikationseinrichtung, elektronische Karte, Verfahren für ein Kommunikationsendgerät und Verfahren für eine Kommunikationseinrichtung zum Bereitstellen eines Nachweises |
CN101652782B (zh) * | 2007-04-05 | 2014-04-02 | 英特尔移动通信有限责任公司 | 通信终端装置、通信装置、电子卡、通信终端装置提供验证的方法和通信装置提供验证的方法 |
JP5257052B2 (ja) * | 2008-12-24 | 2013-08-07 | 大日本印刷株式会社 | 入場前売券、前売券座席予約システム、サーバ、プログラム |
JP4970585B2 (ja) * | 2010-11-10 | 2012-07-11 | 株式会社東芝 | サービス提供システム及びユニット装置 |
CN102625309A (zh) * | 2012-01-18 | 2012-08-01 | 中兴通讯股份有限公司 | 访问控制方法及装置 |
JP2018169917A (ja) * | 2017-03-30 | 2018-11-01 | 株式会社東芝 | 駅務装置、回数券処理システム及び回数券処理プログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1030257B1 (en) * | 1999-02-17 | 2011-11-02 | Nippon Telegraph And Telephone Corporation | Original data circulation method, system, apparatus, and computer readable medium |
JP3909737B2 (ja) * | 2000-02-01 | 2007-04-25 | 日本電信電話株式会社 | アプリケーション格納方法及びコンピュータ読み取り可能な記録媒体 |
-
2003
- 2003-03-12 EP EP03708555A patent/EP1484701A1/en not_active Withdrawn
- 2003-03-12 WO PCT/JP2003/002893 patent/WO2003077173A1/ja not_active Application Discontinuation
- 2003-03-12 CN CNA03800173XA patent/CN1507601A/zh active Pending
- 2003-03-12 JP JP2003575316A patent/JPWO2003077173A1/ja active Pending
- 2003-03-12 KR KR10-2003-7016227A patent/KR20040044183A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
WO2003077173A1 (fr) | 2003-09-18 |
EP1484701A1 (en) | 2004-12-08 |
CN1507601A (zh) | 2004-06-23 |
KR20040044183A (ko) | 2004-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5959410B2 (ja) | 決済方法、これを実行する決済サーバ、これを実行するためのプログラム及びこれを実行するシステム | |
JP4434738B2 (ja) | ストアドバリューデータオブジェクト安全管理のシステムおよび方法ならびにそのシステム用ユーザ装置 | |
CN106656488B (zh) | 一种pos终端的密钥下载方法和装置 | |
KR100520476B1 (ko) | 디지털 컨텐츠 발행시스템 및 발행방법 | |
US6463534B1 (en) | Secure wireless electronic-commerce system with wireless network domain | |
US20240095713A1 (en) | Method, client device and pos terminal for offline transaction | |
EP1863308A1 (en) | Data communication system, alternate system server, computer program, and data communication method | |
KR100698563B1 (ko) | Ic 카드, 단말 장치, 및 데이터 통신 방법 | |
WO2002087149A1 (fr) | Systeme de communication de terminaux | |
WO2001093139A1 (fr) | Systeme pour des valeurs electroniques | |
EP1769419A2 (en) | Transaction & payment system securing remote authentication/validation of transactions from a transaction provider | |
WO2015161690A1 (zh) | 数据安全交互方法和系统 | |
JPWO2003077173A1 (ja) | サービス実行モジュール | |
JP2004532484A (ja) | 取引認証の方法並びに装置 | |
JP5391743B2 (ja) | 決済処理セキュリティ情報配信方法、決済処理セキュリティ情報配信システム、そのセンタ装置、サーバ装置、決済端末、及びプログラム | |
JP3659090B2 (ja) | 電子情報流通システム及び電子情報流通プログラムを格納した記憶媒体及び電子情報流通方法 | |
US20040117618A1 (en) | Service execution module | |
JP7275186B2 (ja) | タッチレスpin入力方法及びタッチレスpin入力システム | |
JP3762163B2 (ja) | 耐タンパ性装置によるサービス提供方法,サービス提供システムおよび認証装置のプログラム記録媒体 | |
JP2006065437A (ja) | 携帯電話に装着して用いる会員情報提示用電子モジュールおよびその発行方法 | |
JP2005311904A (ja) | 認証システム | |
JP2003244136A (ja) | コンピュータネットワークの認証方法及びデータ配信方法 | |
KR102468511B1 (ko) | 블록체인 네트워크의 탈중앙화 아이디 기반의 비접촉식 카드 지급결제 방법 및 이를 이용한 모바일 단말 | |
KR101395315B1 (ko) | 근거리 무선통신 기반의 결제 보안 인증 시스템 및 그 보안인증 방법 | |
WO2015161691A1 (zh) | 数据安全交互方法和系统 |