Text Verschlüsseln.
-
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,
anneXusPS: 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?
-
krümelkacker schrieb:
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.
Ja, Du hast recht

Ich habe angenommen er möchte das Passwort überprüfen, ohne den irgendwo sichtbar zu hinterlassen..
-
Videonauth schrieb:
knivil schrieb:
...
Und wie stellst due dann einen Key in einer vernünftigen länge her?
32 Zeichen? Sollte nicht schwer sein. Eine Zufallszahl muss irgendwo abgespeichert, mein eigenes Passwort ist im Kopf. Alternativ kannst du auch einen DNA-Ausschnitt vom letzten Vaterschaftstest nehmen.
-
Wenn ich inzwischen richtig verstehe, worum es hier geht (das Passwort, mit dem der E-Mail-Client sich am Server anmelden soll, verschlüsselt irgendwo abzulegen), stellt sich ein anderes, konzeptionelles Problem: Um das Passwort zu entschlüsseln, musst du den Schlüssel haben. Ihn direkt neben die verschlüsselten Daten zu legen, ist offenkundig Unfug, und vom Benutzer ein Passwort anzufordern, um das Passwort zu entschlüsseln und an den Server zu schicken, macht erst dann Sinn, wenn du viele Passwörter zu verwalten hast - das ist bei E-Mail-Clients eher selten.
-
Also ich kenne schon einige Leute die mehr als ein Email Konto haben.
-
@Cho++
Jetzt wurde ja bereits viel gesagt und einige Möglichkeiten und Ansätze genannt. Mich interessiert folgendes, wie genau stellst du dir das etwa vor? Soll beim Öffnen deiner Anwendung (E-Mail Client) eine Kennwortabfrage stattfinden (Kennwort für das entschlüsseln der Passwörter) um damit arbeiten zu können oder wie (wobei es anders kaum Sinn machen würde, da sonst das Kennwort für das Entschlüsseln der E-Mail Kennwörter im Klartext da liegen würde)?
Nur mal als Beispiel, Outlook verschlüsselt die eingegebenen Kennwörter nicht. Und viele Firmen verwenden Outlook. Damit möchte ich dich jetzt nicht von deinem Vorhaben abbringen sondern nur so als Info für dich. Sicherheit ist generell empfehlenswert!
