• 暗号化すれば終わりじゃない
  • 暗号鍵の管理も仕様に入れよ
  • 間違った暗号実装はむしろ危険

 「暗号」は、ITを安全に利用する上で必要不可欠の技術です。例えば、PCやスマートデバイスのWebブラウザーからインターネットバンクやオンラインショップを利用する際は、アクセスプロトコルにHTTPではなくHTTPS(SSL/TLSプロトコル)が使われるのが一般的になっています。HTTPSは暗号技術を用いて、通信内容を盗聴や改ざんから保護すると同時に、アクセス先Webサイトの認証を行います。

 最近では、GoogleやFacebook、Twitterといった大手のB2Cサービスでも、常にHTTPSが利用されます。皆さんにとって、暗号技術は身近なものになっているといえるでしょう。しかし、暗号技術をきっちり理解して使いこなすのは、結構難しいことなのです。

 重要なデータをデータベースやファイルシステムに保管する場合、暗号化によってセキュリティを担保するというのは、システム開発の現場でよく見られます。ユーザー部門から提示された要求仕様にそう記載されてあることも少なくないでしょう。

 ところが、この暗号化というのが意外に厄介な技術なのです。暗号化しさえすれば安全だと思い込んでしまいがちですが、実際はそんなことはありません。きちんと実装されず、でき上がったシステムは安全性が不十分、という事態がしばしば起こります。

 暗号の原理は、暗号鍵を使ってデータを暗号化し、(同じ、または別の)暗号鍵を使って復号するというものです。それゆえ、暗号化することだけではなく、暗号化や復号に使う鍵をどこに保管し、どうやって管理するかまで、きちんと仕様に盛り込む必要があります。暗号化したデータと暗号鍵が同じサーバーに置かれていて同時に手に入るようでは、暗号化する意味がありません。場合によっては、暗号鍵の更新や世代管理などの観点でも、仕様を検討すべきでしょう。