Wie sicher ist eine Xor Verschlüsselung?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Wie sicher ist eine Xor Verschlüsselung?

Beitrag von Sebastian »

Wie sicher ist die hier angebotene Verschlüsselung? Habe ich diese überhaupt richtig programmiert?

Code: Alles auswählen

Passwort.s = "Testpasswort"
counter.l = 1

Dim Pass(Len(Passwort))
For x=1 To Len(Passwort)
 Pass(x)=Asc(Mid(Passwort,x,1))
Next

OpenFile(0,".\Test.txt")
OpenFile(1,".\Test2.txt")

For x=1 To Lof(0)
 counter+1
 If counter>Len(Passwort)
  counter=1
 EndIf
 charakter.b=ReadByte(0)
 new= charakter ! Pass(counter)
 WriteByte(1, new)
Next

CloseFile(0)
CloseFile(1)
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Code: Alles auswählen

Procedure.b coden(sFile.s)

  Protected hFile.l = 0
  Protected lLength.l = 0
  Protected *mData.l = 0
  Protected lPos.l = 0
  Protected password.l = 5
  
  If FileSize(sFile) > 0
    
    hFile = OpenFile(#PB_Any, sFile)
    
    If hFile > 0
      
      
      lLength = Lof(hFile)

      *mData = AllocateMemory(lLength)
      
      If *mData
        
        ReadData(hFile, *mData, lLength)
        
      EndIf
      
      CloseFile(hFile)
      
      For lPos = *mData To *mData + (lLength - 1)
        
        PokeB(lPos, PeekB(lPos) ! password)
        
      Next
      
      If *mData
        
        hFile = CreateFile(#PB_Any, sFile)
        
        If hFile
          
          WriteData(hFile, *mData, lLength)
          CloseFile(hFile)
          
          ProcedureReturn #True
          
        EndIf
        
      EndIf
      
    EndIf
    
  EndIf  
  
  ProcedureReturn #False
  
EndProcedure
So benutze ich die Verschlüsselung, ist jetzt für ein File, aber das System dürfte klar sein. Ist sehr schnell, da es direkt über den Memory geht.
Sicherheit ist wie immer relativ. Du hast einen Schlüssel, den niemand kennen sollte. Zudem sollte er nicht leicht zu erraten, sein, daher bietet es sich noch an, das ganze so zu erweitern, dass zB zu dem Schlüssel bei jedem Durchlauf 3 addiert wird, so ändert sich in jedem Schritt der Schlüssel.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Die XOr Verschlüsselung selber ist schwach kann aber durch Kombinieren diverser Techniken recht effektiv sein. Das erste große Manko ist das sich dein Passwort sowie Dateipfade unverschlüsselt im Source befinden. Diese Strings würden wohl gleich ins Auge fallen wenn man die EXE mit OLLYDBG malträtiert.

Ich habe vor längerer Zeit eine ähnliche Frage gehabt. Dieser Thread dürfte ganz interessant sein:

http://www.purebasic.fr/german/viewtopic.php?t=13827
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Man kann nicht sagen, ob XOR sicher oder unsicher ist. Schließlich ist XOR ja
nicht der Algorithmus, sondern nur das Verfahren wie die Daten mit dem
Generatorausgang verknüpft werden. Also kommt es nur auf den Generator
an. Ich kenne auch kein aktuelles Verfahren, wo XOR nicht dazu benutzt wird die Daten zu verknüpfen.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Okay. Das hilft mir schon sehr weiter. Dann kann ich dieses Verfahren ja benutzen, um z.B. Grafiken zu schützen. Das man einen String nachher in einem HexEditor unverschlüsselt lesen kann, war mir nicht klar. Vielen Dank für den Tipp! Ist es demnach sicherer verschiedene Zahlen in ein Array zu lesen und diese dann als Schlüssel zu verwenden oder lässt sich dieses Verfahren auch ohne weiteres in einem HexEditor nachvollziehen? Es geht mir gar nicht darum eine sehr sichere Variante der Verschlüsselung anzuwenden, sondern sie muss vor allem schnell sein, damit ein Level sofort eingelesen werden kann. Ich möchte einfach ein wenig den Spaß daran verderben bestimmte Datenbankwerte und Grafiken zu verändern. Ein erfahrener Hacker ist vermutlich sowieso nur schwer aufzuhalten.
(Win 11 64-bit, PB 6.04 und 6.10)
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Du kannst ja mal dein Programm mit OllyDbg analysieren.
Link: http://www.ollydbg.de/

Achso, noch etwas... Code doch deinen String "weich" ^^ Damit meine ich, dass du alles so machst. Alle wichtigen Daten mit Chr(xx)+Chr(xx)+Chr(xx) u.s.w. ;) Aber WICHTIG! Verwende das weichcoden so:

Code: Alles auswählen

Procedure ChrEx(Zahl)
  ProcedureReturn Chr(Zahl)
EndProcedure

ChrEx(XX)+ChrEx(XX)
Du kannst die Prozedur natürlich auch anders nennen, aber es is wichtig, dass du nicht einfach Chr(xx) verwendest, da PureBasic das dann direkt umwandelt bevor es compiled wird. Die obere Variante verhindert dies. Auch noch nützlich für Schutzmechanismen:

http://www.s-a-ve.com/faq/Anti-Cracking-Tips-1.txt
http://www.s-a-ve.com/faq/Anti-Cracking-Tips-2.htm

Zudem kannst du dein Programm bei hackerboard.de testen lassen, falls es wirklich sicher sein soll. (An die Mods: Dieser Board ist 100% legal, es werden normale Themen verwendet. Also "NO Bann" ;) ) Dort hat es einen CrackMe bereich, wo andere User einfach eigene Programme reinstellen können, das Ziel ist nur dass man dann ne Registriert-Meldung oder sowas kriegt. Wie gesagt nicht illegal ;)

Auch nicht schlecht ist es, wenn du Fake-Variablen (diese natürlich hardgecoded, also nich weich ^^ ) u. Fake-Prozeduren u.s.w. verwendest. Zudem kannst du ganz viele Gotos und Spagetti-Code verwenden, das verwirrt noch mehr. Aber wie du schon gesagt hast: Es gibt keinen 100% Schutz, genau wie es keine 100% Firewall gibt... (Zwar doch xD: http://www.home.pages.at/heaven/absolut.htm ) ^^ Zur Info: Ich habe gelesen dass du keine Shareware machen willst, sondern einfach nen kleine DB & Grafik-Schutz. Trotzdem ist das nützlich. ^^

Gruss
PMTheQuick ;)
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Wenn man ein Programm vor Veränderung schützen möchte, kann man das mit einem MD5Fingerprint.

Das Ergebnis schreibst du entweder ans Ende der Datei und erzeugst nur einen Fingerprint vom Anfang bis 32 Zeichen vor Ende der Exe-Datei ...

Die Überprüfung des MD5-Fingerprints ist in deinem Programmcode irgendwo "versteckt" ...

jeder ASM-Hacker findet das sicherlich. Aber gegen die kann man nichts machen. Die machen den ganzen Tag ja nichts anderes.
Irgendwer muss ja die Cracks und Hacks für die ganzen illegalen Kopien von irgendwelchen Spielen erstellen. Und Spieleentwickler kennen sich ja auch mit Programmierung aus. Die Frage ist also nicht, ob es einen sicheren Schutz gibt, sondern wie lange es dauert, bis dieser ausgehebelt wird.


Kennt jemand ein Programm, was mir eine Art Raid 5 Funktion bereit stellt?

Nur weil gerade das XOR ein Thema war.

Drei Festplatten. Alle in unterschiedlichen Größen.
Von zwei Festplatten sollen Daten mit XOR "addiert" werden, das Ergebnis kommt auf die dritte Festplatte.

Wollte ich schon mal als PureBasicProjekt starten, dachte mir aber, dass es da entweder was gibt, oder der Aufwand zu groß ist, bzw. das Programm bei mehreren hundert Gigabyte ja auch ordenlich schnell sein muss ...

Jemand eine Idee? :roll:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Xaby hat geschrieben:Kennt jemand ein Programm, was mir eine Art Raid 5 Funktion bereit stellt?

Nur weil gerade das XOR ein Thema war.

Drei Festplatten. Alle in unterschiedlichen Größen.
Von zwei Festplatten sollen Daten mit XOR "addiert" werden, das Ergebnis kommt auf die dritte Festplatte.
So wie Du es beschrieben hast scheint es sich bei Deinem Vorhaben ehen um eine RAID-4 Nachbildung zu handeln.
Bei RAID-5 werden die Paritätsdaten auf alle Platten gleichermaßen verteilt.
Im verlinkten Beitrag zu RAID-5 findest Du auch noch einige weiterführende Links zu Paritätsinformationen und Kanalcodierung - vielleicht hilft Dir das ja weiter.

Gruß und FF,
PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Der Link ist cool

JBOD und Softwareraid ... sowie Volume Management Software ...
das waren die Begriffe, nach denen ich gesucht habe.

Es gibt also schon Software /:->

Und ob Raid 4 oder 5, das wäre mir jetzt gleich.
Bei 3 Festplatten sind ja wohl so oder so immer alle drei beteiligt
Raid 4 wäre Software mäßig wohl leichter zu realisieren, war mein erster Gedanke. Wenn natürlich die Festplatte durch das ständige Schreiben abgenutzt wird ... und damit eine Sollbruchstelle entsteht ...

Mein Gedanke war auch, dass es ja sinnvoller ist, wenn ich zwei Datenfestplatten habe, wo Daten zur Benutzung drauf sind und eine dritte, die mich nur im Notfall interessiert.

Sonst muss ich ja auch noch mehr wissen, auf welcher Festplatte ich welche Daten abgelegt habe.

Ist eine Organisationsfrage :roll:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

ständige Schreiben abgenutzt wird ... und damit eine Sollbruchstelle entsteht ...
Deshalb hat man in richtigen RAID Systemen ( Servern etc ) auch andere Platten als im Herkömmlichen Aldi PC. Kosten auch einiges mehr ... 400 bis 800 .- aufwärts pro pladde!

Ausgelegt für 24/7 Dauerbetrieb. Zb an dem Storage Array an dem ich hier arbeite hats 48 Platten. SCSI Anbindung an nen NAS - selbest wenn das ding ned Angehängt ist laufen alle platten udn schreiben ihr HW Raid ( Auf jedenfall wird da ständig gelesen / geschrieben ).

Würde sagen vergiss des als Projekt... schon nur allein wenn man da ein gewisses Level an Datensicherheit ( darum gehts ja ) erreichen will... Wills dir ned ausreden - aber wenn damit was sinnvolleres machen willst wirds schwer. Zum lernen ist natürlich alles erlaubt :)

Was eher interessant wäre - wollt ichg vor ner Zeit mal schreiben aber hab immernoch zuviele Sachen offen.
Soweas wie SVN für PBler - PureOpenProjekt Distribution System via P2P und eine zentrale Webdb.

Thalius
"...smoking hash-tables until until you run out of memory." :P
Antworten