2016-12-06 19 views
1

世界中の多くの国々で数多くの第三者機関の に雇用されるWebベースのアプリケーションを開発しています。暗号化/復号化鍵管理とは何ですか?

ブラウザベースのクライアントは、機密データを共有バックエンドデータベースに送ります。

すべての国のすべての組織は、同じデータベースにデータを読み書きします。

ブラウザに入力したデータを暗号化して、 をバックエンドデータベースに転送中に安全にしたいとします。例えばクライアント側の暗号化。

また、私のデータベースに安静時にデータを暗号化したいと考えています。

このアプリケーションは、Java、Javascript(REACT.js)、およびScalaを使用して開発されます。

バックエンドデータベースはMongoDBです。

キー管理の例/説明が見つかりません。鍵が正しく生成される仕組み、生涯に分散、格納、置換、削除、および回復されます。

私が作るために次の選択肢/決定を持っている: - 暗号化の

フレーバー、例えばトリプルDES、RSA、フグ、Twofishは、AESなど。 キー(s)は対称/非対称とその/ thier長 クライアントに鍵を安全に配布する方法 バックエンドサーバで鍵を安全に保つ方法。

キーに生成、配布、保存、置換、削除のライフサイクルが存在する必要がある場合。 Key1またはKey2を使用しているときにKey0で暗号化されたデータを復号化するにはどうすればよいですか?

複数のクライアントに複数の鍵を格納して、各クライアントデータを で暗号化/復号化する方法を教えてください。

+3

これはおそらくhttp://security.stackexchange.comに適しています。 – deceze

答えて

1
  1. 送信時にデータを保護するために、証明書のピン設定を使用してHTTPSを使用します。

  2. 暗号化にAESを使用します。 TripleDES、RSA、Blowfish、Twofishを新作で使用しないでください。

  3. HSMを使用してください。

  4. 配布されていないロングライフキーでデータを暗号化し、必要に応じて変更できる短いライフキーでそのキーを暗号化します。

  5. セキュリティの設計とコードの検証には、暗号のドメインエキスパートが必要です。

+0

お寄せいただきありがとうございます。ちょうど私が必要としたもの。 – Hector