Java für sicherheitsrelevante Anwendungen ungeeignet?

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo!

Ich beschäftige mich gerade mit dem Erstellen eines Login - Moduls in Java. Nun habe ich aber festgestellt, dass sich Java - Programme kinderleicht dekompilieren lassen. Demnach könnte man doch jedes Login - Modul ausser Kraft setzen: Einfach die entprechenden Klassen dekompilieren und mit veränderten Versionen ersetzten. Auch eine Obfuscator - Software kann so etwas nicht wirklich verhindern. In diesem Fall wäre Java für sicherheitsrelevante Anwendungen völlig unbrauchbar!

Gibt es denn wirklich keine Möglichkeit sich vor so einem Szenario zu schützen, oder habe ich da irgendetwas übersehen?

Grüsse,
--Alexander
 
B

Beni

Gast
Gegen das Dekompilieren gibt es wohl kein Schutz.

Aber Du musst dich auch fragen: was sieht man dann?
Du musst ja nicht unbedingt eine if( password.correct() ) Abfrage machen, sondern Du kannst das ganze ein bisschen verstecken :wink:(über mehrere Klassen verteilen, dort mal ein Parameter aus dem Passwort berechnen, da mal eine Methode missverständlich benennen...)
 

schalentier

Gesperrter Benutzer
Na isses denn in anderen Sprachen besser? win32 executables kann man auch decompilieren und wenn man bissel assembler kennt, ist das auch nich komplizierter zu verstehen als decompilierte JavaKlassen, die mittels Obfuscator verwurschtelt wurden.

Zusaetzlich koennte man auch mit Pruefsummen fuer die jars arbeiten, aber auch fuer diesen Test steht dann irgendwo im Code if( xz.ab() )..., was natuerlich umgangen werden kann (analoges gilt fuer assembler, da steht dann irgendwo ein JNE (=jump [if] not equal), was du durch JE (=jump [if] equal] ersetzen musst. Man muss eben "nur" die richtige stelle finden, und das wird u.u. ziemlich schwierig.

Kryptografisch sicher(er) gehts nur mit Verschluesselung und dynamisch nachgeladenen Klassen, die vielleicht in einer geschuetzten datenbank-tabelle liegen (wuerde das gehen?). Aber sowas hab ich noch nie gesehen.

Entwickel halt opensource, da gibts das problem nich :)

gl&hf
 
G

Gast

Gast
Hallo!

Mir ist natürlich klar, dass es das Problem mit dem dekompilieren überall gibt. Es ist allerdings schon so, dass das bei anderen Programmiersprachen mehr Hintergrundwissen erfordert: Bei C/C++ Programmen sollte man z.B. wissen, mit welchem Compiler die Software erstellt worden ist und welche Optimierungen verwendet wurden. Assembler kann auch nicht jeder Laie und Assembler - Code ist einfach schwerer zu lesen als irgendeine "if (password.equals(...) )" - Anweisung. Echte Profis wird das alles sicher nicht aufhalten. In Java allerdings reicht es schon, wenn man mit google nach den Begriffen "Java" und "Decompiler" sucht, sich die Decompiler - Software herunterlädt, ausführt und schon sieht man den Quellcode im Klartext - aber das ist wohl einer der Nachteile eines offenen und platformunabhängigen Standards.

Mir geht es jetzt auch nicht darum meinen Quellcode zu sichern - ob Andere nun wissen, wie ich meine Gui programmiere oder Datenbankzugriffe mache ist mir relativ egal. Problematisch wird die Sache allerdings, wenn es um Passwörter, Zugriffsrechte usw. geht. Um das Dekomilieren zu erschweren, werde ich wohl auf einen Obfuscator zurückgreifen - was mich gleich zu meiner nächsten Frage bringt:

Hat irgend jemand von euch schon Erfahrung mit Obfuscator - Software? Habe mal in einem anderen Forum gelesen, dass es dabei zu Geschwindigkeitseinbußen und zu Problemen im Kontrollfluss kommen kann.

Welchen Obfuscator könnt ihr empfehlen?

Grüsse,
--Alexander
 

Stefan1200

Top Contributor
Naja, Passwörter sollten sowieso nicht im Sourcecode stehen, zumindest nicht unverschlüsselt.

Das mit dem einfacher Lesen halte ich für ausgeschlossen, wenn man einen Obfuscator benutzt hat.
Originale class Dateien lassen sich natürlich wunderbar decompilieren, nur die Kommentare fehlen, der Rest ist 100%ig gleich.

Wie hat das eigentlich Borland in JBuilder gemacht, lassen sich die classes auch einfach decompilieren?
Das Programm ist ja nicht gerade billig.
 
B

bygones

Gast
Stefan1200 hat gesagt.:
Originale class Dateien lassen sich natürlich wunderbar decompilieren, nur die Kommentare fehlen, der Rest ist 100%ig gleich.
Wenn man glaub ich static final Variablen verwendet erkennt man das beim decompilieren auch nicht. D.h. es werden nicht die Variablen sondern die Werte der Variablen eingsetzte (also sagen wir 98% gleich :wink: )
 

schalentier

Gesperrter Benutzer
AlArenal hat gesagt.:
schalentier hat gesagt.:
Entwickel halt opensource, da gibts das problem nich :)

So ein Schmarrn...

wieso schmarrn? Ich entwickle nur opensource mit hilfe von opensource. Geld bekomm ich, weil ich die Software als Dienstleistung speziell fuer den Kunden entwickle. Damit hab ich nur vorteile: Ich kann OpenSource zeug nehmen und spare dadurch unendlich viel zeit, ich brauch mir keine gedanken um einen decompilier-schutz zu machen und muss keine wartungsvertraege mit dem kunden aushandeln, da dieser den gesamten quellcode hat. was der damit macht, is mir eigentlich voellig wurst. z.b. koennte dieser ein neues team ransetzen und die software erweitern/verbessern. dafuer bekomm ich dann vielleicht sogar hinweise wie schlecht oder gut mein code ist. is doch gut, oder?

Guck dir halt mal das decompilat von jbuilder an. ich kenn jetzt nur intellij und jprofiler, bei beiden wurde ein obfuscator eingesetzt. du wirst nicht durchsehen... okay, man kann durchsehen, ist aber sehr zeitintensiv.

strings werden uebrigens auch verschluesselt, wobei fuer jede klasse ein anderer verschluessel-algo verwendet wird. damit muss man in jeder klasse den entschluessler finden, ansehen, verstehen, tool zu entschluessel bauen. dazu kommt, dass du nicht weist wo du die passwoerter suchen sollst.

ausserdem kenn ich keinen decompiler, der den sourcecode wieder so rekonstruiert, dass man ihn uebersetzen kann. das waere aber sinnvoll, zum debuggen.

hf
 

AlArenal

Top Contributor
Deine Aussage war apuschal und platt "entwickle Open Source und du hast keine Sicherheitsprobleme" und das ist nunmal Schmarrn. Wofür gibts es wohl all die Bugfixes und Patches auch im Open Source Bereich, wenn es doch keine Sicherheitslücken gibt?

Der Sicherheit ist es ziemlich egal unter welcher Lizenz ein Programm entwickelt wurde und ich kann auch nicht hingehen und sagen "Ich entwickel jetzt Open Source und verkaufe euch den Service drumrum, wenn das Programm ein Sicherheutsleck hat, ist das nicht mehr mein Problem. Wendet euch an die Community.".

Halte ich für ein sehr seltsames Verständnis vom Begriff "Service". Abgesehen davon das man niemanden zwingen kann und sollte Open Source zu entwickeln. Wenn ich meinem Chef sage "Übrigens, ich habe vor ner Woche unsere Quellcodes online gestellt.", wäre der nicht sehr begeistert.
 

schalentier

Gesperrter Benutzer
oh ein klassisches missverstaendnis.

"entwickle Open Source und du hast keine Sicherheitsprobleme"

Das hab ich nie gesagt und nie gemeint. Es geht hier darum, wie ich meine uebersetzten bytecode klassen vor der sourcecode rueckgewinnung schuetzen kann. das geht nicht 100%ig, aber mit opensource produkten ist genau das kein problem, da der quelltext ja mit dabei sein muss.

ausserdem hab ich nich gesagt, dass ich den service drumrum verkaufe, sondern ein, dem pflichtenheft nach, fertiges softwareprojekt incl quelltext. Ich verkaufe also kein produkt, sondern quelltext. Und ohne produkt gibts auch kein haftungsanspruch des kunden, wenn irgendwas nicht klappt. natuerlich werde ich auftretende bugs auch nach ablauf des projektes entfernen, aber ich hafte nicht.

fuer den kunden hat es den vorteil, dass er nicht auf mich (uns) angewiesen ist. z.b. ist es ein echtes problem, als kleine firma an grosse auftraege ranzukommen, alleine schon deswegen, weil die firma sicherlich eingeht, wenn ich ploetzlich nicht mehr mit dabei bin (andere arbeit, unfall, etc). das weiss auch der kunde und er wuerde sich niemals auf ein solchen auftrag einlassen, wenn er nicht sicher sein kann, dass das projekt auch nach uns weitergehen kann. mit quelltext ist das moeglich (<-- ich hab nicht gesagt einfach :))

ich will auch niemanden zwingen, opensource zu entwickeln. aber es ist ein hardfact, dass sich die entwicklungszeit unter verwendung von os dramatisch reduziert. da die loc (line of code), die ich schreibe kleiner ist, treten logischerweise auch weniger fehler auf. sind bugs in den eingesetzten os-modulen, kann ich die entweder selber fixen, da der quelltext dabei ist, oder ein update draufspielen und hoffen, dass sich die api nicht geaendert hat.

ich persoenlich (und mein chef auch) sehe einfach die vielen vorteile, die mir os bietet. warum sollte ich die also nicht nutzen?

ps: obendrein spart man ne menge geld...
 
B

bygones

Gast
ich persönlich sehe in der diskussion keinen Bezug mehr aufs das ursprüngliche thema....
Wenn ihr weiter diskutieren wollt - eröffnet einen Diskussionsthread in der Plauderecke !!

Daher schließe ich mal den thread !!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
N Convert.FromBase64 von C# für Java Allgemeine Java-Themen 11
N fixed-keyword von C# für Java Allgemeine Java-Themen 6
N Java API für CardDav und CalDav gesucht Allgemeine Java-Themen 4
O Suche größeres Beispiel für WebserverAnwendung mit Java Allgemeine Java-Themen 2
K Anregungen für Bilderanalyse in Java Allgemeine Java-Themen 1
B "Installer" für Java App Allgemeine Java-Themen 12
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
S Java API für GitHub erstellen Allgemeine Java-Themen 14
R Locale für Türkei nicht in standard -java ? Allgemeine Java-Themen 1
F MAPI für Java Allgemeine Java-Themen 0
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
J Java: Installer für Mods programmieren Allgemeine Java-Themen 5
L Suche Geräte für Java SE Embedded Allgemeine Java-Themen 0
H FTP Befehl/Java Methode für Submit im z/Os (Host) Allgemeine Java-Themen 1
M Eclipse libgcrypt für window in java Projekt einbinden Allgemeine Java-Themen 1
I Java - perfekte Schnittstelle für Hacker? Allgemeine Java-Themen 8
S Java DateTime für Datenbank Allgemeine Java-Themen 4
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
S deutsche Stimme für Java Speech API? Allgemeine Java-Themen 4
P Scanner als Inputstream für Java Prozess Allgemeine Java-Themen 4
D Java se u. /o. Java ee für Webservices u Java Fx Allgemeine Java-Themen 3
GUI-Programmer Java 6 Einstieg und professioneller Einsatz - für 0€ Allgemeine Java-Themen 11
B Schnittstelle von Facebook zu Java(Eclipse) für meine Internetseite Allgemeine Java-Themen 20
H Von normalen Java Programmen zu Java Serveranwendungen für das WWW? Allgemeine Java-Themen 3
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
L Java TimeZone für bestimmten offset -> Bessere Möglichkeit? Allgemeine Java-Themen 2
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
A IPA für java Allgemeine Java-Themen 7
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
W Konfigurationsdatei für Java-App Allgemeine Java-Themen 11
B Software Metriken für Java Allgemeine Java-Themen 36
D Chat Bot für Java-Chat Allgemeine Java-Themen 18
B Reimplementierung LAPACK und BLAS für Java verfügbar? Allgemeine Java-Themen 10
F Java-Repository für daheim Allgemeine Java-Themen 18
Hotkey Beispiel für grosse Java Projekte Allgemeine Java-Themen 9
J Installer für Java-Programm Allgemeine Java-Themen 5
N search api für java Allgemeine Java-Themen 12
C Java für Landkarte!? Allgemeine Java-Themen 2
N Idee für Java Projekt Allgemeine Java-Themen 30
A 2D Framework für Java Allgemeine Java-Themen 2
Mars87 Webspace für Java-Webanwendung Allgemeine Java-Themen 5
MQue aktuelle Wetterdaten für Java- Programm Allgemeine Java-Themen 9
M Java Bibliothek für Kennzahlen Visualisierung Allgemeine Java-Themen 2
H Java Bibliothek für UML Diagramme? Allgemeine Java-Themen 2
D Recipes / Codeschnipsel Datenbank für Java? Allgemeine Java-Themen 3
G Java Applet für VPN Allgemeine Java-Themen 2
G Weboberfläche für Java Anwendung? Allgemeine Java-Themen 10
F Java für Handy Allgemeine Java-Themen 3
P Ist Java überhaupt das Richtige für mich? Allgemeine Java-Themen 7
M Java Regular Expression für Mathe-String (= 2+4*3+2) Allgemeine Java-Themen 7
X JAVA Framework für suspend and resume Allgemeine Java-Themen 2
U Property Grid für java? Allgemeine Java-Themen 12
G Xenoage Java Exe/App Starter für Mac OS? Allgemeine Java-Themen 6
G Java für wen? Allgemeine Java-Themen 21
F Java Library für Videobearbeitung, edit, cut, encode. Allgemeine Java-Themen 6
N Empfehlung für Java 1.5 Decompiler gesucht Allgemeine Java-Themen 2
D parallelfx für java Allgemeine Java-Themen 2
oltoko PID für das laufende Java Programm herausfinden Allgemeine Java-Themen 3
J Eure Wunschliste für Java 7? Allgemeine Java-Themen 114
P Installationsroutine für eigenes Java-Programm Allgemeine Java-Themen 3
F Anbieter für GeoDaten mit Java API Allgemeine Java-Themen 3
W Einfaches Installer/setup tool für java programme das. Allgemeine Java-Themen 4
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
T Habt ihr mir ein paar Lerntipps für Java? Allgemeine Java-Themen 5
C Java 6 Programme irgendwie lauffähig machen für Mac 10.5 Allgemeine Java-Themen 11
G Hardwarenahe Bibliotheken für Java? Allgemeine Java-Themen 2
J freie Chart API für java? Allgemeine Java-Themen 2
tfa Argumente für Java 6 Allgemeine Java-Themen 63
T Welches Webframew0rk für pure Java? Allgemeine Java-Themen 13
P Server für Java- Programme Allgemeine Java-Themen 8
I Java framewörk für Ruby Allgemeine Java-Themen 6
D java spiele und tools für touchscreen handys Allgemeine Java-Themen 1
D Tests für Java Allgemeine Java-Themen 3
G Java API für ICQ Allgemeine Java-Themen 7
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
L eBay-SDK für Java Allgemeine Java-Themen 3
M tools für java Allgemeine Java-Themen 12
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
G Java-Plugin für Vista (x64)? Allgemeine Java-Themen 3
B Report-Designer für Java Allgemeine Java-Themen 6
C preg_match für JAVA! Allgemeine Java-Themen 2
G java konstrukt für x und y wertepaare zu speichern ? Allgemeine Java-Themen 2
P welche java version für javax.mail? Allgemeine Java-Themen 7
P ProGuard 4 für java Allgemeine Java-Themen 3
E Java für Nokia 6230 Allgemeine Java-Themen 8
J Java-Com Bridge für Excel Allgemeine Java-Themen 4
J Fehlertolerante(re) Codecs für Java Allgemeine Java-Themen 19
A Java PDF Bibliothek für Volltextsuche Allgemeine Java-Themen 2
J Java Lizenz für Firmen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben