14

健康情報を内部に持つアプリケーションを構築しています。このアプリケーションは消費者向けであり、私にとっては新しいものです。プライバシーの問題を完全に緩和する方法が欲しいです。公的にアクセス可能なデータベースで機密データを保護する方法を検討していると、データベースの半透明性の概念に頻繁に遭遇します。この主題に関するオリジナルの本と、Oriellynetからの主題に関する優れたチュートリアルがあります。

私の懸念は、私が非常に近代的なプログラミングサイト(このようなサイト)と見なすものについて、このアイデアに関する情報をほとんど見たことがないということです。ウィキペディアにはそのアイデアに関する記事がないようです。ここでは、このテーマに関する質問はありません。また、このテーマに関するごく最近のチュートリアルや記事もありません。簡単に言うと、システムの一部のユーザーには特定のデータが明確であり、他のユーザーは管理者アクセス権がある場合でも、暗号でそのデータにアクセスできないようにするという考え方です。

私は、半透明のデータアクセスを提供するプロトタイプデータベースでかなりの作業を行いました。私はかなりの問題に遭遇しました。真に半透明であるためには、パスワード回復のメカニズムはあり得ません。管理者がユーザーのパスワードをリセットできる場合、管理者はユーザーデータに簡単にアクセスできます。真に半透明であるために、ユーザーは決してパスワードを失ってはなりません。

日常生活の中で個人データを保護するために強力な暗号化を使用している私たち(確かに技術者)は、この種の強力な暗号化システムを使用するときにこの問題に慣れています。「blowfish」という単語が日常の用語集の一部であるが、消費者に焦点を当てたWebサイトである場合はどうでしょうか。私は、ユーザーが真のデータベースの半透明性を暗示する「真に暗号化されたあなたのためだけに」という概念に頭を悩ませることをいとわないのではないかと心配しています。「パスワードを紛失しました」で始まり、「あなたのためにできることは何もありません」というサポートコールが怖いです。

私の質問:このメソッドをアプリケーションに実装する必要がありますか?データベース設計を(特にphp / MySQLを使用して)比較できる、このルートをたどった他のオープンソースアプリケーションはありますか?この種の本当に安全な、しかし本当に不便な機能セットを追求している人は他にいますか?私が見逃していた、より人気があり最新のデータベースセキュリティモデルはありますか?データベースの半透明性は流行でしたか、それとも私が採用すべき正当なデータベース設計方法でしたか?私はいつも議論に感謝していますが、私は自分のデザインで活用できる客観的な答えを好みます。

4

4 に答える 4

7

それで、私は最近これに似たものを見てきましたが、同じ問題にぶつかりました。私が実装を検討しているソリューションは次のとおりです。

  • 登録時に、ユーザー用に一意で安全な (長い) キーを作成し、これを使用してデータを暗号化します。
  • AES などを使用してこのキーをユーザーのパスワードで暗号化し、データベースに保存します。

この時点では、ユーザーが自分のパスワードを忘れた場合、それを持っているという状況にまだあります。

  • 組織を表す公開鍵と秘密鍵のペアを作成し、公開鍵をサーバーに保存します。
  • 鍵の秘密部分をいくつかのコンポーネントに分割し、会社の継続的な成功に大きな利害関係 (できれば金銭的) を持っている人々 (会社の取締役など) にそれぞれを渡します。必要に応じて、任意の 2 人または任意の 3 人が集まって完全な秘密鍵を復元できるように、これを行います。各人のキーを独自のパスワードで暗号化します。
  • ユーザーが登録するとき、キーをパスワードで暗号化するだけでなく、組織の公開キーで暗号化し、どこかに保存します。
  • ユーザーのパスワードをリセットするリクエストを記録するパスワード リセット フォームを作成し、そのユーザーが本人であることを示す証拠 (チャレンジ/レスポンスなど) を添付します。
  • これらのリセット要求をデータベースに記録します (必要に応じて公開キーを使用して再度暗号化します)。
  • 1 時間/1 日/1 週間/1 か月に 1 回、必要なキー所有者を集め、それらを組み合わせたキーを使用して、蓄積されたリセット要求を処理し、本人であることを首尾よく証明したユーザーのキーを復号化します。

これには多くの課題と考慮事項があります。私はこれらのほとんどについていくつかの考えを持っていますが、他の意見にも興味があります:

  • 保存されたキーを 1 人のユーザーが解読できないように、キーを複数のユーザー間で安全に分割する方法。
  • 「マスター キー」が悪意のある人の手に渡った場合に公開されるキーの数を最小限に抑える方法。
  • 鍵の所有者が鍵を紛失した場合に (非常に禁じられています)、(a) データが漏洩するリスクがなく、(b) 突然パスワードをリセットする機能が永久に失われるリスクがないことを確認する方法。
  • セキュリティ アプローチ全体に目立った穴を作らずに、その人物が本当に本人であることを検証する方法。

この領域に実装するものはすべて、半透明データベース アプローチのセキュリティを確実に低下させますが、データの性質によっては、妥協する価値があるかもしれません。

于 2010-12-20T18:18:27.497 に答える
2

このメソッドをアプリケーションに実装する必要がありますか? 人生の他のことと同様に、トレードオフがあります:)おそらくより安全ですが、構築するのは困難です。

データベース設計を比較できる (特に php/MySQL を使用した) 他のオープン ソース アプリケーションはありますか?

わかりませんが、自分でそれを行うためのツールがあると思います:)

この種の真に安全であるが、本当に不便な機能セットを追求している人は他にいますか?

はい、しかし、あなたが説明したパスワードの紛失に関する問題のように、まだ未熟な状態にあるようです。

私が見逃した、より一般的で最新の別のデータベース セキュリティ モデルはありますか?

基本的に、データベース接続には 2 種類あります。1 つのオプションはユーザーに実際のデータベース アカウントを与えるもので、もう 1 つはデータベースへのシングル サインオンを使用するものです。Web が登場する前は、クライアント/サーバーの世界では両方のモデルの支持者がいましたが、Web 開発者の間ではシングル サインオン方式が主流です。

データベースの透過性は一時的な流行でしたか、それとも採用すべき正当なデータベース設計方法でしたか?

そうは思わないでください。たとえば、UNIX パスワード データベースは基本的な半透明データベースの好例です ;)

ここにリンクテキストを読むための何か

于 2010-01-21T21:44:44.533 に答える
1

Re: 半透明のデータベース。指紋を使用できると思います。やけどを負った人や、指紋をなくしてしまった人はどうでしょうか。おっとっと。そのわずかな割合のユーザーの価値はありますか?

特にテクノロジーに関しては、HIPAAに精通してください。Skynet* を除いて、真に安全なシステムはないことを忘れないでください。担当は人間です。医療会社で働いている場合、機密情報であるため職務の一環として知った情報を一切公開しないことを示す NDA に署名します。人々のパスワードをリセットする人がいるでしょう。誰もが技術的に有能であるとは限らないため、それが現状であり、それが今のところ残っている方法です. HIPAA が言うように、セキュリティを実装するだけで済みます。

  • 実は、もう 1 つの真に安全なシステムがあります。それは、ネットワークと電気の両方からプラグが抜かれ、電源がオフになっていることです。
于 2010-01-21T20:33:33.223 に答える
0

少し異なる解決策です。cryptdb をチェックしてみてください:

http://css.csail.mit.edu/cryptdb/

于 2013-05-09T02:41:22.437 に答える