|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.03.2006, 22:54 Titel: "Security-Code" |
|
|
Hallo!
Ich hab mal "einfach so" eine art CRC-verschlüsselung von Passwörtern programmiert.... in einer adtei wird nur der CRC gespeichert (wenn man das CRC nennen kann ), und wenn man das passwort eingibt, wird der neue CRC mit dem alten verglichen - ich finde, das ist eine sehr sichere methode... überzeugt euch selbst, das prgoramm ist in VIsualBasic geschrieben.
Startet am besten zuerst Checker.exe, klickt auf den button, übertragt das Passwort und macht "copy to clipboard"
(link ungültig) _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Zuletzt bearbeitet von Jojo am 20.02.2010, 15:42, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.03.2006, 21:32 Titel: |
|
|
Naja, es is ja kein richtiges CRC.... aber ich glaub, ich muss sowieso nochmal etwas überarbeiten.. durch einfaches wurzelziehen könnte man evtl. das passwort zurückverfolgen... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
anihex
Anmeldungsdatum: 09.03.2006 Beiträge: 51
|
Verfasst am: 21.03.2006, 21:38 Titel: |
|
|
Ich hab mal ne Codierung geschrieben, die nicht zurückverfolgt werden kann...
Ich denke ausser Brute-Force ist diese Codierung ziemlich sicher
Das Beste: es ist einfach und recht schnell!
Leider ist es ein Kommerzieles Programm, daher kann ich den Algo nicht Online stellen (mein Käufer würd mir was erzählen ) |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.03.2006, 09:21 Titel: |
|
|
CRC ist überhaupt nicht nach Sicherheitsaspekten gegen böswilliges Manipulieren designt, sondern ein reines Fehlersicherungsverfahren auf technischer Ebene, z.B. im Netzwerkkabel werden während der Übertragung durch Störungen (z.B. elektromagnetische Welle) einige Bits gekippt.
Hinter MD5 und SHA1, welche sicherheitstechnisch speziell gegen böswilliges Verändern ausgelegt sind, stecken umfangreichere Recherchen, um mathematisch beweisen zu können, dass es nicht so ohne Weiteres möglich ist, eine Nachricht zu einem vorgegebenen Hash zu berechnen.
@Jojo: Bevor Du also Deinen Algorithmus als supersicher anpreist, muss Du uns die notwendigen mathematischen Beweise für die Manipulationssicherheit liefern können!
Übrigens: Sämtliche guten Verschlüsselungs- und Hashalgorithmen in der Praxis sind öffentlich bekannt, d.h. Quelltexte sind allgemein zugänglich. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
anihex
Anmeldungsdatum: 09.03.2006 Beiträge: 51
|
Verfasst am: 22.03.2006, 10:05 Titel: |
|
|
Zitat: | Übrigens: Sämtliche guten Verschlüsselungs- und Hashalgorithmen in der Praxis sind öffentlich bekannt, d.h. Quelltexte sind allgemein zugänglich. |
Das meine Codierung mathematisch Wasserdicht ist, kann ich nicht beweisen, da er nicht mathematisch ist...
Es ist mehr ein modifizierter, alter Algorythmus. Er galt damals als unknackbar. Wurde aber keknackt, da er Hinweise im Text hinterliesß...
Das macht meine Codierung nicht! Der Text wird nur mit hilfe des Passwortes und sehr vielen kleinen Boxen Codiert (256 Boxen á 256 Byte)
Ausserdem wird das Passwort während der Verschlüsselung mehrmals manipuliert, so ist es noch ein wenig schwerer, das zu knacken
Am Ende wird das Passwort mit sich selbst Codiert und daraus wird dann ein Zeichen erstellt, das genau 1 Byte groß ist. Dieses wird dann im Dokument gepeichert, um die Passwörter mit einander zu vergleichen.
Allerdings kann man dieses Zeichen nicht zurückverfolgen und es wird anhand des Passwortes festgelegt, wo im Dokument das Zeichen gespeichert wird
Was Zitat: | Übrigens: Sämtliche guten Verschlüsselungs- und Hashalgorithmen in der Praxis sind öffentlich bekannt, d.h. Quelltexte sind allgemein zugänglich. | angeht:
Meines Wissens nach, gibt es viele Algorythmen, die Patentiert sind und nicht verwendet werden dürfen (Ausser gegen eine Lizens).
Die genaue Funktionsweise meines Algorythmuses stelle ich deshab nicht online, da mein Kunde (Kleinstunternehmer) den Algorythmus gerne irgendwie schützen möchte, aber der Algorythmuss hat weder einen Namen noch ist er Patent rechtlich geschützt... |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 22.03.2006, 12:18 Titel: |
|
|
was heißt er will ihn schützen? patent holen um geld zu verdienen oder nicht öffentlich werden lassen aus angst?
Wenns ein guter algorhytmus ist besteht die einzige gefahr darin, dass andere leute geistiges eigentum benutzen. Wenn sie ihn nicht veröffentlichen wollen aus angst, jemand könnte ihre daten entschlüsseln, ists kein guter algorhytmus (oder sie wissen das eben nicht)..
und so nebenbei: Verschlüsselung / hash-erzeugung ist immer mathematisch..
Und ein Passwort das mit sich selbst zu einem ein-byte-zeichen codiert wird klingt wirklich gut wenn man mal schaut, wie viele passwörter es gibt und wie viele werte (256) in ein byte gehen.. überschneidungen sind immer schlecht.. _________________ "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 |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 22.03.2006, 20:52 Titel: |
|
|
aniheX hat Folgendes geschrieben: | Ich hab mal ne Codierung geschrieben, die nicht zurückverfolgt werden kann...
Ich denke ausser Brute-Force ist diese Codierung ziemlich sicher
Das Beste: es ist einfach und recht schnell!
Leider ist es ein Kommerzieles Programm, daher kann ich den Algo nicht Online stellen (mein Käufer würd mir was erzählen ) |
Wie hat das jemannd mal so schön gesagt?
Eine Verschlüsselung sollte so sicher sein, das man den Code öffentlich Ausstellen kann.
Zitat: | Das meine Codierung mathematisch Wasserdicht ist, kann ich nicht beweisen, da er nicht mathematisch ist... |
Auch Bit und Byte Manipulationen sind in diesem Sinne Mathematische Funktionen die man rückverfolgen kann.
Kennst du eigentlich die Definition von Geknackt?
Die ist viel Trivialer als du jetzt denkst ...
Ein Algoritmuss gilt dann als Geknackt, wenn es etwas effektiveres als Bruteforce gibt.
Wobei ein Algoritmuss auch als geknackt gilt, wenn Brutforce 1000 Jahre braucht und der neue Weg "nur" 999 Jahre.
So wie sich deine Beschreibung liesst, ist es eine Kleinigkeit mit Deasmbler und ähnlichem das ding zu knacken.
Was mich vorrallem Stuzig macht ist das:
Zitat: | Ausserdem wird das Passwort während der Verschlüsselung mehrmals manipuliert, so ist es noch ein wenig schwerer, das zu knacken |
Das schwächt deine Methode sogar!
Diese Manipulationen gesehen nach irgendeinem Muster und dieses Muster lässt sich mit Aufwand herleiten.
Auch das kling nicht gut:
Zitat: | Die genaue Funktionsweise meines Algorythmuses stelle ich deshab nicht online, da mein Kunde (Kleinstunternehmer) den Algorythmus gerne irgendwie schützen möchte, aber der Algorythmuss hat weder einen Namen noch ist er Patent rechtlich geschützt... |
Sicherheit durch Geheimhaltung hat noch nie Funktioniert, siehe Windows ... |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.03.2006, 21:38 Titel: |
|
|
MisterD hat Folgendes geschrieben: | Wenn sie ihn nicht veröffentlichen wollen aus angst, jemand könnte ihre daten entschlüsseln, ists kein guter algorhytmus (oder sie wissen das eben nicht).. |
Gut ausgedrückt, auf exakt diesen Aspekt wollte ich auch in meinem oberen Beitrag hinweisen.
MisterD hat Folgendes geschrieben: | Und ein Passwort das mit sich selbst zu einem ein-byte-zeichen codiert wird klingt wirklich gut wenn man mal schaut, wie viele passwörter es gibt und wie viele werte (256) in ein byte gehen.. überschneidungen sind immer schlecht.. |
Ein interessanter und wichtiger Punkt in diesem Zusammenhang: Die Berechnung eines Hashwerts stellt im Prinzip auch eine verlustbehaftete Datenkompression dar. Je weniger Bits der Hashwert umfasst, umso geringer ist der Aufwand, eine Nachricht mittels Brute Force zu generieren, die denselben Hashwert besitzt.
Ein interessantes Thema an dieser Stelle ist noch der sog. Geburtstagsangriff. Siehe dazu auch
http://www.heise.de/security/artikel/56555
Beispiel: Ein QB-Programm benötigt pro generierte Nachricht inkl. Hashberechnung 100 ms. Wir wählen beispielsweise einen 40-Bit-Hashwert. Die Nachrichtengenerierung beruht darauf, dass wir bei einem gegebenen Text (sei ein rechtsverbindlicher Vertrag mit digitaler Unterschrift) mit Hilfe von Variierungen bei den Leerzeichen, Zeilenumbrüchen/sonstigen Formatierungsmerkmalen verschiedenste Versionen generieren, die jedesmal einen anderen Hashwert erzeugen.
Um zu einem gegebenen Hashwert eine passende Nachricht zu finden, benötigt man im Mittel also 2^40/2*100 ms = 1742 Jahre, also viel zu lange, um eine gefälschte Version vom Vertrag zu generieren, die zu einer vom Opfer vorgegebenen digitalen Signierung passt.
Wenn wir aber beispielsweise von unserem Kaufvertrag zwei Versionen erzeugen (Version A mit "Ich kaufe das Haus für €100'000,-." und Version B mit "Ich kaufe das Haus für €500'000,-.") und beide in unseren Generator nehmen, bis irgendwann zwei Exemplare mit einem identischen Hashwert (ein konkreter Hashwert ist nicht vorgegeben!) entstehen, dann braucht es nur noch ungefähr 2^20 Operationen. Diese Berechnung führt unser QB-Programm in 1,2 Tage durch.
Somit könnten wir problemlos unsere Betrugsmasche durchziehen: Dem ahnungslosen Käufer schicken wir Vertragsversion A zu und er signiert sie digital mit seinem privaten Schlüssel. Wir kennen zwar nicht den privaten Schlüssel und können somit nicht selber etwas unter dem Namen des Käufers signieren, aber Vertragsversion B passt problemlos mit den Signatur von Version A zusammen, da beide denselben Hash besitzen und könnten diesen problemlos ans Betreibungsamt als "Beweisdokument" mit der Forderung "Es sind noch €400'000,- Kaufschulden offen" schicken...
Dieses Beispiel soll die Komplexität von Hashalgorithmen verdeutlichen. _________________ Teste die PC-Sicherheit mit www.sec-check.net
Zuletzt bearbeitet von dreael am 22.03.2006, 21:39, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 22.03.2006, 21:39 Titel: |
|
|
Zitat: | ..., das genau 1 Byte groß ist. |
LOL, kein Kommentar.
Zitat: | Ein Algoritmuss gilt dann als Geknackt, wenn es etwas effektiveres als Bruteforce gibt.
Wobei ein Algoritmuss auch als geknackt gilt, wenn Brutforce 1000 Jahre braucht und der neue Weg "nur" 999 Jahre. |
Falsch, der Algorithmus gilt dann als geknackt, wenn die neue Methode das Brute-Force auf maximal n Versuchen verringern kann. Momentan liegt das n bei 2^84, meine ich (oder war es 2^64?). _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 22.03.2006, 21:43 Titel: |
|
|
kommt wohl auf den algorythmus an.. _________________ "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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.03.2006, 21:57 Titel: |
|
|
Naja, aber das PW sollte noch mit einigen kleinen verändern doch noch für kleiner projekte einsetzbar sein... ich wollte das passwort acuh nicht grad für was richtig wichtiges machen... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 23.03.2006, 08:22 Titel: |
|
|
@ChemicalWarfare
Wieder was gelernt.
@Jojo
Wir Zerlegen nicht primär dein Programm.
Da du deinem Programm denn Quellcode mit lieferst bist du ehrlich. (Jeder der dein Programm nutz, was es macht und kann die Sicherheit selbst beurteilen)
Wir zerlegen Primär aniheX, weil er das gefühlt hat, er habe etwas sicheres Entwickelt und dabei versteht er absolut gar nichts. Erklärt man ihm etwas, glaubt er es dann zusätzlich nicht ... |
|
Nach oben |
|
|
anihex
Anmeldungsdatum: 09.03.2006 Beiträge: 51
|
Verfasst am: 23.03.2006, 10:50 Titel: |
|
|
Zitat: | Wir zerlegen Primär aniheX |
Na vielen dank
Zitat: | weil er das gefühlt hat, er habe etwas sicheres Entwickelt und dabei versteht er absolut gar nichts. Erklärt man ihm etwas, glaubt er es dann zusätzlich nicht ... |
Wieder vielen Dank
Ich habe mich schon durchaus damit auseinandergesetzt! Ich weiss durchaus, dass man heute mit binären Operationen und Primzahlen arbeitet.
Daher arbeite ich NICHT (ich wiederhole: NICHT!) mit Primzahlen und/oder Bit Manipulation.
Ich würde den Sourcecode offen legen. Aber ich rede derzeit mit mit meinem Kunden darüber, ob das in Ordnung ist.
Den Algo in Form eines Mini-Samples habe ich Jojo bereits gezeigt. ok, er sagt auch, dass er unsicher ist. Aber einen genauen Grund konnte er mir nicht liefern...
So viel zu dem Thema.
MfG
aniheX
// edit:
Zur Info: Ich habe keinen neuen Algo entwickelt, sondern einen bestehenden seiner einzigen Schwachstelle beraubt und noch etwas verfeinert. Ein ähnliches Prinzip wie FreeBASIC: Altes verbessern und es so wieder aktuell machen.
// edit 2:
Ich Kompremiere das PW nicht, damit man es mit der gepackten Version entschlüsseln kann. Es dient lediglich dazu, um zu prüfen, ob das PW richtig sein könnte. Danach wird mit dem eingegebenen PW decodiert. Sollte es also falsch sein, kommt auch ein Falsches Ergebniss.
PS: Nicht nur ihr beschäftigt euch mit diesem Thema... |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
anihex
Anmeldungsdatum: 09.03.2006 Beiträge: 51
|
Verfasst am: 23.03.2006, 13:31 Titel: |
|
|
Zitat: | [spam]Also, wenn deine Verschlüsselung nicht mathematisch ist, dann muss er ja in etwa so aussehen:
Code:
INPUT "Passwort? ", p$
SELECT CASE UCASE$(p$)
CASE "GEHEIM": h$ = "J"
CASE "0815": h$ = "S"
CASE "MUSTER": h$ = "K"
CASE ELSE: h$ = "X" '<-
END SELECT
PRINT "Hash: "; h$
[/spam]
Sorry für den albernen Beitrag...
|
ein bisschen komplexer ist es dann doch...
wie ich schon sagte: ich bediene mich 256 Boxen á 256 Byte. Also 256 Strings á allen 256 ASCII Codes... Sobald ich darf, werde ich n Demo Prg in BASIC online stellen. dann könnt ihr ja gugen, ob das so einfach ist, die Codiererung zu knacken... |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 23.03.2006, 15:04 Titel: |
|
|
hi jojo,
ich hab dir mal n prog geschrieben, mit dem du dir das pw "errechnen" lassen kannst (in fb geschrieben):
Code: | option explicit
#define bool integer
#define true -1
#define false 0
function f( k as integer, c as ulongint ) as bool
dim v as ulongint, n as integer
if k = 0 then
return false
end if
for n = 127 to 32 step -1
v = n ^ k
if v < c then
if f( k - 1, c - v ) = true then
print k & ": " & chr$( n ) & "( " & n & " )"
return true
end if
elseif v = c then
print k & ": " & chr$( n ) & "( " & n & " )"
return true
end if
next
return false
end function
dim crc as ulongint, pw_len as integer
crc = 34568901510
pw_len = 6
f( pw_len, crc )
print "fertig"
sleep
|
bei dem angebenen hash (34568901510) ist das pw: M}_@09
falls das nicht das org pw war, hat dein algo leider kollisionen (hats sowieso) _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 23.03.2006, 19:10 Titel: |
|
|
@aniheX
Zitat: | Daher arbeite ich NICHT (ich wiederhole: NICHT!) mit Primzahlen und/oder Bit Manipulation. |
Zitat: | Das meine Codierung mathematisch Wasserdicht ist, kann ich nicht beweisen, da er nicht mathematisch ist... |
Zitat: | Danach wird mit dem eingegebenen PW decodiert. |
Wenn das Decodieren weder Mathematisch nocht Bit basierent ist, wie arbeitet der Algoritmusch dann?
Du sagst ja selbst es wird mit dem Passwort Decodiert und das muss irgendein Muster haben!
Zitat: | Ausserdem wird das Passwort während der Verschlüsselung mehrmals manipuliert, so ist es noch ein wenig schwerer, das zu knacken |
Auch dahinter steckt doch wieder nur irgendein Muster ...
Sag einfach mal ein Stichwort wie dein Programm funktioniert.
(Nicht die genau Funktion sondern ein Stichwort wie Bit/Byte Manipulation, Mathematisch, Muster, Kompremirung etc.)
@Sebastian
Andere Idee für eine nicht Mathematisch Codierung:
Man ersetzt einfach Wörter durch ganz andere.
So wird z.B. aus einem Haus eine Katze, müssen durch fliegen und so weiter.
Des weiteren kann man auch den Satz Aufbau analisieren und durch einander bringen, z.B. das erste Verb aus dem ersten Satz mit dem aus dem Letzen tauschen.
Diese Verfahren sind nicht Mathematisch sondern Grammatikalisch .
Mit Normallen Verfahren ist das nicht knackbar, dafür aber mit sonstigen (Gramatikalische) Analysen. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 23.03.2006, 19:20 Titel: |
|
|
Jo, das ist ja sozusagen auch der Ansatz meines Hash-"Codes"...
Zum Ersetzen von Wörtern durch andere: So sicher ist das auch nicht, denn mit Reverse Engineering kommt man dem je nach Code sicherlich auf die Spur. Wenn man die zueinander passenden Wörter im Programm einfach hintereinander in ein Array schreibt, kann man's sogar mit dem Hexeditor nachher entschlüsseln. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 23.03.2006, 19:22 Titel: |
|
|
Ich hab ja nicht gesagt es sei sicher , es ist nur nicht Mathematisch. |
|
Nach oben |
|
|
|
|
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.
|
|