Zunächst einmal würde ich mich nicht als Sicherheitsexperten bezeichnen, aber ich war in der Lage, diese Frage beantworten zu müssen. Was ich herausgefunden habe, hat mich ein wenig überrascht: Es gibt kein absolut sicheres System . Nun, ich denke, ein absolut sicheres System wäre eines, bei dem alle Server ausgeschaltet sind :)
Jemand, der damals mit mir zusammenarbeitete, beschrieb die Entwicklung eines sicheren Systems , um die Messlatte für Eindringlinge höher zu legen. Daher verringert jede Sicherungsebene die Möglichkeit eines Angriffs.
Selbst wenn Sie beispielsweise den privaten Schlüssel perfekt sichern könnten, ist das System nicht vollständig sicher. Wenn Sie jedoch die Sicherheitsalgorithmen richtig anwenden und mit Patches auf dem neuesten Stand sind, werden Sie die Messlatte höher legen. Aber ja, ein Supercomputer, der stark genug ist und genügend Zeit hat, kann die Verschlüsselung aufheben. Ich bin mir sicher, dass all dies verstanden wird, also werde ich die Frage zurückerhalten.
Die Frage ist klar, also werde ich zuerst versuchen, jeden Ihrer Punkte anzusprechen:
Angenommen, der Schlüssel ist durch das Sicherheitsmodell des Dateisystems geschützt. Aber was ist mit (böswilligen) Super-Usern oder Plattformen, die keine solche Genauigkeit bieten?
Ja, wenn Sie einen Windows-Schlüsselspeicher oder einen kennwortverschlüsselten privaten TLS-Schlüssel verwenden, sind Sie den Benutzern ausgesetzt, die über das Kennwort (oder den Zugriff) auf die privaten Schlüssel verfügen. Aber ich denke, Sie werden zustimmen, dass dies die Messlatte höher legt. Die Dateisystem-ACLs (sofern sie ordnungsgemäß implementiert sind) bieten einen recht guten Schutz. Und Sie sind in der Lage, Ihre Superuser persönlich zu überprüfen und zu kennen.
Oder der Schlüssel ist fest in Software-Binärdateien codiert, kann jedoch jederzeit dekompiliert werden, und was ist mit Open Source-Software oder interpretiertem Code?
Ja, ich habe fest codierte Schlüssel in Binärdateien gesehen. Auch dies legt die Messlatte ein wenig höher. Jemand, der dieses System angreift (wenn es sich um Java handelt), muss verstehen, dass Java Byte-Code (usw.) erzeugt, und muss verstehen, wie es dekompiliert wird, und es muss gelesen werden. Wenn Sie eine Sprache verwenden, die direkt in Maschinencode schreibt, können Sie sehen, dass dies die Messlatte ein bisschen höher legt. Es ist keine ideale Sicherheitslösung, kann jedoch ein gewisses Maß an Schutz bieten.
Wenn der Schlüssel generiert wird, müsste ein solcher Algorithmus (vermutlich) deterministisch sein, und dann gilt dasselbe Problem für den Startwert.
Ja, im Wesentlichen wird der Algorithmus dann zur Information über den privaten Schlüssel zum Erstellen des privaten Schlüssels. Es müsste also jetzt geschützt werden.
Ich denke, Sie haben ein Kernproblem mit einer Sicherheitsrichtlinie, der Schlüsselverwaltung, identifiziert . Die Einrichtung einer Schlüsselverwaltungsrichtlinie ist für die Bereitstellung eines sicheren Systems von zentraler Bedeutung. Und es ist ein ziemlich weites Thema .
Die Frage ist also, wie sicher Ihr System (und damit der private Schlüssel) sein muss. Wie hoch muss in Ihrem System die Messlatte angehoben werden?
Nun, wenn Sie bereit sind zu zahlen, gibt es einige Leute, die Lösungen für dieses Problem entwickeln. Am Ende haben wir ein HSM (Hardware Security Module) verwendet . Grundsätzlich handelt es sich um einen manipulationssicheren Server, der einen Hardwareschlüssel enthält. Mit diesem Schlüssel können dann andere Schlüssel für die Verschlüsselung erstellt werden. Die Idee dabei ist, dass (bei korrekter Konfiguration) der Schlüssel das HSM niemals verlässt . HSM kosten viel . In einigen Unternehmen (zum Beispiel beim Schutz von Kreditkartendaten) sind die Kosten für einen Verstoß jedoch viel höher. Es besteht also ein Gleichgewicht.
Viele HSMs verwenden Schlüsselkarten aus der Wartung und Verwaltung der Funktionen. Ein Quorum von Schlüsselkarten (5 von 9 sagen wir mal) muss physisch in den Server gesteckt werden, um einen Schlüssel zu ändern. Dies legt also die Messlatte ziemlich hoch, indem nur dann ein Verstoß zugelassen wird, wenn ein Quorum von Super-Usern zusammentrifft.
Möglicherweise gibt es Softwarelösungen, die ähnliche Funktionen wie ein HSM bieten, aber ich weiß nicht, was sie sind.
Ich weiß, dass dies nur dazu beiträgt, die Frage zu beantworten, aber ich hoffe, dass dies hilft.