Appleは、iCloudキーチェーンに保存したパスキーは、「E2E(エンドツーエンド)暗号化」されているから「Appleでも確認できない」と説明されます。
でも、Appleアカウントにサインインすると、新しいiPhoneでもパスキーが同期されます。
これは、元のiPhoneの外にパスキーに関する情報が転送されていることになるのではないでしょうか?
いったい、Appleは、iCloudキーチェーンに保存した保存したパスキーやパスワードについてどこまで知ることができるのでしょうか。
1. 新しいiPhoneでもパスキーが使える?
新しいiPhoneを手に入れて、Appleアカウントでサインインすると、古いiPhoneに保存していたパスキーが、新しいiPhoneでもすぐに使えるようになります。
ここで疑問が湧きます。
E2E暗号化されたデータは、「送信側と受信側のデバイスだけが復号できる」はずです。
それなら、パスキーは古いiPhoneからしか利用できないはずです。
でも新しいiPhoneは、サインインしただけで復号できてしまう。
これはどういうことでしょう?
答えは、E2E暗号化の秘密鍵そのものが、デバイス間で共有されているからです。
1.1. Appleサーバーが秘密鍵を転送している
Appleの技術文書によると、「秘密鍵を含むサービスキーのペアは、ユーザーの信頼できるデバイス上でローカルに作成され、iCloudキーチェーンのセキュリティを使用してユーザーのほかのデバイスに転送されます」とあります。
ここで重要なのは、この秘密鍵の転送プロセスを誰が仲介しているかですよね。
これは「iCloudキーチェーンの復元と同期のフローはAppleのサーバによって仲介されます」と明記されています。
つまり、デバイス間の秘密鍵は、Appleのサーバーが仲介して受け渡しされます。
新しいデバイスがサインインすると、そのデバイスは秘密鍵を受け取って復号できます。
確かに、E2E暗号化の秘密鍵が、iCloudキーチェーンに保存されているわけではありません。
しかし、暗号化された秘密鍵は、必ずAppleのサーバーを経由して新しいデバイスに届くのです。
もちろん、E2E暗号化の秘密鍵も暗号化されてから、新しいiPhoneに転送されます。
新しいiPhoneでしか復号できません。
二重三重の暗号化です。
そのため、Appleは「暗号化により、Appleのサーバがユーザのキーチェーンデータにアクセスすることはできません」と説明しています。
2. 「マスター端末」というパターン
Appleサーバーでは秘密鍵が復号できないからといって、取得できないと断定はできません。
というのも、Appleが「マスター端末」や「マスターアカウント」のようなものを用意して、個人のアカウントにサインインしたら?
秘密鍵を取得できてしまうのではないでしょうか。
Appleには、一方でユーザーが不正利用を防止する義務もあります。
そのため、個人アカウントのデータを必要に応じて最小限に把握しているからです。
もちろん、Appleがパスキーやパスワードを勝手に盗み見るようなことはない、と信じたいです。
また、管理者用のアカウントを作っても、「何でも」はアクセスできないようにしたり、何にアクセスしたのか捕捉できるような仕組みにしているはずです。
ただ、システム設計として「技術的に不可能」なのと、「やらないと約束している」のとでは、大きな違いがあります。
2.1. 法執行機関からの要請という現実
もう一つ考えておくべきことがあります。
それは法執行機関からの要請です。
Appleが現時点で鍵を取得できない設計だとしても、将来、法律によって「バックドアを作れ」と命じられたら?
システムが変更される可能性はゼロではありません。
実際、過去には暗号化サービスが政府の圧力で仕様変更を余儀なくされた事例もあります。
2.2. ソースコードは非公開
ちなみに、iOSやiCloudのソースコードは非公開です。
そのため、本当にAppleのサーバーが秘密鍵にアクセスできない設計になっているのか、私たちには確かめようがありません。
3. 安全性の前提は信頼性
もちろん、iCloudキーチェーンが危険だと言いたいわけではありません。
一般的な利用においては、十分に安全だと思います。
ただ、「E2E暗号化されているから技術的に絶対安全」とまでは言い切れないことは理解しておく必要があります。
この安全性には、「Appleが、内部の従業員による、個人アカウントへのアクセスを適切に管理している」という前提が必要です。
E2E暗号化の本来の意味は、「通信経路上の第三者が内容を見られない」ことです。
でも、サービス提供者自身が鍵を取得できるかどうかは、また別の問題なのです。
3.1. 検証可能なら安全か?
結局のところ、iCloudキーチェーンを使うということは、Appleを信頼するということです。
私自身は、Appleが悪意を持ってユーザーデータにアクセスするとは思っていません。
でも、「技術的に不可能」と「やらないと約束」の違いは、頭の片隅に置いておきたいと思います。
ちなみに、サービス提供者さえもアクセスできない完全な暗号化を求めるなら、オープンソースで検証可能なパスワードマネージャーを選ぶのも一つの方法です。
ただし、オープンソースのパスワードマネージャーの場合は、ソースコードが公開されているため、仕組みに潜むセキュリティ上の脆弱性も悪用されやすいというリスクがあります。
どちらを選ぶかは、自分のセキュリティに対する考え方次第ですね。