JP6578841B2 - Obfuscation device, method and program - Google Patents

Obfuscation device, method and program Download PDF

Info

Publication number
JP6578841B2
JP6578841B2 JP2015183638A JP2015183638A JP6578841B2 JP 6578841 B2 JP6578841 B2 JP 6578841B2 JP 2015183638 A JP2015183638 A JP 2015183638A JP 2015183638 A JP2015183638 A JP 2015183638A JP 6578841 B2 JP6578841 B2 JP 6578841B2
Authority
JP
Japan
Prior art keywords
obfuscation
list
source code
character string
keyword
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.)
Active
Application number
JP2015183638A
Other languages
Japanese (ja)
Other versions
JP2017058994A (en
Inventor
克尚 池内
克尚 池内
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2015183638A priority Critical patent/JP6578841B2/en
Publication of JP2017058994A publication Critical patent/JP2017058994A/en
Application granted granted Critical
Publication of JP6578841B2 publication Critical patent/JP6578841B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Description

本発明は、ソースコードに含まれる秘密情報を難読化する技術に関する。   The present invention relates to a technique for obfuscating secret information included in a source code.

最先端LSI(Large Scale Integration)デバイスの微細化が進むにしたがい、LSIを設計するEDA(electronic design automation)ツールの機能自体も大規模化/複雑化している。それに伴い、デバイス起因、あるいはEDAツール起因による不具合が発生するケースが増えてきている。   As miniaturization of state-of-the-art LSI (Large Scale Integration) devices progresses, the functions of EDA (electronic design automation) tools for designing LSIs are becoming larger and more complex. Along with this, there are an increasing number of cases in which defects due to devices or EDA tools occur.

当然ながら、これらの不具合は、LSIを設計したデザインのみを解析しただけでは原因究明できないことがほとんどである。このため、設計者だけで問題解決することは困難であり、デバイスベンダやEDAベンダに対して解析依頼をするケースが増えている。多くの場合、設計者は、次のような方法(1)または(2)等により解析を依頼する。
(1)デバイスベンダ、EDAベンダとの間で秘密保持契約(以下、NDA:Non-disclosure agreement)を締結し、秘密情報を含む当該デザインを支給する。
(2)当該デザインから秘密情報を手作業で削除して、デバイスベンダ、EDAベンダに支給する。
Of course, it is almost impossible to investigate the cause of these defects only by analyzing only the design that designed the LSI. For this reason, it is difficult for the designer alone to solve the problem, and there are increasing cases of requesting analysis from device vendors or EDA vendors. In many cases, the designer requests analysis by the following method (1) or (2).
(1) A non-disclosure agreement (hereinafter referred to as NDA) is concluded between a device vendor and an EDA vendor, and the design including confidential information is provided.
(2) The secret information is manually deleted from the design and supplied to the device vendor and EDA vendor.

このように、設計者からデバイスベンダやEDAベンダへの解析依頼には、デザインの支給が不可欠になる。   In this way, design supply is indispensable for an analysis request from a designer to a device vendor or EDA vendor.

しかし、上記の方法では、以下の問題が発生する。方法(1)では、開発プロジェクトの方針によりNDAそのものを締結できないケースが多い。また、NDAを締結していたとしても、モジュール名や信号名などでデザインの機能が特定されるのを嫌い、デザインの開示を行うことができない開発プロジェクトが多い。これは、デバイスベンダやEDAベンダ経由で、競合他社に情報が漏れる可能性を考慮するからである。   However, the above method causes the following problems. In method (1), there are many cases where NDA itself cannot be concluded due to the policy of the development project. Even if an NDA is concluded, there are many development projects in which design functions are not specified by module names or signal names and the design cannot be disclosed. This is because the possibility of information leaking to competitors via device vendors and EDA vendors is taken into consideration.

方法(2)では、デザインの機能を特定されないようモジュール名や信号名などを変更する作業に非常に工数がかかる。また、手作業での変更では、ミスが発生しやすい。   In the method (2), it takes a lot of man-hours to change the module name, signal name, etc. so that the design function is not specified. Moreover, mistakes are likely to occur during manual changes.

このような問題に関連する技術の一例が、特許文献1に記載されている。特許文献1に記載された関連技術は、LSIの設計内容がハードウェア記述言語で記述されたソースコードにおいて、各変数名を他の文字列に変換する。このとき、この関連技術は、あらかじめ設定された非変換文字列に該当する変数名については、文字列変換処理を行わない。この技術を利用することにより、設計者は、秘密情報となる各変数名が他の文字列に変換されたソースコードを、デバイスベンダやEDAベンダに支給する。   An example of a technique related to such a problem is described in Patent Document 1. The related technique described in Patent Document 1 converts each variable name into another character string in the source code in which the design contents of the LSI are described in a hardware description language. At this time, this related technique does not perform the character string conversion process for the variable name corresponding to the preset non-converted character string. By using this technology, the designer supplies the device code or EDA vendor with source code in which each variable name as secret information is converted into another character string.

特開2005−235848号公報JP 2005-235848 A

しかしながら、特許文献1に記載された関連技術には、秘密情報となる各変数名等に対してどのように文字列変換を行うかについての詳細が記載されていない。ソースコードにおいて秘密情報となりうる変数名等には、多岐にわたる文字列が使用されている。このため、単にソースコードから変数名を抽出して順次文字列変換を行うだけでは、意図しない文字列変換が生じる可能性がある。このため、構文エラーが生じる可能性や、秘密情報が残ってしまう可能性がある。そのため、この関連技術を用いても、結局は、変換結果を目視で確認する作業などが必要となってしまう。   However, the related technique described in Patent Document 1 does not describe details on how to perform character string conversion on each variable name or the like that is secret information. A wide variety of character strings are used for variable names that can be confidential information in the source code. For this reason, simply extracting variable names from the source code and sequentially performing character string conversion may cause unintended character string conversion. For this reason, a syntax error may occur or secret information may remain. For this reason, even if this related technique is used, it is eventually necessary to visually confirm the conversion result.

本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、元のソースコードから秘密情報をより適切に削除しながら、元のソースコードに対して設計内容が等価なソースコードを自動生成する技術を提供することを目的とする。   The present invention has been made to solve the above-described problems. That is, an object of the present invention is to provide a technique for automatically generating a source code having a design content equivalent to that of the original source code while appropriately deleting secret information from the original source code.

本発明の難読化装置は、ソースコードからコメントを表すコメント情報を削除するコメント情報削除部と、前記ソースコードから、その記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成する難読化対象キーワード抽出部と、前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外する難読化リスト調整部と、前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する難読化実行部と、を備える。   The obfuscation apparatus of the present invention includes a comment information deleting unit that deletes comment information representing a comment from a source code, and a character string representing a predetermined type of component in the description language from the source code as an obfuscation target keyword. An obfuscation target keyword extraction unit that extracts and generates an obfuscation list; and the obfuscation list that sorts the keywords in descending order of character string length in the obfuscation list and excludes keywords that satisfy a predetermined condition from the obfuscation list An obfuscation executing unit that executes processing for converting a keyword included in the obfuscation list into another character string in the source code from which the comment information has been deleted, in the order included in the obfuscation list And comprising.

また、本発明の方法は、コンピュータ装置が、ソースコードからコメントを表すコメント情報を削除し、前記ソースコードから、その記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成し、前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外し、前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する。   Further, according to the method of the present invention, the computer device deletes comment information representing a comment from the source code, and extracts a character string representing a predetermined type of component in the description language from the source code as an obfuscated keyword. The obfuscated list is generated, the keywords are rearranged in the descending order of the character string length in the obfuscated list, keywords that satisfy a predetermined condition are excluded from the obfuscated list, and the comment information is deleted. In the code, the process of converting the keyword included in the obfuscation list into another character string is executed in the order included in the obfuscation list.

また、本発明のプログラムは、ソースコードからコメントを表すコメント情報を削除するコメント情報削除ステップと、前記ソースコードから、その記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成する難読化対象キーワード抽出ステップと、前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外する難読化リスト調整ステップと、前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する難読化実行ステップと、をコンピュータ装置に実行させる。   Further, the program of the present invention includes a comment information deleting step for deleting comment information representing a comment from the source code, and a character string representing a predetermined type of component in the description language from the source code as an obfuscated keyword An obfuscation target keyword extraction step of extracting and generating an obfuscation list; and obfuscation of rearranging the keywords in descending order of character string length in the obfuscation list and excluding keywords satisfying a predetermined condition from the obfuscation list An obfuscation list adjusting step and an obfuscation execution step of executing processing for converting a keyword included in the obfuscation list into another character string in the source code from which the comment information has been deleted, in the order included in the obfuscation list. Are executed by the computer device.

本発明は、元のソースコードから秘密情報をより適切に削除しながら、元のソースコードに対して設計内容が等価なソースコードを自動生成する技術を提供することができる。   The present invention can provide a technique for automatically generating a source code whose design content is equivalent to that of the original source code while more appropriately deleting the secret information from the original source code.

本発明の第1の実施の形態としての難読化装置の構成を示すブロック図である。It is a block diagram which shows the structure of the obfuscation apparatus as the 1st Embodiment of this invention. 本発明の第1の実施の形態としての難読化装置のハードウェア構成の一例を示す図である。It is a figure which shows an example of the hardware constitutions of the obfuscation apparatus as the 1st Embodiment of this invention. 本発明の第1の実施の形態としての難読化装置の動作を説明するフローチャートである。It is a flowchart explaining operation | movement of the obfuscation apparatus as the 1st Embodiment of this invention. 本発明の第2の実施の形態としての難読化装置の構成を示すブロック図である。It is a block diagram which shows the structure of the obfuscation apparatus as the 2nd Embodiment of this invention. 一般的なソースコードの様々な記述スタイルを説明する図である。It is a figure explaining various description styles of general source code. 本発明の第2の実施の形態としての難読化装置のコメント情報削除動作の詳細を説明するフローチャートである。It is a flowchart explaining the detail of the comment information deletion operation | movement of the obfuscation apparatus as the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報を削除する前の元のソースコードの一例を示す図である。It is a figure which shows an example of the original source code before deleting comment information in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報が削除される際に生成されるテンポラリなソースコードの一例を示す図である。It is a figure which shows an example of the temporary source code produced | generated when comment information is deleted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報が削除される際にさらに生成されるテンポラリなソースコードの一例を示す図である。It is a figure which shows an example of the temporary source code produced | generated when comment information is deleted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報が削除されたソースコードの一例を示す図である。It is a figure which shows an example of the source code from which the comment information was deleted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報を削除する前の他の元のソースコードの一例を示す図である。It is a figure which shows an example of the other original source code before deleting comment information in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例においてコメント情報が削除された他のソースコードの一例を示す図である。It is a figure which shows an example of the other source code from which the comment information was deleted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態としての難読化装置の難読化対象キーワード抽出動作の詳細を説明するフローチャートである。It is a flowchart explaining the detail of the obfuscation object keyword extraction operation | movement of the obfuscation apparatus as the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において記述スタイルを整形する際に生成されるテンポラリなソースコードの一例を示す図である。It is a figure which shows an example of the temporary source code produced | generated when shaping a description style in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において記述スタイルが整形されたソースコードの一例を示す図である。It is a figure which shows an example of the source code by which the description style was shaped in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において難読化対象のキーワードを抽出するための規則の一例を示す図である。It is a figure which shows an example of the rule for extracting the keyword of obfuscation object in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において抽出される難読化対象のキーワードの一例を示す図である。It is a figure which shows an example of the keyword of the obfuscation object extracted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において生成/調整される難読化リストの一例を示す図である。It is a figure which shows an example of the obfuscation list | wrist produced | generated / adjusted in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態としての難読化装置の難読化リスト調整動作の詳細を説明するフローチャートである。It is a flowchart explaining the detail of the obfuscation list adjustment operation | movement of the obfuscation apparatus as the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において参照される予約語テーブルの一例を示す図である。It is a figure which shows an example of the reserved word table referred in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態としての難読化装置の難読化実行動作の詳細を説明するフローチャートである。It is a flowchart explaining the detail of obfuscation execution operation | movement of the obfuscation apparatus as the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において生成される変換テーブルの一例を示す図である。It is a figure which shows an example of the conversion table produced | generated in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において生成される難読化変換スクリプトの一例を示す図である。It is a figure which shows an example of the obfuscation conversion script produced | generated in the specific example of the 2nd Embodiment of this invention. 本発明の第2の実施の形態の具体例において難読化されたソースコードの一例を示す図である。It is a figure which shows an example of the source code obfuscated in the specific example of the 2nd Embodiment of this invention.

以下、本発明の実施の形態について、図面を参照して詳細に説明する。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

(第1の実施の形態)
本発明の第1の実施の形態としての難読化装置1の機能ブロック構成を図1に示す。図1において、難読化装置1は、コメント情報削除部11と、難読化対象キーワード抽出部12と、難読化リスト調整部13と、難読化実行部14とを備える。
(First embodiment)
A functional block configuration of the obfuscation apparatus 1 as the first embodiment of the present invention is shown in FIG. In FIG. 1, the obfuscation apparatus 1 includes a comment information deletion unit 11, an obfuscation target keyword extraction unit 12, an obfuscation list adjustment unit 13, and an obfuscation execution unit 14.

ここで、難読化装置1は、図2に示すようなハードウェア要素によって構成可能である。図2において、難読化装置1は、CPU(Central Processing Unit)1001、メモリ1002、出力装置1003および入力装置1004を含む。メモリ1002は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)等によって構成される。出力装置1003は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置1004は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。この場合、難読化装置1の各機能ブロックは、メモリ1002に格納されるコンピュータ・プログラムを読み込んで実行するとともに出力装置1003および入力装置1004の各部を制御するCPU1001によって構成される。なお、難読化装置1およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。   Here, the obfuscation apparatus 1 can be configured by hardware elements as shown in FIG. In FIG. 2, the obfuscation apparatus 1 includes a CPU (Central Processing Unit) 1001, a memory 1002, an output apparatus 1003, and an input apparatus 1004. The memory 1002 includes a RAM (Random Access Memory), a ROM (Read Only Memory), an auxiliary storage device (such as a hard disk), and the like. The output device 1003 is configured by a device that outputs information, such as a display device or a printer. The input device 1004 is configured by a device that receives an input of a user operation, such as a keyboard or a mouse. In this case, each functional block of the obfuscation device 1 is configured by a CPU 1001 that reads and executes a computer program stored in the memory 1002 and controls each unit of the output device 1003 and the input device 1004. Note that the hardware configuration of the obfuscation apparatus 1 and each functional block thereof is not limited to the above-described configuration.

コメント情報削除部11は、ソースコードから、コメント情報を削除する。ここで、ソースコードとは、集積回路の設計内容がハードウェア記述言語で記述されたテキスト情報であってもよい。具体的には、コメント情報削除部11は、そのソースコードの記述言語においてコメントの開始または終了を表す文字列に基づいて、コメント情報を削除すればよい。   The comment information deletion unit 11 deletes comment information from the source code. Here, the source code may be text information in which the design content of the integrated circuit is described in a hardware description language. Specifically, the comment information deletion unit 11 may delete the comment information based on a character string indicating the start or end of the comment in the description language of the source code.

ここで、ソースコードに埋め込まれているコメントは、秘密情報となりうる。例えば、ソースコードが集積回路の設計内容を表す場合、コメントには、デザインの機能を特定することが可能な情報が含まれる可能性が高い。また、コメントを難読化すると、コメントそのものの存在意義が失われる。したがって、コメントは、ソースコードの難読化という観点からは、難読化の対象となるよりも、ソースコードから削除されることが適している。   Here, the comments embedded in the source code can be confidential information. For example, when the source code represents the design content of the integrated circuit, there is a high possibility that the comment includes information that can specify the function of the design. In addition, if the comment is obfuscated, the significance of the comment itself is lost. Therefore, from the viewpoint of obfuscation of the source code, it is suitable that the comment is deleted from the source code rather than being an obfuscation target.

なお、ソースコードは、例えば、メモリ1002に格納されていてもよい。あるいは、ソースコードは、ネットワークを介して接続された外部の装置や可搬型記憶媒体等に格納されていてもよい。その場合、コメント情報削除部11は、対象のソースコードの格納位置を示す情報を、入力装置1004を介して取得することにより、ソースコードを取得してもよい。また、入力された情報が、1つ以上のソースコードがまとめて格納されている位置(フォルダ等)を示す場合、コメント情報削除部11は、該当する位置にある全てのソースコードを取得してコメントの削除を行ってもよい。   The source code may be stored in the memory 1002, for example. Alternatively, the source code may be stored in an external device or a portable storage medium connected via a network. In that case, the comment information deletion unit 11 may acquire the source code by acquiring information indicating the storage location of the target source code via the input device 1004. In addition, when the input information indicates a position (folder or the like) where one or more source codes are stored together, the comment information deletion unit 11 acquires all the source codes at the corresponding position. Comments may be deleted.

難読化対象キーワード抽出部12は、ソースコードから、難読化対象のキーワードを抽出し、抽出したキーワードの一覧を難読化リストとする。難読化対象のキーワードは、その記述言語における所定種類の構成要素を表す文字列である。構成要素のうち難読化対象とする種類については、あらかじめ設定されている。もし、取得されたソースコード群の記述言語が複数種類に渡る場合、難読化対象キーワード抽出部12は、記述言語毎に難読化リストを生成すればよい。   The obfuscation target keyword extraction unit 12 extracts obfuscation target keywords from the source code, and sets the extracted keyword list as an obfuscation list. The obfuscation target keyword is a character string representing a predetermined type of component in the description language. The types to be obfuscated among the constituent elements are set in advance. If there are a plurality of types of description languages of the acquired source code group, the obfuscation target keyword extracting unit 12 may generate an obfuscation list for each description language.

難読化リスト調整部13は、難読化リストにおいて、キーワードを文字列長の降順に並び替える。また、難読化リスト調整部13は、難読化リストから、所定の条件を満たすキーワードを除外する。   The obfuscation list adjustment unit 13 rearranges the keywords in descending order of the character string length in the obfuscation list. Further, the obfuscation list adjustment unit 13 excludes keywords that satisfy a predetermined condition from the obfuscation list.

難読化実行部14は、コメント情報が削除されたソースコードにおいて、難読化リストに含まれるキーワードを他の文字列に変換する処理を、難読化リストに含まれる順に実行する。もし、取得されたソースコード群の記述言語が複数種類に渡る場合、難読化実行部14は、コメント情報が削除された各ソースコードに対して、その記述言語について生成した難読化リストを用いて変換処理を行えばよい。   The obfuscation executing unit 14 executes processing for converting a keyword included in the obfuscation list into another character string in the source code from which the comment information is deleted, in the order included in the obfuscation list. If there are a plurality of types of description languages of the acquired source code group, the obfuscation execution unit 14 uses the obfuscation list generated for the description language for each source code from which the comment information has been deleted. Conversion processing may be performed.

以上のように構成された難読化装置1の動作について、図3を参照して説明する。   The operation of the obfuscation apparatus 1 configured as described above will be described with reference to FIG.

図3において、まず、コメント情報削除部11は、対象となる1つまたは複数のソースコードを取得する(ステップS1)。   In FIG. 3, first, the comment information deletion unit 11 acquires one or more source codes to be processed (step S1).

なお、ここで取得されるソースコード群の記述言語が複数種類に渡る場合、以下のステップS2〜S6の動作は、記述言語毎に実行されることが望ましい。   Note that when there are a plurality of types of description languages of the source code group acquired here, it is desirable that the following operations in steps S2 to S6 are executed for each description language.

次に、コメント情報削除部11は、各ソースコードから、コメント情報を削除する(ステップS2)。   Next, the comment information deletion unit 11 deletes the comment information from each source code (step S2).

次に、難読化対象キーワード抽出部12は、ソースコード群から、その記述言語における所定種類の構成要素を表す文字列を、難読化対象のキーワードとして抽出して難読化リストとする(ステップS3)。   Next, the obfuscation target keyword extraction unit 12 extracts a character string representing a predetermined type of component in the description language from the source code group as an obfuscation target keyword to obtain an obfuscation list (step S3). .

次に、難読化リスト調整部13は、難読化リストに含まれるキーワードを、その文字列長の降順に並べ替える(ステップS4)。   Next, the obfuscation list adjustment unit 13 rearranges the keywords included in the obfuscation list in descending order of the character string length (step S4).

次に、難読化リスト調整部13は、難読化リストにおいて、所定条件を満たすキーワードを除外する(ステップS5)。   Next, the obfuscation list adjustment unit 13 excludes keywords that satisfy a predetermined condition in the obfuscation list (step S5).

次に、難読化実行部14は、コメント情報が削除された各ソースコードにおいて、難読化リストに含まれるキーワードを、難読化リストに含まれる順に、他の文字列に変換する(ステップS6)。   Next, the obfuscation executing unit 14 converts the keywords included in the obfuscation list into other character strings in the order included in the obfuscation list in each source code from which the comment information is deleted (step S6).

以上で、難読化装置1は、動作を終了する。   Thus, the obfuscation apparatus 1 ends the operation.

次に、本発明の第1の実施の形態の効果について述べる。   Next, effects of the first exemplary embodiment of the present invention will be described.

本発明の第1の実施の形態としての難読化装置は、元のソースコードから秘密情報をより適切に削除しながら、元のソースコードに対して設計内容が等価なソースコードを自動生成することができる。   The obfuscation apparatus according to the first embodiment of the present invention automatically generates source code equivalent in design content to the original source code while more appropriately deleting the secret information from the original source code. Can do.

その理由について説明する。本実施の形態では、コメント情報削除部が、ソースコードからコメント情報を削除する。そして、難読化対象キーワード抽出部が、ソースコードから、その記述言語における所定種類の構成要素を表す文字列を、難読化対象のキーワードとして抽出して難読化リストを生成する。そして、難読化リスト調整部が、難読化リストにおいて、キーワードを文字列長の降順に並び替えるとともに、所定の条件を満たすキーワードを除外する。そして、難読化実行部が、コメント情報が削除されたソースコードにおいて、難読化リストに含まれるキーワードを他の文字列に変換する処理を、難読化リストに含まれる順に実行するからである。   The reason will be described. In the present embodiment, the comment information deletion unit deletes the comment information from the source code. Then, the obfuscation target keyword extraction unit extracts a character string representing a predetermined type of component in the description language from the source code as an obfuscation target keyword to generate an obfuscation list. Then, the obfuscation list adjustment unit rearranges the keywords in descending order of the character string length in the obfuscation list and excludes keywords that satisfy a predetermined condition. This is because the obfuscation executing unit executes the process of converting the keyword included in the obfuscation list into another character string in the source code from which the comment information is deleted, in the order included in the obfuscation list.

このように、本実施の形態は、ソースコードにおいて、秘密情報を含み得るコメント情報を削除する。また、本実施の形態は、ソースコードにおいて、その記述言語で秘密情報を表し得る各種の構成要素を表す文字列を、全て難読化対象のキーワードとして他の文字列に変換する。つまり、本実施の形態は、ソースコードにおける秘密情報を漏れなく削除することができる。   As described above, according to the present embodiment, comment information that may include confidential information is deleted from the source code. In the present embodiment, in the source code, all character strings representing various constituent elements that can express confidential information in the description language are converted into other character strings as keywords to be obfuscated. That is, according to the present embodiment, secret information in the source code can be deleted without omission.

また、このように、本実施の形態は、キーワードの文字列変換を、難読化対象のキーワードの文字列長の降順に行う。ここで、難読化対象の一方のキーワードが他方のキーワードに含まれる場合がある。この場合、一方のキーワードの文字列変換を先に行ってしまうと、他方のキーワードの一部も変換されてしまうため、他方のキーワードの文字列変換が不可能になってしまう。このため、他方のキーワードに含まれる秘密情報が変換されずに残ってしまう可能性がある。本実施の形態は、キーワードの文字列長の降順に文字列変換を行うため、抽出した全てのキーワードを適切に文字列変換することができる。   As described above, according to the present embodiment, the character string conversion of the keyword is performed in descending order of the character string length of the obfuscation target keyword. Here, one keyword to be obfuscated may be included in the other keyword. In this case, if the character string conversion of one keyword is performed first, a part of the other keyword is also converted, so that the character string conversion of the other keyword becomes impossible. For this reason, the secret information included in the other keyword may remain without being converted. In this embodiment, since character string conversion is performed in descending order of the character string length of the keyword, it is possible to appropriately convert all the extracted keywords.

(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。本実施の形態では、難読化の対象となるソースコードが、ハードウェア記述言語で記載されたRTL(Register transfer level)ソースコードである例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
(Second Embodiment)
Next, a second embodiment of the present invention will be described in detail with reference to the drawings. In the present embodiment, an example in which the source code to be obfuscated is an RTL (Register Transfer Level) source code written in a hardware description language will be described. Note that, in each drawing referred to in the description of the present embodiment, the same reference numerals are given to the same configuration and steps that operate in the same manner as in the first embodiment of the present invention, and the detailed description in the present embodiment. Description is omitted.

まず、本発明の第2の実施の形態としての難読化装置2の構成を図4に示す。図4において、難読化装置2は、コメント情報削除部21と、難読化対象キーワード抽出部22と、難読化リスト調整部23と、難読化実行部24とを備える。ここで、難読化装置2およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。ただし、難読化装置2およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。   First, FIG. 4 shows the configuration of the obfuscation apparatus 2 as the second embodiment of the present invention. 4, the obfuscation apparatus 2 includes a comment information deletion unit 21, an obfuscation target keyword extraction unit 22, an obfuscation list adjustment unit 23, and an obfuscation execution unit 24. Here, the obfuscation apparatus 2 and each functional block thereof can be configured by hardware elements similar to those of the first embodiment of the present invention described with reference to FIG. However, the hardware configuration of the obfuscation apparatus 2 and each functional block thereof is not limited to the above-described configuration.

コメント情報削除部21は、難読化対象のソースコードとして、前述のRTLソースコードを取得する。例えば、コメント情報削除部21は、入力装置1004から入力された情報が示すメモリ1002上のフォルダ以下に含まれる全てのRTLソースコードを取得してもよい。そのようなRTLソースコードの記述言語の種類としては、VHDL(Very High Speed Integrated Circuit Hardware Description Language)、Verilog、SystemVerilog等がある。このように、コメント情報削除部21によって取得されるRTLソースコードの記述言語は、複数種類に渡っていてもよい。なお、以下では、コメント情報削除部21によって取得されたRTLソースコードを、単にソースコードとも記載する。   The comment information deletion unit 21 acquires the RTL source code described above as the source code to be obfuscated. For example, the comment information deletion unit 21 may acquire all the RTL source codes included in the folder on the memory 1002 indicated by the information input from the input device 1004. Such RTL source code description languages include VHDL (Very High Speed Integrated Circuit Hardware Description Language), Verilog, and System Verilog. As described above, the description language of the RTL source code acquired by the comment information deleting unit 21 may be divided into a plurality of types. In the following description, the RTL source code acquired by the comment information deletion unit 21 is also simply referred to as source code.

また、コメント情報削除部21は、ソースコードから、コメント情報のうち所定の条件を満たすもの以外を削除する。これは、ソースコードにおいてコメントの形式で記述される情報であっても、不具合の解析等に必要な情報を含む場合があるからである。   Further, the comment information deleting unit 21 deletes comment information other than that satisfying a predetermined condition from the source code. This is because even information described in the form of a comment in the source code may include information necessary for failure analysis or the like.

例えば、ハードウェア記述言語で記載されたソースコードでは、コメントの形式で記述された情報が、合成ツールによって解釈されるディレクティブ(プラグマとも呼ばれる)を表すケースがある。このような情報は、回路動作に関わる制約になる。このため、このような情報をコメント情報として削除してしまうと、オリジナルのソースコードとの等価性が失われてしまう可能性がある。そこで、コメント情報削除部21は、そのようなディレクティブ記述に当てはまる情報を、コメントの形式であっても削除しないようにする。そして、コメント情報削除部21は、そのようなディレクティブ記述に当てはまらないコメント情報を削除すればよい。   For example, in a source code written in a hardware description language, there is a case where information described in a comment format represents a directive (also called pragma) that is interpreted by a synthesis tool. Such information becomes a constraint on circuit operation. For this reason, if such information is deleted as comment information, the equivalence with the original source code may be lost. Therefore, the comment information deletion unit 21 does not delete information applicable to such a directive description even in the comment format. Then, the comment information deletion unit 21 may delete comment information that does not apply to such a directive description.

例えば、VHDLでは、「--」から改行コードまでが、コメントを表す。また、VerilogやSystemVerilogでは、「//」から改行コードまでが、コメントを表す。また、VHDL、VerilogおよびSystemVerilogのいずれでも、「/*」から「*/」までが、コメントを表す。そして、例えば、Verilogでは、「// synopsys」や「// synthesis」といった文字列が、ディレクティブを記述する際に用いられる。   For example, in VHDL, a comment from “-” to a line feed code represents a comment. In Verilog and SystemVerilog, “//” to a line feed code represent a comment. In any of VHDL, Verilog, and SystemVerilog, “/ *” to “* /” represent comments. For example, in Verilog, a character string such as “// synopsys” or “// synthesis” is used when a directive is described.

そこで、コメント情報削除部21は、所定条件として上述のディレクティブ記述を表す文字列を事前に検索してディレクティブ記述を検出する。そして、コメント情報削除部21は、検出したディレクティブ記述のうち、コメントの開始を表す文字列を、ソースコードで使用されない文字列に一時的に置き換える。置き換えた文字列を、一時的変換文字列とも記載する。そして、コメント情報削除部21は、ソースコードから、コメントの開始または終了を表す情報を検索することにより、コメント情報をソースコードから削除すればよい。その後、コメント情報削除部21は、一時的変換文字列を、コメントの開始を表す元の文字列に変換すればよい。   Therefore, the comment information deletion unit 21 detects the directive description by searching in advance for a character string representing the above directive description as a predetermined condition. Then, the comment information deletion unit 21 temporarily replaces the character string indicating the start of the comment in the detected directive description with a character string that is not used in the source code. The replaced character string is also described as a temporary conversion character string. Then, the comment information deleting unit 21 may delete the comment information from the source code by searching the source code for information indicating the start or end of the comment. Thereafter, the comment information deletion unit 21 may convert the temporary converted character string into an original character string indicating the start of the comment.

難読化対象キーワード抽出部22は、ソースコードの記述スタイルを所定のスタイルに整形してから、難読化対象のキーワードを抽出する。   The obfuscation target keyword extraction unit 22 shapes the source code description style into a predetermined style, and then extracts the obfuscation target keyword.

ここで、ソースコードの記述スタイルは、設計者、もしくは開発プロジェクトごとによって異なる。記述スタイルとは、例えば、改行の挿入タイミングや、インデントの仕方等をいう。一般的に、記述言語では、同一の内容であっても、見やすさや行数などの観点から、様々な記述スタイルが可能となっていることが多い。様々な記述スタイルの一例を図5に示す。図5において、記述901〜904は、VHDLのport宣言記述の様々な記述スタイルを表している。この例のように、一般的な記述言語では、様々な記述スタイルが可能となっている。なお、図5において、太字は、VHDLにおいて秘密情報となり得る構成要素を表す文字列である。   Here, the description style of the source code differs depending on the designer or the development project. The description style refers to, for example, the insertion timing of line breaks, the indentation method, and the like. In general, in a description language, even if the content is the same, various description styles are often possible from the viewpoints of easy viewing and the number of lines. An example of various description styles is shown in FIG. In FIG. 5, descriptions 901 to 904 represent various description styles of the VHDL port declaration description. As in this example, various description styles are possible in a general description language. In FIG. 5, bold text is a character string representing a component that can be confidential information in VHDL.

ところが、記述スタイルごとに、難読化対象のキーワードを抽出するための規則を設定することは難しい。例えば、図5の例では、記述901では、「:in」を含む行において「:in」の直前の文字列を抽出することにより端子名を表す文字列を抽出することができる。しかし、記述902では、1行に複数の「:in」が含まれるため、記述901と同一の規則では端子名を表す文字列を抽出することができない。また、記述903では、直前の文字列の先頭に処理の区切りである「;」が記載されているため、記述901と同一の規則では端子名を表す文字列を抽出することができない。また、記述904では、「:in」の前に複数の端子名が「,」で区切られて記載されているため、記述901と同一の規則では端子名を表す文字列を抽出することができない。本実施の形態は、ソースコードの記述スタイルに左右されずに、難読化対象のキーワードをできるだけ正しく抽出する必要がある。そこで、難読化対象キーワード抽出部22は、ソースコードの記述スタイルを所定のスタイルに統一してから、難読化対象のキーワードを抽出する。   However, it is difficult to set a rule for extracting obfuscated keywords for each description style. For example, in the example of FIG. 5, in the description 901, a character string representing a terminal name can be extracted by extracting a character string immediately before “: in” in a line including “: in”. However, in the description 902, since a plurality of “: in” are included in one line, a character string representing a terminal name cannot be extracted with the same rule as the description 901. Further, in the description 903, the processing delimiter “;” is described at the beginning of the immediately preceding character string. Therefore, the character string representing the terminal name cannot be extracted with the same rule as the description 901. Also, in the description 904, since a plurality of terminal names are delimited by “,” before “: in”, a character string representing the terminal name cannot be extracted with the same rules as the description 901. . In the present embodiment, it is necessary to extract the obfuscation target keyword as correctly as possible regardless of the description style of the source code. Therefore, the obfuscation target keyword extracting unit 22 extracts the obfuscation target keyword after unifying the source code description style into a predetermined style.

例えば、難読化対象キーワード抽出部22は、ソースコードにおける改行の挿入タイミングを調整することにより、記述スタイルを統一してもよい。具体的には、この場合、難読化対象キーワード抽出部22は、ソースコードから一旦全ての改行を削除する処理を行ったあと、処理センテンスの区切りを表す特定の記号の直後に改行を改めて挿入することにより、改行の挿入タイミングを調整してもよい。   For example, the obfuscation target keyword extraction unit 22 may unify the description style by adjusting the insertion timing of a line break in the source code. Specifically, in this case, the obfuscation target keyword extraction unit 22 performs a process of once deleting all line breaks from the source code, and then inserts a line break immediately after a specific symbol representing a processing sentence break. Thus, the insertion timing of the line feed may be adjusted.

また、難読化対象キーワード抽出部22は、このように改行タイミングを調整したソースコードから、記述言語の所定の構成要素を表す文字列を、難読化対象のキーワードとして抽出する。例えば、そのような構成要素としては、端子名、内部信号名、モジュール名、インスタンス名、ラベル名、内部変数名等がある。そこで、難読化対象キーワード抽出部22は、記述言語毎に、難読化対象の構成要素についてその構成要素の前または後の文字列を用いた抽出規則を記憶しておいてもよい。そして、難読化対象キーワード抽出部22は、ソースコードにおいて、そのような抽出規則にマッチする箇所を検索することにより、難読化対象の構成要素を表す文字列を抽出すればよい。   Further, the obfuscation target keyword extraction unit 22 extracts a character string representing a predetermined component of the description language as an obfuscation target keyword from the source code with the line feed timing adjusted in this way. For example, such components include terminal names, internal signal names, module names, instance names, label names, internal variable names, and the like. Therefore, the obfuscation target keyword extraction unit 22 may store an extraction rule using a character string before or after the constituent element of the obfuscation target constituent element for each description language. Then, the obfuscation target keyword extraction unit 22 may extract a character string representing a constituent element to be obfuscated by searching a portion that matches such an extraction rule in the source code.

また、難読化対象キーワード抽出部22は、上述のようにして抽出した難読化対象のキーワードの一覧を、難読化リストとして生成する。なお、取得されたソースコード群の記述言語が複数種類に渡る場合、難読化対象キーワード抽出部22は、記述言語毎に、ソースコード群から抽出した難読化対象のキーワードの一覧を、難読化リストとすればよい。このとき、難読化対象キーワード抽出部22は、難読化リストに含まれるキーワードのうち重複するものを取り除くようにする。例えば、難読化対象キーワード抽出部22は、難読化リストに含まれるキーワードを文字の昇順または降順に並べ替えることにより、複数の同一のキーワードが隣接した場合に、そのうち1つのキーワードを残して残りを削除すればよい。   Further, the obfuscation target keyword extraction unit 22 generates a list of obfuscation target keywords extracted as described above as an obfuscation list. When there are a plurality of types of description languages of the acquired source code group, the obfuscation target keyword extraction unit 22 displays an obfuscation target keyword list extracted from the source code group for each description language. And it is sufficient. At this time, the obfuscation target keyword extracting unit 22 removes duplicate keywords from the keywords included in the obfuscation list. For example, the obfuscation target keyword extraction unit 22 rearranges the keywords included in the obfuscation list in ascending or descending order of characters, so that when a plurality of identical keywords are adjacent to each other, the remaining one keyword is left. Delete it.

難読化リスト調整部23は、上述のようにして生成された難読化リストを、その文字列長の降順に並べ替える。ここで、難読化リストを文字列長の降順に並べ替える理由について説明する。難読化対象の一方のキーワードが、他方のキーワードに含まれる可能性がある。その場合、一方のキーワードを先に無意味な文字列に変換してしまうと、そのキーワードを含む他方のキーワード内の一部が無意味な文字列に変換されてしまう。したがって、他方のキーワードを変換しようとする際には、既にそのキーワードがないため、変換できない。しかしながら、一部が変換された他方のキーワードには、秘密情報が残っている可能性がある。つまり、これらの難読化対象のキーワードについて、抽出した順、文字列の昇順や降順、ランダムな順などで変換を行っても、無意味な文字列に変換できないキーワードが発生する可能性が高い。   The obfuscation list adjustment unit 23 sorts the obfuscation list generated as described above in descending order of the character string length. Here, the reason why the obfuscation list is rearranged in descending order of the character string length will be described. One keyword to be obfuscated may be included in the other keyword. In that case, if one keyword is first converted to a meaningless character string, a part of the other keyword including the keyword is converted to a meaningless character string. Therefore, when trying to convert the other keyword, it cannot be converted because there is no keyword already. However, there is a possibility that secret information remains in the other keyword partially converted. That is, even if these obfuscation target keywords are converted in the order of extraction, ascending / descending order of character strings, random order, etc., there is a high possibility that keywords that cannot be converted into meaningless character strings will occur.

具体的な例で説明する。難読化対象のキーワードとして、端子名「count」および「count_reset_reg」が抽出されているとする。このとき、「count」を無意味な文字列「EEE」に変換する処理を、「count_reset_reg」の変換処理に先行して行ったとする。この場合、端子名「count」が「EEE」に変換される際に、端子名「count_reset_reg」が「EEE_reset_reg」に変換されてしまう。すると、その後、「count_reset_reg」の変換処理を行うことができない。その結果、変換後のソースコードにおいて、端子名「EEE_reset_reg」の中に秘密情報が残っており、難読化が充分でないことになる。この問題は、文字列長がより長い端子名「count_reset_reg」の変換処理を、文字列長がより短い端子名「count」より先行して実施することで解決する。   A specific example will be described. Assume that terminal names “count” and “count_reset_reg” are extracted as obfuscation target keywords. At this time, it is assumed that the process of converting “count” to the meaningless character string “EEE” is performed prior to the conversion process of “count_reset_reg”. In this case, when the terminal name “count” is converted to “EEE”, the terminal name “count_reset_reg” is converted to “EEE_reset_reg”. Then, after that, the conversion process of “count_reset_reg” cannot be performed. As a result, in the converted source code, secret information remains in the terminal name “EEE_reset_reg”, and obfuscation is not sufficient. This problem is solved by performing the conversion process of the terminal name “count_reset_reg” having a longer character string length before the terminal name “count” having a shorter character string length.

このような理由により、難読化リスト調整部23は、難読化リストにおいて、キーワードをその文字列長の降順に並び替える。   For this reason, the obfuscation list adjustment unit 23 rearranges the keywords in the obfuscation list in descending order of the character string length.

また、難読化リスト調整部23は、このようにして生成した難読化リストから、文字列長が閾値未満のキーワードを除外する。   In addition, the obfuscation list adjustment unit 23 excludes keywords whose character string length is less than the threshold from the obfuscation list generated in this way.

ここで、閾値未満のキーワードを除外する理由について説明する。文字列長が短いキーワードは、記述言語の予約語に含まれる可能性が高い。例えば、「en」という信号名が難読化対象として抽出され「難読化リスト」に登録されているとする。このとき、キーワード「en」を無意味な文字列「zzz」に変換することを考える。ところが、ソースコードにおいて制御を表す単語である「then」や「end」といった文字列は、その一部に「en」を含む。このため、信号名「en」の「zzz」への変換に伴い、「then」や「end」が、「thZZZ」や「ZZZd」に変換されてしまう。その結果、難読化されたソースコードは、構文エラーを引き起こしてしまう。この問題は、文字列長の短いキーワードを難読化リストから除外することにより解決する。なお、難読化対象の構成要素を表す文字列であっても、文字列長が充分に短い文字列は、秘密情報を表すことが難しい。したがって、文字列長が短いキーワードを難読化リストから除外しても、難読化処理に与える影響は少ないと考えてよい。例えば、1文字や2文字の文字列であれば、実質的に、LSIデザインの機能を特定される可能性は非常に低い。そこで、前述したように、難読化リスト調整部23は、難読化リストから、文字列長が閾値未満のキーワードを除外する。閾値は、例えば3であってもよい。なお、除外する文字列長の閾値は、利用者により設定可能であるものとする。   Here, the reason for excluding keywords less than the threshold will be described. A keyword having a short character string length is likely to be included in a reserved word of the description language. For example, it is assumed that the signal name “en” is extracted as an obfuscation target and registered in the “obfuscation list”. At this time, consider that the keyword “en” is converted into a meaningless character string “zzz”. However, a character string such as “then” or “end”, which is a word representing control in the source code, includes “en” as a part thereof. For this reason, along with the conversion of the signal name “en” to “zzz”, “then” and “end” are converted to “thZZZZ” and “ZZZd”. As a result, obfuscated source code can cause syntax errors. This problem is solved by excluding keywords with a short character string length from the obfuscation list. Note that even a character string representing a component to be obfuscated is difficult to represent secret information if the character string has a sufficiently short character string length. Therefore, even if a keyword having a short character string length is excluded from the obfuscation list, it may be considered that the influence on the obfuscation process is small. For example, in the case of a character string of 1 or 2 characters, the possibility of specifying the LSI design function is very low. Therefore, as described above, the obfuscation list adjustment unit 23 excludes keywords whose character string length is less than the threshold from the obfuscation list. The threshold may be 3, for example. Note that the threshold of the character string length to be excluded can be set by the user.

また、難読化リスト調整部23は、難読化リストから、除外リストに含まれるキーワードを除外する。除外リストは、あらかじめメモリ1002等に格納され、利用者により設定可能であるものとする。   In addition, the obfuscation list adjustment unit 23 excludes keywords included in the exclusion list from the obfuscation list. The exclusion list is stored in advance in the memory 1002 and can be set by the user.

また、難読化リスト調整部23は、難読化リストに含まれるキーワードのうち、記述言語の予約語の部分文字列となっているキーワードを検出する。そして、難読化リスト調整部23は、検出結果に基づいて、難読化リストまたはソースコードを修正する。なお、ここで修正の対象となるソースコードは、コメント情報削除部21によってコメント情報が削除されたソースコードである。   Further, the obfuscation list adjustment unit 23 detects a keyword that is a partial character string of a reserved word in the description language from among the keywords included in the obfuscation list. Then, the obfuscation list adjustment unit 23 corrects the obfuscation list or the source code based on the detection result. Here, the source code to be corrected is the source code from which the comment information is deleted by the comment information deleting unit 21.

ここで、記述言語の予約語の部分文字列となっているキーワードが検出された場合で、その予約語がソースコードに含まれているとする。このような場合、そのキーワードの変換に伴い、予約語の一部の文字列が変換されてしまう。例えば、VHDLのソースコードから抽出された難読化リストにキーワード「ack」が含まれているとする。このキーワードは、VHDLの予約語「package」の部分文字列となっている。仮に、キーワード「ack」を無意味な文字列「XXX」に変換すると、予約語「package」の一部までもが変換され「pXXXage」となってしまう。その結果、難読化後のソースコードが構文エラーを引き起こしてしまう。   Here, it is assumed that a keyword that is a partial character string of a reserved word in the description language is detected and the reserved word is included in the source code. In such a case, part of the character string of the reserved word is converted along with the conversion of the keyword. For example, it is assumed that the keyword “ack” is included in the obfuscation list extracted from the VHDL source code. This keyword is a partial character string of the VHDL reserved word “package”. If the keyword “ack” is converted to a meaningless character string “XXX”, even a part of the reserved word “package” is converted to “pXXXage”. As a result, the obfuscated source code causes a syntax error.

そこで、難読化リスト調整部23は、検出したキーワードを含む予約語がソースコードに含まれていれば、難読化リストからそのキーワードを除外するか、難読化リストおよびソースコードにおいてそのキーワードを別のキーワードに変更する修正を行う。   Therefore, if the reserved code including the detected keyword is included in the source code, the obfuscation list adjusting unit 23 excludes the keyword from the obfuscation list, or separates the keyword in the obfuscation list and the source code. Make corrections that change to keywords.

なお、難読化リスト調整部23は、検出したキーワードを含んでいる予約語がソースコードに含まれるか否かを解析する処理を必ずしも行わなくてもよい。例えば、難読化リスト調整部23は、検出したキーワードを、そのキーワードを含む予約語と共に、警告情報として出力装置1003に出力してもよい。そして、この場合、難読化リスト調整部23は、警告情報の出力に応じて、入力装置1004を介して入力される入力情報を取得し、入力情報に基づいて難読化リストまたはソースコードを修正してもよい。あるいは、この場合、難読化リスト調整部23は、警告情報の出力後、修正された難読化リストまたはソースコードを取得してもよい。   It should be noted that the obfuscation list adjustment unit 23 does not necessarily perform the process of analyzing whether or not the reserved word including the detected keyword is included in the source code. For example, the obfuscation list adjustment unit 23 may output the detected keyword to the output device 1003 as warning information together with a reserved word including the keyword. In this case, the obfuscation list adjustment unit 23 acquires the input information input via the input device 1004 in response to the output of the warning information, and corrects the obfuscation list or the source code based on the input information. May be. Alternatively, in this case, the obfuscation list adjustment unit 23 may obtain a modified obfuscation list or source code after outputting the warning information.

具体的には、難読化リスト調整部23は、ハードウェア記述言語のリファレンスマニュアルで規定されている予約語の一覧を参照する。例えば、VHDL、Verilog、SystemVerilog等でそれぞれ定められた予約語を含む予約語テーブルが、あらかじめメモリ1002に記憶されていてもよい。そして、難読化リスト調整部23は、この予約語テーブルを用いて、難読化リストに含まれるキーワードのうち、予約語テーブルに含まれる予約語の部分文字列となっているキーワードを検出する。   Specifically, the obfuscation list adjustment unit 23 refers to a list of reserved words defined in the reference manual of the hardware description language. For example, a reserved word table including reserved words respectively defined by VHDL, Verilog, SystemVerilog, etc. may be stored in the memory 1002 in advance. Then, the obfuscation list adjustment unit 23 uses the reserved word table to detect a keyword that is a partial character string of the reserved word included in the reserved word table among the keywords included in the obfuscated list.

そして、難読化リスト調整部23は、検出したキーワードを、そのキーワードを含む予約語と共に、警告情報として出力装置1003に出力する。利用者は、検出されたキーワードを含む予約語をソースコード中に発見した場合、難読化リストから該当するキーワードを削除する編集を行う。あるいは、利用者は、検出されたキーワードを含む予約語をソースコード中に発見した場合、難読化リストおよびソースコードの双方において、該当するキーワードを他のキーワードに変更する編集を行う。また、利用者は、検出されたキーワードを含む予約語をソースコード中に発見しない場合、難読化リストおよびソースコードを編集せずにそのままとする。このようにして、難読化リスト調整部23は、警告情報の出力後、修正された難読化リストまたはソースコードを取得することができる。   Then, the obfuscation list adjustment unit 23 outputs the detected keyword to the output device 1003 as warning information together with the reserved word including the keyword. When the user finds a reserved word including the detected keyword in the source code, the user performs editing to delete the corresponding keyword from the obfuscation list. Alternatively, when a reserved word including the detected keyword is found in the source code, the user performs editing to change the corresponding keyword to another keyword in both the obfuscation list and the source code. If the user does not find a reserved word including the detected keyword in the source code, the obfuscation list and the source code are left unchanged without being edited. In this way, the obfuscation list adjustment unit 23 can acquire the corrected obfuscation list or source code after outputting the warning information.

難読化実行部24は、難読化リストに含まれるキーワードを、難読化リストに含まれる順に他の文字列に変換する難読化変換スクリプトを生成する。そして、難読化実行部24は、生成した難読化変換スクリプトを、コメント情報が削除されたソースコードに対して実行する。なお、取得されたソースコード群の記述言語が複数種類に渡る場合、難読化実行部24は、記述言語毎に難読化変換スクリプトを生成すればよい。そして、難読化実行部24は、コメント情報が削除された各ソースコードに対して、その記述言語に対応する難読化変換スクリプトを実行すればよい。そして、難読化実行部24は、難読化変換スクリプトから出力された情報を、難読化ソースコードとして、元のソースコードとは異なる名称でメモリ1002に格納すればよい。   The obfuscation execution unit 24 generates an obfuscation conversion script that converts keywords included in the obfuscation list into other character strings in the order included in the obfuscation list. Then, the obfuscation executing unit 24 executes the generated obfuscation conversion script on the source code from which the comment information is deleted. When there are a plurality of types of description languages of the acquired source code group, the obfuscation execution unit 24 may generate an obfuscation conversion script for each description language. Then, the obfuscation execution unit 24 may execute an obfuscation conversion script corresponding to the description language for each source code from which the comment information is deleted. Then, the obfuscation execution unit 24 may store the information output from the obfuscation conversion script as the obfuscated source code in the memory 1002 with a name different from the original source code.

例えば、難読化実行部24は、難読化リストに含まれるキーワードに対して、無意味な文字列をペアで記述した変換テーブルを、難読化リストに含まれる順で生成してもよい。無意味な文字列は、互いに異なる文字列であればよい。例えば、任意の文字列に連番を付加した文字列を、変換後の無意味な文字列として採用してもよい。連番を採用することにより、キーワード数の増加に容易に対応可能となる。この場合、難読化実行部24は、変換テーブルに基づいて、難読化変換スクリプトを生成するよう構成される。なお、難読化変換スクリプトの記述言語は、テキスト情報処理に適した言語であることが望ましい。   For example, the obfuscation executing unit 24 may generate a conversion table in which meaningless character strings are described in pairs for the keywords included in the obfuscation list in the order included in the obfuscation list. The meaningless character string may be a character string different from each other. For example, a character string in which a serial number is added to an arbitrary character string may be adopted as a meaningless character string after conversion. By adopting sequential numbers, it is possible to easily cope with an increase in the number of keywords. In this case, the obfuscation executing unit 24 is configured to generate an obfuscated conversion script based on the conversion table. The description language of the obfuscation conversion script is preferably a language suitable for text information processing.

以上のように構成された難読化装置2の動作について、図面を参照して説明する。   The operation of the obfuscation apparatus 2 configured as described above will be described with reference to the drawings.

難読化装置2の動作の概略は、図3を参照して説明した本発明の第1の実施の形態としての動作と略同一だが、ステップS2〜S6の詳細が異なる。なお、本発明の第1の実施の形態と同様に、ステップS1で取得されるソースコードの記述言語が複数種類に渡る場合、ステップS2〜S6の動作は、記述言語毎に実行されることが望ましい。   The outline of the operation of the obfuscation apparatus 2 is substantially the same as the operation of the first embodiment of the present invention described with reference to FIG. 3, but the details of steps S2 to S6 are different. As in the first embodiment of the present invention, when there are a plurality of types of description language of the source code acquired in step S1, the operations in steps S2 to S6 may be executed for each description language. desirable.

まず、ステップS2における本実施の形態でのコメント情報削除動作の詳細を図6に示す。   First, the details of the comment information deleting operation in the present embodiment in step S2 are shown in FIG.

図6では、まず、コメント情報削除部21は、対象のソースコードにおいて、コメント情報のうち所定の条件を満たす情報を検出する(ステップS21)。   In FIG. 6, first, the comment information deletion unit 21 detects information satisfying a predetermined condition among the comment information in the target source code (step S21).

例えば、前述のように、コメント情報削除部21は、ソースコードにおけるディレクティブ記述を検出する。   For example, as described above, the comment information deletion unit 21 detects a directive description in the source code.

次に、コメント情報削除部21は、ソースコードにおいて、ステップS21で検出した情報以外のコメント情報を削除する(ステップS22)。   Next, the comment information deletion unit 21 deletes comment information other than the information detected in step S21 in the source code (step S22).

例えば、前述のように、コメント情報削除部21は、ステップS21で検出した情報に含まれるコメントの開始または終了を表す文字列を一時的変換文字列に変換してから、コメントの開始または終了を表す文字列に基づきコメント情報を削除してもよい。この場合、その後、コメント情報削除部21は、コメント情報を削除後のソースコードにおいて、一時的変換文字列を、コメントの開始または終了を表す文字列に戻す変換を行えばよい。   For example, as described above, the comment information deletion unit 21 converts the character string indicating the start or end of the comment included in the information detected in step S21 into a temporarily converted character string, and then starts or ends the comment. You may delete comment information based on the character string to represent. In this case, thereafter, the comment information deleting unit 21 may perform conversion to return the temporary conversion character string to the character string indicating the start or end of the comment in the source code after the comment information is deleted.

以上で、難読化装置2は、コメント情報削除動作を終了する。   As described above, the obfuscation apparatus 2 ends the comment information deletion operation.

ここで、コメント情報削除動作の具体例を2つ示す。   Here, two specific examples of the comment information deleting operation are shown.

1つ目の具体例では、対象のソースコードが、図7に示すようにVerilogで記述されたソースコード905であるとする。なお、図7では、ソースコードの一部を抜粋して示している。前述のように、Verilogでは、「//」から改行コードまでが、コメントを表す。また、「/*」から「*/」までが、コメントを表す。また、「// synopsys」や「// synthesis」といったディレクティブ記述の文字列が、所定条件として定められている。   In the first specific example, it is assumed that the target source code is source code 905 described in Verilog as shown in FIG. In FIG. 7, a part of the source code is extracted and shown. As described above, in Verilog, “//” to a line feed code represent a comment. Also, “/ *” to “* /” represent comments. In addition, a character string of directive description such as “// synopsys” or “// synthesis” is defined as a predetermined condition.

このとき、ステップS21において、コメント情報削除部21は、ソースコード905において太字で示したコメント情報のうち、所定条件として定められたディレクトリ記述として、破線の矩形で囲まれた箇所を検出する。   At this time, in step S <b> 21, the comment information deletion unit 21 detects a part surrounded by a broken-line rectangle as a directory description defined as a predetermined condition from the comment information indicated in bold in the source code 905.

そして、ステップS22において、コメント情報削除部21は、ソースコード905から、ステップS21で検出した箇所以外のコメント情報を削除する。   In step S22, the comment information deletion unit 21 deletes comment information other than the part detected in step S21 from the source code 905.

具体的には、ここでは、コメント情報削除部21は、ソースコード905におけるディレクティブ記述において、コメントの開始を表す文字列「//」を一時的変換文字列「##」に置き換える。この時点で、ソースコード905は、図8に示すようにテンポラリなソースコード906となる。ソースコード906において、破線の楕円で囲まれた箇所が一時的変換文字列に変換された箇所である。   Specifically, here, the comment information deletion unit 21 replaces the character string “//” indicating the start of the comment with the temporary conversion character string “##” in the directive description in the source code 905. At this point, the source code 905 becomes a temporary source code 906 as shown in FIG. In the source code 906, a portion surrounded by a dashed ellipse is a portion converted into a temporary conversion character string.

次に、コメント情報削除部21は、ソースコード906の先頭から、コメントの開始を表す「//」を検索していき、「//」を検出する度、以降改行までを削除して次の行から「//」を検索することを続ける。   Next, the comment information deletion unit 21 searches for “//” representing the start of the comment from the beginning of the source code 906, and deletes the line feed after detecting “//” until the next line is detected. Continue searching for “//” from the line.

次に、コメント情報削除部21は、ソースコードから、コメントの開始を表す「/*」を検索し、「/*」を検出すると、その行に「*/」が含まれていれば、その行を削除して次の行から「/*」の検索を続ける。また、コメント情報削除部21は、ソースコードから、「/*」を検出したとき、その行に「*/」が含まれていなければ、次の行以降で「*/」を検索し、先に検出した「/*」以降で初めて検出した「*/」までを削除する。そして、コメント情報削除部21は、その次の行から「/*」の検索を続ける。   Next, the comment information deletion unit 21 searches the source code for “/ *” indicating the start of the comment, and when “/ *” is detected, if “* /” is included in the line, Delete the line and continue searching for "/ *" from the next line. Also, when the comment information deletion unit 21 detects “/ *” from the source code, if “* /” is not included in the line, the comment information deletion unit 21 searches for “* /” in the next line and thereafter. Deletes up to “* /” detected for the first time after “/ *” detected in. Then, the comment information deleting unit 21 continues searching for “/ *” from the next line.

これにより、「//」から改行まで記述されたコメント情報と、「/*」から「*/」まで記述されたコメント情報とが削除される。この時点で、ソースコード906は、図9に示すテンポラリなソースコード907となる。   As a result, the comment information described from “//” to the line feed and the comment information described from “/ *” to “* /” are deleted. At this point, the source code 906 becomes the temporary source code 907 shown in FIG.

最後に、コメント情報削除部21は、ソースコード907において、一時的変換文字列「##」を、コメントの開始を表す文字列「//」に戻す変換を行えばよい。その結果、図10に示すように、コメント情報が削除されたソースコード908が生成される。なお、ソースコード908において、破線の楕円で囲まれた箇所が一時的変換文字列から元の文字列に変換された箇所である。   Finally, the comment information deleting unit 21 may perform conversion to return the temporary converted character string “##” to the character string “//” indicating the start of the comment in the source code 907. As a result, as shown in FIG. 10, the source code 908 from which the comment information is deleted is generated. In the source code 908, a portion surrounded by a broken ellipse is a portion converted from the temporary conversion character string to the original character string.

コメント情報削除部21は、このようにして生成したソースコード908を、元のソースコードとは異なる名称のファイルとしてメモリ1002に保存する。   The comment information deleting unit 21 stores the source code 908 generated in this way in the memory 1002 as a file having a name different from that of the original source code.

また、2つ目の具体例では、対象のソースコードが、図11に示すようにVHDLで記述されたソースコード909であるとする。なお、図11では、ソースコードの一部を抜粋して示している。この場合、前述のように、VHDLでは、「--」から改行コードまでが、コメントを表す。また、「/*」から「*/」までが、コメントを表す。   In the second specific example, it is assumed that the target source code is the source code 909 described in VHDL as shown in FIG. In FIG. 11, a part of the source code is extracted and shown. In this case, as described above, in VHDL, a comment from “-” to a line feed code represents a comment. Also, “/ *” to “* /” represent comments.

ここで、ソースコード909には、ディレクティブ記述は含まれていない。   Here, the source code 909 does not include a directive description.

このため、ステップS21において、コメント情報削除部21は、コメント情報のうち所定条件として定められたディレクティブ記述を検出しない。   For this reason, in step S21, the comment information deleting unit 21 does not detect the directive description defined as the predetermined condition in the comment information.

そして、ステップS22において、コメント情報削除部21は、ソースコード909から、コメント情報を削除する。   In step S22, the comment information deletion unit 21 deletes the comment information from the source code 909.

具体的には、コメント情報削除部21は、ソースコード909の先頭から、コメントの開始を表す「--」を検索していき、「--」を検出する度、以降改行までを削除して次の行から「--」を検索することを続ける。   Specifically, the comment information deletion unit 21 searches for “-” indicating the start of the comment from the top of the source code 909, and deletes the line breaks after detecting “-”. Continue searching for "-" from the next line.

次に、コメント情報削除部21は、ソースコードから、コメントの開始を表す「/*」を検索するが、ソースコード909には、「/*」が含まれていないため、検索を終了する。   Next, the comment information deletion unit 21 searches the source code for “/ *” indicating the start of the comment, but ends the search because the source code 909 does not include “/ *”.

これにより、「--」から改行まで記述されたコメント情報が削除される。その結果、図12に示すように、コメント情報が削除されたソースコード910が生成される。   As a result, the comment information described from “-” to the line feed is deleted. As a result, as shown in FIG. 12, the source code 910 from which the comment information is deleted is generated.

以上で、コメント情報削除動作の詳細な説明を終了する。   This is the end of the detailed description of the comment information deletion operation.

次に、ステップS3における本実施の形態での難読化対象キーワード抽出動作の詳細を図13に示す。   Next, details of the obfuscation target keyword extraction operation in the present embodiment in step S3 are shown in FIG.

図13において、まず、難読化対象キーワード抽出部22は、コメント情報が削除されたソースコードについて、記述スタイルを所定のスタイルに整形する(ステップS31)。   In FIG. 13, first, the obfuscation target keyword extracting unit 22 formats the description style into a predetermined style for the source code from which the comment information is deleted (step S31).

例えば、前述のように、難読化対象キーワード抽出部22は、ソースコードにおける改行タイミングの調整を行う。   For example, as described above, the obfuscation target keyword extraction unit 22 adjusts the line feed timing in the source code.

次に、難読化対象キーワード抽出部22は、整形したソースコードにおいて、所定の構成要素を表す文字列を難読化対象のキーワードとして検出する(ステップS32)。   Next, the obfuscation target keyword extraction unit 22 detects a character string representing a predetermined component in the shaped source code as an obfuscation target keyword (step S32).

次に、難読化対象キーワード抽出部22は、ステップS32で検出したキーワードの一覧を表す難読化リストを生成する(ステップS33)。   Next, the obfuscation target keyword extraction unit 22 generates an obfuscation list that represents a list of keywords detected in step S32 (step S33).

例えば、前述のように、難読化対象キーワード抽出部22は、検出したキーワードを文字の昇順または降順に並べ替えることで重複を削除して、難読化リストを生成してもよい。   For example, as described above, the obfuscation target keyword extracting unit 22 may generate an obfuscation list by deleting duplicates by rearranging the detected keywords in ascending or descending order of characters.

以上で、難読化装置2は、難読化対象キーワード抽出動作を終了する。   As described above, the obfuscation apparatus 2 ends the obfuscation target keyword extraction operation.

ここで、難読化対象キーワード抽出動作を具体例で示す。   Here, the obfuscation target keyword extraction operation is shown as a specific example.

ここでは、コメント情報が削除されたソースコードとして、図12に示したソースコード910が生成されているとする。   Here, it is assumed that the source code 910 shown in FIG. 12 is generated as the source code from which the comment information is deleted.

まず、ステップS31において、難読化対象キーワード抽出部22は、ソースコード910に対して、改行コードの削除を行う。これにより、どのような記述スタイルのソースコードでも、全て1行のファイルに一旦加工される。ここでは、ソースコード910から改行コードが削除され、図14に示すテンポラリなソースコード911が生成される。そして、難読化対象キーワード抽出部22は、1行に加工されたソースコード911に対して、「;」文字の直後に改行コードを再挿入する。なお、ハードウェア記述言語において「;」は、処理センテンスの区切りを指している。これにより、図15に示すように、整形されたソースコード912が生成される。このように、難読化対象キーワード抽出部22は、一旦改行コードを削除後、処理センテンス単位に改行コードを再挿入することで、元のソースコードの記述スタイルに関わらず、一行に一処理を含む記述スタイルのソースコードを生成する。   First, in step S <b> 31, the obfuscation target keyword extraction unit 22 deletes the line feed code from the source code 910. As a result, any description style source code is once processed into a one-line file. Here, the line feed code is deleted from the source code 910, and the temporary source code 911 shown in FIG. 14 is generated. Then, the obfuscation target keyword extraction unit 22 reinserts the line feed code immediately after the “;” character in the source code 911 processed into one line. In the hardware description language, “;” indicates a delimiter between processing sentences. Thereby, as shown in FIG. 15, the shaped source code 912 is generated. In this way, the obfuscation target keyword extraction unit 22 once deletes the line feed code and then reinserts the line feed code in units of processing sentences, thereby including one process per line regardless of the description style of the original source code. Generate a description style source code.

そして、ステップS32において、難読化対象キーワード抽出部22は、図15に示したソースコード912から、VHDLにおいて難読化対象として定められた構成要素を抽出する。ここでは、難読化対象として端子名、内部信号名、モジュール名、インスタンス名、ラベル名、内部変数名等の構成要素が定められているとする。   Then, in step S32, the obfuscation target keyword extraction unit 22 extracts components defined as obfuscation targets in the VHDL from the source code 912 shown in FIG. Here, it is assumed that components such as a terminal name, an internal signal name, a module name, an instance name, a label name, and an internal variable name are defined as obfuscation targets.

図16に、VHDLにおいて難読化対象として定められた構成要素を抽出するための規則の一例として、抽出規則1〜6を示す。抽出規則1〜6は、難読化対象として定められた構成要素の直前または直後に出現する文字列を検索することにより該当する構成要素を表す文字列を抽出する規則である。このような規則を用いることにより、難読化対象キーワード抽出部22は、図17に示すように、太字で示した文字列を、難読化対象のキーワードとして抽出する。なお、図17において斜体で示した文字列は、抽出規則1〜6において定められた、該当する構成要素の直前または直後に出現する文字列を表している。この例のように、難読化対象キーワード抽出部22は、ソースコードの記述言語に応じてあらかじめ定められた難読化対象の構成要素について、その構成要素の前または後の文字列を用いた抽出規則を記憶しておけばよい。そして、難読化対象キーワード抽出部22は、ソースコードにおいて、そのような抽出規則を用いて、難読化対象の構成要素を表す文字列を抽出すればよい。   FIG. 16 shows extraction rules 1 to 6 as an example of a rule for extracting a component defined as an obfuscation object in VHDL. The extraction rules 1 to 6 are rules for extracting a character string representing a corresponding constituent element by searching for a character string that appears immediately before or immediately after the constituent element determined as the obfuscation target. By using such a rule, the obfuscation target keyword extraction unit 22 extracts a character string shown in bold as an obfuscation target keyword, as shown in FIG. In addition, the character string shown in italics in FIG. 17 represents the character string that appears immediately before or after the corresponding component defined in the extraction rules 1 to 6. As in this example, the obfuscation target keyword extraction unit 22 uses the character string before or after the constituent elements of the obfuscation target constituent elements determined in advance according to the description language of the source code. Should be remembered. Then, the obfuscation target keyword extraction unit 22 may extract a character string representing a component to be obfuscated using such an extraction rule in the source code.

そして、ステップS33において、難読化対象キーワード抽出部22は、抽出したキーワードを並べて、図18に示す難読化リスト913を生成する。なお、図18では、図17に示した太字のキーワードの他、「en」、「ack」および「n_1」の各キーワードが、難読化リスト913に加えられている。これらのキーワードは、ソースコード912の図示されていない部分や、同時に取得された他のVHDLのソースコードから抽出されたものとする。   Then, in step S33, the obfuscation target keyword extraction unit 22 arranges the extracted keywords and generates an obfuscation list 913 shown in FIG. In FIG. 18, in addition to the bold keywords shown in FIG. 17, the keywords “en”, “ack”, and “n_1” are added to the obfuscation list 913. It is assumed that these keywords are extracted from a portion of the source code 912 that is not illustrated or other VHDL source code that is acquired at the same time.

以上で、難読化対象キーワード抽出動作の詳細な説明を終了する。   This is the end of the detailed description of the obfuscation target keyword extraction operation.

次に、ステップS4〜S5における本実施の形態での難読化リスト調整動作の詳細を図19に示す。   Next, the details of the obfuscation list adjustment operation in this embodiment in steps S4 to S5 are shown in FIG.

図19において、まず、難読化リスト調整部23は、難読化リストにおいて、キーワードを文字列長の降順に並べ替える(ステップS41)。   In FIG. 19, first, the obfuscation list adjustment unit 23 rearranges the keywords in the obfuscation list in descending order of the character string length (step S41).

次に、難読化リスト調整部23は、文字列長が閾値未満のキーワードを難読化リストから除外する(ステップS51)。   Next, the obfuscation list adjustment unit 23 excludes keywords whose character string length is less than the threshold from the obfuscation list (step S51).

次に、難読化リスト調整部23は、除外リストに含まれるキーワードを難読化リストから除外する(ステップS52)。   Next, the obfuscation list adjustment unit 23 excludes keywords included in the exclusion list from the obfuscation list (step S52).

次に、難読化リスト調整部23は、難読化リストから、予約語の部分文字列となっているキーワードを検出する(ステップS53)。   Next, the obfuscation list adjustment unit 23 detects a keyword that is a partial character string of a reserved word from the obfuscation list (step S53).

次に、難読化リスト調整部23は、ステップS53の検出結果に基づいて、難読化リストまたはソースコードを修正する(ステップS54)。   Next, the obfuscation list adjustment unit 23 corrects the obfuscation list or the source code based on the detection result of step S53 (step S54).

例えば、前述のように、難読化リスト調整部23は、検出したキーワードおよび予約語を、警告情報として出力してもよい。そして、この場合、難読化リスト調整部23は、警告情報の出力後、修正された難読化リストまたはソースコードを取得してもよい。   For example, as described above, the obfuscation list adjustment unit 23 may output the detected keyword and reserved word as warning information. In this case, the obfuscation list adjustment unit 23 may acquire the corrected obfuscation list or source code after outputting the warning information.

以上で、難読化装置2は、難読化リスト調整動作を終了する。   As described above, the obfuscation apparatus 2 ends the obfuscation list adjustment operation.

ここで、難読化リスト調整動作を具体例で示す。   Here, a specific example of the obfuscation list adjustment operation is shown.

ここでは、図17に示したソースコード912から、図18に示した難読化リスト913が抽出されているとする。   Here, it is assumed that the obfuscation list 913 shown in FIG. 18 is extracted from the source code 912 shown in FIG.

この場合、ステップS41において、難読化リスト調整部23は、難読化リスト913におけるキーワードを文字列長の降順に並べ替える。これにより、難読化リスト913は、図18に示す通り難読化リスト914となる。   In this case, in step S41, the obfuscation list adjustment unit 23 rearranges the keywords in the obfuscation list 913 in descending order of the character string length. Thereby, the obfuscation list 913 becomes the obfuscation list 914 as shown in FIG.

そして、ステップS51において、文字列長の閾値は3であるものとする。この場合、難読化リスト調整部23は、難読化リスト914から、文字列長が3未満(1または2)のキーワード「en」を除外する。これにより、難読化リスト914は、図18に示す通り難読化リスト915となる。   In step S51, the threshold value of the character string length is 3. In this case, the obfuscation list adjustment unit 23 excludes the keyword “en” whose character string length is less than 3 (1 or 2) from the obfuscation list 914. Thereby, the obfuscation list 914 becomes the obfuscation list 915 as shown in FIG.

次に、ステップS52において、除外リストには、「n_1」が含まれていたとする。この場合、難読化リスト調整部23は、難読化リスト915から、キーワード「n_1」を除外する。これにより、難読化リスト915は、図18に示す通り難読化リスト916となる。   Next, in step S52, it is assumed that “n_1” is included in the exclusion list. In this case, the obfuscation list adjustment unit 23 excludes the keyword “n_1” from the obfuscation list 915. Thereby, the obfuscation list 915 becomes an obfuscation list 916 as shown in FIG.

次に、ステップS53において、難読化リスト調整部23は、VHDLの予約語テーブルを参照する。ここでは、図20に示すような各記述言語の予約語テーブルが、メモリ1002にあらかじめ格納されているものとする。そして、難読化リスト調整部23は、難読化リスト916から、キーワード「ack」を、VHDLの予約語「package」の部分文字列として検出する。   Next, in step S53, the obfuscation list adjustment unit 23 refers to the VHDL reserved word table. Here, it is assumed that a reserved word table for each description language as shown in FIG. 20 is stored in the memory 1002 in advance. Then, the obfuscation list adjustment unit 23 detects the keyword “ack” from the obfuscation list 916 as a partial character string of the VHDL reserved word “package”.

次に、ステップS54において、難読化リスト調整部23は、“キーワード「ack」が予約語「package」の部分文字列である”という内容の警告を出力する。ここで、警告に伴い、利用者は、警告された予約語が対象のソースコードで使用されているか否かを確認し、使用されていれば、難読化リスト916から除外する編集を行う。ここでは、ソースコード912の図示されていない部分または同時に取得された他のVHDLのソースコードにおいて、予約語「package」が使用されていたものとする。その結果、利用者は、難読化リスト916を編集し、「ack」を除外したとする。その後、難読化リスト調整部23は、図18に示す通り、「ack」が除外された難読化リスト917を取得する。   Next, in step S54, the obfuscation list adjustment unit 23 outputs a warning with the content that “the keyword“ ack ”is a partial character string of the reserved word“ package ”.” Here, along with the warning, the user Confirms whether or not the reserved word that has been warned is used in the target source code, and if it is used, performs editing to exclude it from the obfuscation list 916. Here, the source code 912 is illustrated. It is assumed that the reserved word “package” is used in the missing part or other VHDL source code acquired at the same time. As a result, it is assumed that the user edits the obfuscation list 916 and excludes “ack”. Thereafter, the obfuscation list adjustment unit 23 acquires the obfuscation list 917 from which “ack” is excluded, as shown in FIG.

以上で、難読化リスト調整動作の詳細な説明を終了する。   This is the end of the detailed description of the obfuscation list adjustment operation.

次に、ステップS6における本実施の形態での難読化実行動作の詳細を図21に示す。   Next, FIG. 21 shows details of the obfuscation execution operation in the present embodiment in step S6.

図21において、難読化実行部24は、難読化リストに含まれるキーワードに対して、難無意味な文字列を対応付けて、難読化リストに含まれる順に記述した変換テーブルを生成する(ステップS61)。   In FIG. 21, the obfuscation executing unit 24 generates a conversion table in which the keywords included in the obfuscation list are associated with the insignificant character strings and described in the order included in the obfuscation list (step S61). ).

次に、難読化実行部24は、変換テーブルに基づいて、変換テーブルに記述された順にキーワードを無意味な文字列に変換する難読化変換スクリプトを生成する(ステップS62)。   Next, the obfuscation execution unit 24 generates an obfuscation conversion script that converts keywords into meaningless character strings in the order described in the conversion table based on the conversion table (step S62).

次に、難読化実行部24は、コメント情報が削除された各ソースコードに対して、難読化変換スクリプトを実行する(ステップS63)。   Next, the obfuscation executing unit 24 executes the obfuscation conversion script for each source code from which the comment information has been deleted (step S63).

以上で、難読化装置2は、難読化実行動作を終了する。   As described above, the obfuscation apparatus 2 ends the obfuscation execution operation.

ここで、難読化実行動作を具体例で示す。   Here, the obfuscation execution operation is shown as a specific example.

例えば、ステップS61において、難読化実行部24は、図18に示した難読化リスト917から、図22に示す変換テーブル918を生成する。ここでは、変換後の無意味な文字列として「KEYWORD_[連番]」が採用されている。なお、[連番]は、変換テーブルに記載される順序に基づく数値を表す。   For example, in step S61, the obfuscation executing unit 24 generates the conversion table 918 shown in FIG. 22 from the obfuscation list 917 shown in FIG. Here, “KEYWORD_ [serial number]” is adopted as a meaningless character string after conversion. [Sequence number] represents a numerical value based on the order described in the conversion table.

次に、ステップS62において、難読化実行部24は、変換テーブル918に基づいて、図23に示す難読化変換スクリプト919を生成する。ここでは、難読化変換スクリプトの記述言語としては、C Shellが採用されている。ただし、難読化変換スクリプト919は、処理対象のテキストファイルにおいて、変換テーブル918に記載された順に、キーワードを無意味な文字列に全て置換する処理を実行する内容であれば、どのような記述言語で記載されたものであってもよい。   Next, in step S62, the obfuscation executing unit 24 generates the obfuscation conversion script 919 shown in FIG. 23 based on the conversion table 918. Here, C Shell is adopted as the description language of the obfuscation conversion script. However, the obfuscation conversion script 919 can be any description language as long as it is a content that executes processing for replacing all keywords with meaningless character strings in the order described in the conversion table 918 in the text file to be processed. It may be described in.

次に、ステップS63において、難読化実行部24は、図17に示したVHDLのソースコード912に対して、図23に示した難読化変換スクリプト919を実行する。これにより、図24に示すように、難読化後のソースコード920が生成される。   In step S63, the obfuscation executing unit 24 executes the obfuscation conversion script 919 shown in FIG. 23 on the VHDL source code 912 shown in FIG. Thereby, as shown in FIG. 24, the obfuscated source code 920 is generated.

以上で、難読化実行動作の詳細な説明を終了する。   This is the end of the detailed description of the obfuscation execution operation.

次に、本発明の第2の実施の形態の効果について述べる。   Next, the effect of the second exemplary embodiment of the present invention will be described.

本発明の第2の実施の形態としての難読化装置は、元のソースコードから秘密情報をさらに適切に削除しながら、元のソースコードに対して設計内容が等価なソースコードを自動生成することができる。   The obfuscation apparatus according to the second embodiment of the present invention automatically generates source code equivalent in design content to the original source code while further appropriately deleting the secret information from the original source code. Can do.

その理由について説明する。本実施の形態では、コメント情報削除部が、対象のソースコードにおけるコメント情報のうち、所定の条件を満たすもの以外を削除するからである。これにより、本実施の形態は、コメントの形式で記載されるディレクティブ記述等の有用な情報を削除することなく、秘密情報を含み得る他のコメント情報を削除できる。   The reason will be described. This is because in the present embodiment, the comment information deletion unit deletes comment information in the target source code other than the one that satisfies a predetermined condition. As a result, this embodiment can delete other comment information that may contain confidential information without deleting useful information such as a directive description described in the comment format.

また、本実施の形態では、難読化対象キーワード抽出部が、ソースコードを所定の記述スタイルに整形してから、記述言語の所定の構成要素を表す文字列を、難読化対象となるキーワードとして抽出するからである。これにより、本実施の形態は、対象のソースコードがどのような記述スタイルであっても、秘密情報を含み得る構成要素を表す文字列を確実に抽出して難読化リストを生成できる。   In this embodiment, the obfuscation target keyword extraction unit shapes the source code into a predetermined description style, and then extracts a character string representing a predetermined component of the description language as a keyword to be obfuscated. Because it does. Thus, according to the present embodiment, an obfuscation list can be generated by reliably extracting a character string representing a constituent element that can include confidential information, regardless of the description style of the target source code.

また、本実施の形態では、難読化リスト調整部が、文字列長が閾値未満のキーワードを難読化リストから除外するからである。これにより、本実施の形態は、記述言語の予約語に含まれる確率の高いキーワードを除外するので、難読化後のソースコードでの構文エラーの発生を防止する。なお、本実施の形態は、このように文字列長が充分に短いキーワードを除外しても、そのようなキーワードは秘密情報を含むことが難しいため、難読化の結果に影響を与えない。   Moreover, in this Embodiment, it is because an obfuscation list adjustment part excludes the keyword whose character string length is less than a threshold value from an obfuscation list. As a result, the present embodiment excludes keywords that have a high probability of being included in the reserved words of the description language, thereby preventing occurrence of syntax errors in the obfuscated source code. In the present embodiment, even if a keyword having a sufficiently short character string length is excluded as described above, it is difficult for such a keyword to contain confidential information, so that the obfuscation result is not affected.

また、本実施の形態では、難読化リスト調整部が、除外リストに含まれるキーワードを難読化リストから除外するからである。これにより、本実施の形態は、所定の構成要素を表す文字列を一律に変換してしまうことがないため、対象案件毎に柔軟な対応が可能となる。   Moreover, in this Embodiment, it is because the obfuscation list adjustment part excludes the keyword contained in an exclusion list from an obfuscation list. Thereby, since this Embodiment does not convert the character string showing a predetermined component uniformly, it can respond flexibly for every object case.

また、本実施の形態では、難読化リスト調整部が、難読化リストに含まれるキーワードのうち記述言語の予約語の部分文字列となっているキーワードを検出する。そして、難読化リスト調整部が、検出結果に基づいて難読化リストまたはソースコードを修正するからである。これにより、本実施の形態は、難読化リストに、ソースコードで用いられている予約語の部分文字列となっているキーワードを含むことがなく、難読化後のソースコードでの構文エラーの発生を防止する。   Further, in the present embodiment, the obfuscation list adjustment unit detects a keyword that is a partial character string of a reserved word in a description language among keywords included in the obfuscation list. This is because the obfuscation list adjustment unit corrects the obfuscation list or the source code based on the detection result. As a result, in the present embodiment, the obfuscation list does not include a keyword that is a partial character string of a reserved word used in the source code, and a syntax error occurs in the obfuscated source code. To prevent.

上述してきたように、本実施の形態は、LSI開発時の不具合の解析をデバイスベンダやEDAベンダに依頼する際に支給するデザインを準備するための工数と期間を圧倒的に短縮する。しかも、本実施の形態により自動的に難読化されたソースコードは、難読化リスト調整部によって各種調整がなされた難読化リストに基づいて生成されているため、構文エラーを起こす可能性および秘密情報が残っている可能性が少ない。   As described above, the present embodiment greatly reduces the man-hours and the period for preparing a design to be supplied when requesting device vendors or EDA vendors to analyze defects during LSI development. In addition, since the source code automatically obfuscated by this embodiment is generated based on the obfuscation list that has been subjected to various adjustments by the obfuscation list adjustment unit, there is a possibility of causing a syntax error and confidential information. Is less likely to remain.

また、本実施の形態は、難読化ソースコードを自動的に生成することで、手作業で修正していた際に発生していた変更ミスやそれに費やすイタレーション等の発生を減らし、難読化後のソースコードの品質自体を向上させる。その結果、本実施の形態は、難読化後のソースコードを用いて通常のLSI設計フローで開発を進めることを可能とする。   In addition, the present embodiment automatically generates obfuscated source code to reduce the occurrence of change mistakes and iterations spent on manual correction, and after obfuscation. Improve the quality of the source code itself. As a result, the present embodiment makes it possible to proceed with development in a normal LSI design flow using the obfuscated source code.

また、本実施の形態は、テキストベースでの変換アルゴリズムを採用しているため、プログラミング言語やアプリケーションデータベースに依存することのない実装が可能であり、汎用性が非常に高い。   Further, since this embodiment employs a text-based conversion algorithm, it can be implemented without depending on a programming language or an application database, and is very versatile.

なお、本実施の形態において、難読化リスト調整部が、難読化リストにおいて予約語の部分文字列となっているキーワードを検出すると、検出したキーワードおよび予約語を警告情報として出力する例について説明した。これにより、難読化リスト調整部は、警告情報に対応して入力される情報に基づいて、難読化リストまたはソースコードを修正するものとして説明した。これにより、本実施の形態は、対象のソースコードにおいて、検出したキーワードを含む予約語が使用されているか否かを解析していない。本実施の形態は、解析しないことにより、解析にかかるコストを節約している。ただし、これに限らず、難読化リスト調整部は、対象のソースコード内で、検出したキーワードを含む予約語が使用されているか否かを解析してもよい。その場合、難読化リスト調整部は、ソースコード内で使用されている予約語およびその部分文字列となっているキーワードを、警告情報として出力してもよい。あるいは、この場合、難読化リスト調整部は、ソースコード内で使用されている予約語およびその部分文字列となっているキーワードを、難読化リストから削除する処理を行ってもよい。   In the present embodiment, an example has been described in which the obfuscation list adjustment unit outputs the detected keyword and reserved word as warning information when it detects a keyword that is a partial character string of the reserved word in the obfuscation list. . Accordingly, the obfuscation list adjustment unit has been described as correcting the obfuscation list or the source code based on information input corresponding to the warning information. As a result, the present embodiment does not analyze whether or not a reserved word including the detected keyword is used in the target source code. This embodiment saves the cost of analysis by not analyzing. However, the present invention is not limited thereto, and the obfuscation list adjustment unit may analyze whether or not a reserved word including the detected keyword is used in the target source code. In this case, the obfuscation list adjustment unit may output the reserved word used in the source code and the keyword that is the partial character string as warning information. Alternatively, in this case, the obfuscation list adjustment unit may perform processing for deleting the reserved word used in the source code and the keyword that is the partial character string from the obfuscation list.

また、本実施の形態において、難読化リスト調整部は、警告情報の出力に限らず、その他の手法により、難読化リストまたはソースコードを修正してもよい。例えば、難読化リスト調整部は、検出したキーワードおよび予約語を、それぞれを除外するか否かを選択入力可能に出力してもよい。そして、難読化リスト調整部は、入力される選択情報が除外することを示す場合に、難読化リストから該当するキーワードを除外してもよい。いずれにしても、難読化リスト調整部は、難読化リストに、対象のソースコードで使用されている予約語の部分文字列となっているキーワードを含まないように、難読化リストまたはソースコードの修正を行えばよい。   In the present embodiment, the obfuscation list adjustment unit may correct the obfuscation list or the source code not only by outputting the warning information but also by other methods. For example, the obfuscation list adjustment unit may output whether or not to exclude the detected keyword and reserved word so as to be selectively input. Then, the obfuscation list adjustment unit may exclude the corresponding keyword from the obfuscation list when the input selection information indicates that it is excluded. In any case, the obfuscation list adjustment unit makes sure that the obfuscation list or the source code of the obfuscation list does not include the keyword that is a partial character string of the reserved word used in the target source code. You only have to make corrections.

また、本実施の形態において、コメント情報削除部が、コメント情報であっても削除しない情報として、合成ツールによって解釈されるディレクティブ記述を例として説明した。これに限らず、コメント情報削除部は、コメント情報であっても削除しないことが望ましい他の有用な情報を削除除外対象としてもよい。   Further, in the present embodiment, description has been made by taking, as an example, a directive description interpreted by the synthesis tool as information that the comment information deletion unit does not delete even comment information. However, the comment information deletion unit is not limited to this, and may use other useful information that should not be deleted even if it is comment information.

また、本実施の形態において、難読化対象キーワード抽出部が、ソースコードの記述スタイルを所定のスタイルに整形する処理として、改行タイミングを統一する例について説明した。これに限らず、難読化対象キーワード抽出部は、所定の構成要素を表す文字列を確実に抽出するための他の整形を行ってもよい。   Further, in the present embodiment, the example in which the obfuscation target keyword extraction unit unifies the line feed timing as a process of shaping the description style of the source code into a predetermined style has been described. Not only this but the obfuscation object keyword extraction part may perform other shaping for extracting the character string showing a predetermined component reliably.

また、上述した本発明の各実施の形態において、難読化リストおよび難読化変換スクリプトが、記述言語毎に作成される例について説明した。さらに、各実施の形態において、難読化リストおよび難読化変換スクリプトは、同一の記述言語のソースコード群のうち指定されたソースコード群毎に生成されてもよい。   Moreover, in each embodiment of the present invention described above, an example in which the obfuscation list and the obfuscation conversion script are created for each description language has been described. Further, in each embodiment, the obfuscation list and the obfuscation conversion script may be generated for each designated source code group among source code groups of the same description language.

また、上述した本発明の各実施の形態において、ハードウェア記述言語で記述されたソースコードを対象とする例を中心に説明した。これに限らず、各実施の形態は、ソフトウェアを実行するプログラムのソースコードを難読化する場合にも適用可能である。   Further, in each of the above-described embodiments of the present invention, the description has been made centering on an example for a source code described in a hardware description language. Not only this but each embodiment is applicable also when obfuscating the source code of the program which performs software.

また、上述した本発明の各実施の形態において、難読化装置の各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。   Further, in each of the above-described embodiments of the present invention, the example in which each functional block of the obfuscation apparatus is realized by a CPU that executes a computer program stored in a storage device or ROM has been described. However, the present invention is not limited to this, and some, all, or a combination of each functional block may be realized by dedicated hardware.

また、上述した本発明の各実施の形態において、難読化装置の機能ブロックは、複数の装置に分散されて実現されてもよい。   Moreover, in each embodiment of the present invention described above, the functional blocks of the obfuscation apparatus may be realized by being distributed among a plurality of apparatuses.

また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した難読化装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータの記憶装置(記憶媒体)に格納しておく。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。   In each of the embodiments of the present invention described above, the operation of the obfuscation apparatus described with reference to the flowcharts is stored in a storage device (storage medium) of the computer as a computer program of the present invention. Then, the computer program may be read and executed by the CPU. In such a case, the present invention is constituted by the code of the computer program or a storage medium.

また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。   Moreover, each embodiment mentioned above can be implemented in combination as appropriate.

また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。   The present invention is not limited to the above-described embodiments, and can be implemented in various modes.

本発明は、元のソースコードから秘密情報を削除した等価なソースコードを、より適切に自動生成する技術を提供することができ、LSI開発時のRTL設計フローにおいてデザインを表すソースコードを難読化する装置として好適である。また、本発明は、ソフトウェアのソースコードを難読化する装置としても好適である。   The present invention can provide a technique for more appropriately automatically generating equivalent source code in which secret information is deleted from the original source code, and obfuscate the source code representing the design in the RTL design flow at the time of LSI development. It is suitable as a device to perform. The present invention is also suitable as an apparatus for obfuscating software source code.

1、2 難読化装置
11、21 コメント情報削除部
12、22 難読化対象キーワード抽出部
13、23 難読化リスト調整部
14、24 難読化実行部
1001 CPU
1002 メモリ
1003 出力装置
1004 入力装置
1, 2 Obfuscation device 11, 21 Comment information deletion unit 12, 22 Obfuscation target keyword extraction unit 13, 23 Obfuscation list adjustment unit 14, 24 Obfuscation execution unit 1001 CPU
1002 Memory 1003 Output device 1004 Input device

Claims (9)

ソースコードからコメントを表すコメント情報を削除するコメント情報削除部と、
前記ソースコードから、前記ソースコードの記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成する難読化対象キーワード抽出部と、
前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外する難読化リスト調整部と、
前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する難読化実行部と、
を備えた難読化装置。
A comment information deletion unit for deleting comment information representing a comment from the source code;
An obfuscation target keyword extraction unit that extracts a character string representing a predetermined type of component in the description language of the source code as an obfuscation target keyword to generate an obfuscation list;
Reordering the keywords in descending order of the character string length in the obfuscation list, and obfuscation list adjustment unit for excluding keywords satisfying a predetermined condition from the obfuscation list;
In the source code from which the comment information has been deleted, an obfuscation execution unit that executes processing for converting a keyword included in the obfuscation list into another character string in the order included in the obfuscation list;
Obfuscation device with
前記コメント情報削除部は、前記ソースコードから、前記コメント情報のうち所定の条件を満たすもの以外を削除することを特徴とする請求項1に記載の難読化装置。   The obfuscation apparatus according to claim 1, wherein the comment information deletion unit deletes the comment information other than a condition that satisfies a predetermined condition from the source code. 前記難読化対象キーワード抽出部は、前記ソースコードの記述スタイルを所定のスタイルに整形してから、前記難読化対象のキーワードを抽出することを特徴とする請求項1または請求項2に記載の難読化装置。   3. The obfuscation target keyword extracting unit according to claim 1, wherein the obfuscation target keyword extracting unit extracts the obfuscation target keyword after shaping the description style of the source code into a predetermined style. Device. 前記難読化リスト調整部は、前記難読化リストから、文字列長が閾値未満のキーワードを除外することを特徴とする請求項1から請求項3のいずれか1項に記載の難読化装置。   The obfuscation apparatus according to claim 1, wherein the obfuscation list adjustment unit excludes a keyword having a character string length less than a threshold from the obfuscation list. 前記難読化リスト調整部は、前記難読化リストから、除外リストに含まれるキーワードを除外することを特徴とする請求項1から請求項4のいずれか1項に記載の難読化装置。   The obfuscation apparatus according to any one of claims 1 to 4, wherein the obfuscation list adjustment unit excludes keywords included in an exclusion list from the obfuscation list. 前記難読化リスト調整部は、前記記述言語の予約語の部分文字列となっているキーワードを検出し、検出結果に基づき前記難読化リストまたは前記ソースコードを修正することを特徴とする請求項1から請求項5のいずれか1項に記載の難読化装置。   The obfuscation list adjustment unit detects a keyword that is a partial character string of a reserved word of the description language, and corrects the obfuscation list or the source code based on a detection result. The obfuscation apparatus according to claim 5. 前記難読化実行部は、前記難読化リストに含まれるキーワードを、前記難読化リストに含まれる順に他の文字列に変換する難読化変換スクリプトを生成し、生成した難読化変換スクリプトを、前記コメント情報が削除されたソースコードに対して実行することを特徴とする請求項1から請求項6のいずれか1項に記載の難読化装置。   The obfuscation execution unit generates an obfuscation conversion script that converts a keyword included in the obfuscation list into another character string in the order included in the obfuscation list, and generates the obfuscation conversion script as the comment The obfuscation apparatus according to claim 1, wherein the obfuscation apparatus is executed on the source code from which the information has been deleted. コンピュータ装置が、ソースコードからコメントを表すコメント情報を削除し、
前記ソースコードから、前記ソースコードの記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成し、
前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外し、
前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する方法。
The computer device deletes the comment information representing the comment from the source code,
From the source code, a character string representing a predetermined type of component in the description language of the source code is extracted as an obfuscation target keyword to generate an obfuscation list,
Rearranging the keywords in descending order of the string length in the obfuscation list, excluding keywords that satisfy a predetermined condition from the obfuscation list,
A method of executing processing for converting a keyword included in the obfuscation list into another character string in the source code from which the comment information has been deleted, in the order included in the obfuscation list.
ソースコードからコメントを表すコメント情報を削除するコメント情報削除ステップと、
前記ソースコードから、前記ソースコードの記述言語における所定種類の構成要素を表す文字列を難読化対象のキーワードとして抽出して難読化リストを生成する難読化対象キーワード抽出ステップと、
前記難読化リストにおいて前記キーワードを文字列長の降順に並び替えるとともに、前記難読化リストから所定の条件を満たすキーワードを除外する難読化リスト調整ステップと、
前記コメント情報が削除されたソースコードにおいて、前記難読化リストに含まれるキーワードを他の文字列に変換する処理を、前記難読化リストに含まれる順に実行する難読化実行ステップと、
をコンピュータ装置に実行させるプログラム。
A comment information deletion step for deleting comment information representing a comment from the source code;
An obfuscation target keyword extraction step of extracting a character string representing a predetermined type of component in the description language of the source code as an obfuscation target keyword to generate an obfuscation list;
Reordering the keywords in descending order of character string length in the obfuscation list, and obfuscation list adjustment step of excluding keywords satisfying a predetermined condition from the obfuscation list;
In the source code from which the comment information has been deleted, an obfuscation execution step of executing processing for converting a keyword included in the obfuscation list into another character string in the order included in the obfuscation list;
That causes a computer device to execute the program.
JP2015183638A 2015-09-17 2015-09-17 Obfuscation device, method and program Active JP6578841B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015183638A JP6578841B2 (en) 2015-09-17 2015-09-17 Obfuscation device, method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015183638A JP6578841B2 (en) 2015-09-17 2015-09-17 Obfuscation device, method and program

Publications (2)

Publication Number Publication Date
JP2017058994A JP2017058994A (en) 2017-03-23
JP6578841B2 true JP6578841B2 (en) 2019-09-25

Family

ID=58391593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015183638A Active JP6578841B2 (en) 2015-09-17 2015-09-17 Obfuscation device, method and program

Country Status (1)

Country Link
JP (1) JP6578841B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110952B (en) * 2021-04-09 2024-10-18 北京沃东天骏信息技术有限公司 Method and device for acquiring SDK abnormal information in application program
WO2024158426A1 (en) * 2023-01-24 2024-08-02 Siemens Industry Software Inc. Circuit design data obfuscation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005063121A (en) * 2003-08-11 2005-03-10 Ricoh Co Ltd Device, method and program for converting source code and storage medium
JP4776172B2 (en) * 2004-02-17 2011-09-21 株式会社リコー Security method for LSI design and manufacturing system
US7437698B2 (en) * 2005-11-30 2008-10-14 Freescale Semiconductor, Inc. Method and program product for protecting information in EDA tool design views

Also Published As

Publication number Publication date
JP2017058994A (en) 2017-03-23

Similar Documents

Publication Publication Date Title
JP2003006255A (en) Hdl automatic correction device and hdl automatic correction program and computer readable storage medium recording the program therefor
US10261884B2 (en) Method for correcting violation of source code and computer readable recording medium having program performing the same
CN104809072A (en) Automatic mensurability design method of Perl-based EDIF netlist-grade circuit automatic mensurability design system
JP6578841B2 (en) Obfuscation device, method and program
US10956659B1 (en) System for generating templates from webpages
JP4586864B2 (en) Automatic property generator
CN109947711B (en) Automatic multi-language file management method in IOS project development process
JP5747698B2 (en) Requirements management support device
JP5293521B2 (en) Design rule check verification apparatus and design rule check verification method
JP4888790B2 (en) Contract definition function verification apparatus, method and program thereof
JP2004126866A (en) Description output suppression program analysis system and description output suppression program analysis method
JP7211139B2 (en) Review method, information processing device and review program
JP6502044B2 (en) Data analysis device, data analysis method, and program.
US12001324B2 (en) Operation pattern generation apparatus, operation pattern generation method and program
JPWO2006025412A1 (en) Logic verification method, logic module data, device data, and logic verification apparatus
JP7247593B2 (en) Generation device, software robot system, generation method and generation program
JP5578625B2 (en) Program analysis apparatus, program analysis method, and program
JP6018539B2 (en) Information processing apparatus, information processing method, and program
JP5123350B2 (en) Test case creation system, method and program
JP2016173756A (en) Test case generation program, test case generation method, and test case generation device
US7634750B2 (en) Logic diagram display method, program, and apparatus
JP6018538B2 (en) Information processing apparatus, information processing method, and program
JP6268062B2 (en) Software specification extraction apparatus, method, and program
JP2004234402A (en) Web screen creating tool and term checking tool
WO2023026409A1 (en) Information processing device, program, and information processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190711

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: 20190730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190812

R150 Certificate of patent or registration of utility model

Ref document number: 6578841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150