6

Mac アプリケーションでは、サーバーから送信されたログイン ユーザーの秘密鍵を安全な方法で保存し、必要に応じてプログラムで取得する必要があります。キーチェーンが秘密鍵を保管するのに最適な場所であることはわかっています。これを実現するためのサンプル コードはありますか?

「Security.framework」の「SecKeychainItemImport」メソッドを使用して秘密鍵をキーチェーンに追加できますが、キーチェーンから秘密鍵を取得する際に問題が発生します。キーチェーンから秘密鍵を取得するために、「SecKeychainItemCopyAttributesAndData」および「SecKeychainItemCopyContent」メソッドを使用してみました。しかし、これまでのところ運がありません。

「.ssh」隠しフォルダー内の秘密鍵の保管について言及しているブログも読みました。しかし、キーチェーン内に秘密鍵を保存すると、別のレベルのセキュリティが提供され、他の誰かが秘密鍵に簡単にアクセスできないようになると思います.

4

2 に答える 2

4

キーチェーンの目的の1つは、データをアプリケーションに公開しないことで秘密鍵を保護することです。秘密鍵が誤って公開されるのを防ぐために、これらのアイテムにはCSSM_KEYATTR_EXTRACTABLE | CSSM_KEYATTR_SENSITIVEデフォルトでフラグが付けられています。つまり、を使用SecKeychainItemExportして、パスフレーズで保護された形式でのみデータを取得することができます。

セキュリティフレームワークには、アプリケーションのアドレス空間に生のキーデータを配置することなく、提供されたキーアイテムを使用してデータを暗号化/復号化/署名/検証するなどのAPIがあります。(これらの操作は通常、別の特権プロセスによって実行されます。)

何らかの理由で秘密鍵の生のビットにアクセスする必要がある場合は、秘密鍵をキーチェーンにインポートするときにこれに備える必要があります。のパラメータで(つまり、センシティブビットなしで)に設定keyAttributesする必要があります。CSSM_KEYATTR_EXTRACTABLEkeyParamsSecKeychainItemImport

于 2011-10-29T20:30:31.947 に答える
0

はい、キーチェーンはここで使用するものです。最初にドキュメントを読んでから、Apple のサンプル コードを見てください。

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html

http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html

于 2011-06-29T13:26:06.840 に答える