2016-12-06 2 views
1

Ich entwickle eine webbasierte Anwendung, die von zahlreichen Drittorganisationen in zahlreichen Ländern auf der ganzen Welt eingesetzt wird.Was sind Verschlüsselungs/Entschlüsselungs-Schlüsselmanagement Beste Pratiken

Der browserbasierte Client leitet vertrauliche Daten in eine gemeinsame Backend-Datenbank ein.

Alle Organisationen in allen Ländern werden Daten in derselben Datenbank lesen/schreiben.

Ich möchte die Daten in den Browser eingegeben, so dass es während der Übertragung an die Back-End-Datenbank sicher ist. z.B. clientseitige Verschlüsselung.

Ich möchte auch die Daten im Ruhezustand in meiner Datenbank verschlüsseln.

Diese Anwendung wird mit Java, Javascript (REACT.js) und Scala entwickelt.

Die Backend-Datenbank wird MongoDB sein.

Ich kann ein gutes Key Management Beispiel/Beschreibung z. wie ein Schlüssel ordnungsgemäß generiert, verteilt, gespeichert, ersetzt, gelöscht und während seiner Lebensdauer wiederhergestellt wird.

Ich habe folgende Entscheidungen/Entscheidungen zu treffen: -

Flavor von Verschlüsselung, zB TripleDES, RSA, Blowfish, Twofish, AES etc .. Taste (n) Symmetrische/Asymmetrische und seine/thier Länge Wie sollte ich die Schlüssel sicher an meine Kunden verteilen? Wie Sie meine Schlüssel auf meinen Back-End-Servern sicher aufbewahren.

Wenn Schlüssel sollten einen Lebenszyklus von generiert, verteilt, gespeichert, ersetzt, gelöscht haben. Wie kann ich Daten entschlüsseln, die mit Key0 verschlüsselt wurden, als ich jetzt Key1 oder Key2 verwende?

Wie sollte ich meine mehrere Schlüssel für meine mehrere Clients speichern, damit ich jeder Client-Daten verschlüsseln/entschlüsseln kann.

+3

Dies ist wahrscheinlich besser für http://security.stackexchange.com geeignet. – deceze

Antwort

1
  1. Verwenden Sie HTTPS mit Certificate Pinning, um die Daten während der Übertragung zu sichern.

  2. Verwenden Sie AES für die Verschlüsselung. Verwenden Sie TripleDES, RSA, Blowfish oder Twofish nicht in neuen Arbeiten.

  3. Verwenden Sie eine HSM.

  4. Verschlüsseln Sie die Daten mit einem langlebigen Schlüssel, der nicht verteilt ist, verschlüsseln Sie diesen Schlüssel mit kurzen Schlüsseln, die bei Bedarf geändert werden können.

  5. In Anbetracht des Umfangs des Projekts erhalten Sie einen kryptografischen Domänenexperten, um die Sicherheit zu entwickeln und den Code zu überprüfen.

+0

Vielen Dank für Ihre Vorschläge. genau was ich benötigt habe. – Hector