Text Verschlüsseln.



  • Hallo,
    Ich programmiere gerade an einem Login Fenster. Jetzt möchte ich die
    Daten in ein Datei speichern nur vorher muss ich, dass ja verschlüsseln.
    Welche verschlüsselungs Methode eignet sich da? Was verwenden grosse Firmen?

    Grüsse



  • Was große firmen verwenden, weiß ich nicht!

    Da wär mal das Cäsar-Chiffre(du verschiebst die Buchstaben um eine beliebige Zahl)
    oder du kannst dir selber einen Schlüssel basteln, verlier ihn dann nicht! 😃



  • Da Passwörter idR nicht mehr entschlüsselt werden müssen, nimmt man üblicherweise einen kryptographischen Hash des gesalzenen Passworts. Gesalzen meint, dass dem Passwort vor Eingabe in den Hash eine öffentliche, zufällig gewählte Bytefolge vorangestellt wird, um das Knacken durch Rainbow-Tables zu erschweren.

    Üblicherweise nimmt man dafür einen Hash der SHA-Familie oder MD5. Eine neuere Hashfunktion ist Whirlpool; diese hat den Anspruch, schwerer zu knacken zu sein als SHA-x und wird von NESSIE empfohlen. Bislang sind meines Wissens keine kryptographischen Schwächen von Whirlpool bekannt (im Gegensatz zu SHA und MD5), was aber an ihrer relativen Jugend liegen mag.



  • über Cäser Chiffre hab ich nix gutes gehört.
    Ich möchte schon das er einigermaßen sicher ist.



  • Cho++ schrieb:

    über Cäser Chiffre hab ich nix gutes gehört.

    Caeser steht überhaupt nicht zur Debatte, keine Ahnung wie man das überhaupt vorschlagen konnte.

    seldon hat eigentlich die perfekte Lösung genannt. Aber mal aus Interesse: Wo genau loggst du dich da ein und was soll das werden? Hintergrundinformationen helfen immer, insbesondere da du scheinbar keine Ahnung von dem hast was du da machst. 😉



  • Naja ich hab schon Ahnung von dem was ich bissher gemacht habe :).
    Also ich schreib einen E-mail CLient. Und bei dem Client möchte ich
    einfach Infos über den Acc. in einer Datenbank speichern. Vorher möchte
    ich aber die Informationen verschlüsseln. Ich versteh bei der krypto-
    graphie nur ein paar Verfahren. Die ich aber auch noch nicht am Computer
    angewendet hab.



  • Cho++ schrieb:

    Naja ich hab schon Ahnung von dem was ich bissher gemacht habe :).

    Das.. wage ich irgendwie zu bezweifeln.

    Cho++ schrieb:

    Also ich schreib einen E-mail CLient. Und bei dem Client möchte ich
    einfach Infos über den Acc. in einer Datenbank speichern. Vorher möchte
    ich aber die Informationen verschlüsseln.

    Immerhin hast du daran gedacht. Den Trick von seldon kannst du aber wohl nicht anwenden, denn du kannst ja keine Hashes an den Server schicken. Du brauchst also tatsächlich ein Verschlüsselungsverfahren, und keinen Hash. Ich werfe mal AES in den Raum, das ist flott und wenn es Schwächen haben sollte, haben ganz andere Leute Probleme.

    Cho++ schrieb:

    Ich versteh bei der krypto-
    graphie nur ein paar Verfahren. Die ich aber auch noch nicht am Computer
    angewendet hab.

    😉



  • Moment, zwei Schritte zurück. Was genau willst du wo authentifizieren, und welche Teile des Systems implementierst du?

    Wenn es um einen E-Mail-Client geht, muss der sich an einem Server anmelden und dabei genau so verhalten, wie der Server es erwartet - dafür gibt es Standards oder zumindest RFCs, an die man sich halten muss. Wenn es also um die Kommunikation zwischen MUA und Server geht, kannst du dir nicht selbst etwas zusammenstricken, und auch wenn AES aller Wahrscheinlichkeit nach schlussendlich eine Rolle spielen wird, reicht der Verweis darauf allein nicht aus; wir reden im Zweifel über TLS und/oder Spezialprotokolle bzw. -protokollerweiterungen wie APOP. Wenn du auf diesem Gebiet kein Experte bist, rate ich dir dringend dazu, dir dafür eine Bibliothek zu suchen (ich täte das selbe).

    Wenn es um die lokale Speicherung von Passwörtern geht, dann ist das Verfahren mit kryptographischen Hashfunktionen, wie ich es oben umrissen habe, ein sinnvolles. Wenn es um andere Dinge geht, kommt man damit nicht unbedingt weiter.



  • Was sagt ihr zu md5 würd es für meine Aufgaben reichen?



  • Ja es geht um eine lokale Speicherung. Könnt ihr mir vill. den Link für Whirlpool senden? Also den Quellcode für c++ bin gerade bei der suche find in aber nicht.



  • Auf der Seite, die ich oben verlinkt habe, steht etwas weiter unten ein Link zur "reference implementation". Allerdings sollten die meisten Krypto-Bibliotheken inzwischen ein entsprechendes Modul mitbringen, du kannst also auch gnutls o.ä. verwenden.



  • Hab jetzt gerade gelesen das man die Informtionen verschlüsseln kann,
    aber nicht wieder entschlüsseln.... Was bringt das dan?



  • Wenn Du zwei gleiche "Nachrichten" verschlüsselt hast, kannst Du vergleichen, ob die gleich sind 😉 🙂



  • seldon schrieb:

    Wenn es um die lokale Speicherung von Passwörtern geht, dann ist das Verfahren mit kryptographischen Hashfunktionen, wie ich es oben umrissen habe, ein sinnvolles.

    Hä? Er muss doch wieder an das Passwort in Klartext kommen, um es an den Server zu schicken. 😉



  • Also wenn du wirklich sicher verschlüsselt speichern willst und es auch wieder entschlüsseln, dann kommen nur Key basierte Systeme in Frage.

    Um in diese Materie einzusteigen solltest du dich schonmal mit den gängigen vertraut machen, die da wären:

    3DES, AES, RSA, Rijndael, TwoFish.

    (Gibt sicherlich noch mehr aber das sind so mit die gebräuchlichsten. Google und viel Zeit sind hier dein Freund)

    Dazu um das auch wirklich sicher umsetzen zu können solltest du dir auch noch Wissen aneignen wie man zum Beispiel mit sehr grossen integer Werten arbeitet.
    Ich rede hier nicht von 18~ Stellen long long sondern von zahlen mit 512 - 4096 Stellen (Google: Big Integer und natürlich Implementierunsbibliotheken, man muss das Rad ja nicht zwei mal erfinden).

    Dan kommen noch dazu das du für die oben genannten Verschlüsselungsmethoden einen ausreichend guten Pseudo Random Generator (Google: RNG und PNRG) brauchst. Da wären vier zu nennen:

    Mersenne Twister, Blum Blum Shub, Yarrow und Fortuna

    (Wobei man mittlerweile einig ist das der Mersenne Twister Cryptografisch nich sicher ist)

    Alles in allem ist deine Random Zahl qualitätsmässig von der Entropie (Google: Entropie) deines Inputs abhängig. Hier haben Linuxuser einen Vorteil da sie auf einen Systemgenerierten recht guten Entropiepool zugreifen können).

    Das wären also die Zwei Weg verfahren, die Einwegverfahren hat seldon ja schon angesprochen.

    [Edit:] Auch ein Komprimierungsverfahren kann noch die Verschlüsselung verbessernd vor/wärend/nach dem verschlüsseln eingesetzt werden!!
    [Edit Edit:] Du kannst das ver- und entschlüsseln ohne weiteres als Königsdisziplin der Programmirung verstehen. Und jeder Implementierungsfehler/Programmfehler kann deine noch so sichere Versclüsselung zunichte machen.
    [Edit Edit Edit:] Ach so ja ich hab die Primzahlen vergessen, auch hier sind wirklich grosse Primzahlen gemeint. Die algorthmen und möglichkeiten eine Zahl auf Prim zu testen sollten dir auch bekannt sein oder du solltest dich damit auseinander setzen.



  • Hallo 🙂

    @Cho++
    MD5, SHA etc. welche seldon bereeits nannte, nutzten in deinem Fall nicht besonders viel. Dabei lässt sich das Verschlüsselte nicht zurück errechnen. Eine Einsatzmöglichkeit besteht beispielsweise darin, unsere Kennwörter in dieser Form in eine Datenbank zu speichern. Beim Login-Versuch, wird das eingegebe (bsp.) in eienm MD5-Wert errechnet und mit dem Eintrag in der Datenbank verglichen. Vorteil: Die Kennwörter liegen in der Datenbank nicht als Klartext.

    Nun, du musst jedoch das verschlüsselte wieder entschlüsseln um es zur authentifizierung an den Mail-Server zu senden.

    Gruss,
    anneXus

    PS: Schreibfehler sind der iOS Tastatur zu verdanken 🙂



  • 3DES, AES, RSA, Rijndael, TwoFish.

    AES reicht.

    Wissen aneignen wie man zum Beispiel mit sehr grossen integer Werten arbeitet

    Fuer AES nicht.

    Pseudo Random Generator (Google: RNG und PNRG) brauchst

    Wird nirgends bei AES erwaehnt.

    Du kannst das ver- und entschlüsseln ohne weiteres als Königsdisziplin der Programmirung verstehen

    Keine Ahnung was an AES koeniglich sein soll. Im Vergleich zum Compilerbau eher einfach.

    Und jeder Implementierungsfehler/Programmfehler kann deine noch so sichere Versclüsselung zunichte machen.

    AES ist sehr einfach zu implementieren. Aber fuer den Produkte wuerde ich auch eine Bibliothek wegen der Geschwindigkeit verwenden, z.B. crypto++.

    Ach so ja ich hab die Primzahlen vergessen, auch hier sind wirklich grosse Primzahlen gemeint.

    Nicht fuer AES.



  • Cho++ schrieb:

    Ich programmiere gerade an einem Login Fenster. Jetzt möchte ich die
    Daten in ein Datei speichern nur vorher muss ich, dass ja verschlüsseln.

    Welche Daten? Wofür verschlüsseln?

    Cho++ schrieb:

    Welche verschlüsselungs Methode eignet sich da?
    Was verwenden grosse Firmen?

    Kommt drauf an. Ich würde schon behaupten, dass ich mich relativ gut mit Kryptographie auskenne. Ohne zu wissen, was Du eigentlich erreichen willst, kann ich Dir da aber leider keinen Tipp geben. Und auf Raten habe ich jetzt im Moment auch keine Lust.



  • Travor schrieb:

    Wenn Du zwei gleiche "Nachrichten" verschlüsselt hast, kannst Du vergleichen, ob die gleich sind 😉 🙂

    Kommt drauf an, wie sie verschlüsselt werden. Verwendest Du beispielsweise AES im CBC-Modus und für jede Nachricht einen neuen, zufällig generierten Initialisierungsvektor, sehen die verschlüsselten Nachrichten immer anders aus, auch wenn der Klartext derselbe war.



  • knivil schrieb:

    ...

    Und wie stellst due dann einen Key in einer vernünftigen länge her?


Anmelden zum Antworten