6

これまでのところ、全体的なセキュリティの考慮事項についてはほとんど気にしていませんでした。なぜなら、私はプロモーション用で重要性の低い iPhone アプリだけを開発してきたからです。

しかし、現在、私は Mac アプリケーションに取り組んでいます。このアプリケーションは機密性の高いユーザー情報を扱っているため、この問題についてもう少し検討する必要があります。

データを物理的な形式 (ディスク上) で保護するために注意を払う必要があることはわかっていますが、たとえば暗号化するなどして、アプリケーションの通常の使用中にデータがメモリに常駐している間、データがどの程度安全なのか疑問に思います。

NSTextField
や Core Data などのフレームワーク要素のみに基づいて構築されている限り、アプリケーションはどの程度安全ですか?

Cocoa の入力要素は、悪意のある攻撃に対してどの程度敏感ですか? Core Data を使用して保存されたセーブデータを保護する最善の方法は何ですか?

4

2 に答える 2

6

Objective-C は動的言語です。つまり、クラスやクラスの特定のメソッドを実行時に置き換えることができます。たとえば、これは 1Password プラグインが Safari への道を見つけ、Dropbox が Finder への道を見つける方法です。現在、悪意のある攻撃者が、低レベルの mach_inject API や、SIMBL や OSAX インジェクションなどの他のいくつかのわずかに高レベルのメソッドを使用して、アプリにコードをロードする可能性があります。コードがアプリに読み込まれると、Objective-C の動的な性質により、理論的には、NSTextField を攻撃者が選択したサブクラス、またはユーザー入力のリッスンと保存を含むクラス内の特定のメソッドに置き換えることが可能になります。パスワード用に設計された NSTextField の安全なバージョンには、これに対するいくつかの保護があるかもしれませんが、私は持っていません. その趣旨の特定の文書が見つかりませんでした。Security.framework とキーチェーン API は一般に、メモリ内のデータを保護しますが、Objective-C に基づいていないため、干渉することは非常に困難です (まだ可能かもしれませんが)。

于 2011-05-23T19:49:06.073 に答える
0

上記の mgorbach の回答 (非常に優れています) に追加すると、Core Data は次の 4 つの形式でデータを保存できます。

  1. SQLite3 データベース (最も一般的)
  2. .plist ファイル (例: XML)
  3. バイナリーファイル
  4. インメモリ (非永続ストレージ)

.plist、バイナリ ファイル、SQLite のいずれも安全ではありません。.plist ファイルは簡単に読み取ることができます。バイナリ ファイルは扱いにくいですが、私の知る限り、暗号化は使用されておらず、Objective-C コーダーはその内容を簡単に抽出できるはずです。SQLite も安全ではありません。FireFox 用のSQLite Managerや Mac 用のBaseなどのツールを使用すると、Core Data SQLite データを簡単に読み取ることができます。

Core Data の保存方法は安全ではないため、ディスクにコミットする前にデータを暗号化することをお勧めします。

これは、メモリ内攻撃を考慮していません。もちろん、これが成功するためには、通常、システムが何らかの方法で侵害されている必要があります。

エンド ユーザーが FileVault を有効にし (ホーム フォルダー全体を暗号化)、安全な仮想メモリを有効にし、ファイアウォールをオンにし、強力なパスワードを使用している場合、多くの攻撃に対してかなり安全です。

于 2011-05-23T20:19:18.443 に答える