説明

ログ情報漏洩防止方法およびログ情報漏洩防止装置

【課題】プログラムの実行性能と出荷後の障害解析に支障を来たすことなくログ情報の漏洩を防止できない。
【解決手段】実行ファイル生成部2は、ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、ログデータに加えて、ユニークなログ識別IDが各ログ出力位置に記載されたソースコード1からログ文字列を除いた実行プログラム3生成する。ログ対応シート生成部5はログ文字列とログ識別IDの対をリストアップしたログ対応シート6をソースコード1から生成する。ログ可読化部7はログ識別IDを介して、ログ対応シート6におけるログ文字列と出力ログファイル4aにおけるログデータを結び付けて可読化後ログファイル8を生成する。

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

【特許請求の範囲】
【請求項1】
ソースコード上の可読性の高いログ文字列を前記ソースコード内でユニークにID化した実行プログラムを生成し、別途、前記ログ文字列と前記IDの対応リストを前記ソースコードから生成しておき、前記実行プログラムの実行によるログ採取後に、前記対応リストを使用して前記IDを共通項とし、採取したログの可読性を高めるように再編することを特徴とするログ情報漏洩防止方法。
【請求項2】
ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別IDを前記ソースコードの各ログ出力位置に記載しておく手順と、
前記ソースコードから前記ログ文字列を除いた実行プログラムを生成する手順と、
前記実行プログラムをコンピュータが実行して出力ログファイルを得る手順と、
前記ログ文字列とログ識別IDの対をリストアップしたログ対応シートを前記ソースコードから生成しておく手順と、
前記ログ識別IDを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成する手順を有することを特徴とするログ情報漏洩防止方法。
【請求項3】
ログデータ解析に必要な可読性の高いテキスト形式のログ文字列と、メモリや変数などのログデータに加えて、前記ログ出力位置を特定しソースコード内でユニークなログ識別IDが各ログ出力位置に記載されたソースコードから前記ログ文字列を除いた実行プログラムを生成する実行ファイル生成部と、
前記実行プログラムをコンピュータが実行して得られる出力ログファイルと、
前記ログ文字列とログ識別IDの対をリストアップしたログ対応シートを前記ソースコードから生成しておくログ対応シート生成部と、
前記ログ識別IDを介して、前記ログ対応シートにおけるログ文字列と前記出力ログファイルにおけるログデータを結び付けて可読化後ログファイルを生成するログ可読化部を有することを特徴とするログ情報漏洩防止装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate