ファイルシステムレベル暗号化とは？(CTE機能紹介)

"ファイルシステムレベル暗号化"と、Thalesの"ファイルシステムレベル暗号化"製品である "CipherTrust Transparent Encryption"(略称: "CTE")について解説させて頂きます。

## 一般的な保存されたデータの暗号化方法
ストレージに保存されるデータを暗号化するのには、いくつかの方法があります。
大きく分類しますと、よく知られた一般的な方法としては、下記の2つの方法があります。
- デイスクレベル暗号化
    - 例)
        - BitLocker (WindowsのHDD/SSD等デイスクドライブ全体の暗号化機能)
        - NAS/SAN等による暗号化　(各社NAS/SAN内蔵のディスクドライブ全体の暗号化機能)
    - 長所
        - 設定が容易
        - OS/アプリケーション/DB依存なし
    - 短所
        - ディスク破棄、盗難時のみ有効。管理者権限等を悪用した内部不正やランサムウェアには効果なし。
- アプリケーションレベル暗号化
    - 例)
        - DB暗号化機能(TDE - 商用DBでの暗号化機能)
        - トークナイゼーション(DB等へ機密情報を保存する前に機密情報をトークンへ変換)
        - 暗号化ライブラリ組込み(自社開発のアプリケーション等へ暗号処理を組込む)
    - 長所
        - ディスク破棄、盗難時はもちろん、管理者権限等を悪用した内部不正やランサムウェアにも有効。
        - DBの特定カラムのみ暗号化等、より細かい暗号化制御が可能
    - 短所
        - 個々のアプリケーション毎に設定や、ソフトウェアの改修を行う必要があり、一般的に対応が複雑。

## "ファイルシステムレベル暗号化" とは?

"ファイルシステムレベル暗号化"の場合、OSのファイルシステムを拡張する形で、暗号化処理が実装されています。
"ファイルシステムレベル暗号化"には、下記のような長所＆短所があります。
- ファイルシステムレベル暗号化
    - 長所
        - 設定が"アプリケーションレベル暗号化"よりは、容易。この方式一つで多くのアプリケーションやDBの暗号化に対応できる。
        - ディスク破棄、盗難時はもちろん、管理者権限等を悪用した内部不正やランサムウェアにも有効。
        - アプリケーションやDBの設定を変更なしで対応

        - ファイルアクセスを監査ログに残すことが可能
        - サーバのローカルストレージや、マウントした共有フォルダに対応
    - 短所
        - 一部のファイルシステムレベルの実装に関連したソフトウエアと共存できないケースあり
            - (著名アプリケーション及びDBについての[CTEでの確認結果](https://thalesdocs.com/ctp/cte/cte-cm/?sideBarIndex=4&radioOption=2&selectedVersion=0&tabValue=0&OsMajor=RHEL%206&OsMinor=all&Kernel=))

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/8ff7ca2f-3f73-7a8f-ea3f-a01f5c3381eb.png)


## CTEの暗号化の仕組み
今回、ご紹介する"ファイルシステムレベル暗号化"をサポートするCipherTrust Transparent Encryption (略称: CTE)の暗号処理の仕組みについて解説します。

OSに"CTE Agent"と呼ばれるソフトウェアをインストールを行います。（OSはLinux/Windows/AIXをサポート)
[CipherTrust Manager(略称:CM)](https://qiita.com/shinyaarai/items/8267141fcdab8f789c9e) にて、CTEの暗号処理で用いられる暗号鍵と、暗号化のPolicyを管理しています。
CTE Agentでは、アプリケーションやDBからファイルI/OへのRead/Write時に、Policyに応じて、符号化/復号化処理をおこないます。
- 正規のユーザ/プロセスからのアクセスの場合、符号化/復号化を行います。
- 非正規のユーザ/プロセスからのアクセスの場合、符号化/復号化ができず、データが漏洩することを防ぎます。管理者等の特権ユーザでも、復号化することはできません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/c7f0943b-5aff-b0e1-9a57-596d5a2cace7.png)

## 暗号化の設定: Guard Point と Policy

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/1ff514b5-be15-3926-35d4-52f79e9867c4.png)

CTEでの暗号化の設定には、一つの"Guard Point"に対して、一つの"Policy"の設定が必要になります。(一台のサーバに複数の"Guard Point"の指定も可能です。)

- Guard Point: "暗号化対象フォルダ"を指定します。
- Policy: 暗号鍵及び暗号化対象の指定

Policyには下記の情報が含まれます。
- Key: 暗号鍵
- Users: 対象ユーザ/ユーザグループ
- Process: 対象プロセス
- Resource: 対象ファイル/フォルダ(例: csvファイルを対象)
- Action: Read/Write等(例: Write時符号化するが、Read時は複合できない等の設定も可能)
- Effect: データへのアクセス許可/拒否

これにより、正規のユーザやプロセスのみが、Guard Pointで指定したフォルダ中のファイルの符号化及び復号化を行うようにすることができます。
また、データのバックアップを行う管理者には、ファイルへのアクセス可、復号不可としておけば、暗号化したままバックアップを取ると行った事も、できるようになります。

## "鍵交換"と"データの再暗号化"

"NIST SP800-57 Part 1 Rev.5 鍵管理における推奨事項 第一部：一般事項"の"5.3 暗号利用期間"において、暗号鍵に有効期間を設け、定期的に鍵交換を行うことが推奨されています。
下記、IPAの"暗号鍵管理ガイドライン"のサイトより、日本語翻訳版pdfが公開されています。

https://www.ipa.go.jp/security/crypto/guideline/ckms.html

CipherTrust Managerで、予め定義されたスケジュールにて、自動で鍵を定期的に交換する機能があります。
鍵交換の時に、データを新しい鍵にて、再暗号化を行う必要が生じます。再暗号化とは、前の鍵にて復号化し、新しい鍵にて符号化することを指します。

CTEでは、[3つの方法で、再暗号化](https://thalesdocs.com/ctp/cm/latest/admin/cte_ag/intro_dataxform/index.html#data-transformation-techniques)を行うことが可能です。
1\. コピー/復元方法
2\. CTEの"dataxform" ユーティリティ利用
3\. Live Data Transformation(LDT)利用

(これらの方法は、"再暗号化"時の他、"初期暗号化"(非暗号化データからの初回暗号化処理)時にも必要となります。)

"コピー/復元方法"及び"dataxform"利用の場合、CTEのGuard Pointを参照しているアプリケーションやDBを停止し、データの再暗号化処理を行う必要があります。システムによっては、このシステムの停止が許されなかったり、また、対象データサイズが大きい場合、再暗号化処理に時間を要し、システムの停止期間"ダウンタイム"が長期になる恐れがあります。

CTEの追加機能である、Live Data Transformation(略称:LDT)を利用することで、CTEを停止することなく、バックグラウンドで再暗号化処理を行うことができます。これにより、鍵交換時、アプリケーションやDBを稼働させたまま、再暗号化処理を自動で行うことが可能となります。

## CTE歴史
- 2003年 "Vormetirc Transparent Encription(VTE)"販売開始
- 2014年 Thales による Vormetric 買収
- 2020年 SafeNet KeySecure 製品と統合し、CipherTrust へ名称変更

## 関連URL

- 製品紹介
    - [CipherTrust Transparent Encryption (CTE) ](https://cpl.thalesgroup.com/ja/encryption/transparent-encryption)

- 製品ドキュメント
    - [CTE Administration](https://thalesdocs.com/ctp/cm/latest/admin/cte_ag/index.html)
    - [CipherTrust Transparent Encryption Agent](https://thalesdocs.com/ctp/cte-con/cte/latest/index.html)
    - [CipherTrust Transparent Encryption Compatibility Portal](https://thalesdocs.com/ctp/cte/cte-cm/?OsMajor=RHEL%206&OsMinor=all&Kernel=)

- Qiita記事
    - [CipherTrust Transparent Encryption (CTE)をためす](https://qiita.com/shinyaarai/items/72f3df86d6a5c4a92143)

## YouTube

https://www.youtube.com/watch?v=OggZ2V_TOTI

https://www.youtube.com/watch?v=aUCBDJGxbVQ