2

次の例を想定します。

ユーザーが個人データを登録して入力できるオンライン サービスを利用しています。今、これらのデータを暗号化したい。私は秘密鍵 Pr1 と公開鍵 Pu1 を持っています。

  1. ユーザーがオンライン サービスでパスワードを使用してログインする
    • ログインパスワードを秘密鍵の形式に合わせて変換 = Pr2
    • Pr2から公開鍵Pu2を取得
  2. ユーザーがデータを入力して、データベースにオンラインで保存します
  3. ユーザーが入力したデータを Pu1 で暗号化し、 --recipient Pu2を複数の異なるキーで暗号化するように追加しますか?
  4. これで、暗号化されたデータをオンライン データベースからローカル マシンにコピーし、ローカル Pr1 でデータを復号化できます。
  5. ユーザーは、ログインするたびに Pr2 に変換される通常のパスワードを使用して、既に入力したデータをオンラインで復号化できますが (ステップ 2a)、セッション全体で有効です。

そのアプローチでは、攻撃者がすべてのファイルとデータベースを使用してサーバーにアクセスできたとしても、データを復号化することはできませんよね? 確かに、ブルート フォース攻撃は可能ですが、試行ごとに秘密鍵を計算する必要があるため、時間がかかるはずです。ただし、秘密鍵がオンラインで保存されたり、交換する必要があったりすることはありません。したがって、これはかなり節約できるはずです。

ここで質問:このアプローチが安全で実用的である場合、これらの機能を持ち、いくつかの優れたセキュリティ標準を使用する類似またはより優れたものが既に存在するはずです。それは何ですか?

4

1 に答える 1

0

一見ランダムな考えの束 re: なぜこれは人々がこれを行う方法ではない傾向があるのか​​...

まず、複数のユーザー アクセスの場合。通常、私が見たシステムでは、2 人のユーザーが自分の資格情報で何かにアクセスできるようにしたいが、一度だけ保護したい場合は、コンテンツを保護するためのキーを作成し、そのキーを複数の資格情報で保護し、この形式でキーを保存します。何度も。つまり、アイテム自体の隣にキーを保存しますが、キーはアクセサーごとに 1 回、N 回保存されます。アクセスを許可すると、私の資格情報を使用してキーが復号化され、キーは再びあなたの資料と共に保存されます。

同じマルチユーザーの方針に沿って、「アクセス許可」フローには問題があります。上記で提案したスキームでは、私があなたにアクセスを許可するために、システムは私の資格情報(私が私が誰であるかを検証し、キーを手元に持っていることを確認するため)とあなたのキー(あなたにアクセスを許可するため)を持っている必要があります.同じ瞬間。これは現実の世界ではかなり問題です。

この方式では、ユーザーは「パスワードを忘れた」という経験をすることはありません。パスワードを紛失 -> キーを紛失。

このスキームは、ユーザーが適切なパスワードを選択することを前提としています。

このスキームは、同じパスワードを持つ 2 人のユーザーが同じキーを持つことを意味します。

DB の盗難は問題ではなく、すべてのパスワード (ダウンストリーム キーを意味します) を計算する必要があると主張しますが、実際にはこれを行うのは難しくなく、費用もかかりません。そして、Password123 を 1 回計算するだけで、データベース全体をスキャンできます。

お役に立てれば。

于 2012-09-12T15:12:10.260 に答える