Datei Verschlüsseln

Status
Nicht offen für weitere Antworten.

SammY

Bekanntes Mitglied
Hi Leute,
hab mal wieder ein Problem.

Könnt ihr mir vielleicht ein paar Tips zum Verschlüsseln einer Datei geben.

Also folgendes Ausgangssituation:

Ich habe ein Programm welches gewisse Aktionen in einem sogenannten Logbuch abspeichert.
Das Logbuch darf nicht verändert werden können und soll unleserlich gespeichert werden.
Zum Thema unleserlich habe ich schon mit Cipher was gemacht was auch ziemlich gut funktioniert hat.

Jetzt muss ich halt nur noch was machen damit ich sichergehen kann das die Datei keiner änder bzw löschen kann.

Vielen Dank schon mal im Vorraus.

Gruß Manuel.
 
Hi,
dafür zu sorgen, dass keiner die Datei ändern oder löschen kann dürfte so ziemlich unmöglich sein.
Solange die Datei im Dateisystem zu finden ist, wird es möglich sein hier zuzugreifen. Spätestens ein Admin hat alle dazu nötigen Rechte.
Richtig schwer würdest du es ihm wohl erst machen, wenn du die Datei vor ihm versteckst, dazu einfach mal hier und da einen Hook umbiegen und ruck-zuck hast du ein Rootkit und deine Software gilt als hochgefährlich und sollte nie verwendet werden!
Nein, ganz ehrlich, du kannst dich nicht vor Veränderung schützen, schließlich möchtest du auch in die Datei schreiben. Was du tun kannst ist, Veränderung feststellen. Hier gibt es das Schlüsselwort Hash, diese sind relativ eindeutig für jede Datei. Natürlich gibt es für jede Größe des Hashes nur endlich viele verschiedene Dateien, aber es ist trotzdem so ziemlich unmöglich den gleichen Hash für unterschiedliche Dateien zu bekommen. Diesen kannst du an einer bestimmten Stelle (z.B. Anfang oder Ende des Logs) mit abspeichern und verschlüsseln.
Wenn du die Datei das nächste mal veränderst, kannst du hier leicht feststellen ob der Hash noch stimmt oder nicht (jede Änderung an der Datei würde zu einem nicht führen!).
Letztlich ändert es aber nichts daran, dass du nie garantieren kannst, dass die Datei nicht verändert wird. Du kannst es nur (leichter) feststellen. Knackt jmd. deine Verschlüsselung und erkennt wie du den Hash berechnest, ist es wieder egal was du hier machst.
Spätestens das Formatieren einer Festplatte führt auch wieder zum Löschen deiner Datei.
Sicher gehen kannst du also nicht. Du kannst aber ein paar Dinge versuchen um dich bestmöglich zu schützen. Es erhöht alles nur den Aufwand, der getrieben werden muss! Die eine Sache ist, bette die Datei ein. Hierfür kommen zum Beispiel Archive in Frage! Redundanz ist auch noch eine Möglichkeit, mehr als eine kopie der Datei (wobei sich dann Kompression mit anbietet). Hier solltest du aber auch schauen, dass du die vor dem Verschlüsseln ausführst, Verschlüsselung führt zu einer sehr zufälligen Verteilung von Zeichen, da würde die Kompression nicht mehr viel bringen.
Und zu guter Letzt, verwende einfach Honeypots. Schreib einfach ein Log-File mit bedeutungslosen Dingen. Dieses sollte ruhig unverschlüsselt sichtbar sein. Hier kannst du ja nur Programmstart und Ende eintragen, ist eigentlich egal. Einfache Benutzer können dieses File dann mit dem echten Log verwechseln, verändern und löschen und es hätte keine Auswirkungen auf dein Programm.
Spätestens wenn sich jmd. die Mühe macht und dein Code dissassembliert, hilft dir das alles auch nicht mehr, aber jmd. der darin gut genug ist und diese Arbeit auch auf sich nimmt wird sicherlich auch deine anderen Schutzmechanismen knacken. Da wäre dann mein Lösungsvorschlag ein eigener USB-Stick für das Programm, mit einem eigenen Properitären Treiber, der sicherstellt dass nur dein Programm schreibend zugreifen kann :wink:

Gruß Der Anmeldeboykottierer
 
Ich versuche jetzt mal das ganze in ein Jar File einzubinden.

Was noch so ein Problem ist:

Ich will eine Userverwaltung zu meinem Programm schreiben.
Wo speichere ich die Recht und User denn ab.
Muss ich ja wieder in einer Datei machen, oder??
 
Jetzt mal 'ne Frage: Wozu braucht man das eigentlich? ???:L
Wenn du eine Logdatei hast, steht da doch nichts so geheimes Drin, als dass man es als Anwender nicht wissen dürfte.
Wenn dir zu viel in der Logdatei steht, setze das Loglevel halt ein bisschen niedriger.

Und: Warum sollte jemand die Datei ändern oder Löschen? Nach dem Erstellen ist eine Log-Datei so wie so nur noch für die Entwickler zur Fehlerbehebung wichtig.


Zum "Sichergehen, das niemand die Datei ändert":
Packe vllt. alles zusammen mit einer Kontrollfunktion (Hash etc.) in eine Klasse, obfuskiere die, kompilliere die und verpacke sie dann noch in die Programm-Jar.
 
Mal ein bischen hintergrund:

Mein Programm steuert Hardware. Tritt ein Fehler in der Hardware auf so wird das in einem Logbuch gespeichert.
Damit aber keiner diese Fehler vertuschen kann soll diese Verschlüsselt werden.

Die Logdatei sollte aber später noch evtl in ein ERP System übertragen werden können.
 
dieta hat gesagt.:
Zum "Sichergehen, das niemand die Datei ändert":
Packe vllt. alles zusammen mit einer Kontrollfunktion (Hash etc.) in eine Klasse, obfuskiere die, kompilliere die und verpacke sie dann noch in die Programm-Jar.

Das wird wohl nicht gehen, denn man kann ja nicht zur Laufzeit Veränderungen am Code machen und ich nehme doch mal stark an, dass diese Datei sich später auch noch ändern soll.

Wie schon gesagt wurde: Wenn die Datei lokal gespeichert wird, dann kann man auch nicht verhindern, das sie gelöscht oder verändert werden kann. Aber es gibt Möglichkeiten, diese Veränderungen festzustellen durch Verschlüsselung (RSA, Triple DES, ...) und Hashfunktionen (MD5, ...).

Natürlich hat Anmeldeboykottierer recht und auch diese Verfahren sind nicht 100% sicher. Doch wenn man nicht gerade veraltete Schlüsselgrößen verwendet, ist das ganze doch schon sehr sicher.

Wenn Du wirklich verhindern willst, dass die Daten gelöscht werden können, so darfst Du sie nicht lokal speichern. Dann bietet es sich an, diese Daten über eine sichere Serververbindung z.b. in einer Datenbank im Netz zu speichern.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben