Passwörter Schützen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Passwörter Schützen

    Hey Liebe VB Community,

    Ich habe ein kleines Problem bei dem ich ein bisschen Hilfe von euch brauchen kann denn ich lerne leider gerade erst vb,

    Also ich habe ein Fertiges Programm das zum einen auf einen FTP-Server zugreift und zum anderen auch E-Mails von meinem account schickt.
    Das bedeutet dass ich in meinem Quellcode alle Passworter hab und laut vieler aussagen können "Hacker" diese innerhalb weniger sekunden lesen -_-

    Ich Google jetzt schon lange nach möglichen möglichkeiten/Codes wie man diese Passwörter verschlüsseln kann, Ich habe jetzt was von Hasch und salts gelesen in die man ein passwort ziemlich sicher schreiben kann, allerdings sind alle codes die ich gefunden so krass kompliziert dass ich wirklich garnichts verstanden habe denn wie gesagt mache ich vb jetzt erst ein halbes Jahr :(

    Aus diesem Grund wäre es so schön wenn mir jdm zeigen könnt wie ich es schaffe einen hasch oder salt in mein Projekt schreiben kann den ich dann wenn das Programm eine FTP-Verbindung aufbauen soll auslesen kann zum richtigen Passwort :)

    Gerne auch andere Vorschläge wie man das Verschlüsseln kann :)


    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim Hash As String = "halthierdannderhasch"
    3. Dim Passwort As String
    4. '-----Hier hasch umwandeln und mein richtiges Passwort für den Upload
    5. My.Computer.Network.UploadFile("C:\Pfad ", "Zielpfad", "sidezockinglp", Passwort)
    6. End Sub
    Hasch ist eine Droge. ;)
    Die Antwort ist: Gar nicht. Wenn das Passwort irgendwo drinsteht, kommt man da ran. Und Hashen bringt nichts, weil Du Dich ja dann nicht authentifizieren kannst. Hashes sind schließlich so konzipiert, dass man nicht in den Klartext zurück kann. Also da ist nichts mit umwandeln.
    Verschlüsseln bringt auch nichts, da der Schlüssel bekannt sein muss.

    tl;dr: Du hast damit irgendwas in der Architektur verbockt und musst das anders lösen. FTP sollte sowieso niemand mehr verwenden.
    Nimm HTTPS, das ist dafür geeignet.
    Und E-Mails kann man über PHP versenden.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ok Danke für die erklärung, ich werde es mir merken und in Zukunft dann php oder HTTPS benutzen,

    Für das Programm habe ich aber leider schon alle in FTP...
    Frage, wäre es möglich das ganze umzudrehen? Also als Passwort für den FTP Server einen Hash zu verwenden und das ungehashte passwort im Quellcode zu speichern oder sieht der hash aus einem passwort bei jedem generieren neu aus? Oder ist dass dann allgemein Unsicher? :)


    Oder noch ne Idee, Problem bei mir halt wieder bei der Umsetzung :)
    vllt könnte man ja das richtige passwort in die index.php schreiben, diese Internetseite aber mit einem passwort (Also hier den Hash) schützen. Das Programm könnte dann einen hasch generieren sich probieren in den Index.php anmzumelden, diese vergleicht den hash mit dem richtigen und wenn der richtig ist könnte man den String downloaden. (Weiß nicht ob das geht bei mir gerade wilde gedankenspekulationen :) )

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

    So eine Methode gibt es nicht, Passwörter gehören nicht in ein Programm.

    Allerdings könnte man es erschweren mit einem Obfuscator.. allerdings ist es dann immer noch nicht sicher!

    Wenn du es mit FTP machen willst, benutz PHP für den upload.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FantaZimt“ ()

    Es muss auch nicht 100% von jedem hackerangriff sicher sein, sollte nur mit so einem tool wie Bytezähler geschrieben hat
    ​ilspy.net/
    nicht sofort lesbar sein. mir ist bewusst, da ich ja auch schon viele Einträge aus diesem Forum gelesen habe, dass man es nie zu 100% sicher machen kann. Ich suche einfach nur nach etwas was es dem hacker ein wenig schwerer macht. Deshalb dacht ich ja auch daran dass passwort in einen salt oder hash zu verschlüsseln.

    Zu deiner Antwort, kannst du mir bitte erklären was son ein
    ​Obfuscator
    ist? Und an alle anderen die das hier noch besuchen habt ihr noch ideen und was ist mit meinen Vorschlägen die ich oben gemacht habe? Sind die irgendwie logisch und machbar? :)
    Grob gesagt macht ein Obfuscator den Quellcode der Anwendung unleserlich, für das das menschliche Auge. Mit bestimmten Programmen kann man aber selbst die wieder leserlich machen..


    Wenn du wirklich FTP benutzen willst, verwende PHP.. Tutorials gibts hier wie Sand am Meer.

    SidezockingLP schrieb:

    Frage, wäre es möglich das ganze umzudrehen? Also als Passwort für den FTP Server einen Hash zu verwenden und das ungehashte passwort im Quellcode zu speichern oder sieht der hash aus einem passwort bei jedem generieren neu aus? Oder ist dass dann allgemein Unsicher?
    Du hast offenbar nicht verstanden, was ein Hash macht. de.wikipedia.org/wiki/Kryptologische_Hashfunktion
    Es ist der Sinn eines Hashs, dass bei einem Passwort immer derselbe rauskommt. Wie willst Du die denn sonst vergleichen? Deine Idee wäre also wohl in 1 Minute exploited und ich hätte sogar ein Klartext-Passwort, mit dem ich evtl. Deinen Account auf anderen Webseiten kompromittieren kann.

    Die einzige Möglichkeit habe ich Dir bereits genannt. Von daher: Lass auch die Finger von irgendwelchem Obfuskator-Dreck, der nichts außer Ärger bringt und garantiert nichts sicherer macht. (nicht böse gemeint, auch wenn es zugegebenermaßen hart klingt ^^)

    @FantaZimt Warum sollte er denn noch FTP verwenden, wenn er dann sowieso schon HTTPS+PHP zur Hand hat?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Er wollte ja wissen wie er etwas auf einen FTP Server läd ohne das jemand an die Daten kommt und nicht wie er es anders machen kann. :whistling:

    @SidezockingLP

    guck dir mal das hier an.

    PHP Upload

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

    Die stehen in AppData, da muss man nichts dekompilieren.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Hey nochmal :),

    Hab jetzt nach lesen des wiki textes und noch ein wenig googeln und natürlich euere Hilfe den Sinn des Hash verschlüsseln verstanden..
    Sry auch nochmal wegen meiner Idee oben

    Quellcode

    1. ​Also als Passwort für den FTP Server einen Hash zu verwenden und das ungehashte passwort im Quellcode zu speichern
    Ich merke Jetzt erst wie sinnlos und dumm die Idee war xD

    Ich würde Jetzt gerne die Hash oder sonst irgendeine für die verschlüsselung der Passwörter nehmen die in der Datenbank zusammen mit den Benutzerdaten gespeichert werden.
    Also alle Passwörter hashen und dann die hash zu vergleichen ob das Pw richtig ist :)
    Könnt ihr mir vllt mit einem code helfen mit dem ich das schaffe? :)
    Achtung: Hash ist männlich. Ein Hash ist auch keine Verschlüsselung in dem Sinne! Den kann man schließlich nicht entschlüsseln. Man kann höchstens von "Einwegverschlüsselung" sprechen.
    Wie greifst Du auf die Datenbank zu? Über PHP (empfohlen) oder direkt VB.NET? Was ist es für eine Datenbank? MySQL, NoSQL, ...?
    Ansonsten ist einfaches Hashen auch so 'ne Sache. Siehe z. B. PBKDF2, wo das ganz oft gehasht wird. Ich empfehle den Blowfish-Algorithmus (speziell bcrypt) dafür. Schön noch salzen und evtl. dann die Passwörter zwei mal hashen sollte reichen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Momentan greife ich von VB.Net auf eine MySQL datenbank zu in der die Passwörter gespeichert sind.

    Giebt es einen Code in vb mit dem man einen String aus z.B einer Textbox in so eine einwegverschlüsselung kriegt sodass jemand der die Datenbank anschaut nicht direkt die Passwörter weiß? :)
    Ja, das ist ja der Sinn von Hashes, dass die Passwörter nicht im Klartext vorhanden sind. ;) Diese sind allerdings auch nur Algorithmen, ergo in jeder Sprache umsetzbar.
    Zum Beispiel gibt es da für bcrypt bereits eine Implementierung: derekslager.com/blog/posts/200…-for-dotnet-and-mono.ashx
    Du kannst z. B. aber auch SHA verwenden, allerdings nicht SHA1, da gibt es mittlerweile auch schon eine erste Kollision. SHA512 wäre z. B. gut. Von MD5 ist auch abzuraten.

    Musst Dich mal im Internet nach den Algorithmen und Umsetzungen in der jeweiligen Sprache/im jeweiligen Framework erkunden.
    Dann kannst Du das von mir aus mit bcrypt zwei mal hashen und in der Datenbank abspeichern. Der Salt, den ich Dir zusätzlich unbedingt empfehlen würde, steckt dann gleich im Ausgabe-String mit drin.
    Salzen macht es insofern nochmal sicherer, dass eine zufällige Zeichenfolge an das Passwort angehängt wird und dann der Hash nochmal anders aussieht. Dies beugt Wörterbuch- oder BruteForce-Attacken vor (siehe auch Rainbow Tables).

    Edit: Mir ist gar nicht aufgefallen, dass wir eigentlich die Thematik gewechselt haben. :D

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Trotz Thematikwechsel:

    Trade schrieb:

    Ich empfehle den Blowfish-Algorithmus (speziell bcrypt) dafür. Schön noch salzen und evtl. dann die Passwörter zwei mal hashen sollte reichen.


    Kannst du das mal näher beleuchten? Du verschlüsselst das PW per bcrypt. Wie gehts weiter?
    Ich meine rein von der Logik her, würdest du ja den Hash hashen.

    Das sollte deiner Meinung nach für credentials genügen? Bin da auch gerade an einem Projekt wo ich das noch benötige
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Acr0most schrieb:

    Du verschlüsselst das PW per bcrypt
    Nein, hashen != verschlüsseln.
    Und ja, dann kannst Du diesen Hash z. B. nochmal salzen und hashen, was das ganze nochmals sicherer macht. Dann wird dieser halt in der Datenbank abgelegt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke dir @Trade
    Ich dachte bcrypt ist eine - jetzt wirklich so gemeinte - Verschlüsselung und diesen Verschlüsselten String willst du noch 2x hashen. War eben etwas confused.

    So macht das Sinn, ja. Werde ich sicherlich mit einbauen :thumbup:
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: