Verschlüsselung

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

BladeRunner

Moderator

BeitragDi, Sep 05, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Harrgott, das läuft hier ganz schön aus dem Ruder.
Für normale Anwendungen reichen die Verschlüsselungen wie sie hier genutzt werden mehr als aus.
Ich hab nicht vor in meinen Programmen die Geheimnisse der Menschheit, den Inhalt der Katakomben des Vatikans oder George W. Bushs Kontoauszüge unterzubringen.
99% der Leuts die etwas von mir in die Finger bekommen es nur nutzen. Das letzte Prozent wird neugierig schnüffeln, und davon wird vielleicht wieder 1 % was machen können.
So what?
Wir schreiben hier bestenfalls casual Games.
Dafür reichts locker.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

antome

!!! gesperrt !!!

BeitragDi, Sep 05, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das triff aber auf mein Spiel nicht zu, da ein Hauptanreiz dabei liegt Daten per Email zu tauschen.
Auch liegt ein hautsächlicher Reiz in einer von mehreren Highscoretabellen aufgefürt zu werden.

Da kann ein Cheater reichen um mehreren dutzend Spielern die Freude zu verderben.

Ich glaube es gibt keinen Schutz wenn der Schlüssel letztendlich im Spielcode selber versteckt ist.
Ich kann mir nur vorstellen es den Spielverderbern so schwer wie möglich zu machen indem ich
eine verschachtelte Verwirrungstaktik bei der Verschlüsselungszeremonie im Code verwende.

Ich habe bisher auch keine Seite mit Algos gefunden, man findet 1000de von Seiten in denen darüber geschrieben wird, aber nichts zu sehen wie der aufgebaut ist.

Hat evtl. jemand einen Link ?
antome
 

Dreamora

BeitragDi, Sep 05, 2006 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
antome hat Folgendes geschrieben:
dies ist eine erstgemeinte Frage auch wenn sie sich anhört als hätte ich nicht lange genug darüber nachgedacht.

Warum kein ein Profi dann nicht den hochkomplizierten Algorhytmus mitsamt Key aus einem
Programm rausholen. was ist daran sicherer ?

In meinem Fall wären es nur Spieldaten, welche aber nicht verändert werden dürfen.
Profis gibt es sicher auch unter den Cheatern.



Der Algo als solches ist eigentlich nicht sicher, jeder kann ihn sich anschauen etc.
Der sichere Anteil ist, das er zum Knacken deiner Daten (da man den Key ja nicht hat) etwa 4 Millionen Jahre bei den aktuellen Computersystemen brauchen, weil man für Verschlüsselung Operationen nimmt, die aktuell nicht effizient zu handhaben sind, die aber "kinderleicht zu designen und implementieren" sind Smile

BladeRunner: Hat ja auch niemand gesagt, das man das braucht. Es ging um die Sicherheit, nicht um "wie sinnvoll ist es" Smile
Das niemand mit den HighEnd Verschlüsselungen in Spielen auffährt ist klar und das alleine schon aus nem simplen Grund: Die Spiele sollen brauchbare Ladezeiten haben und das liegt nicht drin wenn man tausende von Exp und Potenzaufrufe drin hat bei jeder Datei die man laden will.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

pixelshooter

BeitragDi, Sep 12, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum macht ihr euch alle wolche arbeit?! RSA algo funzt doch und wem das zu langsam ist, der nimmt dann die pgp-variante (nur schlüssel rsa-verschlüsseln).
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

5k41

BeitragMi, Sep 13, 2006 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
soo, sorry das ich solange gebraucht hab, aber der ich hatte sehr viel um die Ohren, ausserdem hab ich den scheiß fehler immer noch nicht ganz draussen.
Naja hier erstmal mein "toller" algo:
Code: [AUSKLAPPEN]

de$=DeCryptString("Hallo!","password")
en$=EnCryptString(de$,"password")

Print de
Print en

Function DeCryptString$(strg$,password$)
 
 Local newstrg$=""
 Local key%=0
 Local lenght%=Len(password$)
 
 For i = 1 To lenght
    key=key+Asc(Mid(password$,i,1))*i
 Next
 
 SeedRnd key
 
 For i=1 To Len(strg)
   
  SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))
     
  random=Rand(-key,key)
 
  newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random)
 
 Next
 
 Return newstrg$

End Function

Function EnCryptString$(strg$,password$)

 Local newstrg$=""
 Local key%=0
 Local lenght%=Len(password$)
 Local shortstrg$=strg$
 
 For i = 1 To lenght
    key=key+Asc(Mid(password$,i,1))*i
 Next
 
 SeedRnd key
 
 For i=1 To Len(strg)
 
  SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))
     
  random=Rand(-key,key)
 
  newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random)
 
 Next
 
 Return newstrg$
 
End Function

Bei so kleineren sachen, oder auch bei:
Code: [AUSKLAPPEN]

Hallo! Das ist meine Geniale Verschlüsselung!
Toll oder?
Gehts nun auch in arsch?

gehts perfekt, aber beim längeren Text wurde aus:
Code: [AUSKLAPPEN]

Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe
eines Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext
umgewandelt wird. Als Parameter des Verschlüsselungsverfahrens werden
ein oder mehrere Schlüssel verwendet. Das Forschungsgebiet, das sich
mit der Verschlüsselung und ihrer Geschichte beschäftigt,
wird als Kryptografie bezeichnet.

usw.
das:
Code: [AUSKLAPPEN]

Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe
eines Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext
umg%Õàiê¦x#Âé›Ý®Wª¡Š
-¦-.�UYsa�¢‰8!HŒ0;B–ؼW¹¸¿(ÜËÒ$ECM‹k·ÏDö
ãúV»AÅ$ê-µs3Ý\³_C¯¾Ar�“]}‡Ú–—%”ñIÄò/ò›s.àÎþrJÕ’k˜ã\ÅIJ‰†‰L•<Ð,
LØÎT™Ç
Íì0K~"dH#ó�”’:ŽSÔoe„ ÚÞ®ž
Dû• …xe`õø0ëÿ»Äí)
ÁCn_Ì#Í–FD€ø‡¦ü#k)6feÝl¸5

ÛÂ

und noch mehr kryptisches... Question

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Triton

BeitragMi, Sep 13, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf einen flüchtigen Blick sehe ich, dass du das Zufällig erscheinen lassen willst, in dem du...den Zufall einbaust:

Code: [AUSKLAPPEN]

SeedRnd key

...

[{...]1,1))+Rand(-key,key))


Das ist zwar eigentlich keine schlechte Idee - in der Tat aber gibt es 2. Schwächen:
1. Dieser Zufallsalgorithmus ist glaube ich nicht immer eindeutig mit dem selben Übergabewert. Warum das so ist, wurde irgendwo früher mal im Forum ergründet und geklärt. Müsste man mal suchen.
2. Der Übergabewert für Seedrnd ist ein Integerwert welcher maximal den Wert 2^31 annehmen kann. Ich habe mir den Rest des Algos nicht genauer angeschaut,
aber wenn man im Mittel nur 2^30 Varianten mit Bruteforce durchtesten müsste, wäre das ganze in maximal wenigen Minuten geknackt.


Aber erklär doch mal mit eigenen Worten, was das Ding macht.
Ich habe jetzt keine Lust das einzeln nachzuvollziehen, würde aber wohl gerne verstehen, was du dir gedacht hast. Womöglich findet man so auch schon Schwachstellen Wink
Coding: silizium-net.de | Portfolio: Triton.ch.vu

StepTiger

BeitragMi, Sep 13, 2006 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mich mal an einem durchprobier algo versucht, jedoch haut das nicht so ganz hin, denn:
der algo müsste zwei werte zu je 2^31 überprüfen, macht also 4611686018427387904 Werte. Und da braucht jeder PC ewig.

Gibts ne bessere Variante?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

5k41

BeitragDo, Sep 14, 2006 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
erklärung:

Code: [AUSKLAPPEN]

 For i = 1 To lenght
    key=key+Asc(Mid(password$,i,1))*i
 Next

einen (fast) einmaligen Key aus dem Passwort machen.
Code: [AUSKLAPPEN]

SeedRnd key
 
 For i=1 To Len(strg)
   
  SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))

die zufallswurzel auf den Key setzen ( bei gleicher wurzel gleiche abfolge von zufallszahlen), for schleife einleiten, zufallswurzel auf ein zeichen des passworts + eine zufallszahl setzen
Code: [AUSKLAPPEN]

  random=Rand(-key,key)
 
  newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random)
 
 Next
 
 Return newstrg$

Zufallszahl holen und zum aktuellen AscII-Wert addieren, daraus wieder ein zeichen machen und an den neuen string hängen... das so lange bis der string durch ist, dann newstring zurück geben.

Idee ist mir letztens einfach so gekommen, dass man die Zufallsfunktion ja dazu missbrauchen könnte... dann das ganze noch ein bissl optimiert und dann kam das bei raus. Bin nun grad noch dabei Fakezeichen einzubauen, gibt aber dabei noch n paar probleme...

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Triton

BeitragDo, Sep 14, 2006 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich das sehe, ist es sehr unsicher:

Zitat:
einen (fast) einmaligen Key aus dem Passwort machen.

Naja, eigentlich ist es nichtmal fast einmalig.
Bsp:
Code: [AUSKLAPPEN]

Pw: (((
-> key = 40+80+120=240

Pw: (+&
-> key = 40+86+114=240

Pw: ##-
-> key = 35+70+135=240

...

Es gibt also sehr viele Möglichkeiten, irgend einen korrekten Key zu finden,
der den Klartext liefert.

Und den ganzen Rest den du macht (etwa alles mögliche dazuaddieren), kann man ja auch einfach zurückverfolgen, wenn ich das richtig sehe.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

5k41

BeitragDo, Sep 14, 2006 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
das "gag" ist, das wenn man den key hat, noch lange nicht das Passwort hat, da der SeedRnd immer auf einen Buchstaben dess Passworts von vorn nach hinten gesetzt wird, heißt wenn man ((( als Passwort hat und per Entschlüsselung (+& herraus bekommt, dann ist der kommt trotzdem nur scheiße am ende raus. Ausserdem bin ich mir nicht sicher ob du die Multiplikation mit I bedacht hast...

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

StepTiger

BeitragDo, Sep 14, 2006 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
mal was anderes!

zum durchprobieren:
Code: [AUSKLAPPEN]
de$=DeCryptString("Hallo!","password")
r=0
t1=MilliSecs()
For a=1 To 26
For b=1 To 26
For c=1 To 26
For d=1 To 26
For e=1 To 26
For f=1 To 26
For g=1 To 26
For h=1 To 26
s1$=Chr(a+96)
s2$=Chr(b+96)
s3$=Chr(c+96)
s4$=Chr(d+96)
s5$=Chr(e+96)
s6$=Chr(f+96)
s7$=Chr(g+96)
s8$=Chr(h+96)
en$=EnCryptString(de$,s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$)
If en$=de$ Then Goto found
If KeyHit(57) Then Print s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$
r=r+1
Next
Next
Next
Next
Next
Next
Next
Next
.found
t2=MilliSecs()-t1
Print "Found after "+r+" tries!"
Print "Found after "+t2/1000+" seconds!"
Print de
Print en

WaitKey
End

Function DeCryptString$(strg$,password$)

Local newstrg$=""
Local key%=0
Local lenght%=Len(password$)

For i = 1 To lenght
key=key+Asc(Mid(password$,i,1))*i
Next

SeedRnd key

For i=1 To Len(strg)

SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))

random=Rand(-key,key)

newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random)

Next

Return newstrg$

End Function

Function EnCryptString$(strg$,password$)

Local newstrg$=""
Local key%=0
Local lenght%=Len(password$)
Local shortstrg$=strg$

For i = 1 To lenght
key=key+Asc(Mid(password$,i,1))*i
Next

SeedRnd key

For i=1 To Len(strg)

SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))

random=Rand(-key,key)

newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random)

Next

Return newstrg$

End Function



wie lange dauert es bei euch?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

SoNenTyp

BeitragFr, Sep 15, 2006 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe es nur einige Minuten laufen lassen. Auf meinem 2,8gHz wird er warscheinlich so 30 Stunden brauchen. Ich glaube allerdings das sich da noch so einiges optimieren lässt.
Gruss Der Typ.

User posted image

5k41

BeitragFr, Sep 15, 2006 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
mh ist ja schonmal nicht schlecht, aber es kann SO nicht funktionieren:
Code: [AUSKLAPPEN]

en$=EnCryptString(de$,s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$)
If en$=de$ Then Goto found

wenn der entschlüsselte der verschlüsselte string ist, dann ist doch etwas grundlegendes an der verschlüsselung blöd Wink . Ausserdem bedenkst du nicht das man im Passwort +Chr(1025) schreiben könnte und das PW mehr als 8 zeichen haben könnte...

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Triton

BeitragFr, Sep 15, 2006 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
5k41 hat Folgendes geschrieben:
das "gag" ist, das wenn man den key hat, noch lange nicht das Passwort hat, da der SeedRnd immer auf einen Buchstaben dess Passworts von vorn nach hinten gesetzt wird, heißt wenn man ((( als Passwort hat und per Entschlüsselung (+& herraus bekommt, dann ist der kommt trotzdem nur scheiße am ende raus.

Naja, trotzdem ist es eine große Schwäche, die die Angriffsmöglichkeiten von Bruteforce enorm erhöht.


5k41 hat Folgendes geschrieben:
Ausserdem bin ich mir nicht sicher ob du die Multiplikation mit I bedacht hast...
MfG


i wird doch nur nach der länge des Textes ermittelt. Kann man also einfach zurückdividieren.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

5k41

BeitragSa, Sep 16, 2006 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
gut, auf deinen Inständigen Wunsch hab ich nun den Key erstellungs algo überarbeitet... bin nun grad an den PufferZeichen... funtzt auch schon fast Smile ... melde mich bei neuigkeiten!

MfG

~Neuigkeiten!~
Code: [AUSKLAPPEN]

de$=DeCryptString("Hallo!","password")
en$=EnCryptString(de$,"password")

Print de$
Print en$

Const BUFFERRATE=10

Function DeCryptString$(strg$,password$)
 
 Local newstrg$=""
 Local key%=0
 Local lenght%=Len(password$)
 
 For i = 1 To lenght
    key=2*key+Asc(Mid(password$,i,1))*(i*10)
 Next
 
 Local mask = key Mod BUFFERRATE
 If    mask = 0 Then mask = 1
 
 SeedRnd key
 
 For i=1 To Len(strg)
   
  SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))
     
  random=Rand(-key,key)
 
  newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random)
 
  If random Mod mask = 0 Then newstrg$=newstrg$+Chr(Rand(-key,key))
 
 Next
 
 Return newstrg$

End Function

Function EnCryptString$(strg$,password$)

 Local newstrg$=""
 Local key%=0
 Local lenght%=Len(password$)
 Local shortstrg$=strg$
 
 For i = 1 To lenght
    key=2*key+Asc(Mid(password$,i,1))*(i*10)
 Next
 
 Local mask = key Mod BUFFERRATE
 If    mask = 0 Then mask = 1
 
 SeedRnd key
 
 For i=1 To Len(strg)
 
  SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key))
     
  random=Rand(-key,key)
 
  newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random)
 
  If random Mod mask = 0 Then
     If Len(shortstrg$)=>i+1 Then shortstrg$=Left(shortstrg$,i)+Right(shortstrg$,Len(shortstrg)-i-1)
     Rand(-key,key)
  EndIf
 
  If i = Len(shortstrg$) Then Exit
     
 Next

 Return newstrg$
 
End Function


Der Key sollte nun sicherer sein und es werden Buffer-Zeichen eingebaut... das Problem, dass längere Texte immernoch ab einer bestimmten stelle kaputt gehen, besteht immer noch ( hab herraus gefunden, dass sich die Stelle ab der es Kryptisch wird sich mit dem Passwort ändert!).

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

5k41

BeitragSa, Sep 23, 2006 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh, ich glaub ich weiss warum keiner mehr antwortet... in meinem Fall wäre glaub ich ein Doppelpost doch schlauer gewesen als ein Edit... desshalb hier ein push ( nur weil ich vorher keinen Doppelpost machen wollte! )

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group