64MBを暗号化するのに29.16ms、戻すのに32.35msでした。
増えた量は16バイトだけです。中身そのものは同じ長さのまま置けます。
量は増えません。時間は量に比例しますが、扱う規模に対しては小さい値でした。
保存時暗号化を入れるとき、まず気になるのは重さと量です。実際に暗号化して測りました。
使ったのはNode同梱の仕組みで、方式はAES-256-GCMです。改ざんを見つけるための印が付く形になります。
同じ中身を、そのまま書く場合と暗号化して書く場合で比べる 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を読み書きする時間のほうが大きい場面が多くあります。
だから暗号化そのものは、全体の待ち時間に対しては小さいことになります。
重くなるとすれば、暗号化ではなく鍵を取りに行く往復のほうです。公式も、暗号化されたものは仕組みへの呼び出しを経てのみ戻せると述べています。
時間は量に比例し、増える量は一定。
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
暗号化の単位が、取り出しのときに戻す量を決めます。取り出し方から先に決めることになります。
保存時暗号化では、鍵の使い方に2通りがあります。公式は仕組みへの要求を通じて、鍵で情報を直接守ることも、その鍵の下で守られる追加の鍵を求めることもできると述べています。
後者を使うと、データごとに別の鍵を持てます。単位を細かくできるということです。
その単位が取り出しにどう効くかを数えました。
保管しているもの 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の記事にあり、区切りの単位より細かくは絞れませんでした。
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秒の差でした。
保存時暗号化では、鍵をいずれ替えることになります。公式は鍵を入れ替えたいとき、新しい鍵の材料が作られ、その鍵にとって活きているものとして結びつけられると説明しています。
古いほうも残ります。公式は古い材料は保たれ、以前に守られたデータを戻したり確かめたりするのに使えるとも述べています。
つまりデータを暗号化し直すかどうかは別の判断です。その手間を数えました。
保管しているもの 400GB。鍵を替えるときに読み書きし直す量を比べる 読み書きの速さは 220MB/秒として計算する やり方 読み書きする量 かかる時間 全部を復号して暗号化し直す 409,600MB 31.0分 鍵を包む形にして、包みだけ替える 41MB 0.2秒
全部を暗号化し直すと31.0分です。読み書きが40万MBぶん走ります。
包む形なら0.2秒です。データそのものには触りません。
包みだけ替えた場合、データを暗号化している鍵はそのままです。替わったのは、その鍵を守っている側だけになります。
だから、データの鍵そのものが漏れた場合には効きません。その場合は暗号化し直すことになります。
どちらを備えるかは、何から守りたいかで決まります。保管先ごと持ち去られる場合に備えるなら包む形で足り、鍵の漏えいに備えるなら31.0分の側を用意しておくことになります。
暗号化と復号の時間は編集部環境での実測で、機械が違えば値は変わります。1MBあたり0.46msという値も、処理装置の対応によって大きく変わります。鍵を替えるときの計算は、読み書きの速さを220MB/秒と置いた見積もりです。取り出しの単位の表も、復号の時間が量に比例するという実測から計算しました。ここで見せているのは、増える量が単位の数で決まること、鍵の替え方で手間が桁違いになることの2つです。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る