Verschlüsselung mehrerer Dateien und Ordner in einer Datei

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Verschlüsselung mehrerer Dateien und Ordner in einer Datei

    Hallo,
    ich bin momentan damit beschäftigt, ein kleines Verschlüsselungsprogramm zu erstellen. Dieses soll mehrere Dateien (auch komplette Ordner) verschlüsseln und dann zusammen in eine Datei packen, die dann auch noch verschlüsselt wird. Den Vorgang dachte ich mir so:
    Spoiler anzeigen
    1. Der Benutzer erstellt ein Passwort, welches aus Sicherheitsgründen natürlich möglichst lang sein sollte
    2. Dieses Passwort wird mit SHA512 hashing und einem kleinen Algorhytmus zu einem 256 bit langem Key umgewandelt, aus diesem Key lässt sich das Original-Passwort nicht errechnen/umwandeln. Der Algorhytmus sorgt dafür, dass es immer mindestens 2 mögliche Passwörter gibt, die denselben Key ergeben.
    3. Alle Dateien werden in ein Archiv gepackt
    4. Das Archiv wird mit dem aus dem Passwort generierten Key verschlüsselt.
    Das Archiv ist folgendermaßen aufgebaut:
    • Textdatei mit eigentlichem Passwort zur Überprüfung, ob das Passwort richtig ist
    • Textdatei mit Liste aller Dateien und Ordner, allen wird ein zufälliger Key, gemischt mit einem aus dem Dateinamen, dem Pfad und der Endung generiertem Key (natürlich wieder mit SHA512 Hashing und nem kleinen Algorhytmus erstellt :))
    • Ordner mit allen Dateien und Ordnern, der natürlich wiederumg gepackt und verschlüsselt ist
    • Alle zu verschlüsselnden Dateien und Ordner, verschlüsselt mit einer Mischung aus dem originalen Key und dem Key, welcher in der zweiten Textdatei für die entsprechende Datei/den entsprechenden Ordner festgelegt wurde.


    Nun habe ich hierzu zwei Fragen:
    1. Ist diese Verschlüsselung sicher? Ich meine, mein Programm weiß das Passwort nicht, es kann es auch nicht aus der Datei auslesen. Es kann nur prüfen, ob, wenn man die Datei mit dem angegebenen Passwort entschlüsselt, eine Textdatei mit einem bestimmtem Namen, deren Inhalt durch weitere Entschlüsselung das eigentliche Passwort ergibt. Hier ergibt sich schon die nächste Frage:
    2. Kann man, wenn man weiß, dass in einem verschlüsselten Archiv eine ebenfalls verschlüsselte Datei liegt, die das Passwort in einer verschlüsselten Form enthält, das Passwort auf irgendeine Weise berechnen?
    Hoffe, ihr könnt meine Fragen beantworten :)
    Danke

    PS: Ich weiß, wie man die Verschlüsselung und so hinbekommt, es gibt ja hier so schön viele Beispiele und außerdem kenne ich mich mit dem Dateisystem einigermaßen aus. Diese Frage stelle ich nicht, weil ich einen bestimmten Code haben will, ich will nur eine Meinung von Leuten, die sich vielleicht ein bisschen mehr mit Ver- und Entschlüsselung auskennen, ob dieses System sicher ist.
    das bekommst du wunderbar hin mit der MD5 verschlüsselung,


    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.Text
    3. Public Class Form1
    4. Public Function MD5StringHash(ByVal strString As String) As String
    5. Dim MD5 As New MD5CryptoServiceProvider
    6. Dim Data As Byte()
    7. Dim Result As Byte()
    8. Dim Res As String = ""
    9. Dim Tmp As String = ""
    10. Data = Encoding.ASCII.GetBytes(strString)
    11. Result = MD5.ComputeHash(Data)
    12. For i As Integer = 0 To Result.Length - 1
    13. Tmp = Hex(Result(i))
    14. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
    15. Res += Tmp
    16. Next
    17. Return Res
    18. End Function
    19. 'Ich weiss aber net genau ob das richtig ist, bei mir hat es aber funktioniert..


    Den rest kannst du ganz einfach durch google rausfinden ;)
    Kann man überhaupt alle Dateien verschlüsseln und wieder entschlüsseln sodass der originalwert o.ä. wieder rauskommt? Bei normalen Textdateien oder ähnliches kein problem aber wie schauts mit exe dateien aus?
    Denn ich hab das mal vor ewigkeiten aus Langeweile probiert und danach war die exe für die Katz^^..
    Sollte dazu erwähnen das ich da noch nicht wirklich viel Ahnung hatte :P

    vbcloud schrieb:

    das bekommst du wunderbar hin mit der MD5 verschlüsselung


    MD5 ist keine Verschlüsselung, sondern ein Hashalgorhitmus. Wenn Du den Unterschied nicht kennst, dann informiere Dich darüber, bevor Du falsche Aussagen triffst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    1. Wie ich schon gesagt habe, ich weiß, wie man die Dateien ver- und entschlüsseln kann.
    2. Wie meint ihr das, dass man Musikdateien und co. nicht verschlüsseln kann? Ich habe das bis jetzt eigentlich mit allem bis auf Musikdateien, Videodateien und exes gemacht, aber die sollte man doch eigentlich auch verschlüsseln können, wenn das erwünscht ist
    *HUST*
    Zu dem Post von vbcloud:
    md5 ist keine Verschlüsselung!
    Das ist eine Hashmethode, die die Daten hasht, das ist oneway, das heisst, man kann sie nicht wieder zurückholen bzw. entschlüsseln, siehe de.wikipedia.org/wiki/Hash

    Zu den Fragen:
    1.: Es kommt auf die Umsetzung an, aber es sollte so machbar sein, ja.
    2.: Da kommt es auch auf die Umsetzung an, aber, wenn ich das korrekt verstehe, wird das nicht gehen, denn Man müsste ja beide Passwörter kennen, bzw. den Algorhytmus und dann das erste.
    Ein Passwort sollte mind. 8 Zeichen haben. Sinnvoll ist es, wenn Sonderzeichen, Groß sowie Kleinbuchstaben und Zahlen vorhanden sind.
    Du könntest das also so programmieren, dass z.B. mind. 2 Sonderzeichen enthalten sein müssen. Dann wird ne Bruteforce attacke schon ziemlich lange dauern ;D
    Da Problem ist ja das folgende:
    Der Hash, der als Schlüssel verwendet wird, hat eine feste Länge, allerdings kannste ja per Bruteforce Passwörter Hashen und diese testen.
    Darum solltest Du, je nach Sicherheitsanforderung 6 Zeichen + Ziffer + Sonderzeichen nehmen, bzw. wenns sicherer sein soll mindestens 8 Zeichen in Groß- und Kleinschreibung, mindestens zwei Ziffern und Sonderzeichen nehmen.
    Also wäre so ein Passwort so ziemlich das beste (Länge gilt natürlich trotztem: je länger desto besset):
    a§-7Kd0!

    Und wenn ich nen Passwortgenerator reinmache, welche Sonderzeichen sollte ich nehmen? Es hat ja nicht jeder die gleiche Tastatur
    @Horrorclown:
    Jede Tastatur ist anders! Wenn ich z.B. ne Schweizer Tastatur hernehme, die hat z.B. kein ²³ß etc. Und jetzt hat ne US-Tastatur sicherlich kein €-Zeichen und sicher auch kein äöü

    EDIT: gibt es eine Liste der Sonderzeichen, die wirklich auf jeder Tastatur zu finden sind?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nafets3646“ ()

    Ich glaube es ist besser, Du widmest Dich einem etwas weniger anspruchsvollem Projekt. Scheint so, als fehlt Dir viel Grundlagenwissen und aus dieser Vermutung heraus kann ich Dir garantieren, dass aus diesem Projekt nichts wird. Entweder gibst Du gefrustet auf oder es entsteht eine Anwendung, die von vielen Seiten aus angreifbar ist. Ferner gibt es etablierte Lösungen für genau solche Vorhaben. Man muss nicht das Rad neu erfinden, vor allem, wenn das Rad dann eckig ist. Ist nicht böse gemeint, sondern einfach ein guter Rat.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o