CTE: Dataxformを利用しての大きなサイズのファイルの初期暗号化をためす

# 概要

これまでのCTEのご紹介記事でファイルシステムレベル暗号のご紹介と、実際の利用手順を解説させていただきました。

- [ファイルシステムレベル暗号化とは？\(CTE機能紹介\)](https://qiita.com/shinyaarai/items/ef4ddaef397a05335cac)
- [CipherTrust Transparent Encryption (CTE)をためす](https://qiita.com/shinyaarai/items/72f3df86d6a5c4a92143)

ご紹介した手順では、Gauard Point （保護対象フォルダ）へ、ファイルを作成またはコピーすることで"暗号化”を行っておりました。

実際の運用となると、データベースのデータファイル等、数GBまたはTB等、大きなファイルの暗号化を、CTE利用開始前に行う必要があります。

CTEでは３つの方法をサポートしています。
- Copy/Restore
    - GuardPointへのコピー(暗号化),GuardPointから通常のフォルダへのコピー(復号化)
    - 大きなサイズのデータの場合、"Copy/Restore"の方法を用いると、お手軽ですが、オリジナルと暗号化したファイル２つ分のストレージのスペースが必要になる問題があります
- Dataxfrom utility利用
    - CTEの暗号化ユーティリティ"Dataxform"を利用することにより、コマンドラインより暗号化/復号化が行えます。
    - 大きなサイズのデータの場合でも、２倍のストレージスペースは必要ありません
- LDT利用
    - 追加のオプションである LDT (Live Data Trasformation)を利用すると、自動で暗号化処理がバックグラウンドで行われます。
    - 大きなサイズのデータの場合、初期の暗号化に時間がかかり、この間、データベース等で、データを参照することができません。LDTを利用することで、データベース等を稼働したまま、暗号化処理が可能です。

今回の記事では、２つ目の "Dataxform"を利用しての初期暗号化を行ってみます。



# 目的

最短で "Dataxform"を利用しての初期暗号化を行う手段をご紹介します。
(詳細については、ドキュメントをご参照下さい)

# 参照ドキュメント

- "CipherTrust Transparent Encryption Agent" 製品ドキュメント
    - [Data Transformation Techniques](https://thalesdocs.com/ctp/cte-con/cte/latest/user-manuals/data-trans/data-transf/data-tech/index.html)
    - [CTE Protection Policies](https://thalesdocs.com/ctp/cte-con/cte/latest/user-manuals/data-trans/data-transf/cte-protect/index.html)
	- [Initial Data Encryption](https://thalesdocs.com/ctp/cte-con/cte/latest/user-manuals/data-trans/initial-data/index.html)
    - [Appendix A: DataXform Reference](https://thalesdocs.com/ctp/cte-con/cte/latest/user-manuals/data-trans/appendix/index.html)


# 手順

管理者権限にて CM管理画面にログインします
![CTE_Dataxform_001a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/431e871b-7fb0-9731-5194-78e928457f7f.png)

"Transparent Encription"(CTE)を選択します
![CTE_Dataxform_002a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/80657021-adb9-22f3-43a0-1aecb04afad2.png)

対象のサーバを選択します

## Policyの作成

![CTE_Dataxform_003a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/c2cb2681-10dd-073d-2814-f19d75c7012a.png)

左のメニューより、Policies > Policies を選択します
"Create Policy"を選択します

![CTE_Dataxform_004a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/baafff73-f986-a0f2-ac29-2853b3406c73.png)


Nameを入力します（任意：例"dataxform_policy")
”Data Transformation"を選択し、"Next"をクリックします

![CTE_Dataxform_005a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/5fd408b9-14ca-c01b-b073-fda5c622a601.png)

"Add Security Rule"を選択します

![CTE_Dataxform_006a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/aab264ce-5b42-f978-5eec-19747ae173ae.png)

”Action:"の"Select"を選択します

![CTE_Dataxform_007a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/09f2915d-b38b-83b6-09c1-ed90692336e6.png)


"all_Ops"を選択し、"Select"をクリックします

![CTE_Dataxform_008a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/3a51a520-e9e0-6236-c3ab-5d0a0e89fc47.png)

”Add"をクリックします

![CTE_Dataxform_009a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/134ed4e4-e3d7-c597-06ca-0255c5906468.png)

”Next"をクリックします

![CTE_Dataxform_010a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/33865108-b66a-b5ce-8ef6-8f8d7a76f783.png)

"Create Key Rule"をクリックします
![CTE_Dataxform_011a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/f494fd5b-d402-2946-e477-34b613ac9b8e.png)

”Current Key Name"の"Select"をクリックします

![CTE_Dataxform_012a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/335ee750-6058-5acb-b50e-35963d853859.png)

"clear_key"を選択します
（"clear_key"とは、平文のときの鍵設定で使用されます。）

![CTE_Dataxform_013a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/6d282d8e-1fed-1fe6-9121-51f699084ebf.png)

"Add"をクリックします

![CTE_Dataxform_014a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/f5626f58-e671-3809-5fce-513e3f182e75.png)

"Next"をクリックします

![CTE_Dataxform_015a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/070af48f-7194-ce91-720e-c834311ac637.png)

"Create Data Transformation Rule"をクリックします

![CTE_Dataxform_016a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/836aec64-84d9-b388-a477-93da9b3be05c.png)

”Transformation Key Name"の”Select"をクリックします

![CTE_Dataxform_017a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/caddef06-9220-4d2a-4b7f-a9e0bb622b54.png)

暗号化に利用する鍵を選択します(任意: 例”cte_key")
CTEで利用する鍵を選択します
"Select"をクリックします

![CTE_Dataxform_018a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/083a958f-a9ae-3629-5687-472e0569aadd.png)

”Add"をクリックします

![CTE_Dataxform_019a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/bf397d92-e85c-6401-3103-0ccb0e6bf162.png)

”Next"をクリックします

![CTE_Dataxform_020a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/2b697a5f-1643-2234-db4d-d99a127d35f0.png)

”Save"をクリックします

![CTE_Dataxform_021a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/bbf3ffcd-b36c-db69-7ea4-b17bc150bd58.png)

dataxform 用のPolicyga追加されたことを確認します

## GuardPointの追加

![CTE_Dataxform_100a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/1f636b00-014c-bc44-4cbd-60829fbe01f7.png)

左のメニューから、Clients > CLients を選択します
サーバを選択します

![CTE_Dataxform_101a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/dd94f9da-1fe9-49e8-9a7e-957edf40bbba.png)

"Create GuardPoint"を選択します

![CTE_Dataxform_102a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/2777865b-2865-56a3-5aba-bcc71fa0fd89.png)

"Select"を選択します

![CTE_Dataxform_103a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/c2f90878-e16f-3aef-e890-32be1c4a1789.png)

dataxfor用のPolicy(例："dataxform_policy")を選択し、"Select"をクリックします

![CTE_Dataxform_104a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/b70ebfbd-3263-7036-04ae-eba7fa7d6a47.png)

"Browse"をクリックします

![CTE_Dataxform_105a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/01ec8229-8688-853d-e325-fc09e5bd6b82.png)

”Select Path:"から、GuardPoint（任意: 例"Test_Dataxform"）のフォルダを選択し、"Select Path"を選択します
(GuardPointのフォルダへ予め対象のデータファイルを入れておきます)


![CTE_Dataxform_106a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/b486e22a-fc1c-4129-1ef7-7759ac103788.png)


"Select Paths:"にGuadPointのフォルダが指定されていることを確認します
"Add"をクリックします





![CTE_Dataxform_107a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/a5ee4350-1bb6-bf33-73e5-709ae2c66af0.png)



![CTE_Dataxform_109a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/f7d16074-461b-0696-0a73-83e5e57b4104.png)

## 初期暗号化の実行

(実際の暗号化を行う場合には、データのバックアップを取ってから行って下さい)

### GuardPointが、初期暗号化(/再暗号化)できることの確認
```
C:\>dataxform --rekey_supported --gp C:\Test_Dataxform
Checking if C:\\Test_Dataxform is a guard point with a rekey policy applied
C:\\Test_Dataxform is a guard point with a rekey policy applied
```

### 初期暗号化実行時間の見積もり

```
C:\>dataxform --deep_scan --gp C:\Test_Dataxform
Checking if C:\\Test_Dataxform is a guard point with a rekey policy applied
C:\\Test_Dataxform is not a guard point with a rekey policy applied
The deep scan will emulate transformation to derive timing estimates
About to perform a deep scan
-- To enable consistent results, do not access the directory during the scan
-- Transformation simulations will be performed, which may take some time
Do you wish to continue (y/n)?y
Status information for directories in guard point
Directory C:\\Test_Dataxform\\ contains 1 files (102400 MB)
Scan found 1 files (102400 MB) in 1 directories for guard point C:\\Test_Dataxform
Estimated data transformation time for C:\\Test_Dataxform is 0h 9m 32s
-- This is an estimated time using simulated data transformations on test files
-- The actual transformation time may be more or less than this estimate
The data transform operation took 0 hours, 0 minutes and 7 seconds
The data transform program ran from Fri Aug  2 07:55:01 2024 until Fri Aug  2 07:55:08 2024
```

>Directory C:\\Test_Dataxform\\ contains 1 files (102400 MB)

およそ100GBのファイルが１つGuardPointにあります

>Estimated data transformation time for C:\\Test_Dataxform is 0h 9m 32s

今回のケースでは初期暗号化に 9分32秒 との"予測値"が出力されました。


### 初期暗号化の実行
実際に初期暗号化を実行します
```
C:\>dataxform --rekey --gp C:\Test_Dataxform
Checking if C:\\Test_Dataxform is a guard point with a rekey policy applied
C:\\Test_Dataxform is a guard point with a rekey policy applied
About to perform the requested data transform operation
-- Be sure to back up your data
-- Please do not attempt to terminate the application
If Shadow Copy was used on your system, you must back up your data before attempting to run dataxform. Once DataXform
   has been completed, you may restart Shadow Copy.  Note, however, that all  Shadow Copy backups made prior to running
   dataxform will be unusable and should be discarded. Attempting to restore your cleartext Shadow Copy backups made
   prior to running dataxform into your encrypted data will result in data corruption.
Do you wish to continue (y/n)?y
Scan found 1 files (102400 MB) in 1 directories for guard point C:\\Test_Dataxform
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 15232 MB
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 33088 MB
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 49248 MB
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 65536 MB
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 82144 MB
Processed 0 files (0 bytes) of 1 files (102400 MB) in C:\\Test_Dataxform, in progress 102400 MB, completed 99488 MB
Transformed 1 files (102400 MB) of 1 files (102400 MB) for guard point C:\\Test_Dataxform
The data transform operation took 0 hours, 31 minutes and 1 seconds
The data transform program ran from Fri Aug  2 07:57:49 2024 until Fri Aug  2 08:28:50 2024
Data transform for guard point C:\\Test_Dataxform finished
```

> The data transform operation took 0 hours, 31 minutes and 1 seconds

実際の初期暗号化処理は 31分1秒 かかりました

- テスト環境 (ご参考)
    - CTE Agent v7.5.0.106
    - AWS EC2
        - OS: WIndows Server 2022
        - Instance type: t2.xlarge
            - vCPUs: 4
            - memory: 16GB
        - storage: gp2

### dataxform セッションのクリーンアップ
初期暗号化が完了したので、クリーンアップを行います

```
C:\>dataxform --cleanup --gp C:\Test_Dataxform
About to remove the data transformation status files
Do you wish to continue (y/n)?y
Removal of data transformation status files completed
```

## GuardPoint の削除

![CTE_Dataxform_110a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/e0c2a9a3-2d65-3ad3-a27e-bbb6b178ffa1.png)

GuardPointの一覧画面より、初期暗号化に用いた Dataxform用の Guardpointを削除するために"Unguard"を選択します

![CTE_Dataxform_111a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/90449cca-b87c-8eda-f416-e190962bdef3.png)

"Unguard"をクリックします


# 補足

## "暗号鍵のローテション"時のデータ再暗号化
今回の記事ではCTE利用開始時、必要になる"初期暗号化"を中心にご説明しました。
同じ方法が、"暗号鍵のローテション"時のデータ再暗号化でも利用できます。

"NIST SP800-57 Part 1 Rev.5 鍵管理における推奨事項”や、PIC-DSS等で、"暗号鍵のローテション"が推奨されています。これにより、セキュリティを強化し、万が一鍵が漏洩してもその影響を最小限に抑えることができます

IPAにて、"NIST SP800-57 Part 1 Rev.5 鍵管理における推奨事項”をベースに、"暗号鍵管理ガイドライン”を取りまとめています（"NIST SP800-57 Part 1 Rev.5 鍵管理における推奨事項”和訳あり）

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

### "初期暗号化"と"再暗号化"のちがい
現在の利用している鍵と、新しい鍵を Dataxformに与える必要があります
初期暗号間時には、"現在の鍵"に"clear_key"を指定する必要があります。

| 対象操作 | 現在の鍵 | 新しい鍵 |
|:-:|:-:|:-:|
|  初期暗号化  | "clear_key"（平文の鍵として便宜上利用される）  | CTE暗号化に利用する鍵 |
|  再暗号化 | CTE暗号化で現在利用している鍵  | 交換する新しい鍵  |