Serialisierung und Obfuscation?

Status
Nicht offen für weitere Antworten.
F

Fottum

Gast
Hallo zusammen :)

Nehmen wir eine Klasse Haus. Diese hat als member die Klasse Holztisch.

Holztisch ist eine Spezialisierung der Klasse Tisch.


Ich will Haus serialisieren via ObjectOutputStream (XML ist keine Option).

Darf ich Tisch obfuscaten (Haus und Holztisch werden nicht veraendert)?

Sagen wir Tisch wird durchs obfuscaten zu Klasse C.

Nehmen wir mal an ich obfuscate Tisch - und serialisiere dann eine Instanz von Haus. Dann onfuscate ich nochmal und Tisch wird zu B. Kann ich nun obwohl Tisch nicht mehr C sondern B ist, die serialisierte Instanz deserialisieren?

Ich denke schon - oder spricht was dagegen? Wo seht ihr Probleme?
 
S

SlaterB

Gast
Annahme, nicht getestet (ist doch so einfach?):
eine Klasse ohne SerialisierungsId darf überhaupt nicht neu kompiliert werden,

eine Klasse mit SerialisierungsId kann nur dann neu kompiliert werden, wenn sich der Klassen und package-Name nicht ändert,
wonach sollte sonst die Zuordnung stattfinden, die Id gilt soweit ich weiß nur innerhalb der Klasse,

für einen automatischen Serialisierungmechanismus müssen außerdem alle Felder gleich benannt bleiben, denn das passiert ja wohl über Reflection


edit:
ach, auch noch Frage zu Superklassen, da ist es bei den Feldern sicher gleich,
für den Klassennamen ist beides denkbar, entweder muss er gleich sein oder es wird nur nach der aktuellen Superklasse geschaut,
naja, hier bin ich nun endgültig keine Hilfe mehr ;) , ausprobieren!
 

HoaX

Top Contributor
nachdem du einen obfuskator verwendet hast gibt es keine klasse tisch mehr, sondern nurnoch eine klasse XY und die muss dann auch immer so heißen. mir ist kein obfuskator bekannt der erst zur laufzeit was ändert - macht ja auch nicht viel sinn.

warum willst du überhaupt einen obfuscator verwenden? wieso ist xml keine option?

was ich z.B. bei einem unserer produkte mache ist die lizenzdaten per XStream als xml zu schreiben und danach mit einem einfachen algorithmus zu verschlüsseln. (~5 Zeilen code).
 
G

Guest

Gast
HoaX hat gesagt.:
nachdem du einen obfuskator verwendet hast gibt es keine klasse tisch mehr, sondern nurnoch eine klasse XY und die muss dann auch immer so heißen. mir ist kein obfuskator bekannt der erst zur laufzeit was ändert - macht ja auch nicht viel sinn.

warum willst du überhaupt einen obfuscator verwenden? wieso ist xml keine option?

was ich z.B. bei einem unserer produkte mache ist die lizenzdaten per XStream als xml zu schreiben und danach mit einem einfachen algorithmus zu verschlüsseln. (~5 Zeilen code).

Dann poste doch die 5 Zeilen code ;)

Wie sicher ist das dann? Muesst ihr nicht den Schluessel zum entschluesseln mit dazu packen?
 

HoaX

Top Contributor
klar muss man das, aber is doch egal. um den rauszufunden muss man das programm erstmal dekompilieren.

ich will damit eigentlich nur sagen dass man auch mit einfachen mitteln den inhalt verschleiern kann - unbeachtet der sicherheit. so sieht der anwender nicht direkt was da in der datei steht und kann nicht mal eben ohne viel ahnung seine max. benutzeranzahl erhöhne.
außerdem bringt ein obfuskator das problem dass du stacktraces usw nichtmehr wirklich lesen kannst wenn beim kunden mal ein fehler auftritt.
und wenn man seinen logging-code nicht vorher entfernt ist das idR se verräterisch was der code macht dass man sich den obfuskator hätte sparen können.

und zu den 5 Zeilen:
Code:
BasicTextEncryptor cryptor = new BasicTextEncryptor(); // jasypt
cryptor.setPassword("Passwort");
String s = new XStream().toXML(someObject);
s = cryptor.encrypt(s);

Gast hat gesagt.:
Dann poste doch die 5 Zeilen code ;)
ok, hast recht mit deiner anspielung, sind doch nur 4 zeilen :p
 
G

Guest

Gast
Kennt jemand vielleicht ein Open Source Projekt, dass zumindest einige Klassen verschluesselt und dann mit einem speziellen Classloader zur Laufzeit wieder freigibt?

Sie sollen halt nicht unverschluesselt im jar liegen :)
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Kennt jemand vielleicht ein Open Source Projekt, dass zumindest einige Klassen verschluesselt und dann mit einem speziellen Classloader zur Laufzeit wieder freigibt?
Was soll das bringen? Jeder der in der Lage ist ein Jar zu Entpacken und Klassen zu dekompileren, weiß auch, dass der Schlüssel nicht weit sein kein.
 

HoaX

Top Contributor
wieso auf einmal im jar? ich dachte du wolltest serialiseren?

und was sich alleine entschlüsselt zur laufzeit kann auch von jemand fremden entschlüsselt werden. aber das hast du ja oben bereits selbst festgestellt ("Wie sicher ist das dann? Muesst ihr nicht den Schluessel zum entschluesseln mit dazu packen?"). man dekompiliere halt die klasse die die entschlüsselung übernimmt ...

warum willst du das unbedingt verschlüsseln?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
antonia09 Einkaufszettel Persistenz und Serialisierung Allgemeine Java-Themen 6
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
R Datentypen Korrekte integer in Hex ASCII Konvertierung und serialisierung Allgemeine Java-Themen 1
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
Z Best Practice Serialisierung Allgemeine Java-Themen 2
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
M Alternative zur Serialisierung.. Protobuf? Allgemeine Java-Themen 9
E Serialisierung - Deserialisierung Allgemeine Java-Themen 4
Thallius Serialisierung schlägt fehl. Allgemeine Java-Themen 3
M Serialisierung & Verschlüsselung Allgemeine Java-Themen 2
E Serialisierung - Sinn einer generierten serialVersionUID? Allgemeine Java-Themen 4
V Serialisierung von Instanz eigener Klasse Allgemeine Java-Themen 5
A Input/Output Serialisierung und Object.hashCode() Allgemeine Java-Themen 3
K Serialisierung einer verschachtelten Datenstuktur Allgemeine Java-Themen 9
Tobse Input/Output Dateiformat: Serialisierung VS Custom format Allgemeine Java-Themen 6
A Problem bei Serialisierung von Bibliotheks-Klassen Allgemeine Java-Themen 6
A Input/Output Serialisierung Sonderzeichen Allgemeine Java-Themen 3
P Serialisierung der Oberklasse Allgemeine Java-Themen 2
Kr0e Circular reference - Serialisierung Allgemeine Java-Themen 6
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
B Serialisierung mit Unterobjekten über Netzwerk Allgemeine Java-Themen 3
C Serialisierung - Standardwert für nachträglich hinzugefügtes Feld Allgemeine Java-Themen 2
S Serialisierung der Kindklasse Allgemeine Java-Themen 5
K Serialisierung komplett selbst machen Allgemeine Java-Themen 13
C Serialisierung ohne Serializable Allgemeine Java-Themen 4
S Serialisierung und Referenzen Allgemeine Java-Themen 6
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Objekt bei Serialisierung ändern Allgemeine Java-Themen 2
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
W Serialisierung Allgemeine Java-Themen 6
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
G (De)serialisierung und Referenzen Allgemeine Java-Themen 5
T Serialisierung: Wie macht RMI das so schnell? Allgemeine Java-Themen 14
J Serialisierung: readInt + writeInt Allgemeine Java-Themen 4
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
J bean + serialisierung + serialVersionUID Allgemeine Java-Themen 3
K Serialisierung Allgemeine Java-Themen 6
thE_29 Wie funktioniert Serialisierung? Allgemeine Java-Themen 10
S Problem mit Serialisierung Allgemeine Java-Themen 2
C Serialisierung von JComboBox Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben