Sicherheitsfragen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Community,

ich habe einige Fragen zur Sicherheit von Java Programmen.

Ich habe ein Programm erstellt welches einige Operationen ausführt, wie stehen, die Chancen, dass jmd. der das Programm besitzt herausfinden kann, was genau dieses Programm macht?!

---

Zudem habe ich noch eine Frage:

Ich möchte Daten von einem lokalen Rechner Sammeln und die an einen Server schicken, der diese wiederum bearbeitet. Hier dachte ich mir, ich könnte doch die Object Speicherung nutzen und einfach ein datenObject an den Server weiterschicken, wie hoch ist hier die Gefahr, dass jmd. an das Object kommt und es danach auslesen kann bzw. verändern kann.

--

Noch was. Wenn ich wärend der Laufzeit des Programmes irgendetwas in Variablen speichere, wie hoch sind hier die chancen, dass diese jmd. verändern kann?!

Für eure Antworten wäre ich sehr dankbar.

bis dahin

MFG
 

wayne

Bekanntes Mitglied
hört sich für mich so an, als wolltest du einen trojaner schreiben und frägst nun uns hier im forum, wie du den am besten verstecken kannst. sorry, aber bei sowas hab ich ein persönliches problem damit, dir eine hilfreiche antwort zu geben.

wayne
 
G

Guest

Gast
Wusste dass dies kommt.

Also einen trojaner will ich nicht schreiben, dafür gibt es ja genug.

Nein es geht eher um ein LigaTool, welches den Rechner während der eines LigaSpiels überwacht.

In der art von Aequitas von der ESL, wenn ihr das kennt!?

Also vom Prinziep schon ein Trojaner, aber einer der Freiwillig von den Useren geloadet wird ;).

Die sicherheitsfragen beziehen sich eben darauf, dass CheatCoder nicht leichtes spiel haben die Funktionsweise des Tools bzw. die Daten die Übertragen werden so zu verändern, dass der rechner wieder Cheatfrei ist--

Hoffe ihr versteht was ich meine.. Soll hier kein Illegales Ding werden oder Ähnliches!
 

wayne

Bekanntes Mitglied
nun gut, wollten wir dir mal glauben :?

zu deinen fragen möchte ich aber trotzdem nur kurze antworten geben, denn über jedes thema könnte man den bildschirm mit info's füllen.

dein programm an sich kannst du vor decompilierung schon schützen, nur soweit ich weiß, nicht mit kostenlosen mitteln. hier wurde unter anderem mal darüber diskutiert.

theoretisch ist eine veränderung der gesendeten daten immer möglich. praktisch ist die userzahl, die diese technik beherscht jedoch äusserst gering. um sicher zu gehen, würde ich empfehlen, daß du die daten verschlüsselst. für das senden von daten gibts ja bereits etliche verschlüsselungsalgorithmen. ohne zu wissen, welchen algorithmus du verwenden willst und ohne, daß du selbst danach gesucht hast, ob ein entsprechendes package erhältlich ist, macht es wenig sinn, hierzu noch weitere hilfe anzubieten. ich kann dir aber noch raten, daß du serverseitig eine authentifizierung realisierst, damit du sicher sein kannst, daß nur dein programm daten an den server schickt und nicht irgenein wildgewordener user. eine solche authentifizierung sollte sich möglichst auch an der anfrage orientieren, um gleich sicherzustellen, daß diese authentisch ist. etwas in der art eine MD5-hash-wertes zusammen mit sekundengenauer uhrzeit des absendens, vereint zu einer prüfsumme. offensichtlich dabei aber noch das datum und die uhrzeit. verändert jemand deine anfrage, so wird er warscheinlich auch die uhrzeit des sendedatums abändern. dadurch stimmt dann aber nicht mehr die prüfsumme. genau so, wie wenn er nur die daten ändert. dann erhält dein server eine anfrage mit falscher prüfsumme bezüglich der daten. wenn jemand beides ändert, so muss er auch heraus finden, wie du die prüfsumme aus daten und zeitpunkt errechnest, und ohnehin muss er es erst mal schaffen die anfrage zu entschlüsseln und hinterher wieder korrekt zu verschlüsseln.

die daten im RAM-speicher sind selbstverständlich auch ein mögliches angriffsziel. für die hab ich aber nur die empfehlung parat, diese gut zu verstecken. ich meine, natürlich kannst du einen string ebenfalls verschlüsseln, jedoch hast du ihn kurzfristig als ganzes erst mal im speicher drin stehen, bevor du ihn verschlüsselst bzw. warscheinlich ja auch bevor du ihn versendest oder wenn du ihn vergleichen oder verändern willst. genau so siehts mit integern aus. ein sicherungsalgorithmus zu sicherung der daten im speicher ist mir nicht bekannt (was nicht heist, daß es keinen gibt). es sollte aber möglich sein einen solchen zu entwickeln. dazu könntest du z.b. einen integerwert auf mehrere integerwerte aufteilen. würde ich mir in der art vorstellen, daß du aus einem integer 8 machst und jedem dieser 8 integer 4 bit des eigentlichen integers an vorher festgelegten stellen zuweist. zu sowas musst du dir dann halt noch operationen basteln, wie +,-,*,/ sowie ==, damit du mit dem teil auch arbeiten kannst. genau so könntest du das auch mit einem String machen, der ja auch char-werten besteht, also aus 8-bit-werten.

hoffe, daß fürt dich auf die richtigen spuren, damit das was wird

viel erfolg

wayne
 
G

Guest

Gast
Anonymous hat gesagt.:
Ich habe ein Programm erstellt welches einige Operationen ausführt, wie stehen, die Chancen, dass jmd. der das Programm besitzt herausfinden kann, was genau dieses Programm macht?!

Wenn er sich auskennt kann der Angreifer das immer herausfinden. Und das ist nicht nur bei Java so sondern bei jedem Computerprogramm.
Du kannst es nur versuchen zuerschweren.
 

wayne

Bekanntes Mitglied
du bringst es auf den punkt. genau darauf laufen ja auch meine ansätze hier heraus. am offensichtlichsten der letzte, aber verschlüsselte datenübertragung ist ja auch nichts anderes, definiert sich ein sicherer verschlüsselungsalgorithmus nicht durch seine unknackbarkeit sondern durch die zeit, die ein computer braucht, die nachricht zu entschlüsseln. ist letztere mehrere jahrzehnte groß, so gilt ein algorithmus als sicher.

dem ansatz folgendend, daß es dem cheater erschwert werden sollte, zu cheaten, lassen sich natürlich diverse möglichkeiten auftun. beispielsweise durch das negieren, verUNDen bzw. verODERn von zahlen bzw. zeichen kannst du da schon einiges schwerer machen. noch schwerer wirds, wenn durch eine zahl nicht eine bit-kette sondern verschiedene in undurchsichtiger weise geändert werden, eben der ansatz, daß du einen integerwert auf mehrere verteilst.

letztlich kann ich dir nur raten: sei kreativ :wink:

wünsche gutes gelingen

wayne
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben