Suche…


Einführung

Sicherheitspraktiken in Java können in zwei große, vage definierte Kategorien unterteilt werden. Java-Plattformsicherheit und sichere Java-Programmierung.

Die Sicherheitspraktiken der Java-Plattform betreffen die Verwaltung der Sicherheit und Integrität der JVM. Dazu gehören Themen wie das Verwalten von JCE-Providern und Sicherheitsrichtlinien.

Sichere Java-Programmierverfahren beziehen sich auf die besten Möglichkeiten, sichere Java-Programme zu schreiben. Dazu gehören Themen wie die Verwendung von Zufallszahlen und Kryptografie sowie die Vermeidung von Sicherheitslücken.

Bemerkungen

Während Beispiele klar gemacht werden sollten, sind einige Themen, die behandelt werden müssen:

  1. Das Konzept / die Struktur des JCE-Anbieters
  2. Listenpunkt

Die JCE

Die Java Cryptography Extension (JCE) ist ein in die JVM integriertes Framework, mit dem Entwickler Kryptografie in ihren Programmen einfach und sicher verwenden können. Dies geschieht durch die Bereitstellung einer einfachen, tragbaren Schnittstelle für Programmierer, während ein System von JCE-Providern verwendet wird, um die zugrunde liegenden kryptographischen Operationen sicher zu implementieren.

Schlüssel und Schlüsselverwaltung

Während das JCE kryptografische Operationen und die Schlüsselgenerierung sichert, ist es Sache des Entwicklers, die Schlüssel tatsächlich zu verwalten. Weitere Informationen müssen hier bereitgestellt werden.

Eine allgemein anerkannte bewährte Methode für die Handhabung von Schlüsseln zur Laufzeit besteht darin, sie nur als byte Arrays und niemals als Zeichenfolgen zu speichern. Dies liegt daran, dass Java-Zeichenfolgen nicht veränderbar sind und nicht manuell im Speicher gelöscht oder gelöscht werden können. Während ein Verweis auf eine Zeichenfolge entfernt werden kann, bleibt die genaue Zeichenfolge im Speicher, bis der Speicherbereich des Speichers gesammelt und erneut verwendet wird. Ein Angreifer verfügt über ein großes Fenster, in dem er den Speicher des Programms ablegen und den Schlüssel leicht finden kann. Im Gegensatz dazu sind byte Arrays veränderbar, und ihr Inhalt kann überschrieben werden. Es ist eine gute Idee, Ihre Schlüssel zu löschen, sobald Sie sie nicht mehr benötigen.

Häufige Java-Schwachstellen

Benötigt Inhalt

Bedenken hinsichtlich der Vernetzung

Benötigt Inhalt

Zufälligkeit und Du

Benötigt Inhalt

Für die meisten Anwendungen ist die Klasse java.utils.Random eine perfekte Quelle für "zufällige" Daten. Wenn Sie ein zufälliges Element aus einem Array auswählen oder eine zufällige Zeichenfolge generieren oder einen temporären "eindeutigen" Bezeichner erstellen müssen, sollten Sie wahrscheinlich Random .

Viele kryptografische Systeme sind jedoch für ihre Sicherheit auf Zufälligkeit angewiesen, und die von Random bereitgestellte Random einfach nicht hoch genug. Für jede kryptografische Operation, die eine zufällige Eingabe erfordert, sollten SecureRandom stattdessen SecureRandom verwenden.

Hashing und Validierung

Weitere Informationen werden benötigt.

Eine kryptografische Hashfunktion ist ein Mitglied einer Klasse von Funktionen mit drei wesentlichen Eigenschaften. Konsistenz, Einzigartigkeit und Irreversibilität.

Konsistenz: Bei gleichen Daten liefert eine Hash-Funktion immer den gleichen Wert. Das heißt, wenn X = Y ist, ist f (x) für die Hashfunktion f immer gleich f (y).

Eindeutigkeit: Keine zwei Eingaben für eine Hash-Funktion führen zu derselben Ausgabe. Das heißt, falls X! = Y, f (x)! = F (y) für beliebige Werte von X und Y.

Irreversibilität: Es ist unpraktisch schwierig, wenn nicht unmöglich, eine Hash-Funktion "umzukehren". Das heißt, wenn nur f (X) gegeben ist, sollte es nicht möglich sein, das ursprüngliche X zu finden, bevor jeder mögliche Wert von X durch die Funktion f (rohe Kraft) gesetzt wird. Es sollte keine Funktion f1 geben, so dass f1 (f (X)) = X ist.

Vielen Funktionen fehlt mindestens eines dieser Attribute. Zum Beispiel ist bekannt, dass MD5 und SHA1 Kollisionen haben, dh zwei Eingänge, die den gleichen Ausgang haben, so dass ihnen die Eindeutigkeit fehlt. Einige Funktionen, die derzeit als sicher gelten, sind SHA-256 und SHA-512.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow