クラウドに保存される価値あるデータが増えるにつれ、それを堅牢に保護することはますます重要になっています。iCloud のようなクラウドデータサービスを取り巻く強力なセキュリティ対策は、エンドユーザー、Apple のようなクラウドサービスプロバイダ、Reincubate のようなエコシステムプラットフォームなど、すべての人に利益をもたらします。
このデータを守る仕組みにはさまざまな形があり、Apple はこれまで、それらをうまく実装してきました。この記事では、Apple と Reincubate のチームが使ってきた技術のいくつかを取り上げます。
保存するデータを減らす(可能であれば)
まず、_多くを保存するより、保存を少なくするほうが_効果的です。たとえば、「写真」の顔認識データは iCloud 写真ライブラリには保存されず、代わりにローカルにキャッシュされるように、データが iCloud に一度も保存されない例があります。Apple の HealthKit、HomeKit、TouchID のデータも同様に扱われ、Android のロック画面の顔認識データも同じです。もちろん、これは多くの場合、利便性と、デバイス間でそのデータを同期する価値とのトレードオフです。部分的な方法をとるシステムもあります。たとえば iMessage は、限られた量のコンテンツをクラウドに保存し、それ以外のデータはデバイス間で直接同期することに頼っています。
Telegram や WhatsApp のようなセキュアなメッセージングシステムは、まったく異なるアプローチをとります。サーバーにデータ(少なくとも大量のデータ)が保存されないため、ユーザーが意味のある形でバックアップと復元を行えるようにするには、デバイスのバックアップに豊富なデータを含める必要があります。ある意味、セキュリティを維持するために、これらのアプリ開発元はそのデータの管理から手を引き、エンドユーザーに委ねているのです。ユーザーは、デバイスをローカルまたはクラウドにバックアップすることを選べます。
このように両極端があり、クラウドにはほとんど何もなく、すべてがバックアップに含まれる WhatsApp と、クラウドですぐに利用できる(Facebook が Web インターフェイスを提供するにはそうである必要がある)ためデバイスのバックアップには何も保存しない Facebook Messenger を対比できます。
ここに正解はありませんが、考えてみる価値はあります。このデータをホストするアプリを使う場合、アプリ開発元がそれを安全に管理する必要があり、何がどのように保存されているのかをユーザーが知らされないことも少なくありません。データを一元的に保存しないアプリを使う場合は、プラットフォームのクラウドに保存されるままにしておく場合(iCloud バックアップや、Google の Android 7.0 以降のデバイスバックアップのように)を除き、エンドユーザー自身がバックアップデータのセキュリティに責任を持たなければなりません。
興味深いことに、下の図のように、アプリメーカーの中には、この位置づけの両極端を併せ持つところもあります。Snapchat アプリはほぼすべてのデータをクラウドに保存しますが、アプリの物理的な拡張である Spectacles は、すべてのデータをデバイス本体にローカルに保存します。

アプリデータのセキュリティに対するさまざまなアプローチ
広く展開されているわけではありませんが、Snapchat Spectacles はかなり安全性が低いものです。「スナップ」ボタンを 7 秒間押し続けることで、ハッカーはそれを新しい電話にペアリングし、正当な所有者が保存していた暗号化されていないスナップを入手できます。これは、Apple Watch で採用されているセキュリティの原則とは際立った対照をなしています。
強力な暗号化
これが、2 つ目の重要な技術、_強力な暗号化_につながります。理想的には、鍵を不完全な形でしか保存しません。データが機密性の高すぎるものとみなされ、デバイスが破壊されたり交換されたりした場合にもアクセスできる形でバックアップできないときは、ほかの技術を使えます。Facebook の「Secret Conversations」機能は、特定のデバイスの使用を必須とすることで、ハードウェア識別子を使ってコンテンツを暗号化します。デバイスを紛失すると、コンテンツは事実上取り戻せなくなります。
同様の技術を使うシステムもあり、_デバイス固有のトークン_を作成して、一度にコンテンツにアクセスできるデバイスの数を限定します。Snapchat と WhatsApp は、それぞれこの変形を使っています。Snapchat にデバイスでログインすると、トークンが作成され、Snapchat のサーバーとそのデバイスの間で共有されます。同じユーザーが別のデバイスでログインすると、新しいトークンが作成されて、それまでクラウドにあったものと置き換わり、最初のデバイスは受信メッセージを復号できなくなるため、強制的にログアウトされます。安全でないシステムでこの技術を使うと、トークンをコピーして別の場所で使えてしまうという明らかな脆弱性があります。root 化した Android や、脱獄した iOS デバイスを使うのがなぜ最悪の考えなのかを説明する根拠が必要なら、これがそうです。また、Snapchat の Web クライアントがすぐには登場しそうにない理由も、これで説明がつきます。
Facebook メッセージの秘密の内容を失う可能性があるというのはまだしも、データの中には、機密性が高く、しかも持ち主にとって非常に価値の高いものがあります。直感に反するようですが、そのデータの個人的な価値が十分に大きければ、復号や復元の方法が数多くある形で保存されることがよくあります。これは、セキュリティと、実用性の低下とを引き換えにしています。たとえば iCloud や Google アカウントには、膨大なデータが関連付けられており、どちらにも、ユーザーのすべてのパスワードを保存する、分散型のクラウドキーチェーンのようなものがあります。それだけでなく、Google が OAuth によって自社のアカウントをほかのサイトの認証手段として推進していることから、こうしたアカウントへのアクセスを取り戻せない形で失うのは、苦い経験になるでしょう。
これらのアカウントは、完全に失うリスクを容易に冒すには価値が高すぎるとみなされるため、_データはクラウドに保存するが、ユーザーだけが保管し、保存されないトークンやパスワードで暗号化する_という、中間的な解決策がとられています。たとえば、Google の Chrome ブラウザをまっさらな状態でインストールしてログインしても、ブラウザに 2 つ目の同期パスワードを入力するまでは、クラウドに保存されたパスワードを利用できないのはこのためです。
暗号化の負担を分かち合う
セキュリティに真剣に向き合い、本質的に正しい考えを持つ Apple の Tim Cook は、ほんの昨年、この技術への信念を明言しました。
For many years, we have used encryption to protect our customers’ personal data because we believe it’s the only way to keep their information safe. We have even put that data out of our own reach, because we believe the contents of your iPhone are none of our business.
— Tim Cook in “A Message to Our Customers”
何より、これはクラウドプロバイダが、政府機関にユーザーのデータをすべて開示せずに済む助けになります。令状によって提出を強制されても、ユーザーのデータを直接さらすことなく提供できます。そのデータは、エンドユーザーだけが持つ鍵でしか行えない追加の復号を必要とするからです。
多要素認証(MFA)、2ファクタ認証(2FA)、2 段階認証(2SV)の場合のように、追加の鍵が特定のデバイスにしか送信されない、あるいは特定のデバイスでしか生成されないこともあります。銀行や VPN では、物理的なカードリーダーやセキュアなシード生成器がよく使われます。これらは、時間ベースのワンタイムパスワード生成器(OTP または TOTP)の一種です。Google と Apple はどちらも、簡易的な SMS ベースの MFA と、完全な 2FA システムを提供しており、Google のものは HOTP/OATH を使い、Apple のものは独自方式です。
セキュリティ機関や法執行機関(LEA)が、この暗号化されたデータを持っていても、復号するエンドユーザーの鍵を持っていない場合、強力なマシンを使って、自動的に推測したパスワードでデータを試す総当たり攻撃を試みることができます。ここでは、Apple の iOS は Google の Android に対して圧倒的に有利です。Apple はデバイスのハードウェアを厳密に管理しているため、自社のハードウェアだけが高速に実行でき、デスクトップ PC などのほかのデバイスでは遅くなるような暗号化技術を設計できるからです。Reincubate が世界で初めて、10.2 からのデータの復号に対応した企業になったとき、重要だったのは、10.2 の仕組みを最初に理解したことだけではありません。Apple の巧妙な技術による高速な復号を、最初に大規模に実現したことでした。一般的なハードウェアでは、復号を 1 回試みるのに数秒かかるようにすることで、ハッカーや LEA が総当たりで破るのは現実的ではなくなりました。
隠すことによるセキュリティ
Apple が特に得意とする技術、「隠すことによるセキュリティ」に触れずに、これらの技術を振り返るわけにはいきません。公開 API や詳細なドキュメントを公開せず、これらのシステムについてあまり語らないことで、同社は、潜在的な攻撃経路にハッカーが気づくのを避けられます。長い間、隠すことへの反論は、情報の公開とオープンソースのほうがより良いセキュリティの結果をもたらす、というものでした。しかしそれは、ほぼすべてのものが使っている重要なオープンソースのセキュリティライブラリである OpenSSL が、根本的に安全ではなく、ほとんどずっとそうだったことが 2014 年に発覚する前の話です。
アプリやクラウドのデータの扱い方を一緒に探りたい方や、さまざまなアプローチの力学をより深く理解したい方は、お問い合わせください。









