キーチェーンは、 AppleがmacOS向けに開発したパスワード管理システムです。Mac OS 8.6で初めて導入され、それ以降のすべてのバージョンのオペレーティングシステムとiOSに搭載されています。キーチェーンには、Webサイト、FTPサーバー、SSHアカウント、ネットワーク共有、無線ネットワーク、グループウェアアプリケーション、暗号化されたディスクイメージのパスワード、秘密鍵、証明書、安全なメモなど、さまざまな種類のデータを格納できます。キーチェーン内のデータの一部(主にパスワード)は、 macOS SequoiaおよびiOS 18に組み込まれているアプリ「パスワード」の使いやすいインターフェースを使用して表示および編集できます。また、 Appleの以前のバージョンのオペレーティングシステムでは、 「システム設定」 / 「設定」からアクセスできます。
キーチェーンは、1990年代初頭にAppleの電子メールシステムであるPowerTalk向けに開発されました。PowerTalkは、さまざまなメールサーバーやオンラインサービスからメールを取得できるプラグインなど、多くの機能を備えていました。キーチェーンの概念は、このコードから自然に生まれ、PowerTalkが接続できるさまざまな電子メールシステムへのユーザーのログイン認証情報を管理するために使用されました。
暗号化されているためパスワードは簡単には取得できませんでしたが、シンプルなインターフェースのおかげで、ユーザーはシステムごとに異なるパスワードを設定でき、パスワードを忘れる心配もありませんでした。単一のパスワードでファイルを開き、すべてのパスワードを取得できたからです。当時、このようなコンセプトは他のプラットフォームでは利用できませんでした。キーチェーンはPowerTalkの中でも明らかに「単体」で役立つ数少ない機能の一つであり、Mac OSの基本機能として採用されるべきだと考えられました。しかし、社内の政治的な事情により、PowerTalkシステム内に留まり、ごく一部のMacユーザーしか利用できませんでした。
キーチェーンのコンセプトが復活したのは、1997年にスティーブ・ジョブズが復帰してからで、当時すでに開発が終了していたPowerTalkから再び注目を集めるようになった。この頃にはキーチェーンという概念はそれほど珍しいものではなくなっていたものの、特定のアプリケーションソフトウェア(通常はウェブブラウザ)と連携していないキーチェーンシステムは依然として稀だった。キーチェーンはその後Mac OS 9の標準機能となり、Mac OS Xの最初の商用バージョンにも搭載された。
macOS では、キーチェーン ファイルは~/Library/Keychains/(およびサブディレクトリ)、、、/Library/Keychains/に保存され/Network/Library/Keychains/、キーチェーン アクセス GUI アプリケーションはアプリケーション フォルダのユーティリティ フォルダにあります。[ 1 ] [ 2 ]これは、APSL-2.0の条件に基づいてリリースされた無料のオープンソースソフトウェアです。[ 3 ]キーチェーン アクセスのコマンドライン相当のコマンドは です。/usr/bin/security
キーチェーンデータベースは、テーブルごと、行ごとにAES-256-GCMで暗号化されます。各認証情報が復号化されるタイミング、復号化された状態が維持される期間、暗号化された認証情報がiCloudに同期されるかどうかは、保存されるデータの種類によって異なり、AppleサポートWebサイトに記載されています。[ 4 ]
デフォルトのキーチェーンファイルはloginキーチェーンであり、通常はユーザーのログインパスワードでログイン時にロックが解除されますが、このキーチェーンのパスワードはユーザーのログインパスワードとは異なるものにすることもでき、利便性を多少犠牲にしてセキュリティが強化されます。[ 5 ] キーチェーンアクセスアプリケーションでは、キーチェーンに空のパスワードを設定することはできません。
キーチェーンは、コンピュータが一定時間アイドル状態になると自動的に「ロック」されるように設定できます[ 6 ]。また、キーチェーンアクセスアプリケーションから手動でロックすることもできます。ロックされている場合、キーチェーンに次にアクセスするときにパスワードを再入力してロックを解除する必要があります。ファイルを~/Library/Keychains/新しいファイルで上書きした場合(復元操作の一部としてなど)、キーチェーンがロックされ、次回アクセス時にパスワードが必要になります。
ログインキーチェーンがログインパスワードで保護されている場合、macOS でログイン中のセッション内でログインパスワードが変更されるたびに、キーチェーンのパスワードも変更されます。Mac と非 Mac が共有されているネットワークでは、非 Mac システムからユーザーのログインパスワードが変更されると、ログインキーチェーンのパスワードの同期が失われる可能性があります。また、Active Directory や Open Directory などのディレクトリサービスからパスワードが変更された場合、またはシステム環境設定などを使用して別の管理者アカウントからパスワードが変更された場合も同様です。ネットワーク管理者の中には、ログアウト時にキーチェーンファイルを削除して、次回のログイン時に新しいキーチェーンファイルを作成するようにしている場合があります。これは、ログインパスワードが変更されていなくても、キーチェーンのパスワードがセッション間で保持されないことを意味します。このような場合、ユーザーは~/Library/Keychains/バックアップからキーチェーンファイルを復元できますが、復元するとキーチェーンがロックされるため、次回使用時にロックを解除する必要があります。
Mac OS Xのキーチェーンアクセスを使用して生成された個人用キーチェーンの同期を可能にするサードパーティ製ソフトウェアアプリケーションが開発されました。これらの標準的なキーチェーンアクセスで生成されたユーザーキーチェーンは、Jinx Software の Patrick Stein が開発した 2 つのキーチェーン同期アプリ (1 つはMac OS X用、もう 1 つは Keychain2Go と呼ばれる iOS 用) を使用して、デバイス (iPhone - デスクトップ Apple コンピュータ) 間で同期できます。Keychain2Go は、Apple がMac OS X Sierra 10.12でキーチェーンとキーチェーンへのアクセスに対して行った制限に対応するために、開発者によって正常に更新されませんでした。[ 7 ]
KeychainはiOSとmacOSの両方に同梱されています。iOS版は、モバイルデバイス上で動作するアプリケーションは通常、ごく基本的なKeychain機能しか必要としないため、よりシンプルな設計になっています。例えば、ACL(アクセス制御リスト)や、異なるアプリ間でのKeychainアイテムの共有といった機能は搭載されていません。そのため、iOS版のKeychainアイテムは、それを作成したアプリからのみアクセス可能です。
Macユーザーにとって機密情報を保存するデフォルトのストレージであるキーチェーンは、セキュリティ攻撃の主要な標的となっている。
2019年、18歳のドイツ人セキュリティ研究者リヌス・ヘンツェは、キーチェーンからパスワードを盗むハッキング手法「KeySteal」を実演した。当初、彼はハッキングの詳細を伏せ、AppleにmacOSのバグ報奨金制度の設立を要求した。しかし、ヘンツェが後にこのハッキング手法を公表した時点では、Appleはそのような制度を設けていなかった。この手法は、macOSのユーティリティを装ったSafariのセキュリティサービスへのアクセスを利用しており、IT管理者がキーチェーンを操作することを可能にするものだった。[ 8 ]