[go: up one dir, main page]

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 PDF

Info

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
Application number
JP2018205564A
Other languages
Japanese (ja)
Other versions
JP6692013B2 (en
Inventor
吉晴 幾谷
Yoshiharu Ikutani
吉晴 幾谷
隆 石尾
Takashi Ishio
隆 石尾
康平 吉上
Kohei Yoshigami
康平 吉上
畑 秀明
Hideaki Hata
秀明 畑
松本 健一
Kenichi Matsumoto
健一 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nara Institute of Science and Technology NUC
Original Assignee
Nara Institute of Science and Technology NUC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nara Institute of Science and Technology NUC filed Critical Nara Institute of Science and Technology NUC
Priority to JP2018205564A priority Critical patent/JP6692013B2/en
Publication of JP2020071691A publication Critical patent/JP2020071691A/en
Application granted granted Critical
Publication of JP6692013B2 publication Critical patent/JP6692013B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

To provide a system suitable for recording a software build process.SOLUTION: A system (100) includes: a node (10) having a build process monitoring function (11) for generating build process data including a command line, a command binary file, a read file, and hash values of the generated files and sending the build process data to a network (20); a node (10) having a block generation function (12) for generating a block which includes a block header containing a hash value, a time stamp and a nonce value of a block header of the currently latest block, and a top hash of plural pieces of unregistered build process data, and plural pieces of build process data, and sending the block to the network; and a node (10) having a block holding function (13) for retaining blocks that have been generated so far, and newly retaining the block received from the node having the block generation function.SELECTED DRAWING: Figure 1

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).

Hazeline U. Asuncion, Arthur U. Asuncion, Richard N. Taylor, "Software traceability with topic modeling," Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, pp. 95-104, May 01-08, 2010.Hazeline U. Asuncion, Arthur U. Asuncion, Richard N. Taylor, "Software traceability with topic modeling," Proceedings of the 32nd ACM / IEEE International Conference on Software Engineering, pp. 95-104, May 01-08, 2010. N. Ali, Y.-G. Gueheneuc, G. Antoniol, "Trustrace: Mining software repositories to improve the accuracy of requirement traceability links", IEEE Trans. Software Eng., vol. 39, no. 5, pp. 725-741, 2013.N. Ali, Y.-G. Gueheneuc, G. Antoniol, "Trustrace: Mining software repositories to improve the accuracy of requirement traceability links", IEEE Trans. Software Eng., Vol. 39, no. 5, pp. 725- 741, 2013. S. van der Burg, E. Dolstra, S. McIntosh, J. Davies, D. M. German, A. Hemel, "Tracing software build processes to uncover license compliance inconsistencies," Proc. of the 29th ACM/IEEE Intl. Conf. on Automated Software Engineering (ASE), pp. 731-742, 2014.S. van der Burg, E. Dolstra, S. McIntosh, J. Davies, DM German, A. Hemel, "Tracing software build processes to uncover license compliance inconsistencies," Proc. Of the 29th ACM / IEEE Intl. Conf. On Automated Software Engineering (ASE), pp. 731-742, 2014.

近年、ソフトウェア開発のグローバル化により、一つの開発プロジェクトに、地理的に分散した複数の開発拠点が参加するケースが増加している。例えば、北米に拠点を持つ企業がアジアに拠点を持つ企業に対してソフトウェア開発をアウトソーシングする場合が挙げられる。開発拠点の分散化によって開発スピードの向上やコスト削減が期待されるため、ソフトウェア開発のグローバル化・分散化の潮流は今後も拡大を続けると考えられる。一方で、時差の影響により適時のやりとりが不足し、関係者間の方向性の統一や信頼関係の構築が難しくなることが問題となる。特に、ソフトウェアトレーサビリティを担保する情報を複数の企業や組織間で活用する場合において、そのような情報の形式標準化や共有手法については未解決もしくは部分的な解決に留まっている。   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.

本発明の一実施形態に係るソフトウェアビルドプロセス記録システムの全体構成図Overall configuration diagram of a software build process recording system according to an embodiment of the present invention 一例に係るビルドプロセス監視機能を実現するソフトウェアのブロック図Block diagram of software that realizes a build process monitoring function according to an example ビルドプロセスデータ生成処理のフローチャートBuild process data flow chart コンパイルコマンドが実行される場合のビルドプロセスデータ生成例の模式図Schematic diagram of build process data generation example when the compile command is executed ソフトウェアビルドプロセス記録システムにおいて利用するブロックチェーンの模式図Schematic diagram of blockchain used in software build process recording system ビルドプロセスの事後検証処理を説明する図Diagram explaining the post-verification process of the build process

以下、適宜図面を参照しながら、実施の形態を詳細に説明する。ただし、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。   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 nodes 10 are illustrated in FIG. 1 for the sake of convenience, the number of nodes 10 included in the process recording system 100 is not limited to eight, and a small-scale configuration in which the number of nodes 10 is less than eight, or A large scale configuration in which tens or hundreds of nodes 10 participate is also possible.

ノード10に地理的あるいは組織的な制限はなく、世界中のさまざまなソフトウェアベンダーやソフトウェアハウスのコンピュータや世界各地のエンドユーザのコンピュータなどがノード10になり得る。例えば、北米のA社所属のコンピュータ、アジアのB社所属のコンピュータ、日本のエンドユーザーCのコンピュータなどがプロセス記録システム100の構成要素となることができる。   There are no geographical or organizational restrictions on the node 10, and various software vendors and software house computers around the world and end user computers around the world can be the node 10. For example, a computer belonging to the A company in North America, a computer belonging to the B company in Asia, a computer belonging to the end user C in Japan, etc. can be components of the process recording system 100.

プロセス記録システム100においてノード10はピアツーピア型のネットワーク20を形成している。すなわち、プロセス記録システム100においてノード10間でクライアント−サーバといった上下関係はなく、各ノード10は対等な立場で互いに通信し合う。なお、各ノード10が他のすべてのノード10に直接接続されているとは限らず、別のノード10を経由して相手のノード10と通信するようなノード10があってもよい。   In the process recording system 100, the nodes 10 form a peer-to-peer type network 20. That is, in the process recording system 100, there is no hierarchical relationship such as client-server between the nodes 10, and the nodes 10 communicate with each other on an equal footing. Note that each node 10 is not necessarily directly connected to all the other nodes 10, and there may be a node 10 that communicates with the partner node 10 via another node 10.

上記構成のプロセス記録システム100においてソフトウェア開発の証拠として残しておくべきソフトウェアのビルドプロセスの情報は所定時間ごとにデータの塊であるブロック(図5のブロック50)にまとめられ、そのようなブロックの連鎖、すなわちブロックチェーンが複数のノード10に分散して保持される。このようにプロセス記録システム100は、分散型台帳の一つであるブロックチェーンの技術を応用してソフトウェアのビルドプロセスの情報を記録する。   The information of the software build process that should be left as evidence of software development in the process recording system 100 having the above configuration is collected in blocks (blocks 50 in FIG. 5) that are blocks of data at predetermined time intervals. A chain, that is, a block chain is distributed and held by a plurality of nodes 10. In this way, the process recording system 100 records the information of the software build process by applying the block chain technology which is one of the distributed ledgers.

ブロックチェーンを用いてソフトウェアのビルドプロセスの情報を記録するために、プロセス記録システム100は、ビルドプロセス監視機能11、ブロック生成機能12、およびブロック保持機能13の3つの機能を備えている。これら3つの機能は互いに独立しており、一つのノード10に任意の一または複数の機能をインストールすることができる。このうちブロック生成機能12を有するノード10が少なくとも一つあればプロセス記録システム100は全体として有効に機能する。また、任意のビルドプロセスを事後的に検証可能にするために、ビルドプロセス検証機能14を有するノード10がプロセス記録システム100に少なくとも一つあればよい。以下、各機能について順に説明する。   The process recording system 100 has three functions of a build process monitoring function 11, a block generation function 12, and a block holding function 13 in order to record information on a software build process using a block chain. These three functions are independent of each other, and any one or a plurality of functions can be installed in one node 10. Of these, if there is at least one node 10 having the block generation function 12, the process recording system 100 functions effectively as a whole. Further, in order to make it possible to verify any build process afterwards, it is sufficient that the process recording system 100 has at least one node 10 having the build process verification function 14. Hereinafter, each function will be described in order.

≪ビルドプロセス監視機能≫
図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 node 10 having a build process monitoring function. FIG. 4 is a schematic diagram of an example of build process data generation when a compile command is executed. Hereinafter, the build process monitoring function will be described in detail with reference to these drawings.

ビルドプロセス監視機能11は、主にソフトウェアハウスやソフトウェアベンダーなどのソフトウェア開発者側のコンピュータにインストールされる機能であり、コンピュータを用いて行われるソフトウェア開発作業を監視し、実行されたコマンドラインやその実行に係る入出力ファイルの情報などを所定フォーマットのビルドプロセスデータにしてネットワーク20に送信する。   The build process monitoring function 11 is a function that is mainly installed in a computer on the software developer side such as a software house or a software vendor, and monitors software development work performed using the computer, and the executed command line and its Information about input / output files related to execution is converted to build process data in a predetermined format and transmitted to the network 20.

図2に示すように、ビルドプロセス監視機能11は、オペレーティングシステム(OS)101のカーネルとして、あるいはOSとアプリケーションプログラム(AP)102との間に介在するミドルウェアとして実現することができる。具体的には、ビルドプロセス監視機能11は、コマンドライン取得部111、ファイルパス特定部112、ハッシュ値計算部113、ビルドプロセスデータ生成部114、および送信部115を備えている。   As shown in FIG. 2, the build process monitoring function 11 can be realized as a kernel of the operating system (OS) 101 or as middleware interposed between the OS and the application program (AP) 102. Specifically, the build process monitoring function 11 includes a command line acquisition unit 111, a file path identification unit 112, a hash value calculation unit 113, a build process data generation unit 114, and a transmission unit 115.

ソフトウェア開発者がソフトウェアを開発する場合、キーボードからコンソールあるいはターミナルなどの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 line acquisition unit 111 monitors commands such as compile, build, and make that the software developer inputs to the computer through the AP 102 or the console of the OS 101, and acquires the input command line (S1 in FIG. 3). In the example of FIG. 4, the command line acquisition unit 111 recognizes that the compile command “gcc” has been input to the console and includes “LANG = C / usr / bin / gcc /mysrc.c -o myprogram I got the command line ".

ファイルパス特定部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 path identification unit 112 identifies each path of the file related to the execution of the command line acquired by the command line acquisition unit 111 (S2 in FIG. 3). Specifically, the file path identification unit 112 appropriately supplements the file path when the file path is omitted, and a command binary file (hereinafter, referred to as “command binary”) or a file specified on the command line (for example, Paths of source code, Makefile, etc.) and other files that are called when the command line is executed (hereinafter referred to as "read file") and files obtained by executing the command line (hereinafter referred to as "generated file") Identify. In the example of FIG. 4, the file identification unit 112 has a command binary file path of “/ usr / bin / gcc” and read file file paths of “/mysrc.c” and “/ usr / include / stdlib. h ”,“ /usr/lib/glibc.o ”, and specifies that the file path of the generated file is“ / myprogram ”. In this way, the file path identification unit 112 also identifies paths such as header files and library objects listed in the source code “/mysrc.c” that are not specified in the command line.

ハッシュ値計算部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 value calculation unit 113 calculates each hash value of the command line acquired by the command line acquisition unit 111 and the command binary, the read file, and the generated file existing in each path identified by the file path identification unit 112 (Fig. 3 S3). Specifically, the hash value calculation unit 113 uses hash functions such as RIPEMD (RACE Integrity Primitives Evaluation Message Digest), RIPEMD-160, MD5 (Message Digest Algorithm 5), SHA (Secure Hash Algorithm) -256, and SHA-3. Is used to receive an arbitrary character string of an arbitrary length or arbitrary data of an arbitrary size, and generate an output of a predetermined size.

ビルドプロセスデータ生成部114は、コマンドライン取得部111が取得したコマンドライン、およびファイルパス特定部112が特定した各パスに存在するコマンドバイナリ、読み込みファイル、生成ファイルの各パスを含むプロセスサマリ30を生成して図略のストレージ装置に保存する(図3のS4)。また、ビルドプロセスデータ生成部114は、プロセスサマリ30におけるコマンドラインおよび各ファイルのパスを、ハッシュ値計算部113によって計算された各ハッシュ値に置き換えてビルドプロセスデータ40を生成する(図3のS5)。   The build process data generation unit 114 executes the process summary 30 including the command line acquired by the command line acquisition unit 111 and the command binary, read file, and generated file path existing in each path specified by the file path specifying unit 112. It is generated and stored in a storage device (not shown) (S4 in FIG. 3). Further, the build process data generation unit 114 replaces the command line and the path of each file in the process summary 30 with each hash value calculated by the hash value calculation unit 113 to generate the build process data 40 (S5 in FIG. 3). ).

さらにビルドプロセスデータ生成部114は、ソフトウェアメトリクスや要求仕様書やソフトウェアインストール手順などの文書のほか、音声、画像、動画などソフトウェアのビルドに関連するあらゆる種類のファイルのパスをプロセスサマリ30に含めることができ、それらパスをハッシュ値計算部113によって計算されたハッシュ値(各パスに存在するファイルのハッシュ値)に置き換えてビルドプロセスデータ40を生成することができる。   Further, the build process data generation unit 114 includes, in the process summary 30, documents such as software metrics, requirement specifications, and software installation procedures, as well as paths of all types of files related to software build such as audio, images, and videos. The build process data 40 can be generated by replacing the paths with the hash value calculated by the hash value calculation unit 113 (hash value of the file existing in each path).

このようにプロセスサマリ30は、ソフトウェアのビルドプロセスにおいてどのようなコマンドラインが実行され、それによりどのファイルが読み込まれてどのファイルが生成されたのか、またどのようなファイルが紐づけられているかといったファイルリンク情報を表している。一方、ビルドプロセスデータ40は、プロセスサマリ30に記されたコマンドラインや入出力ファイルパスをハッシュ値に置き換え(ファイルパスはそのパスに存在するファイルのハッシュ値に置き換え)、そのビルドプロセスにおいて具体的にどのようなコマンドラインが実行され、どのファイルが読み込まれ、どのファイルが生成されたのかを秘匿化したものである。なお、プロセスサマリ30およびそれに記された各パスに存在するファイルは後にソフトウェアのビルドプロセスの検証において必要となるため、削除されることのないよう各企業において厳重に保管することが重要である。   In this way, the process summary 30 shows what command line is executed in the software build process, which file is read and which file is generated, and what kind of file is associated. It represents file link information. On the other hand, the build process data 40 replaces the command line and the input / output file path described in the process summary 30 with the hash value (the file path is replaced with the hash value of the file existing in the path), and the build process concretely It is a concealment of what command line was executed, which file was read, and which file was created. Since the process summary 30 and the files existing in each path described in the process summary 30 are required later in the verification of the software build process, it is important that each company strictly stores them so as not to be deleted.

送信部115は、ビルドプロセスデータ生成部114によって生成されたビルドプロセスデータ40をネットワーク20に送信する(図3のS6)。より詳細には、送信部115は、いつ誰によってビルドプロセスデータ40が作成されたのかを記録するためにビルドプロセス40に電子署名をした上でネットワーク20に送信する。なお、ビルドプロセスデータ40はネットワーク20にブロードキャストしてもよいし、ブロック生成機能12を有する特定のノード10にユニキャストあるいはマルチキャストしてもよい。   The transmission unit 115 transmits the build process data 40 generated by the build process data generation unit 114 to the network 20 (S6 in FIG. 3). More specifically, the transmission unit 115 electronically signs the build process 40 to record when and by whom the build process data 40 was created, and then transmits the build process data 40 to the network 20. The build process data 40 may be broadcast to the network 20 or may be unicast or multicast to the specific node 10 having the block generation function 12.

≪ブロック生成機能≫
図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 process recording system 10. The build process data 40 transmitted to the network 20 in the process recording system 100 is collected into blocks 50 at predetermined time intervals, and each block 50 is connected in such a manner as to hold the hash value of the immediately preceding block 50 to form the block chain 200. It is formed. The block 50 includes a block header 51 and a plurality of build process data 40. The block header 51 includes a hash value 52 of the block header 51 of the immediately preceding block 50, a time stamp 53 indicating the generation time of the block 50, a nonce value 54, and a plurality of build process data 40 included in the block 50. Including the top hash 55.

ブロック生成機能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 node 10 having the block generation function 12 is transmitted from the node 10 having the build process monitoring function 11 to the network 20 and collects unregistered build process data 40 in the block chain 200 to generate a new block 50. For example, when the block number of the current latest block 50 is [n] and the block 50 of the block number [n + 1] is generated, the node 10 having the block generation function 12 determines the block of the block 50 of the block number [n]. The hash value 52 of the header 51 is calculated, the unregistered build process data 40 is collected in the block chain 200, the top hash 55 corresponding to the root of the Merkle tree is calculated, and the time stamp 53 and an appropriate nonce value 54 are calculated. Set and generate the block header 51. Then, the node 10 having the block generation function 12 repeatedly changes the nonce value 54 until a nonce value 54 is found such that the hash value of the generated block header 51 becomes smaller than the target value, and the nonce value 54 satisfying the condition is satisfied. If found, the block header 51 is confirmed and the block 50 having the block number [n + 1] is transmitted to the network 20. The block 50 may be broadcast to the network 20 or may be multicast to the plurality of nodes 10 having the block holding function 13.

プロセス記録システム10ではブロックチェーン200としてパブリック、プライベート、およびコンソーシアムのいずれのタイプも適用可能である。例えばパブリック型のブロックチェーン200を適用した場合、誰でも自由にブロック生成機能12を有するノード10としてプロセス記録システム100に参加することができる。この場合、最も早くブロック50を生成した者に報酬を支払うようなPoW(プルーフオブワーク)などのコンセンサスアルゴリズムを導入することでブロック50の生成機能を維持することができる。一方、プライベート型あるいはコンソーシアム型のブロックチェーン200を適用した場合、プロセス記録システム100に管理者を設定し、管理者または管理者に許可された者のみがブロック生成機能12を有するノード10としてプロセス記録システム100に参加することができる。   In the process recording system 10, any type of public, private, and consortium can be applied as the block chain 200. For example, when the public block chain 200 is applied, anyone can freely participate in the process recording system 100 as the node 10 having the block generation function 12. In this case, the generation function of the block 50 can be maintained by introducing a consensus algorithm such as PoW (Proof of Work) that pays the reward to the person who generated the block 50 earliest. On the other hand, when the private or consortium type blockchain 200 is applied, an administrator is set in the process recording system 100, and only the administrator or a person authorized by the administrator records the process as the node 10 having the block generation function 12. You can participate in the system 100.

≪ブロック保持機能≫
ブロック保持機能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 node 10 having the block holding function 13 holds the block 50 generated so far, and newly holds the block 50 received from the node 10 having the block generating function 12. In the case of the private type or consortium type blockchain 200, since the block 50 generated by the node 10 having the block generation function 12 is reliable, the node 10 having the block holding function 13 may hold it as it is. In the case of the type block chain 200, it is necessary to verify the correctness of the block 50 generated by the node 10 having the block generation function 12. Therefore, the node 10 having the block holding function 13 verifies the correctness of the block 50 received from the node 10 having the block generation function 12, and newly holds the block 50 if the verification is successful. Good. More specifically, the node 10 having such a block holding function 13 determines whether the hash value 52 of the previous block included in the block header 51 of the block 50 received from the node 10 having the block generation function 12 is correct. Whether or not the nonce value 54 satisfies a predetermined condition, a top hash of the plurality of build process data 40 included in the block 50 is calculated, and the calculated top hash 55 is included in the block header 51 of the block 50. The correctness of the block 50 is determined by verifying whether they match. Only the blocks 50 correctly generated in this way are added to the block chain 200.

≪ビルドプロセス検証機能≫
プロセス記録システム100ではソフトウェアにウイルスやスパイウェアなどが仕込まれていないかどうかや報告されているソフトウェアメトリクスに疑義が生じた場合、誰でもビルドプロセス検証機能14を利用して任意のビルドプロセスデータ40を事後的に検証することができる。なお、ビルドプロセスデータ40の事後検証に当たって、そのビルドプロセスデータ40の生成に関わった企業や組織からそのビルドプロセスデータ40に対応するプロセスサマリ30およびそのプロセスサマリ30に列挙されたすべてのファイルを入手する必要がある。
≪Build process verification function≫
In the process recording system 100, if the software is not loaded with a virus or spyware, or if there is a suspicion about the reported software metrics, anyone can use the build process verification function 14 to obtain the desired build process data 40. Can be verified after the fact. In the post-verification of the build process data 40, the process summary 30 corresponding to the build process data 40 and all the files listed in the process summary 30 are obtained from the company or organization involved in the generation of the build process data 40. There is a need to.

図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 node 10 having the build process verification function 14 acquires the arbitrary build process data 40 included in the arbitrary block 50 held by the arbitrary node 10 having the block holding function 13. On the other hand, the node 10 having the build process verification function 14 reproduces the build process data 40A from the process summary 30 and the file 31 separately obtained from the company or organization. This reproduction procedure is the same as the build process data generation described above. Then, the node 10 having the build process verification function 14 compares the acquired build process data 40 with the reproduced build process data 40A, determines that the build process data 40 has not been tampered with if both match, and matches. If not, it is determined that there is tampering.

≪効果≫
本実施形態によると次のような効果が奏される。
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 build process data 40 is collected and connected to the block 50 one after another to ensure the order relation of the software build.
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 build process data 40, and it is necessary to disclose the artifacts (particularly the source code) that constitute the software product. The confidentiality is maintained.
4) By sharing the build process data 40 with many participants using the blockchain 200, it becomes difficult to tamper with the build process. In addition, anyone can verify any build process afterwards, ensuring software traceability.
5) When the public blockchain 200 is applied, an administrator of the process recording system 100 is not required, and a platform that anyone can freely participate can be realized.
6) By installing the build process monitoring function 11 in the computer, the computer automatically generates the build process data 40 and transmits it to the network 20 in the back of software development work, and the build process data 40 is recorded. Can develop software without being aware of the build process records.

≪変形例≫
コマンドが実行されたタイミングでビルドプロセスデータ40を生成する以外に、コマンドが実行されなくとも所定のタイミングで対象ファイルのスナップショットを取ってそのハッシュ値をビルドプロセスデータ40に登録するようにしてもよい。例えば、データベースのように連続稼働しているシステムが扱うファイルで有効である。
≪Modification≫
In addition to generating the build process data 40 at the timing when the command is executed, even if the command is not executed, a snapshot of the target file may be taken at a predetermined timing and the hash value may be registered in the build process data 40. Good. For example, it is effective for files handled by continuously operating systems such as databases.

また、最終的なソフトウェア製品とは関係のない一時的なテストファイルのビルドプロセスはプロセス記録システム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 process recording system 100, it is not necessary to enable / disable the build process monitoring function 11. It is also possible not to generate the appropriate build process data 40.

また、コマンドラインが一つ実行されるたびに逐一ビルドプロセスデータ40を生成するのではなく、複数のコマンドラインの実行を一括りにして一つのビルドプロセスデータ40を生成するようにしてもよい。これにより、ビルドプロセスデータ40の送信頻度を少なくすることができる。   Instead of generating the build process data 40 every time one command line is executed, one build process data 40 may be generated by collectively executing a plurality of command lines. Thereby, the transmission frequency of the build process data 40 can be reduced.

以上のように、本発明における技術の例示として、実施の形態を説明した。そのために、添付図面および詳細な説明を提供した。   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.
前記ブロック保持機能を有する任意のノードに保持されている任意のブロックに含まれる任意のビルドプロセスデータとそのビルドプロセスデータの生成の元となったコマンドラインおよびファイルから再現したビルドプロセスデータとを比較してそのコマンドラインおよびファイルに対する改ざんの有無を検証するビルドプロセス検証機能を有するノードをさらに備えた請求項1に記載のソフトウェアビルドプロセス記録システム。   Comparing any build process data included in any block held in any node having the block holding function with the build process data reproduced from the command line or file from which the build process data was generated The software build process recording system according to claim 1, further comprising a node having a build process verification function for verifying whether the command line and the file have been tampered with. 前記ビルドプロセス監視機能が、ソフトウェアのビルドに関連する文書、音声、画像、動画などの各種ファイルのハッシュ値をさらに含むビルドプロセスデータを生成する請求項1または2に記載のソフトウェアビルドプロセス記録システム。   3. The software build process recording system according to claim 1, wherein the build process monitoring function generates build process data that further includes hash values of various files such as documents, sounds, images, and movies related to software build. 前記ブロック保持機能が、前記ブロック生成機能を有するノードから受信したブロックの正しさを検証し、検証に成功した場合にそのブロックを新たに保持する請求項1ないし3のいずれかに記載のソフトウェアビルドプロセス記録システム。   4. The software build according to claim 1, wherein the block holding function verifies the correctness of the block received from the node having the block generation function, and newly holds the block if the verification is successful. Process recording system. 複数のコンピュータで形成されるネットワーク上のブロックチェーンにソフトウェアのビルドプロセスを記録する方法であって、
任意の複数のノードが、ソフトウェアのビルドプロセスにおいて実行されるコマンドライン、前記コマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各ハッシュ値を含むビルドプロセスデータを生成して前記ネットワークに送信する工程と、
任意のノードが、現在の最新ブロックのブロックヘッダのハッシュ値、タイムスタンプ、所定の条件を満たすように選ばれたナンス値、および前記ビルドプロセス監視機能を有する複数のノードから受信した,ブロックチェーンに未登録の複数のビルドプロセスデータのトップハッシュを含むブロックヘッダ、および前記複数のビルドプロセスデータを含むブロックを生成して前記ネットワークに送信する工程と、
これまでに生成されたブロックを保持している任意の複数のノードが、受信したブロックを新たに保持する工程と、を備えたソフトウェアビルドプロセス記録方法。
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.
任意のノードが、任意の複数のノードに保持されている任意のブロックに含まれる任意のビルドプロセスデータとそのビルドプロセスデータの生成の元となったコマンドラインおよびファイルから再現したビルドプロセスデータとを比較してそのコマンドラインおよびファイルに対する改ざんの有無を検証する工程をさらに備えた請求項5に記載のソフトウェアビルドプロセス記録方法。   Any node can output any build process data contained in any block held by any number of nodes and the build process data reproduced from the command line or file from which the build process data was generated. The software build process recording method according to claim 5, further comprising a step of comparing and verifying whether or not the command line and the file have been tampered with. コンピュータにソフトウェアのビルドプロセスを監視させるためのプログラムであって、
コンピュータに入力されたコマンドラインを取得するコマンドライン取得手段、
前記取得されたコマンドラインにおけるコマンドのバイナリファイル、前記コマンドラインで指定されたファイル、前記コマンドラインの実行時に呼び出される,前記指定されたファイル以外のファイル、および前記コマンドラインを実行して得られたファイルの各パスを特定するファイルパス特定手段、
前記取得されたコマンドラインおよび前記特定された各パスに存在するファイルの各ハッシュ値を計算するハッシュ値計算手段、
前記取得されたコマンドラインおよび前記特定された各パスを含むプロセスサマリを生成して所定の保存領域に保存するとともに、前記プロセスサマリにおける前記取得されたコマンドラインおよび前記特定された各パスを前記計算された各ハッシュ値に置き換えてビルドプロセスデータを生成するビルドプロセスデータ生成手段、および
複数のコンピュータで形成されるネットワークに前記生成されたビルドプロセスデータを送信する送信手段、としてコンピュータを機能させるソフトウェアビルドプロセス監視プログラム。
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.
JP2018205564A 2018-10-31 2018-10-31 Software build process recording system and method, and software build process monitoring program Active JP6692013B2 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023146501A (en) * 2022-03-29 2023-10-12 トヨタ自動車株式会社 data management system

Citations (3)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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