JP2020071691A - Software build process recording system and method, and software build process monitoring program - Google Patents
Software build process recording system and method, and software build process monitoring program Download PDFInfo
- Publication number
- JP2020071691A JP2020071691A JP2018205564A JP2018205564A JP2020071691A JP 2020071691 A JP2020071691 A JP 2020071691A JP 2018205564 A JP2018205564 A JP 2018205564A JP 2018205564 A JP2018205564 A JP 2018205564A JP 2020071691 A JP2020071691 A JP 2020071691A
- Authority
- JP
- Japan
- Prior art keywords
- build process
- block
- file
- command line
- process data
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、ソフトウェアのビルドプロセスを記録するシステムおよび方法ならびにコンピュータにソフトウェアのビルドプロセスを監視させるためのプログラムに関する。 The present invention relates to a system and method for recording a software build process, and a program for causing a computer to monitor the software build process.
ソフトウェア製品の開発プロセスを事後的に検証可能にするソフトウェアトレーサビリティはソフトウェア製品が持つ重要な品質の一つである。CoEST(Center of Excellence for Software & Systems Traceability)の定義によれば、ソフトウェアトレーサビリティとは「ソフトウェア製品を構成する一意に識別可能な人工物を相互に関連付け、必要なリンクを維持し、それらのネットワークを使用して、ソフトウェア製品とその開発プロセスの両方の質問に答える能力」である。このようなソフトウェアトレーサビリティは訴訟による紛争解決時の有力な証拠になり得る。そのため、ソフトウェア内に存在する欠陥が人命や環境に大きな脅威を与え得る領域において、ソフトウェアトレーサビリティは特に重要視されている。 Software traceability, which makes it possible to verify the development process of software products afterwards, is one of the important qualities of software products. According to the definition of CoEST (Center of Excellence for Software & Systems Traceability), software traceability means "to associate uniquely identifiable artifacts that make up a software product with each other, maintain necessary links, and connect those networks. The ability to use and answer questions for both the software product and its development process. " Such software traceability can be strong evidence in litigation dispute resolution. Therefore, software traceability is particularly important in areas where defects existing in software can pose a great threat to human life and the environment.
ソフトウェアトレーサビリティを担保する情報として、企業や組織内部に大量に蓄積された要求仕様書、設計書、ソースコードなどの人工物間のリンクを手作業で作成することはコストが大きく、投資効果が低いことが指摘されている。そこで、企業や組織内部に蓄積された情報群から自動的に関連リンクを生成する技術が開発されている(例えば、非特許文献1および2を)。また、オープンソースソフトウェア(OSS)コンポーネントを使用したソフトウェア開発において各コンポーネントのライセンスコンプライアンス評価のために、ソフトウェアのビルド時に発生するシステムコールを監視して各コンポーネントの依存関係を自動構築している(例えば、非特許文献3を参照)。 As information that ensures software traceability, it is costly and investment effect is low to manually create links between artifacts such as requirement specifications, design documents, and source codes that are accumulated in large amounts inside companies and organizations. It has been pointed out. Therefore, a technique has been developed for automatically generating a related link from a group of information accumulated in a company or an organization (for example, Non-Patent Documents 1 and 2). Also, in software development using open source software (OSS) components, in order to evaluate the license compliance of each component, system calls that occur at the time of building the software are monitored to automatically build the dependency relationships of each component (for example, , Non-Patent Document 3).
近年、ソフトウェア開発のグローバル化により、一つの開発プロジェクトに、地理的に分散した複数の開発拠点が参加するケースが増加している。例えば、北米に拠点を持つ企業がアジアに拠点を持つ企業に対してソフトウェア開発をアウトソーシングする場合が挙げられる。開発拠点の分散化によって開発スピードの向上やコスト削減が期待されるため、ソフトウェア開発のグローバル化・分散化の潮流は今後も拡大を続けると考えられる。一方で、時差の影響により適時のやりとりが不足し、関係者間の方向性の統一や信頼関係の構築が難しくなることが問題となる。特に、ソフトウェアトレーサビリティを担保する情報を複数の企業や組織間で活用する場合において、そのような情報の形式標準化や共有手法については未解決もしくは部分的な解決に留まっている。 In recent years, due to the globalization of software development, the number of geographically dispersed development bases participating in one development project is increasing. For example, a company based in North America may outsource software development to a company based in Asia. Since the decentralization of development bases is expected to improve development speed and reduce costs, the trend of globalization and decentralization of software development is expected to continue to expand. On the other hand, it becomes a problem that timely communication is insufficient due to the influence of the time difference, and it becomes difficult to unify the directionality of the parties concerned and to build a trusting relationship. In particular, when utilizing information that guarantees software traceability among multiple companies or organizations, standardization and sharing methods of such information remain unsolved or partially solved.
一方、医療や食品など、ソフトウェア以外の分野におけるトレーサビリティ担保の取り組みとして、近年、ブロックチェーンが活用され始めている。しかし、医療や食品などの分野で活用されているトレーサビリティの仕組みをそのままソフトウェア開発の分野に適用するのは困難である。なぜなら、1)ソフトウェア製品は数百から数万以上の人工物の集合から構成され、2)ソフトウェア製品を構成する人工物(特にソースコード)はコピーや流用されるリスクが高い、という特有の事情があるからである。 On the other hand, in recent years, blockchain has begun to be utilized as an approach to traceability assurance in fields other than software, such as medical care and food. However, it is difficult to apply the traceability mechanism used in the fields such as medical care and food directly to the field of software development. Because, 1) software products consist of hundreds to tens of thousands or more of artifacts, and 2) artifacts (especially source code) that make up software products have a high risk of being copied or diverted. Because there is.
上記問題に鑑み、本発明は、ソフトウェアのビルドプロセスの記録に適したシステム、およびそのようなシステムで使用され、コンピュータにソフトウェアのビルドプロセスを監視させるためのプログラムを提供することを目的とする。 In view of the above problems, it is an object of the present invention to provide a system suitable for recording a software build process, and a program used in such a system for causing a computer to monitor the software build process.
本発明の一局面に従うと、複数のコンピュータで形成されるネットワーク上のブロックチェーンにソフトウェアのビルドプロセスを記録するシステムであって、ソフトウェアのビルドプロセスにおいて実行されるコマンドライン、前記コマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各ハッシュ値を含むビルドプロセスデータを生成して前記ネットワークに送信するビルドプロセス監視機能を有する複数のノードと、現在の最新ブロックのブロックヘッダのハッシュ値、タイムスタンプ、所定の条件を満たすように選ばれたナンス値、および前記ビルドプロセス監視機能を有する複数のノードから受信した,ブロックチェーンに未登録の複数のビルドプロセスデータのトップハッシュを含むブロックヘッダ、および前記複数のビルドプロセスデータを含むブロックを生成して前記ネットワークに送信するブロック生成機能を有するノードと、これまでに生成されたブロックを保持しており、前記ブロック生成機能を有するノードから受信したブロックを新たに保持するブロック保持機能を有する複数のノードと、を備えたソフトウェアビルドプロセス記録システムが提供される。 According to one aspect of the present invention, there is provided a system for recording a software build process in a block chain on a network formed by a plurality of computers, the command line being executed in the software build process, and the command in the command line. A build process including a binary file, a file specified by the command line, a file other than the specified file that is called when the command line is executed, and a hash value of each file obtained by executing the command line A plurality of nodes having a build process monitoring function for generating data and transmitting the data to the network, a hash value of a block header of a current latest block, a time stamp, a nonce value selected so as to satisfy a predetermined condition, and a previous A block header including top hashes of a plurality of build process data not registered in the block chain received from a plurality of nodes having a build process monitoring function, and a block including the plurality of build process data are generated and transmitted to the network. A node having a block generating function, and a plurality of nodes having a block retaining function that retains the blocks generated so far and newly retains the block received from the node having the block generating function. A software build process recording system is provided.
また、本発明の別の一局面に従うと、コンピュータにソフトウェアのビルドプロセスを監視させるためのプログラムであって、コンピュータに入力されたコマンドラインを取得するコマンドライン取得手段、前記取得されたコマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各パスを特定するファイルパス特定手段、前記取得されたコマンドラインおよび前記特定された各パスに存在するファイルの各ハッシュ値を計算するハッシュ値計算手段、前記取得されたコマンドラインおよび前記特定された各パスを含むプロセスサマリを生成して所定の保存領域に保存するとともに、前記プロセスサマリにおける前記取得されたコマンドラインおよび前記特定された各パスを前記計算された各ハッシュ値に置き換えてビルドプロセスデータを生成するビルドプロセスデータ生成手段、および複数のコンピュータで形成されるネットワークに前記生成されたビルドプロセスデータを送信する送信手段、としてコンピュータを機能させるソフトウェアビルドプロセス監視プログラムが提供される。 According to another aspect of the present invention, there is provided a program for causing a computer to monitor a software build process, the command line obtaining unit obtaining a command line input to the computer, and the command line obtaining unit. Specify each path of the command binary file, the file specified in the command line, the file other than the specified file that is called when the command line is executed, and the file obtained by executing the command line File path identifying means, hash value computing means for computing each hash value of the file existing in each of the obtained command line and each of the identified paths, process including the obtained command line and each of the identified paths Generate summary And a plurality of build process data generating means for storing the obtained command line and each specified path in the process summary into the calculated hash value to generate build process data, There is provided a software build process monitoring program that causes a computer to function as a transmission unit that transmits the generated build process data to a network formed by the computer.
本発明によれば、ブロックチェーンを利用してソフトウェアのビルドプロセスを記録するようにしたことで、大量のソフトウェアビルドプロセスの記録を地理的および組織的な制約なくグローバルに実施することができ、事後的な検証も容易である。また、ビルドプロセスデータにはコマンドラインのハッシュ値やコマンドラインの実行に関連するファイルのハッシュ値が記されるだけであり、ソフトウェア製品を構成する人工物(特にソースコード)を公開する必要がなく秘匿性が保たれる。 According to the present invention, by recording a software build process using a blockchain, it is possible to record a large number of software build processes globally without geographical and organizational restrictions. Verification is also easy. In addition, only the hash value of the command line and the hash value of the file related to the execution of the command line are written in the build process data, and it is not necessary to disclose the artifacts (particularly the source code) that make up the software product. The confidentiality is maintained.
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。ただし、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。 Hereinafter, embodiments will be described in detail with reference to the drawings as appropriate. However, more detailed description than necessary may be omitted. For example, detailed description of well-known matters and duplicate description of substantially the same configuration may be omitted. This is to avoid unnecessary redundancy in the following description and to facilitate understanding by those skilled in the art.
なお、発明者は、当業者が本発明を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。 It is to be noted that the inventor provides the accompanying drawings and the following description in order for those skilled in the art to fully understand the present invention, and is not intended to limit the subject matter described in the claims by these. Absent.
≪システム構成例≫
図1は、本発明の一実施形態に係るソフトウェアビルドプロセス記録システムの全体構成図である。本実施形態に係るソフトウェアビルドプロセス記録システム(以下、「プロセス記録システム」と称する)100は、インターネット上に分散配置された複数のノード(パソコンやワークステーションといったコンピュータのこと)10で構成される。なお、図1では、便宜上、8個のノード10を例示しているが、プロセス記録システム100を構成するノード10は8個に限定されず、ノード10が8個未満の小規模な構成、あるいは数十、数百のノード10が参加する大規模な構成も可能である。
≪System configuration example≫
FIG. 1 is an overall configuration diagram of a software build process recording system according to an embodiment of the present invention. A software build process recording system (hereinafter referred to as “process recording system”) 100 according to the present embodiment includes a plurality of nodes (computers such as personal computers and workstations) 10 distributed and arranged on the Internet. Although eight
ノード10に地理的あるいは組織的な制限はなく、世界中のさまざまなソフトウェアベンダーやソフトウェアハウスのコンピュータや世界各地のエンドユーザのコンピュータなどがノード10になり得る。例えば、北米のA社所属のコンピュータ、アジアのB社所属のコンピュータ、日本のエンドユーザーCのコンピュータなどがプロセス記録システム100の構成要素となることができる。
There are no geographical or organizational restrictions on the
プロセス記録システム100においてノード10はピアツーピア型のネットワーク20を形成している。すなわち、プロセス記録システム100においてノード10間でクライアント−サーバといった上下関係はなく、各ノード10は対等な立場で互いに通信し合う。なお、各ノード10が他のすべてのノード10に直接接続されているとは限らず、別のノード10を経由して相手のノード10と通信するようなノード10があってもよい。
In the
上記構成のプロセス記録システム100においてソフトウェア開発の証拠として残しておくべきソフトウェアのビルドプロセスの情報は所定時間ごとにデータの塊であるブロック(図5のブロック50)にまとめられ、そのようなブロックの連鎖、すなわちブロックチェーンが複数のノード10に分散して保持される。このようにプロセス記録システム100は、分散型台帳の一つであるブロックチェーンの技術を応用してソフトウェアのビルドプロセスの情報を記録する。
The information of the software build process that should be left as evidence of software development in the
ブロックチェーンを用いてソフトウェアのビルドプロセスの情報を記録するために、プロセス記録システム100は、ビルドプロセス監視機能11、ブロック生成機能12、およびブロック保持機能13の3つの機能を備えている。これら3つの機能は互いに独立しており、一つのノード10に任意の一または複数の機能をインストールすることができる。このうちブロック生成機能12を有するノード10が少なくとも一つあればプロセス記録システム100は全体として有効に機能する。また、任意のビルドプロセスを事後的に検証可能にするために、ビルドプロセス検証機能14を有するノード10がプロセス記録システム100に少なくとも一つあればよい。以下、各機能について順に説明する。
The
≪ビルドプロセス監視機能≫
図2は、一例に係るビルドプロセス監視機能を実現するソフトウェアのブロック図である。図3は、ビルドプロセス監視機能を有するノード10におけるビルドプロセスデータ生成処理のフローチャートである。図4は、コンパイルコマンドが実行される場合のビルドプロセスデータ生成例の模式図である。以下、これら図を参照してビルドプロセス監視機能について詳細に説明する。
≪Build process monitoring function≫
FIG. 2 is a block diagram of software that implements a build process monitoring function according to an example. FIG. 3 is a flowchart of build process data generation processing in the
ビルドプロセス監視機能11は、主にソフトウェアハウスやソフトウェアベンダーなどのソフトウェア開発者側のコンピュータにインストールされる機能であり、コンピュータを用いて行われるソフトウェア開発作業を監視し、実行されたコマンドラインやその実行に係る入出力ファイルの情報などを所定フォーマットのビルドプロセスデータにしてネットワーク20に送信する。
The build
図2に示すように、ビルドプロセス監視機能11は、オペレーティングシステム(OS)101のカーネルとして、あるいはOSとアプリケーションプログラム(AP)102との間に介在するミドルウェアとして実現することができる。具体的には、ビルドプロセス監視機能11は、コマンドライン取得部111、ファイルパス特定部112、ハッシュ値計算部113、ビルドプロセスデータ生成部114、および送信部115を備えている。
As shown in FIG. 2, the build
ソフトウェア開発者がソフトウェアを開発する場合、キーボードからコンソールあるいはターミナルなどのCUI(Character User Interface)に直接コマンドを入力する、あるいはソフトウェア開発用アプリケーションにより提供されるGUI(Graphical User Interface)を通じてコマンドを入力するなどしてコンパイル、ビルド、メイクなどを実行し、ソースコードファイル、中間バイナリファイル、ライブラリファイルなどを読み込んでオブジェクトファイルを生成することがある。コマンドライン取得部111は、ソフトウェア開発者がAP102を通じてあるいはOS101のコンソールを通じてコンピュータに入力するコンパイル、ビルド、メイクなどのコマンドを監視し、その入力されたコマンドラインを取得する(図3のS1)。図4の例では、コマンドライン取得部111は、コンソールにコンパイルコマンド“gcc”が入力されたことを認識し、そのコマンドを含む“LANG=C /usr/bin/gcc /mysrc.c -o myprogram”というコマンドラインを取得している。
When a software developer develops software, a command is directly input from a keyboard to a CUI (Character User Interface) such as a console or a terminal, or a command is input through a GUI (Graphical User Interface) provided by a software development application. Compile, build, make, etc. are executed, and source code files, intermediate binary files, library files, etc. are read to generate object files. The command
ファイルパス特定部112は、コマンドライン取得部111が取得したコマンドラインの実行に関連するファイルの各パスを特定する(図3のS2)。具体的には、ファイルパス特定部112は、ファイルパスが省略されている場合には適宜補って、コマンドのバイナリファイル(以下、「コマンドバイナリ」という)、コマンドラインで指定されたファイル(例えば、ソースコードやMakefileなど)およびコマンドラインの実行時に呼び出されるその他のファイル(以下、「読み込みファイル」という)、コマンドラインを実行して得られたファイル(以下、「生成ファイル」という)の各パスを特定する。図4の例では、ファイル特定部112は、コマンドバイナリのファイルパスが“/usr/bin/gcc”であり、読み込みファイルのファイルパスが“/mysrc.c”、“/usr/include/stdlib.h”、“/usr/lib/glibc.o”であり、生成ファイルのファイルパスが“/myprogram”であることを特定している。このように、ファイルパス特定部112は、コマンドラインに明記されていない、ソースコード“/mysrc.c”において列挙されたヘッダファイルやライブラリオブジェクトなどのパスも特定する。
The file
ハッシュ値計算部113は、コマンドライン取得部111が取得したコマンドライン、ならびにファイルパス特定部112が特定した各パスに存在するコマンドバイナリ、読み込みファイル、および生成ファイルの各ハッシュ値を計算する(図3のS3)。具体的には、ハッシュ値計算部113は、RIPEMD(RACE Integrity Primitives Evaluation Message Digest)、RIPEMD-160、MD5(Message Digest Algorithm 5)、SHA(Secure Hash Algorithm)-256、SHA-3などのハッシュ関数を用いて、任意の長さの任意の文字列あるいは任意のサイズの任意のデータを受け、決められたサイズの出力を生成する。
The hash
ビルドプロセスデータ生成部114は、コマンドライン取得部111が取得したコマンドライン、およびファイルパス特定部112が特定した各パスに存在するコマンドバイナリ、読み込みファイル、生成ファイルの各パスを含むプロセスサマリ30を生成して図略のストレージ装置に保存する(図3のS4)。また、ビルドプロセスデータ生成部114は、プロセスサマリ30におけるコマンドラインおよび各ファイルのパスを、ハッシュ値計算部113によって計算された各ハッシュ値に置き換えてビルドプロセスデータ40を生成する(図3のS5)。
The build process
さらにビルドプロセスデータ生成部114は、ソフトウェアメトリクスや要求仕様書やソフトウェアインストール手順などの文書のほか、音声、画像、動画などソフトウェアのビルドに関連するあらゆる種類のファイルのパスをプロセスサマリ30に含めることができ、それらパスをハッシュ値計算部113によって計算されたハッシュ値(各パスに存在するファイルのハッシュ値)に置き換えてビルドプロセスデータ40を生成することができる。
Further, the build process
このようにプロセスサマリ30は、ソフトウェアのビルドプロセスにおいてどのようなコマンドラインが実行され、それによりどのファイルが読み込まれてどのファイルが生成されたのか、またどのようなファイルが紐づけられているかといったファイルリンク情報を表している。一方、ビルドプロセスデータ40は、プロセスサマリ30に記されたコマンドラインや入出力ファイルパスをハッシュ値に置き換え(ファイルパスはそのパスに存在するファイルのハッシュ値に置き換え)、そのビルドプロセスにおいて具体的にどのようなコマンドラインが実行され、どのファイルが読み込まれ、どのファイルが生成されたのかを秘匿化したものである。なお、プロセスサマリ30およびそれに記された各パスに存在するファイルは後にソフトウェアのビルドプロセスの検証において必要となるため、削除されることのないよう各企業において厳重に保管することが重要である。
In this way, the
送信部115は、ビルドプロセスデータ生成部114によって生成されたビルドプロセスデータ40をネットワーク20に送信する(図3のS6)。より詳細には、送信部115は、いつ誰によってビルドプロセスデータ40が作成されたのかを記録するためにビルドプロセス40に電子署名をした上でネットワーク20に送信する。なお、ビルドプロセスデータ40はネットワーク20にブロードキャストしてもよいし、ブロック生成機能12を有する特定のノード10にユニキャストあるいはマルチキャストしてもよい。
The
≪ブロック生成機能≫
図5は、プロセス記録システム10において利用するブロックチェーンの模式図である。プロセス記録システム100においてネットワーク20に送信されたビルドプロセスデータ40は所定時間ごとにブロック50にまとめられ、各ブロック50が一つ前のブロック50のハッシュ値を保持する形で繋がってブロックチェーン200が形成される。ブロック50は、ブロックヘッダ51と、複数のビルドプロセスデータ40とを含む。ブロックヘッダ51は、一つ前のブロック50のブロックヘッダ51のハッシュ値52と、ブロック50の生成時刻を表すタイムスタンプ53と、ナンス値54と、ブロック50に含まれる複数のビルドプロセスデータ40のトップハッシュ55とを含む。
≪Block generation function≫
FIG. 5 is a schematic diagram of a block chain used in the
ブロック生成機能12を有するノード10は、ビルドプロセス監視機能11を有するノード10からネットワーク20に送信され、ブロックチェーン200に未登録のビルドプロセスデータ40を集めて新たなブロック50を生成する。例えば、現在の最新ブロック50のブロック番号が[n]であり、ブロック番号[n+1]のブロック50を生成する場合、ブロック生成機能12を有するノード10は、ブロック番号[n]のブロック50のブロックヘッダ51のハッシュ値52を計算し、ブロックチェーン200に未登録のビルドプロセスデータ40を集めてそのマークルツリーのルートに相当するトップハッシュ55を計算し、タイムスタンプ53および適当なナンス値54を設定してブロックヘッダ51を生成する。そして、ブロック生成機能12を有するノード10は、生成したブロックヘッダ51のハッシュ値が目標値よりも小さくなるようなナンス値54が見つかるまでナンス値54の変更を繰り返し、条件を満たすナンス値54が見つかればブロックヘッダ51を確定させてブロック番号[n+1]のブロック50をネットワーク20に送信する。なお、ブロック50はネットワーク20にブロードキャストしてもよいし、ブロック保持機能13を有する複数のノード10にマルチキャストしてもよい。
The
プロセス記録システム10ではブロックチェーン200としてパブリック、プライベート、およびコンソーシアムのいずれのタイプも適用可能である。例えばパブリック型のブロックチェーン200を適用した場合、誰でも自由にブロック生成機能12を有するノード10としてプロセス記録システム100に参加することができる。この場合、最も早くブロック50を生成した者に報酬を支払うようなPoW(プルーフオブワーク)などのコンセンサスアルゴリズムを導入することでブロック50の生成機能を維持することができる。一方、プライベート型あるいはコンソーシアム型のブロックチェーン200を適用した場合、プロセス記録システム100に管理者を設定し、管理者または管理者に許可された者のみがブロック生成機能12を有するノード10としてプロセス記録システム100に参加することができる。
In the
≪ブロック保持機能≫
ブロック保持機能13を有するノード10はこれまでに生成されたブロック50を保持しており、ブロック生成機能12を有するノード10から受信したブロック50を新たに保持する。プライベート型またはコンソーシアム型のブロックチェーン200の場合、ブロック生成機能12を有するノード10が生成したブロック50は信頼できるため、ブロック保持機能13を有するノード10はそれをそのまま保持してもよいが、パブリック型のブロックチェーン200の場合、ブロック生成機能12を有するノード10が生成したブロック50の正しさを検証する必要がある。そこで、ブロック保持機能13を有するノード10は、ブロック生成機能12を有するノード10から受信したブロック50の正しさを検証し、検証に成功した場合にそのブロック50を新たに保持するようにしてもよい。より詳細には、そのようなブロック保持機能13を有するノード10は、ブロック生成機能12を有するノード10から受信したブロック50のブロックヘッダ51に含まれる一つ前のブロックのハッシュ値52が正しいかどうか、ナンス値54が所定の条件を満たしているかどうか、そのブロック50に含まれる複数のビルドプロセスデータ40のトップハッシュを計算し、それがそのブロック50のブロックヘッダ51に含まれるトップハッシュ55と一致するかなどの検証を行って、そのブロック50の正しさを判定する。このようにして正しく生成されたブロック50のみがブロックチェーン200に追加されていく。
≪Block holding function≫
The
≪ビルドプロセス検証機能≫
プロセス記録システム100ではソフトウェアにウイルスやスパイウェアなどが仕込まれていないかどうかや報告されているソフトウェアメトリクスに疑義が生じた場合、誰でもビルドプロセス検証機能14を利用して任意のビルドプロセスデータ40を事後的に検証することができる。なお、ビルドプロセスデータ40の事後検証に当たって、そのビルドプロセスデータ40の生成に関わった企業や組織からそのビルドプロセスデータ40に対応するプロセスサマリ30およびそのプロセスサマリ30に列挙されたすべてのファイルを入手する必要がある。
≪Build process verification function≫
In the
図6は、ビルドプロセスの事後検証処理を説明する図である。ビルドプロセス検証機能14を有するノード10は、ブロック保持機能13を有する任意のノード10に保持されている任意のブロック50に含まれる任意のビルドプロセスデータ40を取得する。一方、ビルドプロセス検証機能14を有するノード10は、企業や組織から別途入手したプロセスサマリ30およびファイル31からビルドプロセスデータ40Aを再現する。この再現手順は上述したビルドプロセスデータ生成と同じである。そして、ビルドプロセス検証機能14を有するノード10は、取得したビルドプロセスデータ40と再現したビルドプロセスデータ40Aとを比較して、両者が一致すればビルドプロセスデータ40は改ざんなしと判定し、一致しなければ改ざんありと判定する。
FIG. 6 is a diagram illustrating the post-verification processing of the build process. The
≪効果≫
本実施形態によると次のような効果が奏される。
1)大量のソフトウェアビルドプロセスの記録を地理的および組織的な制約なくグローバルに実施することができる。
2)新たに生成されたビルドプロセスデータ40が次々とブロック50にまとめられて連結されることでソフトウェアビルドの順序関係が保証される。
3)ビルドプロセスデータ40にはコマンドラインのハッシュ値やコマンドラインの実行に関連するファイルのハッシュ値が記されるだけであり、ソフトウェア製品を構成する人工物(特にソースコード)を公開する必要がなく秘匿性が保たれる。
4)ブロックチェーン200を利用して多くの参加者でビルドプロセスデータ40を共有することで、ビルドプロセスの改ざんがしにくくなる。また、誰でも任意のビルドプロセスを事後的に検証することができ、ソフトウェアトレーサビリティが担保される。
5)パブリック型のブロックチェーン200を適用した場合にはプロセス記録システム100の管理者が不要となり、誰でも自由に参加できるプラットフォームが実現できる。
6)コンピュータにビルドプロセス監視機能11をインストールすることで、ソフトウェア開発作業の裏でコンピュータが自動的にビルドプロセスデータ40を生成してネットワーク20に送信し、それが記録されていくため、開発者はビルドプロセスの記録を意識することなくソフトウェア開発を行うことができる。
<< Effect >>
According to this embodiment, the following effects are achieved.
1) A large number of software build process records can be carried out globally without geographical and organizational restrictions.
2) The newly generated
3) Only the hash value of the command line and the hash value of the file related to the execution of the command line are written in the
4) By sharing the
5) When the
6) By installing the build
≪変形例≫
コマンドが実行されたタイミングでビルドプロセスデータ40を生成する以外に、コマンドが実行されなくとも所定のタイミングで対象ファイルのスナップショットを取ってそのハッシュ値をビルドプロセスデータ40に登録するようにしてもよい。例えば、データベースのように連続稼働しているシステムが扱うファイルで有効である。
≪Modification≫
In addition to generating the
また、最終的なソフトウェア製品とは関係のない一時的なテストファイルのビルドプロセスはプロセス記録システム100に記録する必要がないため、ビルドプロセス監視機能11の有効/無効の切り替えができるようにして不要なビルドプロセスデータ40が生成されないようにしてもよい。
In addition, since it is not necessary to record the build process of the temporary test file that is not related to the final software product in the
また、コマンドラインが一つ実行されるたびに逐一ビルドプロセスデータ40を生成するのではなく、複数のコマンドラインの実行を一括りにして一つのビルドプロセスデータ40を生成するようにしてもよい。これにより、ビルドプロセスデータ40の送信頻度を少なくすることができる。
Instead of generating the
以上のように、本発明における技術の例示として、実施の形態を説明した。そのために、添付図面および詳細な説明を提供した。 As described above, the embodiment has been described as an example of the technique of the present invention. To that end, the accompanying drawings and detailed description are provided.
したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。 Therefore, among the constituent elements described in the accompanying drawings and the detailed description, not only constituent elements essential for solving the problem but also constituent elements not essential for solving the problem in order to exemplify the above technology Can also be included. Therefore, it should not be immediately recognized that the non-essential components are essential, because the non-essential components are described in the accompanying drawings and the detailed description.
また、上述の実施の形態は、本発明における技術を例示するためのものであるから、特許請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。 Further, since the above-described embodiment is for exemplifying the technique of the present invention, various changes, replacements, additions, omissions, etc. can be made within the scope of the claims or the scope equivalent thereto.
100…ソフトウェアビルドプロセス記録システム、10…ノード(コンピュータ)、11…ビルドプロセス監視機能、12…ブロック生成機能、13…ブロック保持機能、14…ビルドプロセス検証機能、20…ネットワーク、111…コマンドライン取得部、112…ファイルパス取得部、113…ハッシュ値計算部、114…ビルドプロセスデータ生成部、115…送信部、30…プロセスサマリ、40…ビルドプロセスデータ、50…ブロック、51…ブロックヘッダ、52…一つ前のブロックのハッシュ値、53…タイムスタンプ、54…ナンス値、55…トップハッシュ、200…ブロックチェーン 100 ... Software build process recording system, 10 ... Node (computer), 11 ... Build process monitoring function, 12 ... Block generation function, 13 ... Block holding function, 14 ... Build process verification function, 20 ... Network, 111 ... Command line acquisition Part, 112 ... File path acquisition unit, 113 ... Hash value calculation unit, 114 ... Build process data generation unit, 115 ... Transmission unit, 30 ... Process summary, 40 ... Build process data, 50 ... Block, 51 ... Block header, 52 ... hash value of the previous block, 53 ... time stamp, 54 ... nonce value, 55 ... top hash, 200 ... block chain
本発明の一局面に従うと、複数のコンピュータで形成されるネットワーク上のブロックチェーンにソフトウェアのビルドプロセスを記録するシステムであって、ソフトウェアのビルドプロセスにおいて実行されるコマンドラインの不可逆変換であるハッシュ値、前記コマンドラインにおけるコマンドのバイナリファイルの不可逆変換であるハッシュ値、前記コマンドラインで指定されたファイルの不可逆変換であるハッシュ値、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイルの不可逆変換であるハッシュ値、および前記コマンドラインを実行して得られたファイルの不可逆変換であるハッシュ値を含むビルドプロセスデータを生成して前記ネットワークに送信するビルドプロセス監視機能を有する複数のノードと、現在の最新ブロックのブロックヘッダの不可逆変換であるハッシュ値、タイムスタンプ、所定の条件を満たすように選ばれたナンス値、および前記ビルドプロセス監視機能を有する複数のノードから受信した,ブロックチェーンに未登録の複数のビルドプロセスデータのトップハッシュを含むブロックヘッダ、および前記複数のビルドプロセスデータを含むブロックを生成して前記ネットワークに送信するブロック生成機能を有するノードと、これまでに生成されたブロックを保持しており、前記ブロック生成機能を有するノードから受信したブロックを新たに保持するブロック保持機能を有する複数のノードと、を備えたソフトウェアビルドプロセス記録システムが提供される。 According to one aspect of the present invention, a system for recording a software build process in a block chain on a network formed by a plurality of computers , the hash value being an irreversible conversion of a command line executed in the software build process. A hash value that is an irreversible conversion of a binary file of a command on the command line , a hash value that is an irreversible conversion of a file specified on the command line, and a file that is called when the command line is executed and is not the specified file multiple having build process monitoring function of the hash value is irreversible conversion, and generate and build process data including a hash value is irreversible conversion of files obtained by executing the command line sent to the network And a node, irreversible conversion is a hash value of the block header of the current state block, timestamp, nonce value chosen for a given condition is satisfied, and received from a plurality of nodes having the build process monitoring function, block A block header including a top hash of a plurality of build process data not registered in the chain, a node having a block generation function of generating a block including the plurality of build process data and transmitting the block to the network, and a node generated so far. And a plurality of nodes having a block holding function for newly holding the block received from the node having the block generating function, and a software build process recording system.
また、本発明の別の一局面に従うと、コンピュータにソフトウェアのビルドプロセスを監視させるためのプログラムであって、コンピュータに入力されたコマンドラインを取得するコマンドライン取得手段、前記取得されたコマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各パスを特定するファイルパス特定手段、前記取得されたコマンドラインの不可逆変換であるハッシュ値および前記特定された各パスに存在するファイルの不可逆変換であるハッシュ値を計算するハッシュ値計算手段、前記取得されたコマンドラインおよび前記特定された各パスを含むプロセスサマリを生成して所定の保存領域に保存するとともに、前記プロセスサマリにおける前記取得されたコマンドラインおよび前記特定された各パスを前記計算された各ハッシュ値に置き換えてビルドプロセスデータを生成するビルドプロセスデータ生成手段、および複数のコンピュータで形成されるネットワークに前記生成されたビルドプロセスデータを送信する送信手段、としてコンピュータを機能させるソフトウェアビルドプロセス監視プログラムが提供される。 According to another aspect of the present invention, there is provided a program for causing a computer to monitor a software build process, the command line obtaining unit obtaining a command line input to the computer, and the command line obtaining unit. Specify each path of the command binary file, the file specified in the command line, the file other than the specified file that is called when the command line is executed, and the file obtained by executing the command line File path specifying means, hash value that is an irreversible conversion of the acquired command line , and hash value calculation means that calculates a hash value that is an irreversible conversion of a file existing in each of the specified paths, and the acquired command line And said specified A process summary including a path is generated and stored in a predetermined storage area, and the obtained command line and the specified path in the process summary are replaced with the calculated hash values to generate build process data. There is provided a software build process monitoring program that causes a computer to function as a build process data generating unit for generating and a transmitting unit for transmitting the generated build process data to a network formed by a plurality of computers.
Claims (7)
ソフトウェアのビルドプロセスにおいて実行されるコマンドライン、前記コマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各ハッシュ値を含むビルドプロセスデータを生成して前記ネットワークに送信するビルドプロセス監視機能を有する複数のノードと、
現在の最新ブロックのブロックヘッダのハッシュ値、タイムスタンプ、所定の条件を満たすように選ばれたナンス値、および前記ビルドプロセス監視機能を有する複数のノードから受信した,ブロックチェーンに未登録の複数のビルドプロセスデータのトップハッシュを含むブロックヘッダ、および前記複数のビルドプロセスデータを含むブロックを生成して前記ネットワークに送信するブロック生成機能を有するノードと、
これまでに生成されたブロックを保持しており、前記ブロック生成機能を有するノードから受信したブロックを新たに保持するブロック保持機能を有する複数のノードと、を備えたソフトウェアビルドプロセス記録システム。 A system for recording a software build process in a blockchain on a network formed by multiple computers,
A command line executed in the software build process, a binary file of the command in the command line, a file specified in the command line, a file other than the specified file called when the command line is executed, and the command A plurality of nodes having a build process monitoring function for generating build process data including each hash value of the file obtained by executing the line and transmitting the build process data to the network;
A hash value of the block header of the current latest block, a time stamp, a nonce value selected to satisfy a predetermined condition, and a plurality of unregistered blocks in the block chain received from the plurality of nodes having the build process monitoring function. A block header including a top hash of build process data, and a node having a block generation function for generating a block including the plurality of build process data and transmitting the block to the network,
A software build process recording system, comprising: a plurality of nodes having a block holding function, which holds the blocks generated so far, and newly holds the blocks received from the node having the block generating function.
任意の複数のノードが、ソフトウェアのビルドプロセスにおいて実行されるコマンドライン、前記コマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各ハッシュ値を含むビルドプロセスデータを生成して前記ネットワークに送信する工程と、
任意のノードが、現在の最新ブロックのブロックヘッダのハッシュ値、タイムスタンプ、所定の条件を満たすように選ばれたナンス値、および前記ビルドプロセス監視機能を有する複数のノードから受信した,ブロックチェーンに未登録の複数のビルドプロセスデータのトップハッシュを含むブロックヘッダ、および前記複数のビルドプロセスデータを含むブロックを生成して前記ネットワークに送信する工程と、
これまでに生成されたブロックを保持している任意の複数のノードが、受信したブロックを新たに保持する工程と、を備えたソフトウェアビルドプロセス記録方法。 A method of recording a software build process on a blockchain on a network formed by a plurality of computers,
The specified file, in which a plurality of arbitrary nodes are executed in a software build process, a binary file of the command in the command line, a file specified in the command line, and a file called when the command line is executed. And a build process data including each hash value of the file obtained by executing the command line, and transmitting to the network,
An arbitrary node receives from a plurality of nodes having a hash value of a block header of the current latest block, a time stamp, a nonce value selected so as to meet a predetermined condition, and the build process monitoring function. Generating a block header including a top hash of a plurality of unregistered build process data and a block including the plurality of build process data and transmitting the block to the network;
A method of recording a software build process, comprising a step of newly holding a received block by any of a plurality of nodes holding the blocks generated so far.
コンピュータに入力されたコマンドラインを取得するコマンドライン取得手段、
前記取得されたコマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各パスを特定するファイルパス特定手段、
前記取得されたコマンドラインおよび前記特定された各パスに存在するファイルの各ハッシュ値を計算するハッシュ値計算手段、
前記取得されたコマンドラインおよび前記特定された各パスを含むプロセスサマリを生成して所定の保存領域に保存するとともに、前記プロセスサマリにおける前記取得されたコマンドラインおよび前記特定された各パスを前記計算された各ハッシュ値に置き換えてビルドプロセスデータを生成するビルドプロセスデータ生成手段、および
複数のコンピュータで形成されるネットワークに前記生成されたビルドプロセスデータを送信する送信手段、としてコンピュータを機能させるソフトウェアビルドプロセス監視プログラム。 A program that allows a computer to monitor the software build process,
Command line acquisition means for acquiring the command line input to the computer,
A binary file of the command in the acquired command line, a file specified in the command line, a file other than the specified file that is called when the command line is executed, and obtained by executing the command line File path identification means for identifying each path of the file,
Hash value calculation means for calculating each hash value of the file existing in the obtained command line and each of the identified paths,
A process summary including the acquired command line and the specified paths is generated and stored in a predetermined storage area, and the acquired command line and the specified paths in the process summary are calculated. Software build that causes a computer to function as a build process data generation unit that replaces each generated hash value to generate build process data, and a transmission unit that transmits the generated build process data to a network formed by a plurality of computers. Process monitoring program.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018205564A JP6692013B2 (en) | 2018-10-31 | 2018-10-31 | Software build process recording system and method, and software build process monitoring program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018205564A JP6692013B2 (en) | 2018-10-31 | 2018-10-31 | Software build process recording system and method, and software build process monitoring program |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2020071691A true JP2020071691A (en) | 2020-05-07 |
| JP6692013B2 JP6692013B2 (en) | 2020-05-13 |
Family
ID=70549553
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2018205564A Active JP6692013B2 (en) | 2018-10-31 | 2018-10-31 | Software build process recording system and method, and software build process monitoring program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6692013B2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2023146501A (en) * | 2022-03-29 | 2023-10-12 | トヨタ自動車株式会社 | data management system |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014157536A (en) * | 2013-02-18 | 2014-08-28 | Mitsubishi Electric Corp | Version management device and version management method |
| US20180046455A1 (en) * | 2016-08-10 | 2018-02-15 | Fmr Llc | System and Method of Configuring A Data Store For Tracking And Auditing Real-Time Events Across Different Software Development Tools In Agile Development Environments |
| JP2018152050A (en) * | 2017-03-10 | 2018-09-27 | セールスフォース ドット コム インコーポレイティッド | Blockchain version control system |
-
2018
- 2018-10-31 JP JP2018205564A patent/JP6692013B2/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014157536A (en) * | 2013-02-18 | 2014-08-28 | Mitsubishi Electric Corp | Version management device and version management method |
| US20180046455A1 (en) * | 2016-08-10 | 2018-02-15 | Fmr Llc | System and Method of Configuring A Data Store For Tracking And Auditing Real-Time Events Across Different Software Development Tools In Agile Development Environments |
| JP2018152050A (en) * | 2017-03-10 | 2018-09-27 | セールスフォース ドット コム インコーポレイティッド | Blockchain version control system |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2023146501A (en) * | 2022-03-29 | 2023-10-12 | トヨタ自動車株式会社 | data management system |
| JP7652123B2 (en) | 2022-03-29 | 2025-03-27 | トヨタ自動車株式会社 | Data Management System |
Also Published As
| Publication number | Publication date |
|---|---|
| JP6692013B2 (en) | 2020-05-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7649595B2 (en) | COMPUTER-IMPLEMENTED SYSTEM AND METHOD FOR LINKING A BLOCKCHAIN TO A SET OF DIGITAL TWINS | |
| Lone et al. | Forensic-chain: Blockchain based digital forensics chain of custody with PoC in Hyperledger Composer | |
| CN106209947B (en) | Data processing method and system for decentralized autonomous organization | |
| CN110543326B (en) | DevOps intelligent operation and maintenance method based on block chain | |
| US20130007772A1 (en) | Method and system for automated system migration | |
| CN114372296A (en) | Block chain-based user behavior data auditing method and system | |
| CN112631846A (en) | Fault drilling method and device, computer equipment and storage medium | |
| US11316695B2 (en) | System and method for providing and maintaining irrefutable proof of the building, testing, deployment and release of software | |
| WO2020177481A1 (en) | Blockchain-based traffic counting method, apparatus and device | |
| CN108459951A (en) | test method and device | |
| CN117099091A (en) | Distributed immutable data object testing | |
| Briliyant et al. | Towards an automated dissemination process of cyber threat intelligence data using stix | |
| Singi et al. | CAG: compliance adherence and governance in software delivery using blockchain | |
| CN120525433A (en) | A logistics traceability system and method based on blockchain technology | |
| CN111679978B (en) | Program testing method, program testing device, electronic equipment and storage medium | |
| US20220207386A1 (en) | Best outcome aiops modeling with data confidence fabrics | |
| JP6692013B2 (en) | Software build process recording system and method, and software build process monitoring program | |
| CN104486337A (en) | Data validity verification method and device | |
| KR102655091B1 (en) | Test management system using data set and method therefor | |
| CN118277750A (en) | A method for generating a bill of materials file and related equipment | |
| US20210173826A1 (en) | System and methods for securing software chain of custody | |
| Singi et al. | ShIFt-Software identity framework for global software delivery | |
| CN112118290B (en) | Program analysis-based data resource management and control method | |
| CN116049245A (en) | A method and device for data call relationship query processing | |
| CN119002949B (en) | Integration and deployment method and medium for flight simulation training equipment database |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190805 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20190805 |
|
| A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20190806 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191112 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191210 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200203 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200218 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6692013 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |