私のシナリオは次のとおりです:
さらに機密データをダウンロードできるAPIに接続できます。アプリケーションは以下の環境/シナリオでAPIにアクセスするため、認証はBASIC認証で処理され、暗号化されていないデータはネットワーク経由で転送されます。
これまでのところ、私の限られた知識に基づいて、ネットワーク経由で転送される機密データのセキュリティはカバーされています。ただし、ローカルWebSQLストレージで「保存」され、WebアプリケーションのHTMLページでフォーマットされたデータは安全ではありません。
現在の懸念事項は、モバイルデバイスに機密データが含まれていて、紛失または盗難に遭った場合に、機密データにアクセスされるリスクを最小限に抑える方法です。
アプリケーションはサーバーと対話せずに使用できる必要があるため、ソフトウェアベースの暗号化はクライアント自体に含まれます。つまり、熟練した侵入者がハードウェア暗号化を迂回できるように、WebSQLデータベースを暗号化しようとしても、おそらく暗号化/復号化ロジックも決定できるので、おそらく意味がありません。
保存データの暗号化のための提案されたソリューションは、 iOS および Android デバイスの一部である組み込みのハードウェア暗号化を使用することです。ロック画面。関連する「リモートワイプ」機能も使用できます。
Q:提案されたソリューションはどの程度「安全」ですか?組み込みのハードウェア暗号化では不十分な場合、サーバーとの対話を必要とせずにWebSQLデータのクライアント側の暗号化を実装するための最良の戦略は何ですか?
暗号化/復号化コードにアクセスしてリバースエンジニアリングできるため、ソフトウェアベースのデータ暗号化/復号化ソリューションを実装しても、セキュリティ上のメリットはほとんどありませんか?それは私だけですか、それとも単にマーケティングの目的、つまり暗号化されていると「伝える」ことができることの主な利点ですか?
興味深いリンク:
また...
基礎となるストレージメカニズムは、ユーザーエージェントによって異なる場合があります。つまり、アプリケーションが必要とする認証は、データが保存されているマシンに対するローカル権限を持つユーザーによってバイパスされる可能性があります。したがって、機密情報をローカルストレージに保存しないことをお勧めします。
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Client-side_databases
これは、唯一の安全なオプションがハイブリッドアプリケーションを作成することであることを意味しますか?例えば。 Phonegapを使用します。これははるかに安全ですか?とにかく同じ方法で暗号化/復号化するJavaScriptを表示するようにリバースエンジニアリングできますか?
私は以前、中央サーバーと通信する必要があるがネットワーク接続が存在しないときにも動作する必要があるポータブルデバイスで実行される医療アプリケーションに取り組んできました。
最初に行うことは、適切なセキュリティ分析を行うことです。データに対するリスクは何ですか。また、それらのリスクからデータを保護するためにどのように管理していますか。例えば.
何が適切かは、機密データの性質と関連する製品によって異なりますが、ガイドを提供するために、ここにその医療製品の答えを示します...
ネットワーク上のデータはAES-256によって暗号化され、可能な限り、専用の専用回線を介してサーバーデータセンターに接続されたプライベートAPNネットワークを使用しました。
デバイスには、AES-256で暗号化された機密の医療情報を保存しましたが、患者IDはありませんでした。暗号化キーはデバイス固有であったため、データを別のデバイスにコピーしてデータファイルにアクセスすることはできませんでした。
デバイスが3桁のピン番号で制御されたソフトウェアへのアクセス。患者は通常、単純なピン(例:123または147)を選択したため、これはおそらく最も弱い側面でした。
各デバイスは、サーバーへのクライアント証明書で自身を識別し、デバイスがサーバーの期待に一致することを検証するために、サーバーに追加のハードウェア提供の識別子を提供する必要がありました。サーバーだけがそのデバイスを使用した患者の身元を知っており、サーバーの識別は、デバイスがサーバーへの接続を許可されているかどうか、およびどのデバイスであるかを確認することだけでした。
私たちのケースでは、過去の履歴測定にアクセスできることが患者にとって重要でした。そのため、デバイスが過去24時間にサーバーでの認証に成功し、最後に成功したソケット接続によりデバイスが認証済み。
モバイルWebアプリ:これがブラウザーから実行され、Phonegapなどのネイティブシェルで実行されていないWebアプリの場合、どのようにオフラインで使用しますか?既にロードされていてリクエストを行わない場合(接続ジッターに悩まされないようにするため)、はい、それは便利ですが、これは接続なしではアプリを起動できないことを意味しますよね?クライアントに多くのデータを保持しているので、Phonegapアプリの方が適しているでしょう。
セキュリティ:ネイティブストレージの暗号化がどれほど安全かはわかりません(ただし、いずれにしても解読できないとは思いません)。ただし、ローカルデータのセキュリティはアプリの責任ではありません-すでに述べたように、スクリーンロックのパスワードでデバイスを保護できます。また、アプリは毎回の起動時にログインを要求しますか?ユーザーがロードするたびにユーザーに強制的にサインインさせたいとは思わないでしょう。私の推測が正しい場合、侵入者がアプリを起動してデータを読み取るのを止めているのは何ですか?
機密データのキャッシュ:しないでください。
まず第一に
クライアントに機密データを保存することは、ユーザーとデータの所有者の間の合意事項です。ソフトウェアライセンスの詳細、および提供すると主張するプライバシーポリシーを理解する必要があります。
堅牢な同期ポリシーを使用せずにデータをクライアントアプリケーションに保存することを決定すると、データの一貫性の問題が発生する可能性があります(安全性を除く)。
データをクライアントアプリケーションに保存することを決定すると、同期の複雑なシステムが発生し、データベースのワークロードが増加する可能性があります(a hell)。
私は個人的に、デバイスはアーキテクチャの一部としてではなく、端末としてのみ使用されるべきだと信じています。
これらの理由により、データをローカルに保存することは適切なオプションではなく、ニコライに+1する
機密データのキャッシュ:しないでください。
とはいえ、要求が必須であり、顧客/所有者にオンデマンドアーキテクチャに移動するように説得する方法がない場合は、クライアント内のセキュリティを強化するためのすべてのトリックを見つける必要があります。権利、プライバシー、および一般的にデータへのアクセスと使用を保護します。
提案(これは機会の1つです)は、次の重要な点を考慮してください。
セッション中にデータを暗号化するためのキーは、ログインプロセスの後に生成されます。 2番目の要素は重要な要素であり、「安全でない」と定義できる製品の安全性を最大化します。
このメカニズムにより、デバイスが盗まれた場合(たとえば)、ローカルで利用可能なデータは1つのセッションに制限されますが、最も重要なのは、デバイスを使用してリモートシステムにアクセスできないことです。
イントラネット内で使用するために特別に開発された製品で、デバイスが他のネットワークに接続できない場合、高度なセキュリティメカニズムは必要ありません。実際、この種の製品はユーザーを特定するだけで十分です( ID証明書、LDAPまたは同様の悪魔を使用します)。
アプリケーションがデータをローカルに保存する必要があり、あらゆるタイプのデバイス(最小要件を持つ)に配布できる場合、VPNは設計内のセキュリティ要素ではなくなります。