非常に機密性の高いデータ(銀行/カードの詳細よりも機密性が高い)を扱うWebサイト/モバイルアプリ/デスクトップアプリの作成を検討しているクライアントがいます。データは機密性が高いため、中央データベースに保存したくありませんが、アプリを同期させたいと思います(モバイルアプリにデータを追加するとします。次に、デスクトップアプリと同じデータを参照してください)。
私はこれを行うための素晴らしい、信頼できる方法を考えることはできません。それが私がここにいる理由です。私がこのデータを処理する方法を誰かが知っていますか?
私が考えていた1つの解決策は、各アプリにクライアント側のデータベースを配置して、アプリ間で何らかの方法で同期することでした。
多くの機密情報がデータベースに保存されます。実際、中央データベースがこのデータを保存するためのおそらく最も安全な方法です。大規模なエンタープライズデータベースには、機密情報の暗号化、アクセスしたユーザーの監査、DBAを含むユーザーによるデータの表示の制限または防止などを行うための多くの機能があります。専門のセキュリティ専門家が環境を監視し、専門のDBAがバックアップを監視することができます。データを失わないこと。適切に設計されたセキュリティインフラストラクチャに侵入して適切な中央データベースを危険にさらすよりも、ランダムユーザーのモバイルデバイスやラップトップに保存されたデータを危険にさらす方がはるかに簡単です。
暗号化されたデータのみを保存し、ユーザーの秘密鍵をユーザーのデバイスに保存する中央データベースを使用してシステムを設計できます。そうすれば、中央データベースが完全に危険にさらされても、データはユーザーだけが使用できます。もちろん、これは、ユーザーがキーを紛失した場合、ユーザーのデータを復元できないことを意味します(たとえば、コピーが電話にあり、電話が破損していた場合)。そして、誰かが鍵とおそらくは自分のログイン資格情報を侵害した場合、彼らはデータを見ることができます。
いくつかの手順をバックアップし、クライアントと相談して 脅威モデル を計算する必要があります。 (はい、これは600ページのブックへのリンクです。はい、すべてを読むことを強くお勧めします。)
脅威モデルは次のような質問をすることから始まります
これらの質問への答えがわかったら、何をすべきかを理解するのにはるかに良い場所になります。
一連の質問、特に攻撃者(機密データを必要とするが、機密データの持ち込みを許可されていない人)に対処する質問には、複数の回答がある場合があることに注意してください。動機、目標、およびリソースが異なり、少なくとも6ダースdifferentの典型的な攻撃者について考えることができない場合は、おそらく何かを見逃しているでしょう。
あなた(および/またはクライアント)を最もトラブルさせる攻撃者は、攻撃が成功した場合、または最大の攻撃を行った場合、メディアに巨大なスプラッシュを発生させる可能性が最も高いことに注意してください。 aggregateダメージの量、おそらく攻撃が成功した場合に個人のユーザーに最大の被害を与える攻撃者ではないでしょう。クライアントの会社は、総合的な損害については合理的に気にしますが、ユーザーは自分自身への害については合理的に気にします。
同期を行う1つのオプションは、ピアツーピアで行うことです。これには依然として中央サーバーが必要ですが、そのサーバーはどのデータも処理しません。
デバイスがオンラインになると、中央サーバーはユーザーIDを含む通知を受け取ります。同じユーザーの2番目のデバイスがオンラインになると、サーバーは両方のデバイスに他方のIPアドレスを送信します。その後、デバイスはデータを直接交換できます。警告:1台のデバイスがサーバーとして機能する必要があるため、少なくとも1台はNATルーターの背後に置くことはできません。
通知メカニズムとピアツーピア交換の両方に強力な認証と暗号化が必要になることを忘れないでください。
それを誰かの問題にしてください。
データを各アプリにローカルに保存し、サードパーティのサービス(Dropbox、Googleドライブなど)と独自のアカウントを使用して同期を有効にするオプションをユーザーに提供します。また、サードパーティのサービスにアップロードされたデータを暗号化することを検討してください(これには長所と短所があります)。
これにより、ユーザーはデータ同期をオプトインする必要があるため、ユーザーは自分のデータを所有するappearanceが得られます。共有を望まない人にとって、アプリは便利です。そして、共有データを安全に保つという継続的な頭痛の責任を他の誰かに(技術的、そして潜在的には合法的に)負わせます。
クライアントの懸念は、このデータの可視性にあるようです。お客様に最初に尋ねる質問は、データが暗号化されているかどうか、どこに保存できるかということです。次に、データを復号化して処理する前に、顧客にどのような種類のアクセス制御が必要かを尋ねます-復号化キーはどこに保存できますか?ユーザーごとに別のキーは何ですか?等...
顧客がデータをどこにも保存したくない場合、ユーザーは毎回私の手でデータを入力する必要がありますか?