Java RSA Datei speichern

nightmarevs

Cadet 4th Year
Registriert
Feb. 2009
Beiträge
102
Abend,
ich will in JAVA eine Datei mittels RSA verschlüsseln und dabei den Private key mit in die Datei schreiben. Hat einer mir ein Beispiel wie das funktionieren könnte? Mit Cipher kann ich Dateien Verschlüsseln aber den Key nicht mitspeichern. Es geht also nur darum wie ich den private key speichern und wieder laden kann. Das Verschlüsseln der Dateien ist ja kein Problem
 
Zuletzt bearbeitet:
Hast du etwas Beispielcode? Letztlich musst du das halt manuell machen. Zuerst den key in die Datei reinschreiben (evtl. mit nem Escaping und Trennzeichen um später das Ende des Keys erkennen zu können). Anschließend halt in ner Schleife den Cipher auf den Input (auch eine Datei die man schrittweise ausliest) anwenden und die Ausgabe immer weiter in die Outputdatei schreiben.

Abgesehen davon: Irgendwie führt das die Verschlüsselung ad absurdum und dann auch noch der private key...bist du sicher, dass du weißt was du da tust?
 
Ja ich weis schon was ich tue, der PrivateKey wird auch nicht einfach so in die Datei geschrieben ich habe mir da schon was ausgedacht. Das Problem ist nur das Objekte vom Typ PrivateKey nicht serialisierbar sind, deswegen suche ich nach einem manuellen weg das zu erreichen. Ich bekomme leider keine sinnvollen Informationan aus dem PrivateKey und vor allem wie stelle ich ihn wieder her.

Ich habe eine Datei die mit einem public Key verschlüsselt wird und dann wird in diese Datei noch nach einem bestimmten dynamischen Muster der private key "eingewoben" sodass die Datei nur mit dem selben Programm entschlüsselbar ist.
 
Zuletzt bearbeitet:
Und dann kam der böse Cracker, übersetzte den Java Byte Code zurück in Java Code, analysierte dein geheimes Muster, extrahierte den PrivateKey, nimmt sowohl PrivateKey als auch PublicKey (der dann wie der Name schon sagt öffentlich ist) und schob jedem "Opfer" seine eigenen Codes unter. Das Ganze konnte dann auch nicht mehr von den Originalen unterschieden werden. Somit wird die Spur zu Dir zurück verfolgt und du musst dich dann als Urheber vor Gericht verantworten. Dürfte ziemlich schwierig werden, deine Unschuld zu beweisen. Also was ich damit sagen will, ist, das diese Vorgehensweise unter dem Aspekt der Sicherheit höchst bedenklich/fragwürdig ist.

Wenn einer deine verschlüsselte Datei knacken will, dann würde er ähnlich wie oben beschrieben vorgehen. Mit dem Effekt das jede so verschlüsselte Datei dann ohne viel Mühe entschlüsselt werden kann, weil sowohl das "dynamische" Muster als auch beide Keys frei Haus mit der Datei geliefert werden. Selbst wenn du die Schlüssel wechselst, bist du nicht sicher, weil er dann einfach nach deinem "dynamischen" Muster die neuen Keys gleich wieder mitgeliefert bekommt.

Was willst du verschlüsseln und sicher machen? Es gibt sicher eine risikoarme und um Dimensionen bessere Alternative...
 
Zuletzt bearbeitet:
1. Hör auf die anderen! Security through obscurity bringt es einfach nicht .. insbesondere wenn man sich nicht gut damit auskennt.

2. Den PrivateKey in ein Byte Array verwandeln, dass lässt sich serialisieren ;) Umwandeln der Bytes in nen Key geht mit ... hmm wenn mich da nicht irre war das mit ner KeyFactory? Hier gibt es ein Bsp für nen PublicKey .. kann für nen privaten Schlüssel nicht viel anders sein.

Wk
 
Die erstellten Schlüssel werden mit ObjectOutputStream und FileOutputStream in eine Datei geschrieben!

http://www.codeplanet.eu/tutorials/java/7-aes-und-rsa-in-java.html

Mir ist allerdings völlig unklar was der Threadersteller erreichen will. RSA ist ein asymmetrisches Kryptosystem.

Was für einen Sinn hätte es eine Datei mit dem öffentlichen Schlüssel zu verschlüsseln und gleichzeitig den privaten Schlüssel darin zu verstauen? Dann kann ich mir gleich irgendeinen pseudosicheren Algorithmus schreiben oder ein symmetrisches Kryptosystem verwenden und den Schlüssel in der Datei parken.

Ganz gleich welchem Zweck das dienen soll, es ist Unsinn!
 
Ich weis das es nicht sehr sicher ist das muss es aber auch gar nicht sein, es geht nur darum das nicht jeder einfach den klartext sehen kann. Das Programm wird auch nicht in falsche Hände geraten es geht nur um den Privaten Austausch von kleineren Dateien (z.B. Hausaufgaben) die auf einem webspace gelagert werden deshalb die Verschlüsselung
 
Warum dann nicht einfach AES nehmen und das Passwort nur denen geben die auch Zugriff drauf haben sollen?
 
Das habe ich ihn auch schon oben gefragt, als ich vom symmetrischen Kryptosystem sprach.
 
Ich weis das das ganze nicht logisch ist und das auch was einfacheres gereicht hätte (Vignere wäre auch genug gewesen) aber ich will nach möglichkeit bei einem Projekt auch was dazulernen deshalb habe ich RSA genommen. Natürlich ist das ganze nicht sonderlich sicher aber es geht in erster Linie um den Lerneffekt- Und mit einem Symetrischen Verfahren wäre es doch genau das selbe Problem irgendwo muss der Key ja schlieslich gespeichert werden das er nicht jedesmal neu eingegeben werden muss. Hat übrigens mit dem Serialisieren geklappt, ich dachte ich hätte irgendwo gelesen das Key Objekte nicht Serialisierbar sind aber das war wohl falsch
 
Normal gibt man den Key halt über einen sicheren Kanal 1x weiter (und der Empfänger speichert das dann; von mir aus kannst dus auch im Dekodierprogramm speichern das ja sowieso jeder haben muss!) und packt ihn nicht in die zu entschlüsselnde Datei...
 
Nehmen wir mal an ich müsste ein Programm schreiben um Dateien ver- bzw. entschlüsseln zu können, dann würde ich wahrscheinlich so vorgehen:

1. Passwort muss der Anwender eingeben
2. Passwort + 1. Salz wird gehasht (z.B. SHA oder RIPEMD) -> Hash + Passwort ergibt den Schlüssel zum Ver- bzw. Entschlüsseln
3. Hash aus Schritt 2 + 2. Salz wird nochmal gehasht (z.B. SHA oder RIPEMD)
4. Salz 1 und 2 und 2. Hash (aus Schritt 3) werden in der Datei gespeichert
5. Daten mit Schlüssel (aus Schritt 2) mit AES (symmetrisch) Ver- bzw. Entschlüsseln und dann nur die verschlüsselten Daten an die Datei hängen
6. Passwort kann überprüft werden in dem die Schritte 2 und 3 wiederholt werden und dann den 2. Hash ergeben müssen

Aus meiner Sicht dürfte es so ein wenig schwierig werden, die Datei zu knacken... Für Kritik bin ich offen. Wie würdet ihr vorgehen?
 
Zuletzt bearbeitet:
Zurück
Oben