多重のデータ保護
2020年6月22日
Appleのデバイスには、システムと個人のデータを保護するための複数の暗号化機能が備わっています。一部の機能はデフォルトで有効になっており、開発者がこれらを意識しなければならないことはほとんどありません。その他の機能、例えばデータ保護などについては、明確な設計判断によって、個人データ保護のための最善策を選択する必要があるでしょう。
macOS Big Surは、新たに2つのデータセキュリティ機能を追加します。具体的には、署名済みシステムボリューム(SSV)と、Apple SiliconによるMacシステムのデータ保護です。
署名済みシステムボリューム
macOS Catalinaにおいて、Appleは「読み取り専用のシステムボリューム」(https://support.apple.com/ja-jp/HT210650)を導入しました。これはシステムコンテンツ専用の独立ボリュームです。macOS Big Surでは、システムコンテンツを署名済みシステムボリューム(SSV)に格納するための強力なクリプトグラフィックプロテクションが追加されました。SSVは、ルーティーン上のシステムコンテンツの整合性を検証し、Appleによる有効な暗号署名を持たないすべてのデータ(コードおよび非コード)を拒否するカーネルメカニズムを有します。
SSVは、オペレーティングシステムの一部を成すすべてのAppleソフトウェアの改竄防止に使われます。また、macOSのソフトウェアアップデートの信頼性と安全性を高めます。アップデートが実施できない場合、SSVは、APFSスナップショットを利用するので、古いシステムバージョンは再インストールすることなくリストアされます。
ハッシュとseal
APFSはその導入以来、ディスク上の非クリプトグラフィックチェックサムを通じて、ファイルシステムメタデータの整合性を提供してきました。SSVは、クリプトグラフィックハッシュに転換し、これを延長してファイルデータの全バイトを包摂することで整合メカニズムを強化します。ディスクからのデータは、リードパスでハッシュ化され、そのハッシュ値がファイルシステムのメタデータの期待値と比較されます。不整合の場合、システムはデータが改竄されたものと見なし、リクエストを出したソフトウェアにデータを返しません。
各SSV SHA-256ハッシュは主なファイルシステムメタデータツリーに格納されており、それ自体もハッシュ化されます。また、ツリーの各ノードはマークルツリーと同様に、子ノードのハッシュの整合性を再帰的に検証します。このように、ルートノードのハッシュ値(sealと呼ばれる)は、SSV内のデータの全バイトをカバーしており、暗号署名がシステムボリューム全体をカバーしていることを意味します。macOSのインストールやアップデートの際には、Appleの署名と一致するかどうか、デバイス上でsealの検証が行われます。さらに、sealはブートするたびに検証されます。具体的には、カーネルのロード前は、ブートローダー(Apple T2セキュリティチップを含むMacシステム上のセキュアブートチェーンの一部)がsealを検証します。検証に失敗すると、ブートプロセスは止まり、操作者にmacOSの再インストールを促します。
開発者が知っておくべきカーネル拡張、その他の情報
署名済みシステムボリュームはほとんどの開発者にとってわかりやすい機能です。ルートボリュームを扱うカーネル開発者は、「csrutil」コマンドラインツールで利用可能な、新しいシステム整合性保護モードを利用してこれを行うことができます。このモードを有効にすると、起動に使用する「apfs_systemsnapshot」を使ってカスタムスナップショットのタグ付けが可能になります。
Appleはまもなく、オンディスクの新しいSSVの詳細を発表します。Appのデータバックアップやフォレンジックサーチを扱う場合は、それを理解して検証するための追加作業が必要です。
加えて、ASRボリュームの複製またはmacOSインストーラを通じて、ブート可能なmacOSインスタンスが作成されることはさらに重要です。コンテンツを新しいAPFSボリュームに手動で、または「rsync」のようなツールによってコピーすると、sealや必要とされるクリプトグラフィックSSVメタデータは保存されず、ブート可能なmacOSが生成されなくなります。
Learn more about Data Protection classes