Salt Erstellung verbessern

Arvid Kjaer

Mitglied
Hallo alle zusammen!

Ich habe ein Klasse, die mir Passwörter speichert. Dazu werden diese gehasht, zusammen mit einer Salt. Die Salt wird zufällig erstellt. Nun möchte ich die Salt so zufällig wie möglich erstellen. Hat jemand vielleicht eine Idee wie ich folgenden Code verbessern könnte, bzw. mir sagen, ob das ganze unsinnig ist? Danke. :)

Java:
 private static byte[] generateSalt() {
        byte[] salt = new byte[8];
        SecureRandom ran = new SecureRandom();
        ran.setSeed(ran.generateSeed(64));
        ran.nextBytes(salt);
        
        //Falls eine Maus vorhanden ist wird die Mausposition als weitere Zufallszahl verrechnet. 
        if (MouseInfo.getNumberOfButtons() != -1) {
            int number = 0;
            Point mousep = MouseInfo.getPointerInfo().getLocation();
            int val = ((mousep.x << 5) - mousep.x) + ((mousep.y << 5) - mousep.y);
            while (val != 0) {
                    number = number + val % 10;
                    val = val / 10;
            }
            for (int i = 0; i < salt.length; i++) {
                salt[i] = (byte) (salt[i] + number);
            }
        }
        return salt;
    }
 

Arvid Kjaer

Mitglied
Hey! Danke für deine Antwort. ;-) Allerdings ist die Umsetzung mit Java dann doch etwas schwieriger. Vielleicht weiß noch jemand, welche "Zufallsquellen" es OS-Unabhängig noch gibt, die man nutzen kann. Bildschirmauflösung vielleicht? Irgendwie tu ich mich da schwer etwas zu finden. :-/ Weiß jemand welche Quellen SecureRandom nutzt?
 

Empire Phoenix

Top Contributor
Webcams/Scanner/TvKarten, das analoge rauschen als Seed für nen RandomALgorithmus benutzen.

Oder Ram auslastung, dank zahlreicher background prozesse ist das ein ganz akzeptabler zufallsgenerator der für keine 2 pcs exact den selben seed generiert. (Ein garbagecollector basierter algoritmus ? könnte klappen da der ja auch random arbeitet.)
Oder einen int auf den 20 Threads schreibend unschyronisiert zugreifen (jeder thread hat ein muster das er verfogl, aka int = int -1; oder int = int*10/5, wenn man den nun liest ist es praktsich absolut willkürlich welchen Wert man nun erhält, da dies von caching der cpu sowei vom Thread sheduller abhängt(wo wieder die hintergrundprozesse ins spiel kommen).
 

Andi_CH

Top Contributor
Hm - bei diversen Usern steht die Maus häufig im Passwortfenster wenn die eines eingeben ;-) aber warum nicht.

Die Uhrzeit im mS ist auch noch zufällig wenn sie in Kombination mit Userinteraktionen genommen wird und die ist in Java sicher einfacher greifbar als das Rauschen einer TV-Karte oder des Ethernettreibers.

Natürlich nimmst du die Uhrzeit nicht als Einzelwert, aber wenn du unbedingt secure Random verbessern willst, kannst du die dazu addieren, bitweise XOR verknüpfen oder was auch immer damit machen. (Nein bitte nicht OR oder AND - das gibt eine Häufung von Einsen bzw. Nullen)

Wirklich random sind übrigens nur asynchrone Sachen - Threads die in einen int schreiben werden wohl kein wirklich zufälliges Verhalten an den Tag legen.
 
S

SlaterB

Gast
vielleicht einen Thread eine ganz schön lange Zeit was machen lassen, mindestens 0.5 sec
und dann einfach vorher und nachher die Zeit messen im Nanobereich, die letzten Stellen als Differenz dürften doch nun wirklich komplett unvorhersehbar sein

dauert natürlich ne Weile und liefert nicht unbedingt viele Stellen, falls das wichtige Punkte sind
 

tfa

Top Contributor
Bei TrueCrypt wird zur Zufallszahlengenerierung der Benutzer gebeten, den Mauszeiger auf einem definierten Feld einige Sekunden wild hin und her zu schieben. Durch regelmäßiges Auslesen der Zeigerposition bekommt man genug zufällige Werte, mit denen man seinen Generator starten kann. Die Idee mit dem Mausposition war also schon nicht schlecht.
 

Arvid Kjaer

Mitglied
Danke an Alle für den Input. Das mit der RAM Auslastung finde ich gut und an die Uhrzeit habe ich auch nicht gedacht. :-D Das mit dem Mauszeiger ist wohl wahr, aber auch da kann sich die Position um einige Pixel unterscheiden, zumal das ganze Abhänig von der Auflösung ist. Also danke nochmal. Hilft mir alles schon viel weiter. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Best Practice Verschlüsselung mit SALT Allgemeine Java-Themen 4
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
OnDemand PDF Erstellung / Reports Framework Allgemeine Java-Themen 3
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
D UML Erstellung Allgemeine Java-Themen 6
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A Vererbung Übungsaufgabe Vererbung - Erstellung Klassenhierarchie Allgemeine Java-Themen 1
maestr0 Programmatische Java Projekt Erstellung Allgemeine Java-Themen 2
C Umlautdarstellung nach Jar-Erstellung Allgemeine Java-Themen 4
D Frage bzgl. Erstellung eines Datenmodells Allgemeine Java-Themen 5
M GUI - Erstellung Allgemeine Java-Themen 21
S Erstellung einer verschlüsselten Passwort Datei Allgemeine Java-Themen 11
Semox Unterschied bei Thread Erstellung Allgemeine Java-Themen 11
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
A Dynamische PDF Erstellung mit iText Allgemeine Java-Themen 4
G Problem bei jar erstellung Allgemeine Java-Themen 4
D erstellung einer seitenlangen xml durch ireport Allgemeine Java-Themen 3
A Problem mit der jar-Erstellung Allgemeine Java-Themen 5
@ [RegExp] Probleme bei Erstellung des Ausdrucks Allgemeine Java-Themen 3
C ApplicationContext blockiert bei der Erstellung Allgemeine Java-Themen 2
A Thema JAR-Erstellung (mal wieder) => etwas komplizierter Allgemeine Java-Themen 8
S PDF Erstellung mit zusätzlichen Headerinformationen Allgemeine Java-Themen 2
G Object erstellung und initialisierung. Allgemeine Java-Themen 4
G Objekt Erstellung in run() von Threads/Runnables Allgemeine Java-Themen 3
G Brauche Hilfe bei Erstellung eines Musters! Allgemeine Java-Themen 3
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
H Javakenntnisse verbessern Allgemeine Java-Themen 5
M Berechnung verbessern Allgemeine Java-Themen 8
V Kollisionserkennung beschleunigen/verbessern? :) Allgemeine Java-Themen 14
T MVC - Controller verbessern Allgemeine Java-Themen 9
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
T Algorithmus verbessern Allgemeine Java-Themen 10
C JTable verbessern Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben