エキスパートに聞く:ジョーント・ファン・デア・ウィールが暗号化を語る

グローバル調査分析チーム(GReAT)のジョーント・ファン・デア・ウィールが皆さんからの質問に答える記事の後編をお届けします。今回のテーマは暗号化です。

ask-expert-2-encryption

ジョーント・ファン・デア・ウィール(Jornt van der Wiel)は、Kaspersky Labグローバル調査分析チーム(GReAT)に所属するランサムウェアの優秀なエキスパートですが、暗号化にも精通しています。ランサムウェアと暗号化についてウィールへの質問を募集したところ、非常に多くの質問が寄せられたため、回答を前編と後編に分けてお届けしています。

前編では、ランサムウェアに関する質問にお答えしました。後編にあたる今回は、暗号化と関連トピックについて語ります。

情報セキュリティは一体何のためにあるのか、私自身常々考えています。自由?プライバシー?国家の安全?簡単に答えは出せませんが、ジョーントさんはどのように考えていますか?エキスパートとしての考えをお聞きしたいです。

私の考えでは、情報セキュリティとは、人々の日々の生活を守ることです。かつてのオートメーションが、そして今のITが、そもそも人々の生活を楽にするため、普通は人間の手でしなければならなかった仕事を自動化するために発明されたものであることを思い出してください。残念ながら、ITシステムの多くはセキュリティを念頭に置いて設計されていませんでした。その結果、私たちがいま置かれているような状況が生まれたのです。ITが保護されていなければ、私たちの日々の生活は混乱状態に陥ってしまうでしょう。

たとえば、救急センターに緊急搬送されたところ、病院がセキュリティ侵害を受けたために治療できないと言われたらどうでしょうか。あるいは、海抜の低い土地に住んでいて、ダムのロック装置がハッキングされたために家が浸水したとしたら。こうした例は、起こり得るケースのごく一部です。

そうした規模の事件ばかりではありません。私たちの日々の生活は、ささやかながらも私たちにとって意味のあるもので成り立っています。たとえば、家のコンピューターがランサムウェアに感染したために、亡くなったばかりのお父さんの写真が失われてしまったとしたらどうでしょう。そうしたものが失われることは、人々の暮らしに非常に大きな影響をもたらします。それこそが、つまり人々にとって大切なものを守ることが、ITセキュリティの目的ではないでしょうか。

コンピューターにさほど詳しくない一般の人に、日々の生活における暗号化の重要性を理解してもらおうとする場合、どうしますか?

効果的な方法の1つは、暗号化をしなければどうなるかという例をいくつか挙げることだと思います。大事な情報が入ったノートPCやUSBメモリを、なくしたり盗まれたりすることは、よくあります。データが暗号化されていなかったら、ノートPCやUSBメモリに近づける人なら誰でも、あなたが見せたくないファイルやデータを見ることができます。他にも、暗号化がなければ、オンライン決済がどうなるか、トラフィックがどのように操作されるかなど、さまざまなケースが考えられます。現実に起こり得る例を示すことが、一番説得力を持ちます。

暗号化アルゴリズムを作成するのは簡単ですか?どれくらい時間がかかるものですか?

信頼できる、つまり数学的に安全な暗号化アルゴリズムを作成するには、数年かけて研究する必要があります。数学の勉強が必要なのは言うまでもありません。ただし、数秒で破られるような単純なものを作るのであれば、ほとんど時間はかかりません。

復号化というのは具体的にはどのような仕組みなのですか?

その話をするにはまず、暗号化技術の種類を区別する必要があります。ストリーム暗号、対称暗号、非対称暗号の3種類に分けてお話ししましょう(3つめのものは公開鍵暗号とも呼ばれます)。

ストリーム暗号の場合、復号化の仕組みは単純です。鍵を元に無限の長さのデータストリームが生成されるので、そのデータストリームと暗号文のXOR(排他的論理和)を求めます(両方のデータセットを印刷すれば、実際にデータ同士を比べて算定できます)。すると元の平文が得られます。

対称暗号の場合は、暗号化プロセスとはちょうど逆の手順を踏みます。たとえば、データを暗号化する際にA、B、Cの順で処理を行った場合、復号化するにはC、B、Aの順で処理を行います。

非対称暗号の場合は、「まさに魔法」です。非対称暗号の種類によっても、仕組みは違ってきます(楕円曲線暗号とRSAではまったく異なります)。ただ、ここで「魔法」と言ったのは、復号プロセスに関与する数学的属性のためです。復号の方法を知ることと、復号プロセスの背後にある数学を本当の意味で理解することとは、別の話です。

もっとも信頼性の高い暗号化アルゴリズムは何ですか?

暗号化アルゴリズムにはさまざまなものがあり、用途に応じて選択できます。原則として、私はNISTのコンテストで入賞したもの(AES/RijndaelSHA-3/KECCAK)を使います。アルゴリズムをどのように使用するか、またどのような種類のシステムで使用するかによっても変わってきます。たとえば、ストレージ容量が限られているなら、RSAよりも鍵のサイズが小さい楕円曲線暗号(ECC)を使うという選択もあります。

量子コンピューターを駆使した総当たり攻撃に対して強いのはどの暗号化方式ですか?

おっと、この質問にお答えするには、もっと勉強してこないと(笑)。現時点で自分がわかる範囲でお答えします。まず、量子コンピューターと普通のコンピューターの違いは、量子コンピューターが通常のビットではなく「キュービット」と呼ばれるものを扱うという点です。1キュービットには2ビットの情報を格納できます。詳しく説明すると長く複雑になるのでここでは簡略化しますが、対称暗号では、鍵のサイズを2倍にすれば、総当たり攻撃による暗号破りに量子コンピューターが使われていても、そのメリットを小さくすることができます。

非対称暗号では、少々話が違ってきます。著名な数学者ピーター・ショア(Peter Shor)氏が発明したショアのアルゴリズム(英語記事)というものがあります。整数の因数分解を多項式時間で処理できるアルゴリズムです。簡単に言えば、整数の因数分解が抱える問題は、多くの公開鍵アルゴリズムが大いに利用する諸問題の1つです。多項式時間(この場合はlog n)で整数の因数分解を処理することができれば、こうしたアルゴリズムのセキュリティを無にすることができます。

暗号化アルゴリズムをプログラムに組み込むにはどうするのですか?

該当するプログラミング言語に合った暗号ライブラリをダウンロードして、APIを使えばよいだけです。そのライブラリから暗号化関数を呼び出して、それをコードで使えばいいのです。

どの企業も「強力な」暗号化アルゴリズムを使用しているのですか?それとも公開ソースから入手したコードに少々手を加えるだけで済ませたいと考えているのですか?

ソフトウェア開発会社を指していると考えて良いでしょうか?もちろん、公開ソースのコードに手を加えるだけで済ませていないことを願います。そのせいで非常にまずい結果になりかねないことを、過去に見聞きしてきましたから。たとえば、Debian Linuxでランダム数値生成ツールのバグが見つかったことがあります(英語記事)。簡単に言うと、コードを書き換えて、強くするつもりが逆に弱くしてしまったのです。実際に、パッケージ(たとえばPOS端末)に同梱されているSDKを使用した場合や、一般公開されているものを使用した場合で問題が起きることが多いようです。OpenSSLのバグが多くのベンダーに多くの問題をもたらしたのも、これと同じ理由からです。

将来、暗号化技術は廃れる、あるいは危機に瀕するのでしょうか?政府機関(GCHQなど)がデータ収集のためにバックドアを仕掛けようとするだろうと言われていますが、そうすると暗号化技術が廃れることになるのですか?

暗号化技術が廃れるとは思いません。そうならないことを願っています。たとえば、DESは相当前に発明されましたが、DESが実装された機器を今でもよく目にします。ですから、このようなDES搭載機器や、それよりも新しいAES搭載機器がまったく使われなくなる日が来るまで、かなり長くかかるだろうと容易に想像が付きます。また、一部の国は(私が住んでいる国もそうですが)、ソフトウェアのバックドアに断固として反対する姿勢を表明し、暗号化を支持する考えを示しています(英語記事)。それだけでなく、(私の記憶が正しければ)OpenSSL開発に対する資金援助もなされています。ですから暗号化が廃れるとは思いません。

TrueCryptのようなシステムの信頼性を判定することは可能でしょうか?それに代わる選択肢として使えるもの、たとえばDropboxのようなクラウドサービスはありますか?

TrueCryptについては、バックドアや実装ミスがないかどうかの監査が行われ、問題は見つかりませんでした。その少し後にTrueCryptのソースコードが公開され、誰でも望めば自分で内容をチェックできるようになりました。脆弱性がいくつか見つかりましたが、バックドアのようなものは見つかっていません。後に、TrueCryptコードをベースとしたスピンオフがオープンソース化されました。つまり、そちらも監査可能で、実際に監査されているということです。結論として、TrueCryptはチェック済みであって、信頼性が判明している、というのが答えです。Dropboxに比べてTrueCryptのようなソリューションが有利な点は、ユーザー自身が鍵を持つところです。DropboxでもDropboxのサーバーに保存される時にファイルは暗号化されますが、鍵はDropbox側が持っています。つまりDropbox側がユーザーのデータにアクセスできるということです。それに対して、TrueCryptに比べてDropboxが有利な点は、Dropbox側がバックアップについて責任を持つ点です。私からのアドバイスがあるとすれば、ファイルをローカルで暗号化すること、ですね。暗号化したら、鍵を自分で持っている限り、好きなところに保存できます。

ゲームでは、クライアントとサーバーの間を行き来するデータは暗号化されるのですか?暗号化されないのであれば、伝送されるデータをサイバー犯罪から守るためにユーザーができることはありますか?

サーバーとの通信が暗号化された接続で行われていることを願っています。そうなっていなければ、不正行為が行われる隙が生まれることになるでしょう。暗号化されていないのであれば、ゲームユーザーの方でできることはありません。サーバーとの間でSSL接続を確立するだけでは意味がありません。サーバーはSSLを認識しないからです。ただ、ここでちょっとしたただし書きを加えたいと思います。サーバーとクライアントの間の接続が暗号化されていない場合でも、サーバーとクライアントの両方を自分でホストしているのであれば、クライアントとサーバーの間にSSLトンネルを確立して、暗号化された通信を行うことができます。

コンピューターゲームに対して確実な保護を講じるには、どうすればいいですか?

確実な保護を講じたいと本当に思うのであれば、バックドアのないハードウェア製品に切り替えるしかないでしょう。それに関しては興味深い動画があるので紹介します。

ソフトウェアだけで保護したいのならば、Denuvoのコンピューターゲーム保護策を参考にしてください(といってもハッキングされたことがありますが)。その仕組みと、どのような対策ができるかについて、こちらから参考になるヒントが得られると思います。

—————-

さて、当社のランサムウェアと暗号化の主力エキスパートであるジョーント・ファン・デア・ウィールを迎えた今回の「エキスパートに聞く」前後編は以上です。読者の皆さんの疑問にお答えできたのであれば幸いです。質問を応募してくださった皆さん、ご協力ありがとうございました!

ヒント