エンジニアならば、情報の重要性を誰よりも理解しているはずです。そこで、クラウド時代にエンジニアが知っておくべき「暗号」論を、もう一度おさらいしてみてはいかがでしょうか。デブサミにて反響が大きかった「クラウドを支えるこれからの暗号技術」を執筆した筆者による新連載です。
インターネットの普及と発展により、ネットワーク上で秘密にすべき情報がたくさんやりとりされています。最近ではクラウドサービスの普及により、サーバーに重要な情報を置く機会も増えたことで、個人情報流出の危険性も常につきまとっています。実際、情報漏えいの事故や事件がしばしば報道されていますし、これを受けて、「情報漏えいが怖いからクラウドサービスは使わない」という人も少なくありません。安全に情報を管理することが、今まで以上に強く求められているのです。
その実現のために、情報セキュリティという考え方があります。情報セキュリティとは、
という三つの性質を表します。機密性や完全性のためには、情報の暗号化だけでなくデータを置く場所、操作する人の教育などに注意を払わなければなりません。可用性のためにはバックアップシステムやサーバーの多重化が必要になります。
こうしてみると、暗号化技術は機密性や完全性を実現するために必要な技術の一つに過ぎないことが分かります。暗号化技術がよかったとしても、他の部分が悪ければ情報セキュリティは守れないのです。実際、情報漏えいの原因が人であることも多いです。とはいえ暗号化技術は、情報を守る土台として決して欠かせないものなのです。
守るべき情報(データ)は、その利用形態に応じて大きく三つに分類されます。
まず、HDDなどのストレージに保管しておくとき(Data at Rest)は、AESなどの共通鍵暗号が使われます。改ざん検知のためにメッセージ認証符号を組み合わせることも多いです。
それから通信中などのデータを転送するとき(Data in Motion)にはTLS、IPsec などの通信技術が使われます。その中心には公開鍵暗号があります(もちろん共通鍵暗号も使われます)。
ところが、クラウドなどのサーバーに預けたデータを実際にユーザーが使うとき(Data in Use)に使われる暗号化技術はあまりありませんでした。従来の暗号化技術は、暗号化されたデータを一度復号しないと何もできなかったからです。
そのため、近年では復号しなくても計算したり、検索したりできる暗号化技術が研究されています。この連載ではそれらの暗号化技術を紹介していきましょう。
新しい技術を取り上げると書きましたが、それらは基本的に公開鍵暗号の発展形です。そのためまず公開鍵暗号のおさらいをしておきましょう。
公開鍵暗号を使うときは各自が公開鍵と秘密鍵を生成し、公開鍵はみんなに渡して秘密鍵は手元に秘密に持ちます。公開鍵を改ざんされることなく安全に他人に渡すには公開鍵基盤(PKI)などを利用します。PKI の詳細については「5分で絶対に分かるPKI」もご参照ください。
AさんがBさんにメッセージを送りたいときはBさんの公開鍵KBを使って平文mから暗号文cを作ります。暗号文c を受け取ったBさんは自分の秘密鍵K′Bを使って復号します。
暗号化のための鍵と復号するための鍵を別のものにし、片方は公開してもよいというのが公開鍵暗号の最大の特徴です。少し形式的に書くと公開鍵暗号とは次の3個のアルゴリズムからなります。
Copyright © ITmedia, Inc. All Rights Reserved.