2

HIPAA に準拠する必要がある iOS アプリを作成しています。アプリはできればオフラインで機能する必要があるため、データは電話に保存する必要があります。

だからここに私がやろうと思っていたことがあります:

  • 最初の起動時に、ユーザーはユーザー名、パスワード、およびパスフレーズを入力します。サーバーは、デバイスのユーザー名、パスワード、および UDID (Advertising ID) を使用してユーザーを認証します。サーバーとの通信は HTTPS を使用して行われます。

認証が成功した場合:

  • ユーザー名はキー チェーンに格納されます。
  • パスフレーズ+UDID は、OpenSSL ライブラリで利用可能な「PBKDF2」を使用してハッシュされます。こちらもキーチェーンに収納。この操作のソルトはキー チェーンに格納されます。以降の検証では、salt がキー チェーンから取得されます。

  • ユーザー名 + パスフレーズ + UDID + 静的キーは、「PBKDF2」を使用してキーを生成するために使用され、再びソルトがキー チェーンに格納され、その後の使用からキー チェーンから取得されます。生成されたキーはメモリに保存され、キーが生成された後はパスフレーズは忘れられます。Static-Key はコード内に存在します。

  • アプリがバックグラウンドになると、キーは忘れられます。つまり、変数は nil に設定されます。

  • アプリを再開または再起動すると、パスフレーズを入力する画面がユーザーに表示されます。入力されたパスフレーズが正しい場合、アプリはキーを再度生成します。それ以外の場合、約 5 回連続して試行すると、アプリはデータを消去し、ユーザーをログイン画面に戻します (可能であれば、必要な情報を含むイベントに関するメッセージをサーバーに送信します)。

ここに私の2つの質問があります:

  • project-imax/EncryptedCoreData の安定性を知りたいですか? それらが多対多の関係をサポートしていないことは知っています。しかし、関係を表すエンティティを作成することで、この問題を回避しました (これは、3 番目のテーブルを使用して実際の SQL DB で行われる方法と同様です)。暗号化されたコア データを使用した経験のある方から、その経験と直面した問題についてお聞きしたいと思います。特に、これは個々の属性のパフォーマンスの暗号化と比較してどうですか?

  • 次に、私が導入しようとしているセキュリティ対策に問題はありますか。あなたが言及したい提案や改善。

4

1 に答える 1

1

たは、

2 番目の質問に答える:

iOS のデータ セキュリティによって既にディスク ファイルが暗号化されており、アプリでこのグローバル ポリシーをアサートできると考えたことはありますか?

この質問に答えられるのは弁護士だけですが、法律で求められていることを正確に尋ねる必要があります。キーチェーンで適切なパスワード管理を行い、クラウドやデスクトップ マシンへのデータのバックアップを排除することで、Apple のセキュリティは HIPAA 対応であることがわかると思います。

Apple は最近、iOS セキュリティに関する強力な議論を発表しました (2014 年 2 月)。とても啓発的な読み物です。Apple の既存のセキュリティが十分でない場合、暗号化された Core Data プロジェクトが十分であるとは思えません。それでも独自のセキュリティを実装する必要がある場合は、Schneier と Ferguson の「Practical Cryptography」を読んで理解することから始めてください。

アンドリュー・アノン

PS あなたは、Apple キーチェーンの機能を複製するために、キー管理にかなりの複雑さを追加することを選択しました。コードを縮小することをお勧めします。「失敗する」場合。コードのすべての行がセキュリティの脆弱性です。キーチェーンの機能を複製するために多くのコードを実装しています。

于 2014-03-15T13:56:32.393 に答える