2012-03-28 9 views
0

Ich bin auf der Suche nach einer Methode zum sicheren Hash-Daten in einem Cookie. Ich habe eine Farm von Servern und jeder der Server könnte den Cookie ausgeben und jeder der Server muss in der Lage sein, den Inhalt des Cookies zu validieren.Java - Hashing/Verschlüsselung über Server

ich als Denken von soomething wie tun:

Cookie-Inhalt:

SHA(<secret-uuid><user-id><expiration-date>)|<user-id>|<expiration-date> 

Zum Beispiel:

122233344444|bob|2012-01-01-12-01-03 

Wenn das Cookie Validierung Text kann ich einfach wieder Hash des „clear Daten "zum Hashwert:

SHA1(<secret-uuid>bob2012-01-01-12-01-03) == 122233344444 

Derzeit muss ich manuell in einer Konfigurationsdatei festlegen und sicherstellen, dass sie zwischen jedem Server in der Farm identisch sind.

Gibt es eine "sichere" Möglichkeit, programmgesteuert eine SECRET-UUID zu generieren, die auf allen Maschinen gleich ist? Gibt es einen besseren Weg, dies zu tun?

+0

Sie könnten es mit einem Schlüssel verschlüsseln, den alle Server in der Farm zum Entschlüsseln verwenden können. – Hiro2k

Antwort

1

Was Sie suchen, ist ein HMAC. Sie sollten den HMAC-Algorithmus verwenden, anstatt zu versuchen, Ihren eigenen zu erfinden - er wurde entworfen, um mehrere mögliche Angriffe gegen naive Wege zur Konstruktion eines verschlüsselten Hash zu negieren.

Der Schlüssel (was Sie die "geheime Uuid" nennen) muss an alle Maschinen verteilt werden, und es gibt keine magische kryptographische Möglichkeit, dies zu vermeiden. Vermutlich haben Sie eine Möglichkeit, Code und Konfiguration bereitzustellen. Sie sollten die gleiche Methode verwenden, um den Schlüssel zu verteilen.

Eine Alternative wäre ein Cookie-Server, der Cookies erstellt und verifiziert; einzelne Maschinen können sie nach Bedarf abfragen.