FineArt News

ソースコードはソフトウェア開発会社にとって貴重な資産で、通常はバージョン管理ソフトウェアを使って、ソースコードと関連ドキュメントをサーバに保存します。また、履歴とバージョン比較が必要なので、平文で保存せざるを得ません。さらに開発時も平文で編集、コンパイルする必要があり、開発機には平文のソースコードのキャッシュが残ります。しかし平文のソースコードが漏洩、盗難に遭うリスクは決して低くありません。重大損害に繋がる可能性のあるリスクを抱えても平文でソースコードを保存せざるを得ない状況は、ある意味ソフトウェア開発会社にとって一番の悩みとも言えます。

インターネットの普及により、コンパイル環境も常時インターネットに繋がり、最新のライブラリを随時ダウンロードする必要があります。保護のために端末のネットワークをブロックするのはソフトウェア開発においてもはや非現実的な施策になっています。しかし、全く保護しないと重要なソースコードが悪意でインターネットから漏洩され、巨額な損害を受けるリスクを常に抱えることになります。

【図1】一般的なソースコード開発例

イメージ図の通り、全く制限を受けない端末でソースコードを書くと、ユーザはクラウドHDD、メール、外部記憶デバイスなどでソースコードをコピーし、持ち出せます。
一般的に異なるプロジェクトとバージョンを管理するため、通常はSVNなどのバージョン管理ソフトウェアを使用します。 例えばSVN のバージョン管理サーバは、サーバとクライアントのプロジェクトの内容を比較して、違いがあるものを高速に同期します。しかし、これは同時に、権限さえあればバージョン管理ソフトウェアサーバからプロジェクトのソースコードをまるごとダウンロードできることを意味します。

TSFのSVSモジュール (Secure Virtual Storage)とSVTモジュール (Secure Virtual Tunnel)は、二層の保護で外部端末や保護されない外部ネットワークからのソースコード漏洩を防止できます。
SVTで、SVNなどのバージョン管理サーバにSVT経由でしか接続できないように制限して、SVT経由で入出力したファイルはSVSディスク内にしか保存できないようにすることで、開発のバージョン管理・情報検索・ライブラリダウンロードなどの作業に極力影響を与えずに、ソースコードの漏洩を防止します。

以下は制御を受けた状態の開発イメージ図です。

【図2】制御状態でのプログラム開発イメージ図

SVSは暗号化されたセキュリティエリアを生成し、仮想ディスクのようにふるまいます。仮想ディスク内からはデータの持ち出しは禁止されます。<保護モード>で起動されたアプリケーションはSVSディスク内のファイルを正常に操作できますが、同じSVSディスク内にしかファイルを保存できません。SVSディスク外への出力は管理者の許可を得る必要があります。さらに<保護モード>で起動されていてもSVTの利用が許可されていないアプリケーションは、ネットワーク接続の利用も禁止されます。
仮想ディスクアンマウント後は単一の暗号化されたファイルとして、安全な状態で保存されます。開発プロジェクトをまるごとこの仮想ディスクに保存することで、安全に開発・デバッグを実施できます。

SVSモジュールは、Active Directory等と連携して自動的にユーザ認証を行ない適用されるロールごとに、利用可能な操作(開く、新規作成、変更、コピー&ペースト、印刷、SVSディスク外への取り出し)権限を決めることができます。使用するソフトウェアも限定でき、ソースコードを編集可能な開発環境を指定することができます。SVS仮想ディスク内には、SVTモジュールを使用するまでネットワーク経由での入出力も禁止されます。

SVSは暗号化された一つの仮想ディスクとしてふるまうので、複数のファイルが絡み合うビルド/コンパイルやデバッグ、成果物の実行なども特別な設定なく行なうことができます。
最後に、SVS仮想ディスクをアンマウントすると暗号化された単一ファイルになるので、仮に外部に漏えいしても、内容物を見ることはできません。

SVTモジュールは、端末から外部への接続経路を制限することができます。SVNサーバからの通信はSVS仮想ディスク内としかやり取りできないように設定したうえで、SVNサーバ側の接続受入経路もSVT経由のもののみ許可するよう制限しておけば、SVNによるバージョン管理に影響を与えないままソフトウェアの開発が行なえ、なおかつネットワーク経由によるソースコードの流出もありません。

これら2つのモジュールを組み合わせるだけで、社内ソースコード資産を完全に漏えいから守り切ることが可能です。