(57)【特許請求の範囲】
【請求項１】
ソースコード上の可読性の高いログ文字列を前記ソースコード内でユニークにＩＤ化した実行プログラムを生成し、別途、前記ログ文字列と前記ＩＤの対応リストを前記ソースコードから生成しておき、前記実行プログラムの実行によるログ採取後に、前記対応リストを使用して前記ＩＤを共通項とし、採取したログの可読性を高めるように再編することを特徴とするログ情報漏洩防止方法。
【請求項２】
ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別ＩＤを前記ソースコードの各ログ出力位置に記載しておく手順と、
前記ソースコードから前記ログ文字列を除いた実行プログラムを生成する手順と、
前記実行プログラムをコンピュータが実行して出力ログファイルを得る手順と、
前記ログ文字列とログ識別ＩＤの対をリストアップしたログ対応シートを前記ソースコードから生成しておく手順と、
前記ログ識別ＩＤを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成する手順を有することを特徴とするログ情報漏洩防止方法。
【請求項３】
ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別ＩＤが各ログ出力位置に記載されたソースコードから前記ログ文字列を除いた実行プログラムを生成する実行ファイル生成部と、
前記実行プログラムをコンピュータが実行して得られる出力ログファイルと、
前記ログ文字列とログ識別ＩＤの対をリストアップしたログ対応シートを前記ソースコードから生成しておくログ対応シート生成部と、
前記ログ識別ＩＤを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成するログ可読化部を有することを特徴とするログ情報漏洩防止装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ情報漏洩防止、特に、ソフトウェアプログラム開発者によってデバッグ・障害解析のためにプログラム中に埋め込まれたログ情報が、出荷後に不特定ユーザにより不正に読み出され、ログ情報漏洩や不正改ざんされることを防止するログ情報漏洩防止方法およびログ情報漏洩防止装置に関する。
【背景技術】
【０００２】
通常、多くのソフトウェアプログラムは、開発段階でのデバッグ、評価段階の障害調査、製品出荷後のユーザ障害調査を行うための手段を有するが、主なものとして、メモリ参照型とログ採取型が周知である。
【０００３】
メモリ参照型としては、デバッグツールを用いてステップ実行やブレークポイントを駆使してメモリ内容の妥当性を確認していく方法と、障害発生時のメモリダンプをファイルしてメモリの状態から障害原因を解析する方法が代表的である。前者は開発段階のデバッグとしては非常に強力だが、システム評価段階や出荷後の障害調査には向かない。また、後者もスナップショット的な情報となるため、障害解析に最も効果的な障害発生経緯につながる情報を見出し難い。
【０００４】
一方、ログ採取型は、ソフトウェアプログラム中に予め埋め込んでおいたログ情報をプログラム実行に応じてメモリやファイルに蓄積していく手法であって、printf()などが代表例といえる。この方法は、特殊なデバッグツールなどを用いる必要がないため、システム評価や出荷後のユーザ環境など、開発環境を離れた場合でも障害情報を得ることができ、障害解析に非常に有効な手段となっているが、ソフトウェアプログラム中やログ中に可読性の高い情報が含まれてしまうため、そのまま出荷してしまうと不特定ユーザにログ情報が漏洩してしまうというリスクがある。
【０００５】
図４は、従来のログ採取型の仕組みを示している。ソースコード（ソースプログラム）１には、各ログ出力箇所にログ情報が記載されている。ログ情報は、ログデータ解析に必要な可読性の高いテキスト形式のログ文字列αと、メモリや変数などのログデータγとから成る。実行ファイル３は、ソースプログラムをそのままビルドした実行プログラムを保持し、ログ文字列αとログデータγが含まれる。実行プログラムを実行させた結果を保持する出力ログファイル４にも同様にログ文字列αとログデータγが含まれる。
【０００６】
実行ファイル３や出力ログファイル４は、出荷後不特定ユーザの目に触れる可能性があり、誰でも簡単にプログラムの実行経緯やログデータγの意味をデバッグ文字列αによって容易に推測できてしまうため、不特定ユーザへの情報漏洩リスクが高くなってしまう。このリスクを回避しようとして、埋め込んでおいたログ情報を出荷と同時にソフトウェアプログラムから取り外してしまうと、出荷後の障害解析が困難となったり、出荷前後でプログラムが変わってしまいタイミング問題なども発生しかねない。
【０００７】
また、プログラムコード自体を暗号化しておき、復号化しながら実行する形式にして外部からの読み出しを防御した場合も、プログラムの実行性能などの悪化につながるため、特にリアルタイム性を重視するプログラムでは致命傷ともなり得る（以上、文献公知発明に係るものではない）。なお、情報漏洩を防止するためにログファイルを暗号化する技術が特許公報に開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−０１５６５５
【特許文献２】特開２０１０−１２８９０１
【発明の概要】
【発明が解決しようとする課題】
【０００９】
解決しようとする問題点は、プログラムの実行性能と出荷後の障害解析に支障を来たすことなく、ログ情報の漏洩を防止できない点である。
【課題を解決するための手段】
【００１０】
本発明は、ログ情報の漏洩を防止するため、ログ識別ＩＤ値を介して不特定多数ユーザからはログ文字列を秘匿することを最も主要な特徴とする。
【発明の効果】
【００１１】
本発明のログ情報漏洩防止方法およびログ情報漏洩防止装置は、実行プログラム中に可読性の低いログ文字列を埋め込むため、実行プログラムおよび出力ログから不特定ユーザにログ情報が漏洩することを防ぐことができると共に、プログラム開発者側では可読性の低いログ文字列を可読性の高いログ文字列に変換できるテーブルを持つため、ソースコードのデバッグに支障を来たさないという利点を有する。
【００１２】
その上、実行プログラムに可読性の高いテキスト文字列が埋め込まれないため、プログラムサイズを小さくでき、プログラム実行性能の改善やログ収集量が期待できる。
【図面の簡単な説明】
【００１３】
【図１】本発明におけるログ採取の仕組みを説明するためのブロック図である。
【図２】可読性の高いログと低いログを例示する図である。
【図３】ソースコードから抽出するログ対応シートのフォーマット図である。
【図４】従来のログ採取の仕組みを説明するためのブロック図である。
【発明を実施するための形態】
【００１４】
本発明は、ソースコードの各ログ出力箇所に、ログデータ解析に必要な可読性の高いテキスト形式のログ文字列、ユニークなログ識別ＩＤ、およびメモリや変数などのログデータを記載しておき、実行プログラムにはログ識別ＩＤとログデータだけが組み込まれるようにすることで不特定多数ユーザが実行プログラムおよび出力ログからログ情報を読み出すことを回避する手段を有し、同時に、採取されたログデータをログ識別ＩＤに対応するログ文字列を導く仕組みを有することでプログラム開発者側だけにログデータの可読性を高めることを実現した。
【実施例】
【００１５】
以下、本発明の実施例について図面を参照して詳細に説明する。図１は、本発明におけるログ採取の仕組みを示している。
【００１６】
プログラム開発者は、ソースコード１の各ログ出力位置に、ログデータ解析に必要な可読性の高いテキスト形式のログ文字列αと、メモリや変数などのログデータγに加えて、ユニークなログ識別ＩＤβを記載しておく。例えば、ログ文字列αは、「・・・を解読するための暗証番号」、ログ識別ＩＤβは「0x35120028」、ログデータγは「12345678」である。この例では、ログ文字列αとログデータγとから、「・・・を解読するための暗証番号は12345678」という情報を得ることができる。ログ識別ＩＤ値βは、このような情報を不特定ユーザから隠蔽する役目を担う。
【００１７】
ログ識別ＩＤ値βはログ出力位置を特定する。従って、ログ識別ＩＤ値βの割り当てルールは全ソースコード１内で一意となることだけである。例えば、ソースファイル毎、かつ関数毎にログ識別ＩＤβの割り当てを分配すれば、ソースコード１の規模が大きな開発でも値がだぶることなく管理できる。これによってログ識別ＩＤからソースコード位置を特定し、ソースコードデバッグを実現することができる。
【００１８】
実行ファイル生成部２は、ソースコード１から、ログ文字列αを除いた実行プログラムを保持する実行ファイル３を生成する。即ち、実行ファイル生成部２は、ソースコード１からログ文字列αを一旦削除した中間ファイルを生成して実行ファイル３にビルドする。処理系によっては定義名の置き換えによってデバッグ文字列αを抜き取ることも可能である。
【００１９】
この結果、実行ファイル３に含まれるログ情報は、ログ識別ＩＤβとログデータγのみであってデバッグ文字列が存在しないため、不特定ユーザがバイナリエディタなどで実行ファイル３の中身を覗いても、意味のある情報を読み出されるリスクは大きく改善できる。
【００２０】
更に、実行プログラムがコンピュータによって実行された結果により得られる出力ログファイル４ａも、ログ文字列αを含まないため情報漏えいリスクを抑えることができる。出力ログファイル４は、不特定ユーザの目に触れる可能性があるが、上例によれば、ログ識別ＩＤβ「0x35120028」とログデータγ「12345678」を読み出せる可能性はあるが、それが「・・・を解読するための暗証番号は12345678」という情報と解釈することは不特定ユーザにとって困難である。このようにして、ログ情報の不特定ユーザへの漏洩を防止することができる。図２には、上述の可読性の高いログ（ａ）と可読性の低いログ（ｂ）を示している。
【００２１】
一方、プログラム開発者は、ログ対応シート生成部５により、ソースコード１から開発者内部情報としてログ対応シート６を生成しておく。ログ対応シート６は、図３に示すように、ソースコード１の各ログ出力位置のログ文字列αとログ識別ＩＤβの対をリストアップしたテーブル情報であり、開発者のみが参照できる。図３では、ログ出力位置はソースファイル名（行番号）として示されているので、ソースコードデバッグを強力にサポートすることも可能となる。
【００２２】
ログ可読化部７は、出力ログファイル４ａとログ対応シート６を入力して可読化後ログファイル８を生成する。詳しくは、共通のログ識別ＩＤβを介して、ログ対応シート６におけるログ文字列αと、出力ログファイル４ａにおけるログデータγを結び付ける。この結果、可読化後ログファイル８は、各ログ出力位置のログ文字列αとログデータγからなり、図４に示した出力ログファイル４と同等の可読性を有することになる。先の例で言えば、「・・・を解読するための暗証番号は12345678」という情報を得ることができる。
【００２３】
本発明によれば、不特定ユーザ側には可読ログ情報（テキスト）を一切見せないことで完全に情報を隠蔽しながら、開発者は、従来と同等程度に可読性を確保できる。更に、プログラム中にログ文字列αを含まないので、実行ファイルのサイズが小さくでき、また、出力されるログは、ログ文字列αに代わって、それより遥かに小さいログ識別ＩＤβを含むので、ログ採取による性能への影響を大きく改善し、またはログ採取量を増やすことができるという効果も併せもつ。
【００２４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００２５】
（付記１）ソースコード上の可読性の高いログ文字列を前記ソースコード内でユニークにＩＤ化した実行プログラムを生成し、別途、前記ログ文字列と前記ＩＤの対応リストを前記ソースコードから生成しておき、前記実行プログラムの実行によるログ採取後に、前記対応リストを使用して前記ＩＤを共通項とし、採取したログの可読性を高めるように再編することを特徴とするログ情報漏洩防止方法。
【００２６】
（付記２）ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別ＩＤを前記ソースコードの各ログ出力位置に記載しておく手順と、前記ソースコードから前記ログ文字列を除いた実行プログラムを生成する手順と、前記実行プログラムをコンピュータが実行して出力ログファイルを得る手順と、前記ログ文字列とログ識別ＩＤの対をリストアップしたログ対応シートを前記ソースコードから生成しておく手順と、前記ログ識別ＩＤを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成する手順を有することを特徴とするログ情報漏洩防止方法。
【００２７】
（付記３）ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別ＩＤが各ログ出力位置に記載されたソースコードから前記ログ文字列を除いた実行プログラムを生成する実行ファイル生成部と、前記実行プログラムをコンピュータが実行して得られる出力ログファイルと、前記ログ文字列とログ識別ＩＤの対をリストアップしたログ対応シートを前記ソースコードから生成しておくログ対応シート生成部と、前記ログ識別ＩＤを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成するログ可読化部を有することを特徴とするログ情報漏洩防止装置。
【産業上の利用可能性】
【００２８】
本発明によれば、特にリアルタイム性を必要とするプログラムに好適である。また、ログ対応シートを使い分けることで、ユーザ毎の参照レベルをコントロールするような用途にも適用可能である。
【符号の説明】
【００２９】
１      ソースコード
２      実行ファイル生成部
３      実行ファイル
４      出力ログファイル
５      ログ対応シート生成部
６      ログ対応シート
７      ログ可読化部
８      可読化後ログファイル
４ａ    出力ログファイル
α      ログ文字列
β      ログ識別ＩＤ
γ      ログデータ
【図１】
0005371122.tif 000002
【図２】
0005371122.tif 000003
【図３】
0005371122.tif 000004
【図４】
0005371122.tif 000005