(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した、ソフトウェアの開発に関し、以下の問題が生じることを見出した。
ソフトウェア開発をする際に、開発メーカなどだけでなく不特定多数の開発者が参加する形態である、アジャイル型開発が用いられている。この形態では、多数の開発者がソフトウェアを改良することによりさまざまなバージョン系列が発生し得る。
ソフトウェアを管理する管理システムでは、上記開発者により開発されたソフトウェアのバージョンを示すバージョン情報が、開発者の識別情報とともに管理される(例えば特許文献1参照)。
ここで、バージョン情報は、当該ソフトウェアのバージョンを一意に特定する役割を有する。また、開発者の識別情報は、ソフトウェアの新たなバージョンの開発に係る報酬を開発者に提供するために用いられ得る。
しかしながら、従来の管理システムでは、管理サーバで管理されているプログラムのバージョン情報、又は、開発者の識別情報の改ざんを防ぐことが難しいという問題がある。
そこで、本発明は、管理している情報の改ざんの発生を抑制する管理方法などを提供する。
本発明の一態様に係る管理方法は、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第一の管理装置が、前記ソフトウェアの第一バージョンに関する第一情報と、前記第一バージョンを元に開発者によってバージョンアップされた前記ソフトウェアの第二バージョンに関する第二情報と、前記開発者の識別情報と、電子署名とを含むトランザクションデータを、前記第一の管理装置にネットワークを介して接続されている装置から受信し、前記第一の管理装置が、受信した前記トランザクションデータに含まれる前記電子署名を用いて前記トランザクションデータの正当性を検証し、前記トランザクションデータが正当である場合に、前記複数の管理装置それぞれが前記トランザクションデータを前記分散台帳に格納する。
上記態様によれば、ソフトウェアのバージョンアップをした開発者に関する情報が分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、上記管理方法によって、管理している情報の改ざんの発生を抑制することができる。
例えば、前記第二情報は、前記第二バージョンのバージョン番号を含み、前記管理方法は、さらに、前記トランザクションデータを受信する前に、前記第二バージョンのバージョン番号の発行依頼を前記装置から受信した場合に、前記第二バージョンのバージョン番号として新たなバージョン番号を前記装置に送信し、前記トランザクションデータを受信する際には、前記装置に送信した前記新たなバージョン番号を前記第二情報として含む前記トランザクションデータを受信してもよい。
上記態様によれば、新しいバージョンのバージョン番号を発行し、その発行したバージョン番号と紐付けて新しいバージョンの開発者に関する情報が管理される。当該バージョン管理システムと異なる装置などによってバージョン番号を付すとすれば、バージョン番号の重複などの不備が生じ得る。本発明に係る管理方法によれば、バージョン番号の不備を未然に回避しながら、管理している情報の改ざんの発生を抑制することができる。
例えば、前記第一情報は、前記ソフトウェアの前記第一バージョンのバージョン番号を含み、前記第二情報は、前記ソフトウェアの前記第二バージョンのハッシュ値と、前記第二バージョンのバージョン番号とを含んでもよい。
上記態様によれば、第一バージョンのバージョン番号と、第二バージョンのハッシュ値と、第二バージョンのバージョン番号とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
例えば、前記第一情報は、前記ソフトウェアの前記第一バージョンのハッシュ値を含み、前記第二情報は、前記ソフトウェアの前記第二バージョンのハッシュ値を含んでもよい。
上記態様によれば、第一バージョンのハッシュ値と、第二バージョンのハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
例えば、前記第一情報は、前記ソフトウェアの前記第一バージョンのハッシュ値を含み、前記第二情報は、前記ソフトウェアの前記第一バージョンと前記第二バージョンとの差分のハッシュ値を含んでもよい。
上記態様によれば、第一バージョンのハッシュ値と、第一バージョンと第二バージョンとの差分のハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
例えば、前記装置は、前記ソフトウェアの前記第二バージョンが格納されている場所を示す場所情報を保有しており、前記管理方法は、前記トランザクションデータを受信する際には、前記場所情報を含む前記トランザクションデータを受信してもよい。
上記態様によれば、第二バージョンのソフトウェアの格納場所を示す情報が、開発者に関する情報とともに分散台帳に格納される。よって、さらに第二バージョンが格納された場所情報の改ざんの発生をも抑制しながら、管理している情報の改ざんの発生を抑制することができる。
例えば、前記管理方法は、前記ソフトウェアの第一バージョン系列から第二バージョン系列を分岐させる際には、前記第一バージョン系列のうちの最後のバージョンを少なくとも含む1以上のバージョンを、前記第二バージョン系列の1以上のバージョンとして有する新たな分散台帳を生成し、前記複数の管理装置が前記新たな分散台帳を保有してもよい。
上記態様によれば、複数のバージョン系列それぞれに対応した分散台帳を管理しており、バージョン系列の分岐の際に、新しい系列に対応する分散台帳を生成する。一の系列で多数のバージョンアップが行われると、バージョンアップの履歴などの情報を取得する際に、多数のバージョンアップそれぞれに対応する情報が得られ、処理負荷が高くなる可能性がある。このような場合にバージョン系列を分岐し、新たなバージョン系列を新たな分散台帳で管理することで、バージョンアップの履歴などの情報を少なくし、上記の処理負荷の上昇を未然に防ぐことができる。
例えば、前記トランザクションデータを受信する際には、前記トランザクションデータが前記第一バージョン系列又は前記第二バージョン系列のどちらに係るトランザクションデータであるかを特定し、受信した前記トランザクションデータを、前記第一バージョン系列及び前記第二バージョン系列のうち、特定した前記トランザクションデータに対応するバージョン系列に対応する分散台帳に格納してもよい。
上記態様によれば、複数のバージョン系列が複数の分散台帳によって管理されているときに、どちらのバージョン系列に属するトランザクションデータかを特定し、当該トランザクションデータを適切な分散台帳により管理することができる。
例えば、前記管理方法は、さらに、一のバージョン系列を廃止する際には、前記一のバージョン系列を廃止することを示すトランザクションデータを生成し、生成したトランザクションデータを、前記一のバージョン系列に対応する前記分散台帳に格納してもよい。
上記態様によれば、所定のトランザクションデータによって、適切にバージョン系列を廃止することができる。よって、さらにバージョン系列の廃止を実現しながら、より容易に、管理している情報の改ざんの発生を抑制することができる。
例えば、前記管理方法は、さらに、前記分散台帳に格納されている前記トランザクションデータを参照して、前記開発者にトークンを提供してもよい。
上記態様によれば、これまでのトランザクションデータに基づいて新しいバージョンの開発者にトークンが提供される。分散台帳に格納されたトランザクションデータの改ざんが困難であるので、開発者になりすます不適切な者へのトークンの提供を未然に回避することができる。このように、管理している情報の改ざんの発生を抑制し、不適切なトークンの提供を未然に回避することができる。
例えば、前記分散台帳はブロックチェーンであり、前記トランザクションデータが正当である場合、前記複数の管理装置のそれぞれが前記トランザクションデータを前記ブロックチェーンに格納してもよい。
上記態様によれば、複数の管理装置が、分散台帳としてブロックチェーンを用いることによって、より容易に、管理している情報の改ざんの発生を抑制することができる。
本発明の一態様に係る管理装置は、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの第一の管理装置であって、前記ソフトウェアの第一バージョンに関する第一情報と、前記第一バージョンを元に開発者によってバージョンアップされた前記ソフトウェアの第二バージョンに関する第二情報と、前記開発者の識別情報と、電子署名とを含むトランザクションデータを、前記第一の管理装置にネットワークを介して接続されている装置から受信し、受信した前記トランザクションデータに含まれる前記電子署名を用いて前記トランザクションデータの正当性を検証するトランザクション検証部と、前記トランザクションデータが正当である場合に、前記トランザクションデータを前記分散台帳に格納する台帳管理部とを備える。
これにより、上記管理方法と同様の効果を奏する。
本発明の一態様に係る管理装置は、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの第一の管理装置として、コンピュータを動作させるためのプログラムであって、前記ソフトウェアの第一バージョンに関する第一情報と、前記第一バージョンを元に開発者によってバージョンアップされた前記ソフトウェアの第二バージョンに関する第二情報と、前記開発者の識別情報と、電子署名とを含むトランザクションデータを、前記第一の管理装置にネットワークを介して接続されている装置から受信し、受信した前記トランザクションデータに含まれる前記電子署名を用いて前記トランザクションデータの正当性を検証し、前記トランザクションデータが正当である場合に、前記トランザクションデータを前記分散台帳に格納する。
これにより、上記管理方法と同様の効果を奏する。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
本実施の形態において、ソフトウェアのバージョン管理方法であって、管理している情報の改ざんの発生を抑制する管理方法などについて説明する。ここで、ソフトウェアは、例えば家電機器(洗濯機、エアコン、冷蔵庫、テレビなど)に搭載されて、当該家電機器の動作を制御し、また、当該家電機器の機能を発揮させるソフトウェアである。
図1は、アジャイル型開発によるソフトウェアのバージョン系列を示す説明図である。
図1に示されるように、アジャイル型開発では、開発メーカであるZ社が最初のバージョンであるバージョン1(図において「Ver1」と記載、以下同様)を開発し、開発者のコミュニティに提供する。次に、提供されたバージョン1のソフトウェアを元にしてコミュニティに属する開発者による開発がなされ、さまざまなバージョン系列が生成される。各バージョン系列では、例えば、発揮する機能が互いに異なるソフトウェアが開発される。バージョン系列は、図1において系列1Aなどのように表現されている。バージョン系列には、1以上のバージョンが含まれる。
図1では、バージョン1のソフトウェアに基づいて、開発者Aによる開発によりバージョン1.A1が生成され、開発者Bによる開発によりバージョン1.B1が生成され、開発者Cによる開発によりバージョン1.C1が生成されたことが示されている。
そして、これらのバージョンを元にしてさらなる開発がなされ得る。例えば、バージョン1.A1を元にして、バージョン1.A2が開発され、バージョン1.A2を元にしてバージョン1.A3が開発される。また、バージョン1.B1を元にして、バージョン1.B2が開発される。また、バージョン1.C1を元にして、開発者D及びEにより、複数のバージョン系列としてバージョン1.C1.D1及びバージョン1.C1.E1が開発される。
ここで、バージョン1.A1以降のバージョン(つまり、バージョン1.A1と、バージョン1.A1に基づいて開発されたバージョンであるバージョン1.A2及びバージョン1.A3)を系列1Aという。同様に、バージョン1.B1以降のバージョンを系列1Bという。バージョン1.C1を系列1Cといい、バージョン1.C1.D1を系列1Dといい、バージョン1.C1.E1を系列1Eという。なお、バージョン1と、系列1A~1Eのすべてのバージョンとを含む系列を、系列1ともいう。
このようにして、アジャイル型開発では、開発メーカであるZ社が提供したソフトウェアを元にして、開発メーカとは異なる開発者によりソフトウェアが開発され、複数のバージョン系列が生成される。
そして、複数のバージョンのうちからユーザが望むバージョンがユーザに提供される。例えば、ユーザが望む機能を有するバージョン系列のうちの最新バージョンがユーザに提供される。
図2は、アジャイル型開発におけるトークンの授受を示す説明図である。ここでトークンとは、利益又は価値に相当する概念であり、人(自然人)又はメーカなどの法人が所有し、また、移転されうるものである。アジャイル型開発では、開発者、一般ユーザ及びメーカの間で適切にトークンをやりとりすることで、ソフトウェアの開発が進行する。
例えば、開発者が提供したソフトウェアを一般ユーザが受け取り、ユーザは、自身が保有している家電機器上でそのソフトウェアを動作させることにより家電機器を稼働させる。一般ユーザは、ソフトウェアの提供を受けたことの対価として開発者にトークンを提供する。
また、一般ユーザは、ソフトウェアを搭載した家電機器を稼働させたときの製品のデータをメーカに提供し、そのデータの対価としてトークンの提供を受ける。
ここで、一般ユーザと開発者とは、メーカを介さずに直接トークンをやりとりする。このようなトークンのやりとりが発生すると、不正に利益を得たり、他人の利益を害したりするなどの目的で、管理されている開発者の識別情報の改ざんがなされることがある。識別情報が改ざんされると、悪意者が開発者になりすましてトークンを受け取ったり、他人になりすまして悪意のソフトウェアを提供して評判を悪くしたりすることが可能となってしまうからである。
本実施の形態に係る管理システムは、管理している情報の改ざんの発生を抑制することを目的とする。
図3は、実施の形態1に係る管理システム1の構成を示す説明図である。
図3に示されるように管理システム1は、複数の管理装置10A、10B及び10Cと、複数の開発装置20A、20B及び20Cと、保管サーバ30とを備える。上記の装置は、ネットワークNによって、相互に通信可能に接続されている。
複数の管理装置10A、10B及び10C(10A等ともいう)は、ソフトウェアのバージョンに関する情報をコンピュータにより管理する管理装置である。複数の管理装置10A等の個数が3である場合を例として説明するが、2以上であればいくつであってもよい。複数の管理装置10A等は、互いに通信可能に接続されている。複数の管理装置10A等それぞれが第一の管理装置に相当する。なお、以降では、複数の管理装置10A等を代表して、管理装置10Aを用いて説明することがあるが、他の管理装置10B及び10Cでも同様の説明が成立する。なお、複数の管理装置10A等は、ネットワークNを介して通信することもできる。
複数の管理装置10A等は、それぞれ、ソフトウェアのバージョンに関する情報を管理するための分散台帳を保有し、保有している分散台帳を、通信によって互いに同期をとりながら更新している。複数の管理装置10A等のいずれかが、開発装置20A等のいずれかから新たなバージョンに関する情報を取得すると、取得した情報の複製を複数の管理装置10A等それぞれが保有する。分散台帳は、一般に、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。
複数の開発装置20A、20B及び20C(20A等ともいう)は、ソフトウェアの開発者が使用するコンピュータであり、それぞれ独立に動作する。なお、複数の開発装置20A等の個数が3である場合を例として説明するが、1以上いくつであってもよい。なお、以降では、複数の開発装置20A等を代表して、開発装置20Aを用いて説明することがあるが、他の開発装置20B及び20Cでも同様の説明が成立する。
開発者は、開発装置20Aを使用してソフトウェアの新たなバージョンを開発し、開発した新たなバージョンのソフトウェアを保管サーバ30に送信して、保管させる。また、開発装置20Aは、開発者によって開発された新たなバージョンに関する情報をネットワークNを介して管理装置10A等のいずれかに送信する。
保管サーバ30は、ソフトウェアを保管しているコンピュータである。保管サーバ30は、ソフトウェアの1以上のバージョンを記憶装置により記憶している。
ネットワークNは、管理装置10A等、開発装置20Aおよび保管サーバ30を互いに通信可能に接続する通信回線である。通信回線の種別は特に限定されず、有線ネットワーク、無線ネットワークを任意に組み合わせたものであってよい。また、インターネットの一部がネットワークNに含まれてもよい。
以降において、保管サーバ30、開発装置20A等、及び、管理装置10A等についてさらに詳しく説明する。
図4は、本実施の形態に係る保管サーバ30の構成を示すブロック図である。
図4に示されるように、保管サーバ30は、通信部31と、保管部32と、発行部33と、記憶装置34とを備える。保管サーバ30が備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部31は、ネットワークNに接続される通信インタフェース装置である。保管サーバ30は、通信部31を介して開発装置20Aと通信可能である。
保管部32は、記憶装置34を用いてソフトウェアを保管している処理部である。保管部32は、通信部31を介して開発装置20Aから新たなバージョンのソフトウェアを取得したら、取得したソフトウェアを記憶装置34に格納する。また、記憶装置34に格納されているソフトウェアを、ユーザからの要求に応じて読み出す。
発行部33は、ソフトウェアが格納されている場所を示す場所情報を発行する処理部である。発行部33は、保管部32がソフトウェアを記憶装置34に格納した場合に、そのソフトウェアが格納されている場所を示す情報を取得して、その場所を示す場所情報を生成することで、場所情報を発行する。発行部33は、生成した場所情報を開発装置20Aに通知する。
場所情報は、例えば、記憶装置34内でのソフトウェアに係る電子ファイルのインターネット上での位置を示すURL(Uniform Resource Locator)であり、以降では、この場合を例として説明する。URLは、例えば、記憶装置34内での所在を示すパス(Path)及びファイル名の情報と、保管サーバ30のホスト名とを含む。
記憶装置34は、ソフトウェアが格納されている記憶装置である。記憶装置34には、1以上のバージョンのソフトウェアが格納されている。記憶装置34には、保管部32によってソフトウェアが格納され、また、保管部32によってソフトウェアが読み出される。
図5は、本実施の形態に係る開発装置20Aの構成を示すブロック図である。なお、開発装置20B及び20Cも同様の構成を備え、それぞれ独立に動作する。
図5に示されるように、開発装置20Aは、通信部21と、開発部22と、トランザクション生成部23と、記憶装置24とを備える。開発装置20Aが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部21は、ネットワークNに接続される通信インタフェース装置である。開発装置20Aは、通信部21を介して保管サーバ30および管理装置10Aと通信可能である。
開発部22は、ユーザによる操作、又は、ソフトウェア開発のためのツールの機能に基づいて、開発者により開発されるソフトウェアの新たなバージョンを生成する処理部である。開発部22は、具体的には、ソフトウェアの開発の元になるバージョン(第一バージョンに相当)のソフトウェア(又は、プログラム若しくはプログラムコード)を保有しており、保有しているソフトウェアに基づいて新たなバージョン(第二バージョンに相当)のソフトウェアを生成する。このようにして、開発者は、開発装置20A(具体的には開発部22)を使用して、ソフトウェアの新たなバージョンを開発する。新たなバージョンを開発することをバージョンアップともいう。開発部22は、開発された新たなバージョンのソフトウェアを通信部21を介して保管サーバ30に送信し保管させる。このとき、開発部22は、保管サーバ30内で保管されているソフトウェアの格納場所を示すURLを保管サーバ30(具体的には発行部33)から通知される。
トランザクション生成部23は、ソフトウェアのバージョンに関する情報を含むトランザクションデータを生成する処理部である。トランザクションデータは、ソフトウェアの第一バージョンに関する情報(第一情報に相当)と、第一バージョンを元に開発者によってバージョンアップされた第二バージョンに関する情報(第二情報に相当)と、開発者の識別情報である開発者IDと、開発者の電子署名とを少なくとも含む。開発者の電子署名は、当該トランザクションデータに含まれる情報から、開発者の秘密鍵での暗号化により生成される。開発者の識別情報および秘密鍵は、トランザクション生成部23が記憶装置24から読み出すことで取得され得る。また、トランザクション生成部23は、生成したトランザクションデータを通信部21を介して管理装置10Aに送信する。
また、トランザクション生成部23は、新バージョン番号の発行依頼を生成し、管理装置10Aに送信し、その応答として、新バージョン番号の通知を受ける。
記憶装置24は、開発者に関する情報、および、ソフトウェアに関する情報を記憶している記憶装置である。開発者に関する情報は、開発者の識別情報である開発者IDと、開発者の鍵情報(秘密鍵を含む)を含む。開発者IDは、開発者を一意に識別し得る情報である。ソフトウェアに関する情報は、ソフトウェア本体、及び、ソフトウェアの保管サーバ30における格納場所を示すURLを含む。ここで、ソフトウェア本体とは、ソフトウェアのプログラムであり、図5において単に「ソフトウェア」と記載されている。記憶装置24に記憶されているソフトウェア本体は、開発部22によって読み出される。記憶装置24に記憶されている開発者ID、鍵情報およびURLは、トランザクション生成部23により読み出される。
図6は、本実施の形態に係る管理装置10Aの構成を示すブロック図である。
図6に示されるように、管理装置10Aは、通信部11と、番号管理部12と、トランザクション検証部13と、台帳管理部14と、トークン管理部16とを備える。管理装置10Aが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部11は、ネットワークNに接続される通信インタフェース装置である。管理装置10Aは、通信部11を介して開発装置20A、及び、他の管理装置10B及び10Cと通信可能である。
番号管理部12は、ソフトウェアのバージョンのバージョン番号を管理している処理部である。番号管理部12は、開発装置20Aからソフトウェアの新しいバージョン番号の発行依頼を受けると、その発行依頼に応じて新しいバージョン番号を発行し、開発装置20Aに通知する。番号管理部12は、現在保有しているバージョンのうち、最新のバージョンのバージョン番号より進んだバージョン番号を発行する。なお、バージョンに複数の系列がある場合には、番号管理部12は、系列ごとに新しいバージョン番号の発行依頼を受け、系列ごとにバージョン番号を発行する。
ここで、バージョン番号は、所定の規則に従って設定される。例えば、数値を用いて、バージョンが進むほど(つまりバージョンアップするほど)、より大きな数値を有するように設定される。このとき、数値とともに文字が使われてもよい。ここでは、文字によってバージョン系列を示す例を示す。すなわち、最初のバージョンであるバージョン1を元にして開発された系列1Aに含まれるバージョンを、バージョン1.A1、バージョン1.A2およびバージョン1.A3等という。また、バージョン1を元にして、系列1Aとは別に開発された系列1Bに含まれるバージョンをバージョン1.B1およびバージョン1.B2等という。
トランザクション検証部13は、トランザクションデータの正当性の検証をする処理部である。トランザクション検証部13は、通信部11を介して開発装置20Aからトランザクションデータを受信する。受信するトランザクションデータは、ソフトウェアの第一バージョンに関する第一情報と、第一バージョンを元に開発者によってバージョンアップされたソフトウェアの第二バージョンに関する第二情報と、開発者の識別情報と、開発者の電子署名とを含んでいる。トランザクション検証部13は、トランザクションデータを受信すると、受信したトランザクションデータに含まれる電子署名を用いて、当該トランザクションデータの正当性を検証をする。トランザクションデータの正当性の検証は、当該トランザクションデータに含まれる情報と、開発者の公開鍵とを用いてなされ、当該トランザクションデータが正当であるか否かが判定される。より具体的には、当該トランザクションデータが確かに開発装置20Aによって生成されたものであること、及び、当該トランザクションデータが生成されてから改ざんされていないことが判定される。なお、トランザクションデータの正当性の検証を、単に、トランザクションデータの検証ともいう。
なお、トランザクション検証部13が受信するトランザクションデータには、番号管理部12が通知した新しいバージョン番号が含まれ得る。
また、トランザクション検証部13が受信するトランザクションデータには、さらに新バージョンのソフトウェアの場所情報であるURLが含まれていてもよい。
台帳管理部14は、ソフトウェアのバージョンを管理するための分散台帳を管理している処理部である。ここでは分散台帳がブロックチェーン15である場合を例として説明するが、他の方式の分散台帳(例えば、IOTA又はハッシュグラフ等)を採用することも可能である。
台帳管理部14は、トランザクション検証部13がトランザクションデータを検証した場合に、他の管理装置10B及び10Cにトランザクションデータを送信することで、トランザクションデータの同期をとる。そして、台帳管理部14は、管理装置10Aと、他の管理装置10Bおよび10Cとの間でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムにおいて合意形成がなされた場合には、当該トランザクションデータを含むブロックを生成し、生成したブロックをブロックチェーン15に格納する。
なお、コンセンサスアルゴリズムの一例は、PBFT(Practical Byzantine Fault Tolerance)であるが、これに限定されず、PoW(Proof of Work)又はPoS(Proof of Stake)なども用いられ得る。
トークン管理部16は、ユーザ及び開発者それぞれが保有しているトークンを管理している処理部である。トークン管理部16は、ブロックチェーン15に格納されているトランザクションデータを参照して、開発者にトークンを提供する。なお、トークン管理部16は、トークンの管理にブロックチェーンを使用してもよい。
次に、ソフトウェアの新バージョンを管理装置10A等に管理させるためのトランザクションデータの構成について3つの例を示す。
図7は、本実施の形態に係るトランザクションデータの第一例であるトランザクションデータ40を示す説明図である。トランザクションデータ40は、ソフトウェアの第一バージョンに関する第一情報が、第一バージョンのバージョン番号を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第二バージョンのハッシュ値と、第二バージョンのバージョン番号とを含む場合の例である。
図7に示されるように、トランザクションデータ40は、開発者ID41と、URL42と、新バージョン番号43と、基バージョン番号44と、新バージョンのハッシュ値45と、署名46とを含む。
開発者ID41は、当該トランザクションデータ40により新たに管理させることになる新バージョンを開発した開発者の識別情報である。
URL42は、当該トランザクションデータ40により新たに管理させることになる新バージョンが格納されている場所を示すURLである。URL42は、保管サーバ30の記憶装置34内において、新バージョンのソフトウェアが格納されている場所を示している。
新バージョン番号43は、トランザクションデータ40により新たに管理させることになる新バージョンのバージョン番号である。
基バージョン番号44は、トランザクションデータ40により新たに管理させることになる新バージョンの開発の元になったバージョン(基バージョンともいう)のバージョン番号である。
新バージョンのハッシュ値45は、トランザクションデータ40により新たに管理させることになる新バージョンのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名46は、トランザクションデータ40に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ID41、URL42、新バージョン番号43、基バージョン番号44、及び、新バージョンのハッシュ値45を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
図8は、本実施の形態に係るトランザクションデータの第二例であるトランザクションデータ50を示す説明図である。トランザクションデータ50は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第二バージョンのハッシュ値を含む場合の例である。
図8に示されるように、トランザクションデータ50は、開発者ID51と、URL52と、新バージョンのハッシュ値53と、基バージョンのハッシュ値54と、署名55とを含む。
開発者ID51およびURL52は、トランザクションデータ40における同名の情報と同じである。
新バージョンのハッシュ値53は、トランザクションデータ50により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
基バージョンのハッシュ値54は、トランザクションデータ50により新たに管理させることになる新バージョンの開発の元になった基バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名55は、トランザクションデータ50に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ID51、URL52、新バージョンのハッシュ値53、及び、基バージョンのハッシュ値54を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
図9は、本実施の形態に係るトランザクションデータの第三例であるトランザクションデータ60を示す説明図である。トランザクションデータ60は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第一バージョンと第二バージョンとの差分のハッシュ値を含む場合の例である。
図9に示されるように、トランザクションデータ60は、開発者ID61と、URL62と、差分のハッシュ値63と、基バージョンのハッシュ値64と、署名65とを含む。
開発者ID61およびURL62は、トランザクションデータ40における同名の情報と同じである。
差分のハッシュ値63は、トランザクションデータ60により新たに管理させることになる新バージョンのプログラムと、新バージョンの開発の元になった基バージョンのプログラムとの差分のハッシュ値である。
基バージョンのハッシュ値64は、トランザクションデータ60により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名65は、トランザクションデータ60に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ID61、URL62、差分のハッシュ値63、及び、基バージョンのハッシュ値64を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
以降において、ブロックチェーン15に格納されているトランザクションデータについて説明する。
図10は、本実施の形態に係るブロックチェーン15に格納されているトランザクションデータの例を示す説明図である。図10は、具体的には、管理装置10A等がブロックチェーン15によって管理しているトランザクションデータである。図10に示される1つのエントリ(1行)が、1つのトランザクションデータに対応している。図10において紙面上の下にあるデータがより新しいトランザクションデータである。
図10に示されるように、各トランザクションデータは、ソフトウェアの各バージョンについてのURL、新バージョン番号、基バージョン番号及び開発者IDを含んでいる。なお、図10に示されるトランザクションデータは、図7に示されるトランザクションデータ40に含まれる各情報に相当している。
ブロックチェーン15には、図10のように、現時点以前のソフトウェアの各バージョンについての情報が格納されている。具体的には、バージョン1からバージョン1.A1、1.A2及び1.A3が開発されたこと、および、バージョン1からバージョン1.B1及び1.B2が開発されたことを示す情報が格納されている。
そして、現時点以前のソフトウェアの各バージョンについての情報は、改ざんが困難であるというブロックチェーンの特性により、改ざんがなされないように管理装置10Aによって管理されている。
以降において、管理システム1の処理を説明する。
図11及び図12は、本実施の形態に係る管理システム1における第一及び第二の処理を示すシーケンス図である。図11及び図12は、開発装置20Aによってソフトウェアの新たなバージョンが開発されてから、開発されたソフトウェアのバージョンが管理装置10A等によって管理されるまでの一連の処理を示している。
図11に示されるように、ステップS121において、開発装置20Aにより、ソフトウェアの新バージョンが完成する。
ステップS122において、開発装置20Aは、ステップS121で開発された新バージョンのソフトウェアを保管サーバ30に格納すべく、保管サーバ30に送信する。
ステップS131において、保管サーバ30は、開発装置20Aから送信された新バージョンのソフトウェアを受信して記憶装置34に格納する。
ステップS132において、保管サーバ30は、ステップS131で格納された新バージョンのソフトウェアの場所を示すURLを発行する。そして、保管サーバ30は、発行したURLを開発装置20Aに送信する。URLは、ステップS122で受信したソフトウェアに対する応答として送信され得る。
ステップS123において、開発装置20Aは、新バージョン番号(新番号ともいう)の発行依頼を生成し、管理装置10Aに送信する。ここで、発行依頼とは、ソフトウェアの新バージョンに付ける新たな番号、つまり新バージョン番号を発行することを管理装置10Aに依頼するための通信データであり、少なくとも基バージョン番号を含む。
ステップS111において、管理装置10Aは、ステップS123で送信された発行依頼を受信し、発行依頼に含まれている基バージョンが、管理装置10Aが管理しているブロックチェーン15に格納されているか否かを判定する。基バージョンがブロックチェーン15に格納されていると判定した場合(ステップS111でYes)、ステップS112に進む。
なお、基バージョンがブロックチェーン15に格納されていないと判定した場合(不図示)には、管理装置10Aは、所定のエラー処理(例えば、発行が失敗したことを示す通知を開発装置20Aに送信する処理)を実行し、処理を終える。ただし、この場合、管理装置10Aは、なんら処理をせずに処理を終えてもよい。このように、基バージョンがブロックチェーン15に格納されていないと判定されるのは、例えば、管理装置10A等で管理されていないバージョンのソフトウェアを管理装置10A等に管理させようとしたときである。
ステップS112において、管理装置10Aは、新バージョンのバージョン番号を発行する。
図12に移り、ステップS113において、管理装置10Aは、ステップS112で発行した新バージョンのバージョン番号を、開発装置20Aに通知する。新バージョンのバージョン番号の通知は、ステップS123の発行依頼に対する応答として送信され得る。
ステップS124において、新バージョンをブロックチェーン15に書き込むためのトランザクションデータを生成し、管理装置10Aに送信する。このトランザクションデータには、ステップS113で送信された新バージョン番号、又は、この新バージョン番号を用いて算出される情報が含められる。
ステップS114において、管理装置10Aは、ステップS124で開発装置20Aが送信したトランザクションデータを検証する。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。
ステップS115において、管理装置10Aは、トランザクションデータを管理装置10B及び10Cに送信する。そして、管理装置10A等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン15に格納される。これにより、開発者が開発したソフトウェアの新バージョンに関する情報、より具体的には、開発者ID及びバージョン番号がブロックチェーン15に格納され、その格納時以降の改ざんが困難になる。
なお、ステップS114でトランザクションデータの検証に失敗した、つまり、トランザクションデータが正当でないと検証された場合には、その旨を開発装置20Aに通知するようにしてもよい。このようにすれば、開発者がそのことを認識し対処することができる。一方、上記通知はなされなくてもよい。
なお、ソフトウェアそのものを管理装置10Aがブロックチェーン15に格納して管理してもよい。このようにすれば、バージョンに関する情報だけでなく、ソフトウェアそのものの改ざんも抑制しながらソフトウェアを管理することができ、より有用となる。このようにするには、開発装置20Aが、ソフトウェアそのもの(つまりソフトウェアのプログラムコード)を含むトランザクションデータを生成して管理装置10Aに送信し、管理装置10Aが、受信した上記トランザクションデータをブロックチェーン15に格納すればよい。
なお、開発装置20Aは、管理装置10Aにネットワークを介して接続されている装置の一例であり、この場合を例として説明したが、上記装置は開発装置20Aに限られない。例えば、開発者から委託された人が使用する装置も、管理装置10Aにネットワークを介して接続されている装置に該当し得る。この場合、上記説明における「開発者」を、「開発者から委託された人」に読み替えることで上記説明が成立する。
以上のように、本実施の形態の管理方法によれば、ソフトウェアのバージョンアップをした開発者に関する情報が分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、上記管理方法によって、管理している情報の改ざんの発生を抑制することができる。
また、新しいバージョンのバージョン番号を発行し、その発行したバージョン番号と紐付けて新しいバージョンの開発者に関する情報が管理される。当該バージョン管理システムと異なる装置などによってバージョン番号を付すとすれば、バージョン番号の重複などの不備が生じ得る。本発明に係る管理方法によれば、バージョン番号の不備を未然に回避しながら、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのバージョン番号と、第二バージョンのハッシュ値と、第二バージョンのバージョン番号とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのハッシュ値と、第二バージョンのハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのハッシュ値と、第一バージョンと第二バージョンとの差分のハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第二バージョンのソフトウェアの格納場所を示す情報が、開発者に関する情報とともに分散台帳に格納される。よって、さらに第二バージョンが格納された場所情報の改ざんの発生をも抑制しながら、管理している情報の改ざんの発生を抑制することができる。
また、これまでのトランザクションデータに基づいて新しいバージョンの開発者にトークンが提供される。分散台帳に格納されたトランザクションデータの改ざんが困難であるので、開発者になりすます不適切な者へのトークンの提供を未然に回避することができる。このように、管理している情報の改ざんの発生を抑制し、不適切なトークンの提供を未然に回避することができる。
また、複数の管理装置が、分散台帳としてブロックチェーンを用いることによって、より容易に、管理している情報の改ざんの発生を抑制することができる。
(実施の形態2)
本実施の形態において、ソフトウェアのバージョン管理方法であって、管理している情報の改ざんの発生を抑制する管理方法などについて説明する。特に、ソフトウェアのメジャーバージョンアップの際に、バージョンアップの前後で異なるブロックチェーンによってバージョンを管理する技術について説明する。
ここで、メジャーバージョンアップとは、一般に基バージョンに対して比較的大きな機能修正又は追加がなされるバージョンアップである。これに対して、実施の形態1で説明した第一バージョンから第二バージョンへのバージョンアップは、比較的小さな機能修正又は追加がなされるバージョンアップであり、一般にマイナーバージョンアップともよばれる。メジャーバージョンアップは、例えば、Z社による決定に基づいてなされる。
図13は、本実施の形態に係る、バージョン系列の分岐を示す説明図である。
図13に示されるバージョン1(図13において「Ver1」と記載)などは、実施の形態1に係るソフトウェアのバージョンに相当する。ここでは、上記ソフトウェアの開発を行っていた開発者のコミュニティを「バージョン1のコミュニティ」という。
ソフトウェア開発において、メジャーバージョンアップがなされるとき、バージョン1のコミュニティで開発された系列1の一部又は全部の複製を、新たなバージョン系列である系列2として使用することが行われる。このとき、系列2として使用されるのは、バージョン1のコミュニティで開発されたバージョンの系列1のうちの最新バージョンを少なくとも含むバージョンの系列であり、バージョン1のコミュニティで開発されたバージョン系列のうちのすべてのバージョンを含むバージョン系列であってもよい。
このように、系列1の一部又は全部から新たな系列2を生成することを、「系列を分岐させる」という。言い換えれば、分岐とは、系列1の一部又は全部から新たな系列2を生成することである。
そして、系列2の最初のバージョンであるバージョン(図13において「Ver2」)を元にして、バージョン2のコミュニティに属する開発者による開発がなされ、さまざまなバージョン系列が生成される。図13では、バージョン2のソフトウェアに基づいて、開発者Fによる開発によりバージョン2.F1が生成され、開発者Gによる開発によりバージョン2.G1が生成されたことが示されている。さらに、バージョン2.F1を元にして、バージョン2.F2が開発される。
図14は、本実施の形態に係る管理システム2の構成を示す説明図である。
図14に示されるように、管理システム2は、複数の管理装置10D、10E及び10Fと、複数の開発装置20A等と、保管サーバ30と、制御装置70とを備える。複数の開発装置20A等と、保管サーバ30とは、それぞれ実施の形態1における同名の構成要素と同じであるので説明を省略する。
制御装置70は、管理装置10D等に対してバージョン系列の分岐をさせる制御をする制御装置である。制御装置70は、具体的には、上記制御として、バージョン系列の分岐をさせる指示である分岐指示を含む通信データを送信する。この通信データは、制御装置70に対するユーザによる操作などに基づいて送信され得る。
複数の管理装置10D、10E及び10F(10D等ともいう)は、実施の形態1における複数の管理装置10A等と同様に、バージョン情報をコンピュータにより管理する管理装置である。管理装置10D等は、管理装置10A等と同等の機能を有し、さらに、制御装置70から送信される分岐指示に基づいて、バージョン系列の分岐を作成する機能を有する。
図15は、本実施の形態に係る制御装置70の構成を示すブロック図である。
図15に示されるように、制御装置70は、通信部71と、分岐指示部72とを備える。
通信部71は、ネットワークNに接続される通信インタフェース装置である。制御装置70は、通信部71を介して管理装置10Dと通信可能である。制御装置70が備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
分岐指示部72は、通信部71を介して管理装置10Dに対して分岐をさせる指示(分岐指示)を送信する処理部である。分岐指示は、少なくとも、分岐の元になるバージョン系列を特定する情報を含む。
図16は、本実施の形態に係る管理装置10Dの構成を示すブロック図である。
図16に示されるように、管理装置10Dは、通信部11と、番号管理部12と、トランザクション検証部13と、台帳管理部14Aとを備える。管理装置10Dが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
管理装置10Dは、台帳管理部14Aを備える点で、実施の形態1の管理装置10Aと異なる。以降、台帳管理部14Aについて主に説明する。
台帳管理部14Aは、分岐部17を有する。また、ブロックチェーン15に加えて、ブロックチェーン15Aを保有し得る。
分岐部17は、ソフトウェアのバージョン系列を分岐させて新たな系列を作成する処理部である。分岐部17は、制御装置70が送信する分岐指示を含む通信データを通信部11を介して受信し、上記通信データを受信した場合に、ソフトウェアのバージョン系列の分岐を作成する。このとき、分岐部17は、これまでバージョンアップしてきたバージョン系列に対応するブロックチェーン15のうちの最新バージョンを少なくとも含む1以上のバージョンの複製を有する、新たなバージョン系列に対応するブロックチェーン15Aを生成することで、バージョン系列を分岐させる。
バージョン系列の分岐の後、トランザクション検証部13は、トランザクションデータを受信する際には、トランザクションデータが第一バージョン系列又は第二バージョン系列のどちらに係るトランザクションデータであるかを特定し、受信したトランザクションデータを、第一バージョン系列及び第二バージョン系列のうち、特定したトランザクションデータに対応するバージョン系列に対応する分散台帳に格納するようにする。
次に、本実施の形態の台帳管理部14Aが管理しているブロックチェーン15及び15Aについて説明する。
図17及び図18は、本実施の形態に係るブロックチェーン15及び15Aに格納されているトランザクションデータを示す説明図である。具体的には、図17に示されるトランザクションデータは、バージョン1を含むバージョン系列である系列1に対応するブロックチェーン15に格納されているトランザクションデータである。図18に示されるトランザクションデータは、バージョン2を含むバージョン系列である系列2に対応するブロックチェーン15Aに格納されているトランザクションデータである。
図17に示されるように、系列1に対応するブロックチェーン15に含まれる各トランザクションデータは、図10に示されるブロックチェーン15と同様に、ソフトウェアの各バージョンについてのURL、新バージョン番号、基バージョン番号及び開発者IDを含んでいる。具体的には、ブロックチェーン15は、バージョン1.A1、1.A2及び1.B1などについての上記各情報を含んでいる。
また、図18に示されるように、系列2に対応するブロックチェーン15Aに含まれる各トランザクションデータは、図10に示されるブロックチェーン15と同様に、ソフトウェアの各バージョンについてのURL、新バージョン番号、基バージョン番号及び開発者IDを含んでいる。具体的には、ブロックチェーン15Aは、バージョン2.D1、2.D2及び2.E1などについての上記各情報を含んでいる。
以降において、管理システム2の処理を説明する。
図19は、本実施の形態に係る管理システム2における処理を示すシーケンス図である。
図19に示されるように、制御装置70は、ステップS271において、Z社によるバージョン系列を分岐させる決定がなされたら、分岐指示を含む通信データを生成し、管理装置10Dに送信する。
ステップS211において、管理装置10Dは、ステップS271で送信された分岐指示を受信したら、新たなバージョン系列に対応するブロックチェーン(図16のブロックチェーン15Aに相当)を生成するためのトランザクションデータを生成する。
ステップS212において、管理装置10Dは、ステップS211で生成したトランザクションデータを管理装置10E及び10Fに送信する。そして、管理装置10D等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーンに格納される。これにより、新たなバージョン系列に対応するソフトウェアの新バージョンに関する情報、より具体的には、開発者ID及びバージョン番号がブロックチェーンに格納され、格納時以降の改ざんが困難になる。
次に、複数のバージョン系列それぞれに対応するブロックチェーンが管理装置10D等によって管理されているときの、新たなバージョンの管理について説明する。
図20は、本実施の形態に係るトランザクションデータの例であるトランザクションデータ40Aを示す説明図である。
トランザクションデータ40Aは、図7に示されるトランザクションデータ40にさらに系列番号43Aが追加されている。
系列番号43Aは、当該トランザクションデータ40Aにより新たに管理させることになる新バージョンの系列を示す情報である。
なお、署名46は、トランザクションデータ40Aに含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。署名46の生成の元になる情報には、図7の署名46の生成の元になる情報に加えて系列番号43Aも含まれる。
複数の系列が存在する場合、開発装置20Aは、ソフトウェアの新バージョンが属する系列を示す系列番号43Aをトランザクションデータ40Aに含めて、管理装置10Dに送信する。管理装置10Dは、トランザクションデータ40Aを受信すると、受信したトランザクションデータ40Aに含まれる系列番号を取得し、その系列番号に応じたブロックチェーンにトランザクションデータ40Aを格納する。
図21は、本実施の形態に係るコンセンサスアルゴリズムに含まれるバージョン系列に関する処理を示すフロー図である。図21に示される処理は、図12のステップS115のコンセンサスアルゴリズムに含まれる処理である。
ステップS141において、管理装置10Dは、受信したトランザクションデータ40Aに含まれる系列番号を取得する。
ステップS142において、管理装置10Dは、台帳管理部14Aが管理している複数のブロックチェーンのうちから、ステップS141で取得した系列番号に対応するブロックチェーンを特定する。
ステップS143において、管理装置10Dは、ステップS142で特定したブロックチェーンについて、管理装置10E及び10Fとの間でコンセンサスアルゴリズムを実行する。これにより、受信したトランザクションデータ40AをステップS142で特定したブロックチェーンに格納する。
このようにして、開発装置20Aによって指定された系列番号に応じたブロックチェーンにトランザクションデータが格納される。
以上のように、本実施の形態の管理方法によれば、複数のバージョン系列それぞれに対応した分散台帳を管理しており、バージョン系列の分岐の際に、新しい系列に対応する分散台帳を生成する。一の系列で多数のバージョンアップが行われると、バージョンアップの履歴などの情報を取得する際に、多数のバージョンアップそれぞれに対応する情報が得られ、処理負荷が高くなる可能性がある。このような場合にバージョン系列を分岐し、新たなバージョン系列を新たな分散台帳で管理することで、バージョンアップの履歴などの情報を少なくし、上記の処理負荷の上昇を未然に防ぐことができる。
また、複数のバージョン系列が複数の分散台帳によって管理されているときに、どちらのバージョン系列に属するトランザクションデータかを特定し、当該トランザクションデータを適切な分散台帳により管理することができる。
(実施の形態3)
本実施の形態において、ソフトウェアのバージョン管理方法であって、管理している情報の改ざんの発生を抑制する管理方法などについて説明する。特に、ソフトウェアのバージョン系列の利用を停止するようにバージョンを管理する技術について説明する。バージョン系列の利用を停止することを、バージョン系列を廃止する、ともいう。
図22は、本実施の形態に係る、バージョン系列の廃止を示す説明図である。
図22に示されるVer1及びVer2は、実施の形態2に係るソフトウェアのバージョンに相当する。
ソフトウェア開発において、比較的新しいバージョン系列が生成されたなどの理由から、比較的古いバージョン系列の利用を停止、つまり廃止することが行われる。廃止されたバージョン系列は、廃止された時点以降のバージョンアップが禁止されるよう制御される。また、廃止された時点以降において、廃止された系列に含まれる各バージョンのソフトウェアのユーザへの提供が禁止されるように、さらに制御されてもよい。
具体的には、図22に示されるように、バージョン1.Aのバージョン系列の最新バージョン1.A3、及び、バージョン1.Bのバージョン系列の最新バージョン1.B2が存在する時点において、系列1が廃止されるとする。すると、例えばバージョン1.Aのバージョン系列に含まれ得る次のバージョン1.A4(不図示)、又は、バージョン1.Bのバージョン系列に含まれ得る次のバージョン1.B3(不図示)の登録は禁止される。また、廃止された時点以降で、バージョン1、バージョン1.A及びバージョン1.Bの各系列のソフトウェアのユーザへの提供が禁止される。
本実施の形態に係る管理システム2は、実施の形態2における管理システム2と同様であり、制御装置及び管理装置の機能が一部異なる。具体的には、本実施の形態に係る管理システム2は、制御装置70Aを備え、管理装置10G、10H及び10I(10G等ともいう)。以降において、本実施の形態に係る制御装置70A及び管理装置10Gについて詳しく説明する。
図23は、本実施の形態に係る制御装置70Aの構成を示すブロック図である。
図23に示されるように、制御装置70Aは、通信部71と、トランザクション生成部73とを備える。なお、制御装置70Aは、実施の形態2の制御装置70と同様に分岐指示部72を備えてもよい。
通信部71は、実施の形態2の制御装置70Aが有する通信部71と同じである。
トランザクション生成部73は、バージョン系列を廃止することを示すトランザクションデータを生成する処理部である。トランザクション生成部73は、生成したトランザクションデータを管理装置10Gに送信する。上記トランザクションデータは、廃止するバージョン系列を特定しうる特定情報として、系列番号を少なくとも含む。
図24は、本実施の形態に係る管理装置10Gの構成を示すブロック図である。
図24に示されるように、管理装置10Gは、通信部11と、番号管理部12と、トランザクション検証部13と、台帳管理部14Aと、廃止部18とを備える。また、管理装置10Gは、状態管理部19を備えてもよい。管理装置10Gが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
管理装置10Gは、廃止部18を備える点、および、状態管理部19を備え得る点で、実施の形態1の管理装置10Aおよび実施の形態2の管理装置10Dと異なる。以降、廃止部18および状態管理部19について主に説明する。
廃止部18は、廃止するバージョン系列に対応するブロックチェーンに、当該バージョン系列を廃止することを示す情報を含むブロックを格納する処理部である。廃止部18は、制御装置70Aが送信した、バージョン系列を廃止することを示すトランザクションデータを受信する。廃止部18は、受信したトランザクションデータに含まれる系列番号によって特定されるバージョン系列に対応するブロックチェーンに、当該トランザクションデータを格納する。
状態管理部19は、各バージョン系列のが運用状態であるか、又は、廃止状態であるかを示す情報を管理している処理部である。状態管理部19は、管理装置10Gが管理しているバージョン系列のそれぞれについて、運用状態であるか、又は、廃止状態であるかを示す情報を保持している。そして、廃止部18がバージョン系列を廃止するトランザクションをブロックチェーンに格納するときに、状態管理部19は、そのバージョン系列の状態を、運用状態から廃止状態に変更する。なお、状態管理部19は、必須の構成ではない。
図25は、本実施の形態に係るトランザクションデータの例であるトランザクションデータ80を示す説明図である。
図25に示されるように、トランザクションデータ80は、系列番号81と、廃止情報82と、署名83とを含む。
系列番号81は、トランザクションデータ80によって廃止されるバージョン系列を特定する情報である。
廃止情報82は、トランザクションデータ80が、廃止を意味するトランザクションデータであることを意味する情報である。
署名83は、トランザクションデータ80に含まれる情報から、制御装置70Aの秘密鍵での暗号化により生成された電子署名である。具体的には、系列番号81及び廃止情報82を含む情報に対するハッシュ演算により得られたハッシュ値を、制御装置70Aの秘密鍵で暗号化した値である。
図26は、本実施の形態に係るブロックチェーンに格納されているトランザクションデータを示す説明図である。具体的には、図26に示されるトランザクションデータは、バージョン1のバージョン系列に対応するブロックチェーン15である。
図26に示されるように、バージョン1のバージョン系列に対応するブロックチェーン15に含まれる各トランザクションデータは、図10に示されるブロックチェーン15と同様に、ソフトウェアの各バージョンについてのURL、新バージョン番号、基バージョン番号及び開発者IDを含んでいる。具体的には、ブロックチェーン15は、バージョン1.A1、1.A2及び1.B1などについての上記各情報を含んでいる。
そして、ブロックチェーン15に含まれるトランザクションデータ91が、バージョン系列1Aを廃止状態にするトランザクションデータである。また、ブロックチェーン15に含まれるトランザクションデータ92が、バージョン系列1Bを廃止状態にするトランザクションデータである。
図27は、本実施の形態に係る状態管理部19が管理している状態情報を示す状態テーブルT1の説明図である。
図27に示されるように、状態テーブルT1は、バージョン系列1A及び1Bの状態を示す情報を有する。図27では、バージョン系列1Aが廃止状態であり、バージョン系列1Bが運用状態であることが示されている。これは、台帳管理部14Aがバージョン1とバージョン2の各系列に対応するブロックチェーンを保有しており、バージョン1の系列が廃止され、バージョン2の系列が運用中である場合に対応している。
以降において、管理システム2の処理を説明する。
図28は、本実施の形態に係る管理システム2における処理を示すシーケンス図である。
図28に示されるように、制御装置70Aは、ステップS371において、バージョン系列を廃止させるトランザクションデータを生成し、管理装置10Gに送信する。
ステップS311において、管理装置10Gは、ステップS371で送信されたトランザクションデータを受信したら、受信したトランザクションデータを検証する。トランザクションデータの検証は、当該トランザクションデータに含まれる情報と、制御装置70Aの公開鍵とによりなされる。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。
ステップS312において、管理装置10Gは、ステップS312で生成したトランザクションデータを管理装置10H及び10Iに送信する。そして、管理装置10G等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーンに格納される。これにより、バージョン系列の廃止を示す情報がブロックチェーンに格納され、以降の改ざんが困難になる。そして、これ以降に、廃止したバージョン系列に対応するブロックチェーンへのブロックの接続が禁止され、また、廃止したバージョン系列に含まれるソフトウェアの提供も禁止される。
なお、ステップS311でトランザクションデータの検証に失敗した、つまり、トランザクションデータが正当でないと検証された場合には、その旨を制御装置70Aに通知するようにしてもよい。このようにすれば、制御装置70Aの運用者がそのことを認識し対処することができる。一方、上記通知はなされなくてもよい。
なお、管理装置10Gは、既に廃止されたバージョン系列に対して開発装置20Aから新バージョン番号の発行依頼を受信した場合には、当該バージョン系列が既に廃止されていることを示す通知を送信してもよい。また、管理装置10Gがバージョン系列を廃止したときに、トークン管理部16が、廃止したバージョン系列に含まれるバージョンの開発者にトークンを提供してもよい。このトークンは、報奨金または支度金としての意味あいを有するともいえる。
上記各実施の形態におけるブロックチェーンについて補足的に説明する。
図29は、ブロックチェーンのデータ構造を示す説明図である。
ブロックチェーンは、その記録単位であるブロックがチェーン(鎖)上に接続されたものである。それぞれのブロックは、複数のトランザクションデータと、直前のブロックのハッシュ値とを有している。具体的には、ブロックB2には、その前のブロックB1のハッシュ値が含まれている。そして、ブロックB2に含まれる複数のトランザクションデータと、ブロックB1のハッシュ値とから演算されたハッシュ値が、ブロックB2のハッシュ値として、ブロックB3に含められる。このように、前のブロックの内容をハッシュ値として含めながら、ブロックをチェーン状に接続することで、記録されたトランザクションデータの改ざんを有効に防止する。
仮に過去のトランザクションデータが変更されると、ブロックのハッシュ値が変更前と異なる値になり、改ざんしたブロックを正しいものとみせかけるには、それ以降のブロックすべてを作り直さなければならず、この作業は現実的には非常に困難である。この性質を使用して、ブロックチェーンに改ざん困難性が担保されている。
図30は、トランザクションデータのデータ構造を示す説明図である。
図30に示されるトランザクションデータは、トランザクション本体P1と、電子署名P2とを含む。トランザクション本体P1は、当該トランザクションデータに含まれるデータ本体である。電子署名P2は、トランザクション本体P1のハッシュ値に対して、当該トランザクションデータの作成者の署名鍵で署名する、より具体的には、作成者の秘密鍵で暗号化することで生成されたものである。
トランザクションデータは、電子署名P2を有するので、改ざんが実質的に不可能である。これにより、トランザクション本体の改ざんが防止される。
以上のように、本実施の形態の管理方法によれば、所定のトランザクションデータによって、適切にバージョン系列を廃止することができる。よって、さらにバージョン系列の廃止を実現しながら、より容易に、管理している情報の改ざんの発生を抑制することができる。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の管理装置などを実現するソフトウェアは、次のようなプログラムである。
すなわち、このプログラムは、コンピュータに、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第一の管理装置が、前記ソフトウェアの第一バージョンに関する第一情報と、前記第一バージョンを元に開発者によってバージョンアップされた前記ソフトウェアの第二バージョンに関する第二情報と、前記開発者の識別情報と、電子署名とを含むトランザクションデータを、前記第一の管理装置にネットワークを介して接続されている装置から受信し、前記第一の管理装置が、受信した前記トランザクションデータに含まれる前記電子署名を用いて前記トランザクションデータの正当性を検証し、前記トランザクションデータが正当である場合に、前記複数の管理装置それぞれが前記トランザクションデータを前記分散台帳に格納する管理方法を実行させるプログラムである。
以上、一つまたは複数の態様に係る管理方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。