Verschlüsseln

Norbert Eder

Erfahrenes Mitglied
Sehr unsicher.

Entweder fahr ich mal mit dem einen oder anderen Tool über deinen Code drüber und hab den Source, zwar verstümmelt, aber immerhin.

Oder ich sehe mir an, wie sich bestimmte Daten im Speicher, in Dateien oder was auch immer, verändern. Aufgrund dieser Veränderung hab ich sofort, dass du das immer um 2 Zeichen/Stellen verschiebst. Und schon ist deine Verschlüsselung komplett für die Fische.

Dafür gibt es ja Algorithmen die gut und getestet sind.
 

zioProduct

Erfahrenes Mitglied
Naja angenommen ich habe das Alphabet als Array, aber im grössten Durcheinander, gross/klein Buchstaben gemsicht, reihenfolge totales Chaos etc, ist es immer noch so leicht so etwas herauszufinden? *Wundernimm* Und ich geh jetzt nicht von übelsten monster Hacker aus, die schaffen sowiso alles, besonders so ein "Kinderverschlüsselungs-Programm", ich denke mehr an so einen Hobby-Hacker, der aus langeweile, in dem Privatleben anderer Luete rumstochert. Ist es für den so einfach, so eine entschlüsselung zu Knacken? Ist es für Ihn nicht einfacher eine Verschlüsselung zu Knacken die von bestehenden Algorythmen gemacht werden? Da er diese bestimmt leichter findet, als sowas "Komplexes" wie ein Komplett Konfuses-Array das dazu noch im Sec-Takt die verschlüsselung wechselt. *Wundernimm* Oder müsst ich da mal nen richtigen Hacker frage ? ;) Wobei, n sehr guter Programmierer, ist doch mit einem Fuss schon fast ein Hacker :)

mfg
ziop
 

Christian Kusmanow

Erfahrenes Mitglied
@Topic: Sorry hatte den Thread gestern nur überflogen.
Zu MD5 und SHA steht eigentlich genug in der MSDN, Das sollte sich alles finden lassen.
:google: = http://www.google.de/search?hl=de&q=site://www.microsoft.com++msdn++c#++sha&btnG=Suche&meta= (2.Link)

@Verschlüsselung:
Ich schließ mich Norberts Meinung an. Mit gewissen Tools bekommst eigentlich alle Infos. ;)
zioProduct hat gesagt.:
Wobei, n sehr guter Programmierer, ist doch mit einem Fuss schon fast ein Hacker :)
Das bist Du sowieso, sofern Du alles testest was Du fabrizierst. :p
Ohne das, wirst doch nie wissen was deine Arbeit wert ist, oder?
Oder hast einen der das für dich macht? ;-] Denke nicht. ;)
 

Chrisu

Erfahrenes Mitglied
@zioProduct
Da brauchst du keinen Hacker fragen, da reicht schon ein Mathematiker aus. Das was du machen willst, sieht mir stark nach einer synchronen Verschlüsselung aus. Das bedeutet schonmal, dass nur ein Schlüssel existiert, den du auch irgendwie weitergeben musst. Und den könnte man auch abfangen. Aber auch das Knacken deiner Verschlüsselung dürfte nicht allzu schwer sein. Kommt einfach auf die verwendete Hardware und die Zeit an. Aber sicher ist das nicht.

Wenn du schon selber an einer Verschlüsselung schreiben willst, dann schau dir mal die Grundlagen zur asynchronen Verschlüsselung an. Dort hast du immer ein Schlüsselpaar (öffentlicher und privater Schlüssel) und nur mit beiden Schlüsseln zusammen kannst du die verschlüsselte Nachricht wieder lesen. Dahinter steckt einfach nur reine Mathematik. Kurz erklärt basiert die ganze Theorie darauf, dass zwei Primzahlen gefunden werden müssen, die dann in diesen beiden Schlüsseln enthalten sind. Und wenn du jetzt ein Hacker bist, müsstest du genau diese Primzahlen suchen. Wenn du jetzt so im "normalen" Zahlenbereich arbeitest, ist das sicher kein großes Problem. Aber um eine möglichst hohe Sicherheit zu gewährleisten sind die Zahlenbereiche in den Größenordnungen 10^512, 10 ^1024, 10^2048 usw. angesiedelt. Je größer der Zahlenbereich, desto unwahrscheinlicher ist es dass deine Code geknackt wird. Wobei anzumerken ist, dass irgendwann auch der Code geknackt werden kann ... die Sicherheit sagt nur aus, dass zum jetzigen Zeitpunkt kein Rechner der Welt schnell genug ist, den Code in einer annehmbaren Zeit zu knacken.

Und da sind wir jetzt schon bei den Tatsachen warum man sowas lieber nicht selber machen soll. Was brauchst du jetzt dafür? Langzahlenarithmetik und einen Algorithmus der dir die Primzahlen nach dem Zufallsprinzip sucht. Langzahlenarithmetik bedeutet schonmal, dass du nicht die Computer eigenen Datentypen verwenden kannst sondern eigene erstellen musst. Und das Finden der Primzahlen ist auch nicht so einfach. Und wenn du jetzt nicht wirklich fit in diesem Gebiet bist, dann wirst du schon bei der Schlüsselgenerierung Probleme bekommen, da die Algorithmen stark optimiert sein müssen, da sie ansonsten Stunden brauchen um eine Primzahl zu berechnen. Mit den fertigen Funktionen hast du das schon nach ein paar Sekunden erreicht. Daran sieht man, dass sehr viel KnowHow in dieser Thematik steckt.

Und jetzt nochmals:
NIEMALS selbst einen Verschlüsselungsalgorithmus schreiben, es sei denn du bist Profi darin und verdienst dein Geld damit (oder bist bei der Entwicklung neuer Algorithmen beteiligt). Das ist einfach zu unsicher und kannst du ohne großen Aufwand schon von Hause aus haben.

So long,
Chrisu

PS: die Beschreibung wie asynchrone Verschlüsselung abläuft ist nur grob umrissen, da auch bei diesen Algorithmen unterschiedliche Ansätze verfolgt werden.
 

Norbert Eder

Erfahrenes Mitglied
Hi Chrisu,

lange nicht mehr gelesen ;-)

Netter Beitrag, bis auf einen kleiner Fehler, das heißt nicht (a)synchron sondern (a)symmetrisch ;-)

@zigProduct:
Deine Annahme ist ja recht nett, aber für die Fische. Wieso selbst einen Algorithmus ausdenken, der in 15 Minuten von einem Laien durchschaut wird, wenn es Algorithmen gibt, die schon Jahre allen Hackversuchen standhalten
Vielleicht solltest dich auch ein wenig mit der Materie beschaffen, um nicht mehr so blauäugig zu sein. Zusätzlich noch ein paar .NET Grundlagen, wie den Assemblies gespeichert werden, in welchem Format, was man mit den aus der Kompilierung resultierenden Dateien alles machen kann.

Dann zum "sich ständig wechselnden Array":
Lass mich raten, du hast ein Start-Array, welches sich alle paar Sekunden durchtauschen soll. Gut, du brauchst einen Zufallsgenerator. Wie initialisierst du den Zufallsgenerator? Würde mich interessieren. Vielleicht zeigst uns das anhand eines Codebeispieles wie du dir das vorstellst. Vermutlich willst du auch eine Datei etc. verschlüsseln? Dann musst du dir die Zeichenfolge merken, d.h. du musst sie irgendwo ablegen. Autsch.

Die Themen Kryptologie und Kryptogrpahie sind sehr sehr komplex. So Buchstaben-Verschiebung (ich erinnere hier an Cäsar) sind für jemanden, der sich dafür interessiert recht einfach zu finden und auszuhebeln.

MD5/SHA1
Wie ich schon einmal geschrieben habe, MD5, SHA1, SHA256 etc. sind Hashalgorithmen. Hier wird nicht verschlüsselt. Verschlüsseln impliziert, dass ich aus dem verschlüsselten Ergebnis wieder zurück zum Original komme. Bei einem Hashwert geht das nicht bzw. zeichnet sich ein guter Hashalgorithmus dadurch aus, dass es nicht möglich ist. Ergo kann ein Hash nur zur Validierung von Daten (quasi als Checksum) verwendet werden (nichts anderes passiert zB bei Passwörtern, die als Hash abgelegt werden).
 

Chrisu

Erfahrenes Mitglied
Hi Norbert,

danke für die Korrektur von (a)synchron auf (a)symmetrisch. Da hab ich mal kurz die Begriffe durcheinander gebracht. Bin aber auch noch nicht so ganz wach gewesen. War die ganze Nacht noch am Lernen. Ich hoffe, dieser Ausrutscher sei mir verziehen ;-)

So long,
Chrisu
 

mage

Erfahrenes Mitglied
d_Artagne hat gesagt.:
Ich glaube ich wende das Assembly falsch an. Ich möchte einfach
nur den Benutzer + Passwort mittels SHA1 verschlüsseln lassen.

Normalerweise brauchst du, das Assembly nicht direkt laden.
Bei der Verwendung von Visual Studio reicht es meist aus die ensprechenden Objekte zu instanzieren. Visual Studio bindet die Verweisen im Linking Vorgang selbstständig mit ein.

Übrigends:
Hash Algorithmen sind in der Regel nicht mehr zurückrechenbar (irreversibel), also ungeeignet für eine Verschlüsselung, wenn man den Ursprünglichen Wert benötigt.
Es kann vorkommen, dass unterschiedliche Ausgangswerte haben, aber den selben Hashwert.
Wenn Haswerte bespielsweise für als Fingerabdruck verwendet werden, um die Integrität der Daten zu gewährleisten, ist es schwierig die Daten so zu manipulieren, dass es den selben Hashwert ergibt. Zufällige Änderungen werden damit auch relativ sicher erkannt.
 

zioProduct

Erfahrenes Mitglied
Moooment!
Ich hab nicht gesagt, das ich so nen Ding schreiben will, ich wollte nur die Gefahren wissen, welche ihr mir, auch wenn auf fiese Art und weise, gut erklärt habt :) Ich hab sowiso keine Geheimnisse, von mir aus soll n Hacker meine prons etc sehen, meine wichtigen Daten liegen auf nem Blatt Papier vor dem Pc, will sehen wie n Hacker das schafft, die zu lesen :)

Trotzdem nochmal Danke für die Antwort, nun hätt ich entlich mal ne Mathematik-Aufgabe für meinen Ex-Mathe Lehrer, welcher Informatik studiert hatte. :) Mal schaun was für ne "sichere" verschlüsselung er hinbekommen würde :)

Und hey, ich habe eure Fragen nie in Frage gestellt @ Norbert, ich glaub euch das schon, wollt die Antworten nur etwas genauer, also keine Bange, wenn ich wirklick was Verschlüsseln möchte würde ich mich schon genügend übers Programmieren damit schlau machen :-(

trotzdem
so long
ziop
 

Chrisu

Erfahrenes Mitglied
Moinsen,

ich will ja nicht schon wieder fies sein, aber es muss sein ;-)
Also ich denke mal wenn du von "meine wichtigen Daten liegen auf nem Blatt Papier vor dem Pc" sprichst, dann meinst du bei dir zuhause. OK, da werden die Daten relativ sicher sein. Ist das ganze jetzt in einer Firma oder Büro, dann hast du schon wieder ein Problem, denn die Informationen kann wieder jeder lesen. Und die Statistik besagt, dass die meisten Angriffe innerhalb von einer Firma aufkommen. Kollegen die ein wenig rumschnüffeln und so.
Deshalb gab es auf der "Deutschland sicher im Netz"-Veranstaltung auch einen netten Vortrag mit dem Titel "Firewalls sind nutzlos".

Hier ist mal ein Link zu den Session-Slides ACHTUNG! 8,4MB groß!
Schau dir mal darin die kleine Bildgeschichte an. Die ist zwar fiktiv, kann aber so ohne weiteres vorkommen. Also auch deine Papiermethode ist nicht sicher ;-)

Na dann schon ma viel Spass für deinen Mahte-Lehrer. Hier ist schonmal ein Link der dir die mathematischen Grundlagen zum RSA-Algorithmus erklärt. Das ist zumindest einer der asymmetrischen Vertreter.

So long,
Chrisu
 
Zuletzt bearbeitet: