今回は、Key Management Service(KMS)についてです。
■はじめに
KMSは暗号鍵の作成/管理/運用のためのサービスです。
KMSの詳細の説明の前に、暗号/復号について事前に整理しておいた方がKMSの理解が進むと思いますので、先にそちらを説明いたします。
■前提知識
とあるデータ(文字列等)を暗号/復号化する際、
暗号化アルゴリズムとキー(鍵)を利用します。
暗号化アルゴリズムには大きく分けて2つの方式があります。
① 共通鍵暗号方式(=対称鍵暗号方式)
データの暗号にも復号にも同じ鍵を利用します。
対称鍵暗号方式と呼ばれることもあります。
② 公開鍵暗号方式(=非対称鍵暗号方式)
データの暗号の時と復号の時で違う鍵を利用します。
(公開鍵暗号方式の場合には暗号化専用の鍵と復号化専用の鍵の2つが必要)
非対称鍵暗号方式と呼ばれることもあります。
暗号化アルゴリズムでは利用する鍵の長さが指定されています。
鍵の長さは長ければ長いほど複雑化し第三者に解読されにくくなりますが、
その反面、暗号化/復号化処理が重くなります。
鍵の長さはビット(bit)で表現され、256bitや2048bitのように表記します。
共通鍵暗号方式と公開鍵暗号方式のどちらを選択するかによって、
適切とされるビット長(鍵長)は異なります。
一般的には、以下が多いようです。
共通鍵暗号: 256bit
公開鍵暗号: 2048bit
暗号化アルゴリズムによりキーの使われ方は異なります。
例えば、AESでのキーの使われ方と、RSAでのキーの使われ方は全く異なります。
しつこくなってしまいますが、
暗号化アルゴリズムの中で鍵が使われることで暗号化/復号化が可能になります。
※鍵がどのように使われるのかは暗号化アルゴリズム次第です。
以下は暗号化方式で分類した代表的な暗号化アルゴリズムを記載しております。
共通鍵暗号: RC4、3DES、AES
公開鍵暗号: ECC、RSA
■前提知識(余談)
opensslコマンド等を利用してデータの暗号化を行った場合、
秘密鍵や公開鍵の情報が出力(エクスポート)されますが、
あくまで暗号化アルゴリズム内で自動的に(=勝手に)生成された(利用された)暗号化キーを出力しています。
仮にですが、
秘密鍵や公開鍵、もしくは共通鍵の情報が出力(エクスポート)されなかった場合や
秘密鍵や公開鍵、もしくは共通鍵の情報を削除してしまった場合、
利用する暗号化アルゴリズムがわかっていたとしてもキーが不明なので、
データを復号することができません。
■KMSで作成/管理できる暗号鍵について
共通鍵も公開鍵もどちらもKMSで作成/管理することができます。
話が少しそれますが、KMSでは共通鍵/公開鍵よりも対称/非対称と表記されることが多いです。
AWS公式ページでも対称/非対称と記載されております。
■KMSの必要性について
暗号化/復号化する際、鍵の情報が非常に大切になってきます。
鍵が流出すれば、暗号化の意味がありません。
そのため、鍵の取り扱い(保管場所、適切なタイミングの利用、適切な人やモノが利用)が重要になってきます。
鍵の取り扱いをマネージド型サービスとして提供しているのがKMSです。
また、KMSに保管された鍵を使ってAWSサービスで利用されるデータを暗号化することもできます。
KMSと連携(統合)しているAWSサービスは以下サイトに記載の通り複数あります。
特徴 - AWS Key Management Service | AWS
以上です。