Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Ist diese "Verschlüsselung" sicher?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 14:14    Titel: Ist diese "Verschlüsselung" sicher? Antworten mit Zitat

Hallo, da ich lange eine Passwortverschlüsselung gesucht habe, ähnlich wie MD5 oder SHA1 (wobei inzwischen ja beide gehackt wurden) und da ich allerdings nicht fähig bin diese selbst zu portieren habe ich mir selber eine geschrieben.
Es ist eine Mischung aus der "CHEWROUT-Methode", der "XOR Methode" und etwas Eigenentwicklung...

Code:
DO
PRINT "Zu verschluesselnde Passwort (max. 32 Zeichen):"
LINE INPUT Password$
LOOP UNTIL LEN(Password$) <= 32

'Wenn das Passwort nicht durch 2 teilbar erweitern
IF LEN(Password$) MOD 2 THEN Password$ = Password$ + CHR$(LEN(Password$))

'Den String halbieren
PasswdString1$ = LEFT$(Password$, LEN(Password$) / 2)
PasswdString2$ = RIGHT$(Password$, LEN(Password$) / 2)

'Gesamtsumme der ASCII Codes der Zeichen
FOR r% = 1 TO LEN(Password$)
 PasswdSum% = PasswdSum% + ASC(MID$(Password$, r%))
NEXT r%

'Mit der Summe den Zufallsgenerator fuettern
RANDOMIZE PasswdSum%

'Die beiden Strings mit nicht darstellbaren Zufallszeichen fuellen
FOR s% = 1 TO (16 - (LEN(Password$) / 2))
 PasswdString1$ = PasswdString1$ + CHR$(INT(RND * 31))
 PasswdString2$ = PasswdString2$ + CHR$(INT(RND * 31))
NEXT s%


'Die Eigentliche Verschluesselung
FOR v% = 1 TO 16
 CryptedByte% = ASC(MID$(PasswdString1$, v%)) XOR ASC(MID$(PasswdString2$, v%))
 CryptedByte% = CryptedByte% + INT(RND * 255)
 IF CryptedByte% > 255 THEN CryptedByte% = CryptedByte% - 256
 CryptedPasswd$ = CryptedPasswd$ + LCASE$(HEX$(CryptedByte%))
NEXT v%

PRINT "Verschluesseltes Passwort: ";
PRINT CryptedPasswd$


Ich möchte hier mal fragen ob diese Methode auch wirklich sicher ist. Ich hoffe der Code ist verständlich genug. Der verschlüsselte String ist danach ein 128Bit HEX-Code.

Damit die Möglichkeit kleiner ist, dass zwei Strings den gleichen Hash ergeben sind nur 32 Zeichen erlaubt und die fehlenden werden mit den "besonderen" ASCII Codes 0 - 31 gefüllt...

Achja: Mit "sicher" meine ich natürlich ob sich daraus das Passwort nich irgendwie zurückholen lässt...
Entschlüsselbar muss es ja nicht sein, bei der Passwortabfrage werden dann einfach das eingegebene verschlüsselt und mit dem angespeicherten Verglichen...

PS: Ich habe das Programmiererforum anstatt der Projektvorstellungen genommen, da ich mir noch nicht 100% sicher bin ob es auch wirklich mehr oder weniger sicher ist...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 18.05.2005, 17:56    Titel: Antworten mit Zitat

Ich würd mal sagen, dass ich meine Bruteforce drüber rattern lassen würde... Aber, leider hab cih nur einen Pseudo-Brüter.... lachen

kann mir mal jemand eine PM schicken, in der er mir erklärt, wie ich eine ECHTE Bruteforce schreiben könnte??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 18:22    Titel: Antworten mit Zitat

also dass es mit Bruteforce zu kacken ist, ist ja wohl klar..

Wie gesagt, ich möchte wissen ob dieser Algorythmus unsicher ist, bzw ob man aus dem Hash das Passwort herauslesen kann...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.05.2005, 18:22    Titel: Antworten mit Zitat

also bruteforce zum entschlüsseln ist relativ schwierig wenns irgend ein unbekannter verschlüsselungsalgorythmus verschlüsselt hat, du kannst ja schlecht alle möglichen Verschlüsselungsarten der Reihe nach durchprobieren lassen weil du die garnicht alle kennen kannst!

So wie ich das sehe hast du in deinm Algorythmus viele reversible methoden angewendet. aber ich glaub,
CryptedByte% = ASC(MID$(PasswdString1$, v%)) XOR ASC(MID$(PasswdString2$, v%))
ist nicht so einfach zu entschlüsseln. der rest kann einfach rückgängig gemacht werden, das is kein Problem, nur bei dem ding da muss dann wahrscheinlich BruteForce ran..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 18:32    Titel: Antworten mit Zitat

Zitat:

So wie ich das sehe hast du in deinm Algorythmus viele reversible methoden angewendet. aber ich glaub,
CryptedByte% = ASC(MID$(PasswdString1$, v%)) XOR ASC(MID$(PasswdString2$, v%))
ist nicht so einfach zu entschlüsseln. der rest kann einfach rückgängig gemacht werden, das is kein Problem, nur bei dem ding da muss dann wahrscheinlich BruteForce ran..


Nur so ne Frage: Kann man ohne die Summe der ASCII-Zeichen des Passwortes die "RND-Teile" umgehen?

PS: Hat jemand noch eine bessere Methode für RANDOMIZE als mit der Summe der ASCII Codes? Ist auch nicht so ganz das Wahre. Mir will einfach nichts bessers einfallen...


Zuletzt bearbeitet von gandro am 18.05.2005, 18:38, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.05.2005, 18:37    Titel: Antworten mit Zitat

also ich hab noch mal n bisschen überlegt:

Das mit dem Randomize der Summe kann man nicht einfach zurückentschlüsseln, die XOR-Operation auch nicht, da es mehrere Möglichkeiten für die einzelnen Werte gibt. Also von daher: Dein Algorythmus is nur per Bruteforce zu knacken. Könntest höchstens das ganze noch etwas abstrahieren, dass das länger dauert, weil das geht so relativ schnell mit dem ausprobieren.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dorftrottel
gesperrt


Anmeldungsdatum: 23.04.2005
Beiträge: 97
Wohnort: Welt

BeitragVerfasst am: 18.05.2005, 18:38    Titel: Antworten mit Zitat

Nur n kleiner Vorher Nacher Vergleich...
Vorher:
Zitat:

DO
PRINT "Zu verschluesselnde Passwort (max. 32 Zeichen):"
LINE INPUT Password$
LOOP UNTIL LEN(Password$) <= 32


Nacher:
Zitat:

DO
PRINT "Zu verschluesselndes Passwort (max. 32 Zeichen):"
LINE INPUT Password$
LOOP UNTIL LEN(Password$) <= 32

grinsen grinsen grinsen
_________________
Euer Dorftrottel!
Unser Name ist unser Auftrag! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 18:47    Titel: Antworten mit Zitat

Oh grinsen

Danke...
Liegt daran dass es mal hies "Bitte geben Sie das zu verschlüsselnde Passwort ein" ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dorftrottel
gesperrt


Anmeldungsdatum: 23.04.2005
Beiträge: 97
Wohnort: Welt

BeitragVerfasst am: 18.05.2005, 18:51    Titel: Antworten mit Zitat

Coole Signatur...
grinsen cool lachen Daumen rauf!

Editiert durch Moderator: Die Masse an Smilies musste nicht sein. Ich hab' mal ein paar rausgenommen... (Sebastian)
_________________
Euer Dorftrottel!
Unser Name ist unser Auftrag! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 20:03    Titel: Antworten mit Zitat

Leute, mir ist noch was aufgefallen...
Ein Passwort das nur aus zwei Zeichen besteht hat den Selben Hash wie sein "Kehrwert" z.B.

ab & ba haben genau denselben Hash wert, da sie denselben RANDOMIZE Wert haben und per XOR verschlüsselt werden...

Ich denke man könnte das durch eine bessere Berechnung beim RANDOMIZE Wert umgehen. Wüsste jemand wie?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.05.2005, 20:12    Titel: Antworten mit Zitat

hm mach doch so:

p a s s w o r t

(p+a-s)*(s+w-o)*(r+t[-...])

also immer drei zeichen nehmen, ersten beiden addieren, drittes abziehen und diese Tripel dann multiplizieren.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 18.05.2005, 20:15    Titel: Antworten mit Zitat

Hallo!

Wenn ich mich recht ent-sinne, suchst du nach einer geeigneten Möglichkeit, ein Passwort "verschlüsselt", oder dessen spezifischen Hash-Wert abzuspeichern, dass danach ein Vergleich gezogen werden kann, ob ein eingegebenes Passwort auch wirklich das richtige ist.

Wenn du einen Hash-Wert haben willst, kann ich dir CRC16 oder 32 wirklich allerwärmstens empfehlen. Da haben die Strings "Hallo" und "Hllao" total verschiedene Werte. Die Routine ist nicht groß und passt auf ca. 15-20 Zeilen in eine stinknormale Function rein.

Anwenden könnte man das Ganze dann so:
PRINT CRC32&("Hallo!")
PRINT CRC32&("Haoll!")

Wenn du genau sowas gesucht hast, kann ich dir die Routine(n) per E-Mail oder per PM schicken lächeln
Außerdem kann man solche Prüfsummen auch von großen Dateien, die z.B. 300 KB oder größer sind, erstellen. Funktioniert bei mir jedenfalls prima.
_________________
Grüßle, Stefan lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 18.05.2005, 21:34    Titel: Antworten mit Zitat

mh...
Ja schick sie bitte mal an "gandro ät gmx punkt net", vll.ist es ja wirklich besser...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 19.05.2005, 21:09    Titel: Antworten mit Zitat

Mein "Senf" zum Titelthema: Um beurteilen zu können, ob dieser Algorithmus sicher oder unsicher ist, braucht es doch etliches an höherer Mathematik. Im Prinzip musst Du beweisen können, dass es zu jedem erzeugten Hash genau ein zugehöriges Passwort gibt, der Hashalgorithmus also eindeutig ist.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 19.05.2005, 22:03    Titel: Antworten mit Zitat

das ist er sicherlich nicht..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
gandro



Anmeldungsdatum: 18.02.2005
Beiträge: 108
Wohnort: Schweiz

BeitragVerfasst am: 19.05.2005, 22:03    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:
Mein "Senf" zum Titelthema: Um beurteilen zu können, ob dieser Algorithmus sicher oder unsicher ist, braucht es doch etliches an höherer Mathematik. Im Prinzip musst Du beweisen können, dass es zu jedem erzeugten Hash genau ein zugehöriges Passwort gibt, der Hashalgorithmus also eindeutig ist.


Also das Gegenteil kann ich dir beweisen mit den Augen rollen

Was bedeutet dass der Algorithmus so wie er ist im moment (noch) nicht zu gebrauchen ist. Aber ich denke ich nehme mal CRC32 (danke an Quark48)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.05.2005, 21:19    Titel: Antworten mit Zitat

Um wirklich sicher zu gehen, hier noch ein tipp:

Wenn jemand hart kämpft, um das PW zu ergattern, wird er vielliecht in den RAM schauen (Tools dazu gibts ja)...Also sollte das PW nicht in einer zusmannenhängenden string-variable sein!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.05.2005, 22:06    Titel: Antworten mit Zitat

ähm nein, es geht ja darum, das PW sicher abzuspeichern um es zu codiert zu vergleichen, das heißt, wenns im Ram unverschlüsselt drin steht hats an genau diesem PC schon mal jemand eingegeben und da wird dann kein anderer drangehen um das ding im Ram zu suchen.. und wenns so wichtig ist kann der User einfach den PC runterfahren und schon existiert nurnoch die verschlüsselte Variante..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 26.05.2005, 11:38    Titel: Antworten mit Zitat

Code:
function unran$ (text as string)

for a = 1 to len(text$)
init = asc(mid$(text$,a ,1))
next a

a = rnd(-init)
randomize init

for a = 1 to len(text$)
code = asc(mid$(text$,a,1)) + int(rnd *150)
if code > 255 then code = code - 255
ver$ = ver$ + chr$(code)
next a

unran$ = ver$

end function


Mit dieser kleinen function kann man auch passwörter verschlüsseln. Sie basiert auf der rnd-funktionsweise, bruacht aber kein zweites argument um einen string zu verschlüsseln. der string selber wird als initslisierung für randomize genommen.
Zur Sache mit den gleichen Hash-werten:
Es ist theoretisch möglich das es gleiche verschlüsselte werte gibt, aber das ist sehr unwahrscheinlich. ich hab mal brutforce ausprobiert, um zu schauen, ob ich eine Kombination (Klein/großbuchstaben) finde, die den gleichen hash-wert wie "zzzz" hat.
Nach 10 Minuten und 4 500 000 Kombinationen später hab ich abgebrochen. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 04.07.2005, 11:11    Titel: Artikel zum Thema eigengestrickte Verschlüsselungen Antworten mit Zitat

Frisch auf Heise entdeckt:

http://www.heise.de/security/artikel/60711

Dort bietet eine chinesische Firma eine Disk mit Verschlüsselung an und hat dazu das Rad neu erfinden wollen, allerdings mit nur mässigem Erfolg, da es sich relativ leicht knacken lässt.

Dieser Artikel soll nur zeigen, weshalb man möglichst auf bewährte Standard-Verschlüsselungsalgorithmen zurückgreifen sollte. Selbst ein uralter DES wäre für diesen Hersteller immer noch die bessere Wahl gewesen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz