セキュリティ・ID

保存時暗号化とは|64MBを暗号化しても増えたのは16バイト、時間は29.16msだった

どれだけ重くなるのかどれだけ量が増えるのかどの単位で暗号化するのか

64MBを暗号化するのに29.16ms、戻すのに32.35msでした。

増えた量は16バイトだけです。中身そのものは同じ長さのまま置けます。

この記事の要点

  • 64MBで29.16ms
  • 増える量は16バイト
  • 単位で取り出しが65536倍
  • 鍵替えは31.0分か0.2秒

64MBを暗号化しても増えたのは16バイト、時間は29.16ms

量は増えません。時間は量に比例しますが、扱う規模に対しては小さい値でした。

保存時暗号化を入れるとき、まず気になるのは重さと量です。実際に暗号化して測りました。

使ったのはNode同梱の仕組みで、方式はAES-256-GCMです。改ざんを見つけるための印が付く形になります。

量を変えて測る

text
同じ中身を、そのまま書く場合と暗号化して書く場合で比べる
AES-256-GCM を Node 同梱の仕組みで実際にかけている

大きさ        暗号化にかかる時間  復号にかかる時間  増える量  増える割合
64KB                      0.05ms            0.04ms     16バイト    0.02441%
1MB                       0.54ms            0.51ms     16バイト    0.00153%
16MB                      6.01ms            6.90ms     16バイト    0.00010%
64MB                     29.16ms           32.35ms     16バイト    0.00002%

64MBで29.16msです。1MBあたりに直すと0.46msになります。

増える量はどの行でも16バイトです。量に比例しません。

この値の位置づけ

保管先への読み書きは、この計測より遅いのが普通です。1MBを読み書きする時間のほうが大きい場面が多くあります。

だから暗号化そのものは、全体の待ち時間に対しては小さいことになります。

重くなるとすれば、暗号化ではなく鍵を取りに行く往復のほうです。公式も、暗号化されたものは仕組みへの呼び出しを経てのみ戻せると述べています。

時間は量に比例し、増える量は一定。

暗号化にかかる時間(ms)扱う量(MB)→32.170.464KB1MB16MB64MB編集部環境での実測。増える量はどの点でも16バイトで、扱う量に比例しない。
図1 ── 量と、暗号化にかかる時間
出典AWS ドキュメント「AWS KMS keys」2026-08-18 確認
All objects encrypted under a KMS key (either customer-supplied data or HSM-generated keys) can be decrypted only on an HSM via a call through AWS KMS.
原文AWS ドキュメント「AWS KMS keys」 この内容の有効期限2027-02-18

1件を取り出すのに、まとめて暗号化していると65536倍を戻す

暗号化の単位が、取り出しのときに戻す量を決めます。取り出し方から先に決めることになります。

保存時暗号化では、鍵の使い方に2通りがあります。公式は仕組みへの要求を通じて、鍵で情報を直接守ることも、その鍵の下で守られる追加の鍵を求めることもできると述べています。

後者を使うと、データごとに別の鍵を持てます。単位を細かくできるということです。

その単位が取り出しにどう効くかを数えました。

暗号化の単位を変える

text
保管しているもの 64MB・1件 1024バイト。そこから1件を取り出す
復号にかかる時間は 1MBあたり 0.80ms(実測)

暗号化の単位      1件を取り出すのに復号する量  かかる時間  1件だけの場合との比
ファイル全体                              64MB      51.413ms              65536倍
1MBごと                                1MB       0.803ms               1024倍
64KBごと                              64KB       0.050ms                 64倍
1件ごと                                 1KB       0.001ms                  1倍

まとめて暗号化していると、1件のために64MBを戻すことになります。51.413msです。

64KBごとなら0.050msです。1000分の1になります。

細かくする代償

単位ごとに印が付きます。1件ごとに印を付けると、1024バイトに対して16バイト、1.6%増えます。

64KBごとなら0.024%です。細かくするほど、この割合が上がります。

決め方は単純で、いちばん小さい取り出しの単位に合わせることになります。1件ずつ取り出すなら1件ごと、まとめて読むなら大きくします。

同じ形の判断は、置き場所を区切る場面でも出ます。その計測はAmazon Athenaの記事にあり、区切りの単位より細かくは絞れませんでした。

出典AWS ドキュメント「AWS KMS keys」2026-08-18 確認
You can make requests through AWS KMS to use your KMS keys to directly protect information or request additional HSM-generated keys that are protected under your KMS key.
原文AWS ドキュメント「AWS KMS keys」 この内容の有効期限2027-02-18

鍵を替えるとき、全部を暗号化し直すか包みだけ替えるか

包む形にしておけば、データに触らずに替えられます。400GBで31.0分と0.2秒の差でした。

保存時暗号化では、鍵をいずれ替えることになります。公式は鍵を入れ替えたいとき、新しい鍵の材料が作られ、その鍵にとって活きているものとして結びつけられると説明しています。

古いほうも残ります。公式は古い材料は保たれ、以前に守られたデータを戻したり確かめたりするのに使えるとも述べています。

つまりデータを暗号化し直すかどうかは別の判断です。その手間を数えました。

替え方を変える

text
保管しているもの 400GB。鍵を替えるときに読み書きし直す量を比べる
読み書きの速さは 220MB/秒として計算する

やり方                          読み書きする量  かかる時間
全部を復号して暗号化し直す                          409,600MB       31.0分
鍵を包む形にして、包みだけ替える                            41MB        0.2秒

全部を暗号化し直すと31.0分です。読み書きが40万MBぶん走ります。

包む形なら0.2秒です。データそのものには触りません。

包みだけ替えたときに残るもの

包みだけ替えた場合、データを暗号化している鍵はそのままです。替わったのは、その鍵を守っている側だけになります。

だから、データの鍵そのものが漏れた場合には効きません。その場合は暗号化し直すことになります。

どちらを備えるかは、何から守りたいかで決まります。保管先ごと持ち去られる場合に備えるなら包む形で足り、鍵の漏えいに備えるなら31.0分の側を用意しておくことになります。

余談 この計測での注意

暗号化と復号の時間は編集部環境での実測で、機械が違えば値は変わります。1MBあたり0.46msという値も、処理装置の対応によって大きく変わります。鍵を替えるときの計算は、読み書きの速さを220MB/秒と置いた見積もりです。取り出しの単位の表も、復号の時間が量に比例するという実測から計算しました。ここで見せているのは、増える量が単位の数で決まること、鍵の替え方で手間が桁違いになることの2つです。

出典AWS ドキュメント「AWS KMS keys」2026-08-18 確認
When you want to rotate the KMS key through AWS KMS, a new HBK is created and associated with the KMS key as the active HBK for the KMS key.
原文AWS ドキュメント「AWS KMS keys」 この内容の有効期限2027-02-18

よくある質問

暗号化するとどれだけ重くなりますか
この計測では64MBで29.16msでした。量に比例します。
置く量は増えますか
改ざんを見つけるための印だけです。この方式では16バイトで、64MBに対して0.00002%でした。
どの単位で暗号化しますか
取り出し方によります。1件を取り出すのに、まとめて暗号化していると65536倍の量を戻すことになります。
鍵を替えるのは大変ですか
方式によります。全部を暗号化し直すと400GBで31.0分、包みだけ替える方式なら0.2秒でした。

まとめ

  • 時間は量に比例する
  • 増える量は印の分だけ
  • 単位は取り出し方で決める
  • 鍵は包む形にしておく

今日から始められること

  1. 扱う量から暗号化の時間を見積もる
  2. 1件を取り出すときに戻す量を確かめる
  3. 暗号化の単位を決める
  4. 鍵を替える手順を確かめる

実務で組んだ保存時暗号化のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る