IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7279592検証システム、走行距離検証プログラムおよび走行距離検証方法
<>
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図1
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図2
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図3
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図4
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図5
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図6
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図7
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図8
  • 特許-検証システム、走行距離検証プログラムおよび走行距離検証方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-15
(45)【発行日】2023-05-23
(54)【発明の名称】検証システム、走行距離検証プログラムおよび走行距離検証方法
(51)【国際特許分類】
   G06F 21/60 20130101AFI20230516BHJP
   G06F 21/64 20130101ALI20230516BHJP
   G06F 21/62 20130101ALI20230516BHJP
【FI】
G06F21/60
G06F21/64
G06F21/62 345
【請求項の数】 5
(21)【出願番号】P 2019170934
(22)【出願日】2019-09-19
(65)【公開番号】P2021047746
(43)【公開日】2021-03-25
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】花田 雄一
(72)【発明者】
【氏名】清水 俊也
(72)【発明者】
【氏名】坂本 拓也
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2018/0091596(US,A1)
【文献】特表2019-531544(JP,A)
【文献】米国特許出願公開第2013/0110345(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
走行距離計を備える車両と、
走行距離を検証する検証装置と、を有し、
前記車両は、
走行する所定の地点ごとに、地点の位置情報をコミットするために前記位置情報から生成されるコミット値を算出する算出部と、
所定の地点ごとに、前記走行距離計から走行距離を取得する取得部と、
所定の地点ごとに、前記コミット値および前記走行距離を対応付けてブロックチェーンに記録する記録部と、
所定の2地点のそれぞれの位置情報から計算される前記2地点の間の距離を前記検証装置に送信する送信部と、を有し、
前記検証装置は、
前記ブロックチェーンから前記車両の前記2地点における走行距離及びコミット値を読み出す読出部と、
前記車両から送信された前記2地点の間の距離を、前記コミット値から計算される前記2地点の間の距離情報に基づいて検証する第1の検証部と、
前記2地点の間の距離の正当性が検証された場合には、前記2地点における走行距離から計算される走行距離値を、前記2地点の間の距離に基づいて検証する第2の検証部と、
を有することを特徴とする検証システム。
【請求項2】
前記車両は、
前記所定の2地点ごとに、位置情報と、前記車両および前記検証装置により互いに生成された乱数とを用いて、前記車両しか知り得ない当該位置情報に関する証明情報を生成する生成部をさらに有し、
前記検証装置は、
前記証明情報を、前記位置情報から生成された前記コミット値と、前記互いに生成された乱数とを用いて、前記証明情報を検証する第3の検証部をさらに有する
ことを特徴とする請求項1に記載の検証システム。
【請求項3】
前記算出部は、1つの前記位置情報から6種のコミット値を算出し、
前記生成部は、1つの前記位置情報と、前記車両および前記検証装置により互いに生成された6種の乱数とを用いて、6種の証明情報を生成し、
前記第3の検証部は、前記位置情報に対応する6種のコミット値と、前記互いに生成された6種の乱数とを用いて、6種の前記証明情報を検証し、前記位置情報を知っていることを検証する
ことを特徴とする請求項2に記載の検証システム。
【請求項4】
ブロックチェーンから、車両における2地点の走行距離計から取得された走行距離及び前記2地点の位置情報をコミットするために生成されたコミット値を読み出し、
前記車両から送信された前記2地点の間の距離を、前記コミット値から計算される前記2地点の間の距離情報に基づいて検証し、
前記2地点の間の距離の正当性が検証された場合には、前記2地点における走行距離から計算される走行距離値を、前記2地点の間の距離に基づいて検証する
処理を検証装置に実行させる走行距離検証プログラム。
【請求項5】
走行距離計を備える車両は、
走行する所定の地点ごとに、地点の位置情報をコミットするために前記位置情報から生成されるコミット値を算出し、
所定の地点ごとに、前記走行距離計から走行距離を取得し、
所定の地点ごとに、前記コミット値および前記走行距離を対応付けてブロックチェーンに記録し、
所定の2地点のそれぞれの位置情報から計算される前記2地点の間の距離を検証装置に送信し、
前記検証装置は、
前記ブロックチェーンから前記車両の前記2地点における走行距離及びコミット値を読み出し、
前記車両から送信された前記2地点の間の距離を、前記コミット値から計算される前記2地点の間の距離情報に基づいて検証し、
前記2地点の間の距離の正当性が検証された場合には、前記2地点における走行距離から計算される走行距離値を、前記2地点の間の距離に基づいて検証する、
処理をコンピュータが実行することを特徴とする走行距離検証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検証システムなどに関する。
【背景技術】
【0002】
車両の走行距離メータに記憶された走行距離が改竄されることを防止する技術が開示されている(例えば、特許文献1、2参照)。例えば、車両の走行距離メータとは別の制御装置に車両の走行距離を記憶しておき、走行距離メータの第1走行距離値と、制御装置に記憶された第2走行距離値とを比較する。そして、第1走行距離値が第2走行距離値より小さければ、第1走行距離値を第2走行距離値に書き換える技術がある。
【0003】
また、車両の走行距離を制御装置に代えてブロックチェーンに記録する技術もある。ブロックチェーンは、改竄不可能であるという特徴があるため、一度記録された情報が改竄されることはほぼない。この特徴を利用して、検証装置が、車両の走行距離の値とブロックチェーンに記録された走行距離の値とを照合し、車両の走行距離の値が改竄されたかどうかを検証できる。
【0004】
ところが、ブロックチェーンに記録される値自体が正しくない可能性がある。したがって、ブロックチェーンに記録される値が正しいことを証明する必要がある。
【0005】
そこで、走行距離メータの走行距離の値だけでなく、位置情報を利用した2地点間の移動距離を用いて、走行距離メータの走行距離の値であってブロックチェーンに記録される値が正しいことを証明することができる。
【0006】
図8および図9は、位置情報による移動距離を用いて走行距離の正当性を検証する参考例を示す図である。なお、図8および図9のオドメータ値は、走行距離メータ(オドメータ)の走行距離の値の一例である。図8に示すように、オドメータ値と位置情報とを用いて、A地点とB地点との間のオドメータによる走行距離と位置情報による移動距離とが一致する場合には、オドメータ値の正当性を検証できる。また、オドメータによる走行距離と位置情報による移動距離は必ずしも一致するわけではなく、図9に示すように、2地点間の走行が直線でない場合が多い。かかる場合には、オドメータによる走行距離が位置情報による移動距離より長くなる場合には、オドメータ値が正しいことを検証できる。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2004-137897号公報
【文献】特開2016-147600号公報
【文献】特開平11-249560号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、位置情報を秘匿する場合、走行距離の正当性を検証するのが難しいという問題がある。すなわち、位置情報は個人情報であるため、車両の所有者は位置情報を秘匿したい場合がある。かかる場合には、位置情報を用いることができず、走行距離の正当性を検証することが難しい。
【0009】
本発明は、1つの側面では、位置情報を秘匿する場合であっても、走行距離の正当性を検証することを目的とする。
【課題を解決するための手段】
【0010】
1つの態様では、検証システムは、走行距離計を備える車両と、走行距離を検証する検証装置と、を有する。前記車両は、走行する所定の地点ごとに、地点の位置情報をコミットするために前記位置情報から生成されるコミット値を算出する算出部と、所定の地点ごとに、前記走行距離計から走行距離を取得する取得部と、所定の地点ごとに、前記コミット値および前記走行距離を対応付けてブロックチェーンに記録する記録部と、所定の2地点のそれぞれの位置情報から計算される前記2地点の間の距離を前記検証装置に送信する送信部と、を有する。前記検証装置は、前記ブロックチェーンから前記車両の前記2地点における走行距離及びコミット値を読み出す読出部と、前記車両から送信された前記2地点の間の距離を、前記コミット値から計算される前記2地点の間の距離情報に基づいて検証する第1の検証部と、前記2地点の間の距離の正当性が検証された場合には、前記2地点における走行距離から計算される走行距離値を、前記2地点の間の距離に基づいて検証する第2の検証部と、を有する。
【発明の効果】
【0011】
1実施態様によれば、位置情報を秘匿する場合であっても、走行距離の正当性を検証することができる。
【図面の簡単な説明】
【0012】
図1図1は、実施例に係る検証システムの機能構成を示すブロック図である。
図2図2は、実施例に係る車両の機能構成を示す図である。
図3図3は、実施例に係る検証装置の機能構成を示す図である。
図4図4は、実施例に係るブロックチェーンの機能構成を示す図である。
図5図5は、実施例に係る検証処理の一例を示す図である。
図6図6は、実施例に係る検証処理のシーケンスの一例を示す図である。
図7図7は、走行距離検証プログラムを実行するコンピュータの一例を示す図である。
図8図8は、位置情報による移動距離を用いて走行距離の正当性を検証する参考例を示す図(1)である。
図9図9は、位置情報による移動距離を用いて走行距離の正当性を検証する参考例を示す図(2)である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する検証システム、走行距離検証プログラムおよび走行距離検証方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【実施例
【0014】
[検証システムの機能構成]
図1は、実施例に係る検証システムの機能構成を示すブロック図である。検証システム9は、車両1と、検証装置2と、ブロックチェーン3とを有する。車両1と検証装置2とブロックチェーン3とは、ネットワーク5で接続される。ここでいうネットワーク5は、例えば、インターネットなどのWAN(Wide Area Network)であるが、これに限られず、キャリア網などその他の通信網であっても良い。
【0015】
検証システム9は、車両1に備えられた走行距離計で計測される走行距離を、車両1の位置情報を秘匿しつつ検証する。
【0016】
車両1は、走行距離計を備える。ここでいう走行距離計は、例えば、オドメータ等によって実現できる。以降、走行距離計をオドメータとして説明する。車両1は、ある地点において、オドメータ値および位置情報を取得する。車両1は、取得した位置情報をコミットするためのコミットメント値(以降、「コミット値」という)を生成する。そして、車両1は、地点ごとに、オドメータ値およびコミット値をブロックチェーン3に記録する。そして、車両1は、地点ごとに、位置情報およびコミット値に対する乱数を基に、位置情報の検証に用いられる証明情報を生成し、生成した証明情報を検証装置2に送信する。そして、車両1は、2つの地点の位置情報から計算される移動距離を検証装置2に送信する。
【0017】
検証装置2は、車両1によって生成された証明情報、ブロックチェーン3に記録されたコミット値およびコミット値に対する乱数を用いて、位置情報を知っていることの検証を行う。かかる検証は、ゼロ知識証明を利用する。ゼロ知識証明とは、証明者が「命題が真である」こと以外の知識を検証者に与えることなく、「命題が真である」ことを検証者に証明する技術である。ここでいう証明者は、車両1である。ここでいう検証者は、検証装置2である。すなわち、ゼロ知識証明が利用されることで、証明者しか知り得ない情報から生成された情報(証明情報)が検証者によって検証されると、検証者は元の情報はわからないが、確かに証明者はその情報を知っているということを検証できる。つまり、検証装置2は、ブロックチェーン3に記録された2つの地点のコミット値およびコミット値に対する乱数を用いて、証明情報を検証し、秘匿された位置情報の正当性を検証する。さらに、検証装置2は、コミット値を用いて、移動距離の正当性を検証する。さらに、検証装置2は、ブロックチェーン3に記録された2つの地点のオドメータ値の差分と移動距離との大小関係を検証し、オドメータ値が不正に短くされていないことを検証する。
【0018】
ブロックチェーン3は、車両1の要求に応じて、ある地点の車両1のオドメータ値およびコミット値を記録する。
【0019】
[車両の機能構成]
図2は、実施例に係る車両の機能構成を示す図である。図2に示すように、車両1は、通信部11、オドメータ値取得部12、通信制御部13、生成部14および位置情報取得部15を有する。
【0020】
通信部11は、ブロックチェーン3や検証装置2と通信する。通信部11は、例えば、NIC(Network Interface Card)等によって実現される。
【0021】
オドメータ値取得部12は、所定地点のタイミングでオドメータからオドメータ値を取得する。
【0022】
通信制御部13は、各種情報を、通信部11を介してブロックチェーン3や検証装置2へ送信する。例えば、通信制御部13は、所定地点のオドメータ値およびコミット値を対応付けた登録要求を、通信部11を介してブロックチェーン3へ送信する。
【0023】
また、通信制御部13は、通信部11を介して、検証装置2から各種情報を受信する。
【0024】
生成部14は、コミット値生成部141、乱数生成部142、証明情報生成部143および移動距離生成部144を有する。
【0025】
コミット値生成部141は、所定地点の位置情報をコミットするコミット値を生成する。例えば、コミット値生成部141は、後述する位置情報取得部15によって取得された位置情報の証明を行う際に用いられるコミット値を生成する。車両1で生成されたコミット値は、変更を加えることができない性質を持つ値であり、証明情報を生成する前に生成し、検証時に用いられる。コミット値は、準同型のコミットメント関数によって生成され、公開される。コミット値は、1つの位置情報に対して6種生成される。そして、コミット値生成部141は、位置情報に対するコミット値を、通信制御部13を介して検証装置2へ送信する。
【0026】
一例として、コミットする1つの位置情報がp=(x,y)である場合を説明する。iは、ある時点を示すインデックスとする。この位置情報に対する6種のコミット値cは、位置情報pにおけるx,y,x ,y ,xi-1・x,yi-1・yの6種のコミット値を定義する。コミット値を生成するコミットメント関数は、「gのxのべき乗mod p」で計算される。「gのxのべき乗mod p」は、準同型性を持っている。すなわち、「gのxのべき乗mod q」をgと略記すると、例えば、gx+y=g・gのように計算される。位置情報pに対する6種のコミット値cは、以下の(a1)のように生成される。なお、以降、「g mod q」のことをgと略記する。gは、準同型性を持つ、位数q-1の巡回群を生成する数を示す原始根である。qは、0よりも十分に大きい値の素数である。
=(c(x),c(y),c(x ),c(y ),c(xi-1・x),c(yi-1・y))=gpi=(gxi,gyi、gxi^2,gyi^2、gxi-1・xi,gyi-1・yi)・・・(a1)
【0027】
乱数生成部142は、乱数を生成する。例えば、乱数生成部142は、位置情報に対する乱数を生成する。乱数は、後述する位置情報取得部15によって取得された位置情報の証明を行う際に用いられる。乱数は、1つの位置情報に対して6種生成される。1つの乱数は、1つのコミット値に対応するものである。そして、乱数生成部142は、位置情報に対する乱数を、通信制御部13を介して検証装置2へ送信する。
【0028】
一例として、コミットする1つの位置情報がp=(x,y)である場合を説明する。iは、ある時点を示すインデックスとする。この位置情報pに対する6種の乱数は、位置情報pにおけるx,y,x ,y ,xi-1・x,yi-1・yと定義される。位置情報pに対する6種の乱数rは、以下の(a2)のように生成される。
=(r(x),r(y),r(x ),r(y ),r(xi-1・x),r(yi-1・y))・・・(a2)
【0029】
証明情報生成部143は、所定地点の位置情報の証明情報を、コミット値およびコミット値に対する乱数を用いて生成する。そして、証明情報生成部143は、所定地点の位置情報の証明情報を、通信制御部13を介して検証装置2へ送信する。
【0030】
一例として、コミットする1つの位置情報がp=(x,y)である場合を説明する。iは、ある時点を示すインデックスである。証明情報生成部143は、位置情報pに対して、乱数生成部142によって生成された乱数rおよび検証装置2によって生成される乱数eを用いて、以下の式(1)に示す証明情報sを生成する。
【数1】
【0031】
証明情報sは、以下の(a3)のように6種からなる。なお、(a3)内のs(x),s(y),s(x ),s(y ),s(xi-1・x),s(yi-1・y)は、それぞれ式(a3-1),(a3-2),(a3-3),(a3-4),(a3-5),(a3-6)で表わされる。
=(s(x),s(y),s(x ),s(y ),s(xi-1・x),s(yi-1・y))・・・(a3)
s(x)=r(x)+e(x)・x・・・(a3-1)
s(y)=r(y)+e(y)・y・・・(a3-2)
s(x )=r(x )+e(x )・x ・・・(a3-3)
s(y )=r(y )+e(y )・y ・・・(a3-4)
s(xi-1・x)=r(xi-1・x)+e(xi-1・x)・xi-1・x・・・(a3-5)
s(yi-1・y)=r(yi-1・y)+e(yi-1・y)・yi-1・y・・・(a3-6)
【0032】
移動距離生成部144は、所定地点の2つの位置情報を用いて移動距離を生成する。そして、移動距離生成部144は、生成した移動距離を、通信制御部13を介して検証装置2へ送信する。
【0033】
一例として、コミットする1つの位置情報がp=(x,y)であり、もう1つの位置情報がp=(x,y)である場合を説明する。移動距離生成部144は、2つの位置情報p,pを用いて、以下の式(2)に示す移動距離△を算出する。
【数2】
なお、移動距離生成部144は、生成した移動距離△をそのまま検証装置2へ送信しても良いし、平方根した結果を送信しても良い。実施例では、移動距離生成部144が、移動距離△をそのまま検証装置2へ送信する場合を説明する。
【0034】
位置情報取得部15は、所定地点のタイミングで位置情報を取得する。取得するタイミングは、オドメータ値取得部12によって取得されるタイミングと同じである。そして、位置情報取得部15は、取得した位置情報を生成部14に出力する。例えば、位置情報取得部15は、GPS(Global Positioning System)からの信号を受信器で検知して、現在の位置情報を取得する。
【0035】
[検証装置の機能構成]
図3は、実施例に係る検証装置の機能構成を示す図である。図3に示すように、検証装置2は、通信部21および検証部22を有する。
【0036】
通信部21は、車両1やブロックチェーン3と通信する。通信部21は、例えば、NIC等によって実現される。
【0037】
検証部22は、乱数生成部221、位置情報検証部222、移動距離検証部223および走行距離検証部224を有する。
【0038】
乱数生成部221は、車両1から位置情報に対する乱数を受け取ると、さらに、受け取った乱数と異なる乱数を生成する。乱数は、1つの位置情報に対して6種生成される。1つの乱数は、1つのコミット値に対応するものとなる。そして、乱数生成部221は、位置情報に対する乱数を、通信部21を介して車両1へ送信する。
【0039】
一例として、コミットする1つの位置情報がp=(x,y)である場合を説明する。iは、ある時点を示すインデックスとする。この位置情報pに対する6種の乱数は、位置情報pにおけるx,y,x ,y ,xi-1・x,yi-1・yと定義される。乱数生成部221は、車両1から位置情報pに対する乱数rを受け取ると、乱数rと異なる6種の乱数eを生成する。6種の乱数eは、以下の(a4)のように生成される。
=(e(x),e(y),e(x ),e(y ),e(xi-1・x),e(yi-1・y))・・・(a4)
【0040】
位置情報検証部222は、車両1から所定地点の位置情報に対する証明情報を受け取ると、証明情報から位置情報を知っていることの検証を行う。例えば、位置情報検証部222は、車両1から所定地点の位置情報に対する証明情報を受け取る。このとき、位置情報検証部222は、一例として、受け取った証明情報に対する位置情報の時点を示すインデックスを受け取る。位置情報検証部222は、ブロックチェーン3から、受け取ったインデックスに対するコミット値を取得する。そして、位置情報検証部222は、証明情報、コミット値および乱数を用いて、証明情報に対する位置情報を知っていることの検証を行う。
【0041】
一例として、位置情報検証部222は、ある地点の位置情報に対する証明情報sを受け取り、ブロックチェーン3より該当する地点に対応するコミット値ciを取得し、証明情報sを検証すべく、以下の式(3)を満たすか否かを判定する。証明情報sは、6種からなるので、位置情報検証部222は、6種全てが式(3)を満たすか否かを判定する。
【数3】
【0042】
ここで、証明情報sを検証するために用いられる式(3)がどのように成立したかについて説明する。まず、証明情報sは、式(1)からなる。そして、式(1)の両辺を原始根gのべき乗とすると、以下の式(3-1)となる。
【数4】
【0043】
次に、gは、準同型性を持っているので、式(3-1)の指数の足し算を以下の式(3-2)に変形できる。
【数5】
【0044】
さらに、式(3-2)の指数の掛け算を以下の式(3-3)に変形できる。
【数6】
【0045】
そして、式(3-3)のgpiは、前述の(a1)のとおりコミット値cであるので、式(3-3)のgpiをcに置き換えることにより、式(3)が成立する。したがって、位置情報検証部222は、ある地点の位置情報に対する証明情報sを検証するために、以下の式(3)を満たすことを検証すれば良い。すなわち、位置情報検証部222は、原始根g、乱数r、eがわかっているので、式(3)に代入して式(3)を満たすか否かを判定する。位置情報検証部222は、sの6種全てが式(3)を満たすと判定すると、証明情報sおよびコミット値cから、秘匿された位置情報pを知っていることを検証できる。なお、位置情報pが偽装されて証明情報sが生成されると、真の位置情報pから生成されたコミット値と合わなくなり、式(3)を満たさないので、証明情報sから真の位置情報pを知っていることを検証できない。
【0046】
移動距離検証部223は、車両1から2地点間の移動距離を受け取ると、受け取った移動距離の正当性を検証する。例えば、移動距離検証部223は、車両から移動距離を受け取る。移動距離検証部223は、移動距離およびコミット値を用いて、移動距離が正しいことを検証する。
【0047】
一例として、移動距離検証部223は、2地点間の移動距離△を受け取り、ブロックチェーン3から取得されたコミット値を用いて移動距離△を検証すべく、以下の式(4)を満たすか否かを判定する。
【数7】
【0048】
ここで、移動距離△を検証するために用いられる式(4)がどのように成立したかについて説明する。まず、移動距離△は、式(2)からなる。そして、式(2)の両辺を原始根gのべき乗とすると、以下の式(4-1)となる。
【数8】
【0049】
式(4-1)の指数部分は、以下の式(4-2)に変形できる。
【数9】
【0050】
次に、gは、準同型性を持っているので、式(4-2)の指数の引き算を以下の式(4-3)に変形できる。
【数10】
【0051】
次に、式(4-3)の指数の足し算を以下の式(4-4)に変形できる。
【数11】
【0052】
さらに、式(4-4)の右辺の分子の指数の掛け算を以下の式(4-5)に変形できる。
【数12】
【0053】
そして、式(4-5)のgx2^2、gx1^2、gy2^2、gy1^2、gx2x1、gy2y1は、前述の(a1)のとおりコミット値c(x )、c(x )、c(y )、c(y )、c(x・x)、c(y・y)である。そこで、式(4-5)のそれぞれのgを該当するcに置き換えることにより、式(4)が成立する。したがって、移動距離検証部223は、移動距離△を検証するために、以下の式(4)を満たすことを検証すれば良い。そして、移動距離検証部223は、式(4)を満たすと判定すると、コミット値cから、移動距離△が正しいことを検証できる。すなわち、移動距離検証部223は、位置情報pが秘匿されても、移動距離△が正しいことを検証することが可能となる。なお、移動距離△が偽装されると、移動距離検証部223は、位置情報pから生成されたコミット値と合わなくなり、式(4)を満たさないので、移動距離△が正しいことを検証できない。
【0054】
走行距離検証部224は、2地点間の走行距離の正当性を検証する。例えば、走行距離検証部224は、移動距離検証部223によって2地点間の移動距離の正当性が検証された場合には、以下のように、2地点間の走行距離を検証する。走行距離検証部224は、ブロックチェーン3から該当するインデックスの2地点に対応するオドメータ値を取得する。そして、走行距離検証部224は、取得した2地点のオドメータ値から走行距離を計算する。そして、走行距離検証部224は、計算した走行距離と移動距離とを比較することで、走行距離の正当性を検証する。
【0055】
一例として、走行距離検証部224は、走行距離Dと移動距離△とを用いて、以下の式(5)を満たすことを検証する。
D≧△・・・式(5)
【0056】
そして、走行距離検証部224は、式(5)を満たすと判定すると、該当する2地点間の走行距離が正しいことを検証できる。すなわち、走行距離検証部224は、位置情報pが秘匿されても、正当性が検証された移動距離△から走行距離Dが正しいことを検証することが可能となる。つまり、走行距離検証部224は、走行距離Dの計算元のオドメータ値が不正に短くされていないことを検証できる。
【0057】
[ブロックチェーンの機能構成]
図4は、実施例に係るブロックチェーンの機能構成を示す図である。図4に示すように、ブロックチェーン3は、通信部31および記録部32を有する。
【0058】
通信部31は、車両1や検証装置2と通信する。通信部31は、例えば、NIC等によって実現される。
【0059】
記録部32は、車両1の登録要求に応じて、所定地点のコミット値およびオドメータ値を対応付けた情報を1つのブロックに記録する。
【0060】
[検証処理の一例]
図5は、実施例に係る検証処理の一例を示す図である。
【0061】
図5に示すように、車両1では、ある時点で、オドメータ値取得部12が、オドメータからオドメータ値dを取得し、位置情報取得部15が、位置情報pを取得する。そして、コミット値生成部141は、位置情報pからコミット値cを生成する(<1>)。コミット値cは、例えば、前述の(a1)のように6種からなる。そして、コミット値生成部141は、オドメータ値dと位置情報のコミット値cを対応付けて、ブロックチェーン3に登録する(<2>)。
【0062】
続いて、走行後の車両1では、ある時点で、オドメータ値取得部12が、オドメータからオドメータ値dを取得し、位置情報取得部15が、位置情報pを取得する。そして、コミット値生成部141は、位置情報pからコミット値cを生成する(<3>)。コミット値cは、例えば、前述の(a1)のように6種からなる。コミット値生成部141は、オドメータ値dと位置情報のコミット値cを対応付けて、ブロックチェーン3に登録する(<4>)。
【0063】
続いて、車両1では、乱数生成部142は、証明情報s,sの生成のために、乱数r、rを生成し、検証者(検証装置2)に送信する(<5>)。乱数rは、位置情報pの証明情報sを生成するために用いられ、例えば、前述の(a2)のように6種からなる。乱数rは、位置情報pの証明情報sを生成するために用いられ、例えば、前述の(a2)のように6種からなる。
【0064】
検証装置2では、乱数生成部221は、車両1から乱数r、rを受信すると、車両1から受信した乱数と異なる乱数e、eを生成し、車両1に送信する(<6>)。乱数eは、位置情報pの証明情報sを生成するために用いられ、例えば、前述の(a4)のように6種からなる。乱数eは、位置情報pの証明情報sを生成するために用いられ、例えば、前述の(a4)のように6種からなる。
【0065】
続いて、車両1では、証明情報生成部143は、証明情報s,sを生成し、検証者(検証装置2)に送信する(<7>)。例えば、証明情報生成部143は、位置情報pの証明情報sを、式(1)のように乱数r、eを用いて生成する。証明情報sは、例えば、前述の(a3)のように6種からなる。証明情報生成部143は、位置情報pの証明情報sを、式(1)のように乱数r、eを用いて生成する。証明情報sは、例えば、前述の(a3)のように6種からなる。
【0066】
検証装置2では、証明情報s、sを受信した位置情報検証部222は、ブロックチェーン3から証明情報s、sに対応するコミット値c、cを取得する(<8>)。例えば、位置情報検証部222は、証明情報s、sとともに、証明情報s、sに対するそれぞれの位置情報の時点を示すインデックスを受け取る。位置情報検証部222は、ブロックチェーン3から、受け取ったインデックスに対するコミット値c、cを取得する。
【0067】
続いて、検証装置2では、位置情報検証部222は、証明情報s、sを検証する(<9>)。例えば、位置情報検証部222は、証明情報sを検証すべく、乱数r、eおよびコミット値cを用いて、式(3)を満たすか否かを判定する。証明情報sは、6種からなるので、位置情報検証部222は、6種全てが式(3)を満たすか否かを判定する。位置情報検証部222は、証明情報sを検証すべく、乱数r、eおよびコミット値cを用いて、式(3)を満たすか否かを判定する。証明情報sは、6種からなるので、位置情報検証部222は、6種全てが式(3)を満たすか否かを判定する。
【0068】
そして、検証装置2では、位置情報検証部222は、証明情報s、sの検証結果を車両1に通知する(<10>)。
【0069】
続いて、車両1では、移動距離生成部144は、検証結果が正当である場合には、移動距離△を検証者(検証装置2)に送信する(<11>)。例えば、移動距離生成部144は、位置情報p1,p2を用いて、式(2)のように移動距離△を算出する。
【0070】
そして、検証装置2では、移動距離検証部223は、移動距離△を検証する(<12>)。例えば、移動距離検証部223は、移動距離△を2乗する。そして、移動距離検証部223は、移動距離△およびブロックチェーン3から取得されたコミット値c、cを用いて、式(4)を満たすか否かを判定する。
【0071】
続いて、検証装置2では、走行距離検証部224は、移動距離△の検証結果が正当である場合には、ブロックチェーン3から、位置情報検証部222によって受け取られたインデックスに対するオドメータ値d、dを取得する(<13>)。そして、走行距離検証部224は、走行距離Dを検証する(<14>)。例えば、走行距離検証部224は、取得した2地点のオドメータ値d、dから走行距離Dを計算する。そして、走行距離検証部224は、走行距離Dと移動距離△とを用いて、式(5)を満たすことを検証する。
【0072】
そして、検証装置2では、走行距離検証部224は、検証結果をブロックチェーン3に記録する(<15>)。
【0073】
[検証処理のシーケンスの一例]
図6は、実施例に係る検証処理のシーケンスの一例を示す図である。
【0074】
図6に示すように、車両1は、時点iのタイミングで、オドメータ値d、位置情報pを取得し、位置情報pからコミット値cを生成する(S11)。ここでは、インデックスiは、1、2であるとする。そして、車両1は、オドメータ値dおよびコミット値cを対応付けた情報の登録要求をブロックチェーン3に送信する(S12)。すなわち、車両1は、オドメータ値dおよびコミット値cを対応付けた情報の登録要求をブロックチェーン3に送信する。そして、車両1は、オドメータ値dおよびコミット値cを対応付けた情報の登録要求をブロックチェーン3に送信する。
【0075】
ブロックチェーン3は、車両1から送信された登録要求を受け付けて、受け付けた登録要求のオドメータ値dおよびコミット値cを記録する(S13)。
【0076】
車両1は、証明情報s,sの生成のために、乱数r、rを生成し、検証者(検証装置2)に送信する(S14)。検証装置2は、車両1から乱数r、rを受信すると、車両1から受信した乱数と異なる乱数e、eを生成し、車両1に送信する(S15)。
【0077】
続いて、車両1は、乱数r、e、位置情報pを用いて、式(1)で証明情報sを生成する。車両1は、乱数r、e、位置情報pを用いて、式(1)で証明情報sを生成する。そして、車両1は、生成した証明情報s、sを検証装置2に送信する(S16)。
【0078】
証明情報s、sを受信した検証装置2は、証明情報s、sのインデックスに対応するコミット値c,cをブロックチェーン3から取得する(S17)。そして、検証装置2は、乱数r、eおよびコミット値cを用いて、式(3)で証明情報sを検証する。検証装置2は、乱数r、eおよびコミット値cを用いて、式(3)で証明情報sを検証する。そして、検証装置2は、検証結果(True or False)を車両1に通知する(S18)。
【0079】
検証結果を受信した車両1は、検証結果が「True」(正当)であるか否かを判定する(S19)。検証結果が「True」(正当)でないと判定した場合には(S19;No)、車両1は、検証処理を終了する。
【0080】
一方、検証結果が「True」(正当)であると判定した場合には(S19;Yes)、車両1は、位置情報p1、p2を用いて、式(2)で移動距離△を生成する。そして、車両1は、生成した移動距離△を検証装置2に送信する(S20)。
【0081】
移動距離△を受信した検証装置2は、移動距離△、コミット値c、cを用いて、式(4)で移動距離△を検証する。そして、検証装置2は、検証結果(True or False)を車両1に通知する(S21)。
【0082】
検証結果を受信した車両1は、検証結果が「True」(正当)であるか否かを判定する(S22)。検証結果が「True」(正当)でないと判定した場合には(S22;No)、車両1は、検証処理を終了する。一方、検証結果が「True」(正当)であると判定した場合には(S22;Yes)、車両1は、検証装置2から移動距離の検証結果が届くまで待機する(S23)。
【0083】
検証装置2は、移動距離△の検証結果が「True」(正当)であるか否かを判定する(S24)。移動距離△の検証結果が「True」(正当)でないと判定した場合には(S24;No)、検証装置2は、検証処理を終了する。一方、移動距離△の検証結果が「True」(正当)であると判定した場合には(S24;Yes)、検証装置2は、ブロックチェーン3からオドメータ値d、dを取得する(S25)。
【0084】
そして、検証装置2は、オドメータ値d、dから走行距離D(=d-d)を算出する。検証装置2は、走行距離D、移動距離△を用いて、式(5)(D≧△)を満たすか否かで走行距離Dを検証する。そして、検証装置2は、検証結果(True or False)を車両1に通知する(S26)。
【0085】
検証結果を受信した車両1は、検証結果が「True」(正当)であるか否かを判定する(S27)。検証結果が「True」(正当)でないと判定した場合には(S27;No)、車両1は、検証処理を終了する。一方、検証結果が「True」(正当)であると判定した場合にも(S27;Yes)、車両1は、検証処理を終了する。
【0086】
検証装置2は、走行距離Dの検証結果が「True」(正当)であるか否かを判定する(S28)。走行距離Dの検証結果が「True」(正当)であると判定した場合には(S28;Yes)、検証装置2は、ブロックチェーン3に対して、オドメータ値d1、d2は正しいと記録して(S29)、検証処理を終了する。一方、走行距離Dの検証結果が「True」(正当)でないと判定した場合には(S28;No)、検証装置2は、検証処理を終了する。
【0087】
[実施例の効果]
上記実施例によれば、検証システム9は、走行距離計を備える車両1と、走行距離を検証する検証装置2と、を有する。車両1は、走行する所定の地点ごとに、地点の位置情報をコミットするために位置情報から生成されるコミット値を算出する。車両1は、所定の地点ごとに、走行距離計から走行距離を取得する。車両1は、所定の地点ごとに、コミット値および走行距離を対応付けてブロックチェーンに記録する。車両1は、所定の2地点のそれぞれの位置情報から計算される2地点の間の距離を検証装置2に送信する。検証装置2は、ブロックチェーン3から車両1の2地点における走行距離及びコミット値を読み出す。検証装置2は、車両1から送信された2地点の間の距離を、コミット値から計算される2地点の間の距離情報に基づいて検証する。検証装置2は、2地点の間の距離の正当性が検証された場合には、2地点における走行距離から計算される走行距離値を、2地点の間の距離に基づいて検証する。かかる構成によれば、検証装置2は、車両1の位置情報がわからなくても、2地点の走行距離(例えば、オドメータ)の正当性を検証することが可能となる。
【0088】
また、上記実施例によれば、車両1は、所定の2地点ごとに、位置情報と、車両1および検証装置2により互いに生成された乱数とを用いて、車両1しか知り得ない当該位置情報に関する証明情報を生成する。検証装置2は、証明情報を、位置情報から生成されたコミット値と、互いに生成された乱数とを用いて、証明情報を検証する。かかる構成によれば、検証装置2は、位置情報が秘匿された場合であっても、ゼロ知識証明により証明情報を検証することで、位置情報を知っていることを検証できる。
【0089】
また、上記実施例によれば、検証装置2は、位置情報に対応する6種のコミット値と、互いに生成された6種の乱数とを用いて、6種の証明情報を検証し、位置情報を知っていることを検証する。かかる構成によれば、検証装置2は、位置情報が秘匿された場合であっても、6種の証明情報を検証することで、確実に位置情報を知っていることを検証できる。
【0090】
[その他]
なお、車両1において証明情報生成部143は、位置情報pに対して、車両1によって生成された乱数rおよび検証装置2によって生成された乱数eを用いて、以下の式(1)に示す証明情報sを生成すると説明した。しかしながら、証明情報生成部143は、これに限定されず、車両1によって生成された乱数rおよび車両1側で生成された乱数を用いて、証明情報を生成しても良い。すなわち、車両1が検証装置2の代わりに乱数を生成する場合であっても良い。例えば、乱数生成部142は、位置情報ごとに、位置情報の証明を行う際に用いられる乱数r(ランダム値)を生成する。そして、乱数生成部142は、生成した乱数r(ランダム値)とハッシュ関数とを用いて、チャレンジ乱数を生成しても良い。そして、証明情報生成部143は、位置情報pに対して、車両1によって生成された乱数rおよびチャレンジ乱数を用いて、証明情報sを生成すれば良い。これにより、車両1は、チャレンジ乱数を用いることで、チャレンジ乱数を乱数(ランダム値)としてコミットすることができる。すなわち、生成したチャレンジ乱数は、車両1が変更することができない、コミットされた乱数(ランダム値)とすることができる。
【0091】
また、図示した検証装置2の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、検証装置2の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、通信制御部13と、生成部14とを統合して新たな生成部にしても良い。
【0092】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図3に示した検証装置2と同様の機能を実現する走行距離検証プログラムを実行するコンピュータの一例を説明する。図7は、走行距離検証プログラムを実行するコンピュータの一例を示す図である。
【0093】
図7に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD(Hard Disk Drive)205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
【0094】
ドライブ装置213は、例えばリムーバブルディスク210用の装置である。HDD205は、走行距離検証プログラム205aおよび走行距離検証処理関連情報205bを記憶する。
【0095】
CPU203は、走行距離検証プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、検証装置2の各機能部に対応する。走行距離検証処理関連情報205bは、図示しない記憶部に対応する。そして、例えばリムーバブルディスク210が、走行距離検証プログラム205aなどの各情報を記憶する。
【0096】
なお、走行距離検証プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、IC(Integrated Circuit)カードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから走行距離検証プログラム205aを読み出して実行するようにしても良い。
【符号の説明】
【0097】
1 車両
11 通信部
12 オドメータ値取得部
13 通信制御部
14 生成部
141 コミット値生成部
142 乱数生成部
143 証明情報生成部
144 移動距離生成部
15 位置情報取得部
2 検証装置
21 通信部
22 検証部
221 乱数生成部
222 位置情報検証部
223 移動距離検証部
224 走行距離検証部
3 ブロックチェーン
31 通信部
32 記録部
5 ネットワーク
9 検証システム
図1
図2
図3
図4
図5
図6
図7
図8
図9