ユーザーがProtected Health Information(PHI)を保存/変更できるiOSアプリを開発しています。このアプリは、プロセスの大部分でインターネットに接続せずにユーザーがそうできるようにする必要があります。データを暗号化する必要がありますが、コードにキーを格納したくないため、データなしでデータにアクセスできるようにする必要があるため、適切に暗号化する方法を解決するのに苦労していますサーバーへの接続。
私たちの実用的なアイデアは、ユーザーのパスワード(デバイスに保存されない)を使用してデータを暗号化することですが、他のユーザーが自分のログインを介してそのデバイスのデータを変更/アクセスする必要があるという問題が発生します。 (1台のiPadが故障した場合)
私たちが試してみたが安全ではないと思われるアイデアは:
-コードに静的キーを保存する
-サーバーによって指定された動的キーをローカルSQLデータベースに保存します
-サーバーから提供された動的キーをiOSキーチェーンに保存する
データの取得時に両方のユーザーがログインし、両方のパスワードで暗号化することを検討していましたが、1人のユーザーが勤務していないか近くにいないとデータがロックされるというユーザー関連の問題が発生しました。
質問: PHIをiOSで適切に保護して、アクセスを許可されているユーザーが引き続きアクセスできるようにし、オフラインになる可能性があり、データを1人だけが表示できるように制限しない方法-ログインを保存しないことが望ましい(ユーザーの資格情報を保存したくないため)
フォローアップ:これが実現可能でない場合、上記のニーズのほとんどを満たすために取るべき最善の策は何でしょうか?
編集:明確化
認証は、データをプルダウン/送信するときに最初に行われ、プルダウンされたデータを暗号化して、以前に認証されたユーザーがキーを保存せずにアクセスできるようにする必要があります。
免責事項:私の会社はHIPAA準拠のiPodアプリケーションを作成しています。私はコンプライアンスを担当しています...
IPhoneは、箱から出してすぐに多くのHIPAA要件を実際に満たします。デバイスでパスコードが設定されると、コンテンツが暗号化されます。これにより、多くのHIPAA要件、特に保管時の暗号化が処理されます。
データをダウンロードするには、TLSまたは暗号化された接続を使用して、転送中にデータが暗号化されるようにする必要があります。
ユーザーがアプリケーションを使用するためにデバイスにパスコードを設定するように強制する.mobileconfigファイル内のWebサイトにセキュリティポリシーをダウンロードしてプッシュするようにアプリケーションを構成する必要があります。パスコードが設定されている場合、デバイスは暗号化されています。したがって、.mobileconfigはこれを強制します。
また、キーチェーンの使用を活用して、ユーザーが提供するあらゆるタイプのトークンまたは資格情報を保管する必要があります。簡単にするために、アプリで4桁のパスコードを要求して、キーチェーンからこれらの資格情報のロックを解除することができます。電話でパスワードを再入力する必要はありません。
アプリがサーバーに常時ネットワーク接続していない場合は、同期ボタンを作成できます。これにより、関連データがローカルファイルシステムに同期されます。変更が加えられると、アプリが再度同期するように指示されるまで、ローカルに保存されます。この場合、変更はマスターWebアプリデータベースと調整されます。
最後に、これはiOS HIPAAコンプライアンスの完全な説明ではありません。HIPAAで必要なセキュリティポリシーやその他のドキュメントを作成するために弁護士に相談することをお勧めします。
これはかなり古い質問であることはわかっていますが、別の検索の一部として出くわし、他の人が同様の課題に直面している場合に備えて、ここでもう1つアイデアを捨てると思いました。
エンベロープ暗号化を確認することをお勧めします。
使用できる戦略の一例は次のとおりです。
仮定:
PHIがあり、ユーザーAとユーザーBがいて、各ユーザーは異なるパスワードを持っています。両方のユーザーがそれぞれのパスワードを入力した後、PHIに完全にアクセスできるようにします。ユーザーログインは、ユーザー名とパスワードで構成されます。
戦略:
PHIを秘密鍵で暗号化します(Kとしましょう)。ユーザーごとに、ユーザー名のハッシュ(md5など)とユーザーのパスワードで暗号化されたKのバージョン(暗号化されたキーをeKと呼びます)を含むデータテーブルをデバイスに送信します。
したがって、PHIにアクセスするために、ユーザーAは自分のユーザー名とパスワードを入力すると、次のことが順に行われます。
これで、ユーザーAがログアウトし、ユーザーBがユーザー名とパスワードでログインできるようになりました。これにより、同じKの復号化バージョンが生成され、必要に応じてPHIの復号化と再暗号化に使用できます。
考慮事項
ユーザー名をハッシュすることにより、実際のユーザー名をデータテーブルに開示することを避けます。
この戦略では、暗号化キー自体を格納できますが、適切なユーザー名/パスワードを持たないユーザーはキーにアクセスできず、PHIを復号化できません。
私はまもなくHIPAAを扱うキャリアを開始する予定であり、そのためにブラッシュアップしていますが、これまでのところ、PCIコンプライアンスの経験しかありません。私がこれまでに調査した内容についての私の理解は、ePHI自体とそのePHIのメタデータ(作成日時/ファイル名、最終更新日--- ref。 http:/ /www.hipaasecurenow.com/index.php/dropbox-is-not-hipaa-compatible/ )は暗号化する必要があります。
保護したいデータを保存する場所にキーを保存することは危険な動きのようです。サンバイザーに車の鍵を保管するように。
さらに、HIPAAコンプライアンスの一部は物理的なセキュリティです。そのモバイルユーザーの電話を物理的にどのように制御していますか?私の2セントにとって、最善の方法は、オフライン機能を忘れて、常にインターネット接続を必要とするかもしれないが安全なアプリに集中することです。
あなたの質問は「信頼されていないデバイスでオフライン認証と承認を行う方法は?」だと思います。
この質問に対する簡単な答えは、あなたはできません。
長い答えは次のとおりです。ブルーレイプレーヤーやビデオゲームコンソールのために、この問題を回避しようとした人もいます。この問題を解決するには、ユーザーがデバイスを永続的に制御できないようにすることで、信頼できないデバイスを信頼できるデバイスにしようとします。新しいブルーレイをプレイするには更新されたプレーヤーが必要であり、脆弱性のあるプレイヤーはブルーレイコンソーシアムによってブラックリストに載っています。コンソールは、(他のメカニズムと組み合わせて)その秘密を保護するために、不正防止の暗号コンポーネントを使用します。これらの2つの例の詳細については、ウィキペディアからDRM管理に関するセクションを探すことから始めてください。 ただし、ビデオゲームとブルーレイは保護された健康情報ではありません。彼らは時々壊れる保護メカニズムに耐えることができ、それを計画し、回復することができます。さらに、デバイスを制御できず、デバイスと同様のセキュリティメカニズムを実装できません。
まず、多くのユーザーの認証を忘れてニーズを簡略化することをお勧めします。 iOSアプリのユーザーを認証し、PHIの責任を彼に移すだけです。その後、彼は自分のデータを共有できますが、結果として生じる問題は完全に彼の責任です。ユーザーは、HIPAAに引き続き準拠するための手順を実行する必要があります(アプリが彼を支援できる場合があります)。次に、オフライン認証を忘れます。関連するデータと権利を取得する前に、オンラインで彼を認証します。ただし、デバイスを制御できないため、これらの権限を強く適用することはできません。次に、アプリケーションがそれらを強制しようとする可能性があり、アプリケーションを変更またはリバースエンジニアリングすることを違法にすることができます。第3に、暗号化されたデータを、それらを復号化するためのキーと共に保存しても意味がありません。アプリケーションの価値を上げることなく、開発とメンテナンスのコストを増やすだけです。 HIPAAが暗号化を義務付けている場合は、iOSで暗号化を管理します。APIを使用して、ユーザーパスワードやセキュリティトークンなどで暗号化します。
あなたのニーズにより適した他のソリューションがあるかもしれません。